<?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>238162</bug_id>
          
          <creation_ts>2022-03-21 16:08:17 -0700</creation_ts>
          <short_desc>Inline String(ASCIILiteral) constructor so the compiler can optimize out strlen()</short_desc>
          <delta_ts>2022-04-01 19:56:49 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=238235</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>238693</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>alecflett</cc>
    
    <cc>bburg</cc>
    
    <cc>beidson</cc>
    
    <cc>benjamin</cc>
    
    <cc>calvaris</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>galpeter</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>heycam</cc>
    
    <cc>hi</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>mark.lam</cc>
    
    <cc>menard</cc>
    
    <cc>mifenton</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>msaboff</cc>
    
    <cc>pangle</cc>
    
    <cc>pascoe</cc>
    
    <cc>pdr</cc>
    
    <cc>philipj</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1853391</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-21 16:08:17 -0700</bug_when>
    <thetext>String literals with _str suffix should not do strlen() at runtime:
Sample Count, Samples %, Normalized CPU %, Symbol
25, 0.0%, 0.0%, _platform_strlen (in libsystem_platform.dylib)
4, 0.0%, 0.0%,     WTF::StringImpl::createFromLiteral(WTF::ASCIILiteral) (in JavaScriptCore)
4, 0.0%, 0.0%,         WTF::String::String(WTF::ASCIILiteral) (in JavaScriptCore)
2, 0.0%, 0.0%,             JSC::ProxyObject::performGet(JSC::JSGlobalObject*, JSC::PropertyName, JSC::PropertySlot&amp;) (in JavaScriptCore)
1, 0.0%, 0.0%,             JSC::ProxyObject::performDefineOwnProperty(JSC::JSGlobalObject*, JSC::PropertyName, JSC::PropertyDescriptor const&amp;, bool) (in JavaScriptCore)
1, 0.0%, 0.0%,             JSC::ProxyObject::performInternalMethodGetOwnProperty(JSC::JSGlobalObject*, JSC::PropertyName, JSC::PropertySlot&amp;) (in JavaScriptCore)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853397</commentid>
    <comment_count>1</comment_count>
      <attachid>455295</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-21 16:19:01 -0700</bug_when>
    <thetext>Created attachment 455295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853489</commentid>
    <comment_count>2</comment_count>
      <attachid>455321</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-21 19:55:11 -0700</bug_when>
    <thetext>Created attachment 455321
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853529</commentid>
    <comment_count>3</comment_count>
      <attachid>455332</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-21 22:21:33 -0700</bug_when>
    <thetext>Created attachment 455332
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853652</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 07:25:12 -0700</bug_when>
    <thetext>Confirmed 0.6-0.8% progression on Speedometer on iMac 20,1 on a/b bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853656</commentid>
    <comment_count>5</comment_count>
      <attachid>455332</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-22 07:43:59 -0700</bug_when>
    <thetext>Comment on attachment 455332
Patch

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

So unclear to me when to use _s vs. _str — please write down a guideline for future use somewhere. Maybe we’ll even want to rename one or both so it’s more obvious when one is right vs. the other.

If &quot;&quot;_s was smaller code than &quot;&quot;_str then you’d want to decide based on how likely a code path was perhaps? I personally don’t like having a choice when it’s not obvious which is better, and there are so often choices where you could use &quot;&quot;, &quot;&quot;_s, or &quot;&quot;_str.

For example, does a string literal argument to makeString compile into a code sequence that involves call to strlen? Or does that get constant-folded? What about if you use &quot;&quot;_s or &quot;&quot;_str instead of just &quot;&quot;?

&gt; Source/WTF/ChangeLog:9
&gt; +        it could trigger calls to strlen() at run time to figure out the length of the string. This was unforunate

Typo in unfortunate

&gt; Source/WTF/ChangeLog:14
&gt; +        This patch also adopts the &quot;&quot;_str operator in more places so they can leverage the optimization.

Is this a measurable speedup? Is it a measurable code size increase or decrease?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2538
&gt; +                return $useAtomString ? &quot;AtomString(${defaultValue}, AtomString::ConstructFromLiteral)&quot; : &quot;${defaultValue}_str&quot;;

Looks like you need to rebase the bindings test results because of these changes to CodeGeneratorJS.pm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853666</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 08:02:46 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #5)
&gt; Comment on attachment 455332 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455332&amp;action=review
&gt; 
&gt; So unclear to me when to use _s vs. _str — please write down a guideline for
&gt; future use somewhere. Maybe we’ll even want to rename one or both so it’s
&gt; more obvious when one is right vs. the other.

Basically the idea is to use _str whenever you actually want a String and _s when you want an ASCIILiteral. Right now, it seems that most people were using _s unconditionally since we can silently construct a String from an ASCIILiteral.

&gt; 
&gt; If &quot;&quot;_s was smaller code than &quot;&quot;_str then you’d want to decide based on how
&gt; likely a code path was perhaps? I personally don’t like having a choice when
&gt; it’s not obvious which is better, and there are so often choices where you
&gt; could use &quot;&quot;, &quot;&quot;_s, or &quot;&quot;_str.

I agree. It seems that right now, most people use _s and it won&apos;t be the most efficient anymore for constructing a String.
Maybe if we made String constructor that takes in an ASCIILiteral explicit, then people would be a lot more likely to adopt _str since they&apos;d have to use String { &quot;foo&quot;_s } otherwise, which is just longer than &quot;foo&quot;_str.

&gt; For example, does a string literal argument to makeString compile into a
&gt; code sequence that involves call to strlen? Or does that get
&gt; constant-folded? What about if you use &quot;&quot;_s or &quot;&quot;_str instead of just &quot;&quot;?

That part I don&apos;t have an answer to at the moment and it will need more investigation.

&gt; 
&gt; &gt; Source/WTF/ChangeLog:9
&gt; &gt; +        it could trigger calls to strlen() at run time to figure out the length of the string. This was unforunate
&gt; 
&gt; Typo in unfortunate
&gt; 
&gt; &gt; Source/WTF/ChangeLog:14
&gt; &gt; +        This patch also adopts the &quot;&quot;_str operator in more places so they can leverage the optimization.
&gt; 
&gt; Is this a measurable speedup? Is it a measurable code size increase or
&gt; decrease?

I haven&apos;t measured code size since I didn&apos;t expect any changes (the size parameter was already there, I don&apos;t do any templating). I can check though.
With regards to perf, yes. See https://bugs.webkit.org/show_bug.cgi?id=238162#c4.

&gt; 
&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:2538
&gt; &gt; +                return $useAtomString ? &quot;AtomString(${defaultValue}, AtomString::ConstructFromLiteral)&quot; : &quot;${defaultValue}_str&quot;;
&gt; 
&gt; Looks like you need to rebase the bindings test results because of these
&gt; changes to CodeGeneratorJS.pm.

Yes, I purposefully omitted those changes from the patch to facilitate review as the patch was already large.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853682</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 08:51:12 -0700</bug_when>
    <thetext>I have just checked and there is no impact on the binary size for either the JavaScriptCore or the WebCore frameworks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853705</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-22 09:14:49 -0700</bug_when>
    <thetext>&gt; I agree. It seems that right now, most people use _s and it won&apos;t be the
&gt; most efficient anymore for constructing a String.
&gt; Maybe if we made String constructor that takes in an ASCIILiteral explicit,
&gt; then people would be a lot more likely to adopt _str since they&apos;d have to
&gt; use String { &quot;foo&quot;_s } otherwise, which is just longer than &quot;foo&quot;_str.

I think making String(ASCIILiteral) explicit makes sense. Based on this patch, I wonder how many, if any, uses of String(ASCIILiteral) are on purpose.

I also think we should consider making the &quot;good&quot; (fast) literal the easy thing to type out, and making the &quot;bad&quot; (slow) literal more verbose. Maybe:

    &quot;&quot;_s =&gt; String

    &quot;&quot;_cstring =&gt; ASCIILiteral

But maybe I&apos;m underestimating the non-String uses of ASCIILiteral?

Alternatively, would it be crazy for ASCIILiteral to store its length as a data member? If it did, then this distinction might not matter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853710</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 09:25:10 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #8)
&gt; &gt; I agree. It seems that right now, most people use _s and it won&apos;t be the
&gt; &gt; most efficient anymore for constructing a String.
&gt; &gt; Maybe if we made String constructor that takes in an ASCIILiteral explicit,
&gt; &gt; then people would be a lot more likely to adopt _str since they&apos;d have to
&gt; &gt; use String { &quot;foo&quot;_s } otherwise, which is just longer than &quot;foo&quot;_str.
&gt; 
&gt; I think making String(ASCIILiteral) explicit makes sense. Based on this
&gt; patch, I wonder how many, if any, uses of String(ASCIILiteral) are on
&gt; purpose.
&gt; 
&gt; I also think we should consider making the &quot;good&quot; (fast) literal the easy
&gt; thing to type out, and making the &quot;bad&quot; (slow) literal more verbose. Maybe:
&gt; 
&gt;     &quot;&quot;_s =&gt; String
&gt; 
&gt;     &quot;&quot;_cstring =&gt; ASCIILiteral
&gt; 
&gt; But maybe I&apos;m underestimating the non-String uses of ASCIILiteral?

I have a feeling this would probably work out but I&apos;d have to try it out to see how much ASCIILiteral usage remains. Like you, I believe most of the time, we want a String.

&gt; 
&gt; Alternatively, would it be crazy for ASCIILiteral to store its length as a
&gt; data member? If it did, then this distinction might not matter.

Adding the length as data member to ASCIILiteral was actually my first attempt. However, this was a perf regression on Speedometer according to A/B bots... Weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853715</commentid>
    <comment_count>10</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-22 09:38:08 -0700</bug_when>
    <thetext>ASCIILiteral was created with a single mission: Giving a way to tell the String constructor that the backing characters are immortal because they are a compile-time ASCII literal. Once we had it we realized that it can also be used anywhere else in code we would otherwise write &quot;const char*&quot; but wish to convey the information that the characters are immortal as part of the type. There should be few non-String uses, so some of the discussion above doesn’t make a lot of sense to me.

If we see a performance regression putting lengths into all ASCIILiteral objects, my guess is it has something to do with greater code size. But just a wild guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853749</commentid>
    <comment_count>11</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 10:38:23 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; ASCIILiteral was created with a single mission: Giving a way to tell the
&gt; String constructor that the backing characters are immortal because they are
&gt; a compile-time ASCII literal. Once we had it we realized that it can also be
&gt; used anywhere else in code we would otherwise write &quot;const char*&quot; but wish
&gt; to convey the information that the characters are immortal as part of the
&gt; type. There should be few non-String uses, so some of the discussion above
&gt; doesn’t make a lot of sense to me.

What do you think of the proposal to use &quot;&quot;_s to construct a String since it is the common case and use something longer like &quot;&quot;_cstr or &quot;&quot;_cstring for constructing an ASCIILiteral since it should become a lot less common?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853772</commentid>
    <comment_count>12</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-22 11:07:00 -0700</bug_when>
    <thetext>Sounds fine to me. I just want to make sure I understand where &quot;&quot;_s is good and where is it not; ideally there are compile-time errors when you make the most obvious mistakes. It would be a true tragedy if people created and destroyed a String as one of the arguments to makeString, to give just one example. Or when passing a string to a function that takes a StringView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853782</commentid>
    <comment_count>13</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 11:15:33 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #12)
&gt; Sounds fine to me. I just want to make sure I understand where &quot;&quot;_s is good
&gt; and where is it not; ideally there are compile-time errors when you make the
&gt; most obvious mistakes. It would be a true tragedy if people created and
&gt; destroyed a String as one of the arguments to makeString, to give just one
&gt; example. Or when passing a string to a function that takes a StringView.

I agree it would be unfortunate to construct String implicitly in cases where it isn&apos;t needed. I&apos;ll be careful about that.

With this patch, if you call something that needs a String, passing &quot;foo&quot;_str is the most efficient. Passing &quot;foo&quot;_s will compile but be slightly less efficient (as it will avoid the character copy but not the strlen). I think this second part could be addressed by making the String(ASCIILiteral) constructor explicit but this is likely a large change until I have adopted _str in more places.

For now, I&apos;ll keep the patch as is (except for the typo fix and bindings rebaselining). I&apos;ll follow-up with more _str adoption (and maybe changing suffixes if we come up with a good proposal).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853784</commentid>
    <comment_count>14</comment_count>
      <attachid>455400</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 11:16:58 -0700</bug_when>
    <thetext>Created attachment 455400
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853788</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 11:20:40 -0700</bug_when>
    <thetext>As far as I can tell, the patch as-is is not controversial since it makes the pre-existing &quot;&quot;_str faster. &quot;&quot;_s still exist and has the same behavior / performance as before.

The only risk is that people will keep using &quot;&quot;_s in cases where they really needed a String, as is currently pretty common. That said, this is the current status quo anyway. We can also make this less likely eventually by:
- Port existing code to &quot;&quot;_str when suitable (like I started doing in this patch)
- Making String(ASCIILiteral) explicit
- Maybe send an email out to webkit-dev?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853790</commentid>
    <comment_count>16</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-22 11:23:26 -0700</bug_when>
    <thetext>There’s also the risk that confusion just makes it harder to code on WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853797</commentid>
    <comment_count>17</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-22 11:31:55 -0700</bug_when>
    <thetext>FWIW, I&apos;m happy with this patch landing as is, since it&apos;s a speedup, and the subtle distinction between _s and _str is not new to this patch.

I&apos;d also like to continue discussing options to reduce subtlety / confusion.

Here&apos;s another option:

Create a new type, ASCIILiteralWithLength
_s creates an ASCIILiteralWithLength
ASCIILiteral(ASCIILiteralWithLength) is implicit
String(ASCIILiteralWithLength) is implicit
String(ASCIILiteral) is explicit

Reasons to consider:

(1) Makes the fastest String constructor easy / default and the variant that calls strlen() harder / non-default, reducing (or even eliminating?) the need for &quot;I guess we should have used _str here to avoid strlen()&quot;.

(2) Might avoid the regression that always storing length in ASCIILiteral caused (if that regression was caused by bloating the size of globals or data members typed ASCIILiteral).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853808</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-22 11:54:16 -0700</bug_when>
    <thetext>I find that plan appealing. Might also want to shift at some point so that long term the two names could be ASCIILiteralWithoutLength and ASCIILiteral.

But also please consider my request that we find a way to make the most common mistakes result in compilation errors rather than inefficient idioms scattered randomly across the code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854025</commentid>
    <comment_count>19</comment_count>
      <attachid>455460</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 17:49:40 -0700</bug_when>
    <thetext>Created attachment 455460
Geoff&apos;s alternative proposal

I need to A/B test this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854026</commentid>
    <comment_count>20</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-03-22 17:51:14 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854029</commentid>
    <comment_count>21</comment_count>
      <attachid>455462</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 17:52:47 -0700</bug_when>
    <thetext>Created attachment 455462
Geoff&apos;s alternative proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854038</commentid>
    <comment_count>22</comment_count>
      <attachid>455464</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 18:43:17 -0700</bug_when>
    <thetext>Created attachment 455464
Geoff&apos;s alternative proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854039</commentid>
    <comment_count>23</comment_count>
      <attachid>455465</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 18:46:35 -0700</bug_when>
    <thetext>Created attachment 455465
Geoff&apos;s alternative proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854053</commentid>
    <comment_count>24</comment_count>
      <attachid>455468</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-22 21:40:16 -0700</bug_when>
    <thetext>Created attachment 455468
Geoff&apos;s alternative proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854161</commentid>
    <comment_count>25</comment_count>
      <attachid>455497</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 07:27:38 -0700</bug_when>
    <thetext>Created attachment 455497
Geoff&apos;s alternative proposal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854163</commentid>
    <comment_count>26</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 07:33:37 -0700</bug_when>
    <thetext>I got A/B results back from Geoff&apos;s proposal. It is performance neutral on Speedometer on Both Intel and Apple Silicon.

My other patch with &quot;&quot;_str looked like a 0.6-0.8% progression on a/b bots on Intel (neutral on Apple Silicon).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854205</commentid>
    <comment_count>27</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-23 09:30:32 -0700</bug_when>
    <thetext>&gt; I got A/B results back from Geoff&apos;s proposal. It is performance neutral on
&gt; Speedometer on Both Intel and Apple Silicon.

Frustrating!

OK, I hate to keep going &apos;round the merry-go-round, but I have another idea.

Premise 1: Our problem is that we&apos;re calling strlen(), even though we totally know the length.

Premise 2: strlen() will reliably constant fold at both -O2 and -Os. Test case:

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

struct ASCIILiteral {
    size_t length() { return strlen(ptr); }
    const char* ptr;
};

inline ASCIILiteral test(ASCIILiteral a)
{
    if (a.length() != 2)
        abort();
    return a;
}

__attribute__((noinline)) void f() 
{
    auto a = ASCIILiteral { &quot;hi&quot; };
    auto b = test(a);
    if (b.length() != 2)
        abort();
}

int main(int arc, char** argv)
{
    f();
    return 0;
}

Test case output:

~&gt; clang++ -std=c++17 -Os -o scratch scratch.cc &amp;&amp; otool -tvV scratch
scratch:
(__TEXT,__text) section
__Z1fv:
0000000100003f94	ret
_main:
0000000100003f98	stp	x29, x30, [sp, #-0x10]!
0000000100003f9c	mov	x29, sp
0000000100003fa0	bl	__Z1fv
0000000100003fa4	mov	w0, #0x0
0000000100003fa8	ldp	x29, x30, [sp], #0x10
0000000100003fac	ret

~&gt; clang++ -std=c++17 -O2 -o scratch scratch.cc &amp;&amp; otool -tvV scratch
scratch:
(__TEXT,__text) section
__Z1fv:
0000000100003f94	ret
_main:
0000000100003f98	stp	x29, x30, [sp, #-0x10]!
0000000100003f9c	mov	x29, sp
0000000100003fa0	bl	__Z1fv
0000000100003fa4	mov	w0, #0x0
0000000100003fa8	ldp	x29, x30, [sp], #0x10
0000000100003fac	ret

Proposal:

(1) Inline a few functions to ensure that String(&quot;&quot;_s) inlines construction of ASCIILiteral and access to ASCIILiteral::length().

I think this means inlining String(ASCIILiteral), StringImpl::createFromLiteral(const char*), and StringImpl::createFromLiteral(ASCIILiteral) (but not their callees).

(2) Verify that strlen() disappeared from the profile -- or if it didn&apos;t, wow, where are we constructing String(ASCIILiteral) where ASCIILiteral is not constant, and yet changing _s to _str is a speedup? - seems impossible.

Reason to prefer:

If this works, the difference between _str and _s becomes negligible, and maybe _str can even go away?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854209</commentid>
    <comment_count>28</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 09:37:08 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #27)
&gt; &gt; I got A/B results back from Geoff&apos;s proposal. It is performance neutral on
&gt; &gt; Speedometer on Both Intel and Apple Silicon.
&gt; 
&gt; Frustrating!
&gt; 
&gt; OK, I hate to keep going &apos;round the merry-go-round, but I have another idea.
&gt; 
&gt; Premise 1: Our problem is that we&apos;re calling strlen(), even though we
&gt; totally know the length.
&gt; 
&gt; Premise 2: strlen() will reliably constant fold at both -O2 and -Os. Test
&gt; case:
&gt; 
&gt; #include &lt;stdio.h&gt;
&gt; #include &lt;stdlib.h&gt;
&gt; #include &lt;string.h&gt;
&gt; 
&gt; struct ASCIILiteral {
&gt;     size_t length() { return strlen(ptr); }
&gt;     const char* ptr;
&gt; };
&gt; 
&gt; inline ASCIILiteral test(ASCIILiteral a)
&gt; {
&gt;     if (a.length() != 2)
&gt;         abort();
&gt;     return a;
&gt; }
&gt; 
&gt; __attribute__((noinline)) void f() 
&gt; {
&gt;     auto a = ASCIILiteral { &quot;hi&quot; };
&gt;     auto b = test(a);
&gt;     if (b.length() != 2)
&gt;         abort();
&gt; }
&gt; 
&gt; int main(int arc, char** argv)
&gt; {
&gt;     f();
&gt;     return 0;
&gt; }
&gt; 
&gt; Test case output:
&gt; 
&gt; ~&gt; clang++ -std=c++17 -Os -o scratch scratch.cc &amp;&amp; otool -tvV scratch
&gt; scratch:
&gt; (__TEXT,__text) section
&gt; __Z1fv:
&gt; 0000000100003f94	ret
&gt; _main:
&gt; 0000000100003f98	stp	x29, x30, [sp, #-0x10]!
&gt; 0000000100003f9c	mov	x29, sp
&gt; 0000000100003fa0	bl	__Z1fv
&gt; 0000000100003fa4	mov	w0, #0x0
&gt; 0000000100003fa8	ldp	x29, x30, [sp], #0x10
&gt; 0000000100003fac	ret
&gt; 
&gt; ~&gt; clang++ -std=c++17 -O2 -o scratch scratch.cc &amp;&amp; otool -tvV scratch
&gt; scratch:
&gt; (__TEXT,__text) section
&gt; __Z1fv:
&gt; 0000000100003f94	ret
&gt; _main:
&gt; 0000000100003f98	stp	x29, x30, [sp, #-0x10]!
&gt; 0000000100003f9c	mov	x29, sp
&gt; 0000000100003fa0	bl	__Z1fv
&gt; 0000000100003fa4	mov	w0, #0x0
&gt; 0000000100003fa8	ldp	x29, x30, [sp], #0x10
&gt; 0000000100003fac	ret
&gt; 
&gt; Proposal:
&gt; 
&gt; (1) Inline a few functions to ensure that String(&quot;&quot;_s) inlines construction
&gt; of ASCIILiteral and access to ASCIILiteral::length().
&gt; 
&gt; I think this means inlining String(ASCIILiteral),
&gt; StringImpl::createFromLiteral(const char*), and
&gt; StringImpl::createFromLiteral(ASCIILiteral) (but not their callees).
&gt; 
&gt; (2) Verify that strlen() disappeared from the profile -- or if it didn&apos;t,
&gt; wow, where are we constructing String(ASCIILiteral) where ASCIILiteral is
&gt; not constant, and yet changing _s to _str is a speedup? - seems impossible.
&gt; 
&gt; Reason to prefer:
&gt; 
&gt; If this works, the difference between _str and _s becomes negligible, and
&gt; maybe _str can even go away?

Definitely worth a try. I&apos;ll do so today.

In parallel, I am also working on making the String(const char*) constructor explicit as it helps catching many case where the &quot;&quot;_s suffix is missing for String literals.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854380</commentid>
    <comment_count>29</comment_count>
      <attachid>455546</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 13:50:36 -0700</bug_when>
    <thetext>Created attachment 455546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854381</commentid>
    <comment_count>30</comment_count>
      <attachid>455547</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 13:51:15 -0700</bug_when>
    <thetext>Created attachment 455547
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854382</commentid>
    <comment_count>31</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 13:52:35 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #27)
&gt; &gt; I got A/B results back from Geoff&apos;s proposal. It is performance neutral on
&gt; &gt; Speedometer on Both Intel and Apple Silicon.
&gt; 
&gt; Frustrating!
&gt; 
&gt; OK, I hate to keep going &apos;round the merry-go-round, but I have another idea.
&gt; 
&gt; Premise 1: Our problem is that we&apos;re calling strlen(), even though we
&gt; totally know the length.
&gt; 
&gt; Premise 2: strlen() will reliably constant fold at both -O2 and -Os. Test
&gt; case:
&gt; 
&gt; #include &lt;stdio.h&gt;
&gt; #include &lt;stdlib.h&gt;
&gt; #include &lt;string.h&gt;
&gt; 
&gt; struct ASCIILiteral {
&gt;     size_t length() { return strlen(ptr); }
&gt;     const char* ptr;
&gt; };
&gt; 
&gt; inline ASCIILiteral test(ASCIILiteral a)
&gt; {
&gt;     if (a.length() != 2)
&gt;         abort();
&gt;     return a;
&gt; }
&gt; 
&gt; __attribute__((noinline)) void f() 
&gt; {
&gt;     auto a = ASCIILiteral { &quot;hi&quot; };
&gt;     auto b = test(a);
&gt;     if (b.length() != 2)
&gt;         abort();
&gt; }
&gt; 
&gt; int main(int arc, char** argv)
&gt; {
&gt;     f();
&gt;     return 0;
&gt; }
&gt; 
&gt; Test case output:
&gt; 
&gt; ~&gt; clang++ -std=c++17 -Os -o scratch scratch.cc &amp;&amp; otool -tvV scratch
&gt; scratch:
&gt; (__TEXT,__text) section
&gt; __Z1fv:
&gt; 0000000100003f94	ret
&gt; _main:
&gt; 0000000100003f98	stp	x29, x30, [sp, #-0x10]!
&gt; 0000000100003f9c	mov	x29, sp
&gt; 0000000100003fa0	bl	__Z1fv
&gt; 0000000100003fa4	mov	w0, #0x0
&gt; 0000000100003fa8	ldp	x29, x30, [sp], #0x10
&gt; 0000000100003fac	ret
&gt; 
&gt; ~&gt; clang++ -std=c++17 -O2 -o scratch scratch.cc &amp;&amp; otool -tvV scratch
&gt; scratch:
&gt; (__TEXT,__text) section
&gt; __Z1fv:
&gt; 0000000100003f94	ret
&gt; _main:
&gt; 0000000100003f98	stp	x29, x30, [sp, #-0x10]!
&gt; 0000000100003f9c	mov	x29, sp
&gt; 0000000100003fa0	bl	__Z1fv
&gt; 0000000100003fa4	mov	w0, #0x0
&gt; 0000000100003fa8	ldp	x29, x30, [sp], #0x10
&gt; 0000000100003fac	ret
&gt; 
&gt; Proposal:
&gt; 
&gt; (1) Inline a few functions to ensure that String(&quot;&quot;_s) inlines construction
&gt; of ASCIILiteral and access to ASCIILiteral::length().
&gt; 
&gt; I think this means inlining String(ASCIILiteral),
&gt; StringImpl::createFromLiteral(const char*), and
&gt; StringImpl::createFromLiteral(ASCIILiteral) (but not their callees).
&gt; 
&gt; (2) Verify that strlen() disappeared from the profile -- or if it didn&apos;t,
&gt; wow, where are we constructing String(ASCIILiteral) where ASCIILiteral is
&gt; not constant, and yet changing _s to _str is a speedup? - seems impossible.
&gt; 
&gt; Reason to prefer:
&gt; 
&gt; If this works, the difference between _str and _s becomes negligible, and
&gt; maybe _str can even go away?

Yes, that works! According to the profiler, no more strlen() under String(ASCIILiteral) / StringImpl::createFromLiteral(ASCIILiteral).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854387</commentid>
    <comment_count>32</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-23 14:03:38 -0700</bug_when>
    <thetext>&gt; Yes, that works! According to the profiler, no more strlen() under
&gt; String(ASCIILiteral) / StringImpl::createFromLiteral(ASCIILiteral).

Cool!

Knowing that, if the inlining patch is still not as fast as the _str patch on the bots, one thing to consider is that some functions might be overloaded for both String and ASCIILiteral, with the String overload being faster for some incidental reason. (Maybe the String overload is inlined and the ASCIILiteral overload is not, or some other silly thing.)

But hopefully the inlining patch will tie or beat the _str patch on the bots. Then things get a lot simpler.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854388</commentid>
    <comment_count>33</comment_count>
      <attachid>455547</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-23 14:06:38 -0700</bug_when>
    <thetext>Comment on attachment 455547
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854457</commentid>
    <comment_count>34</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 16:01:42 -0700</bug_when>
    <thetext>Hmmm:
ERROR: JavaScriptCore has a weak external symbol in it (/Volumes/Data/worker/macOS-AppleSilicon-Big-Sur-Debug-Build-EWS/build/WebKitBuild/Debug/JavaScriptCore.framework/Versions/A/JavaScriptCore)
ERROR: A weak external symbol is generated when a symbol is defined in multiple compilation units and is also marked as being exported from the library.
ERROR: A common cause of weak external symbols is when an inline function is listed in the linker export file.
ERROR: symbol __ZN3WTF10StringImpl17createFromLiteralENS_12ASCIILiteralE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854467</commentid>
    <comment_count>35</comment_count>
      <attachid>455577</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 16:16:50 -0700</bug_when>
    <thetext>Created attachment 455577
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854478</commentid>
    <comment_count>36</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-23 16:22:45 -0700</bug_when>
    <thetext>&gt; ERROR: JavaScriptCore has a weak external symbol in it
&gt; (/Volumes/Data/worker/macOS-AppleSilicon-Big-Sur-Debug-Build-EWS/build/
&gt; WebKitBuild/Debug/JavaScriptCore.framework/Versions/A/JavaScriptCore)

I think you just need to remove WTF_EXPORT_PRIVATE? (New patch seems to do more than that.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854479</commentid>
    <comment_count>37</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 16:24:03 -0700</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #36)
&gt; &gt; ERROR: JavaScriptCore has a weak external symbol in it
&gt; &gt; (/Volumes/Data/worker/macOS-AppleSilicon-Big-Sur-Debug-Build-EWS/build/
&gt; &gt; WebKitBuild/Debug/JavaScriptCore.framework/Versions/A/JavaScriptCore)
&gt; 
&gt; I think you just need to remove WTF_EXPORT_PRIVATE? (New patch seems to do
&gt; more than that.)

Yes, I am hoping removing WTF_EXPORT_PRIVATE will do the trick.

I noticed that the other (templated) createFromLiteral() is unused outside tests so I think we should drop it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854489</commentid>
    <comment_count>38</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 16:35:47 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #37)
&gt; (In reply to Geoffrey Garen from comment #36)
&gt; &gt; &gt; ERROR: JavaScriptCore has a weak external symbol in it
&gt; &gt; &gt; (/Volumes/Data/worker/macOS-AppleSilicon-Big-Sur-Debug-Build-EWS/build/
&gt; &gt; &gt; WebKitBuild/Debug/JavaScriptCore.framework/Versions/A/JavaScriptCore)
&gt; &gt; 
&gt; &gt; I think you just need to remove WTF_EXPORT_PRIVATE? (New patch seems to do
&gt; &gt; more than that.)
&gt; 
&gt; Yes, I am hoping removing WTF_EXPORT_PRIVATE will do the trick.
&gt; 
&gt; I noticed that the other (templated) createFromLiteral() is unused outside
&gt; tests so I think we should drop it.

Would you prefer I move the removal of the (unused) templated createFromLiteral() out of this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854500</commentid>
    <comment_count>39</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2022-03-23 17:03:57 -0700</bug_when>
    <thetext>&gt; Would you prefer I move the removal of the (unused) templated
&gt; createFromLiteral() out of this patch?

No preference.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854539</commentid>
    <comment_count>40</comment_count>
      <attachid>455594</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-23 18:42:45 -0700</bug_when>
    <thetext>Created attachment 455594
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854588</commentid>
    <comment_count>41</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-23 23:28:26 -0700</bug_when>
    <thetext>Committed r291787 (248815@main): &lt;https://commits.webkit.org/248815@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455594.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854614</commentid>
    <comment_count>42</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-24 00:58:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/90752707&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854659</commentid>
    <comment_count>43</comment_count>
      <attachid>455594</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-24 06:08:35 -0700</bug_when>
    <thetext>Comment on attachment 455594
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp:38
&gt;      // Constructor using the template to determine the size.

This comment is no longer accurate. We should probably delete or reword it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854670</commentid>
    <comment_count>44</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 07:19:40 -0700</bug_when>
    <thetext>I may actually need to revert completely. A/B came back as a 2-3% regression. I suspect too much is getting inlined?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854672</commentid>
    <comment_count>45</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-03-24 07:24:39 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #44)
&gt; I may actually need to revert completely. A/B came back as a 2-3%
&gt; regression. I suspect too much is getting inlined?

Although I don&apos;t see that regression on the regular bots after this landed. I&apos;ll look into it more.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455295</attachid>
            <date>2022-03-21 16:19:01 -0700</date>
            <delta_ts>2022-03-21 19:55:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238162-20220321161900.patch</filename>
            <type>text/plain</type>
            <size>672560</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZTIwYjdiMTJiMzg2NWRjZDg1ZjQyNjA4N2ZlNzE4NGZlNzUxMDc4Li45MDdmNDc3YzVmN2JlNTgw
NGQ3OWVhY2YzNDRiZDExZjVkZGExNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MTUgQEAKKzIwMjItMDMtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmcgbGl0ZXJhbHMgd2l0aCBfc3RyIHN1ZmZpeCBzaG91bGQgbm90IG5l
ZWQgdG8gZG8gc3RybGVuKCkgYXQgcnVudGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgdGhlICIiX3N0ciBvcGVyYXRvciBpbiBtb3JlIHBs
YWNlcyBzbyB0aGV5IGNhbiBsZXZlcmFnZSB0aGUgb3B0aW1pemF0aW9uLgorCisgICAgICAgICog
QVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tOgorICAgICAgICAoSlNDOjpjb21wdXRlVmFsaWRJbXBv
cnRTcGVjaWZpZXIpOgorICAgICAgICAoSlNDOjpKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9h
ZGVyRmV0Y2gpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdCk6CisgICAgICAgIChK
U0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tVG9QcmltaXRpdmUpOgorICAgICAg
ICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVySW1w
bCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0
ZXJJbXBsKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmpl
Y3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAgICAqIEFQSS9KU1NjcmlwdC5tbToK
KyAgICAgICAgKC1bSlNTY3JpcHQgd3JpdGVDYWNoZTpdKToKKyAgICAgICAgKiBBUEkvSlNUeXBl
ZEFycmF5LmNwcDoKKyAgICAgICAgKEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlc1B0cik6Cisg
ICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChjb250YWluZXJWYWx1ZVRvT2JqZWN0
KToKKyAgICAgICAgKHZhbHVlVG9BcnJheSk6CisgICAgICAgICh2YWx1ZVRvRGljdGlvbmFyeSk6
CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tOgorICAgICAgICAoSlNDOjpv
YmpDQ2FsbGJhY2tGdW5jdGlvbkNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6b2JqQ0Nh
bGxiYWNrRnVuY3Rpb25DYWxsQXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Ok9iakNDYWxs
YmFja0Z1bmN0aW9uSW1wbDo6Y2FsbCk6CisgICAgICAgICogQVBJL2dsaWIvSlNDQ2FsbGJhY2tG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ0NhbGxiYWNrRnVuY3Rpb246OmNhbGwpOgor
ICAgICAgICAoSlNDOjpKU0NDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QpOgorICAgICAgICAq
IEFQSS9nbGliL0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoanNjQ29udGV4dEpTVmFsdWVUb0dW
YWx1ZSk6CisgICAgICAgICogQVBJL2dsaWIvSlNDVmFsdWUuY3BwOgorICAgICAgICAoanNjVmFs
dWVPYmplY3REZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKToKKyAgICAgICAgKGpzY1ZhbHVlRnVuY3Rp
b25DcmVhdGUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmFtZUZv
clJlZ2lzdGVyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05l
eHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y0Nsb3NlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlp
ZWxkKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRXJyb3JOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmJpbmRW
YWx1ZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZn
L0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZUltcGwpOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFy
cmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElP
Tik6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjp2YWxpZGF0ZUFJU3RhdGUpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90
QnVpbGRlci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U6OmNsZWFyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRp
ZXM6OmZpbmRTdHlsZXNoZWV0U291cmNlTWFwVVJMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6SW5q
ZWN0ZWRTY3JpcHQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZXhlY3V0
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojphd2FpdFByb21pc2UpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldFByZXZpZXcpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
amVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMgY29uc3QpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdCBjb25zdCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmluZyBjb25zdCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUgY29uc3QpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnNldEV2ZW50VmFsdWUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6Y2xlYXJFdmVudFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHQ6OnNldEV4Y2VwdGlvblZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHQ6OmNsZWFyRXhjZXB0aW9uVmFsdWUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQgY29uc3QpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE9iamVjdCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cCk6CisgICAgICAgIChJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0OjpjcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdCBjb25zdCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgIChJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxsUmVzdWx0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvck9iamVjdElkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnRpbWVTdGFtcCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpyZWNvcmRFbmQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QpOgor
ICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6
OmFwcGVuZEFQSUJhY2t0cmFjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcik6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpzdWJ0eXBlKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFsUHJvcGVy
dGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUlu
c3RhbmNlcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVy
eUhvbGRlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZy
YW1lOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzOjpnZXRGaXJzdEFyZ3VtZW50
QXNTdHJpbmcgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJv
bUV4Y2VwdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6SW5zcGVjdG9yQXVkaXRBZ2Vu
dCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckF1ZGl0QWdlbnQ6OnNldHVwKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6dGVhcmRvd24pOgorICAgICAgICAqIGludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6ZnJpZW5kbHlG
dW5jdGlvbk5hbWUpOgorICAgICAgICAqIGludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwOgor
ICAgICAgICAoSlNDOjpTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OmR1bXAgY29uc3QpOgorICAgICAg
ICAoSlNDOjpTaGFkb3dDaGlja2VuOjpGcmFtZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpG
cmFtZTo6ZnVuY3Rpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpG
cmFtZTo6c291cmNlVVJMIGNvbnN0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpkb01haW5UaHJlYWRQcmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKToKKyAgICAgICAgKEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
IChjb21wdXRlRmlsZVBhdGgpOgorICAgICAgICAocnVuV2l0aE9wdGlvbnMpOgorICAgICAgICAo
cnVuSW50ZXJhY3RpdmUpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTElu
dDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAgICAgICogcGFyc2VyL0xleGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmludmFsaWRDaGFyYWN0ZXJNZXNzYWdlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6TGV4ZXI8VD46OnBhcnNlQ29tcGxleEVzY2FwZSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+
OjpwYXJzZVN0cmluZ1Nsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlVGVt
cGxhdGVMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleFdpdGhvdXRDbGVhcmlu
Z0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpzZXRFcnJvck1lc3NhZ2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5V2l0aFNpemVR
dWlyayk6CisgICAgICAgIChKU0M6OmlzQXJyYXlTbG93SW5saW5lKToKKyAgICAgICAgKiBydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0TGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6dG9Mb2Nh
bGVTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjphdG9taWNzV2FpdEltcGwpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCaWdJbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQmln
SW50UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dG9UaGlzQmlnSW50VmFsdWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RF
RklORV9DT01NT05fU0xPV19QQVRIKToKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVDbGllbnQu
Y3BwOgorICAgICAgICAoSlNDOjphcHBlbmRNZXNzYWdlUHJlZml4KToKKyAgICAgICAgKEpTQzo6
Q29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29uc29sZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnZhbHVlT3JEZWZh
dWx0TGFiZWxTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmZvcm1hdGVEYXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpEYXRlUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlU3ludGF4
RXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpj
cmVhdGVPdXRPZk1lbW9yeUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAg
ICAgIChKU0M6OnRocm93Vk1FcnJvcik6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNl
LmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkTmFtZVN0cmluZyk6
CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHA6CisgICAgICAgIChKU0M6
OmRvRXhjZXB0aW9uRnV6emluZyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKToKKyAgICAgICAg
KEpTQzo6bm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjppbnZhbGlk
UGFyYW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAo
SlNDOjppbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlv
blNvdXJjZUFwcGVuZGVyKToKKyAgICAgICAgKEpTQzo6aW52YWxpZFByb3RvdHlwZVNvdXJjZUFw
cGVuZGVyKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0
ZXJFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKToK
KyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvck5vdEZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJF
cnJvckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmNyZWF0ZU5v
dEFDb25zdHJ1Y3RvckVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlTm90QUZ1bmN0aW9uRXJy
b3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVOb3RBbk9iamVjdEVycm9yKToKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlSW52YWxpZFByb3RvdHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlVERa
RXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6Cisg
ICAgICAgIChKU0M6OmNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAo
SlNDOjpjcmVhdGVQcml2YXRlTWV0aG9kQWNjZXNzRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVh
dGVSZWluc3RhbGxQcml2YXRlTWV0aG9kRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRmluYWxp
emF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkZpbmFsaXphdGlv
blJlZ2lzdHJ5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RmluYWxpemF0aW9uUmVnaXN0
cnkpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpnZXRGdW5jdGlvblJlYWxtKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxDb2xsYXRvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6c29y
dExvY2FsZURhdGEpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OnNlYXJjaExvY2FsZURh
dGEpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcik6Cisg
ICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6
OmNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdDo6bG9jYWxlRGF0YSk6CisgICAgICAgIChKU0M6OnRvRGF0ZVRpbWVPcHRpb25zQW55RGF0
ZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZURhdGVJbnRlcnZhbEZv
cm1hdElmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXRSYW5nZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VU
b1BhcnRzKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6aW5pdGlh
bGl6ZURpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6Om9mIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxMaXN0Rm9ybWF0Ojppbml0
aWFsaXplTGlzdEZvcm1hdCk6CisgICAgICAgIChKU0M6OnN0cmluZ0xpc3RGcm9tSXRlcmFibGUp
OgorICAgICAgICAoSlNDOjpJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SW50bExpc3RGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxM
aXN0Rm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGUuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsTG9jYWxlOjppbml0aWFsaXplTG9jYWxlKToKKyAgICAgICAgKEpTQzo6SW50
bExvY2FsZTo6Y2FsZW5kYXJzKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y29sbGF0aW9u
cyk6CisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OmhvdXJDeWNsZXMpOgorICAgICAgICAoSlND
OjpJbnRsTG9jYWxlOjpudW1iZXJpbmdTeXN0ZW1zKToKKyAgICAgICAgKEpTQzo6SW50bExvY2Fs
ZTo6dGltZVpvbmVzKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6dGV4dEluZm8pOgorICAg
ICAgICAoSlNDOjpJbnRsTG9jYWxlOjp3ZWVrSW5mbyk6CisgICAgICAgICogcnVudGltZS9JbnRs
TG9jYWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5j
cHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3Jt
YXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0c0ludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3JvdXBpbmdWYWx1ZSk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpzZXRO
dW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICog
cnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXplTG9jYWxl
TGlzdCk6CisgICAgICAgIChKU0M6OmRlZmF1bHRMb2NhbGUpOgorICAgICAgICAoSlNDOjpyZXNv
bHZlTG9jYWxlKToKKyAgICAgICAgKEpTQzo6bWFwSUNVQ2FsZW5kYXJLZXl3b3JkVG9CQ1A0Nyk6
CisgICAgICAgIChKU0M6Om1hcEJDUDQ3VG9JQ1VDYWxlbmRhcktleXdvcmQpOgorICAgICAgICAo
SlNDOjptYXBJQ1VDb2xsYXRpb25LZXl3b3JkVG9CQ1A0Nyk6CisgICAgICAgIChKU0M6OmF2YWls
YWJsZUNvbGxhdGlvbnMpOgorICAgICAgICAoSlNDOjphdmFpbGFibGVDdXJyZW5jaWVzKToKKyAg
ICAgICAgKEpTQzo6YXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcyk6CisgICAgICAgIChKU0M6OmNh
bm9uaWNhbGl6ZVRpbWVab25lTmFtZUZyb21JQ1VUaW1lWm9uZSk6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjppbnRsR2V0T3B0aW9uc09iamVjdCk6CisgICAgICAgICog
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVs
ZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxl
czo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
OjpzZWxlY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdFJh
bmdlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdCk6CisgICAgICAgIChK
U0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdEludGVybmFsIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9J
bnRsU2VnbWVudGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6aW5pdGlhbGl6
ZVNlZ21lbnRlcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXI6OnNlZ21lbnQgY29uc3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50
cy5jcHA6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6Y3JlYXRlU2VnbWVudEl0ZXJhdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JdGVy
YXRvck9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvck5leHQpOgorICAgICAg
ICAoSlNDOjppdGVyYXRvckNsb3NlKToKKyAgICAgICAgKEpTQzo6aGFzSXRlcmF0b3JNZXRob2Qp
OgorICAgICAgICAoSlNDOjppdGVyYXRvck1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
clByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU3BlY2llc0NvbnN0cnVj
dG9yU2xvdyk6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU2xpY2UpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjp2YWxpZGF0ZVR5cGVk
QXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpleHBv
bmVudGlhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpdmlkZUltcGwpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVySW1wbCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpsZWZ0U2hpZnRCeUFic29sdXRlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFsbG9j
YXRlRm9yKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvTnVtYmVyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmFzVWludE5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQmln
SW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OnRvQmlnSW50IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OnRvUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk6CisgICAgICAgICogcnVu
dGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpnZXREYXRhKToKKyAgICAgICAgKEpTQzo6c2V0RGF0YSk6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9KU0RhdGVNYXRoLmNwcDoK
KyAgICAgICAgKEpTQzo6RGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUpOgorICAgICAgICAoSlND
OjpEYXRlQ2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5lZWRlZCk6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMp
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmlj
VHlwZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpzcGVjaWVzQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAg
ICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UpOgorICAgICAg
ICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpuYW1l
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6ZGVjb2RlKToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3Ry
aW5naWZpZWRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6Y2FsbFRv
UHJpbWl0aXZlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b3JkaW5hcnlUb1By
aW1pdGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFu
Y2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pT
VHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlZEFycmF5SXRlcmF0b3JPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgpOgorICAgICAgICAoSlNDOjpM
aXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleFN0cmluZ1Nsb3cpOgorICAgICAgICAo
SlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleE51bWJlcik6CisgICAgICAg
IChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpzZXRFcnJvck1lc3NhZ2VGb3JUb2tlbik6
CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZVByaW1pdGl2ZVZh
bHVlKToKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKToKKyAg
ICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBh
cnNlcjo6Z2V0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6TWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1l
L01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldE1hcCk6CisgICAgICAgICogcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6dG9Qcm9wZXJ0eURlc2Ny
aXB0b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAo
SlNDOjpvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc1VSU2hpZnQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OnBlcmZvcm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50
ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0Ojpw
ZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVB1
dCk6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChK
U0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmpl
Y3Q6OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0
OjpwZXJmb3JtSXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZv
cm1EZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
R2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
U2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90
b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9SZWdFeHAu
Y3BwOgorICAgICAgICAoSlNDOjplc2NhcGVQYXR0ZXJuKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKToKKyAgICAgICAg
KEpTQzo6dG9GbGFncyk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRp
bWUvUnVudGltZVR5cGUuY3BwOgorICAgICAgICAoSlNDOjpydW50aW1lVHlwZUFzU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpT
YW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6
OlNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2Rlcyk6CisgICAgICAgICogcnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6
cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0U2V0KToKKyAg
ICAgICAgKiBydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUu
Y3BwOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOgorICAgICAg
ICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUgY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OnRvTG9jYWxlQ2FzZSk6
CisgICAgICAgICogcnVudGltZS9TeW1ib2wuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OnRv
TnVtYmVyIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OlN5bWJvbFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHA6CisgICAgICAgIChKU0M6OnBhcnNlVGVtcG9y
YWxDYWxlbmRhclN0cmluZyk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxEdXJhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRy
eUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpmcm9tRHVy
YXRpb25MaWtlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9JU084NjAxRHVy
YXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlv
bik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OmNvbXBhcmUpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbER1cmF0aW9uOjp3aXRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxEdXJhdGlvbjo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6
c3VidHJhY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpyb3VuZCBj
b25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvdGFsIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3Jh
bER1cmF0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHA6CisgICAgICAgICogcnVudGltZS9UZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjp0ZW1wb3JhbExhcmdlc3RVbml0KToKKyAg
ICAgICAgKEpTQzo6dGVtcG9yYWxTbWFsbGVzdFVuaXQpOgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWUuY3BwOgorICAgICAgICAoSlNDOjp0b1BsYWluVGltZSk6CisgICAgICAg
IChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgIChKU0M6OnRv
VGVtcG9yYWxUaW1lUmVjb3JkKToKKyAgICAgICAgKEpTQzo6dG9QYXJ0aWFsVGltZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWU6OndpdGggY29uc3QpOgorICAgICAgICAoSlNDOjpleHRyYWN0RGlmZmVyZW5j
ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3Bw
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpmcm9tKToKKyAgICAgICAgKiBydW50
aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsVGltZVpvbmVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1l
Wm9uZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tik6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNl
dDo6ZHVtcFR5cGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6ZGlzcGxheU5hbWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6bGVhc3RDb21tb25BbmNlc3Rv
cik6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVNoYXBlOjpzZXRDb25zdHJ1Y3Rvck5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEpOgorICAgICAgICAqIHJ1bnRp
bWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6Z2V0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpnZXRXZWFrUmVmKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OldlYWtTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
V2Vha1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFdlYWtTZXQpOgorICAgICAg
ICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6
ZU92ZXJyaWRlSW5mbyk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisKIDIwMjItMDMtMjEgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWZlcmVuY2VFcnJv
ciB3aGVuIHVzaW5nIGV4dHJhIHBhcmVucyBpbiBjbGFzcyBmaWVsZHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNDRiYmRiODky
MmFlYjFiNGFkNWZkMzNhMTBiMGRiYWFkODY1NDA3NC4uMGQzOTUzNGQ4YTE2ZGVkZDVkYWI2OTUy
ZmVjOTBiMTYwYmRiOWIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0wMy0yMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZyBsaXRlcmFscyB3aXRo
IF9zdHIgc3VmZml4IHNob3VsZCBub3QgbmVlZCB0byBkbyBzdHJsZW4oKSBhdCBydW50aW1lCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxNjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgIiJfc3Ry
IG9wZXJhdG9yIHdhcyBjb25zdHJ1Y3RpbmcgYSBTdHJpbmcgZnJvbSBhbiBBU0NJSUxpdGVyYWwu
IFdoaWxlIHRoaXMgYXZvaWRlZCBjb3BpbmcgdGhlIGNoYXJhY3RlcnMsCisgICAgICAgIGl0IGNv
dWxkIHRyaWdnZXIgY2FsbHMgdG8gc3RybGVuKCkgYXQgcnVuIHRpbWUgdG8gZmlndXJlIG91dCB0
aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuIFRoaXMgd2FzIHVuZm9ydW5hdGUKKyAgICAgICAgc2lu
Y2UgdGhlICIiX3N0ciBvcGVyYXRvciB0YWtlcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgYXMg
cGFyYW1ldGVyIGFuZCB3YXMgc2ltcGx5IGlnbm9yaW5nIGl0LiBUaGUgIiJfc3RyCisgICAgICAg
IG9wZXJhdG9yIG5vdyBjb25zdHJ1Y3RzIHN0cmluZ3MgbW9yZSBlZmZpY2llbnRseSBieSBub3Qg
aWdub3JpbmcgdGhlIGxlbmd0aCBpdCB0YWtlcyBhcyBwYXJhbWV0ZXIgYW5kIHRodXMKKyAgICAg
ICAgYXZvaWRpbmcgcnVudGltZSBjYWxscyB0byBzdHJsZW4oKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGFsc28gYWRvcHRzIHRoZSAiIl9zdHIgb3BlcmF0b3IgaW4gbW9yZSBwbGFjZXMgc28gdGhl
eSBjYW4gbGV2ZXJhZ2UgdGhlIG9wdGltaXphdGlvbi4KKworICAgICAgICAqIHd0Zi9JbmRlbnRl
ci5oOgorICAgICAgICAoV1RGOjpJbmRlbnRlcjo6SW5kZW50ZXIpOgorICAgICAgICAqIHd0Zi9M
b2dnZXIuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ6OnRvU3RyaW5nKToKKyAgICAgICAg
KiB3dGYvTWVkaWFUaW1lLmNwcDoKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0pTT05PYmpl
Y3QgY29uc3QpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKiB3dGYvVVJMLmNwcDoKKyAgICAgICAgKFdURjo6bWltZVR5cGVGcm9t
RGF0YVVSTCk6CisgICAgICAgICogd3RmL2NmL0xhbmd1YWdlQ0YuY3BwOgorICAgICAgICAoV1RG
OjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAqIHd0Zi90ZXh0L1dU
RlN0cmluZy5jcHA6CisgICAgICAgIChhc2NpaURlYnVnKToKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nTGl0ZXJhbHM6Om9wZXJhdG9yIF9zdHIp
OgorICAgICAgICAqIHd0Zi91bml4L0xhbmd1YWdlVW5peC5jcHA6CisgICAgICAgIChXVEY6OnBs
YXRmb3JtTGFuZ3VhZ2UpOgorCiAyMDIyLTAzLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVmVjdG9yIG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBhcmUgc3Vib3B0aW1hbCB3aGVuIHRoZSB2ZWN0b3IgaGFzIGFuIGlubGlu
ZSBidWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2N2UzYmRkMzRjN2M4MjliMDUzZTg1NjUxOWRjNGZmM2Y5
YjQ4MDlmLi5lYzUxMjA5NGZiNTZiNzVlZDU5OGQ2OWY0YmYyN2E4MjcyNjlkNGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE3IEBACisyMDIyLTAzLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nIGxpdGVyYWxzIHdpdGggX3N0ciBzdWZmaXggc2hv
dWxkIG5vdCBuZWVkIHRvIGRvIHN0cmxlbigpIGF0IHJ1bnRpbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IHRoZSAiIl9zdHIgb3BlcmF0b3Ig
aW4gbW9yZSBwbGFjZXMgc28gdGhleSBjYW4gbGV2ZXJhZ2UgdGhlIG9wdGltaXphdGlvbi4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVEZWZhdWx0VmFsdWUpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmlu
aXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAg
ICAgICAoR2VuZXJhdGVDYWxsVHJhY2VyKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VSdWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlUnVsZTo6Y3NzVGV4dCBjb25zdCk6
CisgICAgICAgICogY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmJhc2VQYWxldHRlIGNvbnN0KToKKyAg
ICAgICAgKiBjc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NL
ZXlmcmFtZXNSdWxlOjppbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFnZVJ1bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFnZVJ1bGU6OnNlbGVjdG9yVGV4dCBjb25zdCk6Cisg
ICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTaGVldDo6Y3NzUnVsZXNGb3JCaW5kaW5ncyk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hl
ZXQuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0ZvbnRG
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udEZhY2U6OmZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250
RmFjZTo6c3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OndlaWdodCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c3RyZXRjaCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udEZhY2U6OmRpc3BsYXkgY29uc3QpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OnNlcmlhbGl6ZSBjb25zdCk6CisgICAg
ICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5UHJpb3Jp
dHkpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVQcm9wZXJ0aWVzOjpwYWdlQnJlYWtQcm9wZXJ0eVZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBh
cnNlcjo6Y29tbWl0TWVkaWFRdWVyeSk6CisgICAgICAgICogZG9tL0NEQVRBU2VjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246Om5vZGVOYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBkb20vQ29tbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tZW50Ojpub2RlTmFt
ZSBjb25zdCk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VnZ2Vz
dGVkTUlNRVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbnRlbnRU
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2RlTmFtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d3JpdGVsbik6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZGVzaWduTW9kZSBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6bm9kZU5hbWUg
Y29uc3QpOgorICAgICAgICAqIGRvbS9GcmFnbWVudERpcmVjdGl2ZVBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VGcmFnbWVudERpcmVj
dGl2ZSk6CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6
bm9kZU5hbWUgY29uc3QpOgorICAgICAgICAqIGRvbS9UZXh0RW5jb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RW5jb2Rlcjo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAqIGh0bWwv
QmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2th
YmxlSW5wdXRUeXBlOjpzYXZlRm9ybUNvbnRyb2xTdGF0ZSBjb25zdCk6CisgICAgICAgICogaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSk6CisgICAgICAgICogaHRt
bC9Db2xvcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6
ZmFsbGJhY2tWYWx1ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9ET01Gb3JtRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVGaWxlRW50cnkpOgorICAgICAgICAqIGh0bWwvRGF0ZUlu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpzZXR1cExheW91
dFBhcmFtZXRlcnMgY29uc3QpOgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXR1cExh
eW91dFBhcmFtZXRlcnMgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OmRlY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6
c2V0VmFsdWVDb21tb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
cmVjdGlvbkZvckZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBodG1sL01vbnRoSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFt
ZXRlcnMgY29uc3QpOgorICAgICAgICAqIGh0bWwvVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaW1lSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpV
UkxEZWNvbXBvc2l0aW9uOjpwcm90b2NvbCBjb25zdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNPUlNTZXR0aW5n
c0F0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OmluaXRpYXRvckZvcik6
CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRh
YmFzZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlT3JpZ2luSGVhZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRUeXBlOjpwcm9maWxlc1BhcmFtZXRlcik6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOjpSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjo6cmVnaXN0cmFibGVEb21haW5Gcm9tSG9zdCk6CisgICAgICAgICogcGxh
dGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRp
bWluZ0Z1bmN0aW9uOjpjc3NUZXh0IGNvbnN0KToKKwogMjAyMi0wMy0yMSAgQW50b2luZSBRdWlu
dCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbbWVkaWEtY29udHJvbHNdIHNjcnVi
YmluZyBvbiBpT1Mgd2hlbiBpbmxpbmUgZG9lcyBub3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggYjNlMmFlNDQxYzRlYzUyMzQy
YWZlOWQ1NDllNGFlNjIzOGNlMzQ1Zi4uNDA1YmU0ZDUwY2ViNzg4ZjkwZDg0NWZjOTIxYWUyZjdi
NzJiYjYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2Jq
ZWN0Lm1tCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBFeHBlY3RlZDxVUkwsIFN0cmluZz4gY29t
cHV0ZVZhbGlkSW1wb3J0U3BlY2lmaWVyKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QKICAgICB9CiAK
ICAgICBpZiAoYmFzZSA9PSBVUkwoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJD
b3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBiYXNlIFVSTCBmb3IgbG9hZGluZy4iX3MpOworICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGJhc2UgVVJM
IGZvciBsb2FkaW5nLiJfc3RyKTsKIAogICAgIGlmICghYmFzZS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJSZWZlcnJlcmluZyBzY3JpcHQncyB1
cmwgaXMgbm90IHZhbGlkOiAiX3MsIGJhc2Uuc3RyaW5nKCkpKTsKQEAgLTE5NiwxMyArMTk2LDEz
IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0
Y2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKFVO
TElLRUxZKCFbc2NyaXB0IGlzS2luZE9mQ2xhc3M6W0pTU2NyaXB0IGNsYXNzXV0pKQotICAgICAg
ICAgICAgcmV0dXJuIHJlamVjdFByb21pc2UoIkZpcnN0IGFyZ3VtZW50IG9mIHJlc29sdXRpb24g
Y2FsbGJhY2sgaXMgbm90IGEgSlNTY3JpcHQiX3MpOworICAgICAgICAgICAgcmV0dXJuIHJlamVj
dFByb21pc2UoIkZpcnN0IGFyZ3VtZW50IG9mIHJlc29sdXRpb24gY2FsbGJhY2sgaXMgbm90IGEg
SlNTY3JpcHQiX3N0cik7CiAKICAgICAgICAgSlNTY3JpcHQqIGpzU2NyaXB0ID0gc3RhdGljX2Nh
c3Q8SlNTY3JpcHQgKj4oc2NyaXB0KTsKIAogICAgICAgICBKU1NvdXJjZUNvZGUqIHNvdXJjZSA9
IFtqc1NjcmlwdCBqc1NvdXJjZUNvZGVdOwogICAgICAgICBpZiAoVU5MSUtFTFkoW2pzU2NyaXB0
IHR5cGVdICE9IGtKU1NjcmlwdFR5cGVNb2R1bGUpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVj
dFByb21pc2UoIlRoZSBKU1NjcmlwdCB0aGF0IHdhcyBwcm92aWRlZCBkaWQgbm90IGhhdmUgZXhw
ZWN0ZWQgdHlwZSBvZiBrSlNTY3JpcHRUeXBlTW9kdWxlLiJfcyk7CisgICAgICAgICAgICByZXR1
cm4gcmVqZWN0UHJvbWlzZSgiVGhlIEpTU2NyaXB0IHRoYXQgd2FzIHByb3ZpZGVkIGRpZCBub3Qg
aGF2ZSBleHBlY3RlZCB0eXBlIG9mIGtKU1NjcmlwdFR5cGVNb2R1bGUuIl9zdHIpOwogCiAgICAg
ICAgIE5TVVJMICpzb3VyY2VVUkwgPSBbanNTY3JpcHQgc291cmNlVVJMXTsKICAgICAgICAgU3Ry
aW5nIG9sZE1vZHVsZUtleSB7IFtzb3VyY2VVUkwgYWJzb2x1dGVTdHJpbmddIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CmluZGV4IGM3ODRkZmJhOTQwNjk2OTI0OTllYzczNjhhZTFhY2JlYjFjNzk0ZGIuLjkyZGMxMTAz
YjVkODZjNDU0OTZhZTVhNGEzNTdiNGMzOWRjMDAwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMjYsNyAr
MTI2LDcgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogICAgIGlmIChoYXNDb252ZXJ0VG9UeXBlKSB7CiAgICAgICAg
IHRoaXMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2ws
Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltT
eW1ib2wudG9QcmltaXRpdmVdIl9zLCBjdXN0b21Ub1ByaW1pdGl2ZSksCisgICAgICAgICAgICBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRp
dmVdIl9zdHIsIGN1c3RvbVRvUHJpbWl0aXZlKSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9CiAgICAgCkBAIC0y
MzQsNyArMjM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpj
dXN0b21Ub1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIEpTQ2FsbGJhY2tP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNDYWxsYmFja09i
amVjdFtTeW1ib2wudG9QcmltaXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0
aGlzfCB2YWx1ZS4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSlNDYWxsYmFja09iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdIG1ldGhv
ZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0aGlzfCB2YWx1ZS4iX3N0cik7CiAgICAgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSBoaW50ID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIApAQCAtNzA1LDcgKzcwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsKEpTR2xvYmFsT2JqZWN0
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2JhbE9i
amVjdCwgIlN0YXRpYyBmdW5jdGlvbiBwcm9wZXJ0eSBkZWZpbmVkIHdpdGggTlVMTCBjYWxsQXNG
dW5jdGlvbiBjYWxsYmFjay4iX3MpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihnbG9i
YWxPYmplY3QsICJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2Fs
bEFzRnVuY3Rpb24gY2FsbGJhY2suIl9zdHIpKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+CkBAIC03NDAsNyArNzQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpjYWxsYmFja0dldHRlckltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiaGFz
UHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBwcm9wZXJ0eSB0aGF0IGRvZXNu
J3QgZXhpc3QuIl9zKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiaGFzUHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBwcm9wZXJ0eSB0aGF0
IGRvZXNuJ3QgZXhpc3QuIl9zdHIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCA0NWRjZDIzNjRiYTRlY2Jh
NzU4NjA2OGViNWE0NzY3MGViZjUyMjcwLi4zMmY3Mzc2YzAxNzdiNzMwNDk3OTM0MTg1MGIzNGMy
YmQ3YmMxNDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApA
QCAtMTA0LDcgKzEwNCw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUsCiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMoY3R4KTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7Ci0gICAgcmV0dXJuIHRvUmVm
KEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxBc0Z1bmN0
aW9uLCBuYW1lID8gbmFtZS0+c3RyaW5nKCkgOiAiYW5vbnltb3VzIl9zKSk7CisgICAgcmV0dXJu
IHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxB
c0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+c3RyaW5nKCkgOiAiYW5vbnltb3VzIl9zdHIpKTsKIH0K
IAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwg
SlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2Fs
bEFzQ29uc3RydWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
U2NyaXB0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQppbmRleCA4
NTAzNDdiN2NkNzEyNjBhMGJmNjU5MDc1MGE5YTQ1MGRjMzExYzFjLi4xZDk4YmUzOGMyNGI5MGZm
ZWI2ZDI5MThiMzg3NjQ3MzAwM2FlYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KQEAgLTI4NywxMiArMjg3LDEyIEBAIC0gKEpTQzo6SlNTb3VyY2VDb2RlKilqc1NvdXJj
ZUNvZGUKIC0gKEJPT0wpd3JpdGVDYWNoZTooU3RyaW5nJillcnJvcgogewogICAgIGlmIChzZWxm
LmlzVXNpbmdCeXRlY29kZUNhY2hlKSB7Ci0gICAgICAgIGVycm9yID0gIkNhY2hlIGZvciBKU1Nj
cmlwdCBpcyBhbHJlYWR5IG5vbi1lbXB0eS4gQ2FuIG5vdCBvdmVycmlkZSBpdC4iX3M7CisgICAg
ICAgIGVycm9yID0gIkNhY2hlIGZvciBKU1NjcmlwdCBpcyBhbHJlYWR5IG5vbi1lbXB0eS4gQ2Fu
IG5vdCBvdmVycmlkZSBpdC4iX3N0cjsKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIAogICAg
IGlmICghbV9jYWNoZVBhdGgpIHsKLSAgICAgICAgZXJyb3IgPSAiTm8gY2FjaGUgcGF0aCB3YXMg
cHJvdmlkZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGlzIEpTU2NyaXB0LiJfczsKKyAgICAg
ICAgZXJyb3IgPSAiTm8gY2FjaGUgcGF0aCB3YXMgcHJvdmlkZWQgZHVyaW5nIGNvbnN0cnVjdGlv
biBvZiB0aGlzIEpTU2NyaXB0LiJfc3RyOwogICAgICAgICByZXR1cm4gTk87CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKaW5kZXggYWJhNmRmNmUy
YTMxODM4ZTczODg0OWQyOGI3MjkyZTIxMzJhNGU5MS4uMmY3YjEwY2YxYTgxNDZmZWJlOTJlODY4
ZTM4MWIwOWU0M2YxMjkyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1R5cGVkQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFy
cmF5LmNwcApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJC
eXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3RSZWYsIEpTCiAgICAg
aWYgKEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVy
Kj4odm0sIG9iamVjdCkpIHsKICAgICAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzQnVmZmVy
LT5pbXBsKCk7CiAgICAgICAgIGlmIChidWZmZXItPmlzV2FzbU1lbW9yeSgpKSB7Ci0gICAgICAg
ICAgICBzZXRFeGNlcHRpb24oY3R4LCBleGNlcHRpb24sIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJDYW5ub3QgZ2V0IHRoZSBiYWNraW5nIGJ1ZmZlciBmb3IgYSBXZWJBc3NlbWJseS5N
ZW1vcnkiX3MpKTsKKyAgICAgICAgICAgIHNldEV4Y2VwdGlvbihjdHgsIGV4Y2VwdGlvbiwgY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkNhbm5vdCBnZXQgdGhlIGJhY2tpbmcgYnVmZmVy
IGZvciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSJfc3RyKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXgg
ZDNhZDA4MGUxZGRmNGZlNmVmYmE5MTM1YmEyNjg3NmM3N2RjYmMyNi4uZjgzZjU3NDNiM2NjNzA1
MTgwMjJiMTVjYjdiNjM1NDA1NDAxMjE0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1
ZS5tbQpAQCAtODE2LDcgKzgxNiw3IEBAIHN0YXRpYyBpZCBjb250YWluZXJWYWx1ZVRvT2JqZWN0
KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU0NvbnRhaW5lckNvbnZlcnRvCiAgICAgICAg
ICAgICBBU1NFUlQoW2N1cnJlbnQub2JqYyBpc0tpbmRPZkNsYXNzOltOU011dGFibGVBcnJheSBj
bGFzc11dKTsKICAgICAgICAgICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IChOU011dGFibGVB
cnJheSAqKWN1cnJlbnQub2JqYzsKICAgICAgICAgCi0gICAgICAgICAgICBhdXRvIGxlbmd0aFN0
cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoImxlbmd0aCJfcyk7CisgICAgICAgICAg
ICBhdXRvIGxlbmd0aFN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoImxlbmd0aCJf
c3RyKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTQzo6dG9VSW50MzIoSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwganMsIGxlbmd0
aFN0cmluZy5nZXQoKSwgMCksIDApKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC05MTEsNyArOTExLDcgQEAgaWQgdmFsdWVUb0FycmF5
KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVm
KiBleGNlcHQKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKGNvbnRleHQpKTsK
ICAgICBpZiAoIShKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZhbHVlKSB8fCBKU1ZhbHVlSXNVbmRl
ZmluZWQoY29udGV4dCwgdmFsdWUpKSkgewotICAgICAgICBKU0M6OkpTT2JqZWN0KiBleGNlcHRp
b25PYmplY3QgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCAiQ2Fubm90IGNv
bnZlcnQgcHJpbWl0aXZlIHRvIE5TQXJyYXkiX3MpOworICAgICAgICBKU0M6OkpTT2JqZWN0KiBl
eGNlcHRpb25PYmplY3QgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCAiQ2Fu
bm90IGNvbnZlcnQgcHJpbWl0aXZlIHRvIE5TQXJyYXkiX3N0cik7CiAgICAgICAgICpleGNlcHRp
b24gPSB0b1JlZihleGNlcHRpb25PYmplY3QpOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQogICAgICAgICByZXBvcnRFeGNlcHRpb25Ub0luc3BlY3Rvcihjb250ZXh0LCBleGNlcHRpb25P
YmplY3QpOwpAQCAtOTMzLDcgKzkzMyw3IEBAIGlkIHZhbHVlVG9EaWN0aW9uYXJ5KEpTR2xvYmFs
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBlCiAKICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhjb250ZXh0KSk7CiAgICAgaWYgKCEoSlNW
YWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkgfHwgSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQs
IHZhbHVlKSkpIHsKLSAgICAgICAgSlNDOjpKU09iamVjdCogZXhjZXB0aW9uT2JqZWN0ID0gSlND
OjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0KSwgIkNhbm5vdCBjb252ZXJ0IHByaW1pdGl2
ZSB0byBOU0RpY3Rpb25hcnkiX3MpOworICAgICAgICBKU0M6OkpTT2JqZWN0KiBleGNlcHRpb25P
YmplY3QgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCAiQ2Fubm90IGNvbnZl
cnQgcHJpbWl0aXZlIHRvIE5TRGljdGlvbmFyeSJfc3RyKTsKICAgICAgICAgKmV4Y2VwdGlvbiA9
IHRvUmVmKGV4Y2VwdGlvbk9iamVjdCk7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgICAgIHJlcG9ydEV4Y2VwdGlvblRvSW5zcGVjdG9yKGNvbnRleHQsIGV4Y2VwdGlvbk9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1
bmN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlv
bi5tbQppbmRleCBkZjc2MGM2Mjg2NjhhNGY0NmU4OWQ1MzM2MDkzZDFjYTVjMDI0NGRjLi40YTY3
YTZiNGQ1MzNiOTZkMGYxNmMzZjk5Zjc2NjE0NGMwNWIwZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KQEAgLTEyOCw3ICsxMjgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
KmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJlZiks
ICJBcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBPYmplY3RpdmUtQyBDbGFzcyJfcykpOworICAgICAg
ICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0UmVm
KSwgIkFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIE9iamVjdGl2ZS1DIENsYXNzIl9zdHIpKTsKICAg
ICB9CiAKICAgICBSZXRhaW5QdHI8Q2xhc3M+IG1fY2xhc3M7CkBAIC00ODMsNyArNDgzLDcgQEAg
c3RhdGljIEpTVmFsdWVSZWYgb2JqQ0NhbGxiYWNrRnVuY3Rpb25DYWxsQXNGdW5jdGlvbihKU0Nv
bnRleHRSZWYgY2FsbGVyQ29udGV4dCwKIAogICAgIGlmIChpbXBsLT50eXBlKCkgPT0gQ2FsbGJh
Y2tJbml0TWV0aG9kKSB7CiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVmID0g
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXTsKLSAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVm
KEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJlZiksICJDYW5ub3QgY2FsbCBhIGNs
YXNzIGNvbnN0cnVjdG9yIHdpdGhvdXQgfG5ld3wiX3MpKTsKKyAgICAgICAgKmV4Y2VwdGlvbiA9
IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJlZiksICJDYW5ub3QgY2Fs
bCBhIGNsYXNzIGNvbnN0cnVjdG9yIHdpdGhvdXQgfG5ld3wiX3N0cikpOwogICAgICAgICBpZiAo
KmV4Y2VwdGlvbikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dFJlZik7CkBAIC01MjYsNyArNTI2LDcgQEAgc3Rh
dGljIEpTT2JqZWN0UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uQ2FsbEFzQ29uc3RydWN0b3IoSlND
b250ZXh0UmVmIGNhbGxlckNvbnQKIAogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVm
ID0gW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXTsKICAgICBpZiAoIUpTVmFsdWVJc09iamVj
dChjb250ZXh0UmVmLCByZXN1bHQpKSB7Ci0gICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6
OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRSZWYpLCAiT2JqZWN0aXZlLUMgYmxvY2tzIGNh
bGxlZCBhcyBjb25zdHJ1Y3RvcnMgbXVzdCByZXR1cm4gYW4gb2JqZWN0LiJfcykpOworICAgICAg
ICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0UmVm
KSwgIk9iamVjdGl2ZS1DIGJsb2NrcyBjYWxsZWQgYXMgY29uc3RydWN0b3JzIG11c3QgcmV0dXJu
IGFuIG9iamVjdC4iX3N0cikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
QVNTRVJUKCEqZXhjZXB0aW9uKTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBKU1ZhbHVlUmVmIE9iakND
YWxsYmFja0Z1bmN0aW9uSW1wbDo6Y2FsbChKU0NvbnRleHQgKmNvbnRleHQsIEpTT2JqZWN0UmVm
IHRoaXNPYgogICAgICAgICBSRUxFQVNFX0FTU0VSVCghdGhpc09iamVjdCk7CiAgICAgICAgIHRh
cmdldCA9IFttX2luc3RhbmNlQ2xhc3MgYWxsb2NdOwogICAgICAgICBpZiAoIXRhcmdldCB8fCAh
W3RhcmdldCBpc0tpbmRPZkNsYXNzOm1faW5zdGFuY2VDbGFzcy5nZXQoKV0pIHsKLSAgICAgICAg
ICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRS
ZWYpLCAic2VsZiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgT2JqZWN0aXZlLUMgaW5zdGFuY2UgbWV0
aG9kIl9zKSk7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBl
RXJyb3IodG9KUyhjb250ZXh0UmVmKSwgInNlbGYgdHlwZSBjaGVjayBmYWlsZWQgZm9yIE9iamVj
dGl2ZS1DIGluc3RhbmNlIG1ldGhvZCJfc3RyKSk7CiAgICAgICAgICAgICBpZiAoKmV4Y2VwdGlv
bikKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0UmVmKTsKQEAgLTYwNCw3ICs2MDQsNyBAQCBKU1Zh
bHVlUmVmIE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbDo6Y2FsbChKU0NvbnRleHQgKmNvbnRleHQs
IEpTT2JqZWN0UmVmIHRoaXNPYgogICAgIGNhc2UgQ2FsbGJhY2tJbnN0YW5jZU1ldGhvZDogewog
ICAgICAgICB0YXJnZXQgPSB0cnlVbndyYXBPYmpjT2JqZWN0KGNvbnRleHRSZWYsIHRoaXNPYmpl
Y3QpOwogICAgICAgICBpZiAoIXRhcmdldCB8fCAhW3RhcmdldCBpc0tpbmRPZkNsYXNzOm1faW5z
dGFuY2VDbGFzcy5nZXQoKV0pIHsKLSAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6
OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRSZWYpLCAic2VsZiB0eXBlIGNoZWNrIGZhaWxl
ZCBmb3IgT2JqZWN0aXZlLUMgaW5zdGFuY2UgbWV0aG9kIl9zKSk7CisgICAgICAgICAgICAqZXhj
ZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0UmVmKSwgInNl
bGYgdHlwZSBjaGVjayBmYWlsZWQgZm9yIE9iamVjdGl2ZS1DIGluc3RhbmNlIG1ldGhvZCJfc3Ry
KSk7CiAgICAgICAgICAgICBpZiAoKmV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxs
YmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxs
YmFja0Z1bmN0aW9uLmNwcAppbmRleCAwODEwNzdhNGMwNDNjY2I0OGFlYjI5YjAxZjhmZmMwZDhh
ZmJlMTNhLi41NzE0YTQ0ZTQ5ZmIwM2ZjODNkNDI0MzMwMTcyZmIwZTc5ZWYyNWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rp
b24uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEpTVmFsdWVSZWYgSlNDQ2FsbGJhY2tGdW5jdGlvbjo6
Y2FsbChKU0NvbnRleHRSZWYgY2FsbGVyQ29udGV4dCwgSlNPYmplY3RSZWYgdGhpCiAgICAgYXV0
byoganNDb250ZXh0ID0ganNjQ29udGV4dEdldEpTQ29udGV4dChjb250ZXh0LmdldCgpKTsKIAog
ICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6Q29uc3RydWN0b3IpIHsKLSAgICAgICAgKmV4Y2VwdGlv
biA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoanNDb250ZXh0KSwgImNhbm5vdCBj
YWxsIGEgY2xhc3MgY29uc3RydWN0b3Igd2l0aG91dCB8bmV3fCJfcykpOworICAgICAgICAqZXhj
ZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhqc0NvbnRleHQpLCAiY2Fu
bm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciB3aXRob3V0IHxuZXd8Il9zdHIpKTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGpzQ29udGV4dCk7CiAgICAgfQogCkBAIC0x
MDMsNyArMTAzLDcgQEAgSlNWYWx1ZVJlZiBKU0NDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKEpTQ29u
dGV4dFJlZiBjYWxsZXJDb250ZXh0LCBKU09iamVjdFJlZiB0aGkKICAgICBpZiAobV90eXBlID09
IFR5cGU6Ok1ldGhvZCkgewogICAgICAgICBpbnN0YW5jZSA9IGpzY0NvbnRleHRXcmFwcGVkT2Jq
ZWN0KGNvbnRleHQuZ2V0KCksIHRoaXNPYmplY3QpOwogICAgICAgICBpZiAoIWluc3RhbmNlKSB7
Ci0gICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9K
Uyhqc0NvbnRleHQpLCAiaW52YWxpZCBpbnN0YW5jZSB0eXBlIGluIG1ldGhvZCJfcykpOworICAg
ICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoanND
b250ZXh0KSwgImludmFsaWQgaW5zdGFuY2UgdHlwZSBpbiBtZXRob2QiX3N0cikpOwogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGpzQ29udGV4dCk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xNjksNyArMTY5LDcgQEAgSlNPYmplY3RSZWYgSlNDQ2FsbGJhY2tGdW5jdGlv
bjo6Y29uc3RydWN0KEpTQ29udGV4dFJlZiBjYWxsZXJDb250ZXh0LCBzaXplX3QgYXIKICAgICBh
dXRvKiBqc0NvbnRleHQgPSBqc2NDb250ZXh0R2V0SlNDb250ZXh0KGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgaWYgKG1fcmV0dXJuVHlwZSA9PSBHX1RZUEVfTk9ORSkgewotICAgICAgICAqZXhjZXB0
aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhqc0NvbnRleHQpLCAiY29uc3Ry
dWN0b3JzIGNhbm5vdCBiZSB2b2lkIl9zKSk7CisgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihK
U0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGpzQ29udGV4dCksICJjb25zdHJ1Y3RvcnMgY2Fubm90
IGJlIHZvaWQiX3N0cikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTIy
Myw3ICsyMjMsNyBAQCBKU09iamVjdFJlZiBKU0NDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3Qo
SlNDb250ZXh0UmVmIGNhbGxlckNvbnRleHQsIHNpemVfdCBhcgogICAgIGNhc2UgR19UWVBFX09C
SkVDVDoKICAgICAgICAgaWYgKGF1dG8qIHB0ciA9IHJldHVyblZhbHVlLmRhdGFbMF0udl9wb2lu
dGVyKQogICAgICAgICAgICAgcmV0dXJuIHRvUmVmKGpzY0NsYXNzR2V0T3JDcmVhdGVKU1dyYXBw
ZXIobV9jbGFzcy5nZXQoKSwgY29udGV4dC5nZXQoKSwgcHRyKSk7Ci0gICAgICAgICpleGNlcHRp
b24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGpzQ29udGV4dCksICJjb25zdHJ1
Y3RvciByZXR1cm5lZCBudWxsIl9zKSk7CisgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6
OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGpzQ29udGV4dCksICJjb25zdHJ1Y3RvciByZXR1cm5lZCBu
dWxsIl9zdHIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgKmV4Y2Vw
dGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoanNDb250ZXh0KSwgbWFrZVN0
cmluZygiaW52YWxpZCB0eXBlICIsIGdfdHlwZV9uYW1lKEdfVkFMVUVfVFlQRSgmcmV0dXJuVmFs
dWUpKSwgIiByZXR1cm5lZCBieSBjb25zdHJ1Y3RvciIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKaW5kZXggOWRjZWFmYzViODNjYTlhNWUzODE0
OTQxZGQwNGNkNzRkZWUyNWJiNS4uZmE1ZjFjMzMwNzAzNWYyZDg4NGUxYzhkNDVlYTIwY2Q5YzE1
MmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQganNjQ29udGV4dEpTVmFsdWVUb0dWYWx1ZShKU0ND
b250ZXh0KiBjb250ZXh0LCBKU1ZhbHVlUmVmIGpzVmFsdWUsIEdUeXBlIHR5CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAqZXhjZXB0aW9uID0g
dG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiaW52YWxpZCBwb2ludGVy
IHR5cGUiX3MpKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsICJpbnZhbGlkIHBvaW50ZXIgdHlwZSJfc3RyKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQganNj
Q29udGV4dEpTVmFsdWVUb0dWYWx1ZShKU0NDb250ZXh0KiBjb250ZXh0LCBKU1ZhbHVlUmVmIGpz
VmFsdWUsIEdUeXBlIHR5CiAgICAgICAgIGVsc2UgaWYgKEdfSVNfT0JKRUNUKHdyYXBwZWRPYmpl
Y3QpKQogICAgICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3cmFwcGVkT2JqZWN0
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIndyYXBwZWQgb2JqZWN0IGlzIG5vdCBhIEdPYmpl
Y3QiX3MpKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsICJ3cmFwcGVkIG9iamVjdCBpcyBub3QgYSBHT2JqZWN0Il9zdHIp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR19UWVBFX0xPTkc6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcAppbmRleCA0ZGM2OTZlYzg2ZGY5
MDFjM2U5MmM0MGRhZjkwNDQ4ZTJhYTY4NTgwLi40MmNhOTViMmY2MTZkODdlNmNiYjE4YzQ2MTBl
NWFjYWM3NjMxZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIv
SlNDVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1
ZS5jcHAKQEAgLTExMDUsMTIgKzExMDUsMTIgQEAgc3RhdGljIHZvaWQganNjVmFsdWVPYmplY3RE
ZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKEpTQ1ZhbHVlKiB2YWx1ZSwgY29uc3QgY2hhciogcHIKICAg
ICAgICAgICAgIGNsb3N1cmUgPSBhZG9wdEdSZWYoZ19jY2xvc3VyZV9uZXdfc3dhcChnZXR0ZXIs
IHVzZXJEYXRhLCByZWludGVycHJldF9jYXN0PEdDbG9zdXJlTm90aWZ5PihyZWludGVycHJldF9j
YXN0PEdDYWxsYmFjaz4oZGVzdHJveU5vdGlmeSkpKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNsb3N1cmUgPSBhZG9wdEdSZWYoZ19jY2xvc3VyZV9uZXcoZ2V0dGVyLCB1c2VyRGF0YSwg
cmVpbnRlcnByZXRfY2FzdDxHQ2xvc3VyZU5vdGlmeT4ocmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJh
Y2s+KGRlc3Ryb3lOb3RpZnkpKSkpOwotICAgICAgICBhdXRvIGZ1bmN0aW9uID0gSlNDOjpKU0ND
YWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgImdldCJfcywgZnVuY3Rp
b25UeXBlLCBudWxscHRyLCBXVEZNb3ZlKGNsb3N1cmUpLCBwcm9wZXJ0eVR5cGUsIFZlY3RvcjxH
VHlwZT4geyB9KTsKKyAgICAgICAgYXV0byBmdW5jdGlvbiA9IEpTQzo6SlNDQ2FsbGJhY2tGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsICJnZXQiX3N0ciwgZnVuY3Rpb25UeXBlLCBu
dWxscHRyLCBXVEZNb3ZlKGNsb3N1cmUpLCBwcm9wZXJ0eVR5cGUsIFZlY3RvcjxHVHlwZT4geyB9
KTsKICAgICAgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoZnVuY3Rpb24pOwogICAgIH0KICAgICBp
ZiAoc2V0dGVyKSB7CiAgICAgICAgIEdSZWZQdHI8R0Nsb3N1cmU+IGNsb3N1cmUgPSBhZG9wdEdS
ZWYoZ19jY2xvc3VyZV9uZXcoc2V0dGVyLCB1c2VyRGF0YSwgZ2V0dGVyID8gbnVsbHB0ciA6IHJl
aW50ZXJwcmV0X2Nhc3Q8R0Nsb3N1cmVOb3RpZnk+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNr
PihkZXN0cm95Tm90aWZ5KSkpKTsKLSAgICAgICAgYXV0byBmdW5jdGlvbiA9IEpTQzo6SlNDQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsICJzZXQiX3MsIGZ1bmN0aW9u
VHlwZSwgbnVsbHB0ciwgV1RGTW92ZShjbG9zdXJlKSwgR19UWVBFX05PTkUsIFZlY3RvcjxHVHlw
ZT4geyBwcm9wZXJ0eVR5cGUgfSk7CisgICAgICAgIGF1dG8gZnVuY3Rpb24gPSBKU0M6OkpTQ0Nh
bGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAic2V0Il9zdHIsIGZ1bmN0
aW9uVHlwZSwgbnVsbHB0ciwgV1RGTW92ZShjbG9zdXJlKSwgR19UWVBFX05PTkUsIFZlY3RvcjxH
VHlwZT4geyBwcm9wZXJ0eVR5cGUgfSk7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKGZ1
bmN0aW9uKTsKICAgICB9CiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBuYW1lLT5pZGVudGlmaWVyKCZ2bSksIGRlc2Ny
aXB0b3IsIHRydWUpOwpAQCAtMTE3Miw3ICsxMTcyLDcgQEAgc3RhdGljIEdSZWZQdHI8SlNDVmFs
dWU+IGpzY1ZhbHVlRnVuY3Rpb25DcmVhdGUoSlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hh
cioKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGpzY0NvbnRl
eHRHZXRKU0NvbnRleHQoY29udGV4dCkpOwogICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7Ci0gICAgYXV0byogZnVu
Y3Rpb25PYmplY3QgPSB0b1JlZihKU0M6OkpTQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBuYW1lID8gU3RyaW5nOjpmcm9tVVRGOChuYW1lKSA6ICJhbm9ueW1vdXMi
X3MsCisgICAgYXV0byogZnVuY3Rpb25PYmplY3QgPSB0b1JlZihKU0M6OkpTQ0NhbGxiYWNrRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBuYW1lID8gU3RyaW5nOjpmcm9tVVRGOChu
YW1lKSA6ICJhbm9ueW1vdXMiX3N0ciwKICAgICAgICAgSlNDOjpKU0NDYWxsYmFja0Z1bmN0aW9u
OjpUeXBlOjpGdW5jdGlvbiwgbnVsbHB0ciwgV1RGTW92ZShjbG9zdXJlKSwgcmV0dXJuVHlwZSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogICAgIHJldHVybiBqc2NDb250ZXh0R2V0T3JDcmVhdGVW
YWx1ZShjb250ZXh0LCBmdW5jdGlvbk9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpblV0aWxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgKaW5kZXggNDAxYzJmOTM3ZWI1NGExMjMyMDBiMzIw
NzcwMzIzNDFmNjc1MTU3ZS4uMjAxZmNkOTNkOTU3NDI2M2JhMDZlY2UxN2MyYzc4MWM0MjgyMjgz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5VdGls
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluVXRpbHMuaApA
QCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBJTklUSUFMSVpF
X0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZShKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICNuYW1lKSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShKU0M6OklkZW50aWZpZXI6OmZy
b21VaWQoSlNDOjpQcml2YXRlTmFtZShKU0M6OlByaXZhdGVOYW1lOjpQcml2YXRlU3ltYm9sLCAj
bmFtZSAiIl9zKSkpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1f
IyNuYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKSwgbV8jI25hbWUj
I1ByaXZhdGVOYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVpZChKU0M6OlByaXZhdGVOYW1lKEpT
Qzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVTeW1ib2wsICNuYW1lICIiX3N0cikpKQogI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSlNDOjpJZGVudGlmaWVyIG1fIyNuYW1l
OyBjb25zdCBKU0M6OklkZW50aWZpZXIgbV8jI25hbWUjI1ByaXZhdGVOYW1lOwogI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUihuYW1lKSBcCiAgICAgY29uc3QgSlND
OjpJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7
IH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRl
eCAwOThhZWQ5MzVhNjhmN2Q2Njg3YmQzNTIzMjUzMDc3ZjMxZWQxOWYyLi42NDFmMzEyZTI1NzQ3
M2E4MTU5MGU1YmFhZjgwMDNjMGZkMzRjMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzIwMCw3ICszMjAwLDcgQEAgU3RyaW5nIENvZGVC
bG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAg
ICAgICAgIH0KICAgICB9CiAgICAgaWYgKHZpcnR1YWxSZWdpc3RlciA9PSB0aGlzUmVnaXN0ZXIo
KSkKLSAgICAgICAgcmV0dXJuICJ0aGlzIl9zOworICAgICAgICByZXR1cm4gInRoaXMiX3N0cjsK
ICAgICBpZiAodmlydHVhbFJlZ2lzdGVyLmlzQXJndW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoImFyZ3VtZW50c1siLCBwYWQoJyAnLCAzLCB2aXJ0dWFsUmVnaXN0ZXIudG9Bcmd1
bWVudCgpKSwgJ10nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA3OTNlMDlmMjYzMDViMzc4ZmQw
ZWE0YjI5ODNjMjcwZWJmNDhhYjQ4Li4yMTA5ZTE5YjdkNmRmMWNhOTVmZDJmYzNhM2VkZTc0MDQ0
YjY1M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDg3Myw3ICs0ODczLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXIKICAgICB7CiAgICAgICAgIFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0g
bmV3TGFiZWwoKTsKICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBv
cmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOwotICAgICAgICBlbWl0VGhyb3dUeXBl
RXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwor
ICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iX3N0cik7CiAgICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0
KCkpOwogICAgIH0KICAgICByZXR1cm4gZHN0OwpAQCAtNDkwNiw3ICs0OTA2LDcgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBjb25zdCBUaHIKICAgICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKIAogICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkp
LCBkb25lLmdldCgpKTsKLSAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBp
bnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfc3RyKTsKICAgICBl
bWl0TGFiZWwoZG9uZS5nZXQoKSk7CiB9CiAKQEAgLTQ5ODUsNyArNDk4NSw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCwgVGhyb3dhYmxlCiAgICAgICAgICAgICAgICAgICAgIEVtaXRBd2FpdCBlbWl0QXdhaXRJ
bkl0ZXJhdG9yQ2xvc2UgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2Vu
ZXJhdG9yQm9keU1vZGUgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm87CiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9k
ZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlKTsKIAotICAgICAgICAgICAgICAgICAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoIkRlbGVnYXRlZCBnZW5lcmF0b3IgZG9lcyBub3QgaGF2ZSBhICd0aHJv
dycgbWV0aG9kLiJfcyk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
RGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIl9zdHIp
OwogCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd01ldGhvZEZvdW5kLmdldCgp
KTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyB0aHJvd0FyZ3VtZW50cygqdGhp
cywgbnVsbHB0ciwgMSk7CkBAIC01MDIyLDcgKzUwMjIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93
YWJsZQogCiAgICAgICAgICAgICAgICAgICAgIFJlZjxMYWJlbD4gcmV0dXJuSXRlcmF0b3JSZXN1
bHRJc09iamVjdCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZU
cnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCByZXR1cm5JdGVy
YXRvclJlc3VsdElzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93
VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpOwogCiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRMYWJlbChyZXR1cm5JdGVyYXRvclJlc3VsdElzT2JqZWN0LmdldCgpKTsKIApAQCAt
NTA1Niw3ICs1MDU2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
Z2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKIAogICAgICAgICAgICAg
UmVmPExhYmVsPiBpdGVyYXRvclZhbHVlSXNPYmplY3QgPSBuZXdMYWJlbCgpOwogICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQo
KSksIGl0ZXJhdG9yVmFsdWVJc09iamVjdC5nZXQoKSk7Ci0gICAgICAgICAgICBlbWl0VGhyb3dU
eXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3Mp
OworICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJm
YWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpOwogICAgICAgICAgICAgZW1pdExhYmVsKGl0ZXJh
dG9yVmFsdWVJc09iamVjdC5nZXQoKSk7CiAKICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRv
bmUpLCBsb29wRG9uZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZjZlNDNlYzhjYmJhOGYyNTU5MGM2Zjgw
OGEyNDQ3NWRjMmI2ZWFlMS4uMzcwNGYzZDcyNDEzYmZkOGU5Y2NiOGI1OWM4YzIyZWVmZDNmZjIz
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtMTIyOCw3ICsxMjI4LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxs
VmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUK
ICAgICAgICAgCiAgICAgICAgIFJlZjxMYWJlbD4gdGhpc0lzRW1wdHlMYWJlbCA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9y
LmVtaXRJc0VtcHR5KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLnRoaXNSZWdp
c3RlcigpKSwgdGhpc0lzRW1wdHlMYWJlbC5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0
VGhyb3dSZWZlcmVuY2VFcnJvcigiJ3N1cGVyKCknIGNhbid0IGJlIGNhbGxlZCBtb3JlIHRoYW4g
b25jZSBpbiBhIGNvbnN0cnVjdG9yLiJfcyk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dS
ZWZlcmVuY2VFcnJvcigiJ3N1cGVyKCknIGNhbid0IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBp
biBhIGNvbnN0cnVjdG9yLiJfc3RyKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0aGlz
SXNFbXB0eUxhYmVsLmdldCgpKTsKIAogICAgICAgICBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCksIHJldCk7CkBAIC0yNTI0LDggKzI1MjQsOCBAQCBSZWdpc3RlcklEKiBQ
b3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqCiAKICAgICBBU1NFUlQobV9leHByLT5pc0Z1bmN0aW9uQ2FsbCgpKTsKICAgICBy
ZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCBtX29wZXJhdG9yID09IE9w
ZXJhdG9yOjpQbHVzUGx1cwotICAgICAgICA/ICJQb3N0Zml4ICsrIG9wZXJhdG9yIGFwcGxpZWQg
dG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIl9zCi0gICAgICAgIDogIlBvc3RmaXgg
LS0gb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3Ms
CisgICAgICAgID8gIlBvc3RmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlz
IG5vdCBhIHJlZmVyZW5jZS4iX3N0cgorICAgICAgICA6ICJQb3N0Zml4IC0tIG9wZXJhdG9yIGFw
cGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIl9zdHIsCiAgICAgICAgIGRz
dCk7CiB9CiAKQEAgLTI4MTEsOCArMjgxMSw4IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAK
ICAgICBBU1NFUlQobV9leHByLT5pc0Z1bmN0aW9uQ2FsbCgpKTsKICAgICByZXR1cm4gZW1pdFRo
cm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCBtX29wZXJhdG9yID09IE9wZXJhdG9yOjpQbHVz
UGx1cwotICAgICAgICA/ICJQcmVmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0
IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3MKLSAgICAgICAgOiAiUHJlZml4IC0tIG9wZXJhdG9yIGFw
cGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIl9zLAorICAgICAgICA/ICJQ
cmVmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5j
ZS4iX3N0cgorICAgICAgICA6ICJQcmVmaXggLS0gb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0
aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3N0ciwKICAgICAgICAgZHN0KTsKIH0KIApAQCAtMzY5
OCw3ICszNjk4LDcgQEAgUmVnaXN0ZXJJRCogU2hvcnRDaXJjdWl0UmVhZE1vZGlmeURvdE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXIKIAogUmVnaXN0ZXJJRCogQXNz
aWduRXJyb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewotICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihn
ZW5lcmF0b3IsICJMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9z
LCBkc3QpOworICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsICJM
ZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9zdHIsIGRzdCk7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBc3NpZ25CcmFja2V0Tm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDE4MCw3ICs0MTgwLDcgQEAg
dm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIHByb3BlcnQKIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmICgh
bV9sZXhwci0+aXNBc3NpZ25SZXNvbHZlTm9kZSgpICYmICFtX2xleHByLT5pc0Fzc2lnbm1lbnRM
b2NhdGlvbigpKSB7Ci0gICAgICAgIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwg
IkxlZnQgc2lkZSBvZiBmb3ItaW4gc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3MpOwor
ICAgICAgICBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsICJMZWZ0IHNpZGUgb2Yg
Zm9yLWluIHN0YXRlbWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9zdHIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00MjUyLDcgKzQyNTIsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHZv
aWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmICghbV9sZXhwci0+aXNBc3NpZ25tZW50TG9jYXRp
b24oKSkgewotICAgICAgICBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsICJMZWZ0
IHNpZGUgb2YgZm9yLW9mIHN0YXRlbWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9zKTsKKyAgICAg
ICAgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1v
ZiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLiJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNTE0MCw3ICs1MTQwLDcgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAg
ICAgICAgUmVmPExhYmVsPiBzdXBlcmNsYXNzSXNDb25zdHJ1Y3RvckxhYmVsID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3Iu
ZW1pdElzQ29uc3RydWN0b3IoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzdXBlcmNsYXNzLmdl
dCgpKSwgc3VwZXJjbGFzc0lzQ29uc3RydWN0b3JMYWJlbC5nZXQoKSk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVGhlIHN1cGVyY2xhc3Mg
aXMgbm90IGEgY29uc3RydWN0b3IuIl9zKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5
cGVFcnJvcigiVGhlIHN1cGVyY2xhc3MgaXMgbm90IGEgY29uc3RydWN0b3IuIl9zdHIpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHN1cGVyY2xhc3NJc0NvbnN0cnVjdG9yTGFiZWwuZ2V0
KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQocHJvdG9QYXJlbnQuZ2V0KCksIHN1
cGVyY2xhc3MuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKTsKIApA
QCAtNTQ0Nyw3ICs1NDQ3LDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6dG9TdHJpbmcoU3Ry
aW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKICAgICAKIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6
OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMp
IGNvbnN0CiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXRSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHJocywg
IlJpZ2h0IHNpZGUgb2YgYXNzaWdubWVudCBjYW5ub3QgYmUgZGVzdHJ1Y3R1cmVkIl9zKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdFJlcXVpcmVPYmplY3RDb2VyY2libGUocmhzLCAiUmlnaHQgc2lkZSBv
ZiBhc3NpZ25tZW50IGNhbm5vdCBiZSBkZXN0cnVjdHVyZWQiX3N0cik7CiAKICAgICBCeXRlY29k
ZUdlbmVyYXRvcjo6UHJlc2VydmVkVERaU3RhY2sgcHJlc2VydmVkVERaU3RhY2s7CiAgICAgZ2Vu
ZXJhdG9yLnByZXNlcnZlVERaU3RhY2socHJlc2VydmVkVERaU3RhY2spOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAyOGYxMjE1YjM2
OGUzZThhMDFmMGUxNmQ1MjE2ODYyZTBmMThjYjgzLi4zYmRjYzVmMjg4NDcyMTg2MjgyZWE5MzY2
OTQ2ZjdjOTk1NjYyZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtNzM2Myw3ICs3MzYzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90T2JqZWN0QmxvY2s7CiAgICAgICAgICAg
ICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7Ci0gICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVl
IGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3Ig
cmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgICAgICAgICAg
ICAgIExhenlKU1ZhbHVlIGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dy
YXBoLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfc3RyKTsK
ICAgICAgICAgICAgICAgICAgICAgT3BJbmZvIGluZm8gPSBPcEluZm8obV9ncmFwaC5tX2xhenlK
U1ZhbHVlcy5hZGQoZXJyb3JTdHJpbmcpKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogZXJy
b3JNZXNzYWdlID0gYWRkVG9HcmFwaChMYXp5SlNDb25zdGFudCwgaW5mbyk7CiAgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3dTdGF0aWNFcnJvciwgT3BJbmZvKEVycm9yVHlwZTo6
VHlwZUVycm9yKSwgZXJyb3JNZXNzYWdlKTsKQEAgLTc1NzQsNyArNzU3NCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdE9iamVjdEJsb2NrOwog
ICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOwotICAgICAgICAgICAgICAgICAgICBM
YXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwg
Ikl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAg
ICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdT
dHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3N0cik7CiAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyBpbmZvID0gT3BJbmZvKG1fZ3Jh
cGgubV9sYXp5SlNWYWx1ZXMuYWRkKGVycm9yU3RyaW5nKSk7CiAgICAgICAgICAgICAgICAgICAg
IE5vZGUqIGVycm9yTWVzc2FnZSA9IGFkZFRvR3JhcGgoTGF6eUpTQ29uc3RhbnQsIGluZm8pOwog
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93U3RhdGljRXJyb3IsIE9wSW5mbyhF
cnJvclR5cGU6OlR5cGVFcnJvciksIGVycm9yTWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAKaW5kZXggNjUwNzlmY2YxZTU3MzUxNjk3YTk5ZjVkOWNiMzQ1Yjlm
NmUzYTZjOS4uNDg3MDA4ZWY5NjdhZjZmMTg0NzcxMGM5YWM0OGFlNmIzMjBmMDlkNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcApAQCAtNzksNyArNzksNyBAQCBzdGF0
aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgICAgIGRhdGFMb2coIkRGRyhE
cml2ZXIpIGNvbXBpbGluZyAiLCAqY29kZUJsb2NrLCAiIHdpdGggIiwgbW9kZSwgIiwgaW5zdHJ1
Y3Rpb25zIHNpemUgPSAiLCBjb2RlQmxvY2stPmluc3RydWN0aW9uc1NpemUoKSwgIlxuIik7CiAg
ICAgCiAgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpKQotICAgICAgICB2bS50eXBlUHJvZmlsZXJM
b2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlv
bi4iX3MpOworICAgICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMo
dm0sICJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlvbi4iX3N0cik7CiAgICAgCiAgICAgUmVm
PFBsYW4+IHBsYW4gPSBhZG9wdFJlZigKICAgICAgICAgKm5ldyBQbGFuKGNvZGVCbG9jaywgcHJv
ZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUsIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgbXVzdEhhbmRs
ZVZhbHVlcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
aW5kZXggZGM1MDMxNjQ3NWFmODkxYTVmZGJjZWRjODQ2ZmJhYTk0NGI4NjFkZC4uMjk3MjNmODkz
ZDhiMjllZGNjNGEwYTRjNmQ4YWI4ZGM1NGVlZTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgY2hhciogbmV3VHlw
ZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHIKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3Ro
IGlzIG5lZ2F0aXZlIl9zKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBp
cyBuZWdhdGl2ZSJfc3RyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
MjkwLDcgKzI5MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PYmplY3RD
cmVhdGUsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3RvdHlwZSk7CiAKICAgICBpZiAoIXBy
b3RvdHlwZS5pc09iamVjdCgpICYmICFwcm90b3R5cGUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2JqZWN0IHByb3RvdHlwZSBtYXkg
b25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iX3MpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9i
amVjdCBvciBudWxsLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC0xNzg5LDcgKzE3ODksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWShzaXplIDwg
MCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3Vn
aCBwb3NpdGl2ZSBpbnRlZ2VyLiJfcykpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkFycmF5IHNpemUg
aXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zdHIpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xODE0LDcgKzE4MTQsNyBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIqLCAo
SlNHbG9iYWxPYmplYwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIGlmIChVTkxJS0VMWShzaXplIDwgMCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJBcnJh
eSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJfcykpOworICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZl
IGludGVnZXIuIl9zdHIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0y
NTgyLDcgKzI1ODIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW50MzJU
b1N0cmluZywgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChyYWRpeCA8IDIgfHwgcmFkaXgg
PiAzNikgewotICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJ0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3Qg
YmUgYmV0d2VlbiAyIGFuZCAzNiJfcykpOworICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJ0b1N0cmluZygpIHJh
ZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNiJfc3RyKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMjU5OCw3ICsyNTk4LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkludDUyVG9TdHJpbmcsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE8KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpIHsKLSAgICAgICAgdGhyb3dWTUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAidG9T
dHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiX3MpKTsKKyAg
ICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MiBhbmQgMzYiX3N0cikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTI2
MTQsNyArMjYxNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Eb3VibGVU
b1N0cmluZywgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+
IDM2KSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBi
ZSBiZXR3ZWVuIDIgYW5kIDM2Il9zKSk7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgInRvU3RyaW5nKCkgcmFk
aXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2Il9zdHIpKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0zMjY1LDcgKzMyNjUsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRywgdm9pZCwgKFZN
KiB2bVBvaW50ZQogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKLSAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJp
ZXModm0sICJMb2cgRnVsbCwgY2FsbGVkIGZyb20gaW5zaWRlIERGRy4iX3MpOworICAgIHZtLnR5
cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwgIkxvZyBGdWxsLCBjYWxsZWQg
ZnJvbSBpbnNpZGUgREZHLiJfc3RyKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUsIFVuaXF1
ZWRTdHJpbmdJbXBsKiBpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCmluZGV4IDkyNjA0NWY4ZTE3ZDg0YzJi
MTVmZjc5NmFhZDFlNWUxYjdhZTBhNGEuLjBiOThlOWY3N2IyZTNhZjFjYmI3OTlmNjVlNmQxNDM2
ZmFmZTUzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMzU4LDExICszNTgsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIodmFsdWUuYXNOdW1iZXIoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZS5hc0Jvb2xlYW4oKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFzQm9vbGVhbigpID8gInRydWUi
X3N0ciA6ICJmYWxzZSJfc3RyOwogICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm51bGwiX3M7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gIm51bGwiX3N0cjsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVu
ZGVmaW5lZCJfczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAidW5kZWZpbmVkIl9z
dHI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgICAgICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggYzQwN2IwMGM0ZGFiN2Q2NzZhMDVmOWUzZDUwZGRkMWE3MjEwMDJhYi4uYzM5YzZiMzk4
YzQzNTcxYmE4NjFiZmZjYzRiMjI0NjE2N2MyZGVlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNTcyLDcgKzU3Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmICghbV9ncmFwaER1bXApIHsKICAgICAgICAgICAgIFN0cmluZ1ByaW50U3Ry
ZWFtIG91dDsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcChvdXQpOwotICAgICAgICAgICAgbV9n
cmFwaER1bXAgPSBvdXQudHJ5VG9TdHJpbmcoKS52YWx1ZV9vcigiPG91dCBvZiBtZW1vcnkgd2hp
bGUgZHVtcGluZyBncmFwaD4iX3MpOworICAgICAgICAgICAgbV9ncmFwaER1bXAgPSBvdXQudHJ5
VG9TdHJpbmcoKS52YWx1ZV9vcigiPG91dCBvZiBtZW1vcnkgd2hpbGUgZHVtcGluZyBncmFwaD4i
X3N0cik7CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5k
ZXggYThjZGU4ODE1MTc1N2NkN2RkYTQ5MGQ0NDQ1ODI3OGVhM2FmOGUxOS4uMDE3MDZiOWFlOGY1
MDk5NmI3YmVjNGE3OWZkOTY4NWYwNTA4YmFlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCBT
dHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFw
U25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgLy8gQnVpbGQgYSBsaXN0IG9mIHVzZWQgY2xh
c3MgbmFtZXMuCiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBjbGFzc05hbWVJbmRleGVz
OwotICAgIGNsYXNzTmFtZUluZGV4ZXMuc2V0KCI8cm9vdD4iX3MsIDApOworICAgIGNsYXNzTmFt
ZUluZGV4ZXMuc2V0KCI8cm9vdD4iX3N0ciwgMCk7CiAgICAgdW5zaWduZWQgbmV4dENsYXNzTmFt
ZUluZGV4ID0gMTsKIAogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBsYWJlbHMgKHRoaXMgaXMganVz
dCBhIHN0cmluZyB0YWJsZSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IGVmODlhZWQ1ZGFmNTk0NWJiMTc0YTMzMGZlOWZj
NmQ0OWYyYTAxYzMuLjQzZTU2ZGEyYzFmYzc2ZGU3NjMxOWM3MWVjMDNlM2FlMmRiODk1N2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
Y3BwCkBAIC0yNjQsMTIgKzI2NCwxMiBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250
ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpcwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdC0+YWRk
SXRlbShpbnNwZWN0b3JWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkgPiAxKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBpbnNwZWN0b3JPYmplY3QgPSBpbmplY3RlZFNjcmlwdC53cmFw
T2JqZWN0KGNvbHVtbnMsICJjb25zb2xlIl9zLCB0cnVlKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChhdXRvIGluc3BlY3Rvck9iamVjdCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qo
Y29sdW1ucywgImNvbnNvbGUiX3N0ciwgdHJ1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJndW1lbnRzT2JqZWN0LT5hZGRJdGVtKGluc3BlY3Rvck9iamVjdC5yZWxlYXNlTm9uTnVs
bCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy0+
YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gaW5z
cGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KG1fYXJndW1lbnRzLT5hcmd1
bWVudEF0KGkpLCAiY29uc29sZSJfcywgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0
KG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpLCAiY29uc29sZSJfc3RyLCBnZW5lcmF0ZVByZXZp
ZXcpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4NywxMCArMjg3LDEwIEBAIHZvaWQgQ29u
c29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciYgY29u
c29sZUZyb250ZW5kRGlzCiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChtZXNzYWdlLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBKU09OTG9n
VmFsdWU6OlR5cGU6OkpTT046Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0b3JWYWx1
ZSA9IGluamVjdGVkU2NyaXB0LndyYXBKU09OU3RyaW5nKG1lc3NhZ2UudmFsdWUsICJjb25zb2xl
Il9zLCBnZW5lcmF0ZVByZXZpZXcpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdG9y
VmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwSlNPTlN0cmluZyhtZXNzYWdlLnZhbHVlLCAiY29u
c29sZSJfc3RyLCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgSlNPTkxvZ1ZhbHVlOjpUeXBlOjpTdHJpbmc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0
LndyYXBPYmplY3QoSlNDOjpKU1ZhbHVlKEpTQzo6anNTdHJpbmcoZ2xvYmFsT2JqZWN0KCktPnZt
KCksIG1lc3NhZ2UudmFsdWUpKSwgImNvbnNvbGUiX3MsIGdlbmVyYXRlUHJldmlldyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBP
YmplY3QoSlNDOjpKU1ZhbHVlKEpTQzo6anNTdHJpbmcoZ2xvYmFsT2JqZWN0KCktPnZtKCksIG1l
c3NhZ2UudmFsdWUpKSwgImNvbnNvbGUiX3N0ciwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUpCkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBD
b25zb2xlTWVzc2FnZTo6aXNFcXVhbChDb25zb2xlTWVzc2FnZSogbXNnKSBjb25zdAogdm9pZCBD
b25zb2xlTWVzc2FnZTo6Y2xlYXIoKQogewogICAgIGlmICghbV9tZXNzYWdlKQotICAgICAgICBt
X21lc3NhZ2UgPSAiPG1lc3NhZ2UgY29sbGVjdGVkPiJfczsKKyAgICAgICAgbV9tZXNzYWdlID0g
IjxtZXNzYWdlIGNvbGxlY3RlZD4iX3N0cjsKIAogICAgIGlmIChtX2FyZ3VtZW50cykKICAgICAg
ICAgbV9hcmd1bWVudHMgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKaW5kZXggMTI1MTA0
MzhiMmZjOWI0Njg2YTZjNTg3YzVhODZkNGU4M2EzOTE0NS4uNjYzOTk5YTIyMTY4ODJmNTNhMTRk
ZWZlNmIyNjk1NmRkMjdhZjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCkBAIC0yMDEsNyArMjAx
LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kTWFnaWNDb21tZW50KGNvbnN0IFN0cmluZyYgY29udGVu
dCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW4KIFN0cmluZyBmaW5kU3R5bGVzaGVldFNvdXJj
ZU1hcFVSTChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7CiAgICAgLy8gIi8qIyA8bmFtZT49PHZh
bHVlPiAqLyIgYW5kIGRlcHJlY2F0ZWQgIi8qQCIKLSAgICByZXR1cm4gZmluZE1hZ2ljQ29tbWVu
dChjb250ZW50LCAiL1xcKlsjQF1bXDA0MFx0XXNvdXJjZU1hcHBpbmdVUkw9W1wwNDBcdF0qKFte
XFxzXCdcIl0qKVtcMDQwXHRdKlxcKi8iX3MpOworICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50
KGNvbnRlbnQsICIvXFwqWyNAXVtcMDQwXHRdc291cmNlTWFwcGluZ1VSTD1bXDA0MFx0XSooW15c
XHNcJ1wiXSopW1wwNDBcdF0qXFwqLyJfc3RyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQ29udGVu
dFNlYXJjaFV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmNwcAppbmRleCA4YjI5MGZhZWJjMTg2NTUxOWIwZTdjNTE0ZjQ5NzU4
NWRmYzBiYmRhLi41MzRjMmRlODUxOTgzYmZkMzY1MDkzNThkYzYwZTgyNjgwMmMzZTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtNDMsMTIgKzQzLDEyIEBACiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5qZWN0ZWRT
Y3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKLSAgICA6IEluamVjdGVkU2NyaXB0QmFzZSgiSW5qZWN0
ZWRTY3JpcHQiX3MpCisgICAgOiBJbmplY3RlZFNjcmlwdEJhc2UoIkluamVjdGVkU2NyaXB0Il9z
dHIpCiB7CiB9CiAKIEluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdChEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RvckVudmlyb25tZW50KiBl
bnZpcm9ubWVudCkKLSAgICA6IEluamVjdGVkU2NyaXB0QmFzZSgiSW5qZWN0ZWRTY3JpcHQiX3Ms
IGluamVjdGVkU2NyaXB0T2JqZWN0LCBlbnZpcm9ubWVudCkKKyAgICA6IEluamVjdGVkU2NyaXB0
QmFzZSgiSW5qZWN0ZWRTY3JpcHQiX3N0ciwgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIGVudmlyb25t
ZW50KQogewogfQogCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0Ojp+SW5qZWN0ZWRT
Y3JpcHQoKQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpleGVjdXRlKFByb3RvY29sOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25TdHJpbmcsIEV4ZWN1dGVP
cHRpb25zJiYgb3B0aW9ucywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxp
bnQ+JiBzYXZlZFJlc3VsdEluZGV4KQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXhlY3V0ZSJfcywgaW5zcGVj
dG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV4
ZWN1dGUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlvblN0cmluZyk7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQob3B0aW9ucy5vYmplY3RHcm91cCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQob3B0aW9ucy5pbmNsdWRlQ29tbWFuZExpbmVBUEkpOwpAQCAtNzEsNyAr
NzEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpleGVjdXRlKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZgogCiB2b2lkIEluamVjdGVkU2NyaXB0Ojpl
dmFsdWF0ZShQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29s
IHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVz
dWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYg
c2F2ZWRSZXN1bHRJbmRleCkKIHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlIl9zLCBpbnNwZWN0b3JF
bnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVh
dGUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
aW5jbHVkZUNvbW1hbmRMaW5lQVBJKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdDo6ZXZhbHVhdGUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJgogCiB2b2lkIEluamVjdGVkU2NyaXB0Ojphd2FpdFByb21pc2UoY29uc3QgU3RyaW5n
JiBwcm9taXNlT2JqZWN0SWQsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZp
ZXcsIGJvb2wgc2F2ZVJlc3VsdCwgQXN5bmNDYWxsQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAg
ICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgImF3YWl0UHJvbWlzZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rp
b25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImF3YWl0UHJvbWlzZSJfc3RyLCBpbnNwZWN0
b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KHByb21pc2VPYmplY3RJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQocmV0dXJuQnlWYWx1ZSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2VuZXJhdGVQ
cmV2aWV3KTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6YXdhaXRQcm9t
aXNlKGNvbnN0IFN0cmluZyYgcHJvbWlzZU9iamVjdElkLCBib29sIHJldHVybkJ5VmEKIAogdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93bikKIHsKLSAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNh
bGxGdW5jdGlvbk9uIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5k
bGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCAiY2FsbEZ1bmN0aW9uT24iX3N0ciwgaW5zcGVjdG9yRW52aXJv
bm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChvYmplY3RJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoYXJndW1lbnRzKTsKQEAgLTEwNyw3ICsxMDcs
NyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdAogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFs
dWF0ZU9uQ2FsbEZyYW1lKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6
SlNWYWx1ZSBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBi
b29sIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50
PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlT25DYWxsRnJhbWUi
X3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJldmFsdWF0ZU9uQ2FsbEZyYW1lIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCkt
PmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2Fs
bEZyYW1lcyk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lSWQpOwogICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwpAQCAtMTIxLDE0ICsxMjEsMTQg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBKU0MKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVu
Y3Rpb25EZXRhaWxzKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRh
aWxzPiYgcmVzdWx0KQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0RnVuY3Rpb25EZXRhaWxzIl9zLCBpbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
Z2V0RnVuY3Rpb25EZXRhaWxzIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9u
Q2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZnVuY3Rpb25JZCk7
CiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdFZhbHVlID0gbWFrZUNhbGwoZnVuY3Rp
b24pOwogICAgIGlmICghcmVzdWx0VmFsdWUgfHwgcmVzdWx0VmFsdWUtPnR5cGUoKSAhPSBKU09O
OjpWYWx1ZTo6VHlwZTo6T2JqZWN0KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gcmVzdWx0VmFs
dWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlmICghZXJyb3JTdHJpbmcpCi0gICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfczsKKyAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIkludGVybmFsIGVycm9yIl9zdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEz
NywxNCArMTM3LDE0IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zCiAKIHZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmZ1bmN0aW9uRGV0YWlscyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBKU0M6OkpTVmFsdWUgdmFsdWUsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9u
RGV0YWlscz4mIHJlc3VsdCkKIHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImZ1bmN0aW9uRGV0YWlscyJfcywgaW5z
cGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ImZ1bmN0aW9uRGV0YWlscyJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNh
bGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHZhbHVlKTsKIAogICAg
IFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0VmFsdWUgPSBtYWtlQ2FsbChmdW5jdGlvbik7CiAg
ICAgaWYgKCFyZXN1bHRWYWx1ZSB8fCByZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEpTT046OlZhbHVl
OjpUeXBlOjpPYmplY3QpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSByZXN1bHRWYWx1ZS0+YXNT
dHJpbmcoKTsKICAgICAgICAgaWYgKCFlcnJvclN0cmluZykKLSAgICAgICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yIl9zOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3IiX3N0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTUzLDE0ICsx
NTMsMTQgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKFByb3RvY29sOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6SlMKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6
Z2V0UHJldmlldyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBy
ZXN1bHQpCiB7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRQcmV2aWV3Il9zLCBpbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0UHJldmlldyJfc3Ry
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcmVzdWx0VmFsdWUgPSBtYWtlQ2FsbChmdW5jdGlvbik7CiAgICAgaWYgKCFyZXN1bHRWYWx1
ZSB8fCByZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEpTT046OlZhbHVlOjpUeXBlOjpPYmplY3QpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSByZXN1bHRWYWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAg
aWYgKCFlcnJvclN0cmluZykKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVy
cm9yIl9zOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3N0cjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSW5qZWN0
ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyCiAgICAgQVNTRVJUKGZldGNoU3RhcnQgPj0gMCk7CiAgICAgQVNTRVJUKGZl
dGNoQ291bnQgPj0gMCk7CiAKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldFByb3BlcnRpZXMiX3MsIGluc3BlY3Rv
ckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRQ
cm9wZXJ0aWVzIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRs
ZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KG93blByb3BlcnRpZXMpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KGZldGNoU3RhcnQpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmdldFByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyCiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdCA9IG1ha2VDYWxsKGZ1bmN0
aW9uKTsKICAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQtPnR5cGUoKSAhPSBKU09OOjpWYWx1ZTo6
VHlwZTo6QXJyYXkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3M7
CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIl9zdHI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojpn
ZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZwogICAgIEFTU0VSVChmZXRjaFN0YXJ0ID49IDApOwogICAgIEFTU0VSVChmZXRjaENvdW50ID49
IDApOwogCi0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMiX3MsIGluc3BlY3Rv
ckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRE
aXNwbGF5YWJsZVByb3BlcnRpZXMiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rp
b25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZmV0Y2hTdGFydCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoZmV0Y2hDb3VudCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0ID0gbWFrZUNh
bGwoZnVuY3Rpb24pOwogICAgIGlmICghcmVzdWx0IHx8IHJlc3VsdC0+dHlwZSgpICE9IEpTT046
OlZhbHVlOjpUeXBlOjpBcnJheSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBl
cnJvciJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3N0cjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjEwLDEzICsyMTAsMTMgQEAgdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVz
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJvcGVydGllcykKIHsKLSAg
ICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgImdldEludGVybmFsUHJvcGVydGllcyJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldEludGVybmFsUHJvcGVy
dGllcyJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChnZW5lcmF0ZVByZXZpZXcpOwogCiAgICAgUmVmUHRyPEpTT046OlZhbHVl
PiByZXN1bHQgPSBtYWtlQ2FsbChmdW5jdGlvbik7CiAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0
LT50eXBlKCkgIT0gSlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5KSB7Ci0gICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5h
bCBlcnJvciJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzAsNyArMjMwLDcg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY28KICAgICBBU1NFUlQoZmV0Y2hTdGFydCA+PSAwKTsK
ICAgICBBU1NFUlQoZmV0Y2hDb3VudCA+PSAwKTsKIAotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0Q29sbGVjdGlv
bkVudHJpZXMiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIo
KSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJnZXRDb2xsZWN0aW9uRW50cmllcyJfc3RyLCBpbnNwZWN0b3JFbnZp
cm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91
cCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZmV0Y2hTdGFydCk7CkBAIC0yMzgsNyAr
MjM4LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY28KIAogICAgIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcmVzdWx0ID0gbWFrZUNhbGwoZnVuY3Rpb24pOwogICAgIGlmICghcmVzdWx0IHx8IHJlc3Vs
dC0+dHlwZSgpICE9IEpTT046OlZhbHVlOjpUeXBlOjpBcnJheSkgewotICAgICAgICBlcnJvclN0
cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJu
YWwgZXJyb3IiX3N0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQ3LDEyICsyNDcs
MTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoUHJvdG9jb2w6
OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY28KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6c2F2
ZVJlc3VsdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGNhbGxBcmd1bWVudEpTT04sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkK
IHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgInNhdmVSZXN1bHQiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1
bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJzYXZlUmVzdWx0Il9zdHIsIGluc3Bl
Y3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoY2FsbEFyZ3VtZW50SlNPTik7CiAKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHJlc3VsdCA9IG1ha2VDYWxsKGZ1bmN0aW9uKTsKICAgICBpZiAoIXJlc3VsdCB8fCByZXN1
bHQtPnR5cGUoKSAhPSBKU09OOjpWYWx1ZTo6VHlwZTo6SW50ZWdlcikgewotICAgICAgICBlcnJv
clN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3IiX3N0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjYyLDcgKzI2
Miw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhK
U0M6OkpTVmFsdWUgY2FsbEZyYW1lcykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUo
KSk7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBDYWxsRnJhbWVzIl9z
dHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAKICAgICBhdXRvIGNhbGxSZXN1
bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwpAQCAtMjgwLDcgKzI4
MCw3IEBAIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4g
SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzCiBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QoSlNDOjpKU1ZhbHVlIHZh
bHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBPYmpl
Y3QiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5m
dW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2
YWx1ZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAg
d3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhhc0FjY2Vzc1RvSW5zcGVjdGVkU2NyaXB0U3Rh
dGUoKSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KEpTQzo6SlNWYWx1ZQogUmVmUHRy
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwSlNP
TlN0cmluZyhjb25zdCBTdHJpbmcmIGpzb24sIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29s
IGdlbmVyYXRlUHJldmlldykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0g
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAid3JhcEpTT05TdHJpbmciX3MsIGluc3BlY3RvckVudmlyb25tZW50KCkt
PmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcEpTT05TdHJpbmci
X3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAg
ICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoanNvbik7CiAgICAgd3JhcEZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGdlbmVyYXRlUHJldmlldyk7CkBAIC0zMzAsNyArMzMwLDcgQEAgUmVmUHRyPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmluZyhjb25z
dCBTdHIKIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNj
cmlwdDo6d3JhcFRhYmxlKEpTQzo6SlNWYWx1ZSB0YWJsZSwgSlNDOjpKU1ZhbHVlIGNvbHVtbnMp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndy
YXBUYWJsZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwVGFibGUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQoaGFzQWNjZXNzVG9JbnNwZWN0ZWRTY3JpcHRTdGF0ZSgpKTsKICAgICB3cmFwRnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQodGFibGUpOwogICAgIGlmICghY29sdW1ucykKQEAgLTM1Niw3ICszNTYs
NyBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3Jp
cHQ6OndyYXBUYWJsZShKU0M6OkpTVmFsdWUgdAogUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpP
YmplY3RQcmV2aWV3PiBJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVlKEpTQzo6SlNWYWx1ZSB2
YWx1ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgRGVwcmVjYXRl
ZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAicHJldmlld1ZhbHVlIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxI
YW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInByZXZpZXdWYWx1ZSJfc3RyLCBpbnNwZWN0b3JF
bnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIHdyYXBGdW5jdGlvbi5h
cHBlbmRBcmd1bWVudCh2YWx1ZSk7CiAKICAgICBhdXRvIGNhbGxSZXN1bHQgPSBjYWxsRnVuY3Rp
b25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uKTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBSZWZQ
dHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+IEluamVjdGVkU2NyaXB0OjpwcmV2
aWV3VmFsdWUoSlNDOjpKU1ZhbAogdm9pZCBJbmplY3RlZFNjcmlwdDo6c2V0RXZlbnRWYWx1ZShK
U0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAic2V0RXZlbnRWYWx1ZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25D
YWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInNldEV2ZW50VmFsdWUiX3N0ciwgaW5zcGVjdG9y
RW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudCh2YWx1ZSk7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24pOwogfQpAQCAtMzg1LDE0
ICszODUsMTQgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6c2V0RXZlbnRWYWx1ZShKU0M6OkpTVmFs
dWUgdmFsdWUpCiB2b2lkIEluamVjdGVkU2NyaXB0OjpjbGVhckV2ZW50VmFsdWUoKQogewogICAg
IEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNsZWFyRXZlbnRWYWx1ZSJfcywg
aW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgImNsZWFyRXZlbnRWYWx1ZSJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlv
bkNhbGxIYW5kbGVyKCkpOwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uKTsKIH0KIAogdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6c2V0RXhjZXB0aW9uVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAg
IEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInNldEV4Y2VwdGlvblZhbHVlIl9z
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAic2V0RXhjZXB0aW9uVmFsdWUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVu
Y3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7
CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24pOwogfQpAQCAtNDAwLDE0ICs0MDAsMTQgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdDo6c2V0RXhjZXB0aW9uVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKQogdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Y2xlYXJFeGNlcHRpb25WYWx1ZSgpCiB7CiAgICAgQVNTRVJUKCFo
YXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY2xlYXJFeGNlcHRpb25WYWx1ZSJfcywgaW5zcGVj
dG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNs
ZWFyRXhjZXB0aW9uVmFsdWUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25D
YWxsSGFuZGxlcigpKTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbik7CiB9CiAKIEpTQzo6SlNWYWx1
ZSBJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2Jq
ZWN0QnlJZCJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgImZpbmRPYmplY3RCeUlkIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50
KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
b2JqZWN0SWQpOwogCiAgICAgYXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxF
bmFibGVkKGZ1bmN0aW9uKTsKQEAgLTQyMCwxNCArNDIwLDE0IEBAIEpTQzo6SlNWYWx1ZSBJbmpl
Y3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3RPYmplY3QoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluc3BlY3RPYmplY3Qi
X3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJpbnNwZWN0T2JqZWN0Il9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodmFsdWUpOwog
ICAgIG1ha2VDYWxsKGZ1bmN0aW9uKTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFz
ZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9i
amVjdCJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3QiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+
ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmpl
Y3RJZCk7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24pOwogfQpAQCAtNDM1LDcgKzQzNSw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJyZWxlYXNlT2JqZWN0R3JvdXAiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHJl
bGVhc2VGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdEdyb3Vw
Il9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAg
ICAgcmVsZWFzZUZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKIAogICAgIGF1
dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChyZWxlYXNlRnVuY3Rp
b24pOwpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmpl
Y3RHcm91cChjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogSlNDOjpKU09iamVjdCogSW5qZWN0
ZWRTY3JpcHQ6OmNyZWF0ZUNvbW1hbmRMaW5lQVBJT2JqZWN0KEpTQzo6SlNWYWx1ZSBjYWxsRnJh
bWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY3Jl
YXRlQ29tbWFuZExpbmVBUElPYmplY3QiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJjcmVhdGVDb21tYW5kTGluZUFQSU9iamVj
dCJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIGNhbGxS
ZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3Bw
CmluZGV4IGRhN2UwOWNkNzkxOWIwYmJmNjIwNTZjNDdlYTE5NjU4ZDliODg1MDEuLmRmMTcyNTlh
ZTI5MWI3M2UzZDJlZmE5YTY0MzE3NmYzYjk0NWE4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTEyMSw3
ICsxMjEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbChEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLAogCiAgICAgICAgIGpzRnVuY3Rpb24g
PSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBT
dHJpbmcoKSwgWyYsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsKICAgICAg
ICAgICAgIGlmICghY2FsbEZyYW1lKQotICAgICAgICAgICAgICAgIGNoZWNrQXN5bmNDYWxsUmVz
dWx0KEpTT046OlZhbHVlOjpjcmVhdGUobWFrZVN0cmluZygiRXhjZXB0aW9uIHdoaWxlIG1ha2lu
ZyBhIGNhbGwuIl9zKSksIGNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBjaGVja0FzeW5jQ2Fs
bFJlc3VsdChKU09OOjpWYWx1ZTo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2Fs
bC4iX3N0ciksIGNhbGxiYWNrKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8gcmVzdWx0SlNP
TlZhbHVlID0gdG9JbnNwZWN0b3JWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKQogICAgICAgICAgICAgICAgIGNoZWNrQXN5bmNDYWxsUmVzdWx0KHJlc3VsdEpTT05W
YWx1ZSwgY2FsbGJhY2spOwogICAgICAgICAgICAgZWxzZQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQXN5bmNDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCYgZnVuY3Rpb24sCiB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxs
UmVzdWx0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOjpW
YWx1ZT4gcmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJl
c3VsdE9iamVjdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFs
PGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCB2YWx1ZSBpcyBlbXB0eSJfczsK
KyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCB2YWx1ZSBpcyBl
bXB0eSJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTcsMjUgKzE1NywyNSBA
QCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxsUmVzdWx0KFByb3RvY29sOjpFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZgogCiAgICAgYXV0byByZXN1bHRUdXBsZSA9IHJlc3Vs
dC0+YXNPYmplY3QoKTsKICAgICBpZiAoIXJlc3VsdFR1cGxlKSB7Ci0gICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGFuIE9iamVjdCJfczsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYW4gT2JqZWN0
Il9zdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHR5cGVsZXNzUmVzdWx0
T2JqZWN0ID0gcmVzdWx0VHVwbGUtPmdldE9iamVjdCgicmVzdWx0Il9zKTsKKyAgICBhdXRvIHR5
cGVsZXNzUmVzdWx0T2JqZWN0ID0gcmVzdWx0VHVwbGUtPmdldE9iamVjdCgicmVzdWx0Il9zdHIp
OwogICAgIGlmICghdHlwZWxlc3NSZXN1bHRPYmplY3QpIHsKICAgICAgICAgLy8gRklYTUU6IFdo
eSBkbyB3ZSBib3RoZXIgY2hlY2tpbmcgZm9yIG51bGwgaGVyZSwgYnV0IG5vdCBjaGVja2luZyB0
aGF0IHRoZSB0eXBlIGlzIFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q/IFN1cmVseSB0
aGUgdHdvIHBvc3NpYmxlIGVycm9ycyBnbyBoYW5kIGluIGhhbmQuCi0gICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQg
d2FzVGhyb3duIGZsYWciX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9y
OiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQgd2FzVGhyb3duIGZsYWciX3N0cjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdhc1Rocm93biA9IHJlc3VsdFR1cGxlLT5n
ZXRCb29sZWFuKCJ3YXNUaHJvd24iX3MpOworICAgIHdhc1Rocm93biA9IHJlc3VsdFR1cGxlLT5n
ZXRCb29sZWFuKCJ3YXNUaHJvd24iX3N0cik7CiAgICAgaWYgKCF3YXNUaHJvd24pIHsKLSAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9m
IHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9mIHZhbHVlIGFuZCB3YXNUaHJvd24g
ZmxhZyJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgcmVzdWx0T2JqZWN0ID0g
UHJvdG9jb2w6OkJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46
OnJ1bnRpbWVDYXN0KHR5cGVsZXNzUmVzdWx0T2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOwotICAg
IHNhdmVkUmVzdWx0SW5kZXggPSByZXN1bHRUdXBsZS0+Z2V0SW50ZWdlcigic2F2ZWRSZXN1bHRJ
bmRleCJfcyk7CisgICAgc2F2ZWRSZXN1bHRJbmRleCA9IHJlc3VsdFR1cGxlLT5nZXRJbnRlZ2Vy
KCJzYXZlZFJlc3VsdEluZGV4Il9zdHIpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6
Y2hlY2tBc3luY0NhbGxSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHQsIGNvbnN0IEFz
eW5jQ2FsbENhbGxiYWNrJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBlMTNjYzcy
OWU4YmVkNDg0YjU3NTczOWEyMjFkMGM1NTdhNDFhN2M2Li4wNDBlN2RhODExOWIzNDE4Yjk4OGI2
OWM0N2MxYTI5NDQyNDc4MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcg
QEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZv
ck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2IKICAgICBpZiAoIXJlc3VsdE9iamVjdCkKICAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKLSAgICBhdXRvIGluamVjdGVkU2NyaXB0SWQg
PSByZXN1bHRPYmplY3QtPmdldEludGVnZXIoImluamVjdGVkU2NyaXB0SWQiX3MpOworICAgIGF1
dG8gaW5qZWN0ZWRTY3JpcHRJZCA9IHJlc3VsdE9iamVjdC0+Z2V0SW50ZWdlcigiaW5qZWN0ZWRT
Y3JpcHRJZCJfc3RyKTsKICAgICBpZiAoIWluamVjdGVkU2NyaXB0SWQpCiAgICAgICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCmluZGV4IDQ4MjZlNDZmZGI2MWEy
ZWQ2ZmJlODZiODk3NDEyZjQ4ZmQ1ZTlhMTEuLjM5ZjlkOTYxZWQ0MzY4ZDdhOWJiMDRhY2Y5Zjlk
MjEyZmFhYTc1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNCiAKICAgICAvLyBGSVhNRTogTWFrZSB0aGUgSW5qZWN0ZWRTY3JpcHQg
YSBtb2R1bGUgaXRzZWxmLgogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihpbmplY3RlZFNj
cmlwdC5nbG9iYWxPYmplY3QoKSk7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJoYXNJbmpl
Y3RlZE1vZHVsZSJfcywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJo
YXNJbmplY3RlZE1vZHVsZSJfc3RyLCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVu
dmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChuYW1lKCkpOwogICAgIGF1dG8gaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQgPSBpbmpl
Y3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwogICAgIEFT
U0VSVChoYXNJbmplY3RlZE1vZHVsZVJlc3VsdCk7CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogICAgIGlmICghaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4o
KSB8fCAhaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5hc0Jvb2xlYW4oKSkgewotICAg
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluamVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7
CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIl9zdHIsIGluamVj
dGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5k
bGVyKCkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwogICAgICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5n
bG9iYWxPYmplY3QoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCAxMDg4YTZh
OGYyOTY1ZTE3ZTUyZDdiYTFkMTE0MmI5ZWQ2OTdhZDNmLi45MzM3MmM4NTA1Mzk0OTk3NTBkYWE3
N2Q4ZjhmNzY2NTkxN2Q5YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMTE3
LDI4ICsxMTcsMjggQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogCiAgICAgICAgIGF1dG8gcGFyc2VkTWVzc2FnZSA9IEpTT046OlZhbHVl
OjpwYXJzZUpTT04obWVzc2FnZSk7CiAgICAgICAgIGlmICghcGFyc2VkTWVzc2FnZSkgewotICAg
ICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihQYXJzZUVycm9yLCAiTWVzc2FnZSBtdXN0IGJl
IGluIEpTT04gZm9ybWF0Il9zKTsKKyAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoUGFy
c2VFcnJvciwgIk1lc3NhZ2UgbXVzdCBiZSBpbiBKU09OIGZvcm1hdCJfc3RyKTsKICAgICAgICAg
ICAgIHNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAogICAgICAgICBtZXNzYWdlT2JqZWN0ID0gcGFyc2VkTWVzc2FnZS0+YXNPYmplY3QoKTsKICAg
ICAgICAgaWYgKCFtZXNzYWdlT2JqZWN0KSB7Ci0gICAgICAgICAgICByZXBvcnRQcm90b2NvbEVy
cm9yKEludmFsaWRSZXF1ZXN0LCAiTWVzc2FnZSBtdXN0IGJlIGEgSlNPTmlmaWVkIG9iamVjdCJf
cyk7CisgICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0LCAiTWVz
c2FnZSBtdXN0IGJlIGEgSlNPTmlmaWVkIG9iamVjdCJfc3RyKTsKICAgICAgICAgICAgIHNlbmRQ
ZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIHJlcXVlc3RJZFZhbHVlID0gbWVzc2FnZU9iamVjdC0+Z2V0VmFsdWUoImlkIl9zKTsK
KyAgICAgICAgYXV0byByZXF1ZXN0SWRWYWx1ZSA9IG1lc3NhZ2VPYmplY3QtPmdldFZhbHVlKCJp
ZCJfc3RyKTsKICAgICAgICAgaWYgKCFyZXF1ZXN0SWRWYWx1ZSkgewotICAgICAgICAgICAgcmVw
b3J0UHJvdG9jb2xFcnJvcihJbnZhbGlkUmVxdWVzdCwgIidpZCcgcHJvcGVydHkgd2FzIG5vdCBm
b3VuZCJfcyk7CisgICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0
LCAiJ2lkJyBwcm9wZXJ0eSB3YXMgbm90IGZvdW5kIl9zdHIpOwogICAgICAgICAgICAgc2VuZFBl
bmRpbmdFcnJvcnMoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IGF1dG8gcmVxdWVzdElkSW50ID0gcmVxdWVzdElkVmFsdWUtPmFzSW50ZWdlcigpOwogICAgICAg
ICBpZiAoIXJlcXVlc3RJZEludCkgewotICAgICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihJ
bnZhbGlkUmVxdWVzdCwgIlRoZSB0eXBlIG9mICdpZCcgcHJvcGVydHkgbXVzdCBiZSBpbnRlZ2Vy
Il9zKTsKKyAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJU
aGUgdHlwZSBvZiAnaWQnIHByb3BlcnR5IG11c3QgYmUgaW50ZWdlciJfc3RyKTsKICAgICAgICAg
ICAgIHNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTE1MCwyMyArMTUwLDIzIEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgLy8gV2UgY291bGQgYmUgY2FsbGVkIHJlLWVu
dHJhbnRseSBmcm9tIGEgbmVzdGVkIHJ1biBsb29wLCBzbyByZXN0b3JlIHRoZSBwcmV2aW91cyBp
ZC4KICAgICAgICAgU2V0Rm9yU2NvcGUgc2NvcGVkUmVxdWVzdElkKG1fY3VycmVudFJlcXVlc3RJ
ZCwgcmVxdWVzdElkKTsKIAotICAgICAgICBhdXRvIG1ldGhvZFZhbHVlID0gbWVzc2FnZU9iamVj
dC0+Z2V0VmFsdWUoIm1ldGhvZCJfcyk7CisgICAgICAgIGF1dG8gbWV0aG9kVmFsdWUgPSBtZXNz
YWdlT2JqZWN0LT5nZXRWYWx1ZSgibWV0aG9kIl9zdHIpOwogICAgICAgICBpZiAoIW1ldGhvZFZh
bHVlKSB7Ci0gICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0LCAi
J21ldGhvZCcgcHJvcGVydHkgd2Fzbid0IGZvdW5kIl9zKTsKKyAgICAgICAgICAgIHJlcG9ydFBy
b3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICInbWV0aG9kJyBwcm9wZXJ0eSB3YXNuJ3QgZm91
bmQiX3N0cik7CiAgICAgICAgICAgICBzZW5kUGVuZGluZ0Vycm9ycygpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBtZXRob2RTdHJpbmcgPSBtZXRob2RW
YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFtZXRob2RTdHJpbmcpIHsKLSAgICAgICAg
ICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJUaGUgdHlwZSBvZiAnbWV0
aG9kJyBwcm9wZXJ0eSBtdXN0IGJlIHN0cmluZyJfcyk7CisgICAgICAgICAgICByZXBvcnRQcm90
b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0LCAiVGhlIHR5cGUgb2YgJ21ldGhvZCcgcHJvcGVydHkg
bXVzdCBiZSBzdHJpbmciX3N0cik7CiAgICAgICAgICAgICBzZW5kUGVuZGluZ0Vycm9ycygpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZG9tYWluQW5kTWV0aG9kID0gbWV0aG9kU3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMo
Jy4nKTsKICAgICAgICAgaWYgKGRvbWFpbkFuZE1ldGhvZC5zaXplKCkgIT0gMiB8fCAhZG9tYWlu
QW5kTWV0aG9kWzBdLmxlbmd0aCgpIHx8ICFkb21haW5BbmRNZXRob2RbMV0ubGVuZ3RoKCkpIHsK
LSAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJUaGUgJ21l
dGhvZCcgcHJvcGVydHkgd2FzIGZvcm1hdHRlZCBpbmNvcnJlY3RseS4gSXQgc2hvdWxkIGJlICdE
b21haW4ubWV0aG9kJyJfcyk7CisgICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFs
aWRSZXF1ZXN0LCAiVGhlICdtZXRob2QnIHByb3BlcnR5IHdhcyBmb3JtYXR0ZWQgaW5jb3JyZWN0
bHkuIEl0IHNob3VsZCBiZSAnRG9tYWluLm1ldGhvZCciX3N0cik7CiAgICAgICAgICAgICBzZW5k
UGVuZGluZ0Vycm9ycygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMTQs
OCArMjE0LDggQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgcmVx
dWVzdElkLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHJlc3VsdCwKICAgICAvLyBUaGUgSlNPTi1SUEMg
Mi4wIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhhdCB0aGUgImVycm9yIiBtZW1iZXIgaGF2ZSB0
aGUgdmFsdWUgJ251bGwnCiAgICAgLy8gaWYgbm8gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGFuIGlu
dm9jYXRpb24sIGJ1dCB3ZSBkbyBub3QgaW5jbHVkZSBpdCBhdCBhbGwuCiAgICAgUmVmPEpTT046
Ok9iamVjdD4gcmVzcG9uc2VNZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBy
ZXNwb25zZU1lc3NhZ2UtPnNldE9iamVjdCgicmVzdWx0Il9zLCBXVEZNb3ZlKHJlc3VsdCkpOwot
ICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0SW50ZWdlcigiaWQiX3MsIHJlcXVlc3RJZCk7CisgICAg
cmVzcG9uc2VNZXNzYWdlLT5zZXRPYmplY3QoInJlc3VsdCJfc3RyLCBXVEZNb3ZlKHJlc3VsdCkp
OworICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0SW50ZWdlcigiaWQiX3N0ciwgcmVxdWVzdElkKTsK
ICAgICBtX2Zyb250ZW5kUm91dGVyLT5zZW5kUmVzcG9uc2UocmVzcG9uc2VNZXNzYWdlLT50b0pT
T05TdHJpbmcoKSk7CiB9CiAKQEAgLTI0NiwyMyArMjQ2LDIzIEBAIHZvaWQgQmFja2VuZERpc3Bh
dGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKCkKICAgICAgICAgQVNTRVJUX0FSRyhlcnJvckNvZGUs
IGVycm9yQ29kZXNbZXJyb3JDb2RlXSk7CiAKICAgICAgICAgUmVmPEpTT046Ok9iamVjdD4gZXJy
b3IgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBlcnJvci0+c2V0SW50ZWdlcigi
Y29kZSJfcywgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKLSAgICAgICAgZXJyb3ItPnNldFN0cmlu
ZygibWVzc2FnZSJfcywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgZXJyb3ItPnNldEludGVnZXIo
ImNvZGUiX3N0ciwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKKyAgICAgICAgZXJyb3ItPnNldFN0
cmluZygibWVzc2FnZSJfc3RyLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICBwYXlsb2FkLT5wdXNo
T2JqZWN0KFdURk1vdmUoZXJyb3IpKTsKICAgICB9CiAKICAgICBSZWY8SlNPTjo6T2JqZWN0PiB0
b3BMZXZlbEVycm9yID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICB0b3BMZXZlbEVycm9y
LT5zZXRJbnRlZ2VyKCJjb2RlIl9zLCBlcnJvckNvZGVzW2Vycm9yQ29kZV0pOwotICAgIHRvcExl
dmVsRXJyb3ItPnNldFN0cmluZygibWVzc2FnZSJfcywgZXJyb3JNZXNzYWdlKTsKLSAgICB0b3BM
ZXZlbEVycm9yLT5zZXRBcnJheSgiZGF0YSJfcywgV1RGTW92ZShwYXlsb2FkKSk7CisgICAgdG9w
TGV2ZWxFcnJvci0+c2V0SW50ZWdlcigiY29kZSJfc3RyLCBlcnJvckNvZGVzW2Vycm9yQ29kZV0p
OworICAgIHRvcExldmVsRXJyb3ItPnNldFN0cmluZygibWVzc2FnZSJfc3RyLCBlcnJvck1lc3Nh
Z2UpOworICAgIHRvcExldmVsRXJyb3ItPnNldEFycmF5KCJkYXRhIl9zdHIsIFdURk1vdmUocGF5
bG9hZCkpOwogCiAgICAgUmVmPEpTT046Ok9iamVjdD4gbWVzc2FnZSA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgbWVzc2FnZS0+c2V0T2JqZWN0KCJlcnJvciJfcywgV1RGTW92ZSh0b3BM
ZXZlbEVycm9yKSk7CisgICAgbWVzc2FnZS0+c2V0T2JqZWN0KCJlcnJvciJfc3RyLCBXVEZNb3Zl
KHRvcExldmVsRXJyb3IpKTsKICAgICBpZiAobV9jdXJyZW50UmVxdWVzdElkKQotICAgICAgICBt
ZXNzYWdlLT5zZXRJbnRlZ2VyKCJpZCJfcywgbV9jdXJyZW50UmVxdWVzdElkLnZhbHVlKCkpOwor
ICAgICAgICBtZXNzYWdlLT5zZXRJbnRlZ2VyKCJpZCJfc3RyLCBtX2N1cnJlbnRSZXF1ZXN0SWQu
dmFsdWUoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFRoZSAnbnVsbCcgdmFsdWUgZm9yIGFu
IHVua25vd24gaWQgaXMgc3BlY2lmaWVkIGluIEpTT04tUlBDIDIuMCwgU2VjdGlvbiA1LgotICAg
ICAgICBtZXNzYWdlLT5zZXRWYWx1ZSgiaWQiX3MsIEpTT046OlZhbHVlOjpudWxsKCkpOworICAg
ICAgICBtZXNzYWdlLT5zZXRWYWx1ZSgiaWQiX3N0ciwgSlNPTjo6VmFsdWU6Om51bGwoKSk7CiAg
ICAgfQogCiAgICAgbV9mcm9udGVuZFJvdXRlci0+c2VuZFJlc3BvbnNlKG1lc3NhZ2UtPnRvSlNP
TlN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcAppbmRleCBmMDZmZjAzYmUw
ZmUyNzJlMDhhNDZjODRiMGU4MTMyM2FjMDZmOTBiLi4yMjcwNjg4ZGZkNTFhZjU4OWFjNjIyMjg2
MjM5NjU5NDkzMzFiNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCkBAIC0xMDIs
NyArMTAyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGkKICAgICAgICAgZm9yIChhdXRvJiBl
eGlzdGluZ1RpdGxlIDogbV9wcm9maWxlcykgewogICAgICAgICAgICAgaWYgKGV4aXN0aW5nVGl0
bGUgPT0gdGl0bGUpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRv
IHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwotICAgICAgICAgICAgICAgIFN0cmluZyB3
YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0
cyJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCBTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRl
U3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UodGl0bGUpLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKKyAg
ICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJVbm5hbWVk
IFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3N0ciA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCBT
Y3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UodGl0bGUpLCAi
XCIgYWxyZWFkeSBleGlzdHMiKTsKICAgICAgICAgICAgICAgICBtX2NvbnNvbGVBZ2VudC0+YWRk
TWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5n
LCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAt
MTMwLDcgKzEzMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxl
RW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmCiAgICAgfQogCiAgICAgLy8g
RklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KLSAg
ICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJf
cyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7
CisgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhp
c3QiX3N0ciA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4
aXN0Iik7CiAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogfQogCkBAIC0x
OTEsNyArMTkxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnRpbWVTdGFt
cChKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHMKICAgICBpZiAoTElLRUxZKCFt
X2NvbnNvbGVBZ2VudC0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgd2FyblVuaW1wbGVtZW50ZWQoImNvbnNvbGUudGltZVN0YW1wIl9zKTsKKyAgICB3
YXJuVW5pbXBsZW1lbnRlZCgiY29uc29sZS50aW1lU3RhbXAiX3N0cik7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpyZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2Ny
aXB0QXJndW1lbnRzPiYmKQpAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50OjpyZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRz
PiYmCiAgICAgaWYgKExJS0VMWSghbV9jb25zb2xlQWdlbnQtPmRldmVsb3BlckV4dHJhc0VuYWJs
ZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xl
LnJlY29yZCJfcyk7CisgICAgd2FyblVuaW1wbGVtZW50ZWQoImNvbnNvbGUucmVjb3JkIl9zdHIp
OwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTR2xv
YmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikKQEAgLTIwNyw3ICsyMDcsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTR2xvYmFsT2JqZWN0
KiwgUmVmPFNjcmlwdEFyZ3VtZW50cwogICAgIGlmIChMSUtFTFkoIW1fY29uc29sZUFnZW50LT5k
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICB3YXJuVW5p
bXBsZW1lbnRlZCgiY29uc29sZS5yZWNvcmRFbmQiX3MpOworICAgIHdhcm5VbmltcGxlbWVudGVk
KCJjb25zb2xlLnJlY29yZEVuZCJfc3RyKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQ6OnNjcmVlbnNob3QoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRz
PiYmKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
OjpzY3JlZW5zaG90KEpTR2xvYmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50CiAgICAgaWYg
KExJS0VMWSghbV9jb25zb2xlQWdlbnQtPmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xlLnNjcmVlbnNob3Qi
X3MpOworICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xlLnNjcmVlbnNob3QiX3N0cik7CiB9
CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp3YXJuVW5pbXBsZW1lbnRlZChj
b25zdCBTdHJpbmcmIG1ldGhvZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCA2YWUxNzkzOWY0ODg1OGQ2MDQ2Yzk1OTI5MmQzNmNmYmM2MzQ3MWYxLi5lYzRl
OGU5NzZmN2ZmN2UwOTY5YjVkZjQ0MDQ0MTUwYjExODUyN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xNjMsOSArMTYzLDkgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEFQSUJhY2t0cmFjZShTY3JpcHRDYWxs
U3RhY2smIGNhbGwKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBhdXRvIGRlbWFuZ2xlZCA9IFN0YWNrVHJhY2U6OmRlbWFuZ2xlKHN0YWNrW2ldKTsKICAgICAg
ICAgaWYgKGRlbWFuZ2xlZCkKLSAgICAgICAgICAgIGNhbGxTdGFjay5hcHBlbmQoU2NyaXB0Q2Fs
bEZyYW1lKGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpID8gZGVtYW5nbGVkLT5kZW1hbmdsZWRO
YW1lKCkgOiBkZW1hbmdsZWQtPm1hbmdsZWROYW1lKCksICJbbmF0aXZlIGNvZGVdIl9zLCBub1Nv
dXJjZUlELCAwLCAwKSk7CisgICAgICAgICAgICBjYWxsU3RhY2suYXBwZW5kKFNjcmlwdENhbGxG
cmFtZShkZW1hbmdsZWQtPmRlbWFuZ2xlZE5hbWUoKSA/IGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFt
ZSgpIDogZGVtYW5nbGVkLT5tYW5nbGVkTmFtZSgpLCAiW25hdGl2ZSBjb2RlXSJfc3RyLCBub1Nv
dXJjZUlELCAwLCAwKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxTdGFjay5hcHBl
bmQoU2NyaXB0Q2FsbEZyYW1lKCI/Il9zLCAiW25hdGl2ZSBjb2RlXSJfcywgbm9Tb3VyY2VJRCwg
MCwgMCkpOworICAgICAgICAgICAgY2FsbFN0YWNrLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoIj8i
X3N0ciwgIltuYXRpdmUgY29kZV0iX3N0ciwgbm9Tb3VyY2VJRCwgMCwgMCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAppbmRleCA3OGU3NzM0ZTI2MzliN2U5ODhiZDk0NTliMDc2YmY3YmNl
NGMwNzFlLi44ZDhhMjAwYzEzMTVkZGFkOWJkYzljOTY1YjZhZDQxMTI1ZGQxYjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhv
c3Q6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAK
ICAgICBKU1ZhbHVlIHNjcmlwdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcuIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbmplY3RlZFNj
cmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBi
ZSBhIHN0cmluZy4iX3N0cik7CiAKICAgICBTdHJpbmcgcHJvZ3JhbSA9IGFzU3RyaW5nKHNjcmlw
dFZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNj
cmlwdEhvc3Q6OmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihKU0ds
b2JhCiAKICAgICBhdXRvKiBwcm9taXNlID0ganNEeW5hbWljQ2FzdDxKU1Byb21pc2UqPih2bSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9taXNlKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkluamVjdGVkU2NyaXB0SG9z
dC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IgZmlyc3QgYXJndW1l
bnQgbXVzdCBiZSBhIFByb21pc2UuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0
ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBQcm9t
aXNlLiJfc3RyKTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIGVy
cm9ySW5zdGFuY2UgPSBqc0R5bmFtaWNDYXN0PEVycm9ySW5zdGFuY2UqPih2bSwgcHJvbWlzZS0+
cmVzdWx0KHZtKSkpCkBAIC0xODQsNDEgKzE4NCw0MSBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpzdWJ0eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
YwogCiAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwg
dmFsdWUpKSB7CiAgICAgICAgIGlmIChvYmplY3QtPmlzRXJyb3JJbnN0YW5jZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVycm9yIl9zKTsKKyAgICAgICAg
ICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJlcnJvciJfc3RyKTsKIAogICAgICAg
ICAvLyBDb25zaWRlciBjbGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgY2xhc3Mgb2JqZWN0cy4K
ICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24q
Pih2bSwgdmFsdWUpOwogICAgICAgICBpZiAoZnVuY3Rpb24gJiYgZnVuY3Rpb24tPmlzQ2xhc3ND
b25zdHJ1Y3RvckZ1bmN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiY2xhc3MiX3MpOworICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImNsYXNzIl9zdHIpOwogCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTQXJy
YXk+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJhcnJh
eSJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXJyYXki
X3N0cik7CiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPERpcmVjdEFyZ3VtZW50cz4odm0p
IHx8IG9iamVjdC0+aW5oZXJpdHM8U2NvcGVkQXJndW1lbnRzPih2bSkpCi0gICAgICAgICAgICBy
ZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXJyYXkiX3MpOworICAgICAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImFycmF5Il9zdHIpOwogCiAgICAgICAgIGlmIChv
YmplY3QtPmluaGVyaXRzPERhdGVJbnN0YW5jZT4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgImRhdGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgImRhdGUiX3N0cik7CiAgICAgICAgIGlmIChvYmplY3QtPmluaGVy
aXRzPFJlZ0V4cE9iamVjdD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgInJlZ2V4cCJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAicmVnZXhwIl9zdHIpOwogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxQcm94
eU9iamVjdD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
InByb3h5Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJw
cm94eSJfc3RyKTsKIAogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU01hcD4odm0pKQot
ICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm1hcCJfcyk7CisgICAg
ICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAibWFwIl9zdHIpOwogICAgICAg
ICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1NldD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgInNldCJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250
cml2aWFsU3RyaW5nKHZtLCAic2V0Il9zdHIpOwogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0
czxKU1dlYWtNYXA+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJ3ZWFrbWFwIl9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJ3ZWFrbWFwIl9zdHIpOwogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1dlYWtT
ZXQ+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJ3ZWFr
c2V0Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJ3ZWFr
c2V0Il9zdHIpOwogCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTU3RyaW5nSXRlcmF0
b3I+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJpdGVy
YXRvciJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiaXRl
cmF0b3IiX3N0cik7CiAKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8SlNBcnJheUl0ZXJh
dG9yPih2bSkKICAgICAgICAgICAgIHx8IG9iamVjdC0+aW5oZXJpdHM8SlNNYXBJdGVyYXRvcj4o
dm0pCiAgICAgICAgICAgICB8fCBvYmplY3QtPmluaGVyaXRzPEpTU2V0SXRlcmF0b3I+KHZtKSkK
LSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJpdGVyYXRvciJfcyk7
CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiaXRlcmF0b3IiX3N0
cik7CiAKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8SlNJbnQ4QXJyYXk+KHZtKQogICAg
ICAgICAgICAgfHwgb2JqZWN0LT5pbmhlcml0czxKU0ludDE2QXJyYXk+KHZtKQpAQCAtMjMxLDcg
KzIzMSw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnN1YnR5cGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB8fCBvYmplY3Qt
PmluaGVyaXRzPEpTRmxvYXQ2NEFycmF5Pih2bSkKICAgICAgICAgICAgIHx8IG9iamVjdC0+aW5o
ZXJpdHM8SlNCaWdJbnQ2NEFycmF5Pih2bSkKICAgICAgICAgICAgIHx8IG9iamVjdC0+aW5oZXJp
dHM8SlNCaWdVaW50NjRBcnJheT4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgImFycmF5Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJhcnJheSJfc3RyKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1wbCgpLnN1YnR5
cGUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CkBAIC0zMTMsMTkgKzMxMywxOSBAQCBKU1ZhbHVlIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgICAgICBzd2l0Y2ggKHByb21pc2UtPnN0YXR1cyh2bSkpIHsKICAg
ICAgICAgY2FzZSBKU1Byb21pc2U6OlN0YXR1czo6UGVuZGluZzoKICAgICAgICAgICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCAic3Rh
dHVzIl9zLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJwZW5kaW5nIl9zKSkpOworICAgICAgICAg
ICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgY29uc3RydWN0
SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJzdGF0dXMiX3N0ciwganNOb250cml2aWFs
U3RyaW5nKHZtLCAicGVuZGluZyJfc3RyKSkpOwogICAgICAgICAgICAgcmV0dXJuIGFycmF5Owog
ICAgICAgICBjYXNlIEpTUHJvbWlzZTo6U3RhdHVzOjpGdWxmaWxsZWQ6Ci0gICAgICAgICAgICBh
cnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRl
cm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInN0YXR1cyJfcywganNOb250cml2aWFsU3RyaW5n
KHZtLCAicmVzb2x2ZWQiX3MpKSk7CisgICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9i
amVjdCwgInN0YXR1cyJfc3RyLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJyZXNvbHZlZCJfc3Ry
KSkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsK
ICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGFycmF5LT5wdXREaXJl
Y3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHko
Z2xvYmFsT2JqZWN0LCAicmVzdWx0Il9zLCBwcm9taXNlLT5yZXN1bHQodm0pKSk7CisgICAgICAg
ICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1
Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInJlc3VsdCJfc3RyLCBwcm9taXNlLT5y
ZXN1bHQodm0pKSk7CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIGNhc2UgSlNQ
cm9taXNlOjpTdGF0dXM6OlJlamVjdGVkOgotICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9i
YWxPYmplY3QsICJzdGF0dXMiX3MsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInJlamVjdGVkIl9z
KSkpOworICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5k
ZXgrKywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJzdGF0dXMiX3N0
ciwganNOb250cml2aWFsU3RyaW5nKHZtLCAicmVqZWN0ZWQiX3N0cikpKTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInJl
c3VsdCJfcywgcHJvbWlzZS0+cmVzdWx0KHZtKSkpOworICAgICAgICAgICAgYXJyYXktPnB1dERp
cmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0
eShnbG9iYWxPYmplY3QsICJyZXN1bHQiX3N0ciwgcHJvbWlzZS0+cmVzdWx0KHZtKSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTQxNjY0PiBXZWIgSW5zcGVjdG9yOiBFUzY6IEltcHJvdmVkIFN1
cHBvcnQgZm9yIFByb21pc2VzIC0gUHJvbWlzZSBSZWFjdGlvbnMKQEAgLTM1MSw3ICszNTEsNyBA
QCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAg
ICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3Qs
IG51bGxwdHIsIDEpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwotICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsr
LCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInRhcmdldEZ1bmN0aW9u
Il9zLCByZW1vdGVGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSkpOworICAgICAgICBhcnJheS0+
cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFBy
b3BlcnR5KGdsb2JhbE9iamVjdCwgInRhcmdldEZ1bmN0aW9uIl9zdHIsIHJlbW90ZUZ1bmN0aW9u
LT50YXJnZXRGdW5jdGlvbigpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWUoKSk7CiAKICAgICAgICAgcmV0dXJuIGFycmF5OwpAQCAtMzYxLDEwICszNjEsMTAg
QEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwog
ICAgICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0
LCBudWxscHRyLCAyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKLSAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgr
KywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJ0YXJnZXQiX3MsIHBy
b3h5LT50YXJnZXQoKSkpOworICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInRh
cmdldCJfc3RyLCBwcm94eS0+dGFyZ2V0KCkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBh
cnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRl
cm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgImhhbmRsZXIiX3MsIHByb3h5LT5oYW5kbGVyKCkp
KTsKKyAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywg
Y29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJoYW5kbGVyIl9zdHIsIHBy
b3h5LT5oYW5kbGVyKCkpKTsKICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgIH0KIApAQCAtMzcy
LDEzICszNzIsMTMgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQ
cm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgYXV0byB0b1N0
cmluZyA9IFsmXSAoSXRlcmF0aW9uS2luZCBraW5kKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGtp
bmQpIHsKICAgICAgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6S2V5czoKLSAgICAgICAgICAg
ICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAia2V5cyJfcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImtleXMiX3N0cik7CiAgICAgICAg
ICAgICBjYXNlIEl0ZXJhdGlvbktpbmQ6OlZhbHVlczoKLSAgICAgICAgICAgICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKHZtLCAidmFsdWVzIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAidmFsdWVzIl9zdHIpOwogICAgICAgICAgICAgY2Fz
ZSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOgotICAgICAgICAgICAgICAgIHJldHVybiBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJlbnRyaWVzIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKHZtLCAiZW50cmllcyJfc3RyKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICIiX3MpOworICAgICAgICAgICAg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIiJfc3RyKTsKICAgICAgICAgfTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChhdXRvKiBhcnJheUl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0Fy
cmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3JPYmplY3QpKSB7CkBAIC02NDksMTEgKzY0OSwxMSBA
QCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhbmNlcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogCiAgICAgSlNWYWx1ZSBwcm90b3R5cGVPckNvbnN0
cnVjdG9yID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBpZiAoIXByb3Rv
dHlwZU9yQ29uc3RydWN0b3IuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBmaXJzdCBhcmd1bWVudCBt
dXN0IGJlIGFuIG9iamVjdC4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2VzIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUg
YW4gb2JqZWN0LiJfc3RyKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChwcm90
b3R5cGVPckNvbnN0cnVjdG9yKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxQcm94eU9iamVj
dD4odm0pKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBhIFByb3h5LiJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJ
bnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIGEgUHJveHkuIl9zdHIpOwogCiAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSBvYmplY3Q7CiAKQEAgLTY3MSwyMSArNjcxLDIxIEBAIEpTVmFsdWUg
SlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGFuY2VzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGCiAgICAgcHJvdG90eXBlU2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQo
KTsKIAogICAgIGlmIChvYmplY3QtPmluaGVyaXRzPFByb3h5T2JqZWN0Pih2bSkgfHwgcHJvdG90
eXBlLmluaGVyaXRzPFByb3h5T2JqZWN0Pih2bSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxl
ZCB3aXRoIGEgUHJveHkuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYSBQ
cm94eS4iX3N0cik7CiAKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IGEgd2F5IG9mIGRpc3Rpbmd1
aXNoaW5nIGJldHdlZW4gaW50ZXJuYWwgYW5kIHVzZXItY3JlYXRlZCBvYmplY3RzLgogICAgIGlm
IChjaGVja0ZvcmJpZGRlblByb3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRo
IE9iamVjdC4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBPYmplY3QuIl9z
dHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRlblByb3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3Qg
YmUgY2FsbGVkIHdpdGggRnVuY3Rpb24uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVk
IHdpdGggRnVuY3Rpb24uIl9zdHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRlblByb3RvdHlwZShn
bG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUlu
c3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggQXJyYXkuIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5u
b3QgYmUgY2FsbGVkIHdpdGggQXJyYXkuIl9zdHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRlblBy
b3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2JqZWN0LT5tYXBQcm90b3R5cGUo
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
cXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIE1hcC4iX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2Vz
IGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBNYXAuIl9zdHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRl
blByb3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2JqZWN0LT5qc1NldFByb3Rv
dHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggU2V0LiJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0
YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIFNldC4iX3N0cik7CiAgICAgaWYgKGNoZWNrRm9y
YmlkZGVuUHJvdG90eXBlKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21p
c2VQcm90b3R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIFByb21pc2Uu
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggUHJvbWlzZS4iX3N0cik7CiAK
ICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0odm0pOwogICAgIHZtLmhlYXAuY29sbGVjdE5vdyhTeW5j
LCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwpAQCAtODU3LDcgKzg1Nyw3IEBAIEpTVmFsdWUgSlNJ
bmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SG9sZGVycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUhvbGRlcnMgZmlyc3Qg
YXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUhvbGRlcnMgZmlyc3QgYXJndW1lbnQg
bXVzdCBiZSBhbiBvYmplY3QuIl9zdHIpOwogCiAgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKaW5kZXggMjg5OGNkZmViOTllZWFh
YzkzZTI2ZWEwNjkyY2Q3MTIxZWM3ODYxMi4uYjhiMDliMGQ3ZDRhMzU0MzlhYmFmMWEyYTFjOGQy
Yzk2MzgxOGQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcApAQCAtNzgsNyArNzgsNyBAQCBKU1ZhbHVl
IEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbAogCiAgICAgSlNWYWx1ZSBzY3JpcHRWYWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzY3JpcHRWYWx1ZS5pc1N0cmluZygpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkpTSmF2YVNjcmlwdENh
bGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJl
IGEgc3RyaW5nLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcuIl9zdHIpOwogCiAgICAgU3RyaW5n
IHNjcmlwdCA9IGFzU3RyaW5nKHNjcmlwdFZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwpAQCAtMjE5LDkgKzIxOSw5
IEBAIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0eXBlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IHN3aXRjaCAoaW1wbCgpLnR5cGUoKSkgewogICAgIGNhc2UgRGVidWdnZXJDYWxsRnJhbWU6OkZ1
bmN0aW9uVHlwZToKLSAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImZ1bmN0
aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImZ1bmN0aW9u
Il9zdHIpOwogICAgIGNhc2UgRGVidWdnZXJDYWxsRnJhbWU6OlByb2dyYW1UeXBlOgotICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAicHJvZ3JhbSJfcyk7CisgICAgICAgIHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJwcm9ncmFtIl9zdHIpOwogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCmluZGV4IGMxNGVmOGEzMTJmYTJmNjM2NTc5MTFk
MzlmOWMzYjE5MmU1OThhODUuLjdmZWQyZGY4YzRjMTcwZWI1MjE0ZjBmZTRjZjhhMGZmMDVmMWU5
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJn
dW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBTY3JpcHRBcmd1bWVudHM6OmdldEZp
cnN0QXJndW1lbnRBc1N0cmluZyhTdHJpbmcmIHJlc3VsdCkgY29uc3QKIAogICAgIGF1dG8gdmFs
dWUgPSBhcmd1bWVudEF0KDApOwogICAgIGlmIChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpQcm94
eU9iamVjdCo+KGdsb2JhbE9iamVjdC0+dm0oKSwgdmFsdWUpKSB7Ci0gICAgICAgIHJlc3VsdCA9
ICJbb2JqZWN0IFByb3h5XSJfczsKKyAgICAgICAgcmVzdWx0ID0gIltvYmplY3QgUHJveHldIl9z
dHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5k
ZXggNDFhY2M4NTdjNjc2OGM5ZjZiYTk4MzBhNzFhYTAyZmE5MzQ3NmY5YS4uNjkxMjIxMDlmZDUw
YzNjMTk1ZjhlYjM1NmU4NGNiNjExNDNhMzY4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0x
NDQsNyArMTQ0LDcgQEAgc3RhdGljIGJvb2wgZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4
Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICB9CiAgICAgCiAgICAg
aWYgKHNvdXJjZVVSTC0+aXNFbXB0eSgpKQotICAgICAgICAqc291cmNlVVJMID0gInVuZGVmaW5l
ZCJfczsKKyAgICAgICAgKnNvdXJjZVVSTCA9ICJ1bmRlZmluZWQiX3N0cjsKICAgICAKICAgICBz
Y29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHAKaW5kZXggODY4NmQ2OTQxYjc4NDc5OTViMmRmZmRkNjc4YjY2ZDNiNDgxZGRiNS4uMTM0M2Iy
MWE4NzQ0ZjFhMGEzMzU3NWIzMmU4MmU0MjZkZTI3ZGY0YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApA
QCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvckFnZW50
OjpJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCi0gICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoIkluc3BlY3RvciJfcykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSW5zcGVj
dG9yIl9zdHIpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiAgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IDMwYWNhZjMzNDU4
MDUzNzRkODFkYmIwYjFjNWQ0OWZmN2FmMGE2ZTEuLjZlYmNkZTI2OTI4ZTYxZTdiOGEwMTgyOWZi
YjIwMzkxZmM1ZjRmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogSW5z
cGVjdG9yQXVkaXRBZ2VudDo6SW5zcGVjdG9yQXVkaXRBZ2VudChBZ2VudENvbnRleHQmIGNvbnRl
eHQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkF1ZGl0Il9zKQorICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJBdWRpdCJfc3RyKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihBdWRpdEJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFu
YWdlcikKICAgICAsIG1fZGVidWdnZXIoY29udGV4dC5lbnZpcm9ubWVudC5kZWJ1Z2dlcigpKQpA
QCAtNjEsNyArNjEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JB
dWRpdEFnZW50OjpzZXR1cChzdGQ6Om9wdGlvbmFsPFByb3RvY29sOgogICAgIFByb3RvY29sOjpF
cnJvclN0cmluZyBlcnJvclN0cmluZzsKIAogICAgIGlmIChoYXNBY3RpdmVBdWRpdCgpKQotICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk11c3QgY2FsbCB0ZWFyZG93biBiZWZvcmUgY2Fs
bGluZyBzZXR1cCBhZ2FpbiJfcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTXVz
dCBjYWxsIHRlYXJkb3duIGJlZm9yZSBjYWxsaW5nIHNldHVwIGFnYWluIl9zdHIpOwogCiAgICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvckV2YWwoZXJy
b3JTdHJpbmcsIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSk7CiAgICAgaWYgKGluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkKQEAgLTY5LDcgKzY5LDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yQXVkaXRBZ2VudDo6c2V0dXAoc3RkOjpvcHRpb25hbDxQcm90
b2NvbDoKIAogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGluamVjdGVk
U2NyaXB0Lmdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgZXhlY3V0aW9uIHN0YXRlIG9mIGluamVjdGVk
IHNjcmlwdCBmb3IgZ2l2ZW4gZXhlY3V0aW9uQ29udGV4dElkIl9zKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5nIGV4ZWN1dGlvbiBzdGF0ZSBvZiBpbmplY3RlZCBzY3Jp
cHQgZm9yIGdpdmVuIGV4ZWN1dGlvbkNvbnRleHRJZCJfc3RyKTsKIAogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKIApAQCAtNzcsNyArNzcsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JBdWRpdEFnZW50OjpzZXR1cChzdGQ6Om9wdGlvbmFsPFByb3Rv
Y29sOgogCiAgICAgbV9pbmplY3RlZFdlYkluc3BlY3RvckF1ZGl0VmFsdWUuc2V0KHZtLCBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpKTsKICAgICBpZiAoIW1faW5qZWN0ZWRXZWJJ
bnNwZWN0b3JBdWRpdFZhbHVlKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJs
ZSB0byBjb25zdHJ1Y3QgaW5qZWN0ZWQgV2ViSW5zcGVjdG9yQXVkaXQgb2JqZWN0LiJfcyk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGNvbnN0cnVjdCBpbmplY3Rl
ZCBXZWJJbnNwZWN0b3JBdWRpdCBvYmplY3QuIl9zdHIpOwogCiAgICAgcG9wdWxhdGVBdWRpdE9i
amVjdChnbG9iYWxPYmplY3QsIG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlKTsKIApA
QCAtOTUsNyArOTUsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcAogICAgIGF1dG8gZnVuY3Rp
b25TdHJpbmcgPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oV2ViSW5zcGVjdG9yQXVkaXQpIHsgXCJ1
c2Ugc3RyaWN0XCI7IHJldHVybiBldmFsKGAoIiwgU3RyaW5nIHsgdGVzdCB9LnJlcGxhY2UoJ2An
LCAiXFxgIiksICIpYCkoV2ViSW5zcGVjdG9yQXVkaXQpOyB9KSIpOwogCiAgICAgSW5qZWN0ZWRT
Y3JpcHQ6OkV4ZWN1dGVPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5vYmplY3RHcm91cCA9
ICJhdWRpdCJfczsKKyAgICBvcHRpb25zLm9iamVjdEdyb3VwID0gImF1ZGl0Il9zdHI7CiAgICAg
aWYgKG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlKQogICAgICAgICBvcHRpb25zLmFy
Z3MgPSB7IG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlLmdldCgpIH07CiAKQEAgLTEy
MSw3ICsxMjEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcAogUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yQXVkaXRBZ2VudDo6dGVhcmRvd24oKQogewogICAgIGlmICgh
aGFzQWN0aXZlQXVkaXQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJNdXN0IGNh
bGwgc2V0dXAgYmVmb3JlIGNhbGxpbmcgdGVhcmRvd24iX3MpOworICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIk11c3QgY2FsbCBzZXR1cCBiZWZvcmUgY2FsbGluZyB0ZWFyZG93biJfc3Ry
KTsKIAogICAgIG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlLmNsZWFyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKaW5kZXgg
YTYxODNiMGQ3MjRmOWZjZGZlNTQyZDQyZTlmMWFkNjZjNzFjMTgzNi4uOWE0OTc4Yjc4MGQyYTYw
NGNjYzU5NzZhN2U5ZDQ0ZTFhNmY3ZTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKQEAgLTI4MCwxMSArMjgwLDExIEBAIFN0cmluZyBD
YWxsRnJhbWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1lKCkKIAogICAgIHN3aXRjaCAoY29kZUJsb2Nr
LT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBFdmFsQ29kZToKLSAgICAgICAgcmV0dXJuICJldmFs
IGNvZGUiX3M7CisgICAgICAgIHJldHVybiAiZXZhbCBjb2RlIl9zdHI7CiAgICAgY2FzZSBNb2R1
bGVDb2RlOgotICAgICAgICByZXR1cm4gIm1vZHVsZSBjb2RlIl9zOworICAgICAgICByZXR1cm4g
Im1vZHVsZSBjb2RlIl9zdHI7CiAgICAgY2FzZSBHbG9iYWxDb2RlOgotICAgICAgICByZXR1cm4g
Imdsb2JhbCBjb2RlIl9zOworICAgICAgICByZXR1cm4gImdsb2JhbCBjb2RlIl9zdHI7CiAgICAg
Y2FzZSBGdW5jdGlvbkNvZGU6CiAgICAgICAgIGlmIChqc0NhbGxlZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjb2RlQmxvY2stPnZtKCksIGpzQ2FsbGVl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRv
d0NoaWNrZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0No
aWNrZW4uY3BwCmluZGV4IDc2YjRjNjU4MDlmNDUxZGY3OTYwYzkzMzlmNmYyMGVhNGVhYmMwZmMu
LjM3Zjk2ZTkyYjU2NjNiY2U1YWUxYmU4NzE0Yjk5YjU0ZGUyMzc3YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKQEAgLTQ1
LDExICs0NSwxMSBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogICAgIH0KICAgICAKICAgICBpZiAoaXNQcm9sb2d1ZSgpKSB7Ci0gICAg
ICAgIFN0cmluZyBuYW1lID0gIj8iX3M7CisgICAgICAgIFN0cmluZyBuYW1lID0gIj8iX3N0cjsK
ICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4o
Y2FsbGVlLT52bSgpLCBjYWxsZWUpKSB7CiAgICAgICAgICAgICBuYW1lID0gZnVuY3Rpb24tPm5h
bWUoY2FsbGVlLT52bSgpKTsKICAgICAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgICAgICBuYW1lID0gIj8iX3M7CisgICAgICAgICAgICAgICAgbmFtZSA9ICI/Il9zdHI7
CiAgICAgICAgIH0KIAogICAgICAgICBvdXQucHJpbnQoCkBAIC02OSwxMSArNjksMTEgQEAgdm9p
ZCBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIAog
dm9pZCBTaGFkb3dDaGlja2VuOjpGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewotICAgIFN0cmluZyBuYW1lID0gIj8iX3M7CisgICAgU3RyaW5nIG5hbWUgPSAiPyJfc3RyOwog
ICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxl
ZS0+dm0oKSwgY2FsbGVlKSkgewogICAgICAgICBuYW1lID0gZnVuY3Rpb24tPm5hbWUoY2FsbGVl
LT52bSgpKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9
ICI/Il9zOworICAgICAgICAgICAgbmFtZSA9ICI/Il9zdHI7CiAgICAgfQogCiAgICAgb3V0LnBy
aW50KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNr
VmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmNwcAppbmRleCA4OTIxYmJiMTc3OTAzODc2MDA3ZmU3ODQ0MmRlOTE4NDc5ZDA5N2IxLi41
YjI5NGVlNjc1ZTg4ZjY4MDkyZmUxOGQ3ZDQzNTM2MDkxYWFmYzcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMjg4LDEw
ICsyODgsMTAgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSgpIGNv
bnN0CiAgICAgICAgIHRyYWNlTGluZSA9IG1ha2VTdHJpbmcobV93YXNtRnVuY3Rpb25JbmRleE9y
TmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZVR5cGU6OkV2YWw6Ci0gICAgICAg
IHRyYWNlTGluZSA9ICJldmFsIGNvZGUiX3M7CisgICAgICAgIHRyYWNlTGluZSA9ICJldmFsIGNv
ZGUiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlVHlwZTo6TW9kdWxlOgotICAg
ICAgICB0cmFjZUxpbmUgPSAibW9kdWxlIGNvZGUiX3M7CisgICAgICAgIHRyYWNlTGluZSA9ICJt
b2R1bGUgY29kZSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVUeXBlOjpOYXRp
dmU6IHsKICAgICAgICAgSlNDZWxsKiBjYWxsZWUgPSB0aGlzLT5jYWxsZWUoKS5hc0NlbGwoKTsK
QEAgLTMwMyw3ICszMDMsNyBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rpb25O
YW1lKCkgY29uc3QKICAgICAgICAgdHJhY2VMaW5lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1l
KGNhbGxGcmFtZSgpLT5kZXByZWNhdGVkVk0oKSwganNDYXN0PEpTT2JqZWN0Kj4odGhpcy0+Y2Fs
bGVlKCkuYXNDZWxsKCkpKS5pbXBsKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZVR5
cGU6Okdsb2JhbDoKLSAgICAgICAgdHJhY2VMaW5lID0gImdsb2JhbCBjb2RlIl9zOworICAgICAg
ICB0cmFjZUxpbmUgPSAiZ2xvYmFsIGNvZGUiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIHJldHVybiB0cmFjZUxpbmUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogdHJhY2VMaW5l
OwpAQCAtMzI0LDEwICszMjQsMTAgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJj
ZVVSTCgpIGNvbnN0CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvZGVUeXBlOjpO
YXRpdmU6Ci0gICAgICAgIHRyYWNlTGluZSA9ICJbbmF0aXZlIGNvZGVdIl9zOworICAgICAgICB0
cmFjZUxpbmUgPSAiW25hdGl2ZSBjb2RlXSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvZGVUeXBlOjpXYXNtOgotICAgICAgICB0cmFjZUxpbmUgPSAiW3dhc20gY29kZV0iX3M7Cisg
ICAgICAgIHRyYWNlTGluZSA9ICJbd2FzbSBjb2RlXSJfc3RyOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgcmV0dXJuIHRyYWNlTGluZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB0cmFj
ZUxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZTljMGVjYzMwZWFjYzY4YzU1
OWY4YWM0NjNlMTA2MjIzMWRkZWI2YS4uNDlkOTQxZTBiNzdlMWI4YTc1MTdlNzc4MDk3NmMzMTA0
MDY0ODBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMTAzNyw3ICsxMDM3LDcg
QEAgdm9pZCBKSVQ6OmRvTWFpblRocmVhZFByZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgpCiB7CiAg
ICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1cCB0byBkYXRlIHR5cGUg
aW5mb3JtYXRpb24gd2hlbiBwZXJmb3JtaW5nIHR5cGVjaGVjayBvcHRpbWl6YXRpb25zIGZvciBv
cF9wcm9maWxlX3R5cGUuCiAgICAgaWYgKG1fdm0tPnR5cGVQcm9maWxlcigpKQotICAgICAgICBt
X3ZtLT50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoKm1fdm0sICJQcmVwYXJp
bmcgZm9yIEpJVCBjb21waWxhdGlvbi4iX3MpOworICAgICAgICBtX3ZtLT50eXBlUHJvZmlsZXJM
b2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoKm1fdm0sICJQcmVwYXJpbmcgZm9yIEpJVCBjb21waWxh
dGlvbi4iX3N0cik7CiB9CiAKIHVuc2lnbmVkIEpJVDo6ZnJhbWVSZWdpc3RlckNvdW50Rm9yKFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCBlZmM5YTBlOGJiMDJlMjI1ODExODQ2MjNkMTA2MGE4OTM1
Y2RmMmExLi41MTliOTU4ZDRjNDkxOWQyNjBjZmVhMjUxZGZhMDBkYzJjYjc3NmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTIwMiw3ICsyMDIs
NyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3Vs
dElzTm90T2JqZWN0LCB2b2lkLCAoSlNHbG9iYQogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7
CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3Vs
dCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3N0cik7CiB9CiAKIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25DYWxsQXJpdHlDaGVjaywgaW50MzJfdCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpKQpAQCAtMzUyNSw3ICszNTI1LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2csIHZvaWQsIChWTSogdm1Q
b2ludGVyKSkKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgdm0udHlwZVByb2ZpbGVy
TG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAiTG9nIEZ1bGwsIGNhbGxlZCBmcm9tIGluc2lk
ZSBiYXNlbGluZSBKSVQiX3MpOworICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9n
RW50cmllcyh2bSwgIkxvZyBGdWxsLCBjYWxsZWQgZnJvbSBpbnNpZGUgYmFzZWxpbmUgSklUIl9z
dHIpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHJvY2Vzc1NoYWRv
d0NoaWNrZW5Mb2csIHZvaWQsIChWTSogdm1Qb2ludGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggZTdkM2NlOTQyMWU1ZGMxMmUwOWJhZjAyYmU1NTA0MmFmYWQ2MDdkOC4uYjEyNjk4MzlmODJh
YTMyMDFjM2Q3ZDFkYWYzYjdkZjNiNDhiY2IxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQ5
Miw3ICs0OTIsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUih0ZXN0Q3VzdG9t
VmFsdWVTZXR0ZXIpOwogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGFjY2Vzc29yTWFrZU1hc3F1
ZXJhZGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiSXNIVE1MRERBIl9z
LCBmdW5jdGlvbkNhbGxNYXNxdWVyYWRlcikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiSXNIVE1MRERBIl9zdHIsIGZ1bmN0aW9uQ2FsbE1hc3F1
ZXJhZGVyKSk7CiB9CiAKIApAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uRGVzY3JpYmVBcnJheSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
b250cml2aWFsU3RyaW5nKHZtLCAiPG5vdCBvYmplY3Q+Il9zKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiPG5vdCBvYmplY3Q+Il9zdHIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdG9T
dHJpbmcoIjxCdXR0ZXJmbHk6ICIsIFJhd1BvaW50ZXIob2JqZWN0LT5idXR0ZXJmbHkoKSksICI7
IHB1YmxpYyBsZW5ndGg6ICIsIG9iamVjdC0+Z2V0QXJyYXlMZW5ndGgoKSwgIjsgdmVjdG9yIGxl
bmd0aDogIiwgb2JqZWN0LT5nZXRWZWN0b3JMZW5ndGgoKSwgIj4iKSkpOwogfQogCkBAIC0xNTI4
LDcgKzE1MjgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25SdW4sIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsK
ICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDb3VsZCBub3Qgb3BlbiBm
aWxlLiJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDb3VsZCBu
b3Qgb3BlbiBmaWxlLiJfc3RyKSkpOwogCiAgICAgR2xvYmFsT2JqZWN0KiByZWFsbSA9IEdsb2Jh
bE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNO
dWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKIApAQCAtMTU5MSw3ICsxNTkxLDcgQEAgc3RhdGlj
IFVSTCBjb21wdXRlRmlsZVBhdGgoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGwKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBib29sIGNhbGxlclJlbGF0aXZlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KS5nZXRTdHJpbmcoZ2xvYmFsT2JqZWN0KSA9PSAiY2FsbGVyIHJlbGF0aXZlIl9zOworICAgIGJv
b2wgY2FsbGVyUmVsYXRpdmUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmdldFN0cmluZyhnbG9i
YWxPYmplY3QpID09ICJjYWxsZXIgcmVsYXRpdmUiOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIFVSTCgpKTsKIAogICAgIFN0cmluZyBmaWxlTmFtZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKQEAgLTE2MTksNyArMTYxOSw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkxvYWQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqCiAKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlm
ICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKHBhdGguZmlsZVN5c3RlbVBhdGgoKSwg
c2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDb3VsZCBub3Qg
b3BlbiBmaWxlLiJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJD
b3VsZCBub3Qgb3BlbiBmaWxlLiJfc3RyKSkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBl
dmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFs
T2JqZWN0LCBqc2NTb3VyY2Uoc2NyaXB0LCBTb3VyY2VPcmlnaW4geyBwYXRoIH0sIHBhdGguZmls
ZVN5c3RlbVBhdGgoKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CkBAIC0xNjg5
LDcgKzE2ODksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25DaGVja1N5bnRh
eCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7
CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlw
dCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ291bGQgbm90IG9wZW4g
ZmlsZS4iX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ291bGQg
bm90IG9wZW4gZmlsZS4iX3N0cikpKTsKIAogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CiAgICAg
c3RvcFdhdGNoLnN0YXJ0KCk7CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdAogICAgICAgICBnbG9iYWwgPSBqc0Nhc3Q8SlNQcm94eSo+KGdsb2JhbCktPnRhcmdl
dCgpOwogICAgIEdsb2JhbE9iamVjdCogcmVhbG0gPSBqc0R5bmFtaWNDYXN0PEdsb2JhbE9iamVj
dCo+KHZtLCBnbG9iYWwpOwogICAgIGlmICghcmVhbG0pCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQgZ2xvYmFsIHRvIHBvaW50IHRvIGEgZ2xvYmFsIG9iamVj
dCJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJFeHBlY3RlZCBn
bG9iYWwgdG8gcG9pbnQgdG8gYSBnbG9iYWwgb2JqZWN0Il9zdHIpKSk7CiAKICAgICBOYWtlZFB0
cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBl
dmFsdWF0ZShyZWFsbSwganNjU291cmNlKHNvdXJjZUNvZGUsIGNhbGxGcmFtZS0+Y2FsbGVyU291
cmNlT3JpZ2luKHZtKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CkBAIC0yMDc5
LDcgKzIwNzksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJHbG9i
YWxPYmplY3RGb3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVub3Vn
aCBhcmd1bWVudHMiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
Tm90IGVub3VnaCBhcmd1bWVudHMiX3N0cikpKTsKICAgICBKU1ZhbHVlIGFyZyA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGFyZy5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KGFyZyktPmdsb2JhbE9iamVjdCh2bSktPmdsb2JhbFRo
aXMoKSk7CkBAIC0yMDkzLDcgKzIwOTMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVu
Y3Rpb25Eb2xsYXJJc1JlbW90ZUZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3N0cikpKTsKIAogICAgIEpTVmFs
dWUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihpc1JlbW90ZUZ1bmN0aW9uKHZtLCBhcmcpKSk7CkBAIC0yMTIwLDkgKzIx
MjAsOSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIH07CiAKICAgICBpZiAoaXNHaWdh
Y2FnZU1lbW9yeUV4aGF1c3RlZChHaWdhY2FnZTo6SlNWYWx1ZSkgfHwgaXNHaWdhY2FnZU1lbW9y
eUV4aGF1c3RlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkdpZ2Fj
YWdlIGlzIGV4aGF1c3RlZCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiR2lnYWNhZ2UgaXMgZXho
YXVzdGVkIl9zdHIpKTsKIAotICAgIFN0cmluZyB3b3JrZXJQYXRoID0gIndvcmtlciJfczsKKyAg
ICBTdHJpbmcgd29ya2VyUGF0aCA9ICJ3b3JrZXIiX3N0cjsKICAgICBpZiAoIWNhbGxGcmFtZS0+
YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSkgewogICAgICAgICB3b3JrZXJQYXRoID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIxNzEsNyArMjE3
MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2
ZUJyb2FkY2FzdCwgKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNWYWx1ZSBjYWxsYmFjayA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZt
LCBjYWxsYmFjayk7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQgY2FsbGJh
Y2siX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQg
Y2FsbGJhY2siX3N0cikpKTsKICAgICAKICAgICBSZWZQdHI8TWVzc2FnZT4gbWVzc2FnZTsKICAg
ICB7CkBAIC0yMjY5LDcgKzIyNjksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rp
b25Eb2xsYXJBZ2VudEJyb2FkY2FzdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIH0K
ICNlbmRpZgogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3Qgc3VwcG9ydGVk
IG9iamVjdCJfcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBzdXBw
b3J0ZWQgb2JqZWN0Il9zdHIpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkRvbGxhckFnZW50R2V0UmVwb3J0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikpCkBAIC0yMzk1LDExICsyMzk1LDExIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYg
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihn
bG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfcykpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfc3RyKSkpOwogICAg
IAogICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZl
cio+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWJ1ZmZlcikKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIi
X3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQgYW4g
YXJyYXkgYnVmZmVyIl9zdHIpKSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBkdW1t
eUNvbnRlbnRzOwogICAgIGJ1ZmZlci0+aW1wbCgpLT50cmFuc2ZlclRvKHZtLCBkdW1teUNvbnRl
bnRzKTsKQEAgLTI0NzksNyArMjQ3OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkVmZmVjdGZ1bDQyLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk1ha2VNYXNxdWVyYWRlciwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZUZ1bmN0aW9uVGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQodm0sIGdsb2JhbE9iamVjdCwg
MCwgIklzSFRNTEREQSJfcywgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEludGVybmFsRnVuY3Rpb246OmNyZWF0ZUZ1bmN0aW9uVGhhdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQodm0sIGdsb2JhbE9iamVjdCwgMCwgIklzSFRNTEREQSJfc3RyLCBm
dW5jdGlvbkNhbGxNYXNxdWVyYWRlcikpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQpA
QCAtMjUxNyw3ICsyNTE3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uU2V0
VGltZW91dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAvLyBGSVhN
RTogVGhpcyBtZWFucyB3ZSBjYW4ndCBwYXNzIGFueSBpbnRlcm5hbCBmdW5jdGlvbiBidXQgSSBk
b24ndCB0aGluayB0aGF0J3MgY29tbW9uIGZvciB0ZXN0aW5nLgogICAgIGF1dG8gY2FsbGJhY2sg
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CiAgICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9zdHIpOwogCiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGxvb2sgYXQgdGhlIHRpbWVvdXQgcGFyYW1ldGVyIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIHNjaGVkdWxlIHdvcmsgbGF0ZXIgQVBJLgogICAgIGF1dG8gdGlja2V0ID0gdm0u
ZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBjYWxsYmFjaywgeyB9KTsKQEAg
LTI1NDMsNyArMjU0Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkZpbmFs
aXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50LCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBm
aW5hbGl6YXRpb25SZWdpc3RyeSA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3Ry
eSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWZpbmFsaXphdGlvblJl
Z2lzdHJ5KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmlyc3QgYXJndW1lbnQgaXMgbm90IGEgZmluYWxpemF0aW9uUmVnaXN0cnkiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmly
c3QgYXJndW1lbnQgaXMgbm90IGEgZmluYWxpemF0aW9uUmVnaXN0cnkiX3N0cik7CiAKICAgICBM
b2NrZXIgbG9ja2VyIHsgZmluYWxpemF0aW9uUmVnaXN0cnktPmNlbGxMb2NrKCkgfTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5saXZl
Q291bnQobG9ja2VyKSkpOwpAQCAtMjU1Niw3ICsyNTU2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQsIChKU0dsb2JhbE9i
amVjdCoKIAogICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0ganNEeW5hbWljQ2FzdDxK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAg
IGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6
YXRpb25SZWdpc3RyeSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdp
c3RyeSJfc3RyKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBmaW5hbGl6YXRpb25SZWdpc3RyeS0+
Y2VsbExvY2soKSB9OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmluYWxp
emF0aW9uUmVnaXN0cnktPmRlYWRDb3VudChsb2NrZXIpKSk7CkBAIC0yNjE5LDcgKzI2MTksNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25DcmVhdGVCaWdJbnQzMiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0JpZ0ludDMyKHN0YXRpY19jYXN0PGludDMyX3Q+KGRpZ2l0KSkpOwogICAgICAg
ICB9CiAgICAgfQotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQg
b2YgcmFuZ2Ugb2YgQmlnSW50MzIiX3MpOworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJPdXQgb2YgcmFuZ2Ugb2YgQmlnSW50MzIiX3N0cik7CiAgICAgcmV0dXJuIHsg
fTsKIH0KICNlbmRpZgpAQCAtMjc2OCw3ICsyNzY4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzLCAoSlNHbG9iYWxPYmplY3Qq
IGcKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAo
IXZtLnNhbXBsaW5nUHJvZmlsZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmpl
Y3QsICJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIgc3RhcnRlZCJfcykpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIg
c3RhcnRlZCJfc3RyKSkpOwogCiAgICAgU3RyaW5nIGpzb25TdHJpbmcgPSB2bS5zYW1wbGluZ1By
b2ZpbGVyKCktPnN0YWNrVHJhY2VzQXNKU09OKCk7CiAgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0
ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShnbG9iYWxPYmplY3QsIGpzb25TdHJpbmcpKTsK
QEAgLTI3ODksNyArMjc4OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkFz
eW5jVGVzdFN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogICAgIEpTVmFs
dWUgbnVtYmVyT2ZBc3luY1Bhc3NlcyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KCFudW1iZXJPZkFzeW5jUGFzc2VzLmlzVUludDMyKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJl
IGEgdWludDMyIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYSB1aW50MzIiX3N0cik7CiAK
ICAgICBhc3luY1Rlc3RFeHBlY3RlZFBhc3NlcyArPSBudW1iZXJPZkFzeW5jUGFzc2VzLmFzVUlu
dDMyKCk7CiAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwpAQCAtMjgwOSw3ICsyODA5
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlN
b2RlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgCiAgICAgaWYgKCFXYXNtOjppc1N1cHBvcnRlZCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2ViQXNz
ZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgdXNlV2ViQXNzZW1i
bHkgb3B0aW9uIGlzIHNldCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJXZWJBc3NlbWJseU1lbW9yeU1vZGUgc2hvdWxkIG9ubHkgYmUg
Y2FsbGVkIGlmIHRoZSB1c2VXZWJBc3NlbWJseSBvcHRpb24gaXMgc2V0Il9zdHIpOwogCiAgICAg
aWYgKEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmdldE9iamVjdCgp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBtZW1vcnkgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1i
bHlNZW1vcnkqPih2bSwgb2JqZWN0KSkKQEAgLTI4MTgsNyArMjgxOCw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihmdW5jdGlvbldlYkFzc2VtYmx5TWVtb3J5TW9kZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KHZtLCBtYWtlU3RyaW5nKGluc3RhbmNlLT5tZW1vcnlNb2RlKCkpKSk7CiAgICAgfQogCi0gICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIldlYkFzc2VtYmx5
TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSBvciBXZWJBc3Nl
bWJseS5JbnN0YW5jZSJfcyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIldlYkFzc2VtYmx5TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFz
c2VtYmx5Lk1lbW9yeSBvciBXZWJBc3NlbWJseS5JbnN0YW5jZSJfc3RyKTsKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTMyMDIsNyArMzIwMiw3IEBAIHN0YXRpYyB2b2lk
IHJ1bldpdGhPcHRpb25zKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGluZSYg
b3B0aW9ucywgYm9vCiAgICAgICAgICAgICBzaXplX3QgY29tbWFuZExpbmVMZW5ndGggPSBzdHJs
ZW4oc2NyaXB0c1tpXS5hcmd1bWVudCk7CiAgICAgICAgICAgICBzY3JpcHRCdWZmZXIucmVzaXpl
KGNvbW1hbmRMaW5lTGVuZ3RoKTsKICAgICAgICAgICAgIHN0ZDo6Y29weShzY3JpcHRzW2ldLmFy
Z3VtZW50LCBzY3JpcHRzW2ldLmFyZ3VtZW50ICsgY29tbWFuZExpbmVMZW5ndGgsIHNjcmlwdEJ1
ZmZlci5iZWdpbigpKTsKLSAgICAgICAgICAgIGZpbGVOYW1lID0gIltDb21tYW5kIExpbmVdIl9z
OworICAgICAgICAgICAgZmlsZU5hbWUgPSAiW0NvbW1hbmQgTGluZV0iX3N0cjsKICAgICAgICAg
fQogCiAgICAgICAgIGJvb2wgaXNMYXN0RmlsZSA9IGkgPT0gc2NyaXB0cy5zaXplKCkgLSAxOwpA
QCAtMzI1NSw3ICszMjU1LDcgQEAgc3RhdGljIHZvaWQgcnVuSW50ZXJhY3RpdmUoR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVVJMIGRpcmVjdG9yeU5hbWUgPSBjdXJyZW50V29ya2lu
Z0RpcmVjdG9yeSgpOwogICAgIGlmICghZGlyZWN0b3J5TmFtZS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luKFVSTChkaXJlY3RvcnlOYW1l
LCAiLi9pbnRlcnByZXRlciJfcykpOworICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4oVVJM
KGRpcmVjdG9yeU5hbWUsICIuL2ludGVycHJldGVyIl9zdHIpKTsKICAgICAKICAgICBib29sIHNo
b3VsZFF1aXQgPSBmYWxzZTsKICAgICB3aGlsZSAoIXNob3VsZFF1aXQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGRhNjAwZWEwMGYw
YzhkNjQzYTU3ZjY2ZmI1ZjliMGUzYTM1NjgzYTguLmZjNWNkYmU1ZjAwZjA5YWNmODNmYTIxNmNk
YmViY2VhMGI0NWJjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtODk5LDcgKzg5OSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQogICAgIFJlZ2lzdGVyJiBuZXh0UmVnaXN0
ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KTsKIAogICAgIGlmICgh
aXRlcmF0b3IuaXNPYmplY3QoKSkKLSAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3MpKTsKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3N0cikpOwog
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgaXRlcmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKQEAgLTkxOSw3
ICs5MTksNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9n
ZXRfZG9uZSkKICAgICBSZWdpc3RlciYgZG9uZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKGJ5dGVjb2RlLm1fZG9uZSk7CiAKICAgICBpZiAoIWl0ZXJhdG9yUmV0dXJuLmlzT2JqZWN0
KCkpCi0gICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJ
dGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKSk7CisgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpKTsKIAogICAgIEpTVmFsdWUgcmVz
dWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0
ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2Rl
TWV0YWRhdGEpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwpAQCAtMjM0MSw3ICsyMzQx
LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludChWTSYgdm0sIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE8KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkUihieXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCk7CiAgICAgaWYgKCFpdGVyYXRvci5p
c09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMzYxLDcgKzIzNjEsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRvck5l
eHRDaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsTwogICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShuZXh0LCAiV2Ugc2hvdWxkIG5vdCBPU1IgZXhp
dCB0byBhIGNoZWNrcG9pbnQgZm9yIGZhc3QgY2FzZXMuIik7CiAKICAgICBpZiAoIWl0ZXJhdG9y
UmVzdWx0T2JqZWN0LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2Jq
ZWN0LiJfcyk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Ikl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3N0cik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
aW5kZXggMTA5MzUxZDgzNTUwNjMxMWY5ZjljNTA1MGQ3Y2RiNmQ2Y2ZlNjM2OS4uNjBkZTQ5YWE0
YzQ5MGVmZGYyZjU3NTRlMGEwNWZkMjE3OTIwZjZjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAKQEAgLTUxNCwxOSArNTE0LDE5IEBAIFN0cmluZyBMZXhlcjxUPjo6aW52
YWxpZENoYXJhY3Rlck1lc3NhZ2UoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9jdXJyZW50KSB7
CiAgICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFwwJyJf
czsKKyAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcMCciX3N0cjsKICAgICBj
YXNlIDEwOgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFxuJyJfczsKKyAg
ICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcbiciX3N0cjsKICAgICBjYXNlIDEx
OgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFx2JyJfczsKKyAgICAgICAg
cmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcdiciX3N0cjsKICAgICBjYXNlIDEzOgotICAg
ICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFxyJyJfczsKKyAgICAgICAgcmV0dXJu
ICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcciciX3N0cjsKICAgICBjYXNlIDM1OgotICAgICAgICBy
ZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnIyciX3M7CisgICAgICAgIHJldHVybiAiSW52YWxp
ZCBjaGFyYWN0ZXI6ICcjJyJfc3RyOwogICAgIGNhc2UgNjQ6Ci0gICAgICAgIHJldHVybiAiSW52
YWxpZCBjaGFyYWN0ZXI6ICdAJyJfczsKKyAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3Rl
cjogJ0AnIl9zdHI7CiAgICAgY2FzZSA5NjoKLSAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJh
Y3RlcjogJ2AnIl9zOworICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnYCciX3N0
cjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSW52YWxpZCBjaGFy
YWN0ZXIgJ1xcdSIsIGhleChtX2N1cnJlbnQsIDQsIExvd2VyY2FzZSksICdcJycpOwogICAgIH0K
QEAgLTEyMTEsNyArMTIxMSw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4g
QUxXQVlTX0lOTElORSB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSCiAgICAgICAgICAg
ICBlbHNlIGlmIChtX2N1cnJlbnQgPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICAgc2hpZnQoKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpIHx8ICFpc0FT
Q0lJSGV4RGlnaXQocGVlaygxKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSAiXFx4IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBzZXF1
ZW5jZSJfczsKKyAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiXFx4IGNh
biBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBzZXF1ZW5jZSJfc3RyOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKGF0RW5kKCkgfHwgKGlzQVNDSUlIZXhEaWdpdChtX2N1
cnJlbnQpICYmIChtX2NvZGUgKyAxID09IG1fY29kZUVuZCkpKSA/IFN0cmluZ1VudGVybWluYXRl
ZCA6IFN0cmluZ0Nhbm5vdEJlUGFyc2VkOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBUIHByZXYgPSBtX2N1cnJlbnQ7CkBAIC0xMjY1LDcgKzEyNjUsNyBAQCB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFy
c2VDb21wbGV4RXNjYQogICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBBU1NF
UlQoIWlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpKTsKIAotICAgICAgICAgICAgbV9sZXhFcnJv
ck1lc3NhZ2UgPSAiXFx4IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBz
ZXF1ZW5jZSJfczsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlxceCBjYW4gb25s
eSBiZSBmb2xsb3dlZCBieSBhIGhleCBjaGFyYWN0ZXIgc2VxdWVuY2UiX3N0cjsKICAgICAgICAg
ICAgIHJldHVybiBhdEVuZCgpID8gU3RyaW5nVW50ZXJtaW5hdGVkIDogU3RyaW5nQ2Fubm90QmVQ
YXJzZWQ7CiAgICAgICAgIH0KIApAQCAtMTI4OCw3ICsxMjg4LDcgQEAgdGVtcGxhdGUgPGJvb2wg
c2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQ29t
cGxleEVzY2EKICAgICAgICAgICAgIHJldHVybiBTdHJpbmdQYXJzZWRTdWNjZXNzZnVsbHk7CiAg
ICAgICAgIH0KIAotICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJcXHUgY2FuIG9ubHkgYmUg
Zm9sbG93ZWQgYnkgYSBVbmljb2RlIGNoYXJhY3RlciBzZXF1ZW5jZSJfczsKKyAgICAgICAgbV9s
ZXhFcnJvck1lc3NhZ2UgPSAiXFx1IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgVW5pY29kZSBj
aGFyYWN0ZXIgc2VxdWVuY2UiX3N0cjsKICAgICAgICAgcmV0dXJuIGF0RW5kKCkgPyBTdHJpbmdV
bnRlcm1pbmF0ZWQgOiBTdHJpbmdDYW5ub3RCZVBhcnNlZDsKICAgICB9CiAKQEAgLTEzMDYsNyAr
MTMwNiw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElO
RSBhdXRvIExleGVyPFQ+OjpwYXJzZUNvbXBsZXhFc2NhCiAgICAgICAgICAgICAgICAgaWYgKGNo
YXJhY3RlcjEgPT0gJzAnKQogICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwogCi0gICAgICAg
ICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVGhlIG9ubHkgdmFsaWQgbnVtZXJpYyBlc2Nh
cGUgaW4gc3RyaWN0IG1vZGUgaXMgJ1xcMCciX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJv
ck1lc3NhZ2UgPSAiVGhlIG9ubHkgdmFsaWQgbnVtZXJpYyBlc2NhcGUgaW4gc3RyaWN0IG1vZGUg
aXMgJ1xcMCciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4gYXRFbmQoKSA/IFN0cmluZ1Vu
dGVybWluYXRlZCA6IFN0cmluZ0Nhbm5vdEJlUGFyc2VkOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykKQEAgLTEzNDUsNyArMTM0NSw3IEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+
OjpwYXJzZUNvbXBsZXhFc2NhCiAgICAgICAgIHJldHVybiBTdHJpbmdQYXJzZWRTdWNjZXNzZnVs
bHk7CiAgICAgfQogCi0gICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmlu
ZyBjb25zdGFudCJfczsKKyAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3Ry
aW5nIGNvbnN0YW50Il9zdHI7CiAgICAgcmV0dXJuIFN0cmluZ1VudGVybWluYXRlZDsKIH0KIApA
QCAtMTM4Nyw3ICsxMzg3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBh
dXRvIExleGVyPFQ+OjpwYXJzZVN0cmluZ1Nsb3dDYXNlKEpTVG9rZW5EYXQKICAgICAgICAgaWYg
KFVOTElLRUxZKG1fY3VycmVudCA8IDB4RSkpIHsKICAgICAgICAgICAgIC8vIE5ldy1saW5lIG9y
IGVuZCBvZiBpbnB1dCBpcyBub3QgYWxsb3dlZAogICAgICAgICAgICAgaWYgKGF0RW5kKCkgfHwg
bV9jdXJyZW50ID09ICdccicgfHwgbV9jdXJyZW50ID09ICdcbicpIHsKLSAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiJfczsKKyAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiJfc3RyOwogICAgICAgICAgICAg
ICAgIHJldHVybiBhdEVuZCgpID8gU3RyaW5nVW50ZXJtaW5hdGVkIDogU3RyaW5nQ2Fubm90QmVQ
YXJzZWQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBBbnl0aGluZyBlbHNlIGlzIGp1
c3QgYSBub3JtYWwgY2hhcmFjdGVyCkBAIC0xNDY0LDcgKzE0NjQsNyBAQCB0eXBlbmFtZSBMZXhl
cjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVMaXRlcmFsKEpT
VG9rZW5EYXRhKgogICAgICAgICAgICAgLy8gRW5kIG9mIGlucHV0IGlzIG5vdCBhbGxvd2VkLgog
ICAgICAgICAgICAgLy8gVW5saWtlIFN0cmluZywgbGluZSB0ZXJtaW5hdG9yIGlzIGFsbG93ZWQu
CiAgICAgICAgICAgICBpZiAoYXRFbmQoKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zOworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0
cmluZ1VudGVybWluYXRlZDsKICAgICAgICAgICAgIH0KIApAQCAtMjEwMSw3ICsyMTAxLDcgQEAg
c3RhcnQ6CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgaWYgKHBhcnNlTXVsdGls
aW5lQ29tbWVudCgpKQogICAgICAgICAgICAgICAgIGdvdG8gc3RhcnQ7Ci0gICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9ICJNdWx0aWxpbmUgY29tbWVudCB3YXMgbm90IGNsb3NlZCBwcm9w
ZXJseSJfczsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk11bHRpbGluZSBjb21t
ZW50IHdhcyBub3QgY2xvc2VkIHByb3Blcmx5Il9zdHI7CiAgICAgICAgICAgICB0b2tlbiA9IFVO
VEVSTUlOQVRFRF9NVUxUSUxJTkVfQ09NTUVOVF9FUlJPUlRPSzsKICAgICAgICAgICAgIGdvdG8g
cmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAgLTIyNTUsMTMgKzIyNTUsMTMgQEAgc3RhcnQ6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoVU5MSUtFTFkoIXBhcnNl
TnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKSkpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZGVjaW1hbCBwb2ludCJfczsKKyAgICAgICAg
ICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZGVjaW1hbCBw
b2ludCJfc3RyOwogICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05V
TUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9L
OwogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQogICAgICAgICB0b2tl
biA9IERPVUJMRTsKICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1
YWwobV9jdXJyZW50LCAnZScpICYmICFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3Io
KSkpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vbi1udW1iZXIgZm91bmQg
YWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIl9zOworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3IiX3N0cjsKICAg
ICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxf
RVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKICAgICAgICAgICAg
IGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAgLTIyNzYsNyArMjI3Niw3IEBAIHN0YXJ0
OgogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChjdXJyZW50
Q29kZVBvaW50KCkpKSkgewotICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8gaWRl
bnRpZmllcnMgYWxsb3dlZCBkaXJlY3RseSBhZnRlciBudW1lcmljIGxpdGVyYWwiX3M7CisgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBpZGVudGlmaWVycyBhbGxvd2VkIGRpcmVj
dGx5IGFmdGVyIG51bWVyaWMgbGl0ZXJhbCJfc3RyOwogICAgICAgICAgICAgdG9rZW4gPSBhdEVu
ZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVN
RVJJQ19MSVRFUkFMX0VSUk9SVE9LOwogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAg
ICAgICAgfQpAQCAtMjI4Niw3ICsyMjg2LDcgQEAgc3RhcnQ6CiAgICAgICAgIHNoaWZ0KCk7CiAg
ICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ3gnKSkgewog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpKSB7Ci0g
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8gaGV4YWRlY2ltYWwgZGlnaXRz
IGFmdGVyICcweCciX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8g
aGV4YWRlY2ltYWwgZGlnaXRzIGFmdGVyICcweCciX3N0cjsKICAgICAgICAgICAgICAgICB0b2tl
biA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdv
dG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0yMzE0LDcgKzIzMTQsNyBAQCBzdGFy
dDoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFy
dChjdXJyZW50Q29kZVBvaW50KCkpKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIk5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2ltYWwgbGl0ZXJhbCBhbmQgaWRlbnRpZmll
ciJfczsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBzcGFjZSBiZXR3
ZWVuIGhleGFkZWNpbWFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiX3N0cjsKICAgICAgICAgICAg
ICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAg
ICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0yMzI1LDcgKzIzMjUs
NyBAQCBzdGFydDoKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbChtX2N1cnJlbnQsICdiJykpIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghaXNBU0NJ
SUJpbmFyeURpZ2l0KHBlZWsoMSkpKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIk5vIGJpbmFyeSBkaWdpdHMgYWZ0ZXIgJzBiJyJfczsKKyAgICAgICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9ICJObyBiaW5hcnkgZGlnaXRzIGFmdGVyICcwYiciX3N0cjsKICAg
ICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVNQkVSX0VSUk9SVE9L
OwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0y
MzUzLDcgKzIzNTMsNyBAQCBzdGFydDoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGlzSWRlbnRTdGFydChjdXJyZW50Q29kZVBvaW50KCkpKSkgewotICAgICAgICAg
ICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vIHNwYWNlIGJldHdlZW4gYmluYXJ5IGxpdGVy
YWwgYW5kIGlkZW50aWZpZXIiX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSAiTm8gc3BhY2UgYmV0d2VlbiBiaW5hcnkgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciJfc3RyOwog
ICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0JJTkFSWV9OVU1CRVJfRVJST1JU
T0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KQEAg
LTIzNjUsNyArMjM2NSw3IEBAIHN0YXJ0OgogCiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsKG1fY3VycmVudCwgJ28nKSkgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFp
c0FTQ0lJT2N0YWxEaWdpdChwZWVrKDEpKSkpIHsKLSAgICAgICAgICAgICAgICBtX2xleEVycm9y
TWVzc2FnZSA9ICJObyBvY3RhbCBkaWdpdHMgYWZ0ZXIgJzBvJyJfczsKKyAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBvY3RhbCBkaWdpdHMgYWZ0ZXIgJzBvJyJfc3RyOwog
ICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX09DVEFMX05VTUJFUl9FUlJPUlRP
SzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgfQpAQCAt
MjM5Myw3ICsyMzkzLDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChVTkxJS0VMWShpc0lkZW50U3RhcnQoY3VycmVudENvZGVQb2ludCgpKSkpIHsKLSAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBzcGFjZSBiZXR3ZWVuIG9jdGFsIGxpdGVy
YWwgYW5kIGlkZW50aWZpZXIiX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSAiTm8gc3BhY2UgYmV0d2VlbiBvY3RhbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIl9zdHI7CiAg
ICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9L
OwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0y
NDA0LDE0ICsyNDA0LDE0IEBAIHN0YXJ0OgogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElL
RUxZKG1fY3VycmVudCA9PSAnXycpKSB7Ci0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
ICJOdW1lcmljIGxpdGVyYWxzIG1heSBub3QgYmVnaW4gd2l0aCAwXyJfczsKKyAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gIk51bWVyaWMgbGl0ZXJhbHMgbWF5IG5vdCBiZWdpbiB3aXRo
IDBfIl9zdHI7CiAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9PQ1RBTF9OVU1CRVJf
RVJST1JUT0s7CiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICB9CiAKICAg
ICAgICAgcmVjb3JkOCgnMCcpOwogICAgICAgICBpZiAoVU5MSUtFTFkoc3RyaWN0TW9kZSAmJiBp
c0FTQ0lJRGlnaXQobV9jdXJyZW50KSkpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdl
ID0gIkRlY2ltYWwgaW50ZWdlciBsaXRlcmFscyB3aXRoIGEgbGVhZGluZyB6ZXJvIGFyZSBmb3Ji
aWRkZW4gaW4gc3RyaWN0IG1vZGUiX3M7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
ICJEZWNpbWFsIGludGVnZXIgbGl0ZXJhbHMgd2l0aCBhIGxlYWRpbmcgemVybyBhcmUgZm9yYmlk
ZGVuIGluIHN0cmljdCBtb2RlIl9zdHI7CiAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRF
RF9PQ1RBTF9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwog
ICAgICAgICB9CkBAIC0yNDQxLDE0ICsyNDQxLDE0IEBAIHN0YXJ0OgogICAgICAgICAgICAgICAg
IGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAm
JiAhcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBkZWNpbWFs
IHBvaW50Il9zOworICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAi
Tm9uLW51bWJlciBmb3VuZCBhZnRlciBkZWNpbWFsIHBvaW50Il9zdHI7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFM
X0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1
cnJlbnQsICdlJykgJiYgIXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSkgewot
ICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJOb24tbnVtYmVyIGZvdW5k
IGFmdGVyIGV4cG9uZW50IGluZGljYXRvciJfczsKKyAgICAgICAgICAgICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3Ii
X3N0cjsKICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVE
X05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9S
VE9LOwogICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTI0NjUsNyArMjQ2NSw3IEBAIHN0YXJ0OgogICAgICAgICB9CiAKICAgICAgICAg
aWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChjdXJyZW50Q29kZVBvaW50KCkpKSkgewotICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8gaWRlbnRpZmllcnMgYWxsb3dlZCBkaXJlY3Rs
eSBhZnRlciBudW1lcmljIGxpdGVyYWwiX3M7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9ICJObyBpZGVudGlmaWVycyBhbGxvd2VkIGRpcmVjdGx5IGFmdGVyIG51bWVyaWMgbGl0ZXJh
bCJfc3RyOwogICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVS
SUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOwog
ICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQpAQCAtMjUzMiw3ICsyNTMy
LDcgQEAgc3RhcnQ6CiAgICAgICAgIGdvdG8gaW52YWxpZENoYXJhY3RlcjsKICAgICBkZWZhdWx0
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9ICJJbnRlcm5hbCBFcnJvciJfczsKKyAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSAiSW50ZXJuYWwgRXJyb3IiX3N0cjsKICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKICAg
ICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggNTUyNmY1YzlhMTI1MDA4MTMzZTkxOGUyNmVmMzI0N2E4NWRlMjM4
OS4uZGU1ZDM1MzA0ZDk1MDEyYzM4OTkxOGE4ZDQ2MzdkNWVkZjc5ZmVmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIEV4cGVjdGVk
PHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+IFBh
cnNlcjxMZXhlclR5cGU+CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxNjMzCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIW1hdGNoKEFS
Uk9XRlVOQ1RJT04pKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiUGFyc2VyIGVycm9yIl9zKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlBhcnNlciBlcnJvciJfc3Ry
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gIW1hdGNoKE9QRU5CUkFDRSk7CkBAIC0yOTQsNyAr
Mjk0LDcgQEAgRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlSW5uZXJS
ZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT4KIAogICAgIGJvb2wgdmFsaWRFbmRpbmcg
PSBjb25zdW1lKEVPRlRPSyk7CiAgICAgaWYgKCFzb3VyY2VFbGVtZW50cyB8fCAhdmFsaWRFbmRp
bmcpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChoYXNFcnJvcigpID8gbV9lcnJvck1l
c3NhZ2UgOiAiUGFyc2VyIGVycm9yIl9zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGhhc0Vycm9yKCkgPyBtX2Vycm9yTWVzc2FnZSA6ICJQYXJzZXIgZXJyb3IiX3N0cik7CiAKICAg
ICBpZiAoIW1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSAmJiBtX3NlZW5Qcml2YXRlTmFt
ZVVzZUluTm9uUmVwYXJzaW5nRnVuY3Rpb25Nb2RlKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1l
c3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAzMzhmYzBiMmE3
MWFlZDc2MmVlYjkxMTE0NmI3ZmRhZTQxMTYwZWI3Li5mMmI0YjRlNDZiN2UzYTkyYWM0Yzg4Yzc5
NDc0NGEyZjBkOGZlMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTE2MTUsNyArMTYxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IW1lc3NhZ2UuaXNFbXB0eSgpLCAiQXR0ZW1wdGVkIHRvIHNldCB0aGUgZW1wdHkgc3RyaW5nIGFz
IGFuIGVycm9yIG1lc3NhZ2UuIExpa2VseSBjYXVzZWQgYnkgaW52YWxpZCBVVEY4IHVzZWQgd2hl
biBjcmVhdGluZyB0aGUgbWVzc2FnZS4iKTsKICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBtZXNz
YWdlOwogICAgICAgICBpZiAobV9lcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9lcnJvck1lc3NhZ2UgPSAiVW5wYXJzZWFibGUgc2NyaXB0Il9zOworICAgICAgICAgICAgbV9l
cnJvck1lc3NhZ2UgPSAiVW5wYXJzZWFibGUgc2NyaXB0Il9zdHI7CiAgICAgfQogICAgIAogICAg
IE5FVkVSX0lOTElORSB2b2lkIGxvZ0Vycm9yKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDQyNWI4
ZmFkMTM4MGU3M2M2OGU4MjE2ZGU0NWJlZDQ2ZGJhYWRlNTguLmNlYTA3ZDY1NGJjZjFjNGRkMzgy
NjU5MTg2MGEyZDJjYzc3MDY3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtKQogICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgIHNjb3BlLnJl
bGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIG1fZGVwZW5kZW5jaWVzTWFwLnNldCh2bSwg
dGhpcywgbWFwKTsKLSAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJkZXBlbmRlbmNpZXNNYXAiX3MpLCBtX2RlcGVuZGVuY2llc01hcC5nZXQoKSk7CisgICAgcHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVwZW5kZW5jaWVzTWFwIl9z
dHIpLCBtX2RlcGVuZGVuY2llc01hcC5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZp
c2l0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IDA4ODZmOTNmNjVjZjVjNjExYzUzYjRkOGI1MmQ2NDVjM2Q1MzFlYmYu
LmQxZTA4MmUzODg0ZDMwM2QyMjZiMzdjMDkxMmZkMGY2Y2VkMGU3NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC03MCw3
ICs3MCw3IEBAIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpCiAgICAgCiAgICAgdWludDMyX3QgbiA9
IGxlbmd0aC50b1VJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIGlmIChuICE9IGxlbmd0aC50b051
bWJlcihnbG9iYWxPYmplY3QpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQXJyYXkgc2l6ZSBpcyBu
b3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iX3MpKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJf
c3RyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBwcm9maWxlLCBu
LCBuZXdUYXJnZXQpKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBi
b29sIGlzQXJyYXlTbG93SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3h5
TwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYgKHByb3h5LT5pc1Jldm9rZWQoKSkg
ewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFycmF5
LmlzQXJyYXkgY2Fubm90IGJlIGNhbGxlZCBvbiBhIFByb3h5IHRoYXQgaGFzIGJlZW4gcmV2b2tl
ZCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
QXJyYXkuaXNBcnJheSBjYW5ub3QgYmUgY2FsbGVkIG9uIGEgUHJveHkgdGhhdCBoYXMgYmVlbiBy
ZXZva2VkIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIEpTT2JqZWN0KiBhcmd1bWVudCA9IHByb3h5LT50YXJnZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCAxODE1ZTE0N2I5
NjVlY2M2MmEyZWUzYmU4OGQ5NDhhMGMwYjRmMGVkLi44ZjFmNjAyYjNjYzQ4YTMxNDU4MDJmOTJm
OTc2ZjkzYTViZWQ5YWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBK
U09iamUKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGhyb3dFeGNlcHRpb24gPSB0cnVlOwog
ICAgIGlmIChMSUtFTFkoaXNKU0FycmF5KG9iaikpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWSh2
YWx1ZSA+IFVJTlQzMl9NQVgpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludmFsaWQgYXJyYXkgbGVuZ3RoIl9zKTsKKyAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcnJheSBsZW5ndGgi
X3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJh
eVByb3RvRnVuY1NwZWNpZXNDcmVhdGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3BlY2llc1Jlc3VsdC5zZWNvbmQpOwogCiAgICAg
aWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgewotICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFycmF5IHNpemUgaXMg
bm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zKTsKKyAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxs
IGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKQEAgLTY4NSw3ICs2ODUsNyBAQCBzdGF0aWMgSlNTdHJpbmcqIHRvTG9jYWxlU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIEpTVgogCiAgICAg
YXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCB0b0xvY2FsZVN0cmluZ01ldGhvZCk7CiAg
ICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvTG9jYWxlU3RyaW5nIGlzIG5v
dCBjYWxsYWJsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJ0b0xvY2FsZVN0cmluZyBpcyBub3QgY2FsbGFibGUiX3N0cik7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogCkBAIC05NzEsNyArOTcxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGFycmF5UHJvdG9GdW5jUHVzaCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGwKICAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwog
CiAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCArIGFyZ0NvdW50ID4gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG1heFNhZmVJbnRlZ2VyKCkpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInB1c2ggY2Fubm90IHByb2R1Y2UgYW4gYXJyYXkgb2YgbGVu
Z3RoIGxhcmdlciB0aGFuICgyICoqIDUzKSAtIDEiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicHVzaCBjYW5ub3QgcHJvZHVjZSBhbiBh
cnJheSBvZiBsZW5ndGggbGFyZ2VyIHRoYW4gKDIgKiogNTMpIC0gMSJfc3RyKTsKIAogICAgIGZv
ciAodW5zaWduZWQgbiA9IDA7IG4gPCBhcmdDb3VudDsgbisrKSB7CiAgICAgICAgIHRoaXNPYmot
PnB1dEJ5SW5kZXhJbmxpbmUoZ2xvYmFsT2JqZWN0LCBsZW5ndGggKyBuLCBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsKQEAgLTEyMjQsNyArMTIyNCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NwbGljZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhCiAgICAgfQogICAgIHVuc2lnbmVkIGl0ZW1Db3VudCA9IHN0ZDo6bWF4
PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgLSAyLCAwKTsKICAgICBpZiAoVU5MSUtF
TFkobGVuZ3RoIC0gYWN0dWFsRGVsZXRlQ291bnQgKyBpdGVtQ291bnQgPiBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obWF4U2FmZUludGVnZXIoKSkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3BsaWNlIGNhbm5vdCBwcm9kdWNlIGFuIGFycmF5
IG9mIGxlbmd0aCBsYXJnZXIgdGhhbiAoMiAqKiA1MykgLSAxIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwbGljZSBjYW5ub3QgcHJv
ZHVjZSBhbiBhcnJheSBvZiBsZW5ndGggbGFyZ2VyIHRoYW4gKDIgKiogNTMpIC0gMSJfc3RyKTsK
IAogICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNp
ZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXkoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqLCBh
Y3R1YWxEZWxldGVDb3VudCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlv
bigpID09IChzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4
Y2VwdGlvbikpOwpAQCAtMTI5NCw3ICsxMjk0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGFycmF5UHJvdG9GdW5jVW5TaGlmdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMK
ICAgICB1bnNpZ25lZCBuckFyZ3MgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBp
ZiAobnJBcmdzKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShsZW5ndGggKyBuckFyZ3MgPiBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obWF4U2FmZUludGVnZXIoKSkpKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVuc2hpZnQgY2Fubm90IHBy
b2R1Y2UgYW4gYXJyYXkgb2YgbGVuZ3RoIGxhcmdlciB0aGFuICgyICoqIDUzKSAtIDEiX3MpOwor
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InVuc2hpZnQgY2Fubm90IHByb2R1Y2UgYW4gYXJyYXkgb2YgbGVuZ3RoIGxhcmdlciB0aGFuICgy
ICoqIDUzKSAtIDEiX3N0cik7CiAgICAgICAgIHVuc2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZv
clNoaWZ0PihnbG9iYWxPYmplY3QsIHRoaXNPYmosIDAsIDAsIG5yQXJncywgbGVuZ3RoKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZjdmYWM1OGJjNDk4YmUwY2QyY2E0NGQ1ZTNmYTJi
ZDA2MTFjZjYwOS4uYzEwNmE2NjBjMjA4ZmY5M2ViY2E2Zjg5YWMxYzU2MDY5MGI2ODZhNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAKIHZvaWQgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMSwgIkFzeW5jRnVuY3Rpb24iX3MsIFByb3BlcnR5QWRkaXRpb25Nb2Rl
OjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sIDEsICJBc3luY0Z1bmN0aW9uIl9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0
U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDEyYzlhYmU0NTc2YzllYjllM2FiNDdiODgyYjJkYjY2YzZlMjFkNzUuLmFlMDQw
NDVmYWRmODJkODM2OTM4ZDFmZTkwNTgxNTc0MmI4NGUyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtNTgsNyArNTgsNyBAQCBBc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0s
IFN0cgogCiB2b2lkIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsICJBc3luY0dlbmVyYXRvckZ1bmN0
aW9uIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiQXN5bmNHZW5lcmF0b3JGdW5jdGlv
biJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIHByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3Bw
CmluZGV4IDllZTQ1ZGY0NzNhNDkxNTc1ZDk1NWJjZjc5OTBlZmQwNWI4MGFkODYuLjcxYzA3MDg0
NTE0N2MwMTI0YjgwMjY0YjMwZmI0YWNjZWFjMmQyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgc3Rh
dGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICB9CiAKICAgICBpZiAoYWNjZXNzSW5kZXggPj0gdHlw
ZWRBcnJheVZpZXctPmxlbmd0aCgpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQWNjZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBhY2Nl
c3MuIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJB
Y2Nlc3MgaW5kZXggb3V0IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3N0cik7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KICAgICAKQEAgLTE0NSw3ICsxNDUsNyBAQCBpbmxpbmUgSlNB
cnJheUJ1ZmZlclZpZXcqIHZhbGlkYXRlSW50ZWdlclR5cGVkQXJyYXkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgICAgICBjYXNlIEJpZ0ludDY0QXJyYXlUeXBlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVHlwZWQgYXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBJbnQz
MkFycmF5IG9yIEJpZ0ludDY0QXJyYXkuIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUeXBlZCBhcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIElu
dDMyQXJyYXkgb3IgQmlnSW50NjRBcnJheS4iX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTE2MCw3ICsxNjAsNyBAQCBpbmxpbmUgSlNB
cnJheUJ1ZmZlclZpZXcqIHZhbGlkYXRlSW50ZWdlclR5cGVkQXJyYXkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgICAgICBjYXNlIEJpZ1VpbnQ2NEFycmF5VHlwZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkIGFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gSW50
OEFycmF5LCBJbnQxNkFycmF5LCBJbnQzMkFycmF5LCBVaW50OEFycmF5LCBVaW50MTZBcnJheSwg
VWludDMyQXJyYXksIEJpZ0ludDY0QXJyYXksIG9yIEJpZ1VpbnQ2NEFycmF5LiJfcyk7CisgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVHlwZWQgYXJyYXkg
YXJndW1lbnQgbXVzdCBiZSBhbiBJbnQ4QXJyYXksIEludDE2QXJyYXksIEludDMyQXJyYXksIFVp
bnQ4QXJyYXksIFVpbnQxNkFycmF5LCBVaW50MzJBcnJheSwgQmlnSW50NjRBcnJheSwgb3IgQmln
VWludDY0QXJyYXkuIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTQ0Miw3ICs0NDIsNyBAQCBKU1ZhbHVlIGF0b21pY3NXYWl0SW1wbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0FycmF5VHlwZSogdHlwZWRBcnJheSwgdQogICAgICAg
ICB0aW1lb3V0ID0gc3RkOjptYXgoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyh0aW1lb3V0SW5N
aWxsaXNlY29uZHMpLCAwX3MpOwogCiAgICAgaWYgKCF2bS5tX3R5cGVkQXJyYXlDb250cm9sbGVy
LT5pc0F0b21pY3NXYWl0QWxsb3dlZE9uQ3VycmVudFRocmVhZCgpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBdG9taWNzLndhaXQgY2Fubm90IGJlIGNh
bGxlZCBmcm9tIHRoZSBjdXJyZW50IHRocmVhZC4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQXRvbWljcy53YWl0IGNhbm5vdCBiZSBjYWxsZWQgZnJv
bSB0aGUgY3VycmVudCB0aHJlYWQuIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
IApAQCAtNDc1LDcgKzQ3NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhdG9taWNzRnVu
Y1dhaXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghdHlwZWRBcnJheVZpZXctPmlz
U2hhcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC9ub3RpZnkgbXVzdCB3cmFwIGEgU2hhcmVkQXJy
YXlCdWZmZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L25vdGlmeSBtdXN0IHdyYXAgYSBTaGFy
ZWRBcnJheUJ1ZmZlci4iX3N0cik7CiAKICAgICB1bnNpZ25lZCBhY2Nlc3NJbmRleCA9IHZhbGlk
YXRlQXRvbWljQWNjZXNzKGdsb2JhbE9iamVjdCwgdm0sIHR5cGVkQXJyYXlWaWV3LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IDViODVkOWIxYjc1NDVmNjRmZjVhMmJmYWExY2U4ZjU1MDY4MDdlOWQuLjdmYjE4
NGQxODdlNWJiYzhiZjNiZGFlZjI4ZWZiNGU3YjY4MGE4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTY0LDcgKzY0
LDcgQEAgQmlnSW50Q29uc3RydWN0b3I6OkJpZ0ludENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAKIHZvaWQgQmlnSW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDEsICJCaWdJbnQiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IDEsICJCaWdJbnQiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
YmlnSW50UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CkBAIC05
Miw3ICs5Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsQmlnSW50Q29uc3RydWN0
b3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgaWYgKHByaW1pdGl2ZS5p
c0RvdWJsZSgpKSB7CiAgICAgICAgIGRvdWJsZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3VibGUo
KTsKICAgICAgICAgaWYgKCFpc0ludGVnZXIobnVtYmVyKSkKLSAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsICJOb3QgYW4gaW50ZWdlciJfcykpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
Ik5vdCBhbiBpbnRlZ2VyIl9zdHIpKTsKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJbnQzMihnbG9i
YWxPYmplY3QsIHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKaW5kZXggOTUyMjA5
ZDM3MTY1NWM2MDk4ZGI2YmVlN2I1YjNlNzU2ZjZmOWJkZi4uOTgyZWM0MGJmYjBhMmExMGNmMWMz
OWFlMjNlZThjZTUxYjE5MDliMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiJ3RoaXMnIHZhbHVlIG11c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50T2Jq
ZWN0Il9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3RoaXMn
IHZhbHVlIG11c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50T2JqZWN0Il9zdHIpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCAxZWVlZTJjYjllNDZjNDRmMTljOGQ0ZjAyYjY1MTA3YjMz
ZDRhNDE3Li5hNDk5MDM1NTQzM2JlYTI1NTZlOTM5YTQ0YzE3YzEwYWIzZTUxMGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTM3Niw3ICszNzYsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2No
ZWNrX3RkeikKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDaGVj
a1Rkej4oKTsKICAgICBpZiAoYnl0ZWNvZGUubV90YXJnZXRWaXJ0dWFsUmVnaXN0ZXIgPT0gY29k
ZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSkKLSAgICAgICAgVEhST1coY3JlYXRlUmVmZXJlbmNlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29u
c3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3Qu
Il9zKSk7CisgICAgICAgIFRIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2JhbE9iamVjdCwg
IidzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBh
Y2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0LiJfc3RyKSk7CiAgICAgZWxz
ZQogICAgICAgICBUSFJPVyhjcmVhdGVURFpFcnJvcihnbG9iYWxPYmplY3QpKTsKIH0KQEAgLTEw
ODcsNyArMTA4Nyw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW51
bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KQogSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKQogewogICAgIEJFR0lOKCk7Ci0gICAgdm0u
dHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAiTExJbnQgbG9nIGZ1bGwu
Il9zKTsKKyAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJM
TEludCBsb2cgZnVsbC4iX3N0cik7CiAgICAgRU5EKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5jcHAKaW5kZXggMTEzOTllYjA5YjJiY2M4
NTljN2VkMzZhOWNlZTRkMjMzYzljZDZkZC4uZThlMDZiMTExYjNlZmY3ZjRlMmRlZTkwODU3N2Nl
N2UzZGQ5ZjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29s
ZUNsaWVudC5jcHAKQEAgLTYzLDUyICs2Myw1MiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNZXNzYWdl
UHJlZml4KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZQog
ICAgICAgICAvLyBEZWZhdWx0LCBubyBuZWVkIHRvIGJlIG1vcmUgc3BlY2lmaWMuCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6WE1MOgotICAgICAgICBzb3VyY2VTdHJp
bmcgPSAiWE1MIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiWE1MIl9zdHI7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6SlM6Ci0gICAgICAgIHNvdXJjZVN0cmlu
ZyA9ICJKUyJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIkpTIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TmV0d29yazoKLSAgICAgICAgc291cmNlU3Ry
aW5nID0gIk5FVFdPUksiX3M7CisgICAgICAgIHNvdXJjZVN0cmluZyA9ICJORVRXT1JLIl9zdHI7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6U3RvcmFnZToKLSAgICAg
ICAgc291cmNlU3RyaW5nID0gIlNUT1JBR0UiX3M7CisgICAgICAgIHNvdXJjZVN0cmluZyA9ICJT
VE9SQUdFIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6QXBw
Q2FjaGU6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJBUFBDQUNIRSJfczsKKyAgICAgICAgc291
cmNlU3RyaW5nID0gIkFQUENBQ0hFIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVz
c2FnZVNvdXJjZTo6UmVuZGVyaW5nOgotICAgICAgICBzb3VyY2VTdHJpbmcgPSAiUkVOREVSSU5H
Il9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiUkVOREVSSU5HIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6Q1NTOgotICAgICAgICBzb3VyY2VTdHJpbmcg
PSAiQ1NTIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiQ1NTIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHk6Ci0gICAgICAgIHNvdXJjZVN0
cmluZyA9ICJTRUNVUklUWSJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIlNFQ1VSSVRZIl9z
dHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6Q29udGVudEJsb2Nr
ZXI6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJDT05URU5UQkxPQ0tFUiJfczsKKyAgICAgICAg
c291cmNlU3RyaW5nID0gIkNPTlRFTlRCTE9DS0VSIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTWVzc2FnZVNvdXJjZTo6TWVkaWE6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJNRURJ
QSJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIk1FRElBIl9zdHI7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TWVkaWFTb3VyY2U6Ci0gICAgICAgIHNvdXJjZVN0
cmluZyA9ICJNRURJQVNPVVJDRSJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIk1FRElBU09V
UkNFIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6V2ViUlRD
OgotICAgICAgICBzb3VyY2VTdHJpbmcgPSAiV0VCUlRDIl9zOworICAgICAgICBzb3VyY2VTdHJp
bmcgPSAiV0VCUlRDIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJj
ZTo6SVRQRGVidWc6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJJVFBERUJVRyJfczsKKyAgICAg
ICAgc291cmNlU3RyaW5nID0gIklUUERFQlVHIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Ci0gICAgICAgIHNvdXJj
ZVN0cmluZyA9ICJQUklWQVRFQ0xJQ0tNRUFTVVJFTUVOVCJfczsKKyAgICAgICAgc291cmNlU3Ry
aW5nID0gIlBSSVZBVEVDTElDS01FQVNVUkVNRU5UIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTWVzc2FnZVNvdXJjZTo6UGF5bWVudFJlcXVlc3Q6Ci0gICAgICAgIHNvdXJjZVN0cmlu
ZyA9ICJQQVlNRU5UUkVRVUVTVCJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIlBBWU1FTlRS
RVFVRVNUIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6T3Ro
ZXI6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJPVEhFUiJfczsKKyAgICAgICAgc291cmNlU3Ry
aW5nID0gIk9USEVSIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTE4LDQzICsx
MTgsNDMgQEAgc3RhdGljIHZvaWQgYXBwZW5kTWVzc2FnZVByZWZpeChTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWUKICAgICAgICAgLy8gRGVmYXVsdCwgbm8g
bmVlZCB0byBiZSBtb3JlIHNwZWNpZmljLgogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpDbGVhcjoKLSAgICAgICAgdHlwZVN0cmluZyA9ICJDTEVBUiJfczsKKyAgICAgICAg
dHlwZVN0cmluZyA9ICJDTEVBUiJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpEaXI6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiRElSIl9zOworICAgICAgICB0eXBl
U3RyaW5nID0gIkRJUiJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpEaXJYTUw6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiRElSWE1MIl9zOworICAgICAgICB0eXBl
U3RyaW5nID0gIkRJUlhNTCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpUYWJsZToKLSAgICAgICAgdHlwZVN0cmluZyA9ICJUQUJMRSJfczsKKyAgICAgICAgdHlw
ZVN0cmluZyA9ICJUQUJMRSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpUcmFjZToKLSAgICAgICAgdHlwZVN0cmluZyA9ICJUUkFDRSJfczsKKyAgICAgICAgdHlw
ZVN0cmluZyA9ICJUUkFDRSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpTdGFydEdyb3VwOgotICAgICAgICB0eXBlU3RyaW5nID0gIlNUQVJUR1JPVVAiX3M7Cisg
ICAgICAgIHR5cGVTdHJpbmcgPSAiU1RBUlRHUk9VUCJfc3RyOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpTdGFydEdyb3VwQ29sbGFwc2VkOgotICAgICAgICB0eXBlU3Ry
aW5nID0gIlNUQVJUR1JPVVBDT0xMQVBTRUQiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiU1RB
UlRHUk9VUENPTExBUFNFRCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpFbmRHcm91cDoKLSAgICAgICAgdHlwZVN0cmluZyA9ICJFTkRHUk9VUCJfczsKKyAgICAg
ICAgdHlwZVN0cmluZyA9ICJFTkRHUk9VUCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpBc3NlcnQ6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiQVNTRVJUIl9zOwor
ICAgICAgICB0eXBlU3RyaW5nID0gIkFTU0VSVCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpUaW1pbmc6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiVElNSU5HIl9z
OworICAgICAgICB0eXBlU3RyaW5nID0gIlRJTUlORyJfc3RyOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlOgotICAgICAgICB0eXBlU3RyaW5nID0gIlBST0ZJ
TEUiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiUFJPRklMRSJfc3RyOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kOgotICAgICAgICB0eXBlU3RyaW5n
ID0gIlBST0ZJTEVFTkQiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiUFJPRklMRUVORCJfc3Ry
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpJbWFnZToKLSAgICAgICAg
dHlwZVN0cmluZyA9ICJJTUFHRSJfczsKKyAgICAgICAgdHlwZVN0cmluZyA9ICJJTUFHRSJfc3Ry
OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE2MywxOSArMTYzLDE5IEBAIHN0YXRpYyB2
b2lkIGFwcGVuZE1lc3NhZ2VQcmVmaXgoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lCiAgICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkxvZzoKICAgICAgICAgLy8g
RGVmYXVsdCwgbm8gbmVlZCB0byBiZSBtb3JlIHNwZWNpZmljLgogICAgICAgICBpZiAodHlwZSA9
PSBNZXNzYWdlVHlwZTo6TG9nKQotICAgICAgICAgICAgbGV2ZWxTdHJpbmcgPSAiTE9HIl9zOwor
ICAgICAgICAgICAgbGV2ZWxTdHJpbmcgPSAiTE9HIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTWVzc2FnZUxldmVsOjpEZWJ1ZzoKLSAgICAgICAgbGV2ZWxTdHJpbmcgPSAiREVCVUci
X3M7CisgICAgICAgIGxldmVsU3RyaW5nID0gIkRFQlVHIl9zdHI7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTWVzc2FnZUxldmVsOjpJbmZvOgotICAgICAgICBsZXZlbFN0cmluZyA9ICJJTkZP
Il9zOworICAgICAgICBsZXZlbFN0cmluZyA9ICJJTkZPIl9zdHI7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTWVzc2FnZUxldmVsOjpXYXJuaW5nOgotICAgICAgICBsZXZlbFN0cmluZyA9ICJX
QVJOIl9zOworICAgICAgICBsZXZlbFN0cmluZyA9ICJXQVJOIl9zdHI7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTWVzc2FnZUxldmVsOjpFcnJvcjoKLSAgICAgICAgbGV2ZWxTdHJpbmcgPSAi
RVJST1IiX3M7CisgICAgICAgIGxldmVsU3RyaW5nID0gIkVSUk9SIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29uc29sZUNsaWVudDo6cHJp
bnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
CiAgICAgICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGNhbGxGcmFtZSA9IGNhbGxTdGFj
ay0+YXQoaSk7CiAgICAgICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1
bmN0aW9uTmFtZSgpOwogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lID0gIih1bmtub3duKSJfczsKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbk5hbWUgPSAiKHVua25vd24pIl9zdHI7CiAKICAgICAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgY2FsbEZyYW1lQnVpbGRlcjsKICAgICAgICAgICAgIGNhbGxGcmFtZUJ1aWxkZXIu
YXBwZW5kKGksICI6ICIsIGZ1bmN0aW9uTmFtZSwgJygnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAKaW5kZXggMGRkZTk4NzcyNzY2NTU5ODQ2
OTY0NWY0Mzk2YzIzMmM1NjZlNDNhMS4uZWZhNzI5MmYzODUxMjFjY2FiN2JlMTNiYTk3Njg4N2Rh
ZjBjMjQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29s
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9i
amVjdC5jcHAKQEAgLTM2LDExICszNiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBTdHJp
bmcgdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPCAxKQotICAgICAgICByZXR1cm4gImRlZmF1bHQiX3M7CisgICAgICAgIHJldHVybiAi
ZGVmYXVsdCJfc3RyOwogCiAgICAgYXV0byB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiAiZGVmYXVsdCJf
czsKKyAgICAgICAgcmV0dXJuICJkZWZhdWx0Il9zdHI7CiAKICAgICByZXR1cm4gdmFsdWUudG9X
VEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggODU0NWE1NTlhNzMyOGI1NTM3ZGI4MTI4M2M5
OGE2MzlkNmM0YTgzYi4uZWYwY2M1OTE0NzQ2ZjdmMjlkYzkxZDE2ZWYwOWU0NDQ4NTU5MjkyMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAK
QEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0ZURhdGVJbnN0
YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbQogICAgICAgICA/IHRo
aXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWNoZSkKICAgICAgICAgOiB0aGlzRGF0
ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FjaGUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRp
bWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZt
LCBTdHJpbmcoIkludmFsaWQgRGF0ZSJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJJbnZhbGlkIERhdGUiX3N0cikpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIGZvcm1hdERhdGVU
aW1lKCpncmVnb3JpYW5EYXRlVGltZSwgZm9ybWF0LCBhc1VUQ1ZhcmlhbnQpKSk7CiB9CkBAIC0y
NzMsMTYgKzI3MywxNiBAQCB2b2lkIERhdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIAotICAgIElkZW50aWZp
ZXIgdG9VVENTdHJpbmdOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRvVVRDU3Ry
aW5nIl9zKTsKKyAgICBJZGVudGlmaWVyIHRvVVRDU3RyaW5nTmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0b1VUQ1N0cmluZyJfc3RyKTsKICAgICBKU0Z1bmN0aW9uKiB0b1VUQ1N0
cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHRv
VVRDU3RyaW5nTmFtZS5zdHJpbmcoKSwgZGF0ZVByb3RvRnVuY1RvVVRDU3RyaW5nKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdG9VVENTdHJpbmdOYW1lLCB0b1VUQ1N0cmlu
Z0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0b0dNVFN0cmluZyJfcyksIHRvVVRDU3RyaW5nRnVuY3Rpb24sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRv
R01UU3RyaW5nIl9zdHIpLCB0b1VUQ1N0cmluZ0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAgICBKU0Z1bmN0aW9uKiB0b1By
aW1pdGl2ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEs
ICJbU3ltYm9sLnRvUHJpbWl0aXZlXSJfcywgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9s
LCBOb0ludHJpbnNpYyk7CisgICAgSlNGdW5jdGlvbiogdG9QcmltaXRpdmVGdW5jdGlvbiA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAiW1N5bWJvbC50b1ByaW1pdGl2
ZV0iX3N0ciwgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sLCBOb0ludHJpbnNpYyk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvUHJp
bWl0aXZlU3ltYm9sLCB0b1ByaW1pdGl2ZUZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCiAgICAgaWYgKE9wdGlvbnM6
OnVzZVRlbXBvcmFsKCkpIHsKLSAgICAgICAgSWRlbnRpZmllciB0b1RlbXBvcmFsSW5zdGFudE5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidG9UZW1wb3JhbEluc3RhbnQiX3MpOwor
ICAgICAgICBJZGVudGlmaWVyIHRvVGVtcG9yYWxJbnN0YW50TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0b1RlbXBvcmFsSW5zdGFudCJfc3RyKTsKICAgICAgICAgSlNGdW5jdGlv
biogdG9UZW1wb3JhbEluc3RhbnRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCAwLCB0b1RlbXBvcmFsSW5zdGFudE5hbWUuc3RyaW5nKCksIGRhdGVQcm90b0Z1
bmNUb1RlbXBvcmFsSW5zdGFudCk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB0b1RlbXBvcmFsSW5zdGFudE5hbWUsIHRvVGVtcG9yYWxJbnN0YW50RnVuY3Rpb24sIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9
CkBAIC0zMTQsMTEgKzMxNCwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3Rv
RnVuY1RvSVNPU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogCiAgICAgSW50
ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHRoaXNEYXRlT2JqLT5zdHJ1Y3R1cmVJRCgpKTsKICAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBEYXRlIl9zKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsICJJbnZhbGlkIERhdGUiX3N0cikpOwogCiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRp
bWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRD
KHZtLmRhdGVDYWNoZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZygiSW52YWxp
ZCBEYXRlIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIkludmFsaWQgRGF0ZSJfc3RyKSk7CiAgICAgLy8gTWF4aW11bSBhbW91bnQg
b2Ygc3BhY2Ugd2UgbmVlZCBpbiBidWZmZXI6IDcgKG1heC4gZGlnaXRzIGluIHllYXIpICsgMiAq
IDUgKDIgY2hhcmFjdGVycyBlYWNoIGZvciBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29u
ZCkgKyA0ICguICsgMyBkaWdpdHMgZm9yIG1pbGxpc2Vjb25kcykKICAgICAvLyA2IGZvciBmb3Jt
YXR0aW5nIGFuZCBvbmUgZm9yIG51bGwgdGVybWluYXRpb24gPSAyOC4gV2UgYWRkIG9uZSBleHRy
YSBjaGFyYWN0ZXIgdG8gYWxsb3cgdXMgdG8gZm9yY2UgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBj
aGFyIGJ1ZmZlclsyOF07CkBAIC05MTEsNyArOTExLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGRhdGVQcm90b0Z1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWwKIAogICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgdG9JU09WYWx1ZSk7CiAg
ICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b0lTT1N0cmluZyBp
cyBub3QgYSBmdW5jdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiJfc3RyKTsK
IAogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHRvSVNP
VmFsdWUpLCBjYWxsRGF0YSwgb2JqZWN0LCAqdm0uZW1wdHlMaXN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTkyOSw3ICs5MjksNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY1RvVGVtcG9yYWxJbnN0YW50LCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbAogCiAgICAgZG91YmxlIGVwb2NoTWlsbGlzZWNvbmRzID0g
dGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKCFpc0ludGVnZXIoZXBvY2hN
aWxsaXNlY29uZHMpKSAKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgaW50ZWdlciBu
dW1iZXIgb2YgRXBvY2ggTWlsbHNlY29uZHMiX3MpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
IkludmFsaWQgaW50ZWdlciBudW1iZXIgb2YgRXBvY2ggTWlsbHNlY29uZHMiX3N0cikpOwogCiAg
ICAgQVNTRVJUKGVwb2NoTWlsbGlzZWNvbmRzID49IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRf
dD46Om1pbigpICYmIGVwb2NoTWlsbGlzZWNvbmRzIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
NjRfdD46Om1heCgpKTsKICAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lID0gSVNPODYw
MTo6RXhhY3RUaW1lOjpmcm9tRXBvY2hNaWxsaXNlY29uZHMoZXBvY2hNaWxsaXNlY29uZHMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IGY2MzhiNjZkZWFlMDEw
ZmRmYjE1Y2IzMDJlZTliNDk0MDUzOWMwMTYuLjAzOTFjYTI0MWExY2Q3MTI2Nzk1M2E3NTA4MTJm
YjBlNjFmMGM5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAg
LTcwLDcgKzcwLDcgQEAgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEUKIAogSlNPYmplY3QqIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVy
cm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyKQogewotICAgIHJldHVybiBjcmVh
dGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3MsIGFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfc3RyLCBhcHBlbmRlciwgVHlwZU5vdGhpbmcpOwog
fQogCiBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlciBh
cHBlbmRlcikKQEAgLTMyOSwxMiArMzI5LDEyIEBAIEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAK
IEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewotICAgIHJldHVybiBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJTeW50YXgg
ZXJyb3IiX3MsIG51bGxwdHIpOworICAgIHJldHVybiBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxP
YmplY3QsICJTeW50YXggZXJyb3IiX3N0ciwgbnVsbHB0cik7CiB9CiAKIEpTT2JqZWN0KiBjcmVh
dGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4g
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIlR5cGUgZXJyb3IiX3MpOworICAgIHJldHVy
biBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiVHlwZSBlcnJvciJfc3RyKTsKIH0KIAog
SlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0zNTQsNyArMzU0LDcgQEAgSlNPYmplY3QqIGNyZWF0
ZVVSSUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIAogSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKLSAgICBhdXRvKiBlcnJvciA9IGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiT3V0IG9mIG1lbW9yeSJfcywgbnVsbHB0cik7CisgICAgYXV0byogZXJyb3Ig
PSBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk91dCBvZiBtZW1vcnkiX3N0ciwgbnVs
bHB0cik7CiAgICAganNDYXN0PEVycm9ySW5zdGFuY2UqPihlcnJvciktPnNldE91dE9mTWVtb3J5
RXJyb3IoKTsKICAgICByZXR1cm4gZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuaAppbmRleCA1NGIxNDk0NThmZjIyODcwZmRkYjgzMWZlYTk5Njc0ZDIyZDFhNTIyLi4w
ZjEyMDYyNjQ4NzUzYmIzNDBiZWQzM2Q4ZWRjOWUxNDkyMjhhNDM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTkzLDcgKzkzLDggQEAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNWYWx1ZSB0aHJvd0RPTUF0dHJpYnV0ZVNldHRlclR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCos
IFRocm8KIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVk
SlNWYWx1ZS4KIGlubGluZSB2b2lkIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgRXhjZXB0aW9uKiBleGNlcHRpb24pIHsgdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXhjZXB0aW9uKTsgfQogaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJv
d1Njb3BlJiBzY29wZSwgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yKSk7IH0KLWlubGluZSBFbmNv
ZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhy
b3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9y
KGdsb2JhbE9iamVjdCwgZXJyb3JNZXNzYWdlKSkpOyB9CitpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
dGhyb3dWTUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNj
b3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBlcnJvck1lc3NhZ2UpKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBlcnJv
ck1lc3NhZ2UpKSk7IH0KIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOyB9CiBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkg
eyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGVycm9yTWVzc2FnZSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCA3MzhlN2Y0
ZTEyN2UxN2RlZjJmNDU5Yzk4YmEwYTc3MjUwNTY1OThiLi43Y2JkZTg1Njg4ZmQzZDI4NTZiZmRj
MjM2N2QxZmIzZTFhZTVmMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIFN0cmluZyBFcnJvckluc3Rh
bmNlOjpzYW5pdGl6ZWROYW1lU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghbmFtZVZhbHVl
IHx8ICFuYW1lVmFsdWUuaXNQcmltaXRpdmUoKSkKLSAgICAgICAgcmV0dXJuICJFcnJvciJfczsK
KyAgICAgICAgcmV0dXJuICJFcnJvciJfc3RyOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgbmFtZVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKaW5kZXggZWY0MzFm
Mzk1ZTM0MjVhMjYzNTRlOTMyMGFjYzRmOTI1MmIzODI5Yy4uMjBlMTJjNDhlNTkyY2FkNzE2MzE5
NzY3MjUyM2M1YWE1Y2NmOGIyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcApAQCAtOTQsNyArOTQsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oZXJyb3JQcm90b0Z1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgLy8gNC4gSWYgbmFtZSBpcyB1bmRlZmluZWQsIHRoZW4gbGV0IG5hbWUgYmUg
IkVycm9yIjsgZWxzZSBsZXQgbmFtZSBiZSBUb1N0cmluZyhuYW1lKS4KICAgICBTdHJpbmcgbmFt
ZVN0cmluZzsKICAgICBpZiAobmFtZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBuYW1lU3RyaW5n
ID0gIkVycm9yIl9zOworICAgICAgICBuYW1lU3RyaW5nID0gIkVycm9yIl9zdHI7CiAgICAgZWxz
ZSB7CiAgICAgICAgIG5hbWVTdHJpbmcgPSBuYW1lLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKaW5kZXgg
YjQwMjM2MmQwYTRlZTQ2ODNhMzdhY2IzNjlmYzZlMGJhOGEzM2JlZS4uMzJiODRkNTQxMjk4YmJi
NWIzYzJiZmIzYjg1NDkzZTc1MjM3ZDIyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBFcnJvclByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJyb3JQcm90b3R5cGU+KHZtKSkgRXJy
b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3Jl
YXRpb24odm0sICJFcnJvciJfcyk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24o
dm0sICJFcnJvciJfc3RyKTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAKaW5kZXgg
NzI2YTQ1NjljNTU4NmUwMDg3YzU3ZjFjY2FiODVhNTYxODJmYmQxNy4uOGZmNWQ4NjYzYjZlODg3
ZTc3ODY1ZTNjZWJhMmQzMDdhMmQ5ZTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBkb0V4Y2Vw
dGlvbkZ1enppbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2Nv
cGUsIGNvbnN0IGMKICAgICAgICAgLy8gdG8gcGxhY2F0ZSB0aGUgZXhjZXB0aW9uIGNoZWNrIHZl
cmlmaWVyIGhlcmUuCiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoc2NvcGUuZXhjZXB0aW9uKCkg
fHwgIXNjb3BlLmV4Y2VwdGlvbigpKTsKIAotICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJFeGNlcHRpb24gRnV6eiJf
cykpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVF
cnJvcihnbG9iYWxPYmplY3QsICJFeGNlcHRpb24gRnV6eiJfc3RyKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CmluZGV4IDA5OWZmNzFjZDYyNjViOGQxY2E4YzkxZTM2MTEzNjFlZTBlZTdmYTMuLjJlOTg3MWU3
ZTVjMzQyOTJhYmFkNzA3NjBkY2IxMzU1Y2VhMDdhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgYXV0byogZXJyb3IgPSBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVk
LiJfcyk7CisgICAgYXV0byogZXJyb3IgPSBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
Ik1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiJfc3RyKTsKICAgICBqc0Nhc3Q8RXJy
b3JJbnN0YW5jZSo+KGVycm9yKS0+c2V0U3RhY2tPdmVyZmxvd0Vycm9yKCk7CiAgICAgcmV0dXJu
IGVycm9yOwogfQpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBTdHJpbmcgbm90QUZ1bmN0aW9u
U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0CiAg
ICAgYnVpbGRlci5hcHBlbmQoJyknKTsKIAogICAgIGlmIChidWlsZGVyLmhhc092ZXJmbG93ZWQo
KSkKLSAgICAgICAgcmV0dXJuICJvYmplY3QgaXMgbm90IGEgZnVuY3Rpb24uIl9zOworICAgICAg
ICByZXR1cm4gIm9iamVjdCBpcyBub3QgYSBmdW5jdGlvbi4iX3N0cjsKIAogICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0yMzMsMTIgKzIzMywxMiBAQCBpbmxpbmUgU3RyaW5n
IGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBj
b250ZW50LCBjbwogCiBzdGF0aWMgU3RyaW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mTm90
RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSBydW50aW1lVHlwZSwgRXJyb3JJbnN0
YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQogewotICAgIHJl
dHVybiBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZlNvdXJjZUFwcGVuZGVyKCIgaXMgbm90IGEg
ZnVuY3Rpb24iX3MsIG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCwgcnVudGltZVR5cGUsIG9j
Y3VycmVuY2UpOworICAgIHJldHVybiBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZlNvdXJjZUFw
cGVuZGVyKCIgaXMgbm90IGEgZnVuY3Rpb24iX3N0ciwgb3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VU
ZXh0LCBydW50aW1lVHlwZSwgb2NjdXJyZW5jZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgaW52YWxp
ZFBhcmFtZXRlckluc3RhbmNlb2ZoYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb25Tb3VyY2VBcHBl
bmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VU
ZXh0LCBSdW50aW1lVHlwZSBydW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdo
ZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQogewotICAgIHJldHVybiBpbnZhbGlkUGFyYW1l
dGVySW5zdGFuY2VvZlNvdXJjZUFwcGVuZGVyKCJbU3ltYm9sLmhhc0luc3RhbmNlXSBpcyBub3Qg
YSBmdW5jdGlvbiwgdW5kZWZpbmVkLCBvciBudWxsIl9zLCBvcmlnaW5hbE1lc3NhZ2UsIHNvdXJj
ZVRleHQsIHJ1bnRpbWVUeXBlLCBvY2N1cnJlbmNlKTsKKyAgICByZXR1cm4gaW52YWxpZFBhcmFt
ZXRlckluc3RhbmNlb2ZTb3VyY2VBcHBlbmRlcigiW1N5bWJvbC5oYXNJbnN0YW5jZV0gaXMgbm90
IGEgZnVuY3Rpb24sIHVuZGVmaW5lZCwgb3IgbnVsbCJfc3RyLCBvcmlnaW5hbE1lc3NhZ2UsIHNv
dXJjZVRleHQsIHJ1bnRpbWVUeXBlLCBvY2N1cnJlbmNlKTsKIH0KIAogc3RhdGljIFN0cmluZyBp
bnZhbGlkUHJvdG90eXBlU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6
OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKQEAgLTI1MCw3ICsyNTAs
NyBAQCBzdGF0aWMgU3RyaW5nIGludmFsaWRQcm90b3R5cGVTb3VyY2VBcHBlbmRlcihjb25zdCBT
dHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29ucwogICAgIGlmIChleHRlbmRzSW5kZXggPT0gbm90
Rm91bmQgfHwgc291cmNlVGV4dC5maW5kKCJleHRlbmRzIikgIT0gZXh0ZW5kc0luZGV4KQogICAg
ICAgICByZXR1cm4gbWFrZVN0cmluZyhvcmlnaW5hbE1lc3NhZ2UsICIgKGV2YWx1YXRpbmcgJyIs
IHNvdXJjZVRleHQsICInKSIpOwogCi0gICAgcmV0dXJuICJUaGUgdmFsdWUgb2YgdGhlIHN1cGVy
Y2xhc3MncyBwcm90b3R5cGUgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdCBvciBudWxsLiJfczsK
KyAgICByZXR1cm4gIlRoZSB2YWx1ZSBvZiB0aGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBwcm9w
ZXJ0eSBpcyBub3QgYW4gb2JqZWN0IG9yIG51bGwuIl9zdHI7CiB9CiAKIEpTT2JqZWN0KiBjcmVh
dGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIEVycm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyIGFwcGVuZGVy
KQpAQCAtMjc5LDQyICsyNzksNDIgQEAgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYKIAogSlNPYmpl
Y3QqIGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgInNlY29uZCBhcmd1bWVudCB0byBGdW5jdGlvbi5wcm90b3R5
cGUuYXBwbHkgbXVzdCBiZSBhbiBBcnJheS1saWtlIG9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFw
cGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGdsb2JhbE9iamVjdC0+dm0oKSwgdmFsdWUpKTsK
KyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgInNlY29uZCBhcmd1bWVu
dCB0byBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgbXVzdCBiZSBhbiBBcnJheS1saWtlIG9iamVj
dCJfc3RyLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoZ2xvYmFs
T2JqZWN0LT52bSgpLCB2YWx1ZSkpOwogfQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZEluUGFy
YW1ldGVyRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
IHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImlzIG5vdCBh
biBPYmplY3QuIl9zLCBpbnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcik7CisgICAgcmV0
dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpcyBub3QgYW4gT2JqZWN0LiJf
c3RyLCBpbnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcik7CiB9CiAKIEpTT2JqZWN0KiBj
cmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9yTm90RnVuY3Rpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRl
RXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIiBpcyBub3QgYSBmdW5jdGlvbiJfcywgaW52YWxp
ZFBhcmFtZXRlckluc3RhbmNlb2ZOb3RGdW5jdGlvblNvdXJjZUFwcGVuZGVyKTsKKyAgICByZXR1
cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIiBpcyBub3QgYSBmdW5jdGlvbiJf
c3RyLCBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIp
OwogfQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvckhh
c0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQogewotICAgIHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZh
bHVlLCAiW1N5bWJvbC5oYXNJbnN0YW5jZV0gaXMgbm90IGEgZnVuY3Rpb24sIHVuZGVmaW5lZCwg
b3IgbnVsbCJfcywgaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZoYXNJbnN0YW5jZVZhbHVlTm90
RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcik7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9i
amVjdCwgdmFsdWUsICJbU3ltYm9sLmhhc0luc3RhbmNlXSBpcyBub3QgYSBmdW5jdGlvbiwgdW5k
ZWZpbmVkLCBvciBudWxsIl9zdHIsIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9maGFzSW5zdGFu
Y2VWYWx1ZU5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOwogfQogCiBKU09iamVjdCogY3JlYXRl
Tm90QUNvbnN0cnVjdG9yRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwg
ImlzIG5vdCBhIGNvbnN0cnVjdG9yIl9zLCBkZWZhdWx0U291cmNlQXBwZW5kZXIpOworICAgIHJl
dHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGEgY29uc3RydWN0
b3IiX3N0ciwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZU5v
dEFGdW5jdGlvbkVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpcyBu
b3QgYSBmdW5jdGlvbiJfcywgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOworICAgIHJldHVy
biBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGEgZnVuY3Rpb24iX3N0
ciwgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOwogfQogCiBKU09iamVjdCogY3JlYXRlTm90
QW5PYmplY3RFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewotICAgIHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90
IGFuIG9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKTsKKyAgICByZXR1cm4gY3JlYXRl
RXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImlzIG5vdCBhbiBvYmplY3QiX3N0ciwgZGVmYXVs
dFNvdXJjZUFwcGVuZGVyKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcm90b3R5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewotICAg
IHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGFuIG9iamVj
dCBvciBudWxsIl9zLCBpbnZhbGlkUHJvdG90eXBlU291cmNlQXBwZW5kZXIpOworICAgIHJldHVy
biBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGFuIG9iamVjdCBvciBu
dWxsIl9zdHIsIGludmFsaWRQcm90b3R5cGVTb3VyY2VBcHBlbmRlcik7CiB9CiAKIEpTT2JqZWN0
KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpAQCAtMzI0LDI3ICszMjQs
MjcgQEAgSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY28KIAogSlNPYmplY3QqIGNyZWF0ZVREWkVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKGdsb2JhbE9iamVjdCwgIkNhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJp
YWJsZS4iKTsKKyAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
Q2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiJfc3RyKTsKIH0KIAogSlNPYmpl
Y3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VT
dHJpbmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3Vy
Y2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgZmllbGQiX3N0ciwgZGVm
YXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVS
ZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNh
bm5vdCByZWRlZmluZSBleGlzdGluZyBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBl
bmRlciwgVHlwZU5vdGhpbmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiQ2Fubm90IHJlZGVmaW5lIGV4aXN0aW5nIHByaXZhdGUgZmllbGQiX3N0ciwgZGVmYXVs
dFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVQcml2
YXRlTWV0aG9kQWNjZXNzRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90
IGFjY2VzcyBwcml2YXRlIG1ldGhvZCBvciBhY2Vzc29yIl9zKSwgZGVmYXVsdFNvdXJjZUFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsICJDYW5ub3QgYWNjZXNzIHByaXZhdGUgbWV0aG9kIG9yIGFjZXNzb3IiX3N0ciwgZGVmYXVs
dFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVSZWlu
c3RhbGxQcml2YXRlTWV0aG9kRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
LSAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fu
bm90IGluc3RhbGwgc2FtZSBwcml2YXRlIG1ldGhvZHMgb24gb2JqZWN0IG1vcmUgdGhhbiBvbmNl
Il9zKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNy
ZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgaW5zdGFsbCBzYW1lIHByaXZhdGUg
bWV0aG9kcyBvbiBvYmplY3QgbW9yZSB0aGFuIG9uY2UiX3N0ciwgZGVmYXVsdFNvdXJjZUFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcAppbmRleCBmMzFkYjg2YTc5NjE2ZTQ1YThkYzExNWFh
MjY1NzBhYzNjN2U2NmY1Li5kMGQ3YmU1MTYxNGYyMmJmOGQxMGE5OWNiMmEzMGZhOWM2ZjNiYjkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcApAQCAtNDEsNyArNDEsNyBAQCBj
b25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6cwogCiB2b2lkIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUqIHByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgIkZpbmFs
aXphdGlvblJlZ2lzdHJ5Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVy
ZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiRmluYWxpemF0
aW9uUmVnaXN0cnkiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKIH0KIApAQCAtNjYsNyArNjYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
Y29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS5pc0NhbGxhYmxlKHZtKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEZpbmFs
aXphdGlvblJlZ2lzdHJ5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRv
IEZpbmFsaXphdGlvblJlZ2lzdHJ5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zdHIpOwogCiAgICAg
SlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOwog
ICAgIFN0cnVjdHVyZSogZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1Y3R1cmUgPSBKU0NfR0VUX0RF
UklWRURfU1RSVUNUVVJFKHZtLCBmaW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSwgbmV3VGFy
Z2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3Bw
CmluZGV4IDg1M2U0YWE4NzRjYjUxMDBhMzYzYjJjMDAxNDMzNTNjZmZhNWIwOWMuLjE0YzEwNzBj
MjMzZGY2Zjk5MjZiMmNjZDA4ZTk2OTgzNzBlNzY0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaW5hbGl6
YXRpb25SZWdpc3RyeSogZ2V0RmluYWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBKU0cKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFko
IXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJDYWxsZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gbm9uLW9i
amVjdCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJD
YWxsZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gbm9uLW9iamVjdCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC02MSw3ICs2MSw3IEBAIEFMV0FZ
U19JTkxJTkUgc3RhdGljIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGdldEZpbmFsaXphdGlvblJl
Z2lzdHJ5KFZNJiB2bSwgSlNHCiAgICAgaWYgKExJS0VMWShncm91cCkpCiAgICAgICAgIHJldHVy
biBncm91cDsKIAotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxs
ZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gYSBub24tRmluYWxpemF0aW9uUmVn
aXN0cnkgb2JqZWN0Il9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIGEgbm9uLUZpbmFsaXph
dGlvblJlZ2lzdHJ5IG9iamVjdCJfc3RyKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAt
NzUsMTUgKzc1LDE1IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihwcm90b0Z1bmNGaW5hbGl6
YXRpb25SZWdpc3RyeVJlZ2lzdGVyLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBKU1ZhbHVlIHRh
cmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InJlZ2lzdGVyIHJlcXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdGFyZ2V0Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJl
cXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdGFyZ2V0Il9zdHIpOwogCiAgICAgSlNWYWx1ZSBob2xk
aW5ncyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKHRhcmdldCA9PSBob2xkaW5n
cykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InJlZ2lzdGVyIGV4cGVjdHMgdGhlIHRhcmdldCBvYmplY3QgYW5kIHRoZSBob2xkaW5ncyBwYXJh
bWV0ZXIgYXJlIG5vdCB0aGUgc2FtZS4gT3RoZXJ3aXNlLCB0aGUgdGFyZ2V0IGNhbiBuZXZlciBi
ZSBjb2xsZWN0ZWQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgZXhwZWN0cyB0aGUgdGFyZ2V0IG9iamVjdCBhbmQgdGhl
IGhvbGRpbmdzIHBhcmFtZXRlciBhcmUgbm90IHRoZSBzYW1lLiBPdGhlcndpc2UsIHRoZSB0YXJn
ZXQgY2FuIG5ldmVyIGJlIGNvbGxlY3RlZCJfc3RyKTsKIAogICAgIEpTVmFsdWUgdW5yZWdpc3Rl
clRva2VuID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKICAgICBpZiAoIXVucmVnaXN0ZXJUb2tl
bi5pc1VuZGVmaW5lZCgpICYmICF1bnJlZ2lzdGVyVG9rZW4uaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJl
cXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9rZW4iX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIg
cmVxdWlyZXMgYW4gb2JqZWN0IGFzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfc3RyKTsKIAog
ICAgIGdyb3VwLT5yZWdpc3RlclRhcmdldCh2bSwgdGFyZ2V0LmdldE9iamVjdCgpLCBob2xkaW5n
cywgdW5yZWdpc3RlclRva2VuKTsKICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CkBA
IC0xMDIsNyArMTAyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHByb3RvRnVuY0ZpbmFs
aXphdGlvblJlZ2lzdHJ5VW5yZWdpc3RlciwgKEpTR2xvYmFsT2JqZWMKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVucmVnaXN0ZXIgcmVxdWly
ZXMgYW4gb2JqZWN0IGlzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7CisgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVucmVnaXN0ZXIgcmVxdWly
ZXMgYW4gb2JqZWN0IGlzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfc3RyKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKaW5kZXggYTE3NjQ3YWM5YWEyM2U3NTQ3NTY3MmU0YzZlYjUyZmQwNTllNGI2Yy4uZWU5
ZWZhMzQ5NDYxODdhNzU4NThiZTcwNzRmNmRjOTFjMTRlZGQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xNDUs
NyArMTQ1LDcgQEAgSlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUoKSkgewog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKLSAg
ICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiZnVuY3Rpb24qICI7CisgICAgICAgIGZ1bmN0aW9uSGVh
ZGVyID0gImZ1bmN0aW9uKiAiX3N0cjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgpAQCAtMTU5LDI2ICsxNTksMjYgQEAgSlNT
dHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9k
eU1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6Ci0g
ICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0aW9uICI7CisgICAgICAgIGZ1bmN0aW9uSGVh
ZGVyID0gImZ1bmN0aW9uICJfc3RyOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiIjsK
KyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSBlbXB0eVN0cmluZygpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRl
ciA9ICJhc3luYyBmdW5jdGlvbiAiOworICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBm
dW5jdGlvbiAiX3N0cjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5
bmMgIjsKKyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5bmMgIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlckZ1
bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFw
cGVyTWV0aG9kTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5bmMgZnVuY3Rpb24q
ICI7CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jIGZ1bmN0aW9uKiAiX3N0cjsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IDdm
YTNiMjExNjIzNjg3YzFhOTliMzU1MThkMmI0ZDA0MjdkNDc3NjAuLmJmYjlkM2JiYTY4ZmNjY2Ex
ZDBiOTc3ODJkNDE0ZTEwNTE2OWJhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0CiAKIHZvaWQgR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDEsICJHZW5lcmF0b3JGdW5jdGlvbiJfcywgUHJvcGVydHlBZGRp
dGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgMSwgIkdlbmVyYXRvckZ1bmN0aW9uIl9zdHIsIFByb3BlcnR5QWRkaXRpb25N
b2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApp
bmRleCBkNWJjNDk0MDk1N2U1NTJiZjY0YTUwYTU5MDJjMTEwYzE1MjZkYjkxLi5mMmZiNzc5MzAx
OWVlMTJiOTE2ODU1YTFiYzViNzljMDQ2OGY4MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
IEpTR2xvYmFsT2JqZWN0KiBnZXRGdW5jdGlvblJlYWxtKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIGlmIChvYmplY3QtPnR5cGUoKSA9PSBQ
cm94eU9iamVjdFR5cGUpIHsKICAgICAgICAgICAgIGF1dG8qIHByb3h5ID0ganNDYXN0PFByb3h5
T2JqZWN0Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIGlmIChwcm94eS0+aXNSZXZva2VkKCkpIHsK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fu
bm90IGdldCBmdW5jdGlvbiByZWFsbSBmcm9tIHJldm9rZWQgUHJveHkiX3MpOworICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgZ2V0IGZ1
bmN0aW9uIHJlYWxtIGZyb20gcmV2b2tlZCBQcm94eSJfc3RyKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdCA9IHByb3h5
LT50YXJnZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuY3BwCmluZGV4IGI2YmI3NTE1ODBkNzY4MmUxNjZhNDU5NjVmMzIzMjliZTJjNGM2NTUuLjM2
NTNjOTY0OWZhMzFlZGNiNGQyNjRlYzI5YTI1MGVkM2U3Y2NhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAtMTA3LDE0ICsxMDcsMTQg
QEAgVmVjdG9yPFN0cmluZz4gSW50bENvbGxhdG9yOjpzb3J0TG9jYWxlRGF0YShjb25zdCBTdHJp
bmcmIGxvY2FsZSwgUmVsZXZhbnRFeHRlbnMKICAgICB9CiAgICAgY2FzZSBSZWxldmFudEV4dGVu
c2lvbktleTo6S2Y6CiAgICAgICAgIGtleUxvY2FsZURhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eSgzKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImZhbHNlIl9zKTsK
LSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImxvd2VyIl9zKTsKLSAgICAg
ICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoInVwcGVyIl9zKTsKKyAgICAgICAga2V5
TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImZhbHNlIl9zdHIpOworICAgICAgICBrZXlMb2Nh
bGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgibG93ZXIiX3N0cik7CisgICAgICAgIGtleUxvY2FsZURh
dGEudW5jaGVja2VkQXBwZW5kKCJ1cHBlciJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBSZWxldmFudEV4dGVuc2lvbktleTo6S246CiAgICAgICAgIGtleUxvY2FsZURhdGEucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eSgyKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBl
bmQoImZhbHNlIl9zKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoInRy
dWUiX3MpOworICAgICAgICBrZXlMb2NhbGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgiZmFsc2UiX3N0
cik7CisgICAgICAgIGtleUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5kKCJ0cnVlIl9zdHIpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTEzNCwxNCArMTM0LDE0IEBAIFZlY3RvcjxTdHJpbmc+IEludGxDb2xsYXRvcjo6c2Vh
cmNoTG9jYWxlRGF0YShjb25zdCBTdHJpbmcmLCBSZWxldmFudEV4dGVuc2lvbktlCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUmVsZXZhbnRFeHRlbnNpb25LZXk6OktmOgogICAgICAgICBrZXlM
b2NhbGVEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMyk7Ci0gICAgICAgIGtleUxvY2FsZURh
dGEudW5jaGVja2VkQXBwZW5kKCJmYWxzZSJfcyk7Ci0gICAgICAgIGtleUxvY2FsZURhdGEudW5j
aGVja2VkQXBwZW5kKCJsb3dlciJfcyk7Ci0gICAgICAgIGtleUxvY2FsZURhdGEudW5jaGVja2Vk
QXBwZW5kKCJ1cHBlciJfcyk7CisgICAgICAgIGtleUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5k
KCJmYWxzZSJfc3RyKTsKKyAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImxv
d2VyIl9zdHIpOworICAgICAgICBrZXlMb2NhbGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgidXBwZXIi
X3N0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVsZXZhbnRFeHRlbnNpb25LZXk6Oktu
OgogICAgICAgICBrZXlMb2NhbGVEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAg
ICAgIGtleUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5kKCJmYWxzZSJfcyk7Ci0gICAgICAgIGtl
eUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5kKCJ0cnVlIl9zKTsKKyAgICAgICAga2V5TG9jYWxl
RGF0YS51bmNoZWNrZWRBcHBlbmQoImZhbHNlIl9zdHIpOworICAgICAgICBrZXlMb2NhbGVEYXRh
LnVuY2hlY2tlZEFwcGVuZCgidHJ1ZSJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9p
ZCBJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGxvY2EKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKICAgICAgICAgaWYgKCFjb2xsYXRpb24uaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoY29sbGF0aW9uKSkgewotICAgICAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiY29sbGF0aW9u
IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGNvbGxhdGlvbiB2YWx1ZSJfcyk7CisgICAgICAgICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjb2xsYXRpb24gaXMgbm90
IGEgd2VsbC1mb3JtZWQgY29sbGF0aW9uIHZhbHVlIl9zdHIpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxvY2FsZU9wdGlvbnNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpDbyldID0gV1RGTW92ZShjb2xsYXRp
b24pOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgSW50bENvbGxhdG9yOjppbml0aWFsaXplQ29s
bGF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhCiAgICAgVHJp
U3RhdGUgbnVtZXJpYyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
dm0ucHJvcGVydHlOYW1lcy0+bnVtZXJpYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICBpZiAobnVtZXJpYyAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkK
LSAgICAgICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRl
bnNpb25LZXk6OktuKV0gPSBTdHJpbmcobnVtZXJpYyA9PSBUcmlTdGF0ZTo6VHJ1ZSA/ICJ0cnVl
Il9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUmVsZXZhbnRFeHRlbnNpb25LZXk6OktuKV0gPSBudW1lcmljID09IFRyaVN0YXRlOjpU
cnVlID8gInRydWUiX3N0ciA6ICJmYWxzZSJfc3RyOwogCiAgICAgU3RyaW5nIGNhc2VGaXJzdE9w
dGlvbiA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jYXNlRmlyc3QsIHsgInVwcGVyIiwgImxvd2VyIiwgImZhbHNlIiB9LCAiY2FzZUZp
cnN0IG11c3QgYmUgZWl0aGVyIFwidXBwZXJcIiwgXCJsb3dlclwiLCBvciBcImZhbHNlXCIiLCBu
dWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwpAQCAtMTk4
LDEyICsxOTgsMTIgQEAgdm9pZCBJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2EKIAogICAgIG1fbG9jYWxlID0g
cmVzb2x2ZWQubG9jYWxlOwogICAgIGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXpl
IENvbGxhdG9yIGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBDb2xsYXRvciBk
dWUgdG8gaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBjb25zdCBTdHJpbmcmIGNvbGxhdGlvbiA9IHJlc29sdmVkLmV4dGVuc2lvbnNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpDbyldOwotICAgIG1fY29sbGF0aW9u
ID0gY29sbGF0aW9uLmlzTnVsbCgpID8gImRlZmF1bHQiX3MgOiBjb2xsYXRpb247CisgICAgbV9j
b2xsYXRpb24gPSBjb2xsYXRpb24uaXNOdWxsKCkgPyAiZGVmYXVsdCJfc3RyIDogY29sbGF0aW9u
OwogICAgIG1fbnVtZXJpYyA9IHJlc29sdmVkLmV4dGVuc2lvbnNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpLbildID09ICJ0cnVlIl9zOwogCiAgICAgY29uc3Qg
U3RyaW5nJiBjYXNlRmlyc3RTdHJpbmcgPSByZXNvbHZlZC5leHRlbnNpb25zW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6S2YpXTsKQEAgLTI0Myw3ICsyNDMsNyBA
QCB2b2lkIEludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOwogICAgIG1fY29sbGF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNvbGxhdG9yLCBVQ29s
bGF0b3JEZWxldGVyPih1Y29sX29wZW4oZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwg
JnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgQ29sbGF0
b3IiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgQ29sbGF0b3IiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTMxNyw3ICszMTcsNyBAQCBKU1ZhbHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmlu
Z3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyB4LAogICAgICAgICBy
ZXR1cm4gdWNvbF9zdHJjb2xsKG1fY29sbGF0b3IuZ2V0KCksIHgudXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzKCksIHgubGVuZ3RoKCksIHkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHkubGVuZ3RoKCkp
OwogICAgIH0oKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iX3MpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVj
dCwgIkZhaWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIl9zdHIpKTsKICAgICByZXR1cm4ganNOdW1i
ZXIocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDBiYzVhYTM3ZDdjZGUwMjAz
M2Q3M2U5Zjg1Y2IyZTEzMTczMTAzMjkuLmNlNmU4NzJlYmI3MDdmZDU0YTA1NzBmN2YwMDRhOTE5
NDgwOGE2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgSW50bENvbGxh
dG9yQ29uc3RydWN0b3I6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAKIHZvaWQgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3RvdHlwZSkKIHsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIkNvbGxhdG9yIl9zLCBQcm9wZXJ0eUFk
ZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCAwLCAiQ29sbGF0b3IiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBjb2xsYXRvclByb3RvdHlwZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIGNvbGxhdG9yUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDA1OWMxOTVmYjAzNTVkNDU1MDcxNmFlYjg0YzU5
OTAxYzgyZDQ1MzEuLmQwNmM3Mzk2ZGVkZmFlOGRmYWEwOTFhOWMwM2VmNjczOWUwNzg3Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
UHJvdG90eXBlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
UihpbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGds
CiAgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0b3Igb2JqZWN0LgogICAgIElu
dGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFjb2xsYXRvcikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIENvbGxhdG9yIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90eXBl
LmNvbXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBDb2xsYXRvciJfc3RyKSk7CiAK
ICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFyZSA9IGNvbGxhdG9yLT5ib3VuZENvbXBh
cmUoKTsKICAgICAvLyAyLiBJZiBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIGlzIHVuZGVmaW5l
ZCwKQEAgLTEyMiw3ICsxMjIsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bENvbGxh
dG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29sbGF0b3ItPmdsb2JhbE9iamVjdCh2bSk7
CiAgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBh
cyBkZWZpbmVkIGluIDExLjMuNC4KICAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxl
bmd0aCBwcm9wZXJ0eSBpcyAyLgotICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMiwgImNvbXBhcmUiX3MsIGludGxD
b2xsYXRvckZ1bmNDb21wYXJlLCBOb0ludHJpbnNpYyk7CisgICAgICAgIEpTRnVuY3Rpb24qIHRh
cmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAyLCAiY29t
cGFyZSJfc3RyLCBpbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSwgTm9JbnRyaW5zaWMpOwogCiAgICAg
ICAgIC8vIGMuIExldCBiYyBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7
KS4KICAgICAgICAgYm91bmRDb21wYXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwgbnVsbHB0ciwgMiwgbnVsbHB0cik7
CkBAIC0xNDIsNyArMTQyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxDb2xsYXRv
clByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbE9iamUKICAgICAvLyAxMC4z
LjUgSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIu
MCkKICAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0
b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjb2xsYXRvcikKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgQ29sbGF0b3IiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Db2xs
YXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgQ29sbGF0b3IiX3N0cikpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY29sbGF0b3ItPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcAppbmRleCBjMmQ0OWRhOThhNjYwYmM2MmIwNGFmZTE5YzU3OGYyNTkyZmQ0YmI5Li4w
NGY1OTRlM2Q5MWFhNmY4NTg4YjQ3OWE0NzM1NGQzYjg2NTFjYTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTE0
NSw3ICsxNDUsNyBAQCBzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZShjb25z
dCBTdHJpbmcmIHRpbWVab25lTmFtZSkKIAogICAgIC8vIDMuIElmIGlhbmFUaW1lWm9uZSBpcyAi
RXRjL1VUQyIgb3IgIkV0Yy9HTVQiLCB0aGVuIHJldHVybiAiVVRDIi4KICAgICBpZiAoaXNVVENF
cXVpdmFsZW50KGNhbm9uaWNhbCkpCi0gICAgICAgIHJldHVybiAiVVRDIl9zOworICAgICAgICBy
ZXR1cm4gIlVUQyJfc3RyOwogCiAgICAgLy8gNC4gUmV0dXJuIGlhbmFUaW1lWm9uZS4KICAgICBy
ZXR1cm4gY2Fub25pY2FsOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIFZlY3RvcjxTdHJpbmc+IEludGxE
YXRlVGltZUZvcm1hdDo6bG9jYWxlRGF0YShjb25zdCBTdHJpbmcmIGxvY2FsZSwgUmVsZXZhbnRF
eHRlCiAgICAgICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZChjYWxlbmRhcik7CiAgICAgICAg
ICAgICAvLyBBZGRpbmcgImlzbGFtaWNjIiBjYW5kaWRhdGUgZm9yIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHkuCiAgICAgICAgICAgICBpZiAoY2FsZW5kYXIgPT0gImlzbGFtaWMtY2l2aWwiX3MpCi0g
ICAgICAgICAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImlzbGFtaWNjIl9zKTsKKyAgICAg
ICAgICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZCgiaXNsYW1pY2MiX3N0cik7CiAgICAgICAg
ICAgICBpZiAoYXV0byBtYXBwZWQgPSBtYXBJQ1VDYWxlbmRhcktleXdvcmRUb0JDUDQ3KGNhbGVu
ZGFyKSkKICAgICAgICAgICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZChXVEZNb3ZlKG1hcHBl
ZC52YWx1ZSgpKSk7CiAgICAgICAgIH0KQEAgLTE3NywxMCArMTc3LDEwIEBAIFZlY3RvcjxTdHJp
bmc+IEludGxEYXRlVGltZUZvcm1hdDo6bG9jYWxlRGF0YShjb25zdCBTdHJpbmcmIGxvY2FsZSwg
UmVsZXZhbnRFeHRlCiAgICAgY2FzZSBSZWxldmFudEV4dGVuc2lvbktleTo6SGM6CiAgICAgICAg
IC8vIE51bGwgZGVmYXVsdCBzbyB3ZSBrbm93IHRvIHVzZSAnaicgaW4gcGF0dGVybi4KICAgICAg
ICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoU3RyaW5nKCkpOwotICAgICAgICBrZXlMb2NhbGVEYXRh
LmFwcGVuZCgiaDExIl9zKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgxMiJfcyk7
Ci0gICAgICAgIGtleUxvY2FsZURhdGEuYXBwZW5kKCJoMjMiX3MpOwotICAgICAgICBrZXlMb2Nh
bGVEYXRhLmFwcGVuZCgiaDI0Il9zKTsKKyAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgx
MSJfc3RyKTsKKyAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgxMiJfc3RyKTsKKyAgICAg
ICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgyMyJfc3RyKTsKKyAgICAgICAga2V5TG9jYWxlRGF0
YS5hcHBlbmQoImgyNCJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWxldmFudEV4
dGVuc2lvbktleTo6TnU6CiAgICAgICAgIGtleUxvY2FsZURhdGEgPSBudW1iZXJpbmdTeXN0ZW1z
Rm9yTG9jYWxlKGxvY2FsZSk7CkBAIC0yODcsNyArMjg3LDcgQEAgc3RhdGljIEpTT2JqZWN0KiB0
b0RhdGVUaW1lT3B0aW9uc0FueURhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZQogICAgICAgICAvLyBhLiBGb3IgZWFjaCBvZiB0aGUgcHJvcGVydHkgbmFtZXMgInllYXIi
LCAibW9udGgiLCAiZGF5IjoKICAgICAgICAgLy8gaS4gTGV0IHN0YXR1cyBiZSBDcmVhdGVEYXRl
UHJvcGVydHlPclRocm93KG9wdGlvbnMsIHByb3AsICJudW1lcmljIikuCiAgICAgICAgIC8vIGlp
LiBSZXR1cm5JZkFicnVwdChzdGF0dXMpLgotICAgICAgICBKU1N0cmluZyogbnVtZXJpYyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIm51bWVyaWMiX3MpOworICAgICAgICBKU1N0cmluZyogbnVt
ZXJpYyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm51bWVyaWMiX3N0cik7CiAKICAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT55ZWFyLCBudW1lcmljKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTYwOCw3ICs2MDgs
NyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICBpZiAoIWNhbGVuZGFyLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICgh
aXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoY2FsZW5kYXIpKSB7Ci0gICAgICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNhbGVuZGFyIGlzIG5vdCBhIHdl
bGwtZm9ybWVkIGNhbGVuZGFyIHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiY2FsZW5kYXIgaXMgbm90IGEgd2VsbC1mb3JtZWQgY2Fs
ZW5kYXIgdmFsdWUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25L
ZXk6OkNhKV0gPSBjYWxlbmRhcjsKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lkIEludGxEYXRlVGlt
ZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAo
IW51bWJlcmluZ1N5c3RlbS5pc051bGwoKSkgewogICAgICAgICBpZiAoIWlzVW5pY29kZUxvY2Fs
ZUlkZW50aWZpZXJUeXBlKG51bWJlcmluZ1N5c3RlbSkpIHsKLSAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdl
bGwtZm9ybWVkIG51bWJlcmluZyBzeXN0ZW0gdmFsdWUiX3MpOworICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXJpbmdTeXN0ZW0gaXMgbm90IGEg
d2VsbC1mb3JtZWQgbnVtYmVyaW5nIHN5c3RlbSB2YWx1ZSJfc3RyKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVPcHRpb25zW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6TnUpXSA9IG51bWJlcmluZ1N5c3RlbTsKQEAgLTY0
Myw3ICs2NDMsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBtX2xvY2FsZSA9IHJl
c29sdmVkLmxvY2FsZTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBE
YXRlVGltZUZvcm1hdCBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRp
bWVGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRp
YWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAg
ICAvLyAgICAgaWlpLiBJZiBwIGlzIG5vdCB1bmRlZmluZWQsIHRoZW4KICAgICAgICAgLy8gICAg
ICAgICAxLiBUaHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmICh3ZWVrZGF5
ICE9IFdlZWtkYXk6Ok5vbmUgfHwgZXJhICE9IEVyYTo6Tm9uZSB8fCB5ZWFyICE9IFllYXI6Ok5v
bmUgfHwgbW9udGggIT0gTW9udGg6Ok5vbmUgfHwgZGF5ICE9IERheTo6Tm9uZSB8fCBkYXlQZXJp
b2QgIT0gRGF5UGVyaW9kOjpOb25lIHx8IGhvdXIgIT0gSG91cjo6Tm9uZSB8fCBtaW51dGUgIT0g
TWludXRlOjpOb25lIHx8IHNlY29uZCAhPSBTZWNvbmQ6Ok5vbmUgfHwgZnJhY3Rpb25hbFNlY29u
ZERpZ2l0cyAhPSAwIHx8IHRpbWVab25lTmFtZSAhPSBUaW1lWm9uZU5hbWU6Ok5vbmUpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJkYXRlU3R5bGUg
YW5kIHRpbWVTdHlsZSBtYXkgbm90IGJlIHVzZWQgd2l0aCBvdGhlciBEYXRlVGltZUZvcm1hdCBv
cHRpb25zIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJkYXRlU3R5bGUgYW5kIHRpbWVTdHlsZSBtYXkgbm90IGJlIHVzZWQgd2l0aCBvdGhlciBE
YXRlVGltZUZvcm1hdCBvcHRpb25zIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTkyNSwxMyArOTI1LDEzIEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAg
ICAgU3RyaW5nVmlldyB0aW1lWm9uZVZpZXcobV90aW1lWm9uZSk7CiAgICAgICAgIGF1dG8gZGF0
ZUZvcm1hdEZyb21TdHlsZSA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZUZvcm1hdCwgVURhdGVGb3Jt
YXREZWxldGVyPih1ZGF0X29wZW4ocGFyc2VVRGF0ZUZvcm1hdFN0eWxlKG1fdGltZVN0eWxlKSwg
cGFyc2VVRGF0ZUZvcm1hdFN0eWxlKG1fZGF0ZVN0eWxlKSwgZGF0YUxvY2FsZVdpdGhFeHRlbnNp
b25zLmRhdGEoKSwgdGltZVpvbmVWaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB0aW1lWm9u
ZVZpZXcubGVuZ3RoKCksIG51bGxwdHIsIC0xLCAmc3RhdHVzKSk7CiAgICAgICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5p
dGlhbGl6ZSBEYXRlVGltZUZvcm1hdCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBjb25zdGV4cHIgYm9vbCBsb2NhbGl6ZWQgPSBmYWxzZTsgLy8gQWxpZ25l
ZCB3aXRoIGhvdyBJQ1UgU2ltcGxlRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdCB3b3Jrcy4gV2UgZG8g
bm90IG5lZWQgdG8gdHJhbnNsYXRlIHRoaXMgdG8gbG9jYWxpemVkIHBhdHRlcm4uCiAgICAgICAg
IHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1ZGF0X3RvUGF0dGVybiwgZGF0
ZUZvcm1hdEZyb21TdHlsZS5nZXQoKSwgbG9jYWxpemVkLCBwYXR0ZXJuQnVmZmVyKTsKICAgICAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQi
X3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zdHIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTk2MCw3ICs5NjAsNyBAQCB2b2lkIEludGxEYXRlVGltZUZv
cm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgICAgICAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gc2tlbGV0b247CiAgICAgICAg
ICAgICAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWRhdHBn
X2dldFNrZWxldG9uLCBudWxscHRyLCBwYXR0ZXJuQnVmZmVyLmRhdGEoKSwgcGF0dGVybkJ1ZmZl
ci5zaXplKCksIHNrZWxldG9uKTsKICAgICAgICAgICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zdHIpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlcGxhY2VIb3VyQ3lj
bGVJblNrZWxldG9uKHNrZWxldG9uLCBzcGVjaWZpZWRIb3VyMTIpOwpAQCAtOTY4LDcgKzk2OCw3
IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogICAgICAgICAgICAgICAgIHBhdHRlcm5CdWZm
ZXIgPSB2bS5pbnRsQ2FjaGUoKS5nZXRCZXN0RGF0ZVRpbWVQYXR0ZXJuKGRhdGFMb2NhbGVXaXRo
RXh0ZW5zaW9ucywgc2tlbGV0b24uZGF0YSgpLCBza2VsZXRvbi5zaXplKCksIHN0YXR1cyk7CiAg
ICAgICAgICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlh
bGl6ZSBEYXRlVGltZUZvcm1hdCJfcyk7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZv
cm1hdCJfc3RyKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTk3OCw3ICs5NzgsNyBAQCB2b2lkIEludGxEYXRlVGltZUZv
cm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygp
OwogICAgICAgICBwYXR0ZXJuQnVmZmVyID0gdm0uaW50bENhY2hlKCkuZ2V0QmVzdERhdGVUaW1l
UGF0dGVybihkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMsIFN0cmluZ1ZpZXcoc2tlbGV0b24pLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvbi5sZW5ndGgoKSwgc3RhdHVzKTsK
ICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVG
b3JtYXQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zdHIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtOTk2LDcgKzk5Niw3IEBAIHZvaWQgSW50
bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBTdHJpbmdWaWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsK
ICAgICBtX2RhdGVGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9y
bWF0RGVsZXRlcj4odWRhdF9vcGVuKFVEQVRfUEFUVEVSTiwgVURBVF9QQVRURVJOLCBkYXRhTG9j
YWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCB0aW1lWm9uZVZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzKCksIHRpbWVab25lVmlldy5sZW5ndGgoKSwgcGF0dGVybi51cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKSwgcGF0dGVybi5sZW5ndGgoKSwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVG
b3JtYXQiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyODMsMTIgKzEyODMs
MTIgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGMKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQotICAgICAg
ICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJkYXRlIHZhbHVl
IGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJkYXRlIHZhbHVlIGlz
IG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiX3N0cik7CiAKICAgICBWZWN0
b3I8VUNoYXIsIDMyPiByZXN1bHQ7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVj
aW5nRnVuY3Rpb24odWRhdF9mb3JtYXQsIG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3Vs
dCwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgZGF0
ZSB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIl9zdHIpOwogCiAgICAgcmV0dXJu
IGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0KSk7CiB9CkBAIC0xMzY1LDI0ICsxMzY1LDI0IEBA
IEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZGF0ZSB2YWx1ZSBpcyBu
b3QgZmluaXRlIGluIERhdGVUaW1lRm9ybWF0IGZvcm1hdFRvUGFydHMoKSJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImRhdGUgdmFsdWUg
aXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdCBmb3JtYXRUb1BhcnRzKCkiX3N0cik7CiAK
ICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIGZpZWxkcyA9
IHN0ZDo6dW5pcXVlX3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlvbkl0
ZXJhdG9yRGVsZXRlcj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zdHIpOwogCiAgICAgVmVjdG9yPFVD
aGFyLCAzMj4gcmVzdWx0OwogICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlv
bih1ZGF0X2Zvcm1hdEZvckZpZWxkcywgbV9kYXRlRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0
LCBmaWVsZHMuZ2V0KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0
IGRhdGUgdmFsdWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgZGF0ZSB2YWx1ZSJfc3RyKTsKIAogICAgIEpT
QXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1
b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAogICAgIGF1dG8gcmVzdWx0U3RyaW5nID0g
U3RyaW5nKHJlc3VsdCk7Ci0gICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAibGl0ZXJhbCJfcyk7CisgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2
aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfc3RyKTsKIAogICAgIGludDMyX3QgcmVzdWx0TGVuZ3Ro
ID0gcmVzdWx0LnNpemUoKTsKICAgICBpbnQzMl90IHByZXZpb3VzRW5kSW5kZXggPSAwOwpAQCAt
MTQzNSw3ICsxNDM1LDcgQEAgVURhdGVJbnRlcnZhbEZvcm1hdCogSW50bERhdGVUaW1lRm9ybWF0
OjpjcmVhdGVEYXRlSW50ZXJ2YWxGb3JtYXRJZk5lY2Vzc2FyeShKU0cKICAgICB7CiAgICAgICAg
IGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRfdG9QYXR0ZXJu
LCBtX2RhdGVGb3JtYXQuZ2V0KCksIGZhbHNlLCBwYXR0ZXJuKTsKICAgICAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZUludGVydmFsRm9ybWF0Il9zKTsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBEYXRlSW50ZXJ2YWxGb3JtYXQiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KQEAgLTE0NDQsNyArMTQ0NCw3IEBAIFVEYXRlSW50
ZXJ2YWxGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlRGF0ZUludGVydmFsRm9ybWF0
SWZOZWNlc3NhcnkoSlNHCiAgICAgewogICAgICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1ZGF0cGdfZ2V0U2tlbGV0b24sIG51bGxwdHIsIHBhdHRlcm4uZGF0
YSgpLCBwYXR0ZXJuLnNpemUoKSwgc2tlbGV0b24pOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlSW50ZXJ2YWxGb3JtYXQiX3MpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFs
aXplIERhdGVJbnRlcnZhbEZvcm1hdCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgVURhdGVJbnRlcnZhbEZv
cm1hdCogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVEYXRlSW50ZXJ2YWxGb3JtYXRJZk5lY2Vz
c2FyeShKU0cKICAgICBTdHJpbmdWaWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsKICAgICBt
X2RhdGVJbnRlcnZhbEZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZUludGVydmFsRm9ybWF0
LCBVRGF0ZUludGVydmFsRm9ybWF0RGVsZXRlcj4odWR0aXR2Zm10X29wZW4oZGF0YUxvY2FsZVdp
dGhFeHRlbnNpb25zLmRhdGEoKSwgc2tlbGV0b24uZGF0YSgpLCBza2VsZXRvbi5zaXplKCksIHRp
bWVab25lVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdGltZVpvbmVWaWV3Lmxlbmd0aCgp
LCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRl
SW50ZXJ2YWxGb3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZUludGVydmFsRm9ybWF0Il9zdHIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIG1fZGF0ZUludGVydmFs
Rm9ybWF0LmdldCgpOwpAQCAtMTU2Miw3ICsxNTYyLDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBz
dGEKICAgICBzdGFydERhdGUgPSB0aW1lQ2xpcChzdGFydERhdGUpOwogICAgIGVuZERhdGUgPSB0
aW1lQ2xpcChlbmREYXRlKTsKICAgICBpZiAoc3RkOjppc25hbihzdGFydERhdGUpIHx8IHN0ZDo6
aXNuYW4oZW5kRGF0ZSkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJQYXNzZWQgZGF0ZSBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBkYXRlIGlzIG91dCBvZiByYW5n
ZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTE1NzMsMTQgKzE1NzMs
MTQgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGEKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBhdXRvIHJlc3VsdCA9IGZvcm1hdHRlZFZhbHVlRnJvbURhdGVSYW5n
ZSgqZGF0ZUludGVydmFsRm9ybWF0LCAqbV9kYXRlRm9ybWF0LCBzdGFydERhdGUsIGVuZERhdGUs
IHN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2
YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KIAogICAgIC8vIFVGb3JtYXR0ZWRWYWx1ZSBpcyBvd25lZCBieSBVRm9ybWF0dGVkRGF0
ZUludGVydmFsLiBXZSBkbyBub3QgbmVlZCB0byBjbG9zZSBpdC4KICAgICBhdXRvIGZvcm1hdHRl
ZFZhbHVlID0gdWR0aXR2Zm10X3Jlc3VsdEFzVmFsdWUocmVzdWx0LmdldCgpLCAmc3RhdHVzKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBA
IC0xNTkwLDcgKzE1OTAsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFu
Z2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YQogICAgIC8vIGBzb3Vy
Y2U6ICJzaGFyZWQiYCBhZGRpdGlvbmFsIGZpZWxkcy4KICAgICBib29sIGVxdWFsID0gZGF0ZUZp
ZWxkc1ByYWN0aWNhbGx5RXF1YWwoZm9ybWF0dGVkVmFsdWUsIHN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGlu
dGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTYwMCw3ICsx
NjAwLDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGEKICAgICBpbnQzMl90IGZvcm1hdHRlZFN0
cmluZ0xlbmd0aCA9IDA7CiAgICAgY29uc3QgVUNoYXIqIGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIg
PSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmZvcm1hdHRlZFN0cmluZ0xlbmd0
aCwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50
ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIApAQCAtMTYwOSw3ICsxNjA5LDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGEK
ICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVm
ZmVyUHJvZHVjaW5nRnVuY3Rpb24odWR0aXR2Zm10X2Zvcm1hdCwgZGF0ZUludGVydmFsRm9ybWF0
LCBzdGFydERhdGUsIGVuZERhdGUsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFs
Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTYyOSw3ICsxNjI5LDcg
QEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3UKICAgICBzdGFydERhdGUgPSB0aW1lQ2xpcChzdGFy
dERhdGUpOwogICAgIGVuZERhdGUgPSB0aW1lQ2xpcChlbmREYXRlKTsKICAgICBpZiAoc3RkOjpp
c25hbihzdGFydERhdGUpIHx8IHN0ZDo6aXNuYW4oZW5kRGF0ZSkpIHsKLSAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQYXNzZWQgZGF0ZSBpcyBvdXQgb2YgcmFu
Z2UiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBh
c3NlZCBkYXRlIGlzIG91dCBvZiByYW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKQEAgLTE2MzksMTggKzE2MzksMTggQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3UKICAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHJlc3VsdCA9IGZv
cm1hdHRlZFZhbHVlRnJvbURhdGVSYW5nZSgqZGF0ZUludGVydmFsRm9ybWF0LCAqbV9kYXRlRm9y
bWF0LCBzdGFydERhdGUsIGVuZERhdGUsIHN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIC8vIFVGb3JtYXR0ZWRWYWx1ZSBp
cyBvd25lZCBieSBVRm9ybWF0dGVkRGF0ZUludGVydmFsLiBXZSBkbyBub3QgbmVlZCB0byBjbG9z
ZSBpdC4KICAgICBhdXRvIGZvcm1hdHRlZFZhbHVlID0gdWR0aXR2Zm10X3Jlc3VsdEFzVmFsdWUo
cmVzdWx0LmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQogCi0gICAgYXV0byBzaGFyZWRTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJzaGFyZWQiX3MpOworICAgIGF1dG8gc2hhcmVkU3RyaW5nID0ganNOb250
cml2aWFsU3RyaW5nKHZtLCAic2hhcmVkIl9zdHIpOwogCiAgICAgLy8gSWYgdGhlIGZvcm1hdHRl
ZCBwYXJ0cyBvZiBzdGFydERhdGUgYW5kIGVuZERhdGUgYXJlIHRoZSBzYW1lLCBpdCBpcyBwb3Nz
aWJsZSB0aGF0IHRoZSByZXN1bHRlZCBzdHJpbmcgZG9lcyBub3QgbG9vayBsaWtlIHJhbmdlLgog
ICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGUgcmVxdWVzdGVkIGZvcm1hdCBvbmx5IGluY2x1ZGVz
ICJ5ZWFyIiBhbmQgc3RhcnREYXRlIGFuZCBlbmREYXRlIGFyZSB0aGUgc2FtZSB5ZWFyLCB0aGUg
cmVzdWx0IGp1c3QgY29udGFpbnMgb25lIHllYXIuCkBAIC0xNjU4LDcgKzE2NTgsNyBAQCBKU1Zh
bHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdQogICAgIC8vIGBzb3VyY2U6ICJzaGFyZWQiYCBhZGRpdGlvbmFs
IGZpZWxkcy4KICAgICBib29sIGVxdWFsID0gZGF0ZUZpZWxkc1ByYWN0aWNhbGx5RXF1YWwoZm9y
bWF0dGVkVmFsdWUsIHN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0
IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTcxMyw3ICsxNzEzLDcgQEAgSlNWYWx1ZSBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3UKICAgICBpbnQzMl90IGZvcm1hdHRlZFN0cmluZ0xlbmd0aCA9IDA7CiAgICAgY29u
c3QgVUNoYXIqIGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIgPSB1Zm10dmFsX2dldFN0cmluZyhmb3Jt
YXR0ZWRWYWx1ZSwgJmZvcm1hdHRlZFN0cmluZ0xlbmd0aCwgJnN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGlu
dGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBTdHJpbmcgcmVz
dWx0U3RyaW5nKGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIsIGZvcm1hdHRlZFN0cmluZ0xlbmd0aCk7
CkBAIC0xNzIyLDEzICsxNzIyLDEzIEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXRSYW5nZVRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91CiAgICAgLy8g
U28gd2UgZG8gbm90IGNvbnN0cmFpbnQgaXRlcmF0b3IuCiAgICAgYXV0byBpdGVyYXRvciA9IHN0
ZDo6dW5pcXVlX3B0cjxVQ29uc3RyYWluZWRGaWVsZFBvc2l0aW9uLCBJQ1VEZWxldGVyPHVjZnBv
c19jbG9zZT4+KHVjZnBvc19vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgYXV0byBzdGFydFJhbmdlU3RyaW5n
ID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAic3RhcnRSYW5nZSJfcyk7Ci0gICAgYXV0byBlbmRS
YW5nZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVuZFJhbmdlIl9zKTsKLSAgICBh
dXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsK
KyAgICBhdXRvIHN0YXJ0UmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJzdGFy
dFJhbmdlIl9zdHIpOworICAgIGF1dG8gZW5kUmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJlbmRSYW5nZSJfc3RyKTsKKyAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zdHIpOwogCiAgICAgV1RGOjpSYW5nZTxpbnQzMl90
PiBzdGFydFJhbmdlIHsgLTEsIC0xIH07CiAgICAgV1RGOjpSYW5nZTxpbnQzMl90PiBlbmRSYW5n
ZSB7IC0xLCAtMSB9OwpAQCAtMTc1NSw3ICsxNzU1LDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBk
b3UKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBib29sIG5leHQgPSB1Zm10dmFsX25leHRQ
b3NpdGlvbihmb3JtYXR0ZWRWYWx1ZSwgaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAgICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0
byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCFuZXh0KQpAQCAtMTc2MywxMyArMTc2MywxMyBAQCBKU1Zh
bHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdQogCiAgICAgICAgIGludDMyX3QgY2F0ZWdvcnkgPSB1Y2Zwb3Nf
Z2V0Q2F0ZWdvcnkoaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0
ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIAog
ICAgICAgICBpbnQzMl90IGZpZWxkVHlwZSA9IHVjZnBvc19nZXRGaWVsZChpdGVyYXRvci5nZXQo
KSwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQg
ZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogCkBAIC0xNzc3LDcgKzE3NzcsNyBAQCBKU1Zh
bHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdQogICAgICAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKICAgICAg
ICAgdWNmcG9zX2dldEluZGV4ZXMoaXRlcmF0b3IuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5k
ZXgsICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0
IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIApAQCAtMTgyOCw3ICsxODI4LDcgQEAgSlNW
YWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBkb3UKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXJ0RGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGVuZERhdGUpOwotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUg
aW50ZXJ2YWwiX3N0cik7CiAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuY3BwCmluZGV4IGI0NTFlZTA5YjFkZGYxN2FmNTcyYWM5YTRlYmI5MTczZWU2
ZjJiNzMuLjNiODI2MDQ0NDE0YmRkYzMwMGIxZmNjMGZjZDlkZjU1YzMzYjBkNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKgogCiB2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJEYXRlVGltZUZv
cm1hdCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIkRhdGVUaW1lRm9ybWF0Il9zdHIs
IFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggZTc0MTJjYzI4MjEyZmJh
OWZhMjE4OWRmNjQ0NjhhNGIzZmMzODEwYS4uNDNmMmQ0YjE3NDFkMWJhODAyMTkyMWJkODYyZWZm
OTliMzdkMDFlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0xMzksNyArMTM5LDcg
QEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWMKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIC8vIDIuIFJldHVybklmQWJydXB0KGR0ZikuCiAgICAgaWYgKFVOTElLRUxZ
KCFkdGYpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfc3RyKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rp
b24qIGJvdW5kRm9ybWF0ID0gZHRmLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDMuIElmIHRoZSBb
W2JvdW5kRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVj
dCBpcyB1bmRlZmluZWQsCkBAIC0xNDcsNyArMTQ3LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2Jq
ZWMKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGR0Zi0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24g
b2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2Yg
RuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkg
d2FzIDAgaW4gRUNNQS00MDIgMS4wKQotICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3Qg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgImZvcm1hdCJfcywgaW50
bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CisgICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCAiZm9ybWF0Il9zdHIsIGludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRl
VGltZSwgTm9JbnRyaW5zaWMpOwogICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5jdGlv
bkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCiAgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3Vu
ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBkdGYsIG51
bGxwdHIsIDEsIG51bGxwdHIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMsIChKU0ds
b2JhbAogICAgIC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rpb25zLgogICAgIGF1dG8q
IGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkYXRlVGltZUZvcm1h
dCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFy
dHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQiX3N0cikpOwogCiAgICAgSlNW
YWx1ZSBkYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBkb3VibGUgdmFsdWUgPSBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBkYXRl
KTsKQEAgLTE4NywyMCArMTg3LDIwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UsIChKU0dsb2JhbE9iCiAgICAgLy8g
RG8gbm90IHVzZSB1bndyYXBGb3JPbGRGdW5jdGlvbnMuCiAgICAgYXV0byogZGF0ZVRpbWVGb3Jt
YXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRhdGVUaW1lRm9ybWF0KSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0UmFuZ2UgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRSYW5nZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIERhdGVUaW1lRm9ybWF0Il9zdHIpKTsKIAogICAgIEpTVmFsdWUgc3RhcnREYXRlVmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgZW5kRGF0ZVZhbHVlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAogICAgIGlmIChzdGFydERhdGVWYWx1ZS5pc1VuZGVm
aW5lZCgpIHx8IGVuZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUg
aXMgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfc3RyKTsK
IAogICAgIGRvdWJsZSBzdGFydERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVU
aW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBzdGFydERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZv
cm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4g
ZW5kRGF0ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIGlz
IGxhcmdlciB0aGFuIGVuZERhdGUiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0UmFuZ2UoZ2xvYmFsT2Jq
ZWN0LCBzdGFydERhdGUsIGVuZERhdGUpKSk7CiB9CkBAIC0yMTQsMjAgKzIxNCwyMCBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1h
dFJhbmdlVG9QYXJ0cywgKEpTRwogICAgIC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rp
b25zLgogICAgIGF1dG8qIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRp
bWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkYXRlVGltZUZvcm1hdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLmZvcm1hdFJhbmdlVG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVU
aW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LmZvcm1hdFJhbmdlVG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVUaW1l
Rm9ybWF0Il9zdHIpKTsKIAogICAgIEpTVmFsdWUgc3RhcnREYXRlVmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgZW5kRGF0ZVZhbHVlID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgxKTsKIAogICAgIGlmIChzdGFydERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZERh
dGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUgaXMgdW5kZWZpbmVkIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfc3RyKTsKIAogICAgIGRvdWJsZSBz
dGFydERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFs
T2JqZWN0LCBzdGFydERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0
ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERh
dGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIGlzIGxhcmdlciB0aGFuIGVu
ZERhdGUiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0UmFuZ2VUb1BhcnRzKGdsb2JhbE9iamVjdCwgc3Rh
cnREYXRlLCBlbmREYXRlKSkpOwogfQpAQCAtMjQyLDcgKzI0Miw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
LCAoSlNHbG9iCiAgICAgYXV0byogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkYXRlVGltZUZvcm1hdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVU
aW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVUaW1lRm9y
bWF0Il9zdHIpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGRhdGVUaW1lRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1l
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNw
cAppbmRleCBmYmU4NmU0YjdlYWEwNjNjYmI2NDYzYjlhMWZhOWY3MWIyOTE4N2U0Li5lZDExOWIw
MTA1Y2ZjYmVlMWIzYWY1ZTg5MmEyOTNhN2QzMmQ2ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcApAQCAtODksNyArODksNyBA
QCB2b2lkIEludGxEaXNwbGF5TmFtZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2Nh
bGU7CiAgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGlzcGxheU5hbWVz
IGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZXMgZHVlIHRv
IGludmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgYXV0byB0eXBlID0gaW50bE9w
dGlvbjxzdGQ6Om9wdGlvbmFsPFR5cGU+PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3Bl
cnR5TmFtZXMtPnR5cGUsIHsgeyAibGFuZ3VhZ2UiX3MsIFR5cGU6Okxhbmd1YWdlIH0sIHsgInJl
Z2lvbiJfcywgVHlwZTo6UmVnaW9uIH0sIHsgInNjcmlwdCJfcywgVHlwZTo6U2NyaXB0IH0sIHsg
ImN1cnJlbmN5Il9zLCBUeXBlOjpDdXJyZW5jeSB9LCB7ICJjYWxlbmRhciJfcywgVHlwZTo6Q2Fs
ZW5kYXIgfSwgeyAiZGF0ZVRpbWVGaWVsZCJfcywgVHlwZTo6RGF0ZVRpbWVGaWVsZCB9IH0sICJ0
eXBlIG11c3QgYmUgZWl0aGVyIFwibGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRcIiwg
XCJjdXJyZW5jeVwiLCBcImNhbGVuZGFyXCIsIG9yIFwiZGF0ZVRpbWVGaWVsZFwiIl9zLCBzdGQ6
Om51bGxvcHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAg
aWYgKCF0eXBlKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJ0eXBlIG11c3Qgbm90IGJlIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0eXBlIG11c3Qgbm90IGJlIHVuZGVmaW5lZCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3R5cGUgPSB0eXBlLnZhbHVlKCk7CkBAIC0x
MzQsNyArMTM0LDcgQEAgdm9pZCBJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5h
bWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBtX2xvY2FsZUNTdHJp
bmcgPSBtX2xvY2FsZS51dGY4KCk7CiAgICAgbV9kaXNwbGF5TmFtZXMgPSBzdGQ6OnVuaXF1ZV9w
dHI8VUxvY2FsZURpc3BsYXlOYW1lcywgVUxvY2FsZURpc3BsYXlOYW1lc0RlbGV0ZXI+KHVsZG5f
b3BlbkZvckNvbnRleHQobV9sb2NhbGVDU3RyaW5nLmRhdGEoKSwgY29udGV4dHMsIFdURl9BUlJB
WV9MRU5HVEgoY29udGV4dHMpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGlzcGxheU5hbWVzIl9z
dHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtMTk5LDcgKzE5OSw3IEBAIEpTVmFs
dWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6
Okxhbmd1YWdlOiB7CiAgICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkgewot
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVu
dCBpcyBub3QgYSBsYW5ndWFnZSBpZCJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkIl9zdHIp
OwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBjYW5vbmljYWxD
b2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIFdURk1vdmUoY29k
ZSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIEpTVmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgfQog
ICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CiAgICAgICAgIGlmICghaXNVbmljb2RlUmVnaW9uU3Vi
dGFnKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWciX3MpOworICAgICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBy
ZWdpb24gc3VidGFnIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQog
ICAgICAgICBjYW5vbmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyht
X3R5cGUsIFdURk1vdmUoY29kZSkpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIEpTVmFsdWUgSW50bERp
c3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2Rl
VmFsdWUpIGNvCiAgICAgfQogICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CiAgICAgICAgIGlmICgh
aXNVbmljb2RlU2NyaXB0U3VidGFnKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWci
X3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJh
cmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICAgICAgfQogICAgICAgICBjYW5vbmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29k
ZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIFdURk1vdmUoY29kZSkpOwpAQCAtMjM0LDcgKzIzNCw3
IEBAIEpTVmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFt
ZXMKICAgICAgICAgLy8gNS4gSWYgISBJc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoY29kZSkgaXMg
ZmFsc2UsIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmICghaXNXZWxs
Rm9ybWVkQ3VycmVuY3lDb2RlKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJl
bmN5IGNvZGUiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zdHIp
OwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoY29k
ZS5pc0FsbEFTQ0lJKCkpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIEpTVmFsdWUgSW50bERpc3BsYXlO
YW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUp
IGNvCiAgICAgICAgIFVCb29sIGlzQ2hvaWNlRm9ybWF0ID0gZmFsc2U7IC8vIFdlIG5lZWQgdG8g
cGFzcyB0aGlzLCBvdGhlcndpc2UsIHdlIHdpbGwgc2VlIGNyYXNoIGluIElDVSA2NC4KICAgICAg
ICAgY29uc3QgVUNoYXIqIHJlc3VsdCA9IHVjdXJyX2dldE5hbWUoY3VycmVuY3ksIG1fbG9jYWxl
Q1N0cmluZy5kYXRhKCksIHN0eWxlLCAmaXNDaG9pY2VGb3JtYXQsICZsZW5ndGgsICZzdGF0dXMp
OwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBxdWVyeSBhIGRpc3Bs
YXkgbmFtZS4iX3MpOworICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUuIl9zdHIpOwogICAg
ICAgICAvLyB1Y3Vycl9nZXROYW1lIHJldHVybnMgVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgaWYg
dGhlIGRpc3BsYXktbmFtZSBpcyBub3QgZm91bmQuIEJ1dCBVX1VTSU5HX0RFRkFVTFRfV0FSTklO
RyBpcyByZXR1cm5lZCBldmVuIGlmCiAgICAgICAgIC8vIG5hcnJvdyBhbmQgc2hvcnQgcmVzdWx0
cyBhcmUgdGhlIHNhbWU6IG5hcnJvdyAiVVNEIiBpcyAiJCIgd2l0aCBVX1VTSU5HX0RFRkFVTFRf
V0FSTklORyBzaW5jZSBzaG9ydCAiVVNEIiBpcyBhbHNvICIkIi4gV2UgbmVlZCB0byBjaGVjawog
ICAgICAgICAvLyByZXN1bHQgPT0gY3VycmVuY3kgdG8gY2hlY2sgd2hldGhlciBJQ1UgYWN0dWFs
bHkgZmFpbGVkIHRvIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGlzcGxheS1uYW1lLiBUaGlzIHBv
aW50ZXIgY29tcGFyaXNvbiBpcyBlbnN1cmVkIGJ5CkBAIC0yNzcsNyArMjc3LDcgQEAgSlNWYWx1
ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGNvZGVWYWx1ZSkgY28KICAgICBjYXNlIFR5cGU6OkNhbGVuZGFyOiB7CiAgICAgICAgIC8v
IGEuIElmIGNvZGUgZG9lcyBub3QgbWF0Y2ggdGhlIFVuaWNvZGUgTG9jYWxlIElkZW50aWZpZXIg
dHlwZSBub250ZXJtaW5hbCwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KICAgICAgICAg
aWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShjb2RlKSkgewotICAgICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBj
YWxlbmRhciBjb2RlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgY2FsZW5kYXIgY29kZSJfc3RyKTsKICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgY2Fub25pY2FsQ29kZSA9IGNh
bm9uaWNhbGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBXVEZNb3ZlKGNvZGUpKTsKQEAg
LTMxOSw3ICszMTksNyBAQCBKU1ZhbHVlIEludGxEaXNwbGF5TmFtZXM6Om9mKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY29kZVZhbHVlKSBjbwogCiAgICAgICAgIGF1dG8g
ZmllbGQgPSBpc1ZhbGlkRGF0ZVRpbWVGaWVsZENvZGUoY29kZSk7CiAgICAgICAgIGlmICghZmll
bGQpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
YXJndW1lbnQgaXMgbm90IGEgZGF0ZVRpbWVGaWVsZCBjb2RlIl9zKTsKKyAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgZGF0
ZVRpbWVGaWVsZCBjb2RlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAg
fQogCkBAIC0zNDcsNyArMzQ3LDcgQEAgSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY28KICAgICAgICAg
Ly8gV2Ugc2hvdWxkIHJldHVybiB1bmRlZmluZWQgaWYgZmFsbGJhY2sgaXMgIm5vbmUiLiBPdGhl
cndpc2UsIHdlIHNob3VsZCByZXR1cm4gaW5wdXQgdmFsdWUuCiAgICAgICAgIGlmIChzdGF0dXMg
PT0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SKQogICAgICAgICAgICAgcmV0dXJuIChtX2ZhbGxi
YWNrID09IEZhbGxiYWNrOjpOb25lKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgU3Ry
aW5nKGNhbm9uaWNhbENvZGUuZGF0YSgpLCBjYW5vbmljYWxDb2RlLmxlbmd0aCgpKSk7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJf
c3RyKTsKICAgICB9CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcAppbmRleCBlYTA1MWJiMzRjNWUxZDkyMmQ3YmYwODRm
MTNhNWU0NmYxMGM0MzI0Li44NzUzMjEwNWRlOTY3Y2VlM2EzZmJjNGVkOWY0NmY1YzcwOTlmMjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnUKIAogdm9pZCBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxheU5hbWVz
UHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAyLCAiRGlzcGxheU5h
bWVzIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAyLCAiRGlzcGxheU5hbWVzIl9zdHIsIFBy
b3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
ZGlzcGxheU5hbWVzUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CiAgICAgZGlzcGxheU5hbWVzUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5j
cHAKaW5kZXggNDVhNjIwNWQxMmI4ZDhiMzZkMmY4YmFhOWU3NzNlZTQxMmMwMjU0Mi4uMzJhYjg2
MWZmNTliY2MxNDUwZjY4MjdiYjE0OGY1NWZkMjkxOGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5j
cHAKQEAgLTgxLDcgKzgxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGVGdW5jT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGF1dG8q
IGRpc3BsYXlOYW1lcyA9IGpzRHluYW1pY0Nhc3Q8SW50bERpc3BsYXlOYW1lcyo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRpc3BsYXlOYW1lcykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGlzcGxheU5h
bWVzLnByb3RvdHlwZS5vZiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERpc3BsYXlOYW1l
cyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBEaXNwbGF5TmFtZXMiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShkaXNwbGF5TmFtZXMtPm9mKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KQEAgLTk0LDcgKzk0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAo
SlNHbG9iYWwKIAogICAgIGF1dG8qIGRpc3BsYXlOYW1lcyA9IGpzRHluYW1pY0Nhc3Q8SW50bERp
c3BsYXlOYW1lcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRpc3Bs
YXlOYW1lcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBEaXNwbGF5TmFtZXMiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERp
c3BsYXlOYW1lcyJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGRpc3BsYXlOYW1lcy0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9iamVjdCkpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9y
bWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmNw
cAppbmRleCBmNWMzMDU3MDk4Yzk0OGYzMTRjZjFiY2ZkNjljZGU4OGQyNWU5MzNmLi44Mjc0NjJk
NThmZGM1ODhiMGQxNjljZjU5YmQzNTkyZGZlMzRjMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAg
dm9pZCBJbnRsTGlzdEZvcm1hdDo6aW5pdGlhbGl6ZUxpc3RGb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZQogCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2NhbGU7
CiAgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTGlzdEZvcm1hdCBkdWUg
dG8gaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTGlzdEZvcm1hdCBkdWUgdG8gaW52YWxp
ZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0NiwxMSArMTQ2
LDExIEBAIHZvaWQgSW50bExpc3RGb3JtYXQ6OmluaXRpYWxpemVMaXN0Rm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBtX2xpc3RGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VUxpc3RGb3Jt
YXR0ZXIsIFVMaXN0Rm9ybWF0dGVyRGVsZXRlcj4odWxpc3RmbXRfb3BlbkZvclR5cGUobV9sb2Nh
bGUudXRmOCgpLmRhdGEoKSwgdG9VTGlzdEZvcm1hdHRlclR5cGUobV90eXBlKSwgdG9VTGlzdEZv
cm1hdHRlcldpZHRoKG1fc3R5bGUpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIExpc3RGb3JtYXQiX3N0
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZWxzZQotICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBJbnRsLkxpc3RGb3JtYXQg
c2luY2UgdGhpcyBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGxpbmtlZCBJQ1UgdmVy
c2lvbiJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBpbml0aWFsaXplIEludGwuTGlzdEZvcm1hdCBzaW5jZSB0aGlzIGZlYXR1cmUgaXMgbm90
IHN1cHBvcnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9zdHIpOwogICAgIHJldHVybjsK
ICNlbmRpZgogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nLCA0PiBz
dHJpbmdMaXN0RnJvbUl0ZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAg
ICAgZm9yRWFjaEluSXRlcmFibGUoZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkgewogICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIGlmICghdmFsdWUu
aXNTdHJpbmcoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkl0ZXJhYmxlIHBhc3NlZCB0byBMaXN0Rm9ybWF0IGluY2x1ZGVzIG5vbiBTdHJpbmci
X3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0
ZXJhYmxlIHBhc3NlZCB0byBMaXN0Rm9ybWF0IGluY2x1ZGVzIG5vbiBTdHJpbmciX3N0cik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgU3RyaW5nIGl0ZW0gPSB2YWx1
ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwpAQCAtMjI0LDEyICsyMjQsMTIgQEAgSlNWYWx1
ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgbGlzdCkgY29uc3QKICAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQ7CiAgICAgYXV0
byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxpc3RmbXRfZm9ybWF0LCBt
X2xpc3RGb3JtYXQuZ2V0KCksIGlucHV0LnN0cmluZ1BvaW50ZXJzKCksIGlucHV0LnN0cmluZ0xl
bmd0aHMoKSwgaW5wdXQuc2l6ZSgpLCByZXN1bHQpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9m
IHN0cmluZ3MiX3N0cik7CiAKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQp
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxpc3QpOwotICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmlu
Z3MiX3MpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7CiAjZW5kaWYKIH0KIApAQCAt
MjQ5LDE2ICsyNDksMTYgQEAgSlNWYWx1ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxpc3QKIAogICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWRMaXN0LCBJQ1VEZWxldGVyPHVsaXN0Zm10
X2Nsb3NlUmVzdWx0Pj4odWxpc3RmbXRfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfc3RyKTsKIAogICAgIHVsaXN0Zm10X2Zvcm1hdFN0cmlu
Z3NUb1Jlc3VsdChtX2xpc3RGb3JtYXQuZ2V0KCksIGlucHV0LnN0cmluZ1BvaW50ZXJzKCksIGlu
cHV0LnN0cmluZ0xlbmd0aHMoKSwgaW5wdXQuc2l6ZSgpLCByZXN1bHQuZ2V0KCksICZzdGF0dXMp
OwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3RyaW5n
cyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7CiAKICAgICAvLyBVRm9y
bWF0dGVkVmFsdWUgaXMgb3duZWQgYnkgVUZvcm1hdHRlZExpc3QuIFdlIGRvIG5vdCBuZWVkIHRv
IGNsb3NlIGl0LgogICAgIGF1dG8gZm9ybWF0dGVkVmFsdWUgPSB1bGlzdGZtdF9yZXN1bHRBc1Zh
bHVlKHJlc3VsdC5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3Ry
aW5ncyJfc3RyKTsKIAogICAgIEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKQEAgLTI2Nywx
OSArMjY3LDE5IEBAIEpTVmFsdWUgSW50bExpc3RGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsaXN0CiAgICAgaW50MzJfdCBmb3JtYXR0
ZWRTdHJpbmdMZW5ndGggPSAwOwogICAgIGNvbnN0IFVDaGFyKiBmb3JtYXR0ZWRTdHJpbmdQb2lu
dGVyID0gdWZtdHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZmb3JtYXR0ZWRTdHJpbmdM
ZW5ndGgsICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0
IGxpc3Qgb2Ygc3RyaW5ncyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7
CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyhmb3JtYXR0ZWRTdHJpbmdQb2ludGVyLCBmb3JtYXR0
ZWRTdHJpbmdMZW5ndGgpOwogCiAgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxV
Q29uc3RyYWluZWRGaWVsZFBvc2l0aW9uLCBJQ1VEZWxldGVyPHVjZnBvc19jbG9zZT4+KHVjZnBv
c19vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1h
dCBsaXN0IG9mIHN0cmluZ3MiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zdHIp
OwogCiAgICAgdWNmcG9zX2NvbnN0cmFpbkZpZWxkKGl0ZXJhdG9yLmdldCgpLCBVRklFTERfQ0FU
RUdPUllfTElTVCwgVUxJU1RGTVRfRUxFTUVOVF9GSUVMRCwgJnN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfc3RyKTsKIAotICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOwotICAgIGF1dG8gZWxlbWVudFN0
cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVsZW1lbnQiX3MpOworICAgIGF1dG8gbGl0
ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3N0cik7CisgICAg
YXV0byBlbGVtZW50U3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiZWxlbWVudCJfc3Ry
KTsKIAogICAgIGF1dG8gY3JlYXRlUGFydCA9IFsmXSAoSlNTdHJpbmcqIHR5cGUsIEpTU3RyaW5n
KiB2YWx1ZSkgewogICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CkBAIC0yOTMsNyArMjkzLDcgQEAgSlNWYWx1ZSBJbnRsTGlzdEZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxp
c3QKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBib29sIG5leHQgPSB1Zm10dmFsX25leHRQ
b3NpdGlvbihmb3JtYXR0ZWRWYWx1ZSwgaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAgICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdz
Il9zKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7CiAgICAgICAgIGlm
ICghbmV4dCkKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0zMDEsNyArMzAxLDcgQEAgSlNWYWx1
ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGxpc3QKICAgICAgICAgaW50MzJfdCBlbmRJbmRleCA9IDA7CiAgICAgICAg
IHVjZnBvc19nZXRJbmRleGVzKGl0ZXJhdG9yLmdldCgpLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4
LCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9y
bWF0IGxpc3Qgb2Ygc3RyaW5ncyJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdz
Il9zdHIpOwogCiAgICAgICAgIGlmIChwcmV2aW91c0VuZEluZGV4IDwgYmVnaW5JbmRleCkgewog
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGpzU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcuc3Vic3Ry
aW5nKHByZXZpb3VzRW5kSW5kZXgsIGJlZ2luSW5kZXggLSBwcmV2aW91c0VuZEluZGV4KSk7CkBA
IC0zMjcsNyArMzI3LDcgQEAgSlNWYWx1ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxpc3QKICAgICByZXR1cm4gcGFy
dHM7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShsaXN0KTsKLSAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJp
bmdzIl9zKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zdHIpOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0Q29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNWQwMDg0NTNmZmY2ZmY3YWQ3M2JmNjk2OTZhNTI5NzQ1
MTAwZWZhNS4uNWUyMDFjMThiYTM2YzAxNDFmMzgyMzQyNzVjODcxMjRjOTNmMDcxZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW50bExpc3RGb3JtYXRDb25zdHJ1
Y3Rvcjo6SW50bExpc3RGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXIKIAogdm9pZCBJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEludGxMaXN0Rm9ybWF0UHJvdG90eXBlKiBsaXN0Rm9ybWF0UHJvdG90eXBlKQogewotICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiTGlzdEZvcm1hdCJfcywgUHJvcGVydHlBZGRp
dGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgMCwgIkxpc3RGb3JtYXQiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBsaXN0Rm9ybWF0UHJvdG90eXBlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgbGlzdEZvcm1hdFByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTGlzdEZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggYmY3MzdhYzViYTRhYmUxMjFiZWM2
MTVmODMwZjJiYjNjNjA2YjBiZi4uZmUzZGM3ZTFmNmY4MjliNmQzYzhmN2NjNDIyOTMxM2ZiNjQw
NDdiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RG
b3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcApAQCAtODMsNyArODMsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bExpc3RGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0LCAoSlNHbG9iYWxP
YmplY3QqIGdsbwogCiAgICAgYXV0byogbGlzdEZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bExp
c3RGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsaXN0Rm9y
bWF0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5MaXN0Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTGlzdEZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTGlzdEZvcm1hdCJfc3RyKTsKIAogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxpc3RGb3JtYXQtPmZvcm1hdChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CkBAIC05Niw3ICs5Niw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTGlzdEZvcm1hdFByb3RvdHlwZUZ1bmNG
b3JtYXRUb1BhcnRzLCAoSlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBsaXN0Rm9ybWF0ID0ganNE
eW5hbWljQ2FzdDxJbnRsTGlzdEZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBpZiAoIWxpc3RGb3JtYXQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxpc3RGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFy
dHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTGlzdEZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IExpc3RGb3JtYXQiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShsaXN0Rm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KQEAgLTEwOSw3ICsxMDksNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bExpc3RGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAo
SlNHbG9iYWxPYgogCiAgICAgYXV0byogbGlzdEZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bExp
c3RGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsaXN0Rm9y
bWF0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5MaXN0Rm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTGlzdEZvcm1hdC5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTGlzdEZvcm1hdCJf
c3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxp
c3RGb3JtYXQtPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCmluZGV4IGZjY2FkMzExODlhOGFk
N2UwMDI0OWQ0OTIwYzlhYThiYzYwNDdkYTUuLjM4MGMwMmM5ZTk4NzQ4NTA1YmIzZWU2NzA2M2Qx
OGQ3NGQ2Mzk4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMb2NhbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2Nh
bGUuY3BwCkBAIC0yNDcsMjggKzI0NywyOCBAQCB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxpemVM
b2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB0YQogCiAg
ICAgTG9jYWxlSURCdWlsZGVyIGxvY2FsZUlEOwogICAgIGlmICghbG9jYWxlSUQuaW5pdGlhbGl6
ZSh0YWcpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW52YWxpZCBsYW5ndWFnZSB0YWciX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImludmFsaWQgbGFuZ3VhZ2UgdGFnIl9zdHIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgU3RyaW5nIGxhbmd1YWdlID0gaW50bFN0cmluZ09wdGlvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxhbmd1YWdlLCB7IH0sIG51bGxw
dHIsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAg
ICAgaWYgKCFsYW5ndWFnZS5pc051bGwoKSAmJiAhaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcobGFu
Z3VhZ2UpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
bGFuZ3VhZ2UgaXMgbm90IGEgd2VsbC1mb3JtZWQgbGFuZ3VhZ2UgdmFsdWUiX3MpOworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImxhbmd1YWdlIGlzIG5vdCBh
IHdlbGwtZm9ybWVkIGxhbmd1YWdlIHZhbHVlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgU3RyaW5nIHNjcmlwdCA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zY3JpcHQsIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIXNjcmlw
dC5pc051bGwoKSAmJiAhaXNVbmljb2RlU2NyaXB0U3VidGFnKHNjcmlwdCkpIHsKLSAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzY3JpcHQgaXMgbm90IGEgd2Vs
bC1mb3JtZWQgc2NyaXB0IHZhbHVlIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzY3JpcHQgaXMgbm90IGEgd2VsbC1mb3JtZWQgc2NyaXB0IHZhbHVl
Il9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgU3RyaW5nIHJlZ2lvbiA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5y
ZWdpb24sIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKICAgICBpZiAoIXJlZ2lvbi5pc051bGwoKSAmJiAhaXNVbmljb2RlUmVn
aW9uU3VidGFnKHJlZ2lvbikpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJyZWdpb24gaXMgbm90IGEgd2VsbC1mb3JtZWQgcmVnaW9uIHZhbHVlIl9zKTsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpb24gaXMg
bm90IGEgd2VsbC1mb3JtZWQgcmVnaW9uIHZhbHVlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBJbnRsTG9jYWxlOjppbml0aWFsaXplTG9j
YWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdGEKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghY2FsZW5kYXIuaXNO
dWxsKCkpIHsKICAgICAgICAgaWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShjYWxl
bmRhcikpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiY2FsZW5kYXIgaXMgbm90IGEgd2VsbC1mb3JtZWQgY2FsZW5kYXIgdmFsdWUiX3MpOworICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRhciBp
cyBub3QgYSB3ZWxsLWZvcm1lZCBjYWxlbmRhciB2YWx1ZSJfc3RyKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVJRC5zZXRLZXl3b3JkVmFsdWUoImNhbGVu
ZGFyIl9zLCBjYWxlbmRhcik7CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBJbnRsTG9jYWxlOjpp
bml0aWFsaXplTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgdGEKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICgh
Y29sbGF0aW9uLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRp
ZmllclR5cGUoY29sbGF0aW9uKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJjb2xsYXRpb24gaXMgbm90IGEgd2VsbC1mb3JtZWQgY29sbGF0aW9u
IHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiY29sbGF0aW9uIGlzIG5vdCBhIHdlbGwtZm9ybWVkIGNvbGxhdGlvbiB2YWx1ZSJfc3Ry
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVJRC5zZXRL
ZXl3b3JkVmFsdWUoImNvbGxhdGlvbiJfcywgY29sbGF0aW9uKTsKQEAgLTMxNCw3ICszMTQsNyBA
QCB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxpemVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RyaW5nJiB0YQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAgICAgaWYgKCFudW1iZXJpbmdTeXN0ZW0uaXNOdWxsKCkpIHsKICAgICAgICAg
aWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShudW1iZXJpbmdTeXN0ZW0pKSB7Ci0g
ICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm51bWJlcmlu
Z1N5c3RlbSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBudW1iZXJpbmcgc3lzdGVtIHZhbHVlIl9zKTsK
KyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibnVtYmVy
aW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmluZyBzeXN0ZW0gdmFsdWUiX3N0
cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbG9jYWxlSUQuc2V0
S2V5d29yZFZhbHVlKCJudW1iZXJzIl9zLCBudW1iZXJpbmdTeXN0ZW0pOwpAQCAtMzIyLDcgKzMy
Miw3IEBAIHZvaWQgSW50bExvY2FsZTo6aW5pdGlhbGl6ZUxvY2FsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHRhCiAKICAgICBtX2xvY2FsZUlEID0gbG9jYWxl
SUQudG9DYW5vbmljYWwoKTsKICAgICBpZiAobV9sb2NhbGVJRC5pc051bGwoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxp
emUgTG9jYWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIExvY2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIH0KQEAgLTU1OCw3ICs1NTgsNyBAQCBKU0FycmF5KiBJbnRsTG9jYWxlOjpjYWxlbmRh
cnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBjb25zdGV4cHIgYm9vbCBjb21t
b25seVVzZWQgPSB0cnVlOwogICAgIGF1dG8gY2FsZW5kYXJzID0gc3RkOjp1bmlxdWVfcHRyPFVF
bnVtZXJhdGlvbiwgSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjYWxfZ2V0S2V5d29yZFZhbHVl
c0ZvckxvY2FsZSgiY2FsZW5kYXIiLCBtX2xvY2FsZUlELmRhdGEoKSwgY29tbW9ubHlVc2VkLCAm
c3RhdHVzKSk7CiAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0
cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNTcyLDcgKzU3Miw3IEBA
IEpTQXJyYXkqIEludGxMb2NhbGU6OmNhbGVuZGFycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKFdURk1vdmUoY2FsZW5kYXIpKTsKICAg
ICB9CiAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0cik7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNTk2LDcgKzU5Niw3IEBAIEpTQXJy
YXkqIEludGxMb2NhbGU6OmNvbGxhdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBjb25zdGV4cHIgYm9vbCBjb21tb25seVVzZWQgPSB0cnVlOwogICAgIGF1dG8gZW51bWVy
YXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVlbnVtX2Ns
b3NlPj4odWNvbF9nZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlKCJjb2xsYXRpb24iLCBtX2xvY2Fs
ZUlELmRhdGEoKSwgY29tbW9ubHlVc2VkLCAmc3RhdHVzKSk7CiAgICAgaWYgKCFVX1NVQ0NFU1Mo
c3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtNjEzLDcgKzYxMyw3IEBAIEpTQXJyYXkqIEludGxMb2NhbGU6OmNvbGxhdGlv
bnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIGVsZW1lbnRzLmFw
cGVuZChXVEZNb3ZlKGNvbGxhdGlvbikpOwogICAgIH0KICAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0
dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZh
bGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC02NDMsNyArNjQzLDcgQEAgSlNBcnJheSogSW50bExvY2FsZTo6aG91ckN5Y2xlcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHBhdHRl
cm47CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRwZ19nZXRC
ZXN0UGF0dGVybldpdGhPcHRpb25zLCBnZW5lcmF0b3IuZ2V0KCksIHNrZWxldG9uLCAxLCBVREFU
UEdfTUFUQ0hfSE9VUl9GSUVMRF9MRU5HVEgsIHBhdHRlcm4pOwogICAgIGlmICghVV9TVUNDRVNT
KHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKQEAgLTY1MywxOSArNjUzLDE5IEBAIEpTQXJyYXkqIEludGxMb2NhbGU6OmhvdXJD
eWNsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBjYXNlIEludGxEYXRlVGlt
ZUZvcm1hdDo6SG91ckN5Y2xlOjpOb25lOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEludGxE
YXRlVGltZUZvcm1hdDo6SG91ckN5Y2xlOjpIMTE6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5k
KCJoMTEiX3MpOworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgxMSJfc3RyKTsKICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICBjYXNlIEludGxEYXRl
VGltZUZvcm1hdDo6SG91ckN5Y2xlOjpIMTI6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJo
MTIiX3MpOworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgxMiJfc3RyKTsKICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICBjYXNlIEludGxEYXRlVGlt
ZUZvcm1hdDo6SG91ckN5Y2xlOjpIMjM6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJoMjMi
X3MpOworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgyMyJfc3RyKTsKICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICBjYXNlIEludGxEYXRlVGltZUZv
cm1hdDo6SG91ckN5Y2xlOjpIMjQ6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJoMjQiX3Mp
OworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgyNCJfc3RyKTsKICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICB9CkBAIC02ODgsNyArNjg4LDcgQEAg
SlNBcnJheSogSW50bExvY2FsZTo6bnVtYmVyaW5nU3lzdGVtcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1
dG8gbnVtYmVyaW5nU3lzdGVtID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJpbmdTeXN0ZW0sIElD
VURlbGV0ZXI8dW51bXN5c19jbG9zZT4+KHVudW1zeXNfb3BlbihtX2xvY2FsZUlELmRhdGEoKSwg
JnN0YXR1cykpOwogICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9z
dHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgZWxlbWVudHMuYXBwZW5k
KHVudW1zeXNfZ2V0TmFtZShudW1iZXJpbmdTeXN0ZW0uZ2V0KCkpKTsKQEAgLTcxMSw3ICs3MTEs
NyBAQCBKU1ZhbHVlIEludGxMb2NhbGU6OnRpbWVab25lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8g
ZW51bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVl
bnVtX2Nsb3NlPj4odWNhbF9vcGVuVGltZVpvbmVJREVudW1lcmF0aW9uKFVDQUxfWk9ORV9UWVBF
X0NBTk9OSUNBTCwgcmVnaW9uLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAg
ICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCBKU1ZhbHVlIEludGxMb2Nh
bGU6OnRpbWVab25lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHdoaWxlICgo
Y29sbGF0aW9uID0gdWVudW1fbmV4dChlbnVtZXJhdGlvbi5nZXQoKSwgJmxlbmd0aCwgJnN0YXR1
cykpICYmIFVfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICBlbGVtZW50cy5jb25zdHJ1Y3RBbmRB
cHBlbmQoY29sbGF0aW9uLCBsZW5ndGgpOwogICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9j
YWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImlu
dmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNzM1
LDcgKzczNSw3IEBAIEpTT2JqZWN0KiBJbnRsTG9jYWxlOjp0ZXh0SW5mbyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwog
ICAgIFVMYXlvdXRUeXBlIGxheW91dCA9IHVsb2NfZ2V0Q2hhcmFjdGVyT3JpZW50YXRpb24obV9s
b2NhbGVJRC5kYXRhKCksICZzdGF0dXMpOwogICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9j
YWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImlu
dmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAg
LTc0MywxNiArNzQzLDE2IEBAIEpTT2JqZWN0KiBJbnRsTG9jYWxlOjp0ZXh0SW5mbyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHN3aXRjaCAobGF5b3V0KSB7CiAgICAgZGVmYXVs
dDoKICAgICBjYXNlIFVMT0NfTEFZT1VUX0xUUjoKLSAgICAgICAgbGF5b3V0U3RyaW5nID0ganNT
dHJpbmcodm0sICJsdHIiX3MpOworICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwg
Imx0ciJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVTE9DX0xBWU9VVF9SVEw6Ci0g
ICAgICAgIGxheW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAicnRsIl9zKTsKKyAgICAgICAgbGF5
b3V0U3RyaW5nID0ganNTdHJpbmcodm0sICJydGwiX3N0cik7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgVUxPQ19MQVlPVVRfVFRCOgotICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2
bSwgInR0YiJfcyk7CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAidHRiIl9z
dHIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVMT0NfTEFZT1VUX0JUVDoKLSAgICAgICAg
bGF5b3V0U3RyaW5nID0ganNTdHJpbmcodm0sICJidHQiX3MpOworICAgICAgICBsYXlvdXRTdHJp
bmcgPSBqc1N0cmluZyh2bSwgImJ0dCJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBA
IC03NjksNyArNzY5LDcgQEAgSlNPYmplY3QqIEludGxMb2NhbGU6OndlZWtJbmZvKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CiAgICAgYXV0byBjYWxlbmRhciA9IHN0ZDo6dW5pcXVlX3B0cjxVQ2FsZW5kYXIsIElDVURl
bGV0ZXI8dWNhbF9jbG9zZT4+KHVjYWxfb3BlbihudWxscHRyLCAwLCBtX2xvY2FsZUlELmRhdGEo
KSwgVUNBTF9ERUZBVUxULCAmc3RhdHVzKSk7CiAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBs
b2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApA
QCAtODIxLDcgKzgyMSw3IEBAIEpTT2JqZWN0KiBJbnRsTG9jYWxlOjp3ZWVrSW5mbyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGZvciAoaW50MzJfdCBkYXkgPSAxOyBkYXkgPD0g
NzsgKytkYXkpIHsKICAgICAgICAgVUNhbGVuZGFyV2Vla2RheVR5cGUgdHlwZSA9IGNhbm9uaWNh
bGl6ZURheU9mV2Vla1R5cGUodWNhbF9nZXREYXlPZldlZWtUeXBlKGNhbGVuZGFyLmdldCgpLCBj
b252ZXJ0TW9uZGF5QmFzZWREYXlUb1VDYWxlbmRhckRheXNPZldlZWsoZGF5KSwgJnN0YXR1cykp
OwogICAgICAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxl
Il9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAg
c3dpdGNoICh0eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcAppbmRleCAzNzY1M2JiMzcxMzk1NzcyMjY1ZWFl
ZWMzZTExNWRiMGYxOGViYmJjLi5lMjUyNWYxNDkyNzQ1NWE5YjgxNWVjYTZkZWMwYTgzOGQ4ZTIz
ZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
b2NhbGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgSW50bExvY2FsZUNvbnN0cnVj
dG9yOjpJbnRsTG9jYWxlQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IAogdm9pZCBJbnRsTG9jYWxlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50
bExvY2FsZVByb3RvdHlwZSogbG9jYWxlUHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCAxLCAiTG9jYWxlIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0
cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiTG9j
YWxlIl9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlv
bik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgbG9jYWxlUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CiAgICAgbG9jYWxlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KQEAgLTc5LDcgKzc5LDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEludGxMb2NhbGUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKIAogICAgIEpTVmFsdWUgdGFnID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIXRhZy5pc1N0cmluZygpICYmICF0YWcuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZp
cnN0IGFyZ3VtZW50IHRvIEludGwuTG9jYWxlIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gb2JqZWN0
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEludGwuTG9jYWxlIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4g
b2JqZWN0Il9zdHIpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGxvY2FsZS0+aW5pdGlh
bGl6ZUxvY2FsZShnbG9iYWxPYmplY3QsIHRhZywgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5
cGUuY3BwCmluZGV4IDA5MGM5MjUzMjMxZDYyMzlmOTQ5ZDM4MjZiMGRmNjQ2NDI2MDkyOGYuLjg5
MDRhMWVmZTdkMWQ0NmFiYTRkMGIwN2EyOTA4YjgxNjE0OWI3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCkBAIC0x
MTgsNyArMTE4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxMb2NhbGVQcm90b3R5
cGVGdW5jTWF4aW1pemUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGF1dG8qIGxvY2Fs
ZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5tYXhpbWl6ZSBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubWF4
aW1pemUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBJ
bnRsTG9jYWxlKiBuZXdMb2NhbGUgPSBJbnRsTG9jYWxlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+bG9jYWxlU3RydWN0dXJlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTEzNCw3ICsx
MzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bExvY2FsZVByb3RvdHlwZUZ1bmNN
aW5pbWl6ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAg
IGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm1pbmltaXplIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5taW5pbWl6ZSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIEludGxMb2Nh
bGUqIG5ld0xvY2FsZSA9IEludGxMb2NhbGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5sb2Nh
bGVTdHJ1Y3R1cmUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMTUwLDcgKzE1MCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3RyaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFs
b2NhbGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgY29uc3QgU3RyaW5nJiBm
dWxsU3RyaW5nID0gbG9jYWxlLT50b1N0cmluZygpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZ1bGxTdHJpbmcuaXNFbXB0eSgpID8ganNVbmRlZmluZWQo
KSA6IGpzU3RyaW5nKHZtLCBmdWxsU3RyaW5nKSkpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUsIChK
U0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PElu
dGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9j
YWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmJhc2VOYW1lIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZSBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYmFz
ZU5hbWUgPSBsb2NhbGUtPmJhc2VOYW1lKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoYmFzZU5hbWUuaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpz
U3RyaW5nKHZtLCBiYXNlTmFtZSkpKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxP
YmplY3QqIGdsbwogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxl
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
TG9jYWxlLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FsZW5kYXIgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBjb25zdCBTdHJpbmcmIGNhbGVuZGFyID0g
bG9jYWxlLT5jYWxlbmRhcigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNhbGVuZGFyLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZt
LCBjYWxlbmRhcikpKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFycywgKEpTR2xvYmFsT2JqZWN0KiBn
bAogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnBy
b3RvdHlwZS5jYWxlbmRhcnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFycyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIExvY2FsZSJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGxvY2FsZS0+Y2FsZW5kYXJzKGdsb2JhbE9iamVjdCkpKTsKIH0KQEAgLTIwNSw3
ICsyMDUsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckNhc2VGaXJzdCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0byogbG9jYWxlID0g
anNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNh
c2VGaXJzdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAg
IGNvbnN0IFN0cmluZyYgY2FzZUZpcnN0ID0gbG9jYWxlLT5jYXNlRmlyc3QoKTsKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYXNlRmlyc3QuaXNOdWxsKCkg
PyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNhc2VGaXJzdCkpKTsKQEAgLTIxOSw3ICsy
MTksNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNvbGxhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24gY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxh
dGlvbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIGNv
bnN0IFN0cmluZyYgY29sbGF0aW9uID0gbG9jYWxlLT5jb2xsYXRpb24oKTsKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRpb24uaXNOdWxsKCkgPyBq
c1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNvbGxhdGlvbikpKTsKQEAgLTIzMyw3ICsyMzMs
NyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckNv
bGxhdGlvbnMsIChKU0dsb2JhbE9iamVjdCogZwogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5h
bWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb25zIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRp
b25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT5jb2xsYXRpb25z
KGdsb2JhbE9iamVjdCkpKTsKIH0KQEAgLTI0Niw3ICsyNDYsNyBAQCBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbAogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9j
YWxlLnByb3RvdHlwZS5ob3VyQ3ljbGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2Nh
bGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZSBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaG91ckN5Y2xlID0g
bG9jYWxlLT5ob3VyQ3ljbGUoKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShob3VyQ3ljbGUuaXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmco
dm0sIGhvdXJDeWNsZSkpKTsKQEAgLTI2MCw3ICsyNjAsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZXMsIChKU0dsb2JhbE9iamVj
dCogZwogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxl
LnByb3RvdHlwZS5ob3VyQ3ljbGVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxl
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyQ3ljbGVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUobG9jYWxlLT5ob3VyQ3ljbGVzKGdsb2JhbE9iamVjdCkpKTsKIH0KQEAg
LTI3Myw3ICsyNzMsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3Rv
dHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYgogCiAgICAgYXV0byogbG9j
YWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmljIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlw
ZS5udW1lcmljIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGxv
Y2FsZS0+bnVtZXJpYygpID09IFRyaVN0YXRlOjpUcnVlKSkpOwogfQpAQCAtMjg2LDcgKzI4Niw3
IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVt
YmVyaW5nU3lzdGVtLCAoSlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFt
aWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbSBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubnVt
YmVyaW5nU3lzdGVtIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwog
CiAgICAgY29uc3QgU3RyaW5nJiBudW1iZXJpbmdTeXN0ZW0gPSBsb2NhbGUtPm51bWJlcmluZ1N5
c3RlbSgpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51
bWJlcmluZ1N5c3RlbS5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgbnVt
YmVyaW5nU3lzdGVtKSkpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtcywgKEpTR2xvYmFs
T2JqCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUu
cHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbXMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBM
b2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbXMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUtPm51bWJlcmluZ1N5c3RlbXMoZ2xvYmFs
T2JqZWN0KSkpOwogfQpAQCAtMzEzLDcgKzMxMyw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
UihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UsIChKU0dsb2JhbE9iamVjdCogZ2xv
CiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJv
dG90eXBlLmxhbmd1YWdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuTG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IExvY2FsZSJfc3RyKTsKIAogICAgIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UgPSBsb2NhbGUtPmxh
bmd1YWdlKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
bGFuZ3VhZ2UuaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBsYW5ndWFn
ZSkpKTsKQEAgLTMyNyw3ICszMjcsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExv
Y2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAg
YXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5z
Y3JpcHQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUu
cHJvdG90eXBlLnNjcmlwdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3Ry
KTsKIAogICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0ID0gbG9jYWxlLT5zY3JpcHQoKTsKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzY3JpcHQuaXNFbXB0eSgp
ID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBzY3JpcHQpKSk7CkBAIC0zNDEsNyArMzQx
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJS
ZWdpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGF1dG8qIGxvY2FsZSA9IGpzRHlu
YW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCFsb2NhbGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUucmVnaW9uIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5yZWdpb24gY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBjb25zdCBTdHJp
bmcmIHJlZ2lvbiA9IGxvY2FsZS0+cmVnaW9uKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUocmVnaW9uLmlzRW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBq
c1N0cmluZyh2bSwgcmVnaW9uKSkpOwpAQCAtMzU1LDcgKzM1NSw3IEBAIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyVGltZVpvbmVzLCAoSlNHbG9iYWxP
YmplY3QqIGdsCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLnRpbWVab25lcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUudGltZVpvbmVzIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT50aW1lWm9uZXMoZ2xvYmFsT2JqZWN0KSkpOwogfQpA
QCAtMzY4LDcgKzM2OCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyVGV4dEluZm8sIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBs
b2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnRleHRJbmZv
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3Rv
dHlwZS50ZXh0SW5mbyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsK
IAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZS0+
dGV4dEluZm8oZ2xvYmFsT2JqZWN0KSkpOwogfQpAQCAtMzgxLDcgKzM4MSw3IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyV2Vla0luZm8sIChKU0ds
b2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxM
b2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxl
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW50bC5Mb2NhbGUucHJvdG90eXBlLndlZWtJbmZvIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS53ZWVrSW5mbyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZS0+d2Vla0luZm8oZ2xvYmFsT2JqZWN0KSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmNwcAppbmRleCA5NTNjMzlmZTY0YTllODRkMGJiNmMxMGMwNDJiMDczYWY2OWUzNTY5Li5mN2Y0
YjllMTIyNmI5MGQ5ZWU4ZDk4ZmNjZjJjNTI4NTMwNGI5M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzA4LDcgKzMw
OCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKICAgICBpZiAoIW51bWJlcmluZ1N5c3RlbS5pc051bGwoKSkgewogICAg
ICAgICBpZiAoIWlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKG51bWJlcmluZ1N5c3RlbSkp
IHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibnVt
YmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmluZyBzeXN0ZW0gdmFsdWUi
X3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJu
dW1iZXJpbmdTeXN0ZW0gaXMgbm90IGEgd2VsbC1mb3JtZWQgbnVtYmVyaW5nIHN5c3RlbSB2YWx1
ZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVP
cHRpb25zW3N0YXRpY19jYXN0PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6TnUpXSA9
IG51bWJlcmluZ1N5c3RlbTsKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIEludGxOdW1iZXJGb3Jt
YXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYQogCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2NhbGU7CiAgICAgaWYgKG1fbG9jYWxl
LmlzRW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxvY2Fs
ZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zdHIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBJbnRs
TnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmEKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwog
ICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFpc1dlbGxGb3JtZWRD
dXJyZW5jeUNvZGUoY3VycmVuY3kpKSB7Ci0gICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgImN1cnJlbmN5
IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpKTsKKyAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSJfc3Ry
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDAsNyArMzQw
LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICB1bnNpZ25lZCBjdXJyZW5jeURpZ2l0
cyA9IDA7CiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CiAgICAgICAgIGlm
IChjdXJyZW5jeS5pc051bGwoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImN1cnJlbmN5IG11c3QgYmUgYSBzdHJpbmciX3MpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImN1cnJlbmN5IG11c3QgYmUg
YSBzdHJpbmciX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzYx
LDEyICszNjEsMTIgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBpZiAoIXVuaXQuaXNO
dWxsKCkpIHsKICAgICAgICAgd2VsbEZvcm1lZFVuaXQgPSB3ZWxsRm9ybWVkVW5pdElkZW50aWZp
ZXIodW5pdCk7CiAgICAgICAgIGlmICghd2VsbEZvcm1lZFVuaXQpIHsKLSAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBpcyBub3QgYSB3ZWxsLWZv
cm1lZCB1bml0IGlkZW50aWZpZXIiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIG5vdCBhIHdlbGwtZm9ybWVkIHVuaXQgaWRlbnRp
ZmllciJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX3Vu
aXQgPSB1bml0OwogICAgIH0gZWxzZSBpZiAobV9zdHlsZSA9PSBTdHlsZTo6VW5pdCkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBtdXN0IGJlIGEg
c3RyaW5nIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InVuaXQgbXVzdCBiZSBhIHN0cmluZyJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzkxLDExICszOTEsMTEgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVt
YmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgWyZd
KHVuc2lnbmVkIGNhbmRpZGF0ZSkgewogICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZSA9PSBt
X3JvdW5kaW5nSW5jcmVtZW50OwogICAgICAgICB9KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5kaW5nSW5jcmVtZW50IG11c3QgYmUgb25lIG9m
IDEsIDIsIDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAs
IDI1MDAsIDUwMDAiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInJvdW5kaW5nSW5jcmVtZW50IG11c3QgYmUgb25lIG9mIDEsIDIsIDUsIDEwLCAyMCwg
MjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAsIDUwMDAiX3N0cik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0g
MSAmJiBtX3JvdW5kaW5nVHlwZSAhPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cykg
ewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5kaW5n
IHR5cGUgaXMgbm90IGZyYWN0aW9uLWRpZ2l0cyB3aGlsZSByb3VuZGluZ0luY3JlbWVudCBpcyBz
cGVjaWZpZWQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInJvdW5kaW5nIHR5cGUgaXMgbm90IGZyYWN0aW9uLWRpZ2l0cyB3aGlsZSByb3VuZGluZ0lu
Y3JlbWVudCBpcyBzcGVjaWZpZWQiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTYzNSwxNCArNjM1LDE0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVu
aXF1ZV9wdHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1m
X29wZW5Gb3JTa2VsZXRvbkFuZExvY2FsZSh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3
Lmxlbmd0aCgpLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCAmc3RhdHVzKSk7CiAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGlu
aXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQogICAgIG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVy
UmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxhcHNl
QW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0
aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX0FVVE8sIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tfQVBQ
Uk9YSU1BVEVMWSwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwgbnVsbHB0ciwgJnN0
YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9y
bWF0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgpAQCAtNzA3LDE0ICs3MDcsMTQgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0
Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmEKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBtX251bWJlckZv
cm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBJQ1VEZWxldGVyPHVudW1fY2xv
c2U+Pih1bnVtX29wZW4oc3R5bGUsIG51bGxwdHIsIDAsIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9u
cy5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3N0
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6
Q3VycmVuY3kpIHsKICAgICAgICAgdW51bV9zZXRUZXh0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0
LmdldCgpLCBVTlVNX0NVUlJFTkNZX0NPREUsIFN0cmluZ1ZpZXcobV9jdXJyZW5jeSkudXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKCksIG1fY3VycmVuY3kubGVuZ3RoKCksICZzdGF0dXMpOwogICAgICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3Mp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTc2NywxOCArNzY3LDE4IEBAIEpTVmFsdWUgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1
ZSkgY29uCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBm
b3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVs
ZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVy
Rm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zdHIpOwogICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9k
dWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0dGVkTnVtYmVyLmdldCgp
LCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVt
YmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAjZWxzZQogICAgIEFTU0VS
VChtX251bWJlckZvcm1hdCk7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24odW51bV9mb3JtYXREb3VibGUsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwg
YnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIG51bWJlci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zdHIpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIpKSk7CiB9CkBAIC03
OTgsMTggKzc5OCwxOCBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTWF0aGVtYXRpY2FsVgogICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1
bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+
Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zdHIp
OwogICAgIHVudW1mX2Zvcm1hdERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHN0cmlu
Zy5kYXRhKCksIHN0cmluZy5sZW5ndGgoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVz
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zdHIpOwogICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0dGVkTnVtYmVyLmdl
dCgpLCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEg
QmlnSW50LiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3N0cik7CiAjZWxzZQogICAgIEFT
U0VSVChtX251bWJlckZvcm1hdCk7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVj
aW5nRnVuY3Rpb24odW51bV9mb3JtYXREZWNpbWFsLCBtX251bWJlckZvcm1hdC5nZXQoKSwgc3Ry
aW5nLmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIEJpZ0ludC4iX3N0cik7CiAjZW5kaWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KQEAgLTgyMywzMSArODIzLDMxIEBAIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlIHN0YXJ0CiAgICAgQVNTRVJUKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIpOwogCiAgICAg
aWYgKHN0ZDo6aXNuYW4oc3RhcnQpIHx8IHN0ZDo6aXNuYW4oZW5kKSkKLSAgICAgICAgcmV0dXJu
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJlcnMgYXJl
IG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3N0cik7CiAK
ICAgICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxh
cmdlciB0aGFuIGVuZCJfc3RyKTsKIAogICAgIGlmIChpc05lZ2F0aXZlWmVybyhlbmQpICYmIHN0
YXJ0ID49IDApCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVu
ZCJfc3RyKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1
dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdlLCBJQ1VEZWxl
dGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGEgcmFuZ2UiX3N0cik7CiAKICAgICB1bnVtcmZfZm9ybWF0RG91YmxlUmFuZ2UobV9u
dW1iZXJSYW5nZUZvcm1hdHRlci5nZXQoKSwgc3RhcnQsIGVuZCwgcmFuZ2UuZ2V0KCksICZzdGF0
dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIGF1dG8qIGZvcm1hdHRlZFZhbHVl
ID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUocmFuZ2UuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQg
YSByYW5nZSJfc3RyKTsKIAogICAgIGludDMyX3QgbGVuZ3RoID0gMDsKICAgICBjb25zdCBVQ2hh
ciogc3RyaW5nID0gdWZtdHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZsZW5ndGgsICZz
dGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2Ui
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIHJldHVybiBqc1N0cmluZyh2
bSwgU3RyaW5nKHN0cmluZywgbGVuZ3RoKSk7CiB9CkBAIC04NjAsNyArODYwLDcgQEAgSlNWYWx1
ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBJbnRsTWF0aGVtYXQKICAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CiAK
ICAgICBpZiAoc3RhcnQubnVtYmVyVHlwZSgpID09IEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVt
YmVyVHlwZTo6TmFOIHx8IGVuZC5udW1iZXJUeXBlKCkgPT0gSW50bE1hdGhlbWF0aWNhbFZhbHVl
OjpOdW1iZXJUeXBlOjpOYU4pCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQYXNzZWQg
bnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zdHIpOwogCiAgICAgc3RhcnQuZW5zdXJlTm9uRG91
YmxlKCk7CiAgICAgY29uc3QgYXV0byYgc3RhcnRTdHJpbmcgPSBzdGFydC5nZXRTdHJpbmcoKTsK
QEAgLTg3MSwyMCArODcxLDIwIEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFu
Z2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bE1hdGhlbWF0CiAgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byByYW5nZSA9IHN0ZDo6dW5pcXVl
X3B0cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0
Pj4odW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsK
IAogICAgIHVudW1yZl9mb3JtYXREZWNpbWFsUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1hdHRlci5n
ZXQoKSwgc3RhcnRTdHJpbmcuZGF0YSgpLCBzdGFydFN0cmluZy5sZW5ndGgoKSwgZW5kU3RyaW5n
LmRhdGEoKSwgZW5kU3RyaW5nLmxlbmd0aCgpLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CiAgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZv
cm1hdCBhIHJhbmdlIl9zdHIpOwogCiAgICAgYXV0byogZm9ybWF0dGVkVmFsdWUgPSB1bnVtcmZf
cmVzdWx0QXNWYWx1ZShyYW5nZS5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9z
dHIpOwogCiAgICAgaW50MzJfdCBsZW5ndGggPSAwOwogICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcg
PSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmxlbmd0aCwgJnN0YXR1cyk7CiAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRv
IGZvcm1hdCBhIHJhbmdlIl9zdHIpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmco
c3RyaW5nLCBsZW5ndGgpKTsKIH0KQEAgLTEwMzAsNyArMTAzMCw3IEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKICAgICBpbnQzMl90IGZvcm1hdHRlZFN0cmluZ0xlbmd0aCA9IDA7CiAgICAgY29u
c3QgVUNoYXIqIGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIgPSB1Zm10dmFsX2dldFN0cmluZyhmb3Jt
YXR0ZWRWYWx1ZSwgJmZvcm1hdHRlZFN0cmluZ0xlbmd0aCwgJnN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciByYW5nZSJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciBy
YW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgcmVzdWx0U3Ry
aW5nKGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIsIGZvcm1hdHRlZFN0cmluZ0xlbmd0aCk7CkBAIC0x
MDM5LDE0ICsxMDM5LDE0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1Bh
cnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAvLyBTbyB3ZSBk
byBub3QgY29uc3RyYWludCBpdGVyYXRvci4KICAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjp1bmlx
dWVfcHRyPFVDb25zdHJhaW5lZEZpZWxkUG9zaXRpb24sIElDVURlbGV0ZXI8dWNmcG9zX2Nsb3Nl
Pj4odWNmcG9zX29wZW4oJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZv
cm1hdCBudW1iZXIgcmFuZ2UiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3N0cik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNoYXJlZFN0cmluZyA9IGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgInNoYXJlZCJfcyk7Ci0gICAgYXV0byBzdGFydFJhbmdlU3RyaW5nID0ganNOb250
cml2aWFsU3RyaW5nKHZtLCAic3RhcnRSYW5nZSJfcyk7Ci0gICAgYXV0byBlbmRSYW5nZVN0cmlu
ZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVuZFJhbmdlIl9zKTsKLSAgICBhdXRvIGxpdGVy
YWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsKKyAgICBhdXRv
IHNoYXJlZFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInNoYXJlZCJfc3RyKTsKKyAg
ICBhdXRvIHN0YXJ0UmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJzdGFydFJh
bmdlIl9zdHIpOworICAgIGF1dG8gZW5kUmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJlbmRSYW5nZSJfc3RyKTsKKyAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJsaXRlcmFsIl9zdHIpOwogCiAgICAgV1RGOjpSYW5nZTxpbnQzMl90PiBz
dGFydFJhbmdlIHsgLTEsIC0xIH07CiAgICAgV1RGOjpSYW5nZTxpbnQzMl90PiBlbmRSYW5nZSB7
IC0xLCAtMSB9OwpAQCAtMTA1NSw3ICsxMDU1LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpm
b3JtYXRSYW5nZVRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGJvb2wgbmV4dCA9IHVmbXR2YWxfbmV4dFBvc2l0
aW9uKGZvcm1hdHRlZFZhbHVlLCBpdGVyYXRvci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9zKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IG51bWJlciByYW5nZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIW5leHQpCkBAIC0xMDYzLDEzICsxMDYzLDEzIEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKIAogICAgICAgICBpbnQzMl90IGNhdGVnb3J5ID0gdWNmcG9zX2dldENhdGVnb3J5
KGl0ZXJhdG9yLmdldCgpLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9z
dHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaW50MzJfdCBm
aWVsZFR5cGUgPSB1Y2Zwb3NfZ2V0RmllbGQoaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAg
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciByYW5nZSJfcyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXRSYW5nZVRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
ICAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKICAgICAgICAgdWNmcG9zX2dldEluZGV4ZXMoaXRl
cmF0b3IuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgsICZzdGF0dXMpOwogICAgICAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciBpbnRlcnZhbCJfcyk7Cisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBudW1iZXIgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTE1MiwzNSArMTE1MiwzNSBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6
OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibAog
ICAgIEFTU0VSVChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKIAogICAgIGlmIChzdGQ6OmlzbmFu
KHN0YXJ0KSB8fCBzdGQ6OmlzbmFuKGVuZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2Ui
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJQYXNzZWQgbnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zdHIpOwogCiAgICAgaWYgKGVuZCA8
IHN0YXJ0KQotICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQi
X3N0cik7CiAKICAgICBpZiAoaXNOZWdhdGl2ZVplcm8oZW5kKSAmJiBzdGFydCA+PSAwKQotICAg
ICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBp
cyBsYXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3N0cik7CiAKICAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHJhbmdlID0gc3Rk
Ojp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xv
c2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zdHIpOwogCiAgICAgdW51bXJmX2Zvcm1hdERvdWJsZVJhbmdlKG1fbnVtYmVyUmFuZ2VGb3Jt
YXR0ZXIuZ2V0KCksIHN0YXJ0LCBlbmQsIHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0
IGEgcmFuZ2UiX3N0cik7CiAKICAgICBhdXRvKiBmb3JtYXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1
bHRBc1ZhbHVlKHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3N0cik7
CiAKICAgICBib29sIGVxdWFsID0gbnVtYmVyRmllbGRzUHJhY3RpY2FsbHlFcXVhbChmb3JtYXR0
ZWRWYWx1ZSwgc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVt
YmVyIHJhbmdlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAogICAgIGlmIChlcXVhbCkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBmb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgc3RhcnQsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgInNoYXJlZCJfcykpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBmb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgc3RhcnQsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgInNoYXJlZCJfc3RyKSkpOwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlD
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKSB7
CkBAIC0xMjAyLDcgKzEyMDIsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJh
bmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTQogICAgIEFTU0VS
VChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKIAogICAgIGlmIChzdGFydC5udW1iZXJUeXBlKCkg
PT0gSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpOYU4gfHwgZW5kLm51bWJlclR5
cGUoKSA9PSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6Ok5hTikKLSAgICAgICAg
cmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJl
cnMgYXJlIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3N0
cik7CiAKICAgICBzdGFydC5lbnN1cmVOb25Eb3VibGUoKTsKICAgICBjb25zdCBhdXRvJiBzdGFy
dFN0cmluZyA9IHN0YXJ0LmdldFN0cmluZygpOwpAQCAtMTIxMywyNCArMTIxMywyNCBAQCBKU1Zh
bHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBJbnRsTQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdl
LCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0
dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3N0cik7CiAKICAgICB1bnVtcmZfZm9ybWF0RGVjaW1h
bFJhbmdlKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIuZ2V0KCksIHN0YXJ0U3RyaW5nLmRhdGEoKSwg
c3RhcnRTdHJpbmcubGVuZ3RoKCksIGVuZFN0cmluZy5kYXRhKCksIGVuZFN0cmluZy5sZW5ndGgo
KSwgcmFuZ2UuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAg
IGF1dG8qIGZvcm1hdHRlZFZhbHVlID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUocmFuZ2UuZ2V0KCks
ICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFu
Z2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIGJvb2wgZXF1YWwgPSBu
dW1iZXJGaWVsZHNQcmFjdGljYWxseUVxdWFsKGZvcm1hdHRlZFZhbHVlLCBzdGF0dXMpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3MpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBu
dW1iZXIgcmFuZ2UiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaWYg
KGVxdWFsKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZvcm1hdFRvUGFydHMo
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN0YXJ0KSwganNOb250cml2aWFsU3RyaW5nKHZtLCAic2hh
cmVkIl9zKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZvcm1hdFRvUGFy
dHMoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN0YXJ0KSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
c2hhcmVkIl9zdHIpKSk7CiAKICAgICBKU0FycmF5KiBwYXJ0cyA9IEpTQXJyYXk6OnRyeUNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwogICAgIGlmICghcGFydHMpIHsKQEAg
LTE0MDgsMTEgKzE0MDgsMTEgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGlu
Z1ZhbHVlKFZNJiB2bSwgVXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCiAgICAgY2FzZSBVc2VHcm91
cGluZzo6RmFsc2U6CiAgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwogICAgIGNhc2Ug
VXNlR3JvdXBpbmc6Ok1pbjI6Ci0gICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJtaW4yIl9zKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm1pbjIi
X3N0cik7CiAgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoKLSAgICAgICAgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgImF1dG8iX3MpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFs
U3RyaW5nKHZtLCAiYXV0byJfc3RyKTsKICAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6Ci0g
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJhbHdheXMiX3MpOworICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYWx3YXlzIl9zdHIpOwogICAgIH0KICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTE0ODksNyArMTQ4OSw3IEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0eWxlCiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgICAgICBpbnQzMl90IGZpZWxkVHlwZSA9IGl0ZXJhdG9yLm5leHQoYmVnaW5JbmRleCwg
ZW5kSW5kZXgsIHN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBp
dGVyYXRlIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaXRlcmF0ZSBmaWVsZCBwb3Np
dGlvbiBpdGVyYXRvciJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICBpZiAoZmllbGRUeXBlIDwgMCkKQEAgLTE1MDAsNyArMTUwMCw3IEBAIHZvaWQgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0eWxlCiAKICAgICBhdXRvIGZsYXR0ZW4gPSBmbGF0dGVuRmllbGRzKFdURk1vdmUo
ZmllbGRzKSwgc3RyaW5nTGVuZ3RoKTsKIAotICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOworICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3N0cik7CiAgICAgSWRlbnRpZmllciB1
bml0TmFtZTsKICAgICBpZiAodW5pdCkKICAgICAgICAgdW5pdE5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidW5pdCIpOwpAQCAtMTUzMCwyOSArMTUzMCwyOSBAQCBKU1ZhbHVlIElu
dGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YmxlIHZhbAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IGF1dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZpZWxkUG9zaXRpb25JdGVyYXRvciwg
VUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+KHVmaWVsZHBvc2l0ZXJfb3Blbigmc3RhdHVz
KSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9u
IGl0ZXJhdG9yIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfc3RyKTsK
IAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKICNpZiBIQVZFKElDVV9VX05VTUJFUl9G
T1JNQVRURVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKICAgICBhdXRvIGZvcm1h
dHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVy
PHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IGEgbnVtYmVyLiJfc3RyKTsKICAgICB1bnVtZl9mb3JtYXREb3VibGUobV9udW1iZXJGb3Jt
YXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2lu
Z0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIHJl
c3VsdCk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfc3RyKTsKICAgICB1bnVtZl9yZXN1bHRHZXRB
bGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGZpZWxkSXRyLmdldCgpLCAm
c3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJl
ci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zdHIpOwogICAgIEludGxGaWVsZEl0ZXJh
dG9yIGl0ZXJhdG9yKCpmaWVsZEl0ci5nZXQoKSk7CiAjZWxzZQogICAgIEFTU0VSVChtX251bWJl
ckZvcm1hdCk7CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1f
Zm9ybWF0RG91YmxlRm9yRmllbGRzLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3Vs
dCwgZmllbGRJdHIuZ2V0KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9y
bWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAgICAgSW50
bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdldCgpKTsKICNlbmRpZgogCkBAIC0x
NTgwLDI1ICsxNTgwLDI1IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTWF0aGVtCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBmaWVsZEl0ciA9IHN0ZDo6dW5pcXVl
X3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRl
cj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVuIGZp
ZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zdHIpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVz
dWx0OwogICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CiAgICAgYXV0byBmb3JtYXR0ZWRO
dW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVsZXRlcjx1bnVt
Zl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBh
IG51bWJlci4iX3N0cik7CiAKICAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0
dGVyLmdldCgpLCBzdHJpbmcuZGF0YSgpLCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJl
ci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfc3RyKTsKIAogICAgIHN0
YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywg
Zm9ybWF0dGVkTnVtYmVyLmdldCgpLCByZXN1bHQpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3N0
cik7CiAKICAgICB1bnVtZl9yZXN1bHRHZXRBbGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWROdW1i
ZXIuZ2V0KCksIGZpZWxkSXRyLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zdHIpOwogCiAgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDE2NDA4OTk3YzE4ZjdjNzYyOGY3
NzViOGQ0MWRmNzcyNDJhNGQxNi4uM2MxMjE0MDNhOGEyMmNmY2E4ZDY0MjNhZTIxNDAyOTdmOWI1
MDU3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC03NCw3ICs3NCw3IEBAIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1CiAKIHZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZv
cm1hdFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIk51bWJl
ckZvcm1hdCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0
aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIk51bWJlckZvcm1hdCJfc3Ry
LCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIG51bWJlckZvcm1hdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdElubGluZXMuaAppbmRleCAxYWY0MWVhMjEyM2I1ZDZmYTI5MWNhZmQzZjJl
ZjYyZGVhYjc4Mzk0Li4zOTc3ZDkwMjI5NTBkZGFmZjM2YTQzMjMyY2FkMWY5MDlkMmQ1OThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRJbmxpbmVzLmgKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdp
dE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bFR5cGUqIGludGxJbnMK
ICAgICAgICAgICAgIGVsc2UgaWYgKG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRW
YWx1ZSkKICAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBzdGQ6Om1heCht
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMpOwogICAg
ICAgICAgICAgZWxzZSBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9u
RGlnaXRzKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDb21wdXRlZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4
aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBs
YXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3N0cik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IDhkYjI5
NDA4YWRmYWJjYTE4MzZkMTkwZDhjZDFiOGU1NTg1OWZhZWIuLjliM2E0MjJkYTk5ZjRlNjcyZmJm
NGJiNGVhYTlmMjA4YmM1ZTQwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0xMjAsNyAr
MTIwLDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCoKICAgICBhdXRvKiBuZiA9IEludGxOdW1i
ZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
ICAgIGlmIChVTkxJS0VMWSghbmYpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTnVtYmVyRm9ybWF0Il9z
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3N0cikpOwogCiAgICAgSlNCb3Vu
ZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDIuIElm
IG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCkBAIC0xMjgsNyArMTI4LDcgQEAgSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3Jt
YXQsIChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG5mLT5nbG9iYWxPYmplY3Qodm0pOwogICAgICAgICAvLyBhLiBMZXQgRiBiZSBhIG5ldyBi
dWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBpbiAxMS4zLjQuCiAgICAgICAgIC8v
IGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4KLSAgICAgICAgYXV0
byogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEs
ICJmb3JtYXQiX3MsIGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0LCBOb0ludHJpbnNpYyk7Cisg
ICAgICAgIGF1dG8qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCAiZm9ybWF0Il9zdHIsIGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0LCBOb0lu
dHJpbnNpYyk7CiAgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYs
IMKrdGhpcyB2YWx1ZcK7KS4KICAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIG5mLCBudWxscHRyLCAxLCBu
dWxscHRyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CkBAIC0xNDgsMTMgKzE0OCwxMyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSwgKEpTR2xvYmFsT2JqZQogICAg
IC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rpb25zLgogICAgIGF1dG8qIG51bWJlckZv
cm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW51bWJlckZvcm1hdCkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRSYW5nZSBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBO
dW1iZXJGb3JtYXQiX3N0cikpOwogCiAgICAgSlNWYWx1ZSBzdGFydFZhbHVlID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBKU1ZhbHVlIGVuZFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKTsKIAogICAgIGlmIChzdGFydFZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgZW5kVmFsdWUuaXNV
bmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInN0YXJ0IG9yIGVuZCBpcyB1bmRlZmluZWQiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgb3IgZW5kIGlzIHVu
ZGVmaW5lZCJfc3RyKTsKIAogICAgIGF1dG8gc3RhcnQgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1
ZShnbG9iYWxPYmplY3QsIHN0YXJ0VmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CkBAIC0xODIsNyArMTgyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGlu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cywgKEpTR2xvYmFsT2IKICAg
ICAvLyBEbyBub3QgdXNlIHVud3JhcEZvck9sZEZ1bmN0aW9ucy4KICAgICBhdXRvKiBudW1iZXJG
b3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJl
ckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIE51bWJlckZvcm1hdCJfc3RyKSk7CiAKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRU
RVIpCiAgICAgYXV0byB2YWx1ZSA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CkBAIC0yMDksMTMgKzIwOSwxMyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5n
ZVRvUGFydHMsIChKU0dsbwogICAgIC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rpb25z
LgogICAgIGF1dG8qIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1h
dCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW51bWJl
ckZvcm1hdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRS
YW5nZVRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3Mp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFJhbmdlVG9Q
YXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfc3RyKSk7CiAK
ICAgICBKU1ZhbHVlIHN0YXJ0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpT
VmFsdWUgZW5kVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgaWYgKHN0YXJ0
VmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgb3IgZW5k
IGlzIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zdHIpOwogCiAgICAg
YXV0byBzdGFydCA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnRW
YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTI0Miw3ICsy
NDIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbAogICAgIGF1dG8qIG51bWJlckZvcm1hdCA9
IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgTnVtYmVyRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBO
dW1iZXJGb3JtYXQiX3N0cikpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRl
eCAwNDliYzM5NDY4MjU2ZGUzNmZiY2RkYThmYTI3MjIxOWJiMzE4ZWY0Li40YzQyY2E0YjM3NjM2
NjYzMWYyMTU0ZjBhMWJhZGNlMzllOGQyOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtNzM0LDcgKzczNCw3IEBAIFZlY3RvcjxTdHJpbmc+
IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBsb2NhCiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBWZWN0b3I8
U3RyaW5nPigpKTsKIAogICAgICAgICAgICAgaWYgKCFrVmFsdWUuaXNTdHJpbmcoKSAmJiAha1Zh
bHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAibG9jYWxlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3Igb2JqZWN0Il9z
KTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
bG9jYWxlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3Igb2JqZWN0Il9zdHIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CiAKQEAgLTgxMSw3ICs4MTEsNyBAQCBT
dHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGlm
ICghaWN1RGVmYXVsdExvY2FsU3RyaW5nLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBpY3VE
ZWZhdWx0TG9jYWxTdHJpbmcuZ2V0KCk7CiAKLSAgICByZXR1cm4gImVuIl9zOworICAgIHJldHVy
biAiZW4iX3N0cjsKIH0KIAogU3RyaW5nIHJlbW92ZVVuaWNvZGVMb2NhbGVFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBsb2NhbGUpCkBAIC05MTcsNyArOTE3LDcgQEAgUmVzb2x2ZWRMb2NhbGUgcmVz
b2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBMb2NhbGVTZXQm
IGF2YWkKICAgICBSZXNvbHZlZExvY2FsZSByZXNvbHZlZDsKICAgICByZXNvbHZlZC5kYXRhTG9j
YWxlID0gZm91bmRMb2NhbGU7CiAKLSAgICBTdHJpbmcgc3VwcG9ydGVkRXh0ZW5zaW9uID0gIi11
Il9zOworICAgIFN0cmluZyBzdXBwb3J0ZWRFeHRlbnNpb24gPSAiLXUiX3N0cjsKICAgICBmb3Ig
KFJlbGV2YW50RXh0ZW5zaW9uS2V5IGtleSA6IHJlbGV2YW50RXh0ZW5zaW9uS2V5cykgewogICAg
ICAgICBBU0NJSUxpdGVyYWwga2V5U3RyaW5nID0gcmVsZXZhbnRFeHRlbnNpb25LZXlTdHJpbmco
a2V5KTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4ga2V5TG9jYWxlRGF0YSA9IGxvY2FsZURhdGEo
Zm91bmRMb2NhbGUsIGtleSk7CkBAIC05MzcsNyArOTM3LDcgQEAgUmVzb2x2ZWRMb2NhbGUgcmVz
b2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBMb2NhbGVTZXQm
IGF2YWkKICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbkFkZGl0aW9u
ID0gbWFrZVN0cmluZygnLScsIGtleVN0cmluZywgJy0nLCB2YWx1ZSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUxvY2FsZURhdGEuY29udGFp
bnMoInRydWUiX3MpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gInRydWUiX3M7Cisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gInRydWUiX3N0cjsKICAgICAgICAgICAgICAgICAg
ICAgc3VwcG9ydGVkRXh0ZW5zaW9uQWRkaXRpb24gPSBtYWtlU3RyaW5nKCctJywga2V5U3RyaW5n
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNTEwLDM1ICsxNTEwLDM1
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPGNoYXIsIDMyPj4gY2Fub25pY2FsaXplTG9jYWxlSURX
aXRob3V0TnVsbFRlcm1pbmF0b3IoY29uc3QKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBJQ1VD
YWxlbmRhcktleXdvcmRUb0JDUDQ3KGNvbnN0IFN0cmluZyYgY2FsZW5kYXIpCiB7CiAgICAgaWYg
KGNhbGVuZGFyID09ICJncmVnb3JpYW4iX3MpCi0gICAgICAgIHJldHVybiAiZ3JlZ29yeSJfczsK
KyAgICAgICAgcmV0dXJuICJncmVnb3J5Il9zdHI7CiAgICAgLy8gaXNsYW1pY2MgaXMgZGVwcmVj
YXRlZCBpbiBCQ1A0NywgYW5kIGlzbGFtaWMtY2l2aWwgaXMgcHJlZmVycmVkLgogICAgIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9jbGRyL2Jsb2IvbWFzdGVyL2NvbW1vbi9iY3A0
Ny9jYWxlbmRhci54bWwKICAgICBpZiAoY2FsZW5kYXIgPT0gImV0aGlvcGljLWFtZXRlLWFsZW0i
X3MpCi0gICAgICAgIHJldHVybiAiZXRoaW9hYSJfczsKKyAgICAgICAgcmV0dXJuICJldGhpb2Fh
Il9zdHI7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RkOjpvcHRpb25hbDxTdHJp
bmc+IG1hcEJDUDQ3VG9JQ1VDYWxlbmRhcktleXdvcmQoY29uc3QgU3RyaW5nJiBjYWxlbmRhcikK
IHsKICAgICBpZiAoY2FsZW5kYXIgPT0gImdyZWdvcnkiX3MpCi0gICAgICAgIHJldHVybiAiZ3Jl
Z29yaWFuIl9zOworICAgICAgICByZXR1cm4gImdyZWdvcmlhbiJfc3RyOwogICAgIGlmIChjYWxl
bmRhciA9PSAiaXNsYW1pY2MiX3MpCi0gICAgICAgIHJldHVybiAiaXNsYW1pYy1jaXZpbCJfczsK
KyAgICAgICAgcmV0dXJuICJpc2xhbWljLWNpdmlsIl9zdHI7CiAgICAgaWYgKGNhbGVuZGFyID09
ICJldGhpb2FhIl9zKQotICAgICAgICByZXR1cm4gImV0aGlvcGljLWFtZXRlLWFsZW0iX3M7Cisg
ICAgICAgIHJldHVybiAiZXRoaW9waWMtYW1ldGUtYWxlbSJfc3RyOwogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBJQ1VDb2xsYXRpb25LZXl3
b3JkVG9CQ1A0Nyhjb25zdCBTdHJpbmcmIGNvbGxhdGlvbikKIHsKICAgICBpZiAoY29sbGF0aW9u
ID09ICJkaWN0aW9uYXJ5Il9zKQotICAgICAgICByZXR1cm4gImRpY3QiX3M7CisgICAgICAgIHJl
dHVybiAiZGljdCJfc3RyOwogICAgIGlmIChjb2xsYXRpb24gPT0gImdiMjMxMmhhbiJfcykKLSAg
ICAgICAgcmV0dXJuICJnYjIzMTIiX3M7CisgICAgICAgIHJldHVybiAiZ2IyMzEyIl9zdHI7CiAg
ICAgaWYgKGNvbGxhdGlvbiA9PSAicGhvbmVib29rIl9zKQotICAgICAgICByZXR1cm4gInBob25l
YmsiX3M7CisgICAgICAgIHJldHVybiAicGhvbmViayJfc3RyOwogICAgIGlmIChjb2xsYXRpb24g
PT0gInRyYWRpdGlvbmFsIl9zKQotICAgICAgICByZXR1cm4gInRyYWQiX3M7CisgICAgICAgIHJl
dHVybiAidHJhZCJfc3RyOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKQEAgLTE2NDIs
MTMgKzE2NDIsMTMgQEAgc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZUNvbGxhdGlvbnMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKICAgICBhdXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFVFbnVtZXJhdGlv
biwgSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjb2xfZ2V0S2V5d29yZFZhbHVlcygiY29sbGF0
aW9uIiwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBh
dmFpbGFibGUgY29sbGF0aW9ucyJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjb2xsYXRpb25zIl9z
dHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGludDMyX3QgY291bnQgPSB1
ZW51bV9jb3VudChlbnVtZXJhdGlvbi5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjb2xsYXRpb25zIl9zKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUg
YXZhaWxhYmxlIGNvbGxhdGlvbnMiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CkBAIC0xNjU2LDEzICsxNjU2LDEzIEBAIHN0YXRpYyBKU0FycmF5KiBhdmFpbGFibGVDb2xsYXRp
b25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgZWxlbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShjb3VudCArIDIpOwogICAgIC8vIElDVSB+NjkgaGFzIGEgYnVnIHRoYXQg
ZG9lcyBub3QgcmVwb3J0ICJlbW9qaSIgYW5kICJlb3IiIGZvciBjb2xsYXRpb24gd2hlbiB1c2lu
ZyB1Y29sX2dldEtleXdvcmRWYWx1ZXMuCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNv
ZGUtb3JnL2ljdS9jb21taXQvMjQ3NzhkZmM5YmY2N2Y0MzE1MDkzNjFhMTczYTMzYTFhYjg2MGI1
ZAotICAgIGVsZW1lbnRzLmFwcGVuZCgiZW1vamkiX3MpOwotICAgIGVsZW1lbnRzLmFwcGVuZCgi
ZW9yIl9zKTsKKyAgICBlbGVtZW50cy5hcHBlbmQoImVtb2ppIl9zdHIpOworICAgIGVsZW1lbnRz
LmFwcGVuZCgiZW9yIl9zdHIpOwogICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwg
Y291bnQ7ICsraW5kZXgpIHsKICAgICAgICAgaW50MzJfdCBsZW5ndGggPSAwOwogICAgICAgICBj
b25zdCBjaGFyKiBwb2ludGVyID0gdWVudW1fbmV4dChlbnVtZXJhdGlvbi5nZXQoKSwgJmxlbmd0
aCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJh
dGUgYXZhaWxhYmxlIGNvbGxhdGlvbnMiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIGNvbGxh
dGlvbnMiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAg
IFN0cmluZyBjb2xsYXRpb24ocG9pbnRlciwgbGVuZ3RoKTsKQEAgLTE2OTUsMTMgKzE2OTUsMTMg
QEAgc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZUN1cnJlbmNpZXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBh
dXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFVFbnVtZXJhdGlvbiwgSUNVRGVsZXRl
cjx1ZW51bV9jbG9zZT4+KHVjdXJyX29wZW5JU09DdXJyZW5jaWVzKFVDVVJSX0FMTCwgJnN0YXR1
cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY3Vy
cmVuY2llcyJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjdXJyZW5jaWVzIl9zdHIpOwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGludDMyX3QgY291bnQgPSB1ZW51bV9jb3VudChl
bnVtZXJhdGlvbi5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
ZW51bWVyYXRlIGF2YWlsYWJsZSBjdXJyZW5jaWVzIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIGN1
cnJlbmNpZXMiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xNzEzLDEz
ICsxNzEzLDEzIEBAIHN0YXRpYyBKU0FycmF5KiBhdmFpbGFibGVDdXJyZW5jaWVzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgLy8gICAgIDIuIERvIG5vdCBhZGQgRVFFIGFuZCBM
U00KICAgICAvLyBodHRwczovL3VuaWNvZGUtb3JnLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0lDVS0y
MTY4NQogICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQgKyAyKTsKLSAg
ICBlbGVtZW50cy5hcHBlbmQoIlZFUyJfcyk7Ci0gICAgZWxlbWVudHMuYXBwZW5kKCJVWVciX3Mp
OworICAgIGVsZW1lbnRzLmFwcGVuZCgiVkVTIl9zdHIpOworICAgIGVsZW1lbnRzLmFwcGVuZCgi
VVlXIl9zdHIpOwogICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsr
aW5kZXgpIHsKICAgICAgICAgaW50MzJfdCBsZW5ndGggPSAwOwogICAgICAgICBjb25zdCBjaGFy
KiBwb2ludGVyID0gdWVudW1fbmV4dChlbnVtZXJhdGlvbi5nZXQoKSwgJmxlbmd0aCwgJnN0YXR1
cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxh
YmxlIGN1cnJlbmNpZXMiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIGN1cnJlbmNpZXMiX3N0
cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIFN0cmluZyBj
dXJyZW5jeShwb2ludGVyLCBsZW5ndGgpOwpAQCAtMTc1MSwxMyArMTc1MSwxMyBAQCBzdGF0aWMg
SlNBcnJheSogYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8g
ZW51bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVl
bnVtX2Nsb3NlPj4odW51bXN5c19vcGVuQXZhaWxhYmxlTmFtZXMoJnN0YXR1cykpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3Rl
bXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3RlbXMiX3N0cik7CiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaW50MzJfdCBjb3VudCA9IHVlbnVtX2NvdW50
KGVudW1lcmF0aW9uLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBlbnVtZXJhdGUgYXZhaWxhYmxlIG51bWJlcmluZyBzeXN0ZW1zIl9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZh
aWxhYmxlIG51bWJlcmluZyBzeXN0ZW1zIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KIApAQCAtMTc2NywxMiArMTc2NywxMiBAQCBzdGF0aWMgSlNBcnJheSogYXZhaWxhYmxlTnVt
YmVyaW5nU3lzdGVtcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBpbnQz
Ml90IGxlbmd0aCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSB1ZW51bV9uZXh0KGVu
dW1lcmF0aW9uLmdldCgpLCAmbGVuZ3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3RlbXMiX3Mp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIG51bWJlcmluZyBzeXN0ZW1zIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBhdXRvIG51bWJlcmluZ1N5c3Rl
bSA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyaW5nU3lzdGVtLCBJQ1VEZWxldGVyPHVudW1zeXNf
Y2xvc2U+Pih1bnVtc3lzX29wZW5CeU5hbWUobmFtZSwgJnN0YXR1cykpOwogICAgICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBudW1iZXJpbmcgc3lz
dGVtcyJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3RlbXMiX3N0cik7
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIGlmICh1bnVtc3lz
X2lzQWxnb3JpdGhtaWMobnVtYmVyaW5nU3lzdGVtLmdldCgpKSkKQEAgLTE4MDksNyArMTgwOSw3
IEBAIHN0YXRpYyBib29sIGlzVmFsaWRUaW1lWm9uZU5hbWVGcm9tSUNVVGltZVpvbmUoU3RyaW5n
VmlldyB0aW1lWm9uZU5hbWUpCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNhbm9uaWNh
bGl6ZVRpbWVab25lTmFtZUZyb21JQ1VUaW1lWm9uZShTdHJpbmcmJiB0aW1lWm9uZU5hbWUpCiB7
CiAgICAgaWYgKGlzVVRDRXF1aXZhbGVudCh0aW1lWm9uZU5hbWUpKQotICAgICAgICByZXR1cm4g
IlVUQyJfczsKKyAgICAgICAgcmV0dXJuICJVVEMiX3N0cjsKICAgICByZXR1cm4gc3RkOjptYWtl
X29wdGlvbmFsKFdURk1vdmUodGltZVpvbmVOYW1lKSk7CiB9CiAKQEAgLTE5MzEsNyArMTkzMSw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsT2JqZWN0RnVuY1N1cHBvcnRlZFZhbHVl
c09mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgaWYgKGtleSA9PSAidW5pdCJfcykKICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYXZhaWxhYmxl
VW5pdHMoZ2xvYmFsT2JqZWN0KSkpOwogCi0gICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJVbmtub3duIGtleSBmb3IgSW50bC5zdXBwb3J0ZWRWYWx1ZXNPZiJfcyk7Cisg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmtub3duIGtleSBmb3Ig
SW50bC5zdXBwb3J0ZWRWYWx1ZXNPZiJfc3RyKTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRl
eCA0MWMyYmZkZjZlZTUxNWMyMzRkY2JjZTYwY2RiMzMwM2VhYjMwYWZlLi45YTlmOTBlZDJkMGY5
ZjkxNmU0MTMwY2VjODhkY2M4MzY4MDY4MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBpbmxp
bmUgSlNPYmplY3QqIGludGxHZXRPcHRpb25zT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgb3B0aQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoTElL
RUxZKG9wdGlvbnMuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBhc09iamVjdChvcHRpb25z
KTsKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAib3B0aW9ucyBhcmd1
bWVudCBpcyBub3QgYW4gb2JqZWN0IG9yIHVuZGVmaW5lZCJfcyk7CisgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm9wdGlvbnMgYXJndW1lbnQgaXMgbm90IGFuIG9iamVj
dCBvciB1bmRlZmluZWQiX3N0cik7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4IGE4
NTEzMTFjNzQ0YjVlYWIxNjVhYzdmNGQ1NjcxMDA2ZDg2Njc4M2UuLjY0ZmYwZjE5ZTI2MDRmODgy
OTlmMGZlZmRiOWM1ZTBiNGU5MzBkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgSW50
bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1CiAgICAgYXV0byByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFs
T2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBsb2NhbGVNYXRjaGVy
LCBsb2NhbGVPcHRpb25zLCB7IH0sIGxvY2FsZURhdGEpOwogICAgIG1fbG9jYWxlID0gcmVzb2x2
ZWQubG9jYWxlOwogICAgIGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJh
bFJ1bGVzIGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyBk
dWUgdG8gaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTE0MCwyMSArMTQwLDIxIEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFs
UnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAKICAgICBtX251bWJl
ckZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9y
bWF0dGVyRGVsZXRlcj4odW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVk
LmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGxvY2FsZS5kYXRhKCksICZzdGF0dXMpKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBp
bml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQogICAgIG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVy
UmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxhcHNl
QW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0
aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX05PTkUsIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tfUkFO
R0UsIGxvY2FsZS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1
bGVzIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAjZWxzZQogICAgIG1f
bnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3Jt
YXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBsb2NhbGUuZGF0
YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0g
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5p
dGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfc3RyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgSW50bFBsdXJh
bFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1CiAKICAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxS
dWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobG9jYWxlLmRh
dGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQ
TFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3N0
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CkBAIC0xOTIsNyArMTkyLDcgQEAgSlNPYmpl
Y3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiAKICAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sb2NhbGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9sb2NhbGUpKTsKLSAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyAib3JkaW5hbCJfcyA6ICJj
YXJkaW5hbCJfcykpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dHlwZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/
ICJvcmRpbmFsIl9zdHIgOiAiY2FyZGluYWwiX3N0cikpOwogICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUludGVnZXJEaWdpdHMsIGpzTnVtYmVyKG1f
bWluaW11bUludGVnZXJEaWdpdHMpKTsKICAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CiAg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKQEAgLTI0NSwyNyArMjQ1
LDI3IEBAIEpTVmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zKTsKKyAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zdHIpOwogCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRU
RVIpCiAgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRl
ZE51bWJlciwgSUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQo
JnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJh
bCB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3N0cik7CiAgICAgdW51bWZf
Zm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVt
YmVyLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNl
bGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zdHIpOwog
ICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJv
ZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0Rm9ybWF0dGVkLCBtX3BsdXJhbFJ1bGVzLmdl
dCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJh
bCB2YWx1ZSJfc3RyKTsKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhXVEZNb3ZlKGJ1
ZmZlcikpKTsKICNlbHNlCiAgICAgVmVjdG9yPFVDaGFyLCA4PiByZXN1bHQoOCk7CiAgICAgYXV0
byBsZW5ndGggPSB1cGxydWxlc19zZWxlY3RXaXRoRm9ybWF0KG1fcGx1cmFsUnVsZXMuZ2V0KCks
IHZhbHVlLCBtX251bWJlckZvcm1hdC5nZXQoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUo
KSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1
cmFsIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfc3RyKTsKIAogICAgIHJl
dHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKHJlc3VsdC5kYXRhKCksIGxlbmd0aCkpOwogI2VuZGlm
CkBAIC0yODAsMjcgKzI4MCwyNyBAQCBKU1ZhbHVlIEludGxQbHVyYWxSdWxlczo6c2VsZWN0UmFu
Z2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YXJ0LAogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChzdGQ6OmlzbmFuKHN0
YXJ0KSB8fCBzdGQ6OmlzbmFuKGVuZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQ
YXNzZWQgbnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zdHIpOwogCiAgICAgaWYgKGVuZCA8IHN0
YXJ0KQotICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3N0
cik7CiAKICAgICBpZiAoaXNOZWdhdGl2ZVplcm8oZW5kKSAmJiBzdGFydCA+PSAwKQotICAgICAg
ICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBs
YXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3N0cik7CiAKICAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHJhbmdlID0gc3RkOjp1
bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xvc2VS
ZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2Vs
ZWN0IHJhbmdlIG9mIHBsdXJhbCB2YWx1ZSJfc3RyKTsKIAogICAgIHVudW1yZl9mb3JtYXREb3Vi
bGVSYW5nZShtX251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydCwgZW5kLCByYW5nZS5n
ZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3Qg
cmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2
YWx1ZSJfc3RyKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKICAgICBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0Rm9yUmFuZ2UsIG1f
cGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdlLmdldCgpLCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBw
bHVyYWwgdmFsdWUiX3N0cik7CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92
ZShidWZmZXIpKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAppbmRleCA4MTJh
YWEyMDAwZTMwYjllNmI5Y2Y3MzA1N2JlZDQ0NDAyMjc4ODE2Li4zYmNlN2RmYzQxOGIyMzlkOGU2
N2EzMTk0MDU5MzhiYzZkN2VkZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCkBAIC03NCw3
ICs3NCw3IEBAIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpJbnRsUGx1cmFsUnVsZXNDb25z
dHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0CiAKIHZvaWQgSW50bFBsdXJhbFJ1bGVz
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlKiBwbHVyYWxSdWxlc1Byb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgMCwgIlBsdXJhbFJ1bGVzIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVj
dHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiUGx1cmFs
UnVsZXMiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0
aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBwbHVyYWxSdWxlc1Byb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpOwogICAgIHBsdXJhbFJ1bGVzUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUuY3BwCmluZGV4IDYyYzA4YmY5NTdhMTMyZjEyZDZkNGJmYjJkODFjZGIwOThkM2E1
OTEuLjZhYWJiZTkwNTcwZDc3N2Q5MGI2NTBmODVmYmFhOGNhN2I5MDJlNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlLmNwcApAQCAtOTEsNyArOTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAg
IEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQbHVyYWxS
dWxlcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIGlmICghcGx1cmFsUnVs
ZXMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdCBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIFBsdXJhbFJ1bGVzIl9zKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
UGx1cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IFBsdXJhbFJ1bGVzIl9zdHIpKTsKIAogICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTEwOCwxMyArMTA4LDEzIEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2Us
IChKU0dsb2JhbE9iamVjCiAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVt
YmVyZm9ybWF0LXYzL291dC9wbHVyYWxydWxlcy9kaWZmLmh0bWwjc2VjLWludGwucGx1cmFscnVs
ZXMucHJvdG90eXBlLnNlbGVjdHJhbmdlCiAgICAgSW50bFBsdXJhbFJ1bGVzKiBwbHVyYWxSdWxl
cyA9IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJhbFJ1bGVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghcGx1cmFsUnVsZXMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUGx1cmFsUnVs
ZXMucHJvdG90eXBlLnNlbGVjdFJhbmdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgUGx1
cmFsUnVsZXMiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2Vs
ZWN0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxlcyJfc3RyKSk7
CiAKICAgICBKU1ZhbHVlIHN0YXJ0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAg
IEpTVmFsdWUgZW5kVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgaWYgKHN0
YXJ0VmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgb3Ig
ZW5kIGlzIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zdHIpOwogCiAg
ICAgZG91YmxlIHN0YXJ0ID0gc3RhcnRWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0xMzYsNyArMTM2LDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZl
ZE9wdGlvbnMsIChKU0dsb2JhbE8KICAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0g
anNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAKICAgICBpZiAoIXBsdXJhbFJ1bGVzKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVz
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQ
bHVyYWxSdWxlcyJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxlcyJf
c3RyKSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShw
bHVyYWxSdWxlcy0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9iamVjdCkpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5jcHAKaW5kZXggZTMyOGExYzFmNDBjNDllNjk1NDUxYTUzZDI5OWU1MjMxN2I5ZDc1Ni4uMzBj
NmM3MDU2NjYxOTkxMDFjMjRiYTY1OGIyYmMxN2QxNTgzMzc0YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAK
QEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmluaXRpYWxp
emVSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKCFudW1iZXJpbmdTeXN0ZW0uaXNO
dWxsKCkpIHsKICAgICAgICAgaWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShudW1i
ZXJpbmdTeXN0ZW0pKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIm51bWJlcmluZ1N5c3RlbSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBudW1iZXJpbmcg
c3lzdGVtIHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmlu
ZyBzeXN0ZW0gdmFsdWUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNp
b25LZXk6Ok51KV0gPSBudW1iZXJpbmdTeXN0ZW07CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojppbml0aWFsaXplUmVsYXRpdmVUaW1lRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWwKICAgICBhdXRvIHJlc29sdmVkID0gcmVzb2x2ZUxvY2FsZShnbG9i
YWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU1hdGNo
ZXIsIGxvY2FsZU9wdGlvbnMsIHsgUmVsZXZhbnRFeHRlbnNpb25LZXk6Ok51IH0sIGxvY2FsZURh
dGEpOwogICAgIG1fbG9jYWxlID0gcmVzb2x2ZWQubG9jYWxlOwogICAgIGlmIChtX2xvY2FsZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZlVGltZUZvcm1hdCBkdWUgdG8gaW52YWxpZCBs
b2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxv
Y2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM4LDcgKzEzOCw3IEBA
IHZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1h
dCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIs
IDAsIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsK
ICAgICBpZiAoVU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1cykpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxhdGl2
ZVRpbWVGb3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zdHIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjMsMTMgKzE2MywxMyBAQCB2b2lkIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbAogCiAgICAgVU51bWJlckZvcm1hdCogY2xvbmVkTnVtYmVyRm9ybWF0ID0gdW51
bV9jbG9uZShtX251bWJlckZvcm1hdC5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVOTElLRUxZ
KFVfRkFJTFVSRShzdGF0dXMpKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBp
bml0aWFsaXplIFJlbGF0aXZlVGltZUZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxV
UmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciwgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxl
dGVyPih1cmVsZGF0ZWZtdF9vcGVuKGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIGNs
b25lZE51bWJlckZvcm1hdCwgaWN1U3R5bGUsIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9T
VEFOREFMT05FLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVOTElLRUxZKFVfRkFJTFVSRShzdGF0dXMp
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZl
VGltZUZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTE5NSw3ICsx
OTUsNyBAQCBKU09iamVjdCogSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6cmVzb2x2ZWRPcHRpb25z
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1f
bG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
dHlsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0eWxlKSkpOwotICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bnVtZXJpYywganNOb250
cml2aWFsU3RyaW5nKHZtLCBtX251bWVyaWMgPyAiYWx3YXlzIl9zIDogImF1dG8iX3MpKTsKKyAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm51bWVyaWMsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgbV9udW1lcmljID8gImFsd2F5cyJfc3RyIDogImF1dG8iX3N0cikp
OwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bnVtYmVyaW5n
U3lzdGVtLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbnVtYmVyaW5nU3lzdGVtKSk7CiAgICAg
cmV0dXJuIG9wdGlvbnM7CiB9CkBAIC0yMzksMTMgKzIzOSwxMyBAQCBTdHJpbmcgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6Zm9ybWF0SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXIgYXJndW1lbnQgbXVzdCBiZSBmaW5pdGUiX3MpOwor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm51bWJlciBhcmd1
bWVudCBtdXN0IGJlIGZpbml0ZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IH0KIAogICAgIGF1dG8gdW5pdFR5cGUgPSByZWxhdGl2ZVRpbWVVbml0VHlwZSh1bml0KTsKICAg
ICBpZiAoIXVuaXRUeXBlKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAidW5pdCBhcmd1bWVudCBpcyBub3QgYSByZWNvZ25pemVkIHVuaXQgdHlwZSJfcyk7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBhcmd1
bWVudCBpcyBub3QgYSByZWNvZ25pemVkIHVuaXQgdHlwZSJfc3RyKTsKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIH0KIApAQCAtMjU0LDcgKzI1NCw3IEBAIFN0cmluZyBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Ojpmb3JtYXRJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3ViCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0OwogICAgIGF1dG8gc3RhdHVzID0g
Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKGZvcm1hdFJlbGF0aXZlVGltZSwgbV9yZWxhdGl2
ZURhdGVUaW1lRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgdW5pdFR5cGUudmFsdWUoKSwgcmVzdWx0
KTsKICAgICBpZiAoVU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1cykpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZl
IHRpbWUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGZvcm1hdCByZWxhdGl2ZSB0aW1lIl9zdHIpOwogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgfQogCkBAIC0yOTEsNyArMjkxLDcgQEAgSlNWYWx1ZSBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRv
dWIKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzLCBtX251bWJlckZv
cm1hdC5nZXQoKSwgYWJzVmFsdWUsIGJ1ZmZlciwgaXRlcmF0b3IuZ2V0KCkpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRpbWUiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBm
b3JtYXQgcmVsYXRpdmUgdGltZSJfc3RyKTsKIAogICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0g
U3RyaW5nKGJ1ZmZlcik7CiAKQEAgLTI5OSw3ICsyOTksNyBAQCBKU1ZhbHVlIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YgogICAgIGlmICghcGFydHMpCiAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKLSAgICBKU1N0cmluZyogbGl0ZXJhbFN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOworICAgIEpTU3RyaW5nKiBsaXRl
cmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfc3RyKTsKIAogICAg
IC8vIFdlIG9ubHkgaGF2ZSBvbmUgaW5wdXQgbnVtYmVyLCBzbyBvdXIgcmVsYXRpdmUgdGltZSB3
aWxsIGhhdmUgYXQgbW9zdCBvbmUgbnVtZXJpYyBzdWJzdHJpbmcsCiAgICAgLy8gYnV0IHdlIG5l
ZWQgdG8gbGlzdCBhbGwgb2YgdGhlIG51bWVyaWMgcGFydHMgc2VwYXJhdGVseS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCmluZGV4IGE4MjVjMzY2NzEzYzE0NDkwY2I2ZGRl
YjQ1NzZkYmQ1NTZjZjM2NjQuLjU1NjZjNTBmNzViYTAyMWE0Y2U2YjJhMjlhNzljYWQ4NTdiMzAz
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtNzQsNyArNzQs
NyBAQCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cgogCiB2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlKiByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDAsICJSZWxhdGl2ZVRpbWVGb3JtYXQiX3MsIFByb3BlcnR5QWRk
aXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sIDAsICJSZWxhdGl2ZVRpbWVGb3JtYXQiX3N0ciwgUHJvcGVydHlBZGRpdGlv
bk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWxhdGl2ZVRpbWVG
b3JtYXRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBy
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAppbmRleCBkNDc5NDVhZDZhOTcyYWZmZjVlNjM4YmFkOTRlNDJlMDlmOTll
MzIxLi4wNDM1ZjI4ODJlNDU1MTJjOTgxMGNjZTY1NzNjNGM2ZjVjOGY0OGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtODQsNyArODQsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXQsIChK
U0dsb2JhbE9iagogCiAgICAgYXV0byogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2Fz
dDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghcmVsYXRpdmVUaW1lRm9ybWF0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgUmVs
YXRpdmVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBSZWxhdGl2ZVRp
bWVGb3JtYXQiX3N0cikpOwogCiAgICAgZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihpbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFy
dHMsIChKU0dsCiAKICAgICBhdXRvKiByZWxhdGl2ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0
PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCFyZWxhdGl2ZVRpbWVGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgUmVsYXRpdmVUaW1lRm9ybWF0Il9zdHIpKTsKIAogICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMsIChKUwogCiAgICAgYXV0byogcmVsYXRpdmVUaW1lRm9ybWF0ID0g
anNEeW5hbWljQ2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwogICAgIGlmICghcmVsYXRpdmVUaW1lRm9ybWF0KQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRs
LlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3N0cikpOwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0
LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlLmNwcAppbmRleCAwN2MwNWNiYzBiY2FlOWMyNWEzZjNjYjAxMWVjMzJhZDhjNTYzMzI1Li4w
ZDE4NDM1MzIxYjA0N2MxMGJhMWFiNGRiZjBkNjVhNWY4NTEzMGJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9y
UHJvdG90eXBlLmNwcApAQCAtNzksNyArNzksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
aW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0LCAoSlNHbG9iYWxPYmplY3QqCiAK
ICAgICBhdXRvKiBzZWdtZW50SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdtZW50SXRl
cmF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzZWdtZW50SXRl
cmF0b3IpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLlNlZ21lbnRJdGVyYXRvci5wcm90b3R5cGUubmV4dCBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIFNlZ21lbnRJdGVyYXRvciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRJdGVyYXRvci5wcm90
b3R5cGUubmV4dCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFNlZ21lbnRJdGVyYXRvciJf
c3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNl
Z21lbnRJdGVyYXRvci0+bmV4dChnbG9iYWxPYmplY3QpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCmluZGV4IDhkODVmZTdjOWNjMmU2
MGNmZTZiMjIzODMzNDk3ZGRmOWI0ZjdjYjMuLmFjMTkyNjk4MTA1MGM1YWY4YjgzNzIwNjQ0YTY2
MmNkNzc5OTkxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxTZWdtZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxT
ZWdtZW50ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSW50bFNlZ21lbnRlcjo6aW5pdGlh
bGl6ZVNlZ21lbnRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvCiAK
ICAgICBtX2xvY2FsZSA9IHJlc29sdmVkLmxvY2FsZTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50ZXIgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0
aWFsaXplIFNlZ21lbnRlciBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEludGxTZWdtZW50ZXI6Omlu
aXRpYWxpemVTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBs
bwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIG1fc2VnbWVudGVy
ID0gc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+
KHVicmtfb3Blbih0eXBlLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAwLCAmc3Rh
dHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50ZXIi
X3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgU2VnbWVudGVyIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
fQpAQCAtMTI4LDEyICsxMjgsMTIgQEAgSlNWYWx1ZSBJbnRsU2VnbWVudGVyOjpzZWdtZW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc3RyaW5nVmFsdWUKICAgICBVRXJy
b3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHNlZ21lbnRlciA9IHN0ZDo6
dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPihjbG9uZVVC
cmVha0l0ZXJhdG9yKG1fc2VnbWVudGVyLmdldCgpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50cyJfcyk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50
cyJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgdWJya19zZXRUZXh0KHNl
Z21lbnRlci5nZXQoKSwgdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLT5kYXRhKCksIHVwY29udmVydGVk
Q2hhcmFjdGVycy0+c2l6ZSgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIFNlZ21lbnRzIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRzIl9zdHIpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjU5MDYx
MDUwY2VjYmJhZWQ5Y2E0MTJjNDYwNzExNzkwOTVlOWQwNC4uYTZkODkxMzRmYjIyNmFmYmRiYjIx
ZGVjNzJiOGI0ZWNkMjg3ODNkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAKIHZvaWQgSW50bFNlZ21lbnRlckNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNlZ21l
bnRlclByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlNlZ21l
bnRlciJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlNlZ21lbnRlciJfc3RyLCBQcm9w
ZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNl
Z21lbnRlclByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAg
IHNlZ21lbnRlclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCmluZGV4IDY2YTVj
YzNhOTdlZGY2OThiYmI5YTFlMjMxNmUwYzFmYzk5YTllNWEuLmEyNDY3MzBjOGUwYzM3ZjkxNDJk
NmYzMTU4OTBhNzNkMjk0NGI4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCkBAIC04MSw3ICs4MSw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1NlZ21l
bnQsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBzZWdtZW50ZXIgPSBqc0R5bmFt
aWNDYXN0PEludGxTZWdtZW50ZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKCFzZWdtZW50ZXIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRlci5wcm90b3R5cGUuc2VnbWVudCBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIFNlZ21lbnRlciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRlci5wcm90b3R5cGUu
c2VnbWVudCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFNlZ21lbnRlciJfc3RyKTsKIAog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRlci0+
c2VnbWVudChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CkBAIC05
NCw3ICs5NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsU2VnbWVudGVyUHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucywgKEpTR2xvYmFsT2JqCiAKICAgICBhdXRvKiBzZWdtZW50
ZXIgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdtZW50ZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCFzZWdtZW50ZXIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRlci5wcm90b3R5cGUucmVzb2x2
ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgU2VnbWVudGVyIl9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
U2VnbWVudGVyLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBTZWdtZW50ZXIiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShzZWdtZW50ZXItPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3Qp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzLmNw
cAppbmRleCA4ZGUzNGEzMDRlZGUwM2UwYjg0YjIwYzI4MDExMzQ0MTk5NmFiNGY4Li40MWM5OWM3
Y2I1YTA2MDc1NDRlNDliMjEzMWI5Y2YyNTBiZTk3MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBKU09i
amVjdCogSW50bFNlZ21lbnRzOjpjcmVhdGVTZWdtZW50SXRlcmF0b3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAg
ICBhdXRvIHNlZ21lbnRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFr
SXRlcmF0b3JEZWxldGVyPihjbG9uZVVCcmVha0l0ZXJhdG9yKG1fc2VnbWVudGVyLmdldCgpLCAm
c3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50
SXRlcmF0b3IiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVudEl0ZXJhdG9yIl9zdHIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCmluZGV4IDUzZTNlY2YwMmZmODRh
MjkzNjljNTQ5YTY2ZDA3ODk2ZTVlZjZkZDcuLjkwZjIwOTRlZjg0NjliNDhjY2FjNTQ4MDliZjdm
NjI0N2Y0OTlkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcApAQCAtODAsNyArODAsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bFNlZ21lbnRzUHJvdG90eXBlRnVuY0NvbnRhaW5pbmcsIChKU0ds
b2JhbE9iamVjdCogZwogCiAgICAgYXV0byogc2VnbWVudHMgPSBqc0R5bmFtaWNDYXN0PEludGxT
ZWdtZW50cyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNlZ21lbnRz
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
JVNlZ21lbnRzLnByb3RvdHlwZSUuY29udGFpbmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIFNlZ21lbnRzIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIiVTZWdtZW50cy5wcm90b3R5cGUlLmNvbnRhaW5pbmcgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBTZWdtZW50cyJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRzLT5jb250YWluaW5nKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJdGVyYXRvciwg
KEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogICAgIGF1dG8qIHNlZ21lbnRzID0ganNEeW5hbWljQ2Fz
dDxJbnRsU2VnbWVudHMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFz
ZWdtZW50cykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIiVTZWdtZW50cy5wcm90b3R5cGUlW0BAaXRlcmF0b3JdIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgU2VnbWVudHMiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJVNlZ21lbnRzLnByb3RvdHlwZSVbQEBpdGVyYXRvcl0g
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBTZWdtZW50cyJfc3RyKTsKIAogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRzLT5jcmVhdGVTZWdt
ZW50SXRlcmF0b3IoZ2xvYmFsT2JqZWN0KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKaW5kZXggYzMxNjlhMmNlNTk3
ZDc0MGZmMDJkZjcyNzNkZjJlNmVhMGM3MzMwNy4uMzdhMWU4MzBlZGJhYTRlOWJlMzNiNTIxMTkz
N2EyZTMyNWQ5Mzk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SXRlcmF0b3JPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEpTVmFsdWUgaXRlcmF0
b3JOZXh0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEl0ZXJhdGlvblJlY29yZCBpdGVy
YXRpb25SZWNvCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKIAog
ICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJf
c3RyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBp
dGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlcmF0
b3IpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB2b2lkKCkpOwogCiAgICAg
aWYgKCFpbm5lclJlc3VsdC5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
dHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wg
aGFzSXRlcmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IG9iamVjdC0+Z2V0TWV0
aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3lt
Ym9sLCAiU3ltYm9sLml0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7Cisg
ICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IG9iamVjdC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwg
Y2FsbERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCAiU3ltYm9sLml0ZXJh
dG9yIHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICByZXR1cm4gIWFwcGx5TWV0aG9kLmlzVW5kZWZp
bmVkKCk7CkBAIC0xNzIsNyArMTcyLDcgQEAgSlNWYWx1ZSBpdGVyYXRvck1ldGhvZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0KQogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IEpTVmFsdWUgbWV0aG9kID0gb2JqZWN0LT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0
YSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsICJTeW1ib2wuaXRlcmF0b3IgcHJv
cGVydHkgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIG1ldGhvZCA9IG9iamVj
dC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yU3ltYm9sLCAiU3ltYm9sLml0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJs
ZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBqc1VuZGVmaW5lZCgpKTsK
IAogICAgIHJldHVybiBtZXRob2Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuY3BwCmluZGV4IDMxNzk4NWZmZWQ2YWViM2U4ODU5Mzg0MzAyMDNlYzliYTQzZDBjYzAuLmNl
MWM2ZjQyMzQ4NTNiMjI5Y2M4ZDZlZDhmOGRkMTZkZGU4YjhmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgYm9vbCBKU0Fy
cmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgZG91YmxlIHZhbHVlQXNOdW1iZXIgPSBkZXNjcmlw
dG9yLnZhbHVlKCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIGlmICh2YWx1ZUFzTnVtYmVy
ICE9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewotICAgICAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcnJheSBsZW5ndGgi
X3MpOworICAgICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW52YWxpZCBhcnJheSBsZW5ndGgiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMDgsNyArMjA4LDcgQEAgYm9vbCBK
U0FycmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB1aW50MzJfdCBpbmRleCA9IG9wdGlvbmFsSW5kZXgu
dmFsdWUoKTsKICAgICAgICAgLy8gRklYTUU6IE5vdGhpbmcgcHJldmVudHMgdGhpcyBmcm9tIGJl
aW5nIGNhbGxlZCBvbiBhIFJ1bnRpbWVBcnJheSwgYW5kIHRoZSBsZW5ndGggZnVuY3Rpb24gd2ls
bCBhbHdheXMgcmV0dXJuIDAgaW4gdGhhdCBjYXNlLgogICAgICAgICBpZiAoaW5kZXggPj0gYXJy
YXktPmxlbmd0aCgpICYmICFhcnJheS0+aXNMZW5ndGhXcml0YWJsZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgIkF0
dGVtcHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJvcGVydHkgb24gYXJyYXkgd2l0aCBub24td3Jp
dGFibGUgbGVuZ3RoIHByb3BlcnR5LiJfcyk7CisgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBkZWZp
bmUgbnVtZXJpYyBwcm9wZXJ0eSBvbiBhcnJheSB3aXRoIG5vbi13cml0YWJsZSBsZW5ndGggcHJv
cGVydHkuIl9zdHIpOwogICAgICAgICAvLyBjLiBMZXQgc3VjY2VlZGVkIGJlIHRoZSByZXN1bHQg
b2YgY2FsbGluZyB0aGUgZGVmYXVsdCBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0
aG9kICg4LjEyLjkpIG9uIEEgcGFzc2luZyBQLCBEZXNjLCBhbmQgZmFsc2UgYXMgYXJndW1lbnRz
LgogICAgICAgICAvLyBkLiBSZWplY3QgaWYgc3VjY2VlZGVkIGlzIGZhbHNlLgogICAgICAgICAv
LyBlLiBJZiBpbmRleCA+PSBvbGRMZW4KQEAgLTI0Niw3ICsyNDYsNyBAQCBib29sIEpTQXJyYXk6
OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZQogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKSB7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+aXNMZW5ndGhXcml0YWJsZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQXJyYXkgbGVuZ3RoIGlzIG5vdCB3cml0
YWJsZSJfcyk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkFycmF5IGxlbmd0aCBpcyBub3Qgd3JpdGFibGUiX3N0cik7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMjU4LDcgKzI1OCw3IEBAIGJvb2wgSlNBcnJh
eTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlCiAgICAgICAgIGRvdWJsZSB2YWx1ZUFzTnVtYmVyID0gdmFsdWUudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgICAgICBpZiAodmFsdWVBc051bWJlciAhPSBzdGF0aWNfY2FzdDxkb3VibGU+KG5l
d0xlbmd0aCkpIHsKLSAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBhcnJheSBsZW5ndGgi
X3MpKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBhcnJheSBsZW5ndGgiX3N0cikp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgdGhpc09iamVjdC0+c2V0TGVuZ3RoKGdsb2JhbE9iamVjdCwgbmV3
TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IGNmYTA4
Y2JlZjUxZjExNTgxOTY5NTVkMDUyNzFmNjc2MjFlYmU4YzUuLjI1YTIwNmE5MjZkMGY5YTdiZmM3
NDBhYjU3MDZjYTU0NWEzZDYwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3JTbG93
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoIWNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNvbnN0cnVjdG9yIHByb3BlcnR5IHNob3VsZCBub3Qg
YmUgbnVsbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJjb25zdHJ1Y3RvciBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIG51bGwiX3N0cik7CiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNBcnJh
eUJ1ZmZlcio+IHNwZWNpZXNDbwogICAgIC8vIDE3LiBQZXJmb3JtID8gUmVxdWlyZUludGVybmFs
U2xvdChuZXcsIFtbQXJyYXlCdWZmZXJEYXRhXV0pLgogICAgIEpTQXJyYXlCdWZmZXIqIHJlc3Vs
dCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBuZXdPYmplY3QpOwogICAgIGlm
IChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gZG9lcyBub3QgY3JlYXRlIEFycmF5QnVm
ZmVyIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNw
ZWNpZXMgY29uc3RydWN0aW9uIGRvZXMgbm90IGNyZWF0ZSBBcnJheUJ1ZmZlciJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIGVycm9yUmVzdWx0OwogICAgIH0KIAogICAgIGlmIChtb2RlID09IEFycmF5
QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpIHsKICAgICAgICAgLy8gMTguIElmIElzU2hhcmVk
QXJyYXlCdWZmZXIobmV3KSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAg
ICAgICAgIGlmIChyZXN1bHQtPmlzU2hhcmVkKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgY3Jl
YXRlcyBTaGFyZWRBcnJheUJ1ZmZlciJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlIGNyZWF0ZXMg
U2hhcmVkQXJyYXlCdWZmZXIiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3JSZXN1bHQ7
CiAgICAgICAgIH0KICAgICAgICAgLy8gMTkuIElmIElzRGV0YWNoZWRCdWZmZXIobmV3KSBpcyB0
cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCkBAIC0xMjIsMjAgKzEyMiwyMCBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNB
cnJheUJ1ZmZlcio+IHNwZWNpZXNDbwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIDE3LiBJZiBJ
c1NoYXJlZEFycmF5QnVmZmVyKG5ldykgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVycm9yIGV4Y2Vw
dGlvbi4KICAgICAgICAgaWYgKCFyZXN1bHQtPmlzU2hhcmVkKCkpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTaGFyZWRBcnJheUJ1ZmZlci5wcm90
b3R5cGUuc2xpY2UgY3JlYXRlcyBub24tc2hhcmVkIEFycmF5QnVmZmVyIl9zKTsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTaGFyZWRBcnJheUJ1ZmZl
ci5wcm90b3R5cGUuc2xpY2UgY3JlYXRlcyBub24tc2hhcmVkIEFycmF5QnVmZmVyIl9zdHIpOwog
ICAgICAgICAgICAgcmV0dXJuIGVycm9yUmVzdWx0OwogICAgICAgICB9CiAgICAgfQogCiAgICAg
Ly8gMjAuIElmIFNhbWVWYWx1ZShuZXcsIE8pIGlzIHRydWUsIHRocm93IGEgVHlwZUVycm9yIGV4
Y2VwdGlvbi4KICAgICBpZiAocmVzdWx0ID09IHRoaXNPYmplY3QpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gcmV0
dXJucyBzYW1lIEFycmF5QnVmZmVyIHRvIGEgcmVjZWl2ZXIiX3MpOworICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTcGVjaWVzIGNvbnN0cnVjdGlvbiByZXR1
cm5zIHNhbWUgQXJyYXlCdWZmZXIgdG8gYSByZWNlaXZlciJfc3RyKTsKICAgICAgICAgcmV0dXJu
IGVycm9yUmVzdWx0OwogICAgIH0KIAogICAgIC8vIDIxLiBJZiBuZXcuW1tBcnJheUJ1ZmZlckJ5
dGVMZW5ndGhdXSA8IG5ld0xlbiwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlm
IChyZXN1bHQtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpIDwgbGVuZ3RoKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwZWNpZXMgY29uc3RydWN0aW9uIHJl
dHVybnMgQXJyYXlCdWZmZXIgd2hpY2ggYnl0ZUxlbmd0aCBpcyBsZXNzIHRoYW4gcmVxdWVzdGVk
Il9zKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3Bl
Y2llcyBjb25zdHJ1Y3Rpb24gcmV0dXJucyBBcnJheUJ1ZmZlciB3aGljaCBieXRlTGVuZ3RoIGlz
IGxlc3MgdGhhbiByZXF1ZXN0ZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBlcnJvclJlc3VsdDsK
ICAgICB9CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgYXJyYXlC
dWZmZXJTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFycgogCiAg
ICAgLy8gNC4gSWYgSXNEZXRhY2hlZEJ1ZmZlcihPKSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJv
ciBleGNlcHRpb24uCiAgICAgaWYgKG1vZGUgPT0gQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVm
YXVsdCAmJiB0aGlzT2JqZWN0LT5pbXBsKCktPmlzRGV0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIGlzIGRldGFj
aGVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlJlY2VpdmVyIGlzIGRldGFjaGVkIl9zdHIpOwogCiAgICAgLy8gNS4gTGV0IGxlbiBi
ZSBPLltbQXJyYXlCdWZmZXJCeXRlTGVuZ3RoXV0uCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9
IHRoaXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBhcnJheUJ1ZmZlclNsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgYXJyCiAKICAgICAvLyAyMy4gSWYgSXNEZXRhY2hlZEJ1ZmZlcihP
KSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKG1vZGUgPT0g
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCAmJiB0aGlzT2JqZWN0LT5pbXBsKCktPmlz
RGV0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIGlzIGRldGFjaGVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIGlzIGRldGFjaGVkIl9z
dHIpOwogCiAgICAgaWYgKExJS0VMWShzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25z
dHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoKSkgewogICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPmlt
cGwoKS0+aXNEZXRhY2hlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA5MTliMzE1OWNjMzc2MDQ1ZDlhYjk2YTNi
ZTYyZTBhYWQyMjZiZTYyLi4yNzQxZTNkZjE5Y2U4NWZjZjlhNjIzN2U5MTUwNjYxYTNkOGU4MGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCkBAIC0zNDQsMTMgKzM0NCwxMyBAQCBKU0FycmF5QnVmZmVyVmlldyogdmFsaWRh
dGVUeXBlZEFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdHlwZQog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghdHlw
ZWRBcnJheVZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJBcmd1bWVudCBuZWVkcyB0byBiZSBhIHR5cGVkIGFycmF5LiJfcyk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcmd1bWVudCBuZWVk
cyB0byBiZSBhIHR5cGVkIGFycmF5LiJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCiAgICAgSlNDZWxsKiB0eXBlZEFycmF5Q2VsbCA9IHR5cGVkQXJyYXlWYWx1ZS5hc0Nl
bGwoKTsKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlDZWxsLT5jbGFzc0luZm8odm0p
LT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJBcmd1bWVudCBuZWVkcyB0byBiZSBhIHR5cGVkIGFycmF5LiJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcmd1bWVudCBu
ZWVkcyB0byBiZSBhIHR5cGVkIGFycmF5LiJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5k
ZXggMDNkOTQ0MGJhNWQwZTc4YmQzMTcxZGY3M2M2MjI5YzMyNWYxNDMyZC4uZmQzZDhjYzUyYmU1
MTUxYWRmMTllOWExMmEyZmY3ZGY3Mzk2Njg3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGlubGluZSBKU0JpZ0ludCog
SlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgoSlNHbG9iYWxPYmplY3QqIG51bGxPckdsb2JhbE9i
amVjdEZvCiAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1heExlbmd0aCkpIHsKICAgICAgICAg
aWYgKG51bGxPckdsb2JhbE9iamVjdEZvck9PTSkgewogICAgICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKG51bGxPckdsb2JhbE9iamVjdEZvck9PTSwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZy
b20gdGhpcyBvcGVyYXRpb24gaXMgdG9vIGJpZyJfcyk7CisgICAgICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IobnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NLCBzY29wZSwgIkJpZ0ludCBnZW5l
cmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTUyMyw3ICs1MjMsNyBAQCBKU0JpZ0lu
dDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlSW1wbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBCaQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIGlmIChleHBvbmVudC5zaWduKCkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJOZWdhdGl2ZSBleHBvbmVudCBpcyBub3QgYWxsb3dlZCJf
cyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiTmVnYXRp
dmUgZXhwb25lbnQgaXMgbm90IGFsbG93ZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApAQCAtNTQ5LDcgKzU0OSw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmln
SW50OjpleHBvbmVudGlhdGVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEJpCiAg
ICAgLy8gcmVzdWx0cy4KICAgICBzdGF0aWNfYXNzZXJ0KG1heExlbmd0aEJpdHMgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPERpZ2l0Pjo6bWF4KCksICJtYXhMZW5ndGhCaXRzIG5lZWRzIHRvIGJlIGxl
c3MgdGhhbiBkaWdpdDo6bWF4KCkiKTsKICAgICBpZiAoZXhwb25lbnQubGVuZ3RoKCkgPiAxKSB7
Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQmln
SW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3BlcmF0aW9uIGlzIHRvbyBiaWciX3MpOworICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBnZW5l
cmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTU1Nyw3ICs1NTcsNyBAQCBKU0JpZ0ludDo6SW1wbFJl
c3VsdCBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBCaQogICAgIGlmIChleHBWYWx1ZSA9PSAxKQogICAgICAgICByZXR1cm4gYmFzZTsKICAg
ICBpZiAoZXhwVmFsdWUgPj0gbWF4TGVuZ3RoQml0cykgewotICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlz
IG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRp
b24gaXMgdG9vIGJpZyJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC02ODMsNyArNjgzLDcgQEAgSlNCaWdJbnQ6OkltcGxSZXN1bHQgSlNCaWdJbnQ6OmRpdmlkZUlt
cGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQmlnSW50SW0KICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoeS5pc1plcm8oKSkgewotICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxp
ZCBkaXZpc29yIHZhbHVlLiJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZhbGlkIGRpdmlzb3IgdmFsdWUuIl9zdHIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc3OCw3ICs3NzgsNyBAQCBKU0JpZ0ludDo6
SW1wbFJlc3VsdCBKU0JpZ0ludDo6cmVtYWluZGVySW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBCaWdJbgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICAKICAgICBpZiAoeS5pc1plcm8oKSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxpZCBkaXZpc29yIHZhbHVlLiJfcyk7Cisg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZh
bGlkIGRpdmlzb3IgdmFsdWUuIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKQEAgLTIwMTEsNyArMjAxMSw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojps
ZWZ0U2hpZnRCeUFic29sdXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBh
dXRvIG9wdGlvbmFsU2hpZnQgPSB0b1NoaWZ0QW1vdW50KHkpOwogICAgIGlmICghb3B0aW9uYWxT
aGlmdCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zKTsK
KyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJ
bnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRpb24gaXMgdG9vIGJpZyJfc3RyKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yMDIyLDcgKzIwMjIsNyBAQCBKU0JpZ0lu
dDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6bGVmdFNoaWZ0QnlBYnNvbHV0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgIGJvb2wgZ3JvdyA9IGJpdHNTaGlmdCAmJiAoeC5kaWdpdChs
ZW5ndGggLSAxKSA+PiAoZGlnaXRCaXRzIC0gYml0c1NoaWZ0KSk7CiAgICAgaW50IHJlc3VsdExl
bmd0aCA9IGxlbmd0aCArIGRpZ2l0U2hpZnQgKyBncm93OwogICAgIGlmIChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocmVzdWx0TGVuZ3RoKSA+IG1heExlbmd0aCkgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0
aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVy
YXRpb24gaXMgdG9vIGJpZyJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC0yMzk4LDcgKzIzOTgsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFsbG9jYXRlRm9yKEpT
R2xvYmFsT2JqZWN0KiBudWxsT3JHbG9iYWxPYmplY3RGb3JPT00sIFZNJiB2bQogCiAgICAgaWYg
KG51bGxPckdsb2JhbE9iamVjdEZvck9PTSkgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihudWxsT3JH
bG9iYWxPYmplY3RGb3JPT00sIHNjb3BlLCAiQmlnSW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3Bl
cmF0aW9uIGlzIHRvbyBiaWciX3MpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IobnVs
bE9yR2xvYmFsT2JqZWN0Rm9yT09NLCBzY29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlz
IG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjQxMyw3ICsyNDEzLDcgQEAgZG91YmxlIEpTQmlnSW50Ojp0b051bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmln
SW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJl
cicgaXMgbm90IGFsbG93ZWQuIl9zdHIpOwogICAgIHJldHVybiAwLjA7CiB9CiAKQEAgLTI5NTks
NyArMjk1OSw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojphc1VpbnROSW1wbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfCiAgICAgLy8gSWYgYmlnSW50IGlz
IG5lZ2F0aXZlLCBzaW11bGF0ZSB0d28ncyBjb21wbGVtZW50IHJlcHJlc2VudGF0aW9uLgogICAg
IGlmIChiaWdJbnQuc2lnbigpKSB7CiAgICAgICAgIGlmIChuID4gbWF4TGVuZ3RoQml0cykgewot
ICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJC
aWdJbnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRpb24gaXMgdG9vIGJpZyJfcyk7CisgICAg
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0lu
dCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCB0cnVuY2F0ZUFuZFN1YkZyb21Qb3dlck9mVHdvKGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obiksIGJpZ0ludCwgZmFsc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IGUwYjViY2ZhMTA3NTc5NGQ1Yzc2NzdlNDFiYmI5
MjBkMWRlMDdmZjIuLmM5MjAzZDZjZDVjMGMwYTU2MzgyMGZjZDgyYzY3MjBmMWFmMjMzMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMzA2LDcgKzMwNiw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICgheSkgewogICAgICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxp
ZCBkaXZpc29yIHZhbHVlLiJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxpZCBkaXZpc29yIHZhbHVlLiJfc3RyKTsKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGFz
SW50MzJPckhlYXBDZWxsKGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oeCkgLyBz
dGF0aWNfY2FzdDxpbnQ2NF90Pih5KSk7CkBAIC0zMjEsNyArMzIxLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgaWYgKCF5KSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShnZXRWTShnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZhbGlkIGRpdmlzb3IgdmFsdWUu
Il9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
MCBpcyBhbiBpbnZhbGlkIGRpdmlzb3IgdmFsdWUuIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gYXNJbnQzMk9ySGVhcENlbGwo
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih4KSAlIHN0YXRpY19jYXN0PGludDY0
X3Q+KHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
aW5kZXggMTg1YWNlNzI3ZDE1NDdmOTZkOGZmNjczOWQ1MzYzNGJhMGVjZWI0NS4uNmVlOWZmN2Qx
NzI0ZTIzOTY0MTg2MjU3ZGZhY2JkMjA2NzYwMTQyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgZG91YmxlIEpTVmFs
dWU6OnRvTnVtYmVyU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc0NlbGwoKS0+dG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KSk7CiAjaWYgVVNFKEJJR0lOVDMyKQogICAgIGlmIChpc0JpZ0ludDMyKCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24g
ZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udmVyc2lvbiBmcm9tICdCaWdJ
bnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxvd2VkLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIDAu
MDsKICAgICB9CiAjZW5kaWYKQEAgLTExOCw3ICsxMTgsNyBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRv
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgfQogCiAgICAg
QVNTRVJUKHByaW1pdGl2ZS5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IHByaW1pdGl2ZS5pc051bWJl
cigpIHx8IHByaW1pdGl2ZS5pc1N5bWJvbCgpKTsKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlv
biJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQg
YXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3N0cik7CiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDc5MjY3NjNjZDU2NWRlYmIxYTBiMWM5Y2YxN2ZkMzA5
MjE0NDg2NmEuLmQ0YmUzNjVkNDBhYWM2YTY2MGQ0ZmExZmE5ODEyNGU2ZmM0OWU4ZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApA
QCAtODM1LDcgKzgzNSw3IEBAIGlubGluZSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHRvUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcmltaXRp
dmUgaGludCBpcyBub3QgYSBzdHJpbmcuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByaW1pdGl2ZSBoaW50IGlzIG5vdCBhIHN0cmluZy4iX3N0cik7
CiAgICAgICAgIHJldHVybiBOb1ByZWZlcmVuY2U7CiAgICAgfQogCkBAIC04NDksNyArODQ5LDcg
QEAgaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBpZiAoV1RGOjplcXVhbChoaW50U3RyaW5n
LCAic3RyaW5nIikpCiAgICAgICAgIHJldHVybiBQcmVmZXJTdHJpbmc7CiAKLSAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQgcHJpbWl0aXZlIGhpbnQgdG8g
bWF0Y2ggb25lIG9mICdkZWZhdWx0JywgJ251bWJlcicsICdzdHJpbmcnLiJfcyk7CisgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIHByaW1pdGl2ZSBoaW50
IHRvIG1hdGNoIG9uZSBvZiAnZGVmYXVsdCcsICdudW1iZXInLCAnc3RyaW5nJy4iX3N0cik7CiAg
ICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCBhYmE2ODhkZTQ4NzFmODRjNjI1MWI3OGYwYjgzY2Q2
Mjg2NjcxZDIzLi43OWNkMzc4YTk3ZDBlYmU0MTMwYTA5Y2RmN2NhNWNhZTY4Mjc1MzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtNDksMTUg
KzQ5LDE1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKIAogICAgIEFTU0VSVChi
dWZmZXIpOwogICAgIGlmIChidWZmZXItPmlzRGV0YWNoZWQoKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQnVmZmVyIGlzIGFscmVhZHkgZGV0YWNoZWQi
X3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQnVmZmVy
IGlzIGFscmVhZHkgZGV0YWNoZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZl
ciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewotICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ug
b2YgYnVmZmVyIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciJfc3RyKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zm
c2V0QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemVvZih1aW50OF90KSkpIHsKLSAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCeXRlIG9mZnNldCBpcyBub3QgYWxp
Z25lZCJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
Qnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCBlOThjNzhhYmFiZjk4MzFjZmYwNjVjMWJlOTAyYmZh
YzgwYTA2ZDJhLi4yZGMxNzY0YjgxYzU5ZWZkZmExNzI5MmU3OTE5M2NiM2MwMzgwMjViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAKICAgICBKU0Rh
dGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRhdGFWaWV3KQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcg
bWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2Qg
bXVzdCBiZSBhIERhdGFWaWV3Il9zdHIpOwogICAgIAogICAgIHNpemVfdCBieXRlT2Zmc2V0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQi
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAg
LTE0NywxMSArMTQ3LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgfQogCiAgICAgaWYgKGRh
dGFWaWV3LT5pc0RldGFjaGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRh
Y2hlZCBmcm9tIHRoZSB2aWV3Il9zdHIpOwogCiAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRh
Vmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfc3RyKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFT
aXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIHVuaW9uIHsKQEAgLTE4
MCw3ICsxODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogCiAgICAgSlNEYXRhVmlldyogZGF0YVZp
ZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAgICAgaWYgKCFkYXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJl
IGEgRGF0YVZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRh
VmlldyJfc3RyKTsKICAgICAKICAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMDIsMTEgKzIwMiwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIH0KIAogICAgIGlmIChkYXRhVmlldy0+aXNEZXRh
Y2hlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2
aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUg
dmlldyJfc3RyKTsKIAogICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgp
OwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGggLSBlbGVtZW50U2l6ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5k
cyBhY2Nlc3MiX3N0cik7CiAKICAgICB1aW50OF90KiBkYXRhUHRyID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGRhdGFWaWV3LT52ZWN0b3IoKSkgKyBieXRlT2Zmc2V0OwogCkBAIC0yNDQsNyArMjQ0
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVu
Z3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmlldy5wcm90
b3R5cGUuYnl0ZUxlbmd0aCBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIp
OwogICAgIGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBi
ZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMg
YmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogfQpAQCAtMjU4LDcgKzI1OCw3IEBA
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBl
LmJ5dGVPZmZzZXQgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKICAg
ICBpZiAodmlldy0+aXNEZXRhY2hlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBk
ZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4g
ZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIodmlldy0+Ynl0ZU9mZnNldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmluZGV4IGZjNmZkMzhlY2IzOTJlOWQ1ZWE1NGQ1
NzAyNTc4NTYyMjg5NDM0ZmIuLjFhOTA0MzE4N2Y3ZGIzNDc5ZTIxYWMyMTk0YWYxNjZkMmE0MWE4
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGgu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCkBA
IC0zNDQsMTEgKzM0NCwxMSBAQCBTdHJpbmcgRGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUoKQog
ICAgIFVCb29sIGlzU3lzdGVtID0gZmFsc2U7CiAgICAgaWN1OjpUaW1lWm9uZTo6Z2V0Q2Fub25p
Y2FsSUQodGltZVpvbmVJRCwgY2Fub25pY2FsVGltZVpvbmVJRCwgaXNTeXN0ZW0sIHN0YXR1cyk7
CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gIlVUQyJfczsKKyAg
ICAgICAgcmV0dXJuICJVVEMiX3N0cjsKIAogICAgIFN0cmluZyBjYW5vbmljYWwgPSBTdHJpbmco
Y2Fub25pY2FsVGltZVpvbmVJRC5nZXRCdWZmZXIoKSwgY2Fub25pY2FsVGltZVpvbmVJRC5sZW5n
dGgoKSk7CiAgICAgaWYgKGlzVVRDRXF1aXZhbGVudChjYW5vbmljYWwpKQotICAgICAgICByZXR1
cm4gIlVUQyJfczsKKyAgICAgICAgcmV0dXJuICJVVEMiX3N0cjsKIAogICAgIHJldHVybiBjYW5v
bmljYWw7CiAjZW5kaWYKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIERhdGVDYWNoZTo6dGltZVpv
bmVDYWNoZVNsb3coKQogICAgICAgICAgICAgY2Fub25pY2FsID0gU3RyaW5nKGNhbm9uaWNhbEJ1
ZmZlcik7CiAgICAgfQogICAgIGlmIChjYW5vbmljYWwuaXNOdWxsKCkgfHwgaXNVVENFcXVpdmFs
ZW50KGNhbm9uaWNhbCkpCi0gICAgICAgIGNhbm9uaWNhbCA9ICJVVEMiX3M7CisgICAgICAgIGNh
bm9uaWNhbCA9ICJVVEMiX3N0cjsKICAgICBjYWNoZS0+bV9jYW5vbmljYWxUaW1lWm9uZUlEID0g
V1RGTW92ZShjYW5vbmljYWwpOwogCiAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBkOTM3YjM2YjMw
NDU3NDQwY2VhOGJlYTUxOGQxOTgxOWE2NGE5ZDVjLi5mNTA5NzJhZDk1MjlmZGQzNWYyZjYzZDFh
OGU2N2Y4NDhmYzU3YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcApAQCAtNTEyLDcgKzUxMiw3IEBAIFN0cmluZyBnZXRDYWxjdWxhdGVkRGlzcGxh
eU5hbWUoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1RvV2FzbUlDQ2FsbGVlKj4odm0sIG9iamVjdCkp
Ci0gICAgICAgIHJldHVybiAid2FzbS1zdHViIl9zOworICAgICAgICByZXR1cm4gIndhc20tc3R1
YiJfc3RyOwogI2VuZGlmCiAKICAgICBpZiAoIWpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZt
LCBvYmplY3QpICYmICFqc0R5bmFtaWNDYXN0PEludGVybmFsRnVuY3Rpb24qPih2bSwgb2JqZWN0
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4
IDZmZmVjMzEwY2VlOGU2MWE0NWM0ZjQyNzU0YmI5MDBhZjMwODhkNDEuLjg2YTgyMDcyNmJhNmM1
ZjZmNjY4MDc4YmFiNjVhY2U3NmZlMGE4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTIxLDcgKzEyMSw3IEBAIGlubGluZSBKU0FycmF5
QnVmZmVyKiBjb25zdHJ1Y3RDdXN0b21BcnJheUJ1ZmZlcklmTmVlZGVkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFzcGVjaWVzLT5p
c0NvbnN0cnVjdG9yKHZtKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAic3BlY2llcyBpcyBub3QgYSBjb25zdHJ1Y3RvciJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzcGVjaWVzIGlzIG5vdCBhIGNvbnN0cnVj
dG9yIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE1Myw3ICsx
NTMsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIGlmIChKU0FycmF5QnVmZmVyKiBq
c0J1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSkg
ewogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IGpzQnVmZmVyLT5pbXBsKCk7
CiAgICAgICAgIGlmIChidWZmZXItPmlzRGV0YWNoZWQoKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJ1ZmZlciBpcyBhbHJlYWR5IGRldGFjaGVk
Il9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJC
dWZmZXIgaXMgYWxyZWFkeSBkZXRhY2hlZCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3Qq
IGdsbwogICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoT3B0LnZhbHVlKCk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9m
ZnNldCkgJSBWaWV3Q2xhc3M6OmVsZW1lbnRTaXplKSkgewotICAgICAgICAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVz
IHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUiX3Mp
OworICAgICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
QXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxl
IG9mIHRoZSBlbGVtZW50IHNpemUiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBsZW5ndGggPSAoYnVmZmVyLT5ieXRlTGVu
Z3RoKCkgLSBvZmZzZXQpIC8gVmlld0NsYXNzOjplbGVtZW50U2l6ZTsKQEAgLTE3Myw3ICsxNzMs
NyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIEFTU0VSVCghb2Zmc2V0ICYmICFsZW5n
dGhPcHQpOwogICAgIAogICAgIGlmIChVTkxJS0VMWShWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9y
YWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJFeHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3Vt
ZW50LiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJF
eHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50LiJfc3RyKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtMTkxLDEyICsxOTEsMTIgQEAgaW5s
aW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
KEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAgICAgIGN1c3RvbUJ1ZmZlciA9IGNvbnN0cnVj
dEN1c3RvbUFycmF5QnVmZmVySWZOZWVkZWQoZ2xvYmFsT2JqZWN0LCB2aWV3KTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgaWYg
KHZpZXctPmlzRGV0YWNoZWQoKSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZShvYmplY3QtPmNs
YXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgIT0gVmlld0NsYXNzOjpjb250ZW50
VHlwZSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDb250ZW50IHR5cGVzIG9mIHNvdXJjZSBhbmQgbmV3IHR5cGVkIGFycmF5IGFyZSBkaWZm
ZXJlbnQiX3MpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDb250ZW50IHR5cGVzIG9mIHNvdXJjZSBhbmQgbmV3IHR5cGVkIGFycmF5IGFyZSBk
aWZmZXJlbnQiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICB9CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAKICAg
ICBpZiAoIWFyZ0NvdW50KSB7CiAgICAgICAgIGlmIChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9y
YWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVxdWlyZXMg
YXQgbGVhc3Qgb25lIGFyZ3VtZW50LiJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVxdWly
ZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiJfc3RyKTsKIAogICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgMCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IGQzMmEyYjBjMGMwM2IzYzI5YmI4ZTVmZTk0YzNjMDdlZmJkOGI1NzAuLjNmM2QxMzFjODAw
MjYxOTg5ODRjY2U3NWEwOTZlYmE3ZWU3NDcwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCkBAIC0xODAsNyArMTgwLDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgY29uc3RleHByIChBZGFwdG9yOjpjb250ZW50VHlwZSAhPSBPdGhlckFkYXB0b3I6OmNvbnRl
bnRUeXBlKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJD
b250ZW50IHR5cGVzIG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gdHlwZWQgYXJyYXlzIGFyZSBk
aWZmZXJlbnQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQ29udGVudCB0eXBlcyBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHR5cGVkIGFycmF5cyBh
cmUgZGlmZmVyZW50Il9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApA
QCAtNDU3LDcgKzQ1Nyw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlZmluZU93blByb3BlcnR5KAogICAgIH0KIAogICAgIGlmIChpc0Nhbm9uaWNhbE51bWVyaWNJ
bmRleFN0cmluZyhwcm9wZXJ0eU5hbWUpKQotICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBzdG9yZSBjYW5vbmlj
YWwgbnVtZXJpYyBzdHJpbmcgcHJvcGVydHkgb24gYSB0eXBlZCBhcnJheSJfcyk7CisgICAgICAg
IHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2hvdWxkVGhyb3csICJBdHRl
bXB0aW5nIHRvIHN0b3JlIGNhbm9uaWNhbCBudW1lcmljIHN0cmluZyBwcm9wZXJ0eSBvbiBhIHR5
cGVkIGFycmF5Il9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpk
ZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZUZ1bmN0aW9ucy5oCmluZGV4IGRmMDQzNWY2ZTM3OTgwNjFkOWY2Y2NjNmQ3NTlk
ZmU2NmJkNmQ5ZmEuLmYzNjE3NmUxOGM1NTA1MGRmZThhMjhiYmMwNGYyYTU2MTlkNTg3MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaApAQCAtNTUs
NyArNTUsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXNDb25zdHJ1Y3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplYwogICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGRlZmF1bHRDb25zdHJ1Y3RvcigpKTsKIAogICAgIGlmICghY29uc3RydWN0
b3IuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiY29uc3RydWN0b3IgUHJvcGVydHkgc2hvdWxkIG5vdCBiZSBudWxsIl9zKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNvbnN0cnVjdG9yIFByb3Bl
cnR5IHNob3VsZCBub3QgYmUgbnVsbCJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC03MSw3ICs3MSw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2ll
c0NvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjCiAKICAgICBp
ZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJW
aWV3Kj4odm0sIHJlc3VsdCkpIHsKICAgICAgICAgaWYgKHZpZXctPnR5cGUoKSA9PSBEYXRhVmll
d1R5cGUpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJzcGVjaWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3Il9z
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzcGVj
aWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3Il9zdHIpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIApAQCAtODIsNyArODIsNyBA
QCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXNDb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3BlY2llcyBjb25z
dHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyJfcyk7CisgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5v
dCByZXR1cm4gYSBUeXBlZEFycmF5IFZpZXciX3N0cik7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChWTSYgdm0sIEpTR2xvYmFsTwogICAgIFZpZXdD
bGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKIAogICAgIGlmIChVTkxJS0VMWSghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhw
ZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1
bWVudCJfc3RyKTsKIAogICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgaWYgKGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpID49IDIpIHsKQEAgLTUwMiw3ICs1MDIsNyBAQCBBTFdBWVNfSU5MSU5FIEVu
Y29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKFZNJiB2bSwg
SlNHbG9iYQogICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyN0eXBlZGFycmF5LXNwZWNp
ZXMtY3JlYXRlCiAgICAgLy8gSWYgcmVzdWx0LltbQ29udGVudFR5cGVdXSDiiaAgZXhlbXBsYXIu
W1tDb250ZW50VHlwZV1dLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKGNv
bnRlbnRUeXBlKHJlc3VsdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSAh
PSBWaWV3Q2xhc3M6OmNvbnRlbnRUeXBlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udGVudCB0eXBlcyBvZiBzb3VyY2UgYW5kIGNyZWF0
ZWQgdHlwZWQgYXJyYXlzIGFyZSBkaWZmZXJlbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udGVudCB0eXBlcyBvZiBzb3VyY2Ug
YW5kIGNyZWF0ZWQgdHlwZWQgYXJyYXlzIGFyZSBkaWZmZXJlbnQiX3N0cik7CiAKICAgICAvLyBX
ZSByZXR1cm4gZWFybHkgaGVyZSBzaW5jZSB3ZSBkb24ndCBhbGxvY2F0ZSBhIGJhY2tpbmcgc3Rv
cmUgaWYgbGVuZ3RoIGlzIDAgYW5kIG1lbW1vdmUgZG9lcyBub3QgbGlrZSBudWxscHRycwogICAg
IGlmICghbGVuZ3RoKQpAQCAtNTEzLDcgKzUxMyw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpT
VmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoVk0mIHZtLCBKU0dsb2Jh
CiAKICAgICAvLyBUaGUgc3BlY2llcyBjb25zdHJ1Y3RvciBtYXkgcmV0dXJuIGFuIGFycmF5IHdp
dGggYW55IGFyYml0cmFyeSBsZW5ndGguCiAgICAgaWYgKHJlc3VsdC0+bGVuZ3RoKCkgPCBsZW5n
dGgpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUeXBlZEFycmF5LnByb3RvdHlwZS5zbGljZSBjb25zdHJ1Y3RlZCB0eXBlZCBhcnJheSBvZiBp
bnN1ZmZpY2llbnQgbGVuZ3RoIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkQXJyYXkucHJvdG90eXBlLnNsaWNlIGNvbnN0cnVj
dGVkIHR5cGVkIGFycmF5IG9mIGluc3VmZmljaWVudCBsZW5ndGgiX3N0cik7CiAKICAgICBzd2l0
Y2ggKHJlc3VsdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSB7CiAgICAg
Y2FzZSBUeXBlSW50ODoKQEAgLTYzMSw3ICs2MzEsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0m
CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZhbGlkYXRlZCA9IHZhbGlkYXRlVHlwZWRBcnJheShn
bG9iYWxPYmplY3QsIHJlc3VsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICBpZiAoY29udGVudFR5cGUodmFsaWRhdGVkLT5jbGFzc0luZm8odm0pLT50eXBlZEFy
cmF5U3RvcmFnZVR5cGUpICE9IFZpZXdDbGFzczo6Y29udGVudFR5cGUpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUeXBlZEFycmF5LnByb3Rv
dHlwZS5zdWJhcnJheSBjb25zdHJ1Y3RlZCB0eXBlZCBhcnJheSBvZiBkaWZmZXJlbnQgY29udGVu
dCB0eXBlIGZyb20gfHRoaXN8Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5IGNvbnN0
cnVjdGVkIHR5cGVkIGFycmF5IG9mIGRpZmZlcmVudCBjb250ZW50IHR5cGUgZnJvbSB8dGhpc3wi
X3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbGlkYXRlZCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXgg
ZmE2MjNlMDkwNzRjMzhmYmUzMjM0MTY3ZGNkNTkyMDJmOGYxNTFiNi4uNzA3MmY5M2I0YTU4YzEw
NmExYTM4NDViOWI4ODFmZTIwNjViNzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODU0LDcgKzg1NCw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJl
OjpJbml0aWFsaXplciYgaW5pdCkgeyBcCiAgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShK
UyAjIyB0eXBlICMjIEFycmF5UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5nbG9iYWws
IEpTICMjIHR5cGUgIyMgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBp
bml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJheVByb3RvLmdldChpbml0Lmdsb2Jh
bCkpKSk7IFwKICAgICAgICAgICAgIGluaXQuc2V0U3RydWN0dXJlKEpTICMjIHR5cGUgIyMgQXJy
YXk6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5wcm90b3R5cGUp
KTsgXAotICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihKUyAjIyB0eXBlICMjIEFycmF5
Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlwZSAjIyBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGlu
aXQuZ2xvYmFsLT5tX3R5cGVkQXJyYXlTdXBlckNvbnN0cnVjdG9yLmdldChpbml0Lmdsb2JhbCkp
LCBpbml0LnByb3RvdHlwZSwgI3R5cGUgIkFycmF5Il9zKSk7IFwKKyAgICAgICAgICAgIGluaXQu
c2V0Q29uc3RydWN0b3IoSlMgIyMgdHlwZSAjIyBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUoaW5p
dC52bSwgaW5pdC5nbG9iYWwsIEpTICMjIHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5
U3VwZXJDb25zdHJ1Y3Rvci5nZXQoaW5pdC5nbG9iYWwpKSwgaW5pdC5wcm90b3R5cGUsICN0eXBl
ICJBcnJheSJfc3RyKSk7IFwKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5wdXREaXJlY3QoaW5p
dC52bSwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlICMjIEFycmF5
UHJpdmF0ZU5hbWUoKSwgaW5pdC5jb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOyBcCiAgICAgICAgIH0pOwogICAgIEZPUl9FQUNI
X1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhJTklUX1RZUEVEX0FSUkFZX0xB
VEVSKQpAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgewog
ICAgICAgICAgICAgaW5pdC5zZXRQcm90b3R5cGUoSlNEYXRhVmlld1Byb3RvdHlwZTo6Y3JlYXRl
KGluaXQudm0sIEpTRGF0YVZpZXdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBp
bml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAg
ICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSlNEYXRhVmlldzo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGluaXQuZ2xvYmFsLCBpbml0LnByb3RvdHlwZSkpOwotICAgICAgICAgICAgaW5pdC5z
ZXRDb25zdHJ1Y3RvcihKU0RhdGFWaWV3Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0
Lmdsb2JhbCwgSlNEYXRhVmlld0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
aW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgaW5p
dC5wcm90b3R5cGUsICJEYXRhVmlldyJfcykpOworICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1
Y3RvcihKU0RhdGFWaWV3Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwg
SlNEYXRhVmlld0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9i
YWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgaW5pdC5wcm90b3R5
cGUsICJEYXRhVmlldyJfc3RyKSk7CiAgICAgICAgIH0pOwogICAgIAogICAgIG1fbGV4aWNhbEVu
dmlyb25tZW50U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwpAQCAtMTM5Nyw3ICsxMzk3LDcgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCks
IGdsb2JhbEZ1bmNDb3B5RGF0YVByb3BlcnRpZXMpKTsKICAgICAgICAgfSk7CiAgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZW5x
dWV1ZUpvYildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
ewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5xdWV1
ZUpvYikpOworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCAiZW5xdWV1ZUpvYiJfc3Ry
LCBlbnF1ZXVlSm9iKSk7CiAgICAgICAgIH0pOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VUeXBlRXJyb3IpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCBkZTVlMzdkMGZhMzQwMmU3NzZmMWZmZjgyY2QxZTU0
NjhlNjZmZjFiLi4yNzVkYjY1NGEzNGI0ZjM3OGRkYzM4NDFjM2E0M2VkNTFhM2ViNWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIFN0cmluZyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6Om5hbWUoKSBjb25zdAogewogICAg
IFN0cmluZyBuYW1lID0gbV9nbG9iYWxPYmplY3QubmFtZSgpOwotICAgIHJldHVybiBuYW1lLmlz
RW1wdHkoKSA/ICJKU0NvbnRleHQiX3MgOiBuYW1lOworICAgIHJldHVybiBuYW1lLmlzRW1wdHko
KSA/ICJKU0NvbnRleHQiX3N0ciA6IG5hbWU7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCYgZnJvbnRlbmRDaGFubmVsLCBib29sIGF1
dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgaW1tZWRpYXRlbHlQYXVzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAppbmRleCAwOTRmNzZiZjJkN2JiNzAyY2IxNDUzMDA4ZTRkYzc5MzVkOTljMTVkLi44OTM0NGI0
NDAyODUzYzlhMmY1ODE1NmU5MjJhMTM1YzQ2YzdmYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBA
IC03MSw3ICs3MSw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBCaXRtYXA8MjU2PiYgZG9Ob3RFc2NhCiAgICAgLy8gaHR0cHM6Ly90
YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZW5jb2RlCiAKICAgICBhdXRvIHRocm93RXhjZXB0
aW9uID0gWyZzY29wZSwgZ2xvYmFsT2JqZWN0XSB7Ci0gICAgICAgIHJldHVybiBKU0M6OnRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVj
dCwgIlN0cmluZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2VxdWVuY2UuIl9zKSk7Cisg
ICAgICAgIHJldHVybiBKU0M6OnRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgIlN0cmluZyBjb250YWluZWQgYW4gaWxsZWdhbCBV
VEYtMTYgc2VxdWVuY2UuIl9zdHIpKTsKICAgICB9OwogCiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyKFN0cmluZ0J1aWxkZXI6Ok92ZXJmbG93SGFuZGxlcjo6UmVjb3JkT3ZlcmZsb3cpOwpAQCAt
MjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChjaGFyTGVuID09IDApIHsKICAgICAgICAgICAgICAgICBpZiAoc3RyaWN0
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlVVJJRXJyb3IoZ2xvYmFsT2JqZWN0LCAiVVJJIGVycm9yIl9zKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVVUklFcnJvcihnbG9iYWxPYmplY3QsICJVUkkgZXJyb3IiX3N0cikpOwogICAg
ICAgICAgICAgICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgZG9uJ3QgdXNlICJzdHJpY3Qi
IG1vZGUgaXMgdGhlICJ1bmVzY2FwZSIgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8gRm9y
IHRoYXQsIGl0J3MgZ29vZCB0byBzdXBwb3J0IHRoZSB3b25reSAiJXUiIHN5bnRheCBmb3IgY29t
cGF0aWJpbGl0eSB3aXRoIFdpbklFLgogICAgICAgICAgICAgICAgIGlmIChrIDw9IGxlbmd0aCAt
IDYgJiYgcFsxXSA9PSAndScKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAppbmRleCA5NmEwZjdkYTQzZDNjZTgz
MTFmZWM5NmQ5NjM4MzlhYWM5ODZlOTE0Li5kOWY5YWJlNDY5Mzc5N2NlZjZmNjYyYTQwMTEwNDFm
ODE2MjNjOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEFic3RyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJNb2R1bGUiX3MpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiTW9kdWxlIl9zdHIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CiAKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1nZXRwcm90b3R5cGVv
ZgogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldHByb3RvdHlwZW9mLXYKQEAg
LTI3OSwyOCArMjc5LDI4IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBjZWxsLCBKU0dsb2JhbE9iamVjdCoKICAgICAvLyA0LiBJZiBJ
c0FjY2Vzc29yRGVzY3JpcHRvcihEZXNjKSBpcyB0cnVlLCByZXR1cm4gZmFsc2UuCiAgICAgaWYg
KGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAoc2hvdWxk
VGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
Q2Fubm90IGNoYW5nZSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcgdG8gYWNjZXNz
b3IiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkNhbm5vdCBjaGFuZ2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QncyBiaW5kaW5nIHRvIGFjY2Vz
c29yIl9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gNS4gSWYg
RGVzYy5bW1dyaXRhYmxlXV0gaXMgcHJlc2VudCBhbmQgaGFzIHZhbHVlIGZhbHNlLCByZXR1cm4g
ZmFsc2UuCiAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgIWRlc2NyaXB0
b3Iud3JpdGFibGUoKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNoYW5nZSBtb2R1bGUg
bmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcgdG8gbm9uLXdyaXRhYmxlIGF0dHJpYnV0ZSJfcyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90
IGNoYW5nZSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcgdG8gbm9uLXdyaXRhYmxl
IGF0dHJpYnV0ZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8v
IDYuIElmIERlc2MuW1tFbnVtZXJhYmxlXV0gaXMgcHJlc2VudCBhbmQgaGFzIHZhbHVlIGZhbHNl
LCByZXR1cm4gZmFsc2UuCiAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAm
JiAhZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpIHsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQot
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBy
ZXBsYWNlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0J3MgYmluZGluZyB3aXRoIG5vbi1lbnVtZXJh
YmxlIGF0dHJpYnV0ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiQ2Fubm90IHJlcGxhY2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QncyBiaW5k
aW5nIHdpdGggbm9uLWVudW1lcmFibGUgYXR0cmlidXRlIl9zdHIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgLy8gNy4gSWYgRGVzYy5bW0NvbmZpZ3VyYWJsZV1dIGlzIHBy
ZXNlbnQgYW5kIGhhcyB2YWx1ZSB0cnVlLCByZXR1cm4gZmFsc2UuCiAgICAgaWYgKGRlc2NyaXB0
b3IuY29uZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsK
ICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByZXBsYWNlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0
J3MgYmluZGluZyB3aXRoIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUiX3MpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByZXBsYWNlIG1vZHVs
ZSBuYW1lc3BhY2Ugb2JqZWN0J3MgYmluZGluZyB3aXRoIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUi
X3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTMxMCw3ICszMTAsNyBA
QCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCogY2VsbCwgSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgIGlmIChzaG91
bGRUaHJvdykKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2Fubm90IHJlcGxhY2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QncyBiaW5kaW5nJ3Mg
dmFsdWUiX3MpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDYW5ub3QgcmVwbGFjZSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcn
cyB2YWx1ZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXgg
NmI3YzU4ODFhZDliZmZkY2E1YTI0OWE0MzcxMDI1YTJjZjQ3ZjgwYi4uMDNlNzZmNmQ3N2QxY2I4
YTViOTdhMzlhMjk5ZGVkYzAxYjcyYWExMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTM5MSw3ICszOTEsNyBAQCBTdHJpbmdpZmllcjo6U3Ry
aW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1
aWxkZXImCiAgICAgfQogCiAgICAgaWYgKHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IobV9nbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90
IHNlcmlhbGl6ZSBCaWdJbnQuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9nbG9iYWxP
YmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBCaWdJbnQuIl9z
dHIpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogICAgIH0KIApAQCAtNDEzLDcg
KzQxMyw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVu
ZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKICAgICAvLyBIYW5kbGUgY3ljbGUgZGV0
ZWN0aW9uLCBhbmQgcHV0IHRoZSBob2xkZXIgb24gdGhlIHN0YWNrLgogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2hvbGRlclN0YWNrLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGlmICht
X2hvbGRlclN0YWNrW2ldLm9iamVjdCgpID09IG9iamVjdCkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IobV9nbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNl
cmlhbGl6ZSBjeWNsaWMgc3RydWN0dXJlcy4iX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IobV9nbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6
ZSBjeWNsaWMgc3RydWN0dXJlcy4iX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5
RmFpbGVkOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCmluZGV4IGQ1NDRhNDNiYTE5ZWEzMjdmYmQyODE1YWRjN2FmMzQxNmM1NjFh
NjYuLjU5OTA0OGZmY2U1ZWM5ZWFlYTA0OWM1OWVkZWQzY2U5OTczNDVjMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTU1Nyw3ICs1NTcsNyBAQCBT
dHJpbmcgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPYmplY3QqIG9iamVjdCkKICAg
ICAgICAgICAgIHJldHVybiBjbGFzc0luZm9OYW1lOwogCiAgICAgICAgIGlmIChjb25zdHJ1Y3Rv
ckZ1bmN0aW9uTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiAiT2JqZWN0Il9zOwor
ICAgICAgICAgICAgcmV0dXJuICJPYmplY3QiX3N0cjsKICAgICB9CiAKICAgICByZXR1cm4gY29u
c3RydWN0b3JGdW5jdGlvbk5hbWU7CkBAIC0xOTEyLDcgKzE5MTIsNyBAQCBib29sIEpTT2JqZWN0
OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCkgPT0gcHJvdG90eXBlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgcmV0
dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2FudFNldCwg
IkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0Il9zKTsK
KyAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJv
d0lmQ2FudFNldCwgIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUg
b2JqZWN0Il9zdHIpOwogICAgIH0KIAogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhp
cyh0aGlzLCBnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkgPT0gdGhpcyk7CkBAIC0x
OTI5LDcgKzE5MjksNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVj
ayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSBuZXh0
UHJvdG90eXBlID0gcHJvdG90eXBlOwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlICYmIG5leHRQ
cm90b3R5cGUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAobmV4dFByb3RvdHlwZSA9PSB0aGlz
KQotICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91
bGRUaHJvd0lmQ2FudFNldCwgImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiX3MpOworICAgICAgICAg
ICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2Fu
dFNldCwgImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiX3N0cik7CiAgICAgICAgIC8vIEZJWE1FOiBU
aGUgc3BlY2lmaWNhdGlvbiBjdXJyZW50bHkgc2F5cyB3ZSBzaG91bGQgY2hlY2sgaWYgdGhlIFtb
R2V0UHJvdG90eXBlT2ZdXSBpbnRlcm5hbCBtZXRob2Qgb2YgbmV4dFByb3RvdHlwZQogICAgICAg
ICAvLyBpcyBub3QgdGhlIG9yZGluYXJ5IG9iamVjdCBpbnRlcm5hbCBtZXRob2QuIEhvd2V2ZXIs
IHdlIGN1cnJlbnRseSByZXN0cmljdCB0aGlzIHRvIFByb3h5IG9iamVjdHMgYXMgaXQgd291bGQg
YWxsb3cKICAgICAgICAgLy8gZm9yIGN5Y2xlcyB3aXRoIGNlcnRhaW4gSFRNTCBvYmplY3RzIChX
aW5kb3dQcm94eSwgTG9jYXRpb24pIG90aGVyd2lzZS4KQEAgLTIyNzMsNyArMjI3Myw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2FsbFRvUHJpbWl0aXZlRnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZt
LCBmdW5jdGlvbik7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpIHsKICAgICAgICAgaWYgY29uc3RleHByIChrZXkgPT0gQ2FjaGVkU3BlY2lhbFByb3BlcnR5
S2V5OjpUb1ByaW1pdGl2ZSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJTeW1ib2wudG9QcmltaXRpdmUgaXMgbm90IGEgZnVuY3Rpb24sIHVuZGVmaW5l
ZCwgb3IgbnVsbCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiU3ltYm9sLnRvUHJpbWl0aXZlIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmluZWQs
IG9yIG51bGwiX3N0cik7CiAgICAgICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKTsKICAgICB9
CiAKQEAgLTIzMDIsNyArMjMwMiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2Fs
bFRvUHJpbWl0aXZlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgQVNT
RVJUKCFyZXN1bHQuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgp
KSB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2V5ID09IENhY2hlZFNwZWNpYWxQcm9wZXJ0eUtl
eTo6VG9QcmltaXRpdmUpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlN5bWJvbC50b1ByaW1pdGl2ZSByZXR1cm5lZCBhbiBvYmplY3QiX3Mp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJTeW1ib2wudG9QcmltaXRpdmUgcmV0dXJuZWQgYW4gb2JqZWN0Il9zdHIpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjM0NCw3ICsy
MzQ0LDcgQEAgSlNWYWx1ZSBKU09iamVjdDo6b3JkaW5hcnlUb1ByaW1pdGl2ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmkKIAogICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uRXhjZXB0VGVybWluYXRpb24oKTsKIAotICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiTm8gZGVmYXVsdCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJObyBkZWZhdWx0IHZhbHVlIl9zdHIp
OwogfQogCiBKU1ZhbHVlIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CkBA
IC0yNDMzLDcgKzI0MzMsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9i
amVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiJfcyk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnN0YW5jZW9mIGNhbGxlZCBvbiBh
biBvYmplY3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iX3N0cik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI4NjMsMTAgKzI4NjMsMTAgQEAgYm9vbCBK
U09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGkKICAgICAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUo
KSkgewogICAgICAgICAgICAgICAgIC8vIDExLmkuIFJlamVjdCwgaWYgdGhlIFtbU2V0XV0gZmll
bGQgb2YgRGVzYyBpcyBwcmVzZW50IGFuZCBTYW1lVmFsdWUoRGVzYy5bW1NldF1dLCBjdXJyZW50
LltbU2V0XV0pIGlzIGZhbHNlLgogICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNldHRl
clByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLnNldHRlcigpICE9IGN1cnJlbnQuc2V0dGVyKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
dGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVu
Y29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5n
IHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfc3Ry
KTsKICAgICAgICAgICAgICAgICAvLyAxMS5paS4gUmVqZWN0LCBpZiB0aGUgW1tHZXRdXSBmaWVs
ZCBvZiBEZXNjIGlzIHByZXNlbnQgYW5kIFNhbWVWYWx1ZShEZXNjLltbR2V0XV0sIGN1cnJlbnQu
W1tHZXRdXSkgaXMgZmFsc2UuCiAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVy
UHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZ2V0dGVyKCkgIT0gY3VycmVudC5nZXR0ZXIoKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5j
b25maWd1cmFibGUgcHJvcGVydHkuIl9zKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcg
dG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9zdHIp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzc3MSw5ICszNzcxLDkgQEAg
Ym9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5pc0FjY2Vz
c29yRGVzY3JpcHRvcigpKTsKICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7
CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkgJiYgZGVzY3JpcHRv
ci5zZXR0ZXIoKSAhPSBjdXJyZW50LnNldHRlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5n
IHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5j
b25maWd1cmFibGUgcHJvcGVydHkuIl9zdHIpOwogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iu
Z2V0dGVyUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZ2V0dGVyKCkgIT0gY3VycmVudC5nZXR0ZXIo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1
bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iX3MpOworICAgICAgICAgICAgICAgIHJldHVybiB0eXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRv
IGNoYW5nZSB0aGUgZ2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfc3RyKTsK
IAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3IuY3BwCmluZGV4IGZhMzMzODJlZmM4M2MwNWYxOTVkNTRiZTZmNDUwODQzYzEwYWY1MjEuLjgx
ODgzMjlhOWU5MTllMGVkZTc1NmVlYjE3YmViNTZmNzU2NDUzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZgogCiB2
b2lkIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBw
cm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKIHsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMCwgIlR5cGVkQXJyYXkiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IDAsICJUeXBlZEFycmF5Il9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0
dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU3ltYm9sLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogCkBAIC02MSw3ICs2MSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUeXBlZEFycmF5VmlldywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJVR5cGVkQXJyYXklIHNob3VsZCBu
b3QgYmUgY2FsbGVkIGRpcmVjdGx5Il9zKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiJVR5cGVkQXJyYXklIHNob3VsZCBub3QgYmUgY2FsbGVkIGRp
cmVjdGx5Il9zdHIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5j
cHAKaW5kZXggODgyN2IzZGU5OGZlMDVmZTU4YjkxNzA0MjllMzg2NDk5NWUxOWY1OC4uOTcxY2Vl
OTI0NTBlY2QxZDFmYjljNWIwZTRhMWFkMDQyM2ZlN2I5MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5j
cHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odHlw
ZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNUb1N0cmluZ1RhZyk7CiAgICAgY2FzZSBOb3RUeXBl
ZEFycmF5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRGF0YVZpZXc6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfcyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAiUmVjZWl2
ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfc3RyKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IHdoaWxl
IChmYWxzZSkKQEAgLTE2NywxMiArMTY3LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0
eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghYXJndW1lbnQuaXNDZWxs
KCkgfHwgIWlzVHlwZWRWaWV3KGFyZ3VtZW50LmFzQ2VsbCgpLT5jbGFzc0luZm8odm0pLT50eXBl
ZEFycmF5U3RvcmFnZVR5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zdHIpOwogCiAgICAgSlNB
cnJheUJ1ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihh
cmd1bWVudCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBB
cnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcg
QXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfc3RyKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+bGVuZ3RoKCkpKTsK
IH0KQEAgLTE4Myw3ICsxODMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJh
eVZpZXdQcml2YXRlRnVuY0NvbnRlbnRUeXBlLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghYXJndW1lbnQuaXNDZWxsKCkgfHwgIWlz
VHlwZWRWaWV3KGFyZ3VtZW50LmFzQ2VsbCgpLT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zdHIpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oY29udGVudFR5cGUoYXJndW1l
bnQuYXNDZWxsKCktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpKSk7CiB9
CiAKQEAgLTIwMSwxMiArMjAxLDEyIEBAIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjcmVhdGVUeXBl
ZEFycmF5SXRlcmF0b3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLmlzQ2VsbCgpIHx8ICFpc1R5cGVkQXJyYXlUeXBlKGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkuYXNDZWxsKCktPnR5cGUoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJh
eSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciX3N0cik7CiAK
ICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVy
Vmlldyo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlz
RGV0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0
aGUgdmlldyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20g
dGhlIHZpZXciX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJyYXlJdGVy
YXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwg
dGhpc09iamVjdCwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpKSkpOwogfQpA
QCAtMjQxLDcgKzI0MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5Vmll
d1Byb3RvRnVuY1NldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4g
b2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVS
SUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jU2V0KTsKIH0KQEAgLTI1Miw3ICsyNTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluLCAoSlNHbG9iYWxPYmplY3QqIGds
bwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0
IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxM
X0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jQ29weVdpdGhpbik7CiB9CkBAIC0yNzQsNyArMjc0LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YsIChKU0ds
b2JhbE9iamVjdCogZ2wKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2
aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBh
cnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfc3RyKTsKICAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKTsKIH0KQEAgLTI4NSw3ICsyODUs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRl
eE9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAg
IHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVf
RlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik7CiB9CkBAIC0y
OTYsNyArMjk2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jSm9pbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
c3RyKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlf
UFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOwog
fQpAQCAtMzA3LDcgKzMwNyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5
Vmlld1Byb3RvRnVuY0ZpbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVj
ZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3Qi
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiX3N0cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBF
REFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNG
aWxsKTsKIH0KQEAgLTMxOCw3ICszMTgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlw
ZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIsIChKU0dsb2JhbE9iamVjdCogZwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4g
b2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVS
SUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9HZXR0ZXJGdW5jQnVmZmVyKTsKIH0KQEAgLTMyOSw3ICszMjksNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgsIChKU0dsb2Jh
bE9iamVjdCogZwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0
aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsK
ICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKTsKIH0KQEAgLTM0MCw3ICszNDAsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNC
eXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplYwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5
cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNj
b3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVO
Q1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCk7CiB9
CkBAIC0zNTEsNyArMzUxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlW
aWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldCwgKEpTR2xvYmFsT2JqZWMKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9i
amVjdCJfc3RyKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVE
QVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY0J5dGVPZmZzZXQpOwogfQpAQCAtMzYyLDcgKzM2Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3N0cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAg
IENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKTsKIH0KQEAgLTM3Myw3ICszNzMsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRl
LCAoSlNHbG9iYWxPYmplYwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7CiB9CkBAIC0zODQs
NyArMzg0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jU2xpY2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91
bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfc3Ry
KTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJP
VE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKTsKIH0K
QEAgLTM5OCwyNyArMzk4LDI3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3RyaW5nVGFnLCAoSlNHbG9iYWxPYmplCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHN3aXRjaCAodGhpc1ZhbHVlLmdldE9iamVjdCgp
LT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpIHsKICAgICBjYXNlIFR5cGVV
aW50OENsYW1wZWQ6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFs
U3RyaW5nKHZtLCAiVWludDhDbGFtcGVkQXJyYXkiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50OENsYW1wZWRBcnJheSJfc3Ry
KSk7CiAgICAgY2FzZSBUeXBlSW50MzI6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50MzJBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkludDMyQXJyYXkiX3N0cikp
OwogICAgIGNhc2UgVHlwZVVpbnQzMjoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50MzJBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlVpbnQzMkFycmF5Il9zdHIp
KTsKICAgICBjYXNlIFR5cGVGbG9hdDY0OgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkZsb2F0NjRBcnJheSJfcykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkZsb2F0NjRBcnJheSJf
c3RyKSk7CiAgICAgY2FzZSBUeXBlRmxvYXQzMjoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJGbG9hdDMyQXJyYXkiX3MpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJGbG9hdDMyQXJy
YXkiX3N0cikpOwogICAgIGNhc2UgVHlwZUludDg6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50OEFycmF5Il9zKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50OEFycmF5Il9z
dHIpKTsKICAgICBjYXNlIFR5cGVVaW50ODoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50OEFycmF5Il9zKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiVWludDhBcnJheSJfc3Ry
KSk7CiAgICAgY2FzZSBUeXBlSW50MTY6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50MTZBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkludDE2QXJyYXkiX3N0cikp
OwogICAgIGNhc2UgVHlwZVVpbnQxNjoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50MTZBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlVpbnQxNkFycmF5Il9zdHIp
KTsKICAgICBjYXNlIFR5cGVCaWdJbnQ2NDoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJCaWdJbnQ2NEFycmF5Il9zKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiQmlnSW50NjRBcnJh
eSJfc3RyKSk7CiAgICAgY2FzZSBUeXBlQmlnVWludDY0OgotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkJpZ1VpbnQ2NEFycmF5Il9zKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiQmln
VWludDY0QXJyYXkiX3N0cikpOwogICAgIGNhc2UgTm90VHlwZWRBcnJheToKICAgICBjYXNlIFR5
cGVEYXRhVmlldzoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGlmIChP
cHRpb25zOjp1c2VBdE1ldGhvZCgpKQogICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXRQdWJsaWNO
YW1lKCksIHR5cGVkQXJyYXlQcm90b3R5cGVBdENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgIEpTRnVuY3Rpb24q
IHRvU3RyaW5nVGFnRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMCwgImdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSJfcywgdHlwZWRBcnJheVZpZXdQcm90b0dl
dHRlckZ1bmNUb1N0cmluZ1RhZywgTm9JbnRyaW5zaWMpOworICAgIEpTRnVuY3Rpb24qIHRvU3Ry
aW5nVGFnRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwg
ImdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSJfc3RyLCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY1RvU3RyaW5nVGFnLCBOb0ludHJpbnNpYyk7CiAgICAgR2V0dGVyU2V0dGVyKiB0b1N0cmlu
Z1RhZ0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdG9T
dHJpbmdUYWdGdW5jdGlvbiwgbnVsbHB0cik7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nv
cldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJv
bCwgdG9TdHJpbmdUYWdBY2Nlc3NvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApp
bmRleCA0MTJlMjU4YWIwOTU5ZjE4YjMyZGE5OTFkYjNmOTYwNGYyOThiN2Y0Li41MzczMWY3ZTM1
MmY1NjJkZTM0YjFmYTU1M2Y2MzM2NTE1YzViNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNzI4LDcgKzcyOCw3IEBAIEFMV0FZ
U19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4KExp
dGVyYWxQYXJzZXJUb2tlbjxDCiAgICAgICAgIHN3aXRjaCAodG9rZW5UeXBlKSB7CiAgICAgICAg
IGNhc2UgVG9rU3RyaW5nOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKGNoYXJhY3RlciA9PSAn
XCcnICYmIG1fbW9kZSA9PSBTdHJpY3RKU09OKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIlNpbmdsZSBxdW90ZXMgKFwnKSBhcmUgbm90IGFsbG93ZWQgaW4gSlNPTiJf
czsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJTaW5nbGUgcXVvdGVzIChc
JykgYXJlIG5vdCBhbGxvd2VkIGluIEpTT04iX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4g
VG9rRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbGV4U3RyaW5nKHRv
a2VuLCBjaGFyYWN0ZXIpOwpAQCAtOTEwLDcgKzkxMCw3IEBAIHNsb3dQYXRoQmVnaW46CiAgICAg
ICAgICAgICAgICAgbV9idWlsZGVyLmFwcGVuZENoYXJhY3RlcnMocnVuU3RhcnQsIG1fcHRyIC0g
cnVuU3RhcnQpOwogICAgICAgICAgICAgKyttX3B0cjsKICAgICAgICAgICAgIGlmIChtX3B0ciA+
PSBtX2VuZCkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlVudGVybWlu
YXRlZCBzdHJpbmciX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW50
ZXJtaW5hdGVkIHN0cmluZyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoKm1fcHRyKSB7CkBAIC05NDksNyAr
OTQ5LDcgQEAgc2xvd1BhdGhCZWdpbjoKIAogICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgogICAg
ICAgICAgICAgICAgICAgICBpZiAoKG1fZW5kIC0gbV9wdHIpIDwgNSkgeyAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlxcdSBtdXN0IGJlIGZvbGxvd2VkIGJ5
IDQgaGV4IGRpZ2l0cyJfczsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIlxcdSBtdXN0IGJlIGZvbGxvd2VkIGJ5IDQgaGV4IGRpZ2l0cyJfc3RyOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICAgICAgICAgICAgICB9
IC8vIHVOTk5OID09IDUgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBp
ID0gMTsgaSA8IDU7IGkrKykgewpAQCAtOTc1LDcgKzk3NSw3IEBAIHNsb3dQYXRoQmVnaW46CiAg
ICAgfSB3aGlsZSAoKG1fbW9kZSAhPSBOb25TdHJpY3RKU09OKSAmJiBtX3B0ciAhPSBydW5TdGFy
dCAmJiAobV9wdHIgPCBtX2VuZCkgJiYgKm1fcHRyICE9IHRlcm1pbmF0b3IpOwogCiAgICAgaWYg
KG1fcHRyID49IG1fZW5kIHx8ICptX3B0ciAhPSB0ZXJtaW5hdG9yKSB7Ci0gICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gIlVudGVybWluYXRlZCBzdHJpbmciX3M7CisgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIlVudGVybWluYXRlZCBzdHJpbmciX3N0cjsKICAgICAgICAgcmV0dXJuIFRv
a0Vycm9yOwogICAgIH0KIApAQCAtMTAyNiw3ICsxMDI2LDcgQEAgVG9rZW5UeXBlIExpdGVyYWxQ
YXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4TnVtYmVyKExpdGVyYWxQYXJzZXJUb2tlbjxDaGFy
VHlwZT4KICAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNBU0NJSURpZ2l0KCptX3B0
cikpCiAgICAgICAgICAgICArK21fcHRyOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIkludmFsaWQgbnVtYmVyIl9zOworICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9ICJJbnZhbGlkIG51bWJlciJfc3RyOwogICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAg
fQogCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlw
ZT46OkxleGVyOjpsZXhOdW1iZXIoTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPgogICAgICAg
ICArK21fcHRyOwogICAgICAgICAvLyBbMC05XSsKICAgICAgICAgaWYgKG1fcHRyID49IG1fZW5k
IHx8ICFpc0FTQ0lJRGlnaXQoKm1fcHRyKSkgewotICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSAiSW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludCJfczsKKyAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gIkludmFsaWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnQi
X3N0cjsKICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICAgICAgfQogCkBAIC0xMDc5
LDcgKzEwNzksNyBAQCBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjps
ZXhOdW1iZXIoTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPgogCiAgICAgICAgIC8vIFswLTld
KwogICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7
Ci0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJFeHBvbmVudCBzeW1ib2xzIHNob3Vs
ZCBiZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3IgJy0nIGFuZCB0aGVuIGJ5IGF0IGxl
YXN0IG9uZSBudW1iZXIiX3M7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJFeHBv
bmVudCBzeW1ib2xzIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3IgJy0n
IGFuZCB0aGVuIGJ5IGF0IGxlYXN0IG9uZSBudW1iZXIiX3N0cjsKICAgICAgICAgICAgIHJldHVy
biBUb2tFcnJvcjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTExMDAsMTMgKzExMDAsMTMgQEAg
dm9pZCBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6c2V0RXJyb3JNZXNzYWdlRm9yVG9rZW4oVG9r
ZW5UeXBlIHRva2VuVHlwZSkKIHsKICAgICBzd2l0Y2ggKHRva2VuVHlwZSkgewogICAgIGNhc2Ug
VG9rUkJyYWNlOgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICd9JyJf
czsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnfSciX3N0cjsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBUb2tSQnJhY2tldDoKLSAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJFeHBlY3RlZCAnXSciX3M7CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiRXhwZWN0ZWQgJ10nIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVG9rQ29sb246
Ci0gICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJzonIGJlZm9yZSB2YWx1
ZSBpbiBvYmplY3QgcHJvcGVydHkgZGVmaW5pdGlvbiJfczsKKyAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJFeHBlY3RlZCAnOicgYmVmb3JlIHZhbHVlIGluIG9iamVjdCBwcm9wZXJ0eSBk
ZWZpbml0aW9uIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTExMzgsMTAgKzExMzgsMTAgQEAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZVByaW1pdGl2
ZVZhbHVlKFZNJiB2bSkKICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgIHJldHVybiBq
c0Jvb2xlYW4oZmFsc2UpOwogICAgIGNhc2UgVG9rUkJyYWNrZXQ6Ci0gICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3M7CisgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3N0cjsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICBjYXNlIFRva1JCcmFjZToKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJVbmV4cGVjdGVkIHRva2VuICd9JyJfczsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJVbmV4cGVjdGVkIHRva2VuICd9JyJfc3RyOwogICAgICAgICByZXR1cm4geyB9OwogICAgIGNh
c2UgVG9rSWRlbnRpZmllcjogewogICAgICAgICBhdXRvIHRva2VuID0gbV9sZXhlci5jdXJyZW50
VG9rZW4oKTsKQEAgLTExNjgsMzMgKzExNjgsMzMgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIExp
dGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZVByaW1pdGl2ZVZhbHVlKFZNJiB2bSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgY2FzZSBUb2tDb2xvbjoKLSAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyJfczsKKyAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyJfc3RyOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIGNhc2UgVG9rTFBhcmVuOgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJygnIl9zOworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJygnIl9zdHI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
Y2FzZSBUb2tSUGFyZW46Ci0gICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3Rl
ZCB0b2tlbiAnKSciX3M7CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3Rl
ZCB0b2tlbiAnKSciX3N0cjsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBjYXNlIFRva0NvbW1h
OgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIl9z
OworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIl9z
dHI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgY2FzZSBUb2tEb3Q6Ci0gICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciX3M7CisgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciX3N0cjsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICBjYXNlIFRva0Fzc2lnbjoKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyJfczsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyJfc3RyOwogICAgICAgICByZXR1cm4geyB9OwogICAg
IGNhc2UgVG9rU2VtaToKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc7JyJfczsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc7JyJfc3RyOwogICAgICAgICByZXR1cm4geyB9OwogICAgIGNhc2UgVG9rRW5kOgot
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zOworICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zdHI7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgY2FzZSBUb2tFcnJvcjoKICAgICBkZWZhdWx0OgogICAgICAgICAvLyBF
cnJvcgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkNvdWxkIG5vdCBwYXJzZSB2YWx1
ZSBleHByZXNzaW9uIl9zOworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkNvdWxkIG5v
dCBwYXJzZSB2YWx1ZSBleHByZXNzaW9uIl9zdHI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogfQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBl
Pjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgVG9rZW5UeXBl
IGxhc3RUb2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCktPnR5cGU7CiAgICAgICAgICAgICBp
ZiAobV9sZXhlci5uZXh0KCkgPT0gVG9rUkJyYWNrZXQpIHsKICAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkobGFzdFRva2VuID09IFRva0NvbW1hKSkgewotICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJh
eSBleHByZXNzaW9uIl9zOworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIl9zdHI7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwpAQCAtMTI4NCw3ICsxMjg0LDcgQEAgSlNWYWx1
ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRl
KQogCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX21vZGUgIT0gU3RyaWN0SlNPTiAmJiBpZGVu
dCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghdmlzaXRlZFVuZGVyc2NvcmVQcm90by5hZGQob2JqZWN0
KS5pc05ld0VudHJ5KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiQXR0ZW1wdGVkIHRvIHJlZGVmaW5lIF9fcHJvdG9fXyBwcm9wZXJ0eSJfczsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkF0dGVt
cHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHkiX3N0cjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBtX251bGxP
ckNvZGVCbG9jayA/IG1fbnVsbE9yQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0
cmljdENvbnRleHQoKSA6IGZhbHNlKTsKQEAgLTEzMDMsNyArMTMwMyw3IEBAIEpTVmFsdWUgTGl0
ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKIAog
ICAgICAgICAgICAgICAgICAgICBuZXh0VHlwZSA9IG1fbGV4ZXIubmV4dCgpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFR5cGUgIT0gVG9rU3RyaW5nICYmIChtX21vZGUg
PT0gU3RyaWN0SlNPTiB8fCBuZXh0VHlwZSAhPSBUb2tJZGVudGlmaWVyKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiUHJvcGVydHkgbmFtZSBtdXN0
IGJlIGEgc3RyaW5nIGxpdGVyYWwiX3M7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsIl9z
dHI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTMzMCw3ICsxMzMwLDcgQEAgSlNWYWx1ZSBM
aXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQog
ICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RTdGFydEV4cHJlc3Npb246IHsKICAgICAgICAgICAg
IFRva2VuVHlwZSB0eXBlID0gbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkodHlwZSAhPSBUb2tTdHJpbmcgJiYgKG1fbW9kZSA9PSBTdHJpY3RKU09OIHx8IHR5cGUgIT0g
VG9rSWRlbnRpZmllcikpKSB7Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJQcm9wZXJ0eSBuYW1lIG11c3QgYmUgYSBzdHJpbmcgbGl0ZXJhbCJfczsKKyAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmlu
ZyBsaXRlcmFsIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFjay5hcHBlbmQobWFrZUlkZW50aWZpZXIodm0s
IG1fbGV4ZXIuY3VycmVudFRva2VuKCkpKTsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIEpTVmFsdWUg
TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkK
ICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQgPSBpZGVudGlmaWVyU3RhY2sudGFrZUxhc3Qo
KTsKICAgICAgICAgICAgIGlmIChtX21vZGUgIT0gU3RyaWN0SlNPTiAmJiBpZGVudCA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoIXZpc2l0ZWRVbmRlcnNjb3JlUHJvdG8uYWRkKG9iamVjdCkuaXNOZXdFbnRyeSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJBdHRlbXB0ZWQgdG8g
cmVkZWZpbmUgX19wcm90b19fIHByb3BlcnR5Il9zOworICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIkF0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVy
dHkiX3N0cjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBtX251bGxP
ckNvZGVCbG9jayA/IG1fbnVsbE9yQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0
cmljdENvbnRleHQoKSA6IGZhbHNlKTsKQEAgLTE0MDMsNTAgKzE0MDMsNTAgQEAgSlNWYWx1ZSBM
aXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQog
ICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIFRva1JCcmFja2V0OgotICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3M7CisgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICddJyJfc3RyOwogICAgICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKLSAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ3snIl9z
OworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tl
biAneyciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2Fz
ZSBUb2tSQnJhY2U6Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICd9JyJfczsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgICAgIGNhc2UgVG9rSWRlbnRpZmllcjoKLSAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgaWRlbnRpZmllciJfczsKKyAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgaWRlbnRpZmllciJfc3RyOwog
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICBjYXNlIFRva0NvbG9uOgot
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
OiciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc6JyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAg
ICBjYXNlIFRva1JQYXJlbjoKLSAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgdG9rZW4gJyknIl9zOworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKSciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1
cm4geyB9OwogICAgICAgICAgICAgY2FzZSBUb2tDb21tYToKLSAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIl9zOworICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciX3N0cjsKICAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2FzZSBUb2tUcnVlOgotICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAndHJ1
ZSciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICd0cnVlJyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
ICAgICBjYXNlIFRva0ZhbHNlOgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIl9zOworICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIl9zdHI7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIGNhc2UgVG9rTnVsbDoKLSAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ251bGwnIl9zOwor
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
bnVsbCciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2Fz
ZSBUb2tFbmQ6Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVj
dGVkIEVPRiJfczsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhw
ZWN0ZWQgRU9GIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAg
IGNhc2UgVG9rRG90OgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5l
eHBlY3RlZCB0b2tlbiAnLiciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgICAgICAgICBjYXNlIFRva0Fzc2lnbjoKLSAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIl9zOworICAgICAgICAgICAgICAg
IG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnPSciX3N0cjsKICAgICAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2FzZSBUb2tTZW1pOgotICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnOyciX3M7
CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICc7JyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICBjYXNl
IFRva0Vycm9yOgogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIkNvdWxkIG5vdCBwYXJzZSBzdGF0ZW1lbnQiX3M7CisgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJDb3VsZCBub3QgcGFyc2Ugc3RhdGVtZW50Il9z
dHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENo
YXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CiAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgPT0gVG9rRW5kKQog
ICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWU7Ci0gICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29udGVudCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIl9z
OworICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIGNvbnRlbnQg
YXQgZW5kIG9mIEpTT04gbGl0ZXJhbCJfc3RyOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IDJlMmFiMDI1ZGJkMWI5MzZiMzMwZTU2N2ZlYjgyNTEx
MjU1MTE5ZTguLjFhM2RlNGM3ZjcxODgwNTYxZTMwYTlmOTY5OTUzZDRhYjNkYTViYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTEwOSw3
ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gIkpTT04gUGFyc2UgZXJyb3I6
ICIgKyBtX2xleGVyLmdldEVycm9yTWVzc2FnZSgpOwogICAgICAgICBpZiAoIW1fcGFyc2VFcnJv
ck1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuICJKU09OIFBhcnNlIGVycm9y
OiAiICsgbV9wYXJzZUVycm9yTWVzc2FnZTsKLSAgICAgICAgcmV0dXJuICJKU09OIFBhcnNlIGVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciX3M7CisgICAgICAgIHJldHVybiAiSlNP
TiBQYXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nIl9zdHI7CiAgICAgfQog
ICAgIAogICAgIEpTVmFsdWUgdHJ5TGl0ZXJhbFBhcnNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAppbmRleCBlNWEyODk4Njc1ODQ4Mjlm
ZWEyMTQxZjk2ODgyNDk1MDYwOGNiNzhiLi5iZWJkM2FkYTJiZmNkNTE0ZjFkZTNjOGRlYWExN2Qx
OGRlNjI2MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29u
c3RydWN0b3IuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGNvbnN0IENsYXNzSW5mbyBNYXBDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBuCiAK
IHZvaWQgTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTWFwUHJvdG90eXBl
KiBtYXBQcm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKIHsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIk1hcCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
MCwgIk1hcCJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5z
aXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIG1hcFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTg3LDcgKzg3LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdE1hcCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSoKIAogICAgICAgICBhZGRlckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxs
RGF0YSh2bSwgYWRkZXJGdW5jdGlvbik7CiAgICAgICAgIGlmIChVTkxJS0VMWShhZGRlckZ1bmN0
aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3NldCcgcHJvcGVy
dHkgb2YgYSBNYXAgc2hvdWxkIGJlIGNhbGxhYmxlLiJfcyk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3NldCcgcHJvcGVydHkgb2Yg
YSBNYXAgc2hvdWxkIGJlIGNhbGxhYmxlLiJfc3RyKTsKICAgICB9CiAKICAgICBzY29wZS5yZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNw
cAppbmRleCA5M2ViZTAwM2M0NzJiYzg5NDNhODU4ZGE4MzUzNGYyYmI3YTE4MDZlLi40NGExMTYz
ZTRmODVmYzAwMjllNGU4NjJmZDZiOGQ4ZTcwM2Q1MzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgSlNNYXAqIGdldE1hcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHRoaXNWYWwKICAgICBhdXRvKiBtYXAgPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4o
dm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSk7CiAgICAgaWYgKExJS0VMWShtYXApKQogICAgICAgICBy
ZXR1cm4gbWFwOwotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJNYXAg
b3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAg
b2JqZWN0Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAppbmRleCA4ODg1OTFkZGMw
NmZmYWNhZDJmMGEwOTczYmYwMjU1NGQ2NTE4MGI2Li5mNmMwNWM0NTVjMTViYjA1Mjg0ZThkODYz
YjEzYmFmMmI5NDlkOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04obnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgU3RyaW5nOjpudW1iZXIoeCkpKTsKIAogICAgIGlmIChkZWNpbWFsUGxhY2VzIDwgMCB8
fCBkZWNpbWFsUGxhY2VzID4gMTAwKQotICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInRvRXhwb25lbnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJl
dHdlZW4gMCBhbmQgMTAwIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3
ZWVuIDAgYW5kIDEwMCJfc3RyKTsKIAogICAgIC8vIFJvdW5kIGlmIHRoZSBhcmd1bWVudCBpcyBu
b3QgdW5kZWZpbmVkLCBhbHdheXMgZm9ybWF0IGFzIGV4cG9uZW50aWFsLgogICAgIE51bWJlclRv
U3RyaW5nQnVmZmVyIGJ1ZmZlcjsKQEAgLTQzMSw3ICs0MzEsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04obnVtYmVyUHJvdG9GdW5jVG9GaXhlZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgaW50IGRlY2ltYWxQbGFjZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChkZWNpbWFsUGxhY2VzIDwg
MCB8fCBkZWNpbWFsUGxhY2VzID4gMTAwKQotICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdl
ZW4gMCBhbmQgMTAwIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5k
IDEwMCJfc3RyKTsKIAogICAgIC8vIDE1LjcuNC41Ljcgc3RhdGVzICJJZiB4ID49IDEwXjIxLCB0
aGVuIGxldCBtID0gVG9TdHJpbmcoeCkiCiAgICAgLy8gVGhpcyBhbHNvIGNvdmVycyBJbmluaXR5
LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0aGF0IE5hTgpAQCAtNDc2LDcgKzQ3Niw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlcih4KSkpOwogCiAgICAgaWYgKHNp
Z25pZmljYW50RmlndXJlcyA8IDEgfHwgc2lnbmlmaWNhbnRGaWd1cmVzID4gMTAwKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvUHJlY2lz
aW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEwMCJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidG9QcmVjaXNpb24o
KSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAwIl9zdHIpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0ZpeGVk
UHJlY2lzaW9uKHgsIHNpZ25pZmljYW50RmlndXJlcywgS2VlcFRyYWlsaW5nWmVyb3MpKSk7CiB9
CkBAIC02MDcsNyArNjA3LDcgQEAgaW50MzJfdCBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcmFkaXgKICAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRpeERvdWJsZSk7ICAgCiAgICAgfQogCi0g
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgInRvU3RyaW5nKCkg
cmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2Il9zKTsKKyAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAidG9TdHJpbmcoKSByYWRpeCBhcmd1
bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiX3N0cik7CiAgICAgcmV0dXJuIDA7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcAppbmRleCA1ODQwNmVhNzMxYzk0YWViNzQ5MTE5MmViZTZkMTRjOTNhMjM4Yzc3Li4yMDZi
OWFiMGJjNjZlYjg4YjNmYjc5NjUyYWQyMmI1OWVlOWI5MmVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0xNTYsMTEg
KzE1NiwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29uc3RydWN0b3JTZXRQ
cm90b3R5cGVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgSlNWYWx1ZSBvYmplY3RW
YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKG9iamVjdFZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiB1bmRlZmluZWQgb3IgbnVsbCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiB1bmRlZmluZWQgb3IgbnVsbCJfc3RyKTsKIAogICAg
IEpTVmFsdWUgcHJvdG9WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFw
cm90b1ZhbHVlLmlzT2JqZWN0KCkgJiYgIXByb3RvVmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm90b3R5cGUgdmFs
dWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJvdG90eXBlIHZhbHVlIGNhbiBv
bmx5IGJlIGFuIG9iamVjdCBvciBudWxsIl9zdHIpOwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9
IG9iamVjdFZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0zMTAsNyArMzEwLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yQXNzaWduLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKIAogICAgIEpTVmFsdWUgdGFyZ2V0VmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmICh0YXJnZXRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2Jq
ZWN0LmFzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBvciB1
bmRlZmluZWQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiT2JqZWN0LmFzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBu
b3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3N0cik7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRh
cmdldFZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIApAQCAtMzU0LDcgKzM1NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihvYmplY3RDb25zdHJ1Y3RvckVudHJpZXMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0CiAKICAgICBKU1ZhbHVlIHRhcmdldFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICBpZiAodGFyZ2V0VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdC5lbnRyaWVzIHJl
cXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJP
YmplY3QuZW50cmllcyByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBv
ciB1bmRlZmluZWQiX3N0cik7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRhcmdldFZhbHVlLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIApAQCAtNDEzLDcgKzQxMyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RD
b25zdHJ1Y3RvclZhbHVlcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBK
U1ZhbHVlIHRhcmdldFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAodGFy
Z2V0VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdC52YWx1ZXMgcmVxdWlyZXMgdGhhdCBp
bnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdC52YWx1ZXMg
cmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9z
dHIpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJnZXRWYWx1ZS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKQEAgLTQ2MCw3
ICs0NjAsNyBAQCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzYwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghaW4uaXNPYmplY3QoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJvcGVydHkgZGVzY3JpcHRp
b24gbXVzdCBiZSBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0LiJf
c3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBKU09iamVjdCogZGVzY3Jp
cHRpb24gPSBhc09iamVjdChpbik7CkBAIC01MDgsNyArNTA4LDcgQEAgYm9vbCB0b1Byb3BlcnR5
RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGluLCBQcm9w
ZXJ0eURlc2MKICAgICAgICAgSlNWYWx1ZSBnZXQgPSBkZXNjcmlwdGlvbi0+Z2V0KGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Z2V0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoIWdldC5pc1VuZGVmaW5lZCgpICYmICFnZXQu
aXNDYWxsYWJsZSh2bSkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJHZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiJfcyk7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiR2V0dGVyIG11c3QgYmUgYSBmdW5j
dGlvbi4iX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgZGVzYy5zZXRHZXR0ZXIoZ2V0KTsKQEAgLTUyMSw3ICs1MjEsNyBAQCBib29sIHRvUHJvcGVy
dHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW4sIFBy
b3BlcnR5RGVzYwogICAgICAgICBKU1ZhbHVlIHNldCA9IGRlc2NyaXB0aW9uLT5nZXQoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICghc2V0LmlzVW5kZWZpbmVkKCkgJiYgIXNl
dC5pc0NhbGxhYmxlKHZtKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlNldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIl9zKTsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTZXR0ZXIgbXVzdCBiZSBhIGZ1
bmN0aW9uLiJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBkZXNjLnNldFNldHRlcihzZXQpOwpAQCAtNTMyLDEyICs1MzIsMTIgQEAgYm9vbCB0b1By
b3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGlu
LCBQcm9wZXJ0eURlc2MKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoZGVzYy52YWx1
ZSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZh
bGlkIHByb3BlcnR5LiAgJ3ZhbHVlJyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9y
IHNldHRlci4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW52YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdl
dHRlciBvciBzZXR0ZXIuIl9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgaWYgKGRlc2Mud3JpdGFibGVQcmVzZW50KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHByZXNl
bnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRh
YmxlJyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iX3N0cik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NDksNyAr
NTQ5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yRGVmaW5l
UHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm9w
ZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3N0cik7CiAgICAgSlNPYmpl
Y3QqIG9iaiA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CkBAIC02MTYsNyArNjE2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0
cnVjdG9yRGVmaW5lUHJvcGVydGllcywgKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmpl
Y3RzLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3N0cik7
CiAgICAgSlNPYmplY3QqIHRhcmdldE9iaiA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOwogICAgIEpTT2JqZWN0KiBwcm9wcyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIXByb3BzKTsKQEAgLTYzMiw3ICs2MzIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04ob2JqZWN0Q29uc3RydWN0b3JDcmVhdGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogCiAgICAgSlNWYWx1ZSBwcm90byA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KCFwcm90by5pc09iamVjdCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdCBwcm90b3R5cGUgbWF5
IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGwuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkg
YmUgYW4gT2JqZWN0IG9yIG51bGwuIl9zdHIpOwogICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBw
cm90by5pc09iamVjdCgpCiAgICAgICAgID8gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBhc09iamVjdChwcm90bykpCiAgICAgICAgIDogY29uc3RydWN0RW1wdHlPYmplY3Qodm0s
IGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKQEAgLTc1Myw3
ICs3NTMsNyBAQCBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JTZWFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgYm9vbCBzdWNjZXNzID0gc2V0
SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OlNlYWxlZD4oZ2xvYmFsT2JqZWN0LCB2bSwg
b2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJVbmFibGUgdG8gcHJldmVudCBleHRlbnNpb24gaW4gT2JqZWN0LnNlYWwi
X3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxl
IHRvIHByZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5zZWFsIl9zdHIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc4Niw3ICs3ODYsNyBAQCBKU09iamVjdCogb2JqZWN0
Q29uc3RydWN0b3JGcmVlemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IG9iamVjdAogICAgIGJvb2wgc3VjY2VzcyA9IHNldEludGVncml0eUxldmVsPEludGVncml0eUxl
dmVsOjpGcm96ZW4+KGdsb2JhbE9iamVjdCwgdm0sIG9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxlIHRvIHBy
ZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5mcmVlemUiX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxlIHRvIHByZXZlbnQgZXh0ZW5zaW9uIGlu
IE9iamVjdC5mcmVlemUiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAg
ICByZXR1cm4gb2JqZWN0OwpAQCAtODE3LDcgKzgxNyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zLCAoSlNHbG9iYWxPYmplY3Qq
IGdsCiAgICAgYm9vbCBzdGF0dXMgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4
dGVuc2lvbnMob2JqZWN0LCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxlIHRvIHByZXZlbnQg
ZXh0ZW5zaW9uIGluIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmFibGUgdG8gcHJldmVu
dCBleHRlbnNpb24gaW4gT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zIl9zdHIpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUob2JqZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggOTViYmEzY2IzMjBlYTVjNzBm
OTgwNDNmZTBkMjY3MDE3NzNhMGUyYy4uYzA4ZmM0YjdjMDdhNTY2MjI1MGMxOGFjMjlhNTI1NmZj
ODFiMTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
IAogICAgIEpTVmFsdWUgZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIWdl
dC5pc0NhbGxhYmxlKHZtKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImludmFsaWQgZ2V0dGVyIHVzYWdlIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgZ2V0dGVyIHVz
YWdlIl9zdHIpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogCiAgICAgSlNWYWx1ZSBzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
OwogICAgIGlmICghc2V0LmlzQ2FsbGFibGUodm0pKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52
YWxpZCBzZXR0ZXIgdXNhZ2UiX3N0cik7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDA5MTllNzIxODZkMzlkNmQ1NmVkZDcx
OGE5Y2ZiOGEzMDRmNTkxNzEuLmI3NDQ4OTliM2I5YTI3YmI0OTY0YjU1N2Q1ODQzNDA0NzgwYjQ0
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTgw
Nyw3ICs4MDcsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNVUlNoaWZ0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbGVmdCwgSlNWYQogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoVU5MSUtFTFkoIWxlZnRVaW50MzIgfHwgIXJp
Z2h0VWludDMyKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQmlnSW50IGRvZXMgbm90IHN1cHBvcnQgPj4+IG9wZXJhdG9yIl9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBkb2VzIG5vdCBzdXBwb3J0
ID4+PiBvcGVyYXRvciJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcApp
bmRleCBlYWJmYTg1YWNhMzdlZjBhYTdjN2RmODk1ZWFlNDE3MzlkMTU0OTBlLi44MzczM2E1YmYx
NGIzMWY1ZWEzOWQ2M2E4ZDUzMmJhYTA5MDYwZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBAIC04OCw3ICs4OCw3IEBA
IEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBnbG9i
YWxPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5
cGUgJiYgbmV4dFByb3RvdHlwZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShh
c09iamVjdChuZXh0UHJvdG90eXBlKS0+dHlwZSgpID09IFByb3h5T2JqZWN0VHlwZSkpCi0gICAg
ICAgICAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIlByb3h5IGlzIG5v
dCBhbGxvd2VkIGluIHRoZSBnbG9iYWwgcHJvdG90eXBlIGNoYWluLiJfcyk7CisgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIlByb3h5IGlzIG5vdCBhbGxv
d2VkIGluIHRoZSBnbG9iYWwgcHJvdG90eXBlIGNoYWluLiJfc3RyKTsKICAgICAgICAgbmV4dFBy
b3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90b3R5cGUpLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
OwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjcyZjhmN2FlZTUzMDkwNzE4NjM5NmMyMzE0NWNiYWJk
ZmJiMWYzYy4uOTFkNDhkZjA5ZmMxMmFkZWU2OTg3OTdlZTM0YzFmZDVmM2MzYTczMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1ha2VSZXZvY2FibGVQ
cm94eSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eS5yZXZvY2Fi
bGUgbmVlZHMgdG8gYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQg
dGhlIGhhbmRsZXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUHJveHkucmV2b2NhYmxlIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHR3
byBhcmd1bWVudHM6IHRoZSB0YXJnZXQgYW5kIHRoZSBoYW5kbGVyIl9zdHIpOwogCiAgICAgSlNW
YWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgaGFuZGxl
ciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggNDVmNThkOTlkMzVkNWExM2RkYjk5ZTBhNjRjZjkx
ZmI2NmQ5MzhkZi4uOGU1ODliZmFmMDk0MTllZjY4YmM1OTY4NWUzNDU4YTY1YjBkZWIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNjAs
MTEgKzYwLDExIEBAIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIEFTU0VSVCh0eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKTsKICAgICBp
ZiAoIXRhcmdldC5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJBIFByb3h5J3MgJ3RhcmdldCcgc2hvdWxkIGJlIGFuIE9iamVjdCJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBIFByb3h5J3Mg
J3RhcmdldCcgc2hvdWxkIGJlIGFuIE9iamVjdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAoIWhhbmRsZXIuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQgYmUgYW4g
T2JqZWN0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkEgUHJveHkncyAnaGFuZGxlcicgc2hvdWxkIGJlIGFuIE9iamVjdCJfc3RyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZv
cm1Qcm94eUdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm94eU9iamVjdCogcHJv
eHlPCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJW
YWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBnZXRIYW5kbGVyID0g
aGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3BlcnR5TmFt
ZXMtPmdldCwgIidnZXQnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIG9iamVjdCBzaG91
bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgZ2V0SGFuZGxlciA9IGhhbmRsZXItPmdl
dE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXQsICIn
Z2V0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBvYmplY3Qgc2hvdWxkIGJlIGNhbGxh
YmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBp
ZiAoZ2V0SGFuZGxlci5pc1VuZGVmaW5lZCgpKQpAQCAtMTM5LDEwICsxMzksMTAgQEAgc3RhdGlj
IEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3h5T2JqZWN0KiBwcm94eU8KICAgICAgICAgICAgIGJvb2wgaXNTYW1lID0gc2FtZVZhbHVlKGds
b2JhbE9iamVjdCwgZGVzY3JpcHRvci52YWx1ZSgpLCB0cmFwUmVzdWx0KTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBpZiAoIWlzU2Ft
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxl
IGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFzIHRo
ZSB0YXJnZXQncyBwcm9wZXJ0eSJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ2dldCcgcmVzdWx0
IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHByb3BlcnR5IHNob3VsZCBi
ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGFyZ2V0J3MgcHJvcGVydHkiX3N0cik7CiAgICAgICAg
IH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmICFkZXNjcmlw
dG9yLmNvbmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3IuZ2V0dGVyKCkuaXNVbmRlZmluZWQoKSkg
ewogICAgICAgICAgICAgaWYgKCF0cmFwUmVzdWx0LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBo
YW5kbGVyJ3MgJ2dldCcgcmVzdWx0IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9w
ZXJ0eSB3aXRob3V0IGEgZ2V0dGVyIHNob3VsZCBiZSB1bmRlZmluZWQiX3MpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkg
aGFuZGxlcidzICdnZXQnIHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNzb3IgcHJv
cGVydHkgd2l0aG91dCBhIGdldHRlciBzaG91bGQgYmUgdW5kZWZpbmVkIl9zdHIpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUK
IAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVl
KTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvck1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRh
LCBtYWtlSWRlbnRpZmllcih2bSwgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpLCAiJ2dldE93
blByb3BlcnR5RGVzY3JpcHRvcicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxk
IGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1l
dGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRl
bnRpZmllcih2bSwgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpLCAiJ2dldE93blByb3BlcnR5
RGVzY3JpcHRvcicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxh
YmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBp
ZiAoZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kLmlzVW5kZWZpbmVkKCkpCiAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcGVyZm9ybURlZmF1bHRHZXRPd25Qcm9wZXJ0eSgp
KTsKQEAgLTIyNCw3ICsyMjQsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxN
ZXRob2RHZXRPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc1Vu
ZGVmaW5lZCgpICYmICF0cmFwUmVzdWx0LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJyBjYWxsIHNob3VsZCBlaXRoZXIgYmUgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZXN1bHQgb2Yg
J2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FsbCBzaG91bGQgZWl0aGVyIGJlIGFuIE9iamVj
dCBvciB1bmRlZmluZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTIzNiwxMyArMjM2LDEzIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhv
ZEdldE93blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIGlmICgh
aXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBpZiAoIXRhcmdldFByb3BlcnR5RGVzY3JpcHRvci5jb25maWd1cmFibGUo
KSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIldo
ZW4gdGhlIHJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBpcyB1bmRlZmluZWQg
dGhlIHRhcmdldCBtdXN0IGJlIGNvbmZpZ3VyYWJsZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2hlbiB0aGUgcmVzdWx0IG9mICdnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0aGUgdGFyZ2V0IG11c3QgYmUgY29uZmln
dXJhYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gdGFyZ2V0LT5pc0V4dGVuc2libGUoZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBp
ZiAoIWlzRXh0ZW5zaWJsZSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIldoZW4gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgcmV0dXJucyB1bmRl
ZmluZWQsIHRoZSAndGFyZ2V0JyBvZiBhIFByb3h5IHNob3VsZCBiZSBleHRlbnNpYmxlIl9zKTsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJXaGVuICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIHJldHVybnMgdW5kZWZpbmVkLCB0aGUgJ3RhcmdldCcg
b2YgYSBQcm94eSBzaG91bGQgYmUgZXh0ZW5zaWJsZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCkBAIC0yNjAsMTcgKzI2MCwxNyBAQCBib29sIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZQogICAgICAgICB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLCBpc1RhcmdldFByb3Bl
cnR5RGVzY3JpcHRvckRlZmluZWQsIHRhcmdldFByb3BlcnR5RGVzY3JpcHRvciwgdGhyb3dFeGNl
cHRpb24pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAo
IXZhbGlkKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZXN1bHQgZnJvbSAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBmYWlscyB0aGUgSXNDb21wYXRp
YmxlUHJvcGVydHlEZXNjcmlwdG9yIHRlc3QiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRv
cicgZmFpbHMgdGhlIElzQ29tcGF0aWJsZVByb3BlcnR5RGVzY3JpcHRvciB0ZXN0Il9zdHIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCF0cmFwUmVzdWx0QXNEZXNj
cmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgIGlmICghaXNUYXJnZXRQcm9wZXJ0eURl
c2NyaXB0b3JEZWZpbmVkIHx8IHRhcmdldFByb3BlcnR5RGVzY3JpcHRvci5jb25maWd1cmFibGUo
KSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJl
c3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1
cmFibGUgd2hlbiB0aGUgJ3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0
eSBvciBpZiBpdCBpcyBhIGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciX3Mp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlc3Vs
dCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFi
bGUgd2hlbiB0aGUgJ3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBv
ciBpZiBpdCBpcyBhIGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciX3N0cik7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRyYXBS
ZXN1bHRBc0Rlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgIXRyYXBSZXN1bHRBc0Rlc2Ny
aXB0b3Iud3JpdGFibGUoKSAmJiB0YXJnZXRQcm9wZXJ0eURlc2NyaXB0b3Iud3JpdGFibGUoKSkg
ewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlc3Vs
dCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFi
bGUgYW5kIG5vbi13cml0YWJsZSB3aGVuIHRoZSB0YXJnZXQncyBwcm9wZXJ0eSBpcyB3cml0YWJs
ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FuJ3QgYmUgbm9uLWNvbmZp
Z3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIHdy
aXRhYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKIAogICAgIEpTT2Jq
ZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGhhc01ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhv
ZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsICInaGFzJyBw
cm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAg
IEpTVmFsdWUgaGFzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2Fs
bERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPmhhcywgIidoYXMnIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKGhhc01ldGhvZC5pc1VuZGVmaW5lZCgpKQogICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1EZWZhdWx0SGFzUHJvcGVydHko
KSk7CkBAIC0zMzYsMTMgKzMzNiwxMyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJv
cGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKGlzUHJvcGVy
dHlEZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3Igbm9uLWNvbmZpZ3Vy
YWJsZSBwcm9wZXJ0aWVzIl9zKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUHJveHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUnIGZvciBub24t
Y29uZmlndXJhYmxlIHByb3BlcnRpZXMiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0YXJn
ZXQtPmlzRXh0ZW5zaWJsZShnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgaWYgKCFpc0V4dGVuc2libGUpIHsK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJv
eHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUnIGZvciBhIG5vbi1leHRlbnNpYmxlICd0YXJnZXQn
IG9iamVjdCB3aXRoIGEgY29uZmlndXJhYmxlIHByb3BlcnR5Il9zKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgJ2hhcycgbXVzdCBy
ZXR1cm4gJ3RydWUnIGZvciBhIG5vbi1leHRlbnNpYmxlICd0YXJnZXQnIG9iamVjdCB3aXRoIGEg
Y29uZmlndXJhYmxlIHByb3BlcnR5Il9zdHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDE5LDcgKzQxOSw3IEBAIGJvb2wgUHJv
eHlPYmplY3Q6OnBlcmZvcm1QdXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwdXRWYWx1ZSwgSlNWCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVj
dCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBz
ZXRNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgdm0u
cHJvcGVydHlOYW1lcy0+c2V0LCAiJ3NldCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIg
c2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIHNldE1ldGhvZCA9IGhhbmRsZXIt
PmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQs
ICInc2V0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUi
X3N0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIEpTT2Jq
ZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKICAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZp
bmVkKCkpCkBAIC00NDksMTEgKzQ0OSwxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVgogICAg
ICAgICAgICAgYm9vbCBpc1NhbWUgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBkZXNjcmlwdG9y
LnZhbHVlKCksIHB1dFZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgICAgIGlmICghaXNTYW1lKSB7Ci0gICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnc2V0
JyBvbiBhIG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFy
Z2V0JyBzaG91bGQgZWl0aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJl
YWR5IG9uIHRoZSAndGFyZ2V0JyJfcyk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnc2V0JyBvbiBhIG5vbi1jb25m
aWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFyZ2V0JyBzaG91bGQgZWl0
aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJlYWR5IG9uIHRoZSAndGFy
Z2V0JyJfc3RyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYm
ICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3Iuc2V0dGVyKCkuaXNVbmRl
ZmluZWQoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlByb3h5IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJhYmxlIGFj
Y2Vzc29yIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZSJfcyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkg
aGFuZGxlcidzICdzZXQnIG1ldGhvZCBvbiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNzb3IgcHJv
cGVydHkgd2l0aG91dCBhIHNldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNTEyLDcgKzUxMiw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihwZXJmb3JtUHJveHlDYWxsLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2Fz
dDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
SlNWYWx1ZSBhcHBseU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNh
bGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9m
IGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBh
cHBseU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBt
YWtlSWRlbnRpZmllcih2bSwgImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gcHJv
eHktPnRhcmdldCgpOwogICAgIGlmIChhcHBseU1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CkBAIC01
NTksNyArNTU5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHBlcmZvcm1Qcm94eUNvbnN0
cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKIAogICAgIEpTT2JqZWN0KiBo
YW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICBKU1ZhbHVlIGNvbnN0cnVjdE1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhv
ZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImNvbnN0cnVjdCIp
LCAiJ2NvbnN0cnVjdCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNh
bGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGNvbnN0cnVjdE1ldGhvZCA9IGhhbmRsZXItPmdldE1l
dGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImNvbnN0cnVj
dCIpLCAiJ2NvbnN0cnVjdCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJl
IGNhbGxhYmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBwcm94eS0+dGFyZ2V0KCk7CiAgICAg
aWYgKGNvbnN0cnVjdE1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CkBAIC01NzgsNyArNTc4LDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHBlcmZvcm1Qcm94eUNvbnN0cnVjdCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZ2xvYmFs
T2JqZWN0LCBjb25zdHJ1Y3RNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlm
ICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVj
dCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVzdWx0IGZyb20gUHJveHkgaGFuZGxl
cidzICdjb25zdHJ1Y3QnIG1ldGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0Il9zdHIpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtNjE2LDcgKzYxNiw3IEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxK
U09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNW
YWx1ZSBkZWxldGVQcm9wZXJ0eU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmpl
Y3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImRlbGV0ZVByb3BlcnR5IiksICInZGVs
ZXRlUHJvcGVydHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxs
YWJsZSJfcyk7CisgICAgSlNWYWx1ZSBkZWxldGVQcm9wZXJ0eU1ldGhvZCA9IGhhbmRsZXItPmdl
dE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImRlbGV0
ZVByb3BlcnR5IiksICInZGVsZXRlUHJvcGVydHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5k
bGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwogICAg
IGlmIChkZWxldGVQcm9wZXJ0eU1ldGhvZC5pc1VuZGVmaW5lZCgpKQpAQCAtNjQwLDEzICs2NDAs
MTMgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSB8fCAhcmVzdWx0KTsKICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgIGlm
ICghZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHkn
IG1ldGhvZCBzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlz
IG5vdCBjb25maWd1cmFibGUiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1ldGhvZCBz
aG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vdCBjb25m
aWd1cmFibGUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgYm9vbCB0YXJnZXRJc0V4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShnbG9i
YWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgICAgIGlmICghdGFyZ2V0SXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidzICdkZWxldGVQcm9wZXJ0
eScgbWV0aG9kIHNob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgdGFyZ2V0IGhhcyBwcm9wZXJ0
eSBhbmQgaXMgbm90IGV4dGVuc2libGUiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1l
dGhvZCBzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCBoYXMgcHJvcGVydHkgYW5k
IGlzIG5vdCBleHRlbnNpYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNjk3LDcgKzY5Nyw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZv
cm1QcmV2ZW50RXh0ZW5zaW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAg
SlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTVmFsdWUgcHJldmVudEV4dGVuc2lvbnNNZXRob2Qg
PSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZp
ZXIodm0sICJwcmV2ZW50RXh0ZW5zaW9ucyIpLCAiJ3ByZXZlbnRFeHRlbnNpb25zJyBwcm9wZXJ0
eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFs
dWUgcHJldmVudEV4dGVuc2lvbnNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJwcmV2ZW50RXh0ZW5zaW9ucyIpLCAi
J3ByZXZlbnRFeHRlbnNpb25zJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQg
YmUgY2FsbGFibGUiX3N0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKICAgICBpZiAocHJldmVu
dEV4dGVuc2lvbnNNZXRob2QuaXNVbmRlZmluZWQoKSkKQEAgLTcxNiw3ICs3MTYsNyBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICAgICAgYm9vbCB0YXJnZXRJc0V4dGVuc2libGUgPSB0YXJnZXQtPmlz
RXh0ZW5zaWJsZShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICh0YXJnZXRJc0V4dGVuc2libGUpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdwcmV2ZW50
RXh0ZW5zaW9ucycgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0YXJnZXQgaXMg
ZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiX3MpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ3ByZXZlbnRF
eHRlbnNpb25zJyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91Z2ggaXRzIHRhcmdldCBpcyBl
eHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSJfc3RyKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTc0OCw3ICs3NDgsNyBAQCBi
b29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhh
bmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBpc0V4dGVu
c2libGVNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwg
bWFrZUlkZW50aWZpZXIodm0sICJpc0V4dGVuc2libGUiKSwgIidpc0V4dGVuc2libGUnIHByb3Bl
cnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNW
YWx1ZSBpc0V4dGVuc2libGVNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0
LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJpc0V4dGVuc2libGUiKSwgIidpc0V4dGVu
c2libGUnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJf
c3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBKU09i
amVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CkBAIC03NzAsMTEgKzc3MCwxMSBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgaWYgKHRyYXBSZXN1bHRBc0Jvb2wgIT0gaXNUYXJnZXRFeHRlbnNpYmxlKSB7
CiAgICAgICAgIGlmIChpc1RhcmdldEV4dGVuc2libGUpIHsKICAgICAgICAgICAgIEFTU0VSVCgh
dHJhcFJlc3VsdEFzQm9vbCk7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCBm
YWxzZSB3aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJu
ZWQgdHJ1ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCBmYWxzZSB3
aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgdHJ1
ZSJfc3RyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNUYXJnZXRF
eHRlbnNpYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCh0cmFwUmVzdWx0QXNCb29sKTsKLSAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBvYmplY3Qn
cyAnaXNFeHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiB0aGUgdGFyZ2V0IGlzIG5v
bi1leHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSJfcyk7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgb2JqZWN0J3Mg
J2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCB0cnVlIHdoZW4gdGhlIHRhcmdldCBpcyBub24t
ZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiX3N0cik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkBAIC04MTMsNyArODEzLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybURlZmluZU93blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnQKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZh
bHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGRlZmluZVByb3BlcnR5
TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnBy
b3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LCAiJ2RlZmluZVByb3BlcnR5JyBwcm9wZXJ0eSBv
ZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUg
ZGVmaW5lUHJvcGVydHlNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBj
YWxsRGF0YSwgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksICInZGVmaW5lUHJvcGVy
dHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3Ry
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBpZiAoZGVm
aW5lUHJvcGVydHlNZXRob2QuaXNVbmRlZmluZWQoKSkKQEAgLTg1MCwxMSArODUwLDExIEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAKICAgICBpZiAoIWlzVGFyZ2V0RGVzY3JpcHRvckRlZmlu
ZWQpIHsKICAgICAgICAgaWYgKCF0YXJnZXRJc0V4dGVuc2libGUpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0
eScgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRv
ciBvZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0
IGlzIG5vbi1leHRlbnNpYmxlIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0
cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBvZiB0aGUgUHJveHkncyB0
YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0IGlzIG5vbi1leHRlbnNpYmxl
Il9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlm
IChzZXR0aW5nQ29uZmlndXJhYmxlVG9GYWxzZSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIHJl
dHVybmVkIHRydWUgZm9yIGEgbm9uLWNvbmZpZ3VyYWJsZSBmaWVsZCBldmVuIHRob3VnaCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVkIHVuZGVm
aW5lZCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBub24t
Y29uZmlndXJhYmxlIGZpZWxkIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBv
ZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIl9zdHIpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTg2OCwxNiArODY4LDE2IEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0CiAgICAgYm9vbCBpc0NvbXBhdGlibGVEZXNjcmlwdG9yID0gdmFs
aWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWxPYmplY3QsIG51bGxwdHIsIHBy
b3BlcnR5TmFtZSwgdGFyZ2V0SXNFeHRlbnNpYmxlLCBkZXNjcmlwdG9yLCBpc0N1cnJlbnREZWZp
bmVkLCBjdXJyZW50LCB0aHJvd0V4Y2VwdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOyAgICAKICAgICBpZiAoIWlzQ29tcGF0aWJsZURlc2NyaXB0b3IpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ2RlZmlu
ZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5lIGEgcHJvcGVydHkgb24gaXRzIHRhcmdldCB0
aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdHJhcCdzIGlucHV0IGRlc2NyaXB0b3IiX3MpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkncyAnZGVm
aW5lUHJvcGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0
IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciJfc3Ry
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoc2V0dGluZ0NvbmZpZ3Vy
YWJsZVRvRmFsc2UgJiYgdGFyZ2V0RGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkncyAnZGVmaW5lUHJv
cGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IG9u
IGl0cyB0YXJnZXQgZXZlbiB0aG91Z2ggdGhlIGlucHV0IGRlc2NyaXB0b3IgdG8gdGhlIHRyYXAg
c2FpZCBpdCBtdXN0IGRvIHNvIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5l
IGEgbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IGV2ZW4gdGhvdWdoIHRo
ZSBpbnB1dCBkZXNjcmlwdG9yIHRvIHRoZSB0cmFwIHNhaWQgaXQgbXVzdCBkbyBzbyJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAodGFyZ2V0RGVzY3JpcHRvci5p
c0RhdGFEZXNjcmlwdG9yKCkgJiYgIXRhcmdldERlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYg
dGFyZ2V0RGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLndy
aXRhYmxlUHJlc2VudCgpICYmICFkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKLSAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9w
ZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZvciBhIG5vbi13cml0YWJsZSBpbnB1dCBkZXNjcmlw
dG9yIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vbi1jb25maWd1cmFibGUgYW5kIHdy
aXRhYmxlIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZvciBhIG5v
bi13cml0YWJsZSBpbnB1dCBkZXNjcmlwdG9yIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlz
IG5vbi1jb25maWd1cmFibGUgYW5kIHdyaXRhYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtOTA5LDcgKzkwOSw3IEBAIHZvaWQgUHJveHlP
YmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+
KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBvd25L
ZXlzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1h
a2VJZGVudGlmaWVyKHZtLCAib3duS2V5cyIpLCAiJ293bktleXMnIHByb3BlcnR5IG9mIGEgUHJv
eHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBvd25LZXlz
TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJ
ZGVudGlmaWVyKHZtLCAib3duS2V5cyIpLCAiJ293bktleXMnIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQo
KTsKICAgICBpZiAob3duS2V5c01ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CkBAIC05MjUsMTQgKzky
NSwxNCBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlOYW1lcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAKICAgICBpZiAoIXRyYXBSZXN1bHQuaXNPYmplY3QoKSkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidz
ICdvd25LZXlzJyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5
cycgbWV0aG9kIG11c3QgcmV0dXJuIGFuIG9iamVjdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIEhhc2hTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqPiB1bmNoZWNrZWRSZXN1bHRL
ZXlzOwogICAgIGZvckVhY2hJbkFycmF5TGlrZShnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHRyYXBS
ZXN1bHQpLCBbJl0gKEpTVmFsdWUgdmFsdWUpIC0+IGJvb2wgewogICAgICAgICBpZiAoIXZhbHVl
LmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1l
dGhvZCBtdXN0IHJldHVybiBhbiBhcnJheS1saWtlIG9iamVjdCBjb250YWluaW5nIG9ubHkgU3Ry
aW5ncyBhbmQgU3ltYm9scyJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidzICdvd25LZXlzJyBtZXRob2QgbXVzdCByZXR1
cm4gYW4gYXJyYXktbGlrZSBvYmplY3QgY29udGFpbmluZyBvbmx5IFN0cmluZ3MgYW5kIFN5bWJv
bHMiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtOTQw
LDcgKzk0MCw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgICAgICBpZiAoIXVuY2hlY2tlZFJlc3VsdEtl
eXMuYWRkKGlkZW50LmltcGwoKSkuaXNOZXdFbnRyeSkgewotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycgdHJh
cCByZXN1bHQgbXVzdCBub3QgY29udGFpbiBhbnkgZHVwbGljYXRlIG5hbWVzIl9zKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVy
J3MgJ293bktleXMnIHRyYXAgcmVzdWx0IG11c3Qgbm90IGNvbnRhaW4gYW55IGR1cGxpY2F0ZSBu
YW1lcyJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC05
ODMsNyArOTgzLDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFt
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGUKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICh1bmNoZWNrZWRSZXN1bHRLZXlzLnNpemUoKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycg
bWV0aG9kIHJldHVybmVkIGEga2V5IHRoYXQgd2FzIG5vdCBwcmVzZW50IGluIGl0cyBub24tZXh0
ZW5zaWJsZSB0YXJnZXQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycgbWV0aG9kIHJldHVybmVkIGEg
a2V5IHRoYXQgd2FzIG5vdCBwcmVzZW50IGluIGl0cyBub24tZXh0ZW5zaWJsZSB0YXJnZXQiX3N0
cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDQwLDcgKzEw
NDAsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdAogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIg
PSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgIEpTVmFsdWUgc2V0UHJvdG90eXBlT2ZNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2Qo
Z2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJzZXRQcm90b3R5cGVP
ZiIpLCAiJ3NldFByb3RvdHlwZU9mJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91
bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgc2V0UHJvdG90eXBlT2ZNZXRob2QgPSBo
YW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIo
dm0sICJzZXRQcm90b3R5cGVPZiIpLCAiJ3NldFByb3RvdHlwZU9mJyBwcm9wZXJ0eSBvZiBhIFBy
b3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3N0cik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRh
cmdldCgpOwpAQCAtMTA1OSw3ICsxMDU5LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNl
dFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3QKICAg
ICAKICAgICBpZiAoIXRyYXBSZXN1bHRBc0Jvb2wpIHsKICAgICAgICAgaWYgKHNob3VsZFRocm93
SWZDYW50U2V0KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlByb3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBpdCBj
b3VsZCBub3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4cGVj
dGVkIHRvIHN1Y2NlZWQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNh
dGluZyBpdCBjb3VsZCBub3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24g
d2FzIGV4cGVjdGVkIHRvIHN1Y2NlZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTEwNzMsNyArMTA3Myw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQ
cm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90CiAgICAg
Ym9vbCBpc1NhbWUgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIHRhcmdldFBy
b3RvdHlwZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlm
ICghaXNTYW1lKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJQcm94eSAnc2V0UHJvdG90eXBlT2YnIHRyYXAgcmV0dXJuZWQgdHJ1ZSB3aGVuIGl0cyB0YXJn
ZXQgaXMgbm9uLWV4dGVuc2libGUgYW5kIHRoZSBuZXcgcHJvdG90eXBlIHZhbHVlIGlzIG5vdCB0
aGUgc2FtZSBhcyB0aGUgY3VycmVudCBwcm90b3R5cGUgdmFsdWUuIEl0IHNob3VsZCBoYXZlIHJl
dHVybmVkIGZhbHNlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlByb3h5ICdzZXRQcm90b3R5cGVPZicgdHJhcCByZXR1cm5lZCB0cnVlIHdoZW4gaXRz
IHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSBhbmQgdGhlIG5ldyBwcm90b3R5cGUgdmFsdWUgaXMg
bm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHByb3RvdHlwZSB2YWx1ZS4gSXQgc2hvdWxkIGhh
dmUgcmV0dXJuZWQgZmFsc2UiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTExMDQsNyArMTEwNCw3IEBAIEpTVmFsdWUgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90
b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTT2JqZWN0KiBoYW5k
bGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBKU1ZhbHVlIGdldFByb3RvdHlwZU9mTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0
aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAiZ2V0UHJvdG90
eXBlT2YiKSwgIidnZXRQcm90b3R5cGVPZicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIg
c2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGdldFByb3RvdHlwZU9mTWV0aG9k
ID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlm
aWVyKHZtLCAiZ2V0UHJvdG90eXBlT2YiKSwgIidnZXRQcm90b3R5cGVPZicgcHJvcGVydHkgb2Yg
YSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zdHIpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+
dGFyZ2V0KCk7CkBAIC0xMTE4LDcgKzExMTgsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJm
b3JtR2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc09iamVj
dCgpICYmICF0cmFwUmVzdWx0LmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ2dldFByb3RvdHlwZU9mJyB0cmFw
IHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsIl9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZ2V0UHJv
dG90eXBlT2YnIHRyYXAgc2hvdWxkIGVpdGhlciByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwiX3N0
cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBK
U1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgYm9vbCBpc1NhbWUgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCB0
YXJnZXRQcm90b3R5cGUsIHRyYXBSZXN1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgaWYgKCFpc1NhbWUpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIGZvciBhIG5v
bi1leHRlbnNpYmxlIHRhcmdldCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0
YXJnZXQncyBwcm90b3R5cGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiUHJveHkncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgZm9yIGEgbm9uLWV4dGVu
c2libGUgdGFyZ2V0IHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHRhcmdldCdz
IHByb3RvdHlwZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggMDg3Mzdk
YWE3NTYyMzdmNmNhMmUwOWRjOGMxYWQ3NWQxZGI4YzUxNi4uYmE4MDM1MjI3OTcyMmM0NzgyOWQ5
Y2FlMDZmNjcyODVlYjVkZWUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAKQEAgLTkyLDIzICs5MiwyMyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04ocmVmbGVjdE9iamVjdENvbnN0cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAg
ICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3Qg
cmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiX3MpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEg
Y29uc3RydWN0b3IiX3N0cikpOwogCiAgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3Ry
dWN0RGF0YSh2bSwgdGFyZ2V0KTsKICAgICBpZiAoY29uc3RydWN0RGF0YS50eXBlID09IENhbGxE
YXRhOjpUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0
aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZs
ZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3Rv
ciJfc3RyKSk7CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IHRhcmdldDsKICAgICBpZiAoY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAgICBuZXdUYXJnZXQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDIpOwogICAgICAgICBpZiAoIW5ld1RhcmdldC5pc0NvbnN0cnVjdG9y
KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSB0aGly
ZCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIGlmIHByZXNlbnQiX3MpKTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSB0aGlyZCBhcmd1bWVudCBiZSBhIGNv
bnN0cnVjdG9yIGlmIHByZXNlbnQiX3N0cikpOwogICAgIH0KIAogICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3VtZW50czsKICAgICBKU09iamVjdCogYXJndW1lbnRzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBpZiAo
IWFyZ3VtZW50c09iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMg
dGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVj
dC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3N0
cikpOwogCiAgICAgZm9yRWFjaEluQXJyYXlMaWtlKGdsb2JhbE9iamVjdCwgYXJndW1lbnRzT2Jq
ZWN0LCBbJl0gKEpTVmFsdWUgdmFsdWUpIC0+IGJvb2wgewogICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKHZhbHVlKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
cmVmbGVjdE9iamVjdERlZmluZVByb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagog
CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICgh
dGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3QuZGVmaW5lUHJvcGVydHkgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZWZsZWN0LmRlZmluZVByb3BlcnR5IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBv
YmplY3QiX3N0cikpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04ocmVmbGVjdE9iamVjdEdldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcgogCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3Qu
Z2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUmVmbGVjdC5nZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVj
dCJfc3RyKSk7CiAKICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTc4LDcgKzE3OCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zdHIp
KTsKIAogICAgIGF1dG8ga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkBAIC0xOTQsNyArMTk0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJl
ZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRh
cmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVp
cmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVm
bGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2Jq
ZWN0Il9zdHIpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShhc09iamVjdCh0YXJnZXQpLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpKTsKIH0K
IApAQCAtMjA2LDcgKzIwNiw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2Jq
ZWN0SXNFeHRlbnNpYmxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKICAgICBKU1Zh
bHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5pc0V4dGVuc2libGUgcmVxdWlyZXMgdGhlIGZp
cnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmlzRXh0
ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zdHIpKTsK
IAogICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxl
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkBAIC0yMjEsNyArMjIxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJl
ZmxlY3RPYmplY3RPd25LZXlzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKIAog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRh
cmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0Lm93
bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfc3RyKSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlL
ZXlzKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1l
TW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUs
IHN0ZDo6bnVsbG9wdCkpKTsKIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihyZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5wcmV2ZW50
RXh0ZW5zaW9ucyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0
IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfc3RyKSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KHRhcmdldCk7CiAgICAgYm9vbCByZXN1bHQgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+cHJldmVudEV4dGVuc2lvbnMob2JqZWN0LCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjQ4LDcgKzI0OCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2JqZWN0U2V0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVmbGVjdC5zZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUg
YW4gb2JqZWN0Il9zdHIpKTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0gYXNPYmplY3Qo
dGFyZ2V0KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNzIsMTAgKzI3MiwxMCBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04ocmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxl
Y3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVj
dCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3N0cikpOwogICAgIEpTVmFsdWUgcHJvdG8gPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJv
dG8uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMg
dGhlIHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIG51bGwiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3Vt
ZW50IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgbnVsbCJfc3RyKSk7CiAKICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5jcHAKaW5kZXggNDQ5MDlkMTY5NGJjNTVjNzViMjc3Y2M1MTYwMDAwMjg0YjRhZDMy
Zi4uYzk0MTAxNzY1MzIwNDRlZmVlMTk4ZDZlOTljNzA3N2M3NmY4YWY1YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC01MTQsNyArNTE0LDcgQEAgc3RhdGlj
IGlubGluZSBTdHJpbmcgZXNjYXBlUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGNvbnN0
IENoYXJhY3RlclR5cGUqIGMKICAgICAvLyBzb3VyY2UgY2Fubm90IGV2ZXIgdmFsaWRseSBiZSAi
Ii4gSWYgdGhlIHNvdXJjZSBpcyBlbXB0eSwgcmV0dXJuIGEgZGlmZmVyZW50IFBhdHRlcm4KICAg
ICAvLyB0aGF0IHdvdWxkIG1hdGNoIHRoZSBzYW1lIHRoaW5nLgogICAgIGlmICghbGVuZ3RoKQot
ICAgICAgICByZXR1cm4gIig/OikiX3M7CisgICAgICAgIHJldHVybiAiKD86KSJfc3RyOwogCiAg
ICAgLy8gZWFybHkgcmV0dXJuIGZvciBzdHJpbmdzIHRoYXQgZG9uJ3QgY29udGFpbiBhIGZvcndh
cmRzIHNsYXNoIGFuZCBMaW5lVGVybWluYXRvcgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IGZkNGM5MmIzNDExYzU5ZGViYWE2ZmI4MGJmOTAy
YzE5M2Y4Yzg4Y2EuLmVhNWE2MWU3MjBhMmJkZjA3NGMxMTBiNDk0ODQ1ZWFiNDU0MmVjN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSAhPSBnbG9iYWxP
YmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAuJE4gZ2V0dGVycyByZXF1aXJlIFJlZ0V4
cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLiROIGdldHRlcnMgcmVxdWlyZSBSZWdF
eHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9zdHIpOwogICAgIHVuc2lnbmVkIE4gPSBwcm9wZXJ0
eU5hbWUudWlkKCktPmF0KDEpIC0gJzAnOwogICAgIEFTU0VSVChOID49IDEgJiYgTiA8PSA5KTsK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmpl
Y3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRCYWNrcmVmKGdsb2JhbE9iamVjdCwgTikpKTsKQEAg
LTEwOCw3ICsxMDgsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIocmVnRXhwQ29uc3RydWN0
b3JJbnB1dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBpZiAoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkgIT0gZ2xvYmFsT2JqZWN0LT5y
ZWdFeHBDb25zdHJ1Y3RvcigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLmlucHV0IGdldHRlciByZXF1aXJlcyBSZWdFeHAgY29u
c3RydWN0b3IgYXMgfHRoaXN8Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5pbnB1dCBnZXR0ZXIgcmVxdWlyZXMgUmVnRXhw
IGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfc3RyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmlucHV0KCkpOwogfQogCkBAIC0xMTcs
NyArMTE3LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHJlZ0V4cENvbnN0cnVjdG9yTXVs
dGlsaW5lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSAhPSBnbG9iYWxPYmplY3QtPnJlZ0V4
cENvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJSZWdFeHAubXVsdGlsaW5lIGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25z
dHJ1Y3RvciBhcyB8dGhpc3wiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLm11bHRpbGluZSBnZXR0ZXIgcmVxdWlyZSBSZWdF
eHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9zdHIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLm11bHRpbGluZSgp
KSk7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIocmVn
RXhwQ29uc3RydWN0b3JMYXN0TWF0Y2gsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpICE9IGds
b2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5sYXN0TWF0Y2ggZ2V0dGVyIHJl
cXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAubGFzdE1hdGNoIGdl
dHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3N0cik7CiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdF
eHBHbG9iYWxEYXRhKCkuZ2V0QmFja3JlZihnbG9iYWxPYmplY3QsIDApKSk7CiB9CiAKQEAgLTEz
NSw3ICsxMzUsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIocmVnRXhwQ29uc3RydWN0b3JM
YXN0UGFyZW4sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgaWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpICE9IGdsb2JhbE9iamVjdC0+cmVn
RXhwQ29uc3RydWN0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5sYXN0UGFyZW4gZ2V0dGVyIHJlcXVpcmUgUmVnRXhwIGNv
bnN0cnVjdG9yIGFzIHx0aGlzfCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAubGFzdFBhcmVuIGdldHRlciByZXF1aXJlIFJl
Z0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3N0cik7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCku
Z2V0TGFzdFBhcmVuKGdsb2JhbE9iamVjdCkpKTsKIH0KIApAQCAtMTQ0LDcgKzE0NCw3IEBAIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkgIT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25zdHJ1Y3Rvcigp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVnRXhwLmxlZnRDb250ZXh0IGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8
dGhpc3wiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVnRXhwLmxlZnRDb250ZXh0IGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1
Y3RvciBhcyB8dGhpc3wiX3N0cik7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0TGVmdENvbnRl
eHQoZ2xvYmFsT2JqZWN0KSkpOwogfQogCkBAIC0xNTMsNyArMTUzLDcgQEAgSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKHJlZ0V4cENvbnN0cnVjdG9yUmlnaHRDb250ZXh0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSAhPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAucmln
aHRDb250ZXh0IGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVnRXhwLnJpZ2h0Q29udGV4dCBnZXR0ZXIgcmVxdWlyZSBSZWdFeHAgY29uc3RydWN0b3IgYXMg
fHRoaXN8Il9zdHIpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmdldFJpZ2h0Q29udGV4dChnbG9i
YWxPYmplY3QpKSk7CiB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpICE9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLmlucHV0IHNldHRlcnMgcmVx
dWlyZSBSZWdFeHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5pbnB1dCBzZXR0ZXJzIHJlcXVpcmUg
UmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfc3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICBhdXRvKiBzdHJpbmcgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSAhPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5tdWx0aWxpbmUgc2V0dGVy
cyByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLm11bHRpbGluZSBzZXR0ZXJz
IHJlcXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfc3RyKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICBib29sIG11bHRpbGluZSA9IEpTVmFsdWU6OmRlY29kZSh2
YWx1ZSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5l
IE9wdGlvblNldDxZYXJyOjpGbGFncz4gdG9GbGFncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGZsYWcKICAgICBhdXRvIHJlc3VsdCA9IFlhcnI6OnBhcnNlRmxhZ3MoZmxh
Z3MudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICB0aHJvd1N5bnRheEVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBj
b25zdHJ1Y3Rvci4iX3MpOworICAgICAgICB0aHJvd1N5bnRheEVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iX3N0
cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCA1ODI0YTQyYzNiNmExNTcz
ZjAwMTY1NWE2OTJkNjc5ZmRmYTAwOWY0Li5kMDE0MGNkMWRjMDA2ODVlZjFjNDFlOWE5YmNkNjQz
NTllZDVjMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5jcHAKQEAgLTEzMywxMCArMTMzLDEwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihyZWdFeHBQcm90b0Z1bmNDb21waWxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7
CiAKICAgICBpZiAodGhpc1JlZ0V4cC0+Z2xvYmFsT2JqZWN0KHZtKSAhPSBnbG9iYWxPYmplY3Qp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZWdFeHAucHJvdG90eXBlLmNvbXBpbGUgZnVuY3Rpb24ncyBSZWFsbSBtdXN0IGJlIHRoZSBzYW1l
IHRvIHx0aGlzfCBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5wcm90b3R5cGUuY29tcGlsZSBmdW5j
dGlvbidzIFJlYWxtIG11c3QgYmUgdGhlIHNhbWUgdG8gfHRoaXN8IFJlZ0V4cCBvYmplY3QiX3N0
cik7CiAKICAgICBpZiAoIXRoaXNSZWdFeHAtPmFyZUxlZ2FjeUZlYXR1cmVzRW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAifHRo
aXN8IFJlZ0V4cCBvYmplY3QncyBsZWdhY3kgZmVhdHVyZXMgYXJlIG5vdCBlbmFibGVkIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInx0
aGlzfCBSZWdFeHAgb2JqZWN0J3MgbGVnYWN5IGZlYXR1cmVzIGFyZSBub3QgZW5hYmxlZCJfc3Ry
KTsKIAogICAgIFJlZ0V4cCogcmVnRXhwOwogICAgIEpTVmFsdWUgYXJnMCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIAogICAgIGlmIChhdXRvKiByZWdFeHBPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9i
amVjdCo+KHZtLCBhcmcwKSkgewogICAgICAgICBpZiAoIWFyZzEuaXNVbmRlZmluZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJD
YW5ub3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90
aGVyLiJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVn
RXhwIGZyb20gYW5vdGhlci4iX3N0cik7CiAgICAgICAgIHJlZ0V4cCA9IHJlZ0V4cE9iamVjdC0+
cmVnRXhwKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlz
VW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1dURlN0cmluZyhnbG9iYWxPYmpl
Y3QpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQ
cm90b0Z1bmNDb21waWxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAg
YXV0byBmbGFncyA9IGFyZzEuaXNVbmRlZmluZWQoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChPcHRp
b25TZXQ8WWFycjo6RmxhZ3M+IHsgfSkgOiBZYXJyOjpwYXJzZUZsYWdzKGFyZzEudG9XVEZTdHJp
bmcoZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIWZsYWdzKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9i
YWxPYmplY3QsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4i
X3MpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBmbGFncyBzdXBwbGll
ZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIl9zdHIpKTsKIAogICAgICAgICByZWdFeHAgPSBSZWdF
eHA6OmNyZWF0ZSh2bSwgcGF0dGVybiwgZmxhZ3MudmFsdWUoKSk7CiAgICAgfQpAQCAtMjI5LDcg
KzIyOSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlckdsb2Jh
bCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgaWYgKFVOTElLRUxZKCFyZWdl
eHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUgPT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBQcm90
b3R5cGUoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUaGUgUmVnRXhwLnByb3RvdHlwZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBv
biBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zdHIpOwogICAgIH0KIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPmdsb2Jh
bCgpKSk7CkBAIC0yNDUsNyArMjQ1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4
cFByb3RvR2V0dGVySGFzSW5kaWNlcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBp
ZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZSA9PSBnbG9iYWxP
YmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmhhc0luZGljZXMgZ2V0dGVy
IGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90
b3R5cGUuaGFzSW5kaWNlcyBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCJfc3RyKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihyZWdleHAtPnJlZ0V4cCgpLT5oYXNJbmRpY2VzKCkpKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgewogICAg
ICAgICBpZiAodGhpc1ZhbHVlID09IGdsb2JhbE9iamVjdC0+cmVnRXhwUHJvdG90eXBlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4
cC5wcm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVn
RXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBjYW4g
b25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zdHIpOwogICAgIH0KIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPmlnbm9yZUNh
c2UoKSkpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdF
eHBQcm90b0dldHRlck11bHRpbGluZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAg
aWYgKFVOTElLRUxZKCFyZWdleHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUgPT0gZ2xvYmFs
T2JqZWN0LT5yZWdFeHBQcm90b3R5cGUoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVy
IGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90
b3R5cGUubXVsdGlsaW5lIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2Jq
ZWN0Il9zdHIpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHJlZ2V4cC0+cmVnRXhwKCktPm11bHRpbGluZSgpKSk7CkBAIC0yOTMsNyArMjkzLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyRG90QWxsLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAg
ICAgaWYgKHRoaXNWYWx1ZSA9PSBnbG9iYWxPYmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAu
cHJvdG90eXBlLmRvdEFsbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5kb3RBbGwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNh
bGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3N0cik7CiAgICAgfQogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPmRvdEFsbCgpKSk7CkBA
IC0zMDksNyArMzA5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0
dGVyU3RpY2t5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBpZiAoVU5MSUtF
TFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZSA9PSBnbG9iYWxPYmplY3QtPnJl
Z0V4cFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnN0aWNreSBnZXR0ZXIgY2FuIG9ubHkgYmUg
Y2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3N0cik7CiAgICAg
fQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVn
RXhwKCktPnN0aWNreSgpKSk7CkBAIC0zMjUsNyArMzI1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1
ZSA9PSBnbG9iYWxPYmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnVuaWNv
ZGUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJl
Z0V4cC5wcm90b3R5cGUudW5pY29kZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVn
RXhwIG9iamVjdCJfc3RyKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+dW5pY29kZSgpKSk7CkBAIC0zMzgsNyArMzM4
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlzT2Jq
ZWN0KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxl
ZCBvbiBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBv
bmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QiX3N0cik7CiAKICAgICBhdXRvIGZsYWdzID0gZmxh
Z3NTdHJpbmcoZ2xvYmFsT2JqZWN0LCBhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTM1NSw4ICszNTUsOCBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nh
c3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdl
eHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUgPT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBQcm90
b3R5cGUoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFs
U3RyaW5nKHZtLCAiKD86KSJfcykpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiKD86KSJfc3RyKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
aGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBh
IFJlZ0V4cCBvYmplY3QiX3N0cik7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1N0cmluZyh2bSwgcmVnZXhwLT5yZWdFeHAoKS0+ZXNjYXBlZFBhdHRlcm4oKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZVR5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZVR5cGUuY3BwCmluZGV4IDM3MTk0
NzNiNDNiYTdlNDZjZjhiMDFhMjBjZGI4Zjk3MTFkMjI0MmMuLjhiYTYyZTVkNjRkNzg3MjdkZTM4
OWE1OWQ4ODlhYTVjMzY0Y2ZkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1J1bnRpbWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SdW50aW1lVHlwZS5jcHAKQEAgLTY0LDI3ICs2NCwyNyBAQCBSdW50aW1lVHlwZSBydW50aW1l
VHlwZUZvclZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIFN0cmluZyBydW50aW1lVHlwZUFz
U3RyaW5nKFJ1bnRpbWVUeXBlIHR5cGUpCiB7CiAgICAgaWYgKHR5cGUgPT0gVHlwZVVuZGVmaW5l
ZCkKLSAgICAgICAgcmV0dXJuICJVbmRlZmluZWQiX3M7CisgICAgICAgIHJldHVybiAiVW5kZWZp
bmVkIl9zdHI7CiAgICAgaWYgKHR5cGUgPT0gVHlwZU51bGwpCi0gICAgICAgIHJldHVybiAiTnVs
bCJfczsKKyAgICAgICAgcmV0dXJuICJOdWxsIl9zdHI7CiAgICAgaWYgKHR5cGUgPT0gVHlwZUFu
eUludCkKLSAgICAgICAgcmV0dXJuICJJbnRlZ2VyIl9zOworICAgICAgICByZXR1cm4gIkludGVn
ZXIiX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlTnVtYmVyKQotICAgICAgICByZXR1cm4gIk51
bWJlciJfczsKKyAgICAgICAgcmV0dXJuICJOdW1iZXIiX3N0cjsKICAgICBpZiAodHlwZSA9PSBU
eXBlU3RyaW5nKQotICAgICAgICByZXR1cm4gIlN0cmluZyJfczsKKyAgICAgICAgcmV0dXJuICJT
dHJpbmciX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlT2JqZWN0KQotICAgICAgICByZXR1cm4g
Ik9iamVjdCJfczsKKyAgICAgICAgcmV0dXJuICJPYmplY3QiX3N0cjsKICAgICBpZiAodHlwZSA9
PSBUeXBlQm9vbGVhbikKLSAgICAgICAgcmV0dXJuICJCb29sZWFuIl9zOworICAgICAgICByZXR1
cm4gIkJvb2xlYW4iX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlRnVuY3Rpb24pCi0gICAgICAg
IHJldHVybiAiRnVuY3Rpb24iX3M7CisgICAgICAgIHJldHVybiAiRnVuY3Rpb24iX3N0cjsKICAg
ICBpZiAodHlwZSA9PSBUeXBlU3ltYm9sKQotICAgICAgICByZXR1cm4gIlN5bWJvbCJfczsKKyAg
ICAgICAgcmV0dXJuICJTeW1ib2wiX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlQmlnSW50KQot
ICAgICAgICByZXR1cm4gIkJpZ0ludCJfczsKKyAgICAgICAgcmV0dXJuICJCaWdJbnQiX3N0cjsK
ICAgICBpZiAodHlwZSA9PSBUeXBlTm90aGluZykKLSAgICAgICAgcmV0dXJuICIoTm90aGluZyki
X3M7CisgICAgICAgIHJldHVybiAiKE5vdGhpbmcpIl9zdHI7CiAKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAppbmRleCBkOTMx
MWMyZmM2MjU0NzJmZTZmNmUyNmVkODIyMzhlN2Q0ZDFmODYwLi5iNTNiZjI2MTM3MDIyMWQ1Mzk4
YTU1ZmUyY2RhYTg2NTFiYmEyNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtODIwLDIzICs4MjAsMjMgQEAgU3RyaW5n
IFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6OmRpc3BsYXlOYW1lKFZNJiB2bSkKICAgICAg
ICAgICAgIFdURjo6ZGF0YUxvZygiY291bGRuJ3QgZ2V0IGEgbmFtZSIpOwogICAgICAgICB9CiAj
ZW5kaWYKLSAgICAgICAgcmV0dXJuICIodW5rbm93biBDIFBDKSJfczsKKyAgICAgICAgcmV0dXJu
ICIodW5rbm93biBDIFBDKSJfc3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6OlVua25vd246Ci0g
ICAgICAgIHJldHVybiAiKHVua25vd24pIl9zOworICAgICAgICByZXR1cm4gIih1bmtub3duKSJf
c3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6Okhvc3Q6Ci0gICAgICAgIHJldHVybiAiKGhvc3Qp
Il9zOworICAgICAgICByZXR1cm4gIihob3N0KSJfc3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6
OlJlZ0V4cDoKLSAgICAgICAgcmV0dXJuICIocmVnZXhwKSJfczsKKyAgICAgICAgcmV0dXJuICIo
cmVnZXhwKSJfc3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6Oldhc206CiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICBpZiAod2FzbUluZGV4T3JOYW1lKQogICAgICAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcod2FzbUluZGV4T3JOYW1lLnZhbHVlKCkpOwogI2VuZGlmCi0gICAgICAg
IHJldHVybiAiKHdhc20pIl9zOworICAgICAgICByZXR1cm4gIih3YXNtKSJfc3RyOwogCiAgICAg
Y2FzZSBGcmFtZVR5cGU6OkV4ZWN1dGFibGU6CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0hv
c3RGdW5jdGlvbigpKQpAQCAtODQ1LDkgKzg0NSw5IEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVy
OjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZShWTSYgdm0pCiAgICAgICAgIGlmIChleGVjdXRhYmxl
LT5pc0Z1bmN0aW9uRXhlY3V0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5lY21hTmFtZSgpLnN0cmluZygpOwog
ICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNQcm9ncmFtRXhlY3V0YWJsZSgpIHx8IGV4ZWN1dGFi
bGUtPmlzRXZhbEV4ZWN1dGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiAiKHByb2dyYW0pIl9z
OworICAgICAgICAgICAgcmV0dXJuICIocHJvZ3JhbSkiX3N0cjsKICAgICAgICAgaWYgKGV4ZWN1
dGFibGUtPmlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiAi
KG1vZHVsZSkiX3M7CisgICAgICAgICAgICByZXR1cm4gIihtb2R1bGUpIl9zdHI7CiAKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwpAQCAtMTE1OCwxNyArMTE1OCwxNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRv
cEJ5dGVjb2RlcyhQcmludFN0cmVhbSYgb3V0KQogICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+
IGJ5dGVjb2RlQ291bnRzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IHRpZXJDb3VudHM7
CiAKLSAgICBTdHJpbmcgbGxpbnQgPSAiTExJbnQiX3M7Ci0gICAgU3RyaW5nIGJhc2VsaW5lID0g
IkJhc2VsaW5lIl9zOwotICAgIFN0cmluZyBkZmcgPSAiREZHIl9zOwotICAgIFN0cmluZyBmdGwg
PSAiRlRMIl9zOwotICAgIFN0cmluZyBidWlsdGluID0gImpzIGJ1aWx0aW4iX3M7Ci0gICAgU3Ry
aW5nIHdhc20gPSAiV2FzbSJfczsKLSAgICBTdHJpbmcgaG9zdCA9ICJIb3N0Il9zOwotICAgIFN0
cmluZyByZWdleHAgPSAiUmVnRXhwIl9zOwotICAgIFN0cmluZyBjcHAgPSAiQy9DKysiX3M7Ci0g
ICAgU3RyaW5nIHVua25vd25GcmFtZSA9ICJVbmtub3duIEZyYW1lIl9zOwotICAgIFN0cmluZyB1
bmtub3duRXhlY3V0YWJsZSA9ICJVbmtub3duIEV4ZWN1dGFibGUiX3M7CisgICAgU3RyaW5nIGxs
aW50ID0gIkxMSW50Il9zdHI7CisgICAgU3RyaW5nIGJhc2VsaW5lID0gIkJhc2VsaW5lIl9zdHI7
CisgICAgU3RyaW5nIGRmZyA9ICJERkciX3N0cjsKKyAgICBTdHJpbmcgZnRsID0gIkZUTCJfc3Ry
OworICAgIFN0cmluZyBidWlsdGluID0gImpzIGJ1aWx0aW4iX3N0cjsKKyAgICBTdHJpbmcgd2Fz
bSA9ICJXYXNtIl9zdHI7CisgICAgU3RyaW5nIGhvc3QgPSAiSG9zdCJfc3RyOworICAgIFN0cmlu
ZyByZWdleHAgPSAiUmVnRXhwIl9zdHI7CisgICAgU3RyaW5nIGNwcCA9ICJDL0MrKyJfc3RyOwor
ICAgIFN0cmluZyB1bmtub3duRnJhbWUgPSAiVW5rbm93biBGcmFtZSJfc3RyOworICAgIFN0cmlu
ZyB1bmtub3duRXhlY3V0YWJsZSA9ICJVbmtub3duIEV4ZWN1dGFibGUiX3N0cjsKIAogICAgIGF1
dG8gZm9yRWFjaFRpZXIgPSBbJl0gKGF1dG8gZnVuYykgewogICAgICAgICBmdW5jKGxsaW50KTsK
QEAgLTEyMDgsMTcgKzEyMDgsMTcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BC
eXRlY29kZXMoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5oYXNC
eXRlY29kZUluZGV4KCkpCiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVJbmRleCA9IHRvU3RyaW5n
KGxvY2F0aW9uLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGJ5dGVjb2RlSW5kZXggPSAiPG5pbD4iX3M7CisgICAgICAgICAgICAgICAgYnl0ZWNvZGVJ
bmRleCA9ICI8bmlsPiJfc3RyOwogCiAgICAgICAgICAgICBpZiAobG9jYXRpb24uaGFzQ29kZUJs
b2NrSGFzaCgpKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gc3RyZWFtOwog
ICAgICAgICAgICAgICAgIGxvY2F0aW9uLmNvZGVCbG9ja0hhc2guZHVtcChzdHJlYW0pOwogICAg
ICAgICAgICAgICAgIGNvZGVCbG9ja0hhc2ggPSBzdHJlYW0udG9TdHJpbmcoKTsKICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNvZGVCbG9ja0hhc2ggPSAiPG5pbD4iX3M7Cisg
ICAgICAgICAgICAgICAgY29kZUJsb2NrSGFzaCA9ICI8bmlsPiJfc3RyOwogCiAgICAgICAgICAg
ICBpZiAobG9jYXRpb24uaXNSZWdFeHApCi0gICAgICAgICAgICAgICAgaml0VHlwZSA9ICJSZWdF
eHAiX3M7CisgICAgICAgICAgICAgICAgaml0VHlwZSA9ICJSZWdFeHAiX3N0cjsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBqaXRUeXBlID0gSklUQ29kZTo6dHlwZU5hbWUobG9j
YXRpb24uaml0VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggNDIxZDcwMGU0NmFmYjgwOGU3ZDVhNTcwZGNhZjVm
NWM3YmE5YjQxZi4uMGNiZDlmMzFjNDUxNjhkMWViYjY5ODNjZGQwMzBmMTUyNDJmZDVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5j
cHAKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JF
eGVjdXRpb25JbXBsKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIEpTUwogCiAgICAgaWYg
KFVOTElLRUxZKHZtLmdldEFuZENsZWFyRmFpbE5leHROZXdDb2RlQmxvY2soKSkpIHsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0p
OwotICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkZvcmNlZCBGYWlsdXJlIl9zKSk7CisgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRm9yY2VkIEZhaWx1cmUiX3N0cikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggZDU0NDMzYmZlZTRmZGRkYTVmNDcwNjc3YWY0NTdmOWJmNGY3NGU0NS4uMDhjNGVlODcyODQ0
OTE0ZmZkNWRiNWI4OTQzMGJkYjFiZGVmZmM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtODcsNyArODcsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0U2V0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKgogCiAgICAgICAgIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSA9IGdldENh
bGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uKTsKICAgICAgICAgaWYgKFVOTElLRUxZKGFkZGVyRnVu
Y3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICInYWRkJyBwcm9w
ZXJ0eSBvZiBhIFNldCBzaG91bGQgYmUgY2FsbGFibGUuIl9zKTsKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICInYWRkJyBwcm9wZXJ0eSBv
ZiBhIFNldCBzaG91bGQgYmUgY2FsbGFibGUuIl9zdHIpOwogICAgIH0KIAogICAgIHNjb3BlLnJl
bGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwCmluZGV4IGE2ZWZjMmZiYjMxNDQ2ZTgyYTQ2MzQyMTJmMjdiNmQwZDRkNTkyY2UuLmZmMjA1
YTJjNzhjZDk3MTVhYmFiMDMyM2YzNTU3NmM0MWMxNjdmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtODksNyArODksNyBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdGhpc1ZhbAogICAgIGF1dG8qIHNldCA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQq
Pih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKTsKICAgICBpZiAoTElLRUxZKHNldCkpCiAgICAgICAg
IHJldHVybiBzZXQ7Ci0gICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNl
dCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0Il9zKTsKKyAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLVNl
dCBvYmplY3QiX3N0cik7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcAppbmRl
eCA4ZTg4NjY2Mzk4M2FmM2E1N2M2MzExZTdhMDg4ZmM2NWU3ZGEzYTUyLi4xY2JiYTlmY2NhNWRi
Mzk1MjQyM2Q0N2Q0NGYyOWZiMzI0ZDczN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGV2YWxJblJlYWxtLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKgogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsIHN5bnRheEVycm9yTWVzc2Fn
ZSkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXJyb3IgZW5jb3VudGVy
ZWQgZHVyaW5nIGV2YWx1YXRpb24iX3MpKTsKKyAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXJyb3IgZW5j
b3VudGVyZWQgZHVyaW5nIGV2YWx1YXRpb24iX3N0cikpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwpAQCAtMTE5LDcgKzExOSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihldmFsSW5SZWFsbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSoK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIHJlYWxt
R2xvYmFsT2JqZWN0LCByZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCByZWFsbUdsb2Jh
bE9iamVjdC0+Z2xvYmFsU2NvcGUoKSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkgewogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfc3Ry
KSk7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUu
Y3BwCmluZGV4IDZiOGYzZGY2MzM1MDQ1ZDVhYzIxZWY1YTA4MmQ0ODY4MDRmYTNlNmIuLmM5NGEx
Yjk0Nzk4ZDJkMWRlN2U0OGMxYWI2MjcyY2ZmZjM4YmI5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCkBAIC02MSwxMCArNjEsMTAgQEAgU291cmNl
SUQgU3RhY2tGcmFtZTo6c291cmNlSUQoKSBjb25zdAogU3RyaW5nIFN0YWNrRnJhbWU6OnNvdXJj
ZVVSTCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNXYXNtRnJhbWUpCi0gICAgICAgIHJldHVybiAi
W3dhc20gY29kZV0iX3M7CisgICAgICAgIHJldHVybiAiW3dhc20gY29kZV0iX3N0cjsKIAogICAg
IGlmICghbV9jb2RlQmxvY2spIHsKLSAgICAgICAgcmV0dXJuICJbbmF0aXZlIGNvZGVdIl9zOwor
ICAgICAgICByZXR1cm4gIltuYXRpdmUgY29kZV0iX3N0cjsKICAgICB9CiAKICAgICBTdHJpbmcg
c291cmNlVVJMID0gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsK
QEAgLTgxLDEzICs4MSwxMyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2
bSkgY29uc3QKICAgICBpZiAobV9jb2RlQmxvY2spIHsKICAgICAgICAgc3dpdGNoIChtX2NvZGVC
bG9jay0+Y29kZVR5cGUoKSkgewogICAgICAgICBjYXNlIEV2YWxDb2RlOgotICAgICAgICAgICAg
cmV0dXJuICJldmFsIGNvZGUiX3M7CisgICAgICAgICAgICByZXR1cm4gImV2YWwgY29kZSJfc3Ry
OwogICAgICAgICBjYXNlIE1vZHVsZUNvZGU6Ci0gICAgICAgICAgICByZXR1cm4gIm1vZHVsZSBj
b2RlIl9zOworICAgICAgICAgICAgcmV0dXJuICJtb2R1bGUgY29kZSJfc3RyOwogICAgICAgICBj
YXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdsb2Jh
bENvZGU6Ci0gICAgICAgICAgICByZXR1cm4gImdsb2JhbCBjb2RlIl9zOworICAgICAgICAgICAg
cmV0dXJuICJnbG9iYWwgY29kZSJfc3RyOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRleCA5MmRjOTQ2OWQyYTg0
YzU0OTIyMGUyMWY1ZjE2Zjc3YTAwNTVmZDg1Li40ZDdhMWI5YjNiZTg5MWQzNjYzYzA4ZDQ4ZGNj
ZGFkOTRiOTJkY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHN0cmluZ0Zyb21Db2RlUG9pbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWwKICAgICAgICAgdWludDMyX3QgY29kZVBvaW50ID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGNvZGVQb2ludEFzRG91YmxlKTsKIAogICAgICAgICBpZiAoY29kZVBvaW50ICE9IGNvZGVQ
b2ludEFzRG91YmxlIHx8IGNvZGVQb2ludCA+IFVDSEFSX01BWF9WQUxVRSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsICJBcmd1bWVudHMgY29udGFpbiBhIHZhbHVlIHRoYXQgaXMgb3V0IG9m
IHJhbmdlIG9mIGNvZGUgcG9pbnRzIl9zKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
QXJndW1lbnRzIGNvbnRhaW4gYSB2YWx1ZSB0aGF0IGlzIG91dCBvZiByYW5nZSBvZiBjb2RlIHBv
aW50cyJfc3RyKSk7CiAKICAgICAgICAgaWYgKFVfSVNfQk1QKGNvZGVQb2ludCkpCiAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRl
eCBmM2IzODNkY2JhNDI1M2E0YWM5MjU1ODRkMTliYzgwNzZiOTRhNTRhLi43ODQyZjlhMDIwMmM1
NzdlMmEzNGI5YjAzZWM2NjI5ZWIyYjg3NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTE1NCwxNCArMTU0LDE0IEBAIHZv
aWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgaWYgKE9wdGlvbnM6OnVzZUF0TWV0aG9kKCkpCiAgICAgICAg
IEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5hdFB1YmxpY05hbWUoKSwgc3RyaW5nUHJvdG90eXBlQXRDb2RlR2Vu
ZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAKLSAgICBKU0Z1bmN0aW9uKiB0cmltU3RhcnRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAidHJpbVN0YXJ0Il9zLCBzdHJpbmdQcm90b0Z1bmNU
cmltU3RhcnQsIE5vSW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiB0cmltRW5kRnVuY3Rpb24g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgInRyaW1FbmQiX3MsIHN0
cmluZ1Byb3RvRnVuY1RyaW1FbmQsIE5vSW50cmluc2ljKTsKKyAgICBKU0Z1bmN0aW9uKiB0cmlt
U3RhcnRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAi
dHJpbVN0YXJ0Il9zdHIsIHN0cmluZ1Byb3RvRnVuY1RyaW1TdGFydCwgTm9JbnRyaW5zaWMpOwor
ICAgIEpTRnVuY3Rpb24qIHRyaW1FbmRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAwLCAidHJpbUVuZCJfc3RyLCBzdHJpbmdQcm90b0Z1bmNUcmltRW5kLCBO
b0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ0cmltU3RhcnQiKSwgdHJpbVN0YXJ0RnVuY3Rpb24sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRy
aW1MZWZ0IiksIHRyaW1TdGFydEZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0cmltRW5kIiksIHRyaW1FbmRGdW5jdGlv
biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAidHJpbVJpZ2h0IiksIHRyaW1FbmRGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgSlNGdW5jdGlvbiogaXRlcmF0
b3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5
bWJvbC5pdGVyYXRvcl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBOb0ludHJpbnNpYyk7
CisgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5bWJvbC5pdGVyYXRvcl0iX3N0ciwgc3RyaW5nUHJvdG9G
dW5jSXRlcmF0b3IsIE5vSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGl0ZXJhdG9yRnVuY3Rpb24s
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAog
ICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdD
b25zdHJ1Y3RvciBoYXMgYmVlbiBidWlsdApAQCAtMTUxNiw3ICsxNTE2LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKICAgICAvLyAxLiBMZXQgTyBiZSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxl
KHRoaXMgdmFsdWUpLgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTdHJpbmcucHJv
dG90eXBlLmxvY2FsZUNvbXBhcmUgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3Ig
dW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlN0cmluZy5wcm90b3R5cGUubG9jYWxlQ29tcGFyZSByZXF1aXJlcyB0aGF0
IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3N0cik7CiAKICAgICAvLyAyLiBMZXQg
UyBiZSBUb1N0cmluZyhPKS4KICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChTKS4KQEAgLTE2MDYs
NyArMTYwNiw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNhc2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsCiAKICAgICAvLyAxMi4gSWYgbG9j
YWxlIGlzIHVuZGVmaW5lZCwgbGV0IGxvY2FsZSBiZSAidW5kIi4KICAgICBpZiAobG9jYWxlLmlz
TnVsbCgpKQotICAgICAgICBsb2NhbGUgPSAidW5kIl9zOworICAgICAgICBsb2NhbGUgPSAidW5k
Il9zdHI7CiAKICAgICAvLyBEZWxlZ2F0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzIHRvIGljdSB1X3N0
clRvTG93ZXIgb3IgdV9zdHJUb1VwcGVyLgogICAgIC8vIDEzLiBMZXQgY3BMaXN0IGJlIGEgTGlz
dCBjb250YWluaW5nIGluIG9yZGVyIHRoZSBjb2RlIHBvaW50cyBvZiBTIGFzIGRlZmluZWQgaW4g
RVMyMDE1LCA2LjEuNCwgc3RhcnRpbmcgYXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgUy4KQEAgLTE5
NTIsNyArMTk1Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihzdHJpbmdQcm90b0Z1bmNO
b3JtYWxpemUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgICAgIGVsc2UgaWYg
KGZvcm1TdHJpbmcgPT0gIk5GS0QiKQogICAgICAgICAgICAgZm9ybSA9IE5vcm1hbGl6YXRpb25G
b3JtOjpORktEOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIGFueSBu
b3JtYWxpemF0aW9uIGZvcm0iX3MpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBhbnkgbm9y
bWFsaXphdGlvbiBmb3JtIl9zdHIpOwogICAgIH0KIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG5vcm1hbGl6ZShnbG9iYWxPYmplY3QsIHN0cmluZywgZm9y
bSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCmluZGV4IGMzZGIx
OTZmYjkzNDZlMDZlMGM1YzFmMGZlNDliNDFiZjBhM2Y3ZWIuLjVmOWEyNDdlMTVhYWI4OWFjNDk5
MmJkNGE4NjIyODM2ZjQ1ZjlmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sLmNwcApAQCAtODEsNyArODEsNyBAQCBkb3VibGUgU3ltYm9sOjp0b051bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252ZXJ0IGEgc3lt
Ym9sIHRvIGEgbnVtYmVyIl9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBudW1iZXIiX3N0cik7CiAgICAgcmV0
dXJuIDAuMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFByb3RvdHlwZS5jcHAKaW5kZXggYmNmMTYzNTE2OWMwMjQ3NzI0YzcxMDM5MTU1MzFjMTIwZDg5
YzM4OC4uZWQ2ZmNjZGNiYjFhNDE0YzgzMjY4NjQwYmVkZjMzMDFlYzY5NGI3NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIHZvaWQgU3ltYm9sUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAKLSAgICBKU0Z1bmN0aW9u
KiB0b1ByaW1pdGl2ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDEsICJbU3ltYm9sLnRvUHJpbWl0aXZlXSJfcywgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZiwg
Tm9JbnRyaW5zaWMpOworICAgIEpTRnVuY3Rpb24qIHRvUHJpbWl0aXZlRnVuY3Rpb24gPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRpdmVd
Il9zdHIsIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YsIE5vSW50cmluc2ljKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1i
b2wsIHRvUHJpbWl0aXZlRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9V
VF9UUkFOU0lUSU9OKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbENhbGVuZGFyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXIuY3BwCmluZGV4IDA2ZGYyNTViOTk4N2JlZmIzZjQxZTU5MTE1NmFh
NTJhMWZjYmJkZDIuLjZhY2NiMjYwYWZlNDU4NmZkMDkyZTEzZjU0YjNjYTQ5YzhlZDlhNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENhbGVuZGFySUQ+IHBh
cnNlVGVtcG9yYWxDYWxlbmRhclN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBwYXJzaW5nIHRlbXBvcmFsIGNhbGVuZGFyIHN0cmluZywgd2hpY2ggcmVx
dWlyZXMgZnVsbCBJU08gODYwMSBwYXJzZXIuCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgY2FsZW5kYXIgSUQiX3Mp
OworICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxl
bmRhciBJRCJfc3RyKTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNv
bnN0cnVjdG9yLmNwcAppbmRleCBkOTc5OTMxNTY0NmQ4NzQ3NTBjYjA0YmY1ZWZkMzU4Mzc3NzFh
YTcxLi4wNmMwNDYwZTc3ZDRlZmU1YmMyOWZjNzdkMDVhZTJjM2YxNDhjODhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5k
YXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnUKIAogdm9pZCBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogdGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIkNhbGVuZGFyIl9zLCBQcm9w
ZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiQ2FsZW5kYXIiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1v
ZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCB0ZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgdGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CkBAIC05MCw3ICs5MCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbENhbGVuZGFyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjCiAKICAgICBzdGQ6Om9wdGlvbmFsPENhbGVuZGFySUQ+IGlkZW50aWZp
ZXIgPSBUZW1wb3JhbENhbGVuZGFyOjppc0J1aWx0aW5DYWxlbmRhcihjYWxlbmRhclN0cmluZyk7
CiAgICAgaWYgKCFpZGVudGlmaWVyKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxlbmRhciBJRCJfcyk7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxlbmRhciBJRCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKaW5kZXgg
OGZiM2E1MzRjZGU0OGEzMzQzZjgxMjk3NjRmNTJlYmM4YzdhYjkzNS4uMjEwYWU5YzgzOGUxZDFl
YWQ3ODAzM2EzMzU5ZGFiOTgzZTU2ZThiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGVGdW5jRmllbGRzLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8qIGNhbGVuZGFy
ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbENhbGVuZGFyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghY2FsZW5kYXIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5DYWxlbmRhci5wcm90b3R5cGUuZmll
bGRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgQ2FsZW5kYXIiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuQ2Fs
ZW5kYXIucHJvdG90eXBlLmZpZWxkcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIENhbGVu
ZGFyIl9zdHIpOwogCiAgICAgYm9vbCBpc0lTTzg2MDEgPSBjYWxlbmRhci0+aXNJU084NjAxKCk7
CiAgICAgYm9vbCBzaG91bGRBZGRFcmFBbmRFcmFZZWFyID0gZmFsc2U7CkBAIC0xMDQsNyArMTA0
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVG
dW5jRmllbGRzLCAoSlNHbG9iYWxPYmplY3QqIGcKICAgICBmb3JFYWNoSW5JdGVyYWJsZShnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIFtpc0lTTzg2MDEsICZzaG91bGRBZGRF
cmFBbmRFcmFZZWFyLCAmZmllbGROYW1lc10oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmllbGRzIGluY2x1ZGUg
bm9uIHN0cmluZyB2YWx1ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmllbGRzIGluY2x1ZGUgbm9uIHN0cmluZyB2YWx1ZSJfc3RyKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWlzSVNPODYwMSAmJiAh
c2hvdWxkQWRkRXJhQW5kRXJhWWVhcikgewpAQCAtMjAyLDcgKzIwMiw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVuY01lcmdlRmllbGRzLCAo
SlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBjYWxlbmRhciA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxDYWxlbmRhcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWNhbGVu
ZGFyKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLm1lcmdlRmllbGRzIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgQ2FsZW5kYXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLm1l
cmdlRmllbGRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgQ2FsZW5kYXIiX3N0cik7CiAK
ICAgICBhdXRvKiBmaWVsZHMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTMxNyw3
ICszMTcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogY2FsZW5kYXIg
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsQ2FsZW5kYXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCFjYWxlbmRhcikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkNhbGVuZGFyLnByb3RvdHlwZS50b1N0
cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIENhbGVuZGFyIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkNh
bGVuZGFyLnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIENh
bGVuZGFyIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwg
aW50bEF2YWlsYWJsZUNhbGVuZGFycygpW2NhbGVuZGFyLT5pZGVudGlmaWVyKCldKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3Bw
CmluZGV4IDc3ZDk5YWEzZDBjN2ZkODM5Mzk0MTY2MmQxMjVhMWJiN2JkMTlhMGMuLjJhZjE2YjMz
NWNhMWI2MmU0ZmYzMmU5NmQ0ZDlmMDdiZjJjNzc5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCkBAIC03MSw3ICs3MSw3IEBA
IFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgaWYgKCFJU084NjAxOjppc1ZhbGlkRHVyYXRpb24oZHVyYXRpb24p
KSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2YgY29uc2lzdGVudCBz
aWduIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBvZiBjb25zaXN0
ZW50IHNpZ24iX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xMDQsMTMg
KzEwNCwxMyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9uOjpmcm9tRHVyYXRp
b25MaWtlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlmICghaXNJbnRlZ2VyKHJlc3VsdFt1bml0
XSkpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGludGVnZXJzIl9zKTsKKyAgICAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVy
YXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGludGVnZXJzIl9zdHIpOwogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghaGFzUmVsZXZhbnRQcm9wZXJ0
eSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2JqZWN0
IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydHkiX3Mp
OworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2JqZWN0IG11
c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydHkiX3N0cik7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xNDMsNyArMTQzLDcgQEAgSVNPODYw
MTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6dG9JU084NjAxRHVyYXRpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamUKICAgICB9CiAKICAgICBpZiAoIUlTTzg2MDE6OmlzVmFsaWREdXJh
dGlvbihkdXJhdGlvbikpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBv
ZiBjb25zaXN0ZW50IHNpZ24iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUg
YW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9u
Ojp0b0xpbWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoIWlzVmFsaWREdXJhdGlvbihk
dXJhdGlvbikpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBvZiBjb25z
aXN0ZW50IHNpZ24iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9m
IGNvbnNpc3RlbnQgc2lnbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAg
LTIyOCw3ICsyMjgsNyBAQCBKU1ZhbHVlIFRlbXBvcmFsRHVyYXRpb246OmNvbXBhcmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZU9uZQogCiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCByZWxhdGl2ZVRvIHBhcmFtZXRlciBhZnRlciBQbGFpbkRhdGVUaW1lIC8gWm9u
ZWREYXRlVGltZS4KICAgICBpZiAob25lLT55ZWFycygpIHx8IHR3by0+eWVhcnMoKSB8fCBvbmUt
Pm1vbnRocygpIHx8IHR3by0+bW9udGhzKCkgfHwgb25lLT53ZWVrcygpIHx8IHR3by0+d2Vla3Mo
KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5v
dCBjb21wYXJlIGEgZHVyYXRpb24gb2YgeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgd2l0aG91dCBh
IHJlbGF0aXZlVG8gb3B0aW9uIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJDYW5ub3QgY29tcGFyZSBhIGR1cmF0aW9uIG9mIHllYXJzLCBtb250aHMs
IG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAKQEAgLTI3MSwxMyArMjcxLDEzIEBAIElTTzg2MDE6OkR1cmF0aW9u
IFRlbXBvcmFsRHVyYXRpb246OndpdGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAg
ICAgaWYgKCFpc0ludGVnZXIocmVzdWx0W3VuaXRdKSkgewotICAgICAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVz
IG11c3QgYmUgaW50ZWdlcnMiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgaW50
ZWdlcnMiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKCFoYXNSZWxldmFudFByb3BlcnR5KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBU
ZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0eSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBUZW1w
b3JhbC5EdXJhdGlvbiBwcm9wZXJ0eSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKQEAgLTM2Myw3ICszNjMsNyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9u
OjphZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvdAogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgcmVsYXRpdmVUbyBwYXJhbWV0ZXIgYWZ0ZXIgUGxhaW5EYXRlVGltZSAv
IFpvbmVkRGF0ZVRpbWUuCiAgICAgYXV0byBsYXJnZXN0VW5pdCA9IHN0ZDo6bWluKGxhcmdlc3RT
dWJkdXJhdGlvbihtX2R1cmF0aW9uKSwgbGFyZ2VzdFN1YmR1cmF0aW9uKG90aGVyKSk7CiAgICAg
aWYgKGxhcmdlc3RVbml0IDw9IFRlbXBvcmFsVW5pdDo6V2VlaykgewotICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBhZGQgYSBkdXJhdGlvbiBvZiB5
ZWFycywgbW9udGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRpdmVUbyBvcHRpb24iX3MpOwor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBhZGQg
YSBkdXJhdGlvbiBvZiB5ZWFycywgbW9udGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRpdmVU
byBvcHRpb24iX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0zODgsNyAr
Mzg4LDcgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6c3VidHJhY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWwKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHJlbGF0aXZlVG8gcGFyYW1ldGVyIGFmdGVyIFBsYWluRGF0ZVRpbWUgLyBab25lZERhdGVUaW1l
LgogICAgIGF1dG8gbGFyZ2VzdFVuaXQgPSBzdGQ6Om1pbihsYXJnZXN0U3ViZHVyYXRpb24obV9k
dXJhdGlvbiksIGxhcmdlc3RTdWJkdXJhdGlvbihvdGhlcikpOwogICAgIGlmIChsYXJnZXN0VW5p
dCA8PSBUZW1wb3JhbFVuaXQ6OldlZWspIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJDYW5ub3Qgc3VidHJhY3QgYSBkdXJhdGlvbiBvZiB5ZWFycywgbW9u
dGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRpdmVUbyBvcHRpb24iX3MpOworICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBzdWJ0cmFjdCBhIGR1
cmF0aW9uIG9mIHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9w
dGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTQ3MywxMiArNDcz
LDEyIEBAIElTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OnJvdW5kKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCiAgICAgaWYgKCFzbWFsbGVzdCAmJiAhbGFyZ2VzdCkgewotICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0
IGEgc21hbGxlc3RVbml0IG9yIGxhcmdlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHJvdW5kIHdpdGhvdXQgYSBz
bWFsbGVzdFVuaXQgb3IgbGFyZ2VzdFVuaXQgb3B0aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAogICAgIGlmIChzbWFsbGVzdCAmJiBsYXJnZXN0ICYmIHNtYWxsZXN0LnZh
bHVlKCkgPCBsYXJnZXN0LnZhbHVlKCkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2Vz
dFVuaXQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InNtYWxsZXN0VW5pdCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTQ5MywxMSArNDkzLDExIEBAIElTTzg2MDE6
OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OnJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVsYXRpdmVUbyBwYXJh
bWV0ZXIgYWZ0ZXIgUGxhaW5EYXRlVGltZSAvIFpvbmVkRGF0ZVRpbWUuCiAgICAgaWYgKGxhcmdl
c3RVbml0ID4gVGVtcG9yYWxVbml0OjpZZWFyICYmICh5ZWFycygpIHx8IG1vbnRocygpIHx8IHdl
ZWtzKCkgfHwgKGRheXMoKSAmJiBsYXJnZXN0VW5pdCA8IFRlbXBvcmFsVW5pdDo6RGF5KSkpIHsK
LSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qgcm91
bmQgYSBkdXJhdGlvbiBvZiB5ZWFycywgbW9udGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRp
dmVUbyBvcHRpb24iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkNhbm5vdCByb3VuZCBhIGR1cmF0aW9uIG9mIHllYXJzLCBtb250aHMsIG9yIHdlZWtz
IHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAgICAgaWYgKGxhcmdlc3RVbml0IDw9IFRlbXBvcmFsVW5pdDo6V2VlaykgewotICAg
ICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZJWE1FOiB5ZWFycywgbW9u
dGhzLCBvciB3ZWVrcyByb3VuZGluZyB3aXRoIHJlbGF0aXZlVG8gbm90IGltcGxlbWVudGVkIHll
dCJfcyk7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRklYTUU6
IHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHJvdW5kaW5nIHdpdGggcmVsYXRpdmVUbyBub3QgaW1w
bGVtZW50ZWQgeWV0Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNTIw
LDE0ICs1MjAsMTQgQEAgZG91YmxlIFRlbXBvcmFsRHVyYXRpb246OnRvdGFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHUKIAogICAgIGF1dG8gdW5pdFR5
cGUgPSB0ZW1wb3JhbFVuaXRUeXBlKHVuaXRTdHJpbmcpOwogICAgIGlmICghdW5pdFR5cGUpIHsK
LSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIGFu
IGludmFsaWQgVGVtcG9yYWwgdW5pdCJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAidW5pdCBpcyBhbiBpbnZhbGlkIFRlbXBvcmFsIHVuaXQiX3N0cik7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBUZW1wb3JhbFVuaXQgdW5pdCA9IHVuaXRU
eXBlLnZhbHVlKCk7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbGF0aXZlVG8gcGFyYW1l
dGVyIGFmdGVyIFBsYWluRGF0ZVRpbWUgLyBab25lZERhdGVUaW1lLgogICAgIGlmICh1bml0ID4g
VGVtcG9yYWxVbml0OjpZZWFyICYmICh5ZWFycygpIHx8IG1vbnRocygpIHx8IHdlZWtzKCkgfHwg
KGRheXMoKSAmJiB1bml0IDwgVGVtcG9yYWxVbml0OjpEYXkpKSkgewotICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCB0b3RhbCBhIGR1cmF0aW9uIG9m
IHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfcyk7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHRv
dGFsIGEgZHVyYXRpb24gb2YgeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgd2l0aG91dCBhIHJlbGF0
aXZlVG8gb3B0aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNTUx
LDcgKzU1MSw3IEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAgICAgUHJlY2lzaW9uRGF0YSBk
YXRhID0gc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKGRhdGEudW5pdCA8IFRl
bXBvcmFsVW5pdDo6U2Vjb25kKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3Qgbm90IGJlIFwibWludXRlXCIiX3MpOworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBt
dXN0IG5vdCBiZSBcIm1pbnV0ZVwiIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGQzY2VmMTA1NjYzYjczODNmYzkzOGE4
ZDQ2OGI5Nzk2YTU4YzYwYy4uYTZhY2MzNjgzYjI4Zjc0MTc5NGE0MDMwM2QwNTQ0NWU1ODM1MWZj
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFRlbXBvcmFs
RHVyYXRpb25Db25zdHJ1Y3Rvcjo6VGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1CiAKIHZvaWQgVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUqIGR1cmF0aW9uUHJv
dG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiRHVyYXRpb24iX3Ms
IFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJEdXJhdGlvbiJfc3RyLCBQcm9wZXJ0eUFkZGl0
aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGR1cmF0aW9uUHJv
dG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgZHVyYXRpb25Q
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogfQpAQCAtOTYsNyArOTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oY29uc3RydWN0VGVtcG9yYWxEdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAg
IGlmICghc3RkOjppc2Zpbml0ZShyZXN1bHRbaV0pKQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9w
ZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGll
cyBtdXN0IGJlIGZpbml0ZSJfc3RyKTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlk
KGdsb2JhbE9iamVjdCwgV1RGTW92ZShyZXN1bHQpLCBzdHJ1Y3R1cmUpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuY3BwCmluZGV4IDBjYjQ0MmUyOTBiZjhmYTFhMmQ2ZGU4OGY5NjE5ZDc2YjJiYWYzYzQu
LjE0ZDJmNGM5MjYzZTc3OGY0MTNjNDY0YWM2OThmOWUwOTA5N2NhODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuY3BwCkBAIC0xMjMsMTEgKzEyMywxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNXaXRoLCAoSlNHbG9iYWxPYmplY3QqIGdsbwog
CiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1
cmF0aW9uLnByb3RvdHlwZS53aXRoIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRp
b24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLndpdGggY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKICAgICAKICAgICBKU1ZhbHVlIGR1cmF0aW9uTGlr
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFkdXJhdGlvbkxpa2UuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS53aXRoIG11
c3QgYmUgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS53aXRoIG11c3QgYmUgYW4gb2JqZWN0Il9zdHIpOwogCiAgICAgYXV0byByZXN1bHQg
PSBkdXJhdGlvbi0+d2l0aChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGR1cmF0aW9uTGlrZSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0xNDIsNyArMTQyLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVGdW5jTmVn
YXRlZCwgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5uZWdhdGVkIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90
eXBlLm5lZ2F0ZWQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCksIGR1cmF0aW9uLT5uZWdhdGVkKCkp
KTsKIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZUZ1bmNBYnMsIChKU0dsb2JhbE9iamVjdCogZ2xvYgogCiAgICAg
YXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9u
LnByb3RvdHlwZS5hYnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuYWJzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFs
RHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBk
dXJhdGlvbi0+YWJzKCkpKTsKIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNBZGQsIChKU0dsb2JhbE9iamVj
dCogZ2xvYgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVy
YXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5hZGQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICBhdXRvIHJlc3VsdCA9IGR1
cmF0aW9uLT5hZGQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMTgxLDcgKzE4MSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY1N1YnRyYWN0
LCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8
VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAo
IWR1cmF0aW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLnN1YnRyYWN0IGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBl
LnN1YnRyYWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAK
ICAgICBhdXRvIHJlc3VsdCA9IGR1cmF0aW9uLT5zdWJ0cmFjdChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CkBAIC0xOTYsMTEgKzE5NiwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0
byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIER1cmF0aW9uIl9zdHIpOwogCiAgICAgYXV0byBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBpZiAob3B0aW9ucy5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24u
cHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwu
RHVyYXRpb24ucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3N0
cik7CiAKICAgICBhdXRvIHJlc3VsdCA9IGR1cmF0aW9uLT5yb3VuZChnbG9iYWxPYmplY3QsIG9w
dGlvbnMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0yMTUsMTEg
KzIxNSwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3Rv
dHlwZUZ1bmNUb3RhbCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0byogZHVyYXRpb24g
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS50b3Rh
bCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0
aW9uLnByb3RvdHlwZS50b3RhbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9u
Il9zdHIpOwogCiAgICAgYXV0byBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAob3B0aW9ucy5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLnRv
dGFsIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJv
dG90eXBlLnRvdGFsIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3N0cik7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkdXJhdGlv
bi0+dG90YWwoZ2xvYmFsT2JqZWN0LCBvcHRpb25zKSkpKTsKIH0KQEAgLTIzMSw3ICsyMzEsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNU
b1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS50b1N0cmluZyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9z
dHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcodm0sIGR1cmF0aW9uLT50b1N0cmluZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpKSkpOwogfQpAQCAtMjQzLDcgKzI0Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY1RvSlNPTiwgKEpTR2xvYmFsT2JqZWN0
KiBnCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlv
bio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24ucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS50b0pTT04gY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcodm0sIGR1cmF0aW9uLT50b1N0cmluZygpKSk7CiB9CkBAIC0yNTYs
NyArMjU2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2JhbE8KIAogICAgIGF1dG8qIGR1cmF0aW9u
ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUudG9M
b2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5EdXJhdGlvbi5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcodm0sIGR1cmF0aW9uLT50b1N0cmluZygpKSk7CiB9CkBAIC0yNjYsNyArMjY2LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVGdW5j
VmFsdWVPZiwgKEpTR2xvYmFsT2JqZWN0KgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRp
b24ucHJvdG90eXBlLnZhbHVlT2YgbXVzdCBub3QgYmUgY2FsbGVkLiBUbyBjb21wYXJlIER1cmF0
aW9uIHZhbHVlcywgdXNlIFRlbXBvcmFsLkR1cmF0aW9uLmNvbXBhcmUiX3MpOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlv
bi5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBiZSBjYWxsZWQuIFRvIGNvbXBhcmUgRHVyYXRp
b24gdmFsdWVzLCB1c2UgVGVtcG9yYWwuRHVyYXRpb24uY29tcGFyZSJfc3RyKTsKIH0KIAogSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVHZXR0ZXJZZWFy
cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTI3Niw3ICsyNzYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlclllYXJzLCAoSlNHbG9iYWxPYmpl
Y3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlv
bio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkdXJhdGlvbikK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS55ZWFycyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS55ZWFycyBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihkdXJhdGlvbi0+eWVhcnMoKSkpOwogfQpAQCAtMjg4LDcgKzI4
OCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
R2V0dGVyTW9udGhzLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5tb250
aHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJh
dGlvbi5wcm90b3R5cGUubW9udGhzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRp
b24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9u
LT5tb250aHMoKSkpOwogfQpAQCAtMzAwLDcgKzMwMCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlR2V0dGVyV2Vla3MsIChKU0dsb2JhbE9iamVj
dCoKIAogICAgIGF1dG8qIGR1cmF0aW9uID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9u
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWR1cmF0aW9uKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLndlZWtzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLndlZWtzIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT53ZWVrcygpKSk7CiB9CkBAIC0zMTIsNyArMzEy
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVH
ZXR0ZXJEYXlzLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8qIGR1cmF0aW9uID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLmRheXMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlv
bi5wcm90b3R5cGUuZGF5cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9z
dHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkdXJhdGlvbi0+ZGF5
cygpKSk7CiB9CkBAIC0zMjQsNyArMzI0LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsRHVyYXRpb25Qcm90b3R5cGVHZXR0ZXJIb3VycywgKEpTR2xvYmFsT2JqZWN0KgogCiAg
ICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5E
dXJhdGlvbi5wcm90b3R5cGUuaG91cnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJh
dGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuaG91cnMgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoZHVyYXRpb24tPmhvdXJzKCkpKTsKIH0KQEAgLTMzNiw3ICszMzYsNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlck1p
bnV0ZXMsIChKU0dsb2JhbE9iamVjdAogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubWludXRlcyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS5taW51dGVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0
cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5taW51
dGVzKCkpKTsKIH0KQEAgLTM0OCw3ICszNDgsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
dGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlclNlY29uZHMsIChKU0dsb2JhbE9iamVjdAog
CiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5EdXJhdGlvbi5wcm90b3R5cGUuc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5zZWNvbmRzIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5zZWNvbmRzKCkpKTsKIH0KQEAgLTM2MCw3ICsz
NjAsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlw
ZUdldHRlck1pbGxpc2Vjb25kcywgKEpTR2xvYmFsTwogCiAgICAgYXV0byogZHVyYXRpb24gPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubWls
bGlzZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24ucHJvdG90eXBlLm1pbGxpc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIER1cmF0aW9uIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihkdXJhdGlvbi0+bWlsbGlzZWNvbmRzKCkpKTsKIH0KQEAgLTM3Miw3ICszNzIsNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlck1p
Y3Jvc2Vjb25kcywgKEpTR2xvYmFsTwogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubWljcm9zZWNvbmRz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRp
b24ucHJvdG90eXBlLm1pY3Jvc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1
cmF0aW9uIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkdXJh
dGlvbi0+bWljcm9zZWNvbmRzKCkpKTsKIH0KQEAgLTM4NCw3ICszODQsNyBAQCBKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlck5hbm9zZWNvbmRz
LCAoSlNHbG9iYWxPYgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBv
cmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICgh
ZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubmFub3NlY29uZHMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5
cGUubmFub3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3Ry
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZHVyYXRpb24tPm5hbm9z
ZWNvbmRzKCkpKTsKIH0KQEAgLTM5Niw3ICszOTYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlclNpZ24sIChKU0dsb2JhbE9iamVjdCog
ZwogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24q
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuc2lnbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5zaWduIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5zaWduKCkpKTsKIH0KQEAgLTQwOCw3ICs0MDgsNyBA
QCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRl
ckJsYW5rLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5ibGFuayBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS5ibGFuayBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zdHIp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oIWR1cmF0aW9uLT5zaWdu
KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsSW5zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnQuY3BwCmluZGV4IDZmNjhjZjBmZjNjZDJjODU3MTM3NGFiYjNlMDJjNzEzYzIwNWZmNTAu
LjkxOGZmNDcxZmZiZTdiZTQxN2MyZGIzMmNmNDM5OTNjYTY1MTcxNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcApAQCAtMTI0LDcg
KzEyNCw3IEBAIFRlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIFN0cmluZyBhcmdBc1N0
cmluZyA9IGJpZ2ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCk7CiAgICAgICAgIGlmIChz
Y29wZS5leGNlcHRpb24oKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsK
LSAgICAgICAgICAgIGFyZ0FzU3RyaW5nID0gIlRoZSBnaXZlbiBudW1iZXIgb2YiX3M7CisgICAg
ICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVyIG9mIl9zdHI7CiAgICAgICAg
IH0KIAogICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0
cmluZyhlbGxpcHNpemVBdCgxMDAsIGFyZ0FzU3RyaW5nKSwgIiBlcG9jaCBuYW5vc2Vjb25kcyBp
cyBvdXRzaWRlIG9mIHRoZSBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3Mp
KTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBT
dHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApOwog
ICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVy
IG9mIl9zOworICAgICAgICAgICAgYXJnQXNTdHJpbmcgPSAiVGhlIGdpdmVuIG51bWJlciBvZiJf
c3RyOwogICAgICAgICB9CiAKICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0cmluZyksICIgZXBvY2gg
bWljcm9zZWNvbmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5J
bnN0YW50Il9zKSk7CkBAIC0zMTEsNyArMzExLDcgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9y
YWxJbnN0YW50OjpkaWZmZXJlbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlbXAK
ICAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQgPSBsYXJnZXN0LnZhbHVlX29yKGRlZmF1bHRM
YXJnZXN0VW5pdCk7CiAKICAgICBpZiAoc21hbGxlc3QgJiYgbGFyZ2VzdCAmJiBzbWFsbGVzdCA8
IGxhcmdlc3QpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJzbWFsbGVzdFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2VzdFVuaXQiX3MpOworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBt
dXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBJU084NjAxOjpFeGFjdFRpbWUgVGVtcG9y
YWxJbnN0YW50Ojpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghc21hbGxlc3Qp
IHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qg
cm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24iX3MpOworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0IGEgc21h
bGxlc3RVbml0IG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAg
VGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5p
dDo6TmFub3NlY29uZCk7CkBAIC00MjMsNyArNDIzLDcgQEAgU3RyaW5nIFRlbXBvcmFsSW5zdGFu
dDo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25z
VmEKICAgICAvLyAxLiBMZXQgX2RhdGVUaW1lXyBiZSA/IEJ1aWx0aW5UaW1lWm9uZUdldFBsYWlu
RGF0ZVRpbWVGb3IoX291dHB1dFRpbWVab25lXywgX2luc3RhbnRfLCBfaXNvQ2FsZW5kYXJfKS4K
ICAgICBKU09iamVjdCogb3V0cHV0VGltZVpvbmUgPSB0aW1lWm9uZTsKICAgICBpZiAob3V0cHV0
VGltZVpvbmUpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
SVhNRTogVGVtcG9yYWwuSW5zdGFudC50b1N0cmluZyh7dGltZVpvbmV9KSBub3QgaW1wbGVtZW50
ZWQgeWV0Il9zKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
SVhNRTogVGVtcG9yYWwuSW5zdGFudC50b1N0cmluZyh7dGltZVpvbmV9KSBub3QgaW1wbGVtZW50
ZWQgeWV0Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IDg2MWQ4MGMxODg3ZTI2NTBmMGNkNzcyYTczNzVmOTljZDY0YWU1M2Yu
LjFmZTBkMWY5NDIyZWM4MDcwYzc4ZDlhNjE1NGMwZTBjMzJkZDBiYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6
OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKIAog
dm9pZCBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDEsICJJbnN0YW50Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6
V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCAxLCAiSW5zdGFudCJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVy
ZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGluc3RhbnRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKICAgICBpbnN0YW50UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KQEAgLTk4
LDcgKzk4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsSW5z
dGFudCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Ik1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vjb25kcyBhcmd1bWVudCB0byBUZW1wb3JhbC5J
bnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIk1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vjb25kcyBhcmd1bWVudCB0byBU
ZW1wb3JhbC5JbnN0YW50Il9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgc3RydWN0dXJlKSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5jcHAKaW5kZXggYTQyNmJlMDZmZmQzOTQxMDYzYzFmZjJiNTE4N2I5OWM2
MTU2NWMzMy4uOGMwNWYxZGM4YWE1MTVlMzY0ZTU5N2YzOGEzZGIzZTU0NDI3MjNlOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUuY3BwCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYQogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1w
b3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0
YW50KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5hZGQgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgSVNPODYwMTo6RHVyYXRp
b24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgc3RkOjpvcHRpb25h
bDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0VGltZSgp
LmFkZChkdXJhdGlvbik7CiAgICAgaWYgKCFuZXdFeGFjdFRpbWUpIHsKLSAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBZGRpdGlvbiBpcyBvdXRzaWRlIG9mIHN1
cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcyk7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQWRkaXRpb24gaXMgb3V0c2lkZSBvZiBzdXBw
b3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3N0cik7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCkBAIC0xMzUsMTQgKzEzNSwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1N1YnRyYWN0LCAoSlNHbG9iYWxPYmplY3Qq
CiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFs
SW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWluc3RhbnQp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5zdWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc3VidHJhY3QgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgSVNPODYwMTo6
RHVyYXRpb24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVu
aXRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgc3RkOjpv
cHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0
VGltZSgpLmFkZCgtZHVyYXRpb24pOwogICAgIGlmICghbmV3RXhhY3RUaW1lKSB7Ci0gICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3VidHJhY3Rpb24gaXMgb3V0
c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpOworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlzIG91
dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zdHIpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVW50aWwsIChKU0dsb2Jh
bE9iamVjdCogZ2xvCiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIWluc3RhbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudW50
aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgVGVt
cG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlLCAoSlNHbG9iYWxPYmplY3QqIGdsbwog
CiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbElu
c3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0YW50KQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc2luY2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIFRlbXBvcmFsSW5zdGFudCog
b3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBA
IC0xOTQsMTEgKzE5NCwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlRnVuY1JvdW5kLCAoSlNHbG9iYWxPYmplY3QqIGdsbwogCiAgICAgVGVtcG9y
YWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFu
dC5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnJvdW5kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKG9wdGlvbnMuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgcmVxdWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJf
c3RyKTsKIAogICAgIElTTzg2MDE6OkV4YWN0VGltZSBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5y
b3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CkBAIC0yMTMsNyArMjEzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0dsb2JhbE9iamVjdCogZ2wKIAog
ICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0
YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaW5zdGFudCkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLkluc3RhbnQucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXF1YWxzIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIFRlbXBvcmFsSW5zdGFudCog
b3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBA
IC0yMzAsNyArMjMwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgVGVtcG9yYWxJ
bnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5w
cm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBpbnN0YW50LT50b1N0cmluZyhnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSkpOwogfQpAQCAtMjQyLDcgKzI0Miw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9KU09O
LCAoSlNHbG9iYWxPYmplY3QqIGdsCiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKICAgICBpZiAoIWluc3RhbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b0pTT04gY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJv
dG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3N0cik7
CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
Zyh2bSwgaW5zdGFudC0+dG9TdHJpbmcoKSkpKTsKIH0KQEAgLTI1NSw3ICsyNTUsNyBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvTG9jYWxl
U3RyaW5nLCAoSlNHbG9iYWxPYgogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9Mb2NhbGVTdHJp
bmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
SW5zdGFudCJfc3RyKTsKIAogICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0dGVyID0gSW50
bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTI3
Miw3ICsyNzIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuSW5zdGFudC5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBiZSBjYWxsZWQuIFRvIGNv
bXBhcmUgSW5zdGFudCB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5JbnN0YW50LmNvbXBhcmUiX3MpOwor
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5JbnN0YW50LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFy
ZSBJbnN0YW50IHZhbHVlcywgdXNlIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSJfc3RyKTsKIH0K
IAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRl
ckVwb2NoU2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTI4Miw3ICsyODIsNyBAQCBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNv
bmRzLCAoSlNHbG9iYWxPYgogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5h
bWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoU2Vjb25k
cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFu
dC5wcm90b3R5cGUuZXBvY2hTZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5z
dGFudCJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5zdGFu
dC0+ZXhhY3RUaW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsKIH0KQEAgLTI5NCw3ICsyOTQsNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBv
Y2hNaWxsaXNlY29uZHMsIChKU0dsbwogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2No
TWlsbGlzZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pbGxpc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIEluc3RhbnQiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCkpKTsKIH0K
QEAgLTMwNiw3ICszMDYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWNyb3NlY29uZHMsIChKU0dsbwogCiAgICAgVGVtcG9y
YWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLklu
c3RhbnQucHJvdG90eXBlLmVwb2NoTWljcm9zZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pY3Jvc2Vj
b25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3N0cik7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6bWFrZUhl
YXBCaWdJbnRPckJpZ0ludDMyKGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBv
Y2hNaWNyb3NlY29uZHMoKSkpKTsKIH0KQEAgLTMxOCw3ICszMTgsNyBAQCBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25k
cywgKEpTR2xvYgogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2Fz
dDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmICghaW5zdGFudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoTmFub3NlY29uZHMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQu
cHJvdG90eXBlLmVwb2NoTmFub3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJ
bnN0YW50Il9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRp
bWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKaW5kZXggM2NkMmZhMzczM2JhNzAwZmI2YWU3
MmRiMDk5MjA0ZTE5Mzg3YmEyMC4uOGNkZmU5YTIzMDk2ZDJlNzMyNzM4N2RmMjE4YWYxYzc5OWZl
ODVlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcApAQCAtMjQxLDEyICsyNDEsMTIgQEAgc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+
IHRlbXBvcmFsTGFyZ2VzdFVuaXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAog
ICAgIGF1dG8gdW5pdFR5cGUgPSB0ZW1wb3JhbFVuaXRUeXBlKGxhcmdlc3RVbml0KTsKICAgICBp
ZiAoIXVuaXRUeXBlKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAibGFyZ2VzdFVuaXQgaXMgYW4gaW52YWxpZCBUZW1wb3JhbCB1bml0Il9zKTsKKyAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJsYXJnZXN0VW5pdCBpcyBh
biBpbnZhbGlkIFRlbXBvcmFsIHVuaXQiX3N0cik7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgaWYgKGRpc2FsbG93ZWRVbml0cy5zaXplKCkgJiYgc3RkOjpmaW5k
KGRpc2FsbG93ZWRVbml0cy5iZWdpbigpLCBkaXNhbGxvd2VkVW5pdHMuZW5kKCksIHVuaXRUeXBl
LnZhbHVlKCkpICE9IGRpc2FsbG93ZWRVbml0cy5lbmQoKSkgewotICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImxhcmdlc3RVbml0IGlzIGEgZGlzYWxsb3dlZCB1
bml0Il9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJs
YXJnZXN0VW5pdCBpcyBhIGRpc2FsbG93ZWQgdW5pdCJfc3RyKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKQEAgLTI2OCwxMiArMjY4LDEyIEBAIHN0ZDo6b3B0aW9uYWw8
VGVtcG9yYWxVbml0PiB0ZW1wb3JhbFNtYWxsZXN0VW5pdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKCiAKICAgICBhdXRvIHVuaXRUeXBlID0gdGVtcG9yYWxVbml0VHlwZShzbWFsbGVz
dFVuaXQpOwogICAgIGlmICghdW5pdFR5cGUpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgaXMgYW4gaW52YWxpZCBUZW1wb3JhbCB1
bml0Il9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJz
bWFsbGVzdFVuaXQgaXMgYW4gaW52YWxpZCBUZW1wb3JhbCB1bml0Il9zdHIpOwogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChkaXNhbGxvd2VkVW5pdHMuc2l6
ZSgpICYmIHN0ZDo6ZmluZChkaXNhbGxvd2VkVW5pdHMuYmVnaW4oKSwgZGlzYWxsb3dlZFVuaXRz
LmVuZCgpLCB1bml0VHlwZS52YWx1ZSgpKSAhPSBkaXNhbGxvd2VkVW5pdHMuZW5kKCkpIHsKLSAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQg
aXMgYSBkaXNhbGxvd2VkIHVuaXQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBpcyBhIGRpc2FsbG93ZWQgdW5pdCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcAppbmRleCBmMzNmNmFm
ZmI5MDgwZjYwMDg4ZGMxMDRhOTQ1NGYyMjNiZWI5NmU1Li4zNTJiMjJjZWM0ZTIyMjhiNjVkZjU5
YjU0YTYwYTY2NzdiODNkOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwCkBAIC05NiwyNyArOTYsMjcgQEAgc3RhdGljIElT
Tzg2MDE6OlBsYWluVGltZSB0b1BsYWluVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBJU084NjAxOjpEdXIKICAgICBkb3VibGUgbWljcm9zZWNvbmQgPSBkdXJhdGlvbi5taWNyb3Nl
Y29uZHMoKTsKICAgICBkb3VibGUgbmFub3NlY29uZCA9IGR1cmF0aW9uLm5hbm9zZWNvbmRzKCk7
CiAgICAgaWYgKCEoaG91ciA+PSAwICYmIGhvdXIgPD0gMjMpKSB7Ci0gICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaG91ciBpcyBvdXQgb2YgcmFuZ2UiX3MpOwor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImhvdXIgaXMgb3V0
IG9mIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBpZiAoISht
aW51dGUgPj0gMCAmJiBtaW51dGUgPD0gNTkpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAibWludXRlIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibWludXRlIGlzIG91dCBvZiBy
YW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgaWYgKCEoc2Vjb25k
ID49IDAgJiYgc2Vjb25kIDw9IDU5KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNlY29uZCBpcyBvdXQgb2YgcmFuZ2Ui
X3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIGlmICghKG1pbGxpc2Vjb25k
ID49IDAgJiYgbWlsbGlzZWNvbmQgPD0gOTk5KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pbGxpc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7Cisg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibWlsbGlzZWNvbmQg
aXMgb3V0IG9mIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBp
ZiAoIShtaWNyb3NlY29uZCA+PSAwICYmIG1pY3Jvc2Vjb25kIDw9IDk5OSkpIHsKLSAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaWNyb3NlY29uZCBpcyBvdXQg
b2YgcmFuZ2UiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIm1pY3Jvc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAgICAgaWYgKCEobmFub3NlY29uZCA+PSAwICYmIG5hbm9zZWNvbmQgPD0gOTk5
KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm5hbm9z
ZWNvbmQgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJuYW5vc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfc3RyKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgcmV0dXJuIElTTzg2MDE6OlBsYWluVGltZSB7CkBA
IC0yMzQsNyArMjM0LDcgQEAgSVNPODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpy
b3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBhdXRvIHNtYWxs
ZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IFRlbXBv
cmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpXZWVrLCBU
ZW1wb3JhbFVuaXQ6OkRheSB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogICAgIGlmICghc21hbGxlc3QpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24i
X3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5v
dCByb3VuZCB3aXRob3V0IGEgc21hbGxlc3RVbml0IG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAgICAgVGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0
LnZhbHVlKCk7CkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHRv
VGVtcG9yYWxUaW1lUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2IKICAg
ICAgICAgZG91YmxlIGludGVnZXIgPSB2YWx1ZS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAg
IGlmICghc3RkOjppc2Zpbml0ZShpbnRlZ2VyKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUgcHJvcGVydGllcyBt
dXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRl
Il9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBkdXJh
dGlvblt1bml0XSA9IGludGVnZXI7CkBAIC0zMjcsMTQgKzMyNywxNCBAQCBzdGF0aWMgc3RkOjph
cnJheTxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0
cz4gdG9QYXJ0aQogICAgICAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gdmFsdWUudG9JbnRl
Z2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShkb3VibGVW
YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInRvUGFydGlhbFRpbWUgcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAg
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b1BhcnRp
YWxUaW1lIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3N0cik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBhcnRpYWxUaW1lW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPih1bml0KSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZW1wb3JhbFVu
aXQ6OkhvdXIpXSA9IGRvdWJsZVZhbHVlOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICghaGFz
QW55RmllbGRzKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJ0b1BhcnRpYWxUaW1lIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSJfcyk7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b1BhcnRpYWxUaW1lIHJl
cXVpcmVzIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAgICAgcmV0dXJuIHBhcnRpYWxUaW1lOwpAQCAtNDA1LDcgKzQwNSw3IEBAIFRlbXBv
cmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlCiAgICAgICAgIFN0cmluZyBjYWxlbmRhcldURlN0cmluZyA9IGNh
bGVuZGFyU3RyaW5nLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAoY2FsZW5kYXJXVEZTdHJpbmcgIT0gImlz
bzg2MDEiX3MpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiY2FsZW5kYXIgaXMgbm90IGlzbzg2MDEiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRhciBpcyBub3QgaXNvODYwMSJfc3Ry
KTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgYXV0byBkdXJh
dGlvbiA9IHRvVGVtcG9yYWxUaW1lUmVjb3JkKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0
Kj4oaXRlbVZhbHVlKSk7CkBAIC00MzksNyArNDM5LDcgQEAgVGVtcG9yYWxQbGFpblRpbWUqIFRl
bXBvcmFsUGxhaW5UaW1lOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUKICAgICAgICAgfQogICAgIH0KIAotICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaW52YWxpZCB0aW1lIHN0cmluZyJfcyk7CisgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIHRpbWUgc3RyaW5nIl9zdHIpOwogICAgIHJldHVy
biB7IH07CiB9CiAKQEAgLTUxNCwyMSArNTE0LDIxIEBAIElTTzg2MDE6OlBsYWluVGltZSBUZW1w
b3JhbFBsYWluVGltZTo6d2l0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKHRl
bXBvcmFsVGltZUxpa2UtPmluaGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1lPih2bSkpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBt
dXN0IG5vdCBjYXJyeSBjYWxlbmRhciJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBvYmplY3QgbXVzdCBub3QgY2FycnkgY2FsZW5kYXIi
X3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgSlNWYWx1ZSBjYWxlbmRh
clByb3BlcnR5ID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVy
dHlOYW1lcy0+Y2FsZW5kYXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgaWYgKCFjYWxlbmRhclByb3BlcnR5LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0IG5v
dCBjYXJyeSBjYWxlbmRhciJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJhcmd1bWVudCBvYmplY3QgbXVzdCBub3QgY2FycnkgY2FsZW5kYXIiX3N0cik7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgSlNWYWx1ZSB0aW1lWm9uZVByb3Bl
cnR5ID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+dGltZVpvbmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
aWYgKCF0aW1lWm9uZVByb3BlcnR5LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0IG5vdCBjYXJy
eSB0aW1lIHpvbmUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiYXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNhcnJ5IHRpbWUgem9uZSJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgc3Rk
Ojp0dXBsZTxUZW1wb3JhbFVuaXQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlLCBkb3VibGU+
IGV4dHJhY3REaWZmZQogICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0VW5pdCA9IGxhcmdlc3QudmFs
dWVfb3IoVGVtcG9yYWxVbml0OjpIb3VyKTsKIAogICAgIGlmIChzbWFsbGVzdFVuaXQgPCBsYXJn
ZXN0VW5pdCkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InNtYWxsZXN0VW5pdCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfcyk7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11
c3QgYmUgc21hbGxlciB0aGFuIGxhcmdlc3RVbml0Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAppbmRleCBkNjdjZmM5YTUwYTZm
YmZmOTgyZjI4MDY2Y2VhNzcyYTE4YzEzMWE4Li5lYjRkMjk4ZjY5MGQ5NTMzMzlmZDJjZjRiNDM0
ODhiMDcxYjM5ZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcApAQCAtNzUsNyArNzUs
NyBAQCBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdAogCiB2b2lkIFRlbXBvcmFsUGxhaW5UaW1lQ29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGUqIHBsYWluVGltZVByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
MCwgIlBsYWluVGltZSJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlBsYWluVGltZSJf
c3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIHBsYWluVGltZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOwogICAgIHBsYWluVGltZVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CkBAIC05Niw3ICs5Niw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhd
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b0ludGVnZXJPckluZmluaXR5KGds
b2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAg
ICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShkdXJhdGlvbltkdXJhdGlvbkluZGV4XSkpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuUGxhaW5UaW1lIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3N0cik7CiAgICAgfQogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5U
aW1lOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBXVEZNb3ZlKGR1
cmF0aW9uKSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAppbmRleCBlNDk2N2Q0Zjk0OTU4
ZDNjYzNhMmI3NTdjNzAzYzFiODQ4NGRkNTQ4Li4zNWU4MzA2YmZhMjA1ODYxMDBkNjllMDViYjEy
MWU5ZDZkM2UwMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCkBAIC0xMTcsNyArMTE3LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVu
Y0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmFkZCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3Ry
KTsKIAogICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT5hZGQoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwpAQCAtMTMzLDcgKzEzMyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0CiAKICAgICBhdXRv
KiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1l
LnByb3RvdHlwZS5zdWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGlt
ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnN1YnRyYWN0IGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgYXV0byByZXN1bHQgPSBwbGFp
blRpbWUtPnN1YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTE0OSwxMSArMTQ5LDExIEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNX
aXRoLCAoSlNHbG9iYWxPYmplY3QqIGdsCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS53aXRoIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5w
cm90b3R5cGUud2l0aCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3Ry
KTsKIAogICAgIEpTVmFsdWUgdGVtcG9yYWxUaW1lTGlrZSAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGlmICghdGVtcG9yYWxUaW1lTGlrZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQg
dG8gVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS53aXRoIG11c3QgYmUgYW4gb2JqZWN0Il9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUud2l0aCBtdXN0
IGJlIGFuIG9iamVjdCJfc3RyKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT53aXRo
KGdsb2JhbE9iamVjdCwgYXNPYmplY3QodGVtcG9yYWxUaW1lTGlrZSksIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0xNjks
NyArMTY5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8qIHBsYWluVGlt
ZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBl
LnVudGlsIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFs
LlBsYWluVGltZS5wcm90b3R5cGUudW50aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBw
bGFpblRpbWUiX3N0cik7CiAKICAgICBhdXRvKiBvdGhlciA9IFRlbXBvcmFsUGxhaW5UaW1lOjpm
cm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc3RkOjpudWxsb3B0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMTg4LDcgKzE4OCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNT
aW5jZSwgKEpTR2xvYmFsT2JqZWN0KiBnCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zaW5jZSBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9z
dHIpOwogCiAgICAgYXV0byogb3RoZXIgPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTIwNywxMSArMjA3LDExIEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNSb3VuZCwgKEpT
R2xvYmFsT2JqZWN0KiBnCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICgh
cGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBl
LnJvdW5kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAg
ICAgYXV0byBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAob3B0aW9u
cy5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5yb3VuZCByZXF1aXJl
cyBhbiBvcHRpb25zIGFyZ3VtZW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUucm91
bmQgcmVxdWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJfc3RyKTsKIAogICAgIGF1dG8gcm91bmRl
ZCA9IHBsYWluVGltZS0+cm91bmQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMjI3LDcgKzIyNyw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0ds
b2JhbE9iamVjdCoKIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFwbGFp
blRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVx
dWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAg
IGF1dG8qIG90aGVyID0gVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CkBAIC0yNDMsNyArMjQzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0dldElTT0ZpZWxkcywgKEpTR2xvYmFs
T2IKIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRp
bWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAgIEpTT2JqZWN0
KiBmaWVsZHMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGZpZWxk
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhciwgcGxhaW5UaW1lLT5j
YWxlbmRhcigpKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdAog
CiAgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFs
LlBsYWluVGltZS5wcm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b1N0cmluZyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUt
PnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKSk7CiB9CkBA
IC0yNzcsNyArMjc3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1RvSlNPTiwgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogcGxh
aW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90
b3R5cGUudG9KU09OIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudG9KU09OIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyh2bSwgcGxhaW5UaW1lLT50b1N0cmluZygpKSk7CiB9CkBAIC0yOTAsNyArMjkwLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1Rv
TG9jYWxlU3RyaW5nLCAoSlNHbG9iYWwKIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvTG9jYWxlU3Ry
aW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBs
YWluVGltZS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkpKTsKIH0KQEAgLTMwMSw3ICszMDEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVmFs
dWVPZiwgKEpTR2xvYmFsT2JqZWN0KgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1l
LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFyZSBQbGFpblRp
bWUgdmFsdWVzLCB1c2UgVGVtcG9yYWwuUGxhaW5UaW1lLmNvbXBhcmUiX3MpOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRp
bWUucHJvdG90eXBlLnZhbHVlT2YgbXVzdCBub3QgYmUgY2FsbGVkLiBUbyBjb21wYXJlIFBsYWlu
VGltZSB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5QbGFpblRpbWUuY29tcGFyZSJfc3RyKTsKIH0KIAog
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVy
SG91ciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTMxMSw3ICszMTEsNyBAQCBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyLCAoSlNHbG9iYWxP
YmplY3QqCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxh
aW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXBsYWlu
VGltZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuaG91ciBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmhvdXIg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+aG91cigpKSk7CiB9CkBAIC0z
MjMsNyArMzIzLDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlR2V0dGVyTWludXRlLCAoSlNHbG9iYWxPYmplY3QKIAogICAgIGF1dG8qIHBsYWlu
VGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5taW51dGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taW51dGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHBsYWluVGltZS0+bWludXRlKCkpKTsKIH0KQEAgLTMzNSw3ICszMzUsNyBAQCBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJTZWNv
bmQsIChKU0dsb2JhbE9iamVjdAogCiAgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2Fz
dDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnNlY29uZCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLnNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJf
c3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5z
ZWNvbmQoKSkpOwogfQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbGxpc2Vjb25kLCAoSlNHbG9iYWxP
CiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1l
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXBsYWluVGltZSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUubWlsbGlzZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWxs
aXNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5taWxsaXNlY29u
ZCgpKSk7CiB9CkBAIC0zNTksNyArMzU5LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQsIChKU0dsb2JhbE8KIAog
ICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghcGxhaW5UaW1lKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWNyb3NlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pY3Jvc2Vj
b25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm1pY3Jvc2Vjb25kKCkp
KTsKIH0KQEAgLTM3MSw3ICszNzEsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25kLCAoSlNHbG9iYWxPYgogCiAgICAg
YXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5Q
bGFpblRpbWUucHJvdG90eXBlLm5hbm9zZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5uYW5vc2Vjb25kIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm5hbm9zZWNvbmQoKSkpOwogfQpA
QCAtMzgzLDcgKzM4Myw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBw
bGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGlt
ZS5wcm90b3R5cGUuY2FsZW5kYXIgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRp
bWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocGxhaW5UaW1lLT5jYWxlbmRhcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKaW5kZXggMTAxYWQ3NmU3NjY2NDA3
NjY5NTkwNjVhYTVjNzRkZTY5NmFjODFlNC4uYzk3NDVjMmIxNjViZGM5MzRlNzY5YjEzMDM5YTBm
YTYzZTE2YWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZS5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBKU09iamVjdCogVGVtcG9yYWxU
aW1lWm9uZTo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRpbWVa
b25lTAogICAgIGlmICh1dGNPZmZzZXRGcm9tSW5zdGFudCkKICAgICAgICAgcmV0dXJuIFRlbXBv
cmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZzZXQodm0sIGdsb2JhbE9iamVjdC0+dGltZVpv
bmVTdHJ1Y3R1cmUoKSwgdXRjT2Zmc2V0RnJvbUluc3RhbnQudmFsdWUoKSk7CiAKLSAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVU
QyBvZmZzZXQgc3RyaW5nLCBUaW1lWm9uZSBpZGVudGlmaWVyLCBvciB0ZW1wb3JhbCBJbnN0YW50
IHN0cmluZyJfcyk7CisgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJh
cmd1bWVudCBuZWVkcyB0byBiZSBVVEMgb2Zmc2V0IHN0cmluZywgVGltZVpvbmUgaWRlbnRpZmll
ciwgb3IgdGVtcG9yYWwgSW5zdGFudCBzdHJpbmciX3N0cik7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1l
Wm9uZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGQ3NTNjMDMxZTFjZGI3ZGEyMDMyY2U4
ODA4MGEzMzllYzRiNDBhZi4uZjg4MGI3NjMyZDlhOGJmZmFhNTNiZGI4ZTAyODZiNTlkYWMxYzNl
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1l
Wm9uZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFRlbXBvcmFs
VGltZVpvbmVDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1CiAKIHZvaWQgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUqIHRlbXBvcmFsVGlt
ZVpvbmVQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJUaW1l
Wm9uZSJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlRpbWVab25lIl9zdHIsIFByb3Bl
cnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgdGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OwogICAgIHRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQpAQCAtOTUsNyArOTUs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxUaW1lWm9uZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAgc3RkOjpvcHRpb25hbDxUaW1lWm9u
ZUlEPiBpZGVudGlmaWVyID0gSVNPODYwMTo6cGFyc2VUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJp
bmcpOwogICAgIGlmICghaWRlbnRpZmllcikgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVUQyBvZmZzZXQgc3RyaW5n
IG9yIFRpbWVab25lIGlkZW50aWZpZXIiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVUQyBvZmZzZXQgc3RyaW5n
IG9yIFRpbWVab25lIGlkZW50aWZpZXIiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJv
bUlEKHZtLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIudmFsdWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBl
LmNwcAppbmRleCA2ZjU3NTU3OWUzZWFmYjYxMzkzZjE1MWM2YmZiYjRhM2NhY2Y3YTgxLi5lZTVh
MDQyYTI0ZDk0N2NhZThkZjljZjVlNDBjYWQ1MjI2N2ZjZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBl
LmNwcApAQCAtOTEsNyArOTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxU
aW1lWm9uZVByb3RvdHlwZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0
byogdGltZVpvbmUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsVGltZVpvbmUqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aW1lWm9uZSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlRpbWVab25lLnBy
b3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFRpbWVab25lIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLlRpbWVab25lLnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIFRpbWVab25lIl9zdHIpOwogCiAgICAgYXV0byB2YXJpYW50ID0gdGltZVpvbmUt
PnRpbWVab25lKCk7CiAgICAgYXV0byBzdHJpbmcgPSBXVEY6OnN3aXRjaE9uKHZhcmlhbnQsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IGQ4OGJhMjhjM2Yz
MDkyNzJlM2RhMmVjNDI2YjkzOWVkMWU5OTUxY2YuLjVkYmQ5Nzg1NjcyYmM3OWI5ZWRiMTc2MDkz
MWE2NzNjOTMzNjdjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQu
Y3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgVHlwZVNldDo6aW52YWxpZGF0ZUNhY2hlKFZNJiB2
bSkKIFN0cmluZyBUeXBlU2V0OjpkdW1wVHlwZXMoKSBjb25zdAogewogICAgIGlmIChtX3NlZW5U
eXBlcyA9PSBUeXBlTm90aGluZykKLSAgICAgICAgcmV0dXJuICIoVW5yZWFjaGVkIFN0YXRlbWVu
dCkiX3M7CisgICAgICAgIHJldHVybiAiKFVucmVhY2hlZCBTdGF0ZW1lbnQpIl9zdHI7CiAKICAg
ICBTdHJpbmdCdWlsZGVyIHNlZW47CiAKQEAgLTE2Nyw0OCArMTY3LDQ4IEBAIFN0cmluZyBUeXBl
U2V0OjpkaXNwbGF5TmFtZSgpIGNvbnN0CiAgICAgLy8gVGhlcmVmb3JlLCBtb3JlIHNwZWNpZmlj
IHR5cGVzIG11c3QgYmUgY2hlY2tlZCBmaXJzdC4KIAogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1U
byhUeXBlRnVuY3Rpb24pKQotICAgICAgICByZXR1cm4gIkZ1bmN0aW9uIl9zOworICAgICAgICBy
ZXR1cm4gIkZ1bmN0aW9uIl9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVVbmRl
ZmluZWQpKQotICAgICAgICByZXR1cm4gIlVuZGVmaW5lZCJfczsKKyAgICAgICAgcmV0dXJuICJV
bmRlZmluZWQiX3N0cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bGwpKQotICAg
ICAgICByZXR1cm4gIk51bGwiX3M7CisgICAgICAgIHJldHVybiAiTnVsbCJfc3RyOwogICAgIGlm
IChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlQm9vbGVhbikpCi0gICAgICAgIHJldHVybiAiQm9vbGVh
biJfczsKKyAgICAgICAgcmV0dXJuICJCb29sZWFuIl9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29u
Zm9ybVRvKFR5cGVBbnlJbnQpKQotICAgICAgICByZXR1cm4gIkludGVnZXIiX3M7CisgICAgICAg
IHJldHVybiAiSW50ZWdlciJfc3RyOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlTnVt
YmVyIHwgVHlwZUFueUludCkpCi0gICAgICAgIHJldHVybiAiTnVtYmVyIl9zOworICAgICAgICBy
ZXR1cm4gIk51bWJlciJfc3RyOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlU3RyaW5n
KSkKLSAgICAgICAgcmV0dXJuICJTdHJpbmciX3M7CisgICAgICAgIHJldHVybiAiU3RyaW5nIl9z
dHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVTeW1ib2wpKQotICAgICAgICByZXR1
cm4gIlN5bWJvbCJfczsKKyAgICAgICAgcmV0dXJuICJTeW1ib2wiX3N0cjsKICAgICBpZiAoZG9l
c1R5cGVDb25mb3JtVG8oVHlwZUJpZ0ludCkpCi0gICAgICAgIHJldHVybiAiQmlnSW50Il9zOwor
ICAgICAgICByZXR1cm4gIkJpZ0ludCJfc3RyOwogCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRv
KFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiKD8pIl9zOworICAg
ICAgICByZXR1cm4gIig/KSJfc3RyOwogCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVG
dW5jdGlvbiB8IFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiRnVu
Y3Rpb24/Il9zOworICAgICAgICByZXR1cm4gIkZ1bmN0aW9uPyJfc3RyOwogICAgIGlmIChkb2Vz
VHlwZUNvbmZvcm1UbyhUeXBlQm9vbGVhbiB8IFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0g
ICAgICAgIHJldHVybiAiQm9vbGVhbj8iX3M7CisgICAgICAgIHJldHVybiAiQm9vbGVhbj8iX3N0
cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZUFueUludCB8IFR5cGVOdWxsIHwgVHlw
ZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiSW50ZWdlcj8iX3M7CisgICAgICAgIHJldHVy
biAiSW50ZWdlcj8iX3N0cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bWJlciB8
IFR5cGVBbnlJbnQgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4g
Ik51bWJlcj8iX3M7CisgICAgICAgIHJldHVybiAiTnVtYmVyPyJfc3RyOwogICAgIGlmIChkb2Vz
VHlwZUNvbmZvcm1UbyhUeXBlU3RyaW5nIHwgVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAg
ICAgICAgcmV0dXJuICJTdHJpbmc/Il9zOworICAgICAgICByZXR1cm4gIlN0cmluZz8iX3N0cjsK
ICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZVN5bWJvbCB8IFR5cGVOdWxsIHwgVHlwZVVu
ZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiU3ltYm9sPyJfczsKKyAgICAgICAgcmV0dXJuICJT
eW1ib2w/Il9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVCaWdJbnQgfCBUeXBl
TnVsbCB8IFR5cGVVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gIkJpZ0ludD8iX3M7CisgICAg
ICAgIHJldHVybiAiQmlnSW50PyJfc3RyOwogICAgCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRv
KFR5cGVPYmplY3QgfCBUeXBlRnVuY3Rpb24gfCBUeXBlU3RyaW5nKSkKLSAgICAgICAgcmV0dXJu
ICJPYmplY3QiX3M7CisgICAgICAgIHJldHVybiAiT2JqZWN0Il9zdHI7CiAgICAgaWYgKGRvZXNU
eXBlQ29uZm9ybVRvKFR5cGVPYmplY3QgfCBUeXBlRnVuY3Rpb24gfCBUeXBlU3RyaW5nIHwgVHlw
ZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuICJPYmplY3Q/Il9zOworICAg
ICAgICByZXR1cm4gIk9iamVjdD8iX3N0cjsKIAotICAgIHJldHVybiAiKG1hbnkpIl9zOworICAg
IHJldHVybiAiKG1hbnkpIl9zdHI7CiB9CiAKIFN0cmluZyBUeXBlU2V0OjpsZWFzdENvbW1vbkFu
Y2VzdG9yKCkgY29uc3QKQEAgLTM4MSw3ICszODEsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6
OmxlYXN0Q29tbW9uQW5jZXN0b3IoY29uc3QgVmVjdG9yPFJlZjxTdHJ1Y3R1cmVTaGFwZT4+JiBz
aAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdW5saWtlbHkgdG8gaGFwcGVuLCBiZWNhdXNl
IHdlIHVzdWFsbHkgYm90dG9tIG91dCBhdCAiT2JqZWN0IiwgYnV0IHRoZXJlIGFyZSBzb21lIHNl
dHMgb2YgT2JqZWN0cwogICAgICAgICAgICAgICAgIC8vIHRoYXQgbWF5IGNhdXNlIHRoaXMgYmVo
YXZpb3IuIFdlIGZhbGwgYmFjayB0byAiT2JqZWN0IiBiZWNhdXNlIGl0J3Mgb3VyIHZlcnNpb24g
b2YgVG9wLgogICAgICAgICAgICAgICAgIGlmICghb3JpZ2luLT5tX3Byb3RvKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gIk9iamVjdCJfczsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICJPYmplY3QiX3N0cjsKICAgICAgICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW4tPm1fcHJvdG8u
Z2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVTZXQuaAppbmRleCA4MGJiNDA3ZWYxZDI2Yjg0OGQwNmM1ZTcxMGM2MGEwOWI1OGFm
YjI2Li5hY2JjZTM3YmU1ZDI3MTEzYzkwZTBlMjJlMDdlYTU3Y2VlYmJiYjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgc3RyaW5nUmVwcmVzZW50YXRpb24oKTsKICAgICBTdHJpbmcgdG9KU09OU3Ry
aW5nKCkgY29uc3Q7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVj
dHVyZURlc2NyaXB0aW9uPiBpbnNwZWN0b3JSZXByZXNlbnRhdGlvbigpOwotICAgIHZvaWQgc2V0
Q29uc3RydWN0b3JOYW1lKFN0cmluZyBuYW1lKSB7IG1fY29uc3RydWN0b3JOYW1lID0gKG5hbWUu
aXNFbXB0eSgpID8gIk9iamVjdCJfcyA6IG5hbWUpOyB9CisgICAgdm9pZCBzZXRDb25zdHJ1Y3Rv
ck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fY29uc3RydWN0b3JOYW1lID0gKG5hbWUuaXNF
bXB0eSgpID8gIk9iamVjdCJfc3RyIDogbmFtZSk7IH0KICAgICBTdHJpbmcgY29uc3RydWN0b3JO
YW1lKCkgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvck5hbWU7IH0KICAgICB2b2lkIHNldFByb3RvKFJl
ZjxTdHJ1Y3R1cmVTaGFwZT4mJiBzaGFwZSkgeyBtX3Byb3RvID0gV1RGTW92ZShzaGFwZSk7IH0K
ICAgICB2b2lkIGVudGVyRGljdGlvbmFyeU1vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAppbmRleCBlMzJkY2IwYWQzNGIyM2JjZGEyNDcxYTAzZWU5MmNiNTIzMzM4MjM4Li5m
NjQyZjkyZGQyOGIzZDU4NGU1N2Q0MDVhMGI0MGY3NmUwNDcwNjU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMjE5LDcgKzEyMTksNyBAQCB2b2lkIFZNOjpkdW1wVHlw
ZVByb2ZpbGVyRGF0YSgpCiAgICAgaWYgKCF0eXBlUHJvZmlsZXIoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgdHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKCp0aGlzLCAiVk0g
RHVtcCBUeXBlcyJfcyk7CisgICAgdHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVz
KCp0aGlzLCAiVk0gRHVtcCBUeXBlcyJfc3RyKTsKICAgICB0eXBlUHJvZmlsZXIoKS0+ZHVtcFR5
cGVQcm9maWxlckRhdGEoKnRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAppbmRleCA3ZWIwZmU0NTU0MTc5YTUx
NGIzMzI4ZjNkMmQ3NjI0NGRiYTRlZTRmLi5mNWZiNjllOWE2N2U3NDc4Yzc4ZmYwMWI3NmRmNDEw
MGE2NzdiZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdl
YWtNYXBDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHQKIAogdm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
V2Vha01hcFByb3RvdHlwZSogcHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCAwLCAiV2Vha01hcCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1
cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIldlYWtNYXAi
X3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0K
IApAQCAtNzUsNyArNzUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0V2Vh
a01hcCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogCiAgICAgYXV0byBh
ZGRlckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbik7CiAg
ICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25l
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
J3NldCcgcHJvcGVydHkgb2YgYSBXZWFrTWFwIHNob3VsZCBiZSBjYWxsYWJsZS4iX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3NldCcg
cHJvcGVydHkgb2YgYSBXZWFrTWFwIHNob3VsZCBiZSBjYWxsYWJsZS4iX3N0cik7CiAKICAgICBi
b29sIGNhblBlcmZvcm1GYXN0U2V0ID0gYWRkZXJGdW5jdGlvbkNhbGxEYXRhLnR5cGUgPT0gQ2Fs
bERhdGE6OlR5cGU6Ok5hdGl2ZSAmJiBhZGRlckZ1bmN0aW9uQ2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uID09IHByb3RvRnVuY1dlYWtNYXBTZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAKaW5kZXggYjg1NmQ3NjEzNWJmNjFiZmEz
ZDM4MzRiNmNlMDUzZDdiYzRmNmY4My4uMWM4MGE2ZDc1OTI2MDdiMjJhN2ZiMzYyYzBhNjFjMzYw
NTc5MjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cFByb3RvdHlwZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNX
ZWFrTWFwKiBnZXRXZWFrTWFwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5M
SUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBub24tb2JqZWN0Il9z
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBX
ZWFrTWFwIGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtNjYsNyArNjYsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dl
YWtNYXAqIGdldFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZQog
ICAgIGlmIChMSUtFTFkobWFwKSkKICAgICAgICAgcmV0dXJuIG1hcDsKIAotICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBh
IG5vbi1XZWFrTWFwIG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtNYXAgb2JqZWN0
Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcAppbmRl
eCBmYmZhZjM1Yzc4YmY2ZTk2ODcxY2MwZDc0MTAxZmNmYmIwN2RlOTg2Li5iNjdlZWFhYzFjNTZk
ZmJkMWFlOTA4ZTQwNWU1ZjYzOGRlZjFiYmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLAogCiB2b2lkIFdlYWtPYmplY3RSZWZD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWFrT2JqZWN0UmVmUHJvdG90eXBl
KiBwcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsICJXZWFrUmVm
Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiV2Vha1JlZiJfc3RyLCBQcm9wZXJ0eUFk
ZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCkBAIC02MSw3ICs2MSw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXZWFrUmVmLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGaXJzdCBhcmd1bWVudCB0byBXZWFrUmVmIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3Qg
YXJndW1lbnQgdG8gV2Vha1JlZiBzaG91bGQgYmUgYW4gb2JqZWN0Il9zdHIpOwogCiAgICAgSlNP
YmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOwogICAg
IFN0cnVjdHVyZSogd2Vha09iamVjdFJlZlN0cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJV
Q1RVUkUodm0sIHdlYWtPYmplY3RSZWZTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtPYmplY3RSZWZQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHAKaW5kZXggODNhMjA0NjA5ZDlhZDdiYWU4YWE4OGIx
MjI4YzFjYjc2NDllZjgwOC4uYTZhZmRiNGFkYzRiOGEyNjEwMDFkZjdmNjZmNTUxZjM1MDliYzU1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJl
ZlByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09i
amVjdFJlZlByb3RvdHlwZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0
aWMgSlNXZWFrT2JqZWN0UmVmKiBnZXRXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBp
ZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1JlZiBmdW5jdGlvbiBvbiBub24tb2Jq
ZWN0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNh
bGxlZCBXZWFrUmVmIGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3N0cik7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtNjAsNyArNjAsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBKU1dlYWtPYmplY3RSZWYqIGdldFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSgogICAgIGlmIChMSUtFTFkocmVmKSkKICAgICAgICAgcmV0dXJuIHJlZjsKIAotICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1JlZiBmdW5jdGlv
biBvbiBhIG5vbi1XZWFrUmVmIG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkNhbGxlZCBXZWFrUmVmIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtSZWYg
b2JqZWN0Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBjOGRh
YWI0NmIwM2RiMDNlMGU3YWFhZjcxMGY5MTM0ODQxNWY2YWIwLi4zM2Q3MGEwMTgzODE3ZDU3NWE2
ZmNiMGUyMmY5MmJiODY2NmU0OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIFdlYWtTZXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCBudWxscHQKIAogdm9pZCBXZWFrU2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgV2Vha1NldFByb3RvdHlwZSogcHJvdG90eXBlKQogewotICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCAwLCAiV2Vha1NldCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
MCwgIldlYWtTZXQiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKIH0KIApAQCAtNzYsNyArNzYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
Y29uc3RydWN0V2Vha1NldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgog
CiAgICAgYXV0byBhZGRlckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJG
dW5jdGlvbik7CiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRh
OjpUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiJ2FkZCcgcHJvcGVydHkgb2YgYSBXZWFrU2V0IHNob3VsZCBiZSBjYWxsYWJs
ZS4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiJ2FkZCcgcHJvcGVydHkgb2YgYSBXZWFrU2V0IHNob3VsZCBiZSBjYWxsYWJsZS4iX3N0
cik7CiAKICAgICBib29sIGNhblBlcmZvcm1GYXN0QWRkID0gYWRkZXJGdW5jdGlvbkNhbGxEYXRh
LnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZSAmJiBhZGRlckZ1bmN0aW9uQ2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uID09IHByb3RvRnVuY1dlYWtTZXRBZGQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKaW5kZXggYzE3ZmZj
ZjA3YjY4MWVjOGFhZGZjOGExOWZmMzc1MDAwMDhjZTBkNy4uMGVhYjkzYTkyY2ZhNTI1MTRiZGYx
MjY2ZDcxYWFmNmUzY2UzNDk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgSlNXZWFrU2V0KiBnZXRXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBu
b24tb2JqZWN0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3N0cik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNjYsNyArNjYsNyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU1dlYWtTZXQqIGdldFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZQogICAgIGlmIChMSUtFTFkoc2V0KSkKICAgICAgICAgcmV0dXJuIHNldDsKIAot
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1NldCBm
dW5jdGlvbiBvbiBhIG5vbi1XZWFrU2V0IG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIGEgbm9uLVdl
YWtTZXQgb2JqZWN0Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA3YTNi
Mzc5MjRiZTU2MDU0N2ZjMmRmZmUzMzJkM2U2NmJmOGE5NWY2Li5mODUxZDdjNGQxODRlZWViNDYz
ZjdkOTYzNzM5ZjM2NTZlMzEzZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25z
dCBTdHJpbmcmIG5ldwogICAgIG5ld1Byb3ZpZGVyU3RyLmFwcGVuZChvcmlnSGVhZGVyKTsKICAg
ICBuZXdQcm92aWRlclN0ci5hcHBlbmQobmV3Qm9keSk7CiAKLSAgICBhdXRvIG92ZXJyaWRkZW4g
PSAiPG92ZXJyaWRkZW4+Il9zOworICAgIGF1dG8gb3ZlcnJpZGRlbiA9ICI8b3ZlcnJpZGRlbj4i
X3N0cjsKICAgICBVUkwgdXJsKHsgfSwgb3ZlcnJpZGRlbik7CiAgICAgUmVmPFNvdXJjZVByb3Zp
ZGVyPiBuZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUobmV3UHJvdmlk
ZXJTdHIsIFNvdXJjZU9yaWdpbiB7IHVybCB9LCBvdmVycmlkZGVuKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDNmYzcxMTg2YmUyM2M0Nzg2MTlm
Mzc4NTA2ZGU0MTJiYmQ1N2FjNjYuLjRkM2QxNmEzMmE2YjgxYmY0OGRkYmRjNjQ1NmRkZTI4NzQw
Y2ZkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAg
LTEyODcsNyArMTI4Nyw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkb21KSVRHZXR0ZXJD
b21wbGV4Q3VzdG9tR2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgaWYgKCF0aGlz
T2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlKTsKICAgICBpZiAodGhpc09iamVjdC0+bV9lbmFibGVFeGNlcHRpb24pCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRE9NSklUR2V0dGVyQ29tcGxleCBzbG93IGNhbGwg
ZXhjZXB0aW9uIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIkRP
TUpJVEdldHRlckNvbXBsZXggc2xvdyBjYWxsIGV4Y2VwdGlvbiJfc3RyKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFsdWUoKSkpOwogfQogCkBA
IC0xMzAyLDcgKzEzMDIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04oZG9tSklUR2V0dGVy
Q29tcGxleFNsb3dDYWxsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsTwogICAgIGF1dG8qIGRv
bWppdEdldHRlckNvbXBsZXggPSBqc0R5bmFtaWNDYXN0PERPTUpJVEdldHRlckNvbXBsZXgqPih2
bSwgb2JqZWN0KTsKICAgICBpZiAoZG9taml0R2V0dGVyQ29tcGxleCkgewogICAgICAgICBpZiAo
ZG9taml0R2V0dGVyQ29tcGxleC0+bV9lbmFibGVFeGNlcHRpb24pCi0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIkRPTUpJVEdldHRlckNvbXBsZXggc2xvdyBjYWxsIGV4
Y2VwdGlvbiJfcykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
RE9NSklUR2V0dGVyQ29tcGxleCBzbG93IGNhbGwgZXhjZXB0aW9uIl9zdHIpKSk7CiAgICAgfQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIob2JqZWN0LT52YWx1ZSgpKSk7CiB9
CkBAIC0zMDMwLDcgKzMwMzAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25D
cmVhdGVXYXNtU3RyZWFtaW5nQ29tcGlsZXJGb3JDb21waWxlLCAoSlNHbG9iYQogCiAgICAgYXV0
byBjYWxsYmFjayA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICBpZiAoIWNhbGxiYWNrKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgSlMg
ZnVuY3Rpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgSlMgZnVuY3Rpb24iX3N0cik7CiAK
ICAgICBhdXRvIGNvbXBpbGVyID0gV2FzbVN0cmVhbWluZ0NvbXBpbGVyOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgV2FzbTo6Q29tcGlsZXJNb2RlOjpWYWxpZGF0aW9uLCBudWxscHRyKTsKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpAQCAtMzA1Miw3ICszMDUyLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWluZ0NvbXBpbGVyRm9y
SW5zdGFudGlhdGUsIChKU0cKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBqc0R5bmFtaWNDYXN0PEpT
RnVuY3Rpb24qPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFjYWxsYmFj
aykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IGlz
IG5vdCBhIEpTIGZ1bmN0aW9uIl9zdHIpOwogCiAgICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9IGlt
cG9ydEFyZ3VtZW50LmdldE9iamVjdCgpOwpAQCAtMzEzMSw3ICszMTMxLDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmEKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBJbXB1cmVHZXR0ZXIqIGltcHVyZUdldHRlciA9IGpzRHluYW1pY0Nhc3Q8SW1w
dXJlR2V0dGVyKj4odm0sIGFzT2JqZWN0KGJhc2UuYXNDZWxsKCkpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWltcHVyZUdldHRlcikpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhbiBJbXB1cmVHZXR0ZXIiX3MpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGFuIElt
cHVyZUdldHRlciJfc3RyKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAg
fQogICAgIGltcHVyZUdldHRlci0+c2V0RGVsZWdhdGUodm0sIGFzT2JqZWN0KGRlbGVnYXRlLmFz
Q2VsbCgpKSk7CkBAIC0zMTkyLDcgKzMxOTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25DcmVhdGVFbGVtZW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwog
CiAgICAgUm9vdCogcm9vdCA9IGpzRHluYW1pY0Nhc3Q8Um9vdCo+KHZtLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICBpZiAoIXJvb3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiQ2Fubm90IGNyZWF0ZSBFbGVtZW50IHdpdGhvdXQgYSBSb290LiJfcykpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgY3JlYXRlIEVsZW1lbnQg
d2l0aG91dCBhIFJvb3QuIl9zdHIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFbGVt
ZW50OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcm9vdCkpOwogfQogCkBAIC0zMjI1LDcgKzMy
MjUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25HZXRIaWRkZW5WYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBTaW1wbGVPYmplY3QqIHNpbXBs
ZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8U2ltcGxlT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghc2ltcGxlT2JqZWN0KSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2YgZ2V0SGlk
ZGVuVmFsdWUgdGVzdCBmdW5jdGlvbiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIHVzZSBvZiBnZXRIaWRkZW5WYWx1ZSB0ZXN0IGZ1bmN0
aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaW1wbGVPYmplY3QtPmhpZGRlblZhbHVlKCkpOwpAQCAt
MzI0MCw3ICszMjQwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uU2V0SGlk
ZGVuVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgU2ltcGxlT2Jq
ZWN0KiBzaW1wbGVPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFNpbXBsZU9iamVjdCo+KHZtLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIXNpbXBsZU9iamVjdCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgdXNl
IG9mIHNldEhpZGRlblZhbHVlIHRlc3QgZnVuY3Rpb24iX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2Ygc2V0SGlkZGVuVmFsdWUg
dGVzdCBmdW5jdGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAg
ICAgfQogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMzI4
OCw3ICszMjg4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRmluZFR5cGVG
b3JFeHByZXNzaW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBSRUxFQVNFX0FTU0VSVCh2bS50eXBlUHJvZmlsZXIoKSk7Ci0gICAgdm0udHlwZVByb2ZpbGVy
TG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvbkZp
bmRUeXBlRm9yRXhwcmVzc2lvbiJfcyk7CisgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nl
c3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvbkZpbmRUeXBlRm9yRXhw
cmVzc2lvbiJfc3RyKTsKIAogICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0NhbGxhYmxl
KHZtKSk7CkBAIC0zMzA4LDcgKzMzMDgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVu
Y3Rpb25SZXR1cm5UeXBlRm9yLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLnR5cGVQcm9maWxlcigpKTsKLSAgICB2
bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJqc2MgVGVzdGluZyBB
UEk6IGZ1bmN0aW9uUmV0dXJuVHlwZUZvciJfcyk7CisgICAgdm0udHlwZVByb2ZpbGVyTG9nKCkt
PnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvblJldHVyblR5
cGVGb3IiX3N0cik7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNDYWxsYWJsZSh2
bSkpOwpAQCAtMzQ5OCw3ICszNDk4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0
aW9uTG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2wKIAogICAg
IEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0ganNEeW5hbWljQ2FzdDxHZXR0ZXJTZXR0ZXIq
Pih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFnZXR0ZXJT
ZXR0ZXIpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJ
bnZhbGlkIHVzZSBvZiBsb2FkR2V0dGVyRnJvbUdldHRlclNldHRlciB0ZXN0IGZ1bmN0aW9uOiBh
cmd1bWVudCBpcyBub3QgYSBHZXR0ZXJTZXR0ZXIiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2YgbG9hZEdldHRlckZyb21HZXR0
ZXJTZXR0ZXIgdGVzdCBmdW5jdGlvbjogYXJndW1lbnQgaXMgbm90IGEgR2V0dGVyU2V0dGVyIl9z
dHIpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKQEAgLTM2NTks
NyArMzY1OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblNldFVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBKU0FycmF5KiBhcnJh
eSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoIWFycmF5KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gYXJyYXkiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gYXJyYXkiX3N0cik7CiAKICAgICBWZWN0
b3I8U3RyaW5nPiBsYW5ndWFnZXM7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPmxlbmd0
aCgpOwpAQCAtMzczNyw3ICszNzM3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0
aW9uVG9DYWNoZWFibGVEaWN0aW9uYXJ5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIAogICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQg
dG8gYmUgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVj
dCJfc3RyKTsKICAgICBpZiAoIW9iamVjdC0+c3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSkKICAgICAgICAgb2JqZWN0LT5jb252ZXJ0VG9EaWN0aW9uYXJ5KHZtKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdCk7CkBAIC0zNzUxLDcgKzM3NTEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Ub1VuY2FjaGVhYmxlRGljdGlvbmFyeSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFv
YmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJFeHBlY3RlZCBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQg
Zmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zdHIpOwogICAgIG9iamVjdC0+Y29udmVy
dFRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5KHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRlbnRlci5oIGIvU291
cmNlL1dURi93dGYvSW5kZW50ZXIuaAppbmRleCBjZGVkN2MyNjE1ZmFkODk3ZmZjNmViYzY2MmI4
OGZhM2I0NTUyZGIyLi4xNjI1NjE5NjVhMTY4YjhiMTkwYjg5ZTFkMTYyNmRhMjljYzVlZWQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbmRlbnRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0luZGVudGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBJbmRl
bnRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5kZW50
ZXIodW5zaWduZWQgY291bnQgPSAwLCBTdHJpbmcgc3RyaW5nID0gIiAgIl9zKQorICAgIEluZGVu
dGVyKHVuc2lnbmVkIGNvdW50ID0gMCwgU3RyaW5nIHN0cmluZyA9ICIgICJfc3RyKQogICAgICAg
ICA6IG1fY291bnQoY291bnQpCiAgICAgICAgICwgbV9zdHJpbmcoc3RyaW5nKQogICAgIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dn
ZXIuaAppbmRleCBlNzQ0YTc4Nzc3ZWQzNGUzMTkyZGNlYzNlYzVjY2VkYjE5OWUzNGYxLi4xMWYx
OTkyZmY2NmE0NTU5YzMwMjg2NzU0Zjc2ZGNmYTk0ZTdkZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Mb2dnZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaApAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBM
b2dBcmd1bWVudCB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgYm9vbD46OnZhbHVlLCBTdHJpbmc+Ojp0
eXBlIHRvU3RyaW5nKGJvb2wgYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50ID8gInRydWUiX3Mg
OiAiZmFsc2UiX3M7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBib29sPjo6dmFsdWUsIFN0cmluZz46
OnR5cGUgdG9TdHJpbmcoYm9vbCBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQgPyAidHJ1ZSJf
c3RyIDogImZhbHNlIl9zdHI7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGlj
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBpbnQ+Ojp2YWx1ZSwgU3Ry
aW5nPjo6dHlwZSB0b1N0cmluZyhpbnQgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KGFyZ3VtZW50KTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIHVuc2lnbmVkPjo6dmFsdWUsIFN0cmlu
Zz46OnR5cGUgdG9TdHJpbmcodW5zaWduZWQgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVt
YmVyKGFyZ3VtZW50KTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIHVuc2lnbmVkIGxvbmc+Ojp2YWx1
ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyh1bnNpZ25lZCBsb25nIGFyZ3VtZW50KSB7IHJldHVy
biBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCmluZGV4IDRiODI4
YTZmNmZlODBiODY0MTA5N2I5Yjk0ZjcwMmQ4YjlmMTA3NTIuLmNiNTQ3MWRjNzM1NjZlYjVjNDY4
OWE1MzA4YjNiNTIyODMwYTI1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lZGlhVGlt
ZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcApAQCAtNTY0LDI0ICs1NjQs
MjQgQEAgUmVmPEpTT046Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBjb25zdAog
ICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKIAogICAgIGlmIChoYXNE
b3VibGVWYWx1ZSgpKSB7Ci0gICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2YWx1ZSJfcywgdG9E
b3VibGUoKSk7CisgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2YWx1ZSJfc3RyLCB0b0RvdWJs
ZSgpKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKICAgICBpZiAoaXNJbnZhbGlk
KCkpCi0gICAgICAgIG9iamVjdC0+c2V0Qm9vbGVhbigiaW52YWxpZCJfcywgdHJ1ZSk7CisgICAg
ICAgIG9iamVjdC0+c2V0Qm9vbGVhbigiaW52YWxpZCJfc3RyLCB0cnVlKTsKICAgICBlbHNlIGlm
IChpc0luZGVmaW5pdGUoKSkKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCAi
TmFOIl9zKTsKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zdHIsICJOYU4iX3N0
cik7CiAgICAgZWxzZSBpZiAoaXNQb3NpdGl2ZUluZmluaXRlKCkpCi0gICAgICAgIG9iamVjdC0+
c2V0U3RyaW5nKCJ2YWx1ZSJfcywgIlBPU0lUSVZFX0lORklOSVRZIl9zKTsKKyAgICAgICAgb2Jq
ZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zdHIsICJQT1NJVElWRV9JTkZJTklUWSJfc3RyKTsKICAg
ICBlbHNlIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJp
bmcoInZhbHVlIl9zLCAiTkVHQVRJVkVfSU5GSU5JVFkiX3MpOworICAgICAgICBvYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3N0ciwgIk5FR0FUSVZFX0lORklOSVRZIl9zdHIpOwogICAgIGVsc2UK
LSAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoInZhbHVlIl9zLCB0b0RvdWJsZSgpKTsKKyAgICAg
ICAgb2JqZWN0LT5zZXREb3VibGUoInZhbHVlIl9zdHIsIHRvRG91YmxlKCkpOwogCi0gICAgb2Jq
ZWN0LT5zZXREb3VibGUoIm51bWVyYXRvciJfcywgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3RpbWVW
YWx1ZSkpOwotICAgIG9iamVjdC0+c2V0SW50ZWdlcigiZGVub21pbmF0b3IiX3MsIG1fdGltZVNj
YWxlKTsKLSAgICBvYmplY3QtPnNldEludGVnZXIoImZsYWdzIl9zLCBtX3RpbWVGbGFncyk7Cisg
ICAgb2JqZWN0LT5zZXREb3VibGUoIm51bWVyYXRvciJfc3RyLCBzdGF0aWNfY2FzdDxkb3VibGU+
KG1fdGltZVZhbHVlKSk7CisgICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJkZW5vbWluYXRvciJfc3Ry
LCBtX3RpbWVTY2FsZSk7CisgICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJmbGFncyJfc3RyLCBtX3Rp
bWVGbGFncyk7CiAKICAgICByZXR1cm4gb2JqZWN0OwogfQpAQCAtNjA5LDggKzYwOSw4IEBAIFN0
cmluZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIG9i
amVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAKLSAgICBvYmplY3QtPnNldE9iamVjdCgi
c3RhcnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVjdCgpKTsKLSAgICBvYmplY3QtPnNldE9iamVjdCgi
ZW5kIl9zLCBlbmQudG9KU09OT2JqZWN0KCkpOworICAgIG9iamVjdC0+c2V0T2JqZWN0KCJzdGFy
dCJfc3RyLCBzdGFydC50b0pTT05PYmplY3QoKSk7CisgICAgb2JqZWN0LT5zZXRPYmplY3QoImVu
ZCJfc3RyLCBlbmQudG9KU09OT2JqZWN0KCkpOwogCiAgICAgcmV0dXJuIG9iamVjdC0+dG9KU09O
U3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIvU291cmNl
L1dURi93dGYvVVJMLmNwcAppbmRleCA0ODBmZWM2NDQyNmIwODZhODVmYzBkMThjMjllNzgxOTdl
NGZkNDdiLi5kOTdmNzI3ZjMyODYzY2E4Y2NjMzg0NmQ5MWJhY2U2NWQ5M2I1YjY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAK
QEAgLTEwNDQsNyArMTA0NCw3IEBAIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKFN0cmluZ1Zp
ZXcgZGF0YVVSTCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogICAgIGlm
IChpbmRleCA9PSA1KQotICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgICAgIHJl
dHVybiAidGV4dC9wbGFpbiJfc3RyOwogICAgIEFTU0VSVChpbmRleCA+PSA1KTsKICAgICByZXR1
cm4gZGF0YVVSTC5zdWJzdHJpbmcoNSwgaW5kZXggLSA1KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcAppbmRleCBjMDRjNTViYzYwM2QyODFkMGNh
Mzg5MjBlYmE4Yzc5ZTVlNjkyOTgxLi5lNWRlZGUyNzZjODg1MmVmMWNlOTZhYzIyMWZiZTdjOGE1
ZjBkZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcApAQCAtOTksNyArOTksNyBAQCBWZWN0
b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoU2hvdWxkTWluaW1pemVM
YW5ndWFnZXMgc2hvdWxkTWluaQogCiAgICAgQ0ZJbmRleCBwbGF0Zm9ybUxhbmd1YWdlc0NvdW50
ID0gQ0ZBcnJheUdldENvdW50KHBsYXRmb3JtTGFuZ3VhZ2VzLmdldCgpKTsKICAgICBpZiAoIXBs
YXRmb3JtTGFuZ3VhZ2VzQ291bnQpCi0gICAgICAgIHJldHVybiB7ICJlbiJfcyB9OworICAgICAg
ICByZXR1cm4geyAiZW4iX3N0ciB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzOwog
ICAgIGxhbmd1YWdlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBsYXRmb3JtTGFuZ3VhZ2VzQ291
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IDNhOTFhNjc3ZDVjMDM4ZTAzYjdj
NWViMzJmMzczM2JlZmMwOGNhNTUuLjM0ODVlOGZlYWNiZGZkZmVhMzE1NWM4YzMxNmE2NjhjYjNj
OTJhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCBT
dHJpbmcqIHN0cmluZyhjb25zdCBjaGFyKiBzKQogVmVjdG9yPGNoYXI+IGFzY2lpRGVidWcoU3Ry
aW5nSW1wbCogaW1wbCkKIHsKICAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBhc2NpaURl
YnVnKFN0cmluZygiW251bGxdIl9zKS5pbXBsKCkpOworICAgICAgICByZXR1cm4gYXNjaWlEZWJ1
ZygiW251bGxdIl9zdHIuaW1wbCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVmZmVyOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbXBsLT5sZW5ndGgoKTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAppbmRleCA1MTFiOWMxNjRhMWE1OGMxMWQ0Y2ZkNTMyMWUzMmY1MjdiNGM5
ZWQ2Li5mNTIwNTVhN2JjNWRhNWIwNzZhMzQ1ZjgwZGE1NzliNmRkY2IxMTg1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKQEAgLTk5LDEwICs5OSw5IEBAIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcoQVNDSUlMaXRlcmFsKTsKIAotICAgIC8vIENvbnN0cnVjdCBhIHN0
cmluZyBmcm9tIGEgY29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCi0gICAgLy8gVGhpcyBpcyB0aGUg
ImJpZyIgdmVyc2lvbjogcHV0cyB0aGUgbGVuZ3RoIGluIHRoZSBmdW5jdGlvbiBjYWxsIGFuZCBn
ZW5lcmF0ZXMgYmlnZ2VyIGNvZGUuCisgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZyb20gYSBj
b25zdGFudCBzdHJpbmcgbGl0ZXJhbCwgdXNlICJzdHJpbmciX3N0ciBpbnN0ZWFkIG9mIGNhbGxp
bmcgdGhpcyBjb25zdHJ1Y3RvciBkaXJlY3RseS4KICAgICBlbnVtIENvbnN0cnVjdEZyb21MaXRl
cmFsVGFnIHsgQ29uc3RydWN0RnJvbUxpdGVyYWwgfTsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBj
aGFyYWN0ZXJDb3VudD4gU3RyaW5nKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJD
b3VudF0sIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnKSA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVh
dGVGcm9tTGl0ZXJhbDxjaGFyYWN0ZXJDb3VudD4oY2hhcmFjdGVycykpIHsgfQorICAgIFN0cmlu
Zyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgsIENvbnN0cnVjdEZyb21M
aXRlcmFsVGFnKSA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChjaGFyYWN0
ZXJzLCBsZW5ndGgpKSB7IH0KIAogICAgIFN0cmluZyhjb25zdCBTdHJpbmcmKSA9IGRlZmF1bHQ7
CiAgICAgU3RyaW5nKFN0cmluZyYmKSA9IGRlZmF1bHQ7CkBAIC02MjgsOSArNjI3LDkgQEAgdGVt
cGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0lnbm9y
aW5nQVNDSUlDYXNlKGNvbnN0IFMKIAogaW5saW5lIG5hbWVzcGFjZSBTdHJpbmdMaXRlcmFscyB7
CiAKLWlubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMs
IHNpemVfdCkKK2lubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNoYXIqIGNoYXJh
Y3RlcnMsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6ZnJvbUxp
dGVyYWxVbnNhZmUoY2hhcmFjdGVycyk7CisgICAgcmV0dXJuIFN0cmluZyhjaGFyYWN0ZXJzLCBs
ZW5ndGgsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwogfQogCiB9IC8vIGlubGluZSBT
dHJpbmdMaXRlcmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5peC9MYW5ndWFnZVVu
aXguY3BwIGIvU291cmNlL1dURi93dGYvdW5peC9MYW5ndWFnZVVuaXguY3BwCmluZGV4IGFmOTRi
YjA2Y2MzOGRkMmE4NTk1YmZiYjc3MTY5MGY5MmRiNDhhZTIuLmQ2OThlMDc4MTU3NzdlMGFhZTk3
MzlmODc2ODMxNzk3YzQ5MTUyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTGFu
Z3VhZ2VVbml4LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bml4L0xhbmd1YWdlVW5peC5jcHAK
QEAgLTM0LDcgKzM0LDcgQEAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAg
ICBTdHJpbmcgbG9jYWxlRGVmYXVsdChzZXRsb2NhbGUoTENfQ1RZUEUsIG51bGxwdHIpKTsKICAg
ICBpZiAobG9jYWxlRGVmYXVsdC5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShs
b2NhbGVEZWZhdWx0LCAiQyIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobG9jYWxlRGVmYXVs
dCwgIlBPU0lYIikpCi0gICAgICAgIHJldHVybiAiZW4tVVMiX3M7CisgICAgICAgIHJldHVybiAi
ZW4tVVMiX3N0cjsKIAogICAgIFN0cmluZyBub3JtYWxpemVkRGVmYXVsdCA9IGxvY2FsZURlZmF1
bHQ7CiAgICAgbm9ybWFsaXplZERlZmF1bHQucmVwbGFjZSgnXycsICctJyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGVh
MDZlY2U3YmM1NjAyODAyOTU4NjQyYjM1ZWNiOWM5MTU1ODQ3NjIuLmNiNWFlYWFlNjY3NjcxYjU0
MWVlZDQ2MWNjZjZkY2QxZTQ4M2MzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yNTM1LDcgKzI1MzUsNyBAQCBzdWIg
R2VuZXJhdGVEZWZhdWx0VmFsdWUKICAgICAgICAgICAgIGlmICgkZGVmYXVsdFZhbHVlIGVxICJc
IlwiIikgewogICAgICAgICAgICAgICAgIHJldHVybiAkdXNlQXRvbVN0cmluZyA/ICJlbXB0eUF0
b20oKSIgOiAiZW1wdHlTdHJpbmcoKSI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgIHJldHVybiAkdXNlQXRvbVN0cmluZyA/ICJBdG9tU3RyaW5nKCR7ZGVmYXVsdFZhbHVl
fSwgQXRvbVN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpIiA6ICIke2RlZmF1bHRWYWx1ZX1f
cyI7CisgICAgICAgICAgICAgICAgcmV0dXJuICR1c2VBdG9tU3RyaW5nID8gIkF0b21TdHJpbmco
JHtkZWZhdWx0VmFsdWV9LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkiIDogIiR7
ZGVmYXVsdFZhbHVlfV9zdHIiOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTc3MTUs
NyArNzcxNSw3IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgICAgICAg
ICAgIGlmICgkb3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5n
fSkgewogICAgICAgICAgICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
ID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwgJG9w
ZXJhdGlvbiwgImxleGljYWxHbG9iYWxPYmplY3QiKTsKICAgICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIGlmICghJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9
KSB7XG4iKTsKLSAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB0
aHJvd1R5cGVFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBcIklsbGVnYWwg
Y29uc3RydWN0b3JcIl9zKTtcbiIpOworICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIHRocm93VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsIFwiSWxsZWdhbCBjb25zdHJ1Y3RvclwiX3N0cik7XG4iKTsKICAgICAgICAgICAgICAgICAg
cHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVs
bCgpKTtcbiIpOwogICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxu
Iik7CiAgICAgICAgICAgICAgfQpAQCAtNzg3NCw3ICs3ODc0LDcgQEAgc3ViIEdlbmVyYXRlQ29u
c3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKCR7bGVh
c3RDb25zdHJ1Y3Rvckxlbmd0aH0pLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTtcbiIpOwogICAgICAgICB9CiAKLSAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNO
b250cml2aWFsU3RyaW5nKHZtLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiX3MpO1xuIik7Cisg
ICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIl9zdHIpO1xuIik7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0s
IHRoaXMsIG5hbWVTdHJpbmcpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pO1xuIik7CiAKQEAgLTgwOTgsNyArODA5OCw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxUcmFj
ZXIoKQogICAgIEFkZFRvSW1wbEluY2x1ZGVzKCRjYWxsVHJhY2VyIC4gIi5oIik7CiAKICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZl
IiAuICRjYWxsVHJhY2VyIC4gIigpKSlcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGlu
ZGVudCAuICIgICAgIiAuICRjYWxsVHJhY2VyIC4gIjo6cmVjb3JkQWN0aW9uKGltcGwsIFwiIiAu
ICRuYW1lIC4gIlwiX3MiKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiICAg
ICIgLiAkY2FsbFRyYWNlciAuICI6OnJlY29yZEFjdGlvbihpbXBsLCBcIiIgLiAkbmFtZSAuICJc
Il9zdHIiKTsKICAgICBpZiAoc2NhbGFyKEAkYXJndW1lbnRzKSkgewogICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIsIHsgIiAuIGpvaW4oIiwgIiwgbWFwIHsgJGNhbGxUcmFjZXIgLiAiOjpw
cm9jZXNzQXJndW1lbnQoaW1wbCwgIiAuICRfIC4gIikiIH0gQCRhcmd1bWVudHMpIC4gIiB9Iik7
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcAppbmRleCBkZTQ1OWRk
ODk2MGM3ODY1NDQ2NzAzOTM3YThlODYxYzBmZGY2NjliLi41ZThmMzcyYTBiMTNiNTRkZmE2MTA5
MzEyOTc2ODc4MGFhY2FmZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9u
dEZhY2VSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNw
cApAQCAtNTIsNyArNTIsNyBAQCBTdHJpbmcgQ1NTRm9udEZhY2VSdWxlOjpjc3NUZXh0KCkgY29u
c3QKIHsKICAgICBTdHJpbmcgZGVjbGFyYXRpb25zID0gbV9mb250RmFjZVJ1bGUtPnByb3BlcnRp
ZXMoKS5hc1RleHQoKTsKICAgICBpZiAoZGVjbGFyYXRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAg
cmV0dXJuICJAZm9udC1mYWNlIHsgfSJfczsKKyAgICAgICAgcmV0dXJuICJAZm9udC1mYWNlIHsg
fSJfc3RyOwogICAgIHJldHVybiBtYWtlU3RyaW5nKCJAZm9udC1mYWNlIHsgIiwgZGVjbGFyYXRp
b25zLCAiIH0iKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQ
YWxldHRlVmFsdWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVW
YWx1ZXNSdWxlLmNwcAppbmRleCBlNGMyYTBkOWE2MjI3NTg4NTYxYzNlYTgzZDZjZWZkYTIwNzVi
MWEzLi40OWEzNGFlOTlkYmYwYmJlM2QzNTE5ZGZhMTIzM2JjYzhiYjA3ZmFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcApAQCAtNjMsOSAr
NjMsOSBAQCBTdHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpiYXNlUGFsZXR0ZSgpIGNv
bnN0CiAKICAgICBzd2l0Y2ggKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgp
LT50eXBlKSB7CiAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpMaWdodDoKLSAgICAg
ICAgcmV0dXJuICJsaWdodCJfczsKKyAgICAgICAgcmV0dXJuICJsaWdodCJfc3RyOwogICAgIGNh
c2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6RGFyazoKLSAgICAgICAgcmV0dXJuICJkYXJrIl9z
OworICAgICAgICByZXR1cm4gImRhcmsiX3N0cjsKICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6
OlR5cGU6OkludGVnZXI6CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG1fZm9udFBhbGV0dGVW
YWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLT5pbnRlZ2VyKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKaW5kZXggYTE2ZTZjY2RiNzVlZmY4Y2FlNjk3Mzg4NWUz
YWExNGFiODU1NTQ3MC4uMGJkMTc0MGJhNWNjM2M2MzY2ZjgxZGY4YTY4NDZjYmM0ODk1NDMzOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtMTY1LDcgKzE2NSw3
IEBAIHZvaWQgQ1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVU
ZXh0KQogewogICAgIGlmIChDU1NTdHlsZVNoZWV0KiBwYXJlbnQgPSBwYXJlbnRTdHlsZVNoZWV0
KCkpIHsKICAgICAgICAgaWYgKERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gcGFyZW50LT5vd25l
ckRvY3VtZW50KCkpCi0gICAgICAgICAgICBvd25lckRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2Fn
ZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiQ1NTS2V5ZnJhbWVz
UnVsZSAnaW5zZXJ0UnVsZScgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4gIFVzZSAnYXBwZW5kUnVs
ZScgaW5zdGVhZC4iX3MpOworICAgICAgICAgICAgb3duZXJEb2N1bWVudC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIkNTU0tleWZy
YW1lc1J1bGUgJ2luc2VydFJ1bGUnIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuICBVc2UgJ2FwcGVu
ZFJ1bGUnIGluc3RlYWQuIl9zdHIpOwogICAgIH0KICAgICBhcHBlbmRSdWxlKHJ1bGVUZXh0KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCmluZGV4IGQxZjZkMGE1MTVhNWRiOWRiNzUw
Y2JmMWUyZjc5ZDRhOWYwZjJmNTQuLmQ5NGNmYThhNWIzMTlkZWU2NjEyZTc4MjFjYzkyOWJhMmVj
N2E5NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBT
dHJpbmcgQ1NTUGFnZVJ1bGU6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAgICAgIGlmICghcGFn
ZVNwZWNpZmljYXRpb24uaXNFbXB0eSgpICYmIHBhZ2VTcGVjaWZpY2F0aW9uICE9IHN0YXJBdG9t
KCkpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiQHBhZ2UgIiwgcGFnZVNwZWNpZmlj
YXRpb24pOwogICAgIH0KLSAgICByZXR1cm4gIkBwYWdlIl9zOworICAgIHJldHVybiAiQHBhZ2Ui
X3N0cjsKIH0KIAogdm9pZCBDU1NQYWdlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KGNvbnN0IFN0cmlu
ZyYgc2VsZWN0b3JUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGI0
YmY5ZjM0YTg5NTc3YThjMDc5MGNlODhmYThhNDRiOWM4MDZiOWYuLjFjOTdlZWFiNjQ2MjFlMTQ1
ODgyZTFhZWVkODgzNWRkNDIwMGUzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5j
cHAKQEAgLTMxNiw3ICszMTYsNyBAQCBFeGNlcHRpb25PcjxSZWY8Q1NTUnVsZUxpc3Q+PiBDU1NT
dHlsZVNoZWV0Ojpjc3NSdWxlc0ZvckJpbmRpbmdzKCkKIHsKICAgICBhdXRvIGNzc1J1bGVzID0g
dGhpcy0+Y3NzUnVsZXMoKTsKICAgICBpZiAoIWNzc1J1bGVzKQotICAgICAgICByZXR1cm4gRXhj
ZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIk5vdCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmln
aW4gc3R5bGVzaGVldCJfcyB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlF
cnJvciwgIk5vdCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmlnaW4gc3R5bGVzaGVldCJfc3Ry
IH07CiAgICAgcmV0dXJuIGNzc1J1bGVzLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTaGVldC5oCmluZGV4IGI0ZjNkODc4ZDc1YWFlN2MxM2M2YzViMzdmMTFjYTM3
OTlmNjFkMzAuLmZhYzA2NjEzNzY4NzhmOTljMGE5YTI4NWFlZmRiMjhlODVlNzM1NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuaApAQCAtMTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAg
ICAgQ1NTU3R5bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5v
ZGUsIGNvbnN0IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxl
c2hlZXQsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mKTsKIAogICAgIGJvb2wgaXNDU1NTdHls
ZVNoZWV0KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFN0cmluZyB0eXBlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gInRleHQvY3NzIl9zOyB9CisgICAgU3RyaW5nIHR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAidGV4dC9jc3MiX3N0cjsgfQogCiAgICAgUmVmPFN0eWxlU2hl
ZXRDb250ZW50cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJbmxpbmVTdHlsZXNoZWV0IHsg
ZmFsc2UgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXggMmIyNDMzZjcyNjEy
MDNiNjZhOTVkYjc1YjI0OTUwYzdlMGZkOGFmMS4uMDNlMWNkNDM3ZjhlNDUzNGY3MWFjYjVjOGI1
ODhjMzcwMmJjZWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlz
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKQEAgLTg4LDcg
Kzg4LDcgQEAgU3RyaW5nIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAg
U3RyaW5nQnVpbGRlciByZXN1bHQ7CiAgICAgYXV0byBzZXBhcmF0b3IgPSBzZXBhcmF0b3JDU1NU
ZXh0KCk7CiAgICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKQotICAgICAgICByZXN1bHQu
YXBwZW5kKHJlc3VsdC5pc0VtcHR5KCkgPyAiIl9zIDogc2VwYXJhdG9yLCB2YWx1ZS5nZXQoKS5j
c3NUZXh0KCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKHJlc3VsdC5pc0VtcHR5KCkgPyBlbXB0
eVN0cmluZygpIDogc2VwYXJhdG9yLCB2YWx1ZS5nZXQoKS5jc3NUZXh0KCkpOwogICAgIHJldHVy
biByZXN1bHQudG9TdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3Nz
L0ZvbnRGYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggZWZm
ZDYwN2MzNDZmOWJjZmJjOWMyODg5YmY4MzE2OTRkYTM0MDMwNS4uYzIwMzQ5YjA1NDU0MTI0MDc4
NzNjM2VmMWM3Mzg4MjQ5OThkNzY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0Zv
bnRGYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0xMDIs
MzIgKzEwMiwzMiBAQCBSZWY8Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBmYQogICAgIH0KIAogICAgIC8vIFRo
ZXNlIHRlcm5hcmllcyBtYXRjaCB0aGUgZGVmYXVsdCBzdHJpbmdzIGluc2lkZSB0aGUgRm9udEZh
Y2VEZXNjcmlwdG9ycyBkaWN0aW9uYXJ5IGluc2lkZSBGb250RmFjZS5pZGwuCi0gICAgYXV0byBz
ZXRTdHlsZVJlc3VsdCA9IHJlc3VsdC0+c2V0U3R5bGUoY29udGV4dCwgZGVzY3JpcHRvcnMuc3R5
bGUuaXNFbXB0eSgpID8gIm5vcm1hbCJfcyA6IGRlc2NyaXB0b3JzLnN0eWxlKTsKKyAgICBhdXRv
IHNldFN0eWxlUmVzdWx0ID0gcmVzdWx0LT5zZXRTdHlsZShjb250ZXh0LCBkZXNjcmlwdG9ycy5z
dHlsZS5pc0VtcHR5KCkgPyAibm9ybWFsIl9zdHIgOiBkZXNjcmlwdG9ycy5zdHlsZSk7CiAgICAg
aWYgKHNldFN0eWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0
RXJyb3JTdGF0ZSgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBhdXRvIHNl
dFdlaWdodFJlc3VsdCA9IHJlc3VsdC0+c2V0V2VpZ2h0KGNvbnRleHQsIGRlc2NyaXB0b3JzLndl
aWdodC5pc0VtcHR5KCkgPyAibm9ybWFsIl9zIDogZGVzY3JpcHRvcnMud2VpZ2h0KTsKKyAgICBh
dXRvIHNldFdlaWdodFJlc3VsdCA9IHJlc3VsdC0+c2V0V2VpZ2h0KGNvbnRleHQsIGRlc2NyaXB0
b3JzLndlaWdodC5pc0VtcHR5KCkgPyAibm9ybWFsIl9zdHIgOiBkZXNjcmlwdG9ycy53ZWlnaHQp
OwogICAgIGlmIChzZXRXZWlnaHRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVz
dWx0LT5zZXRFcnJvclN0YXRlKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAg
IGF1dG8gc2V0U3RyZXRjaFJlc3VsdCA9IHJlc3VsdC0+c2V0U3RyZXRjaChjb250ZXh0LCBkZXNj
cmlwdG9ycy5zdHJldGNoLmlzRW1wdHkoKSA/ICJub3JtYWwiX3MgOiBkZXNjcmlwdG9ycy5zdHJl
dGNoKTsKKyAgICBhdXRvIHNldFN0cmV0Y2hSZXN1bHQgPSByZXN1bHQtPnNldFN0cmV0Y2goY29u
dGV4dCwgZGVzY3JpcHRvcnMuc3RyZXRjaC5pc0VtcHR5KCkgPyAibm9ybWFsIl9zdHIgOiBkZXNj
cmlwdG9ycy5zdHJldGNoKTsKICAgICBpZiAoc2V0U3RyZXRjaFJlc3VsdC5oYXNFeGNlcHRpb24o
KSkgewogICAgICAgICByZXN1bHQtPnNldEVycm9yU3RhdGUoKTsKICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKICAgICB9Ci0gICAgYXV0byBzZXRVbmljb2RlUmFuZ2VSZXN1bHQgPSByZXN1bHQtPnNl
dFVuaWNvZGVSYW5nZShjb250ZXh0LCBkZXNjcmlwdG9ycy51bmljb2RlUmFuZ2UuaXNFbXB0eSgp
ID8gIlUrMC0xMEZGRkYiX3MgOiBkZXNjcmlwdG9ycy51bmljb2RlUmFuZ2UpOworICAgIGF1dG8g
c2V0VW5pY29kZVJhbmdlUmVzdWx0ID0gcmVzdWx0LT5zZXRVbmljb2RlUmFuZ2UoY29udGV4dCwg
ZGVzY3JpcHRvcnMudW5pY29kZVJhbmdlLmlzRW1wdHkoKSA/ICJVKzAtMTBGRkZGIl9zdHIgOiBk
ZXNjcmlwdG9ycy51bmljb2RlUmFuZ2UpOwogICAgIGlmIChzZXRVbmljb2RlUmFuZ2VSZXN1bHQu
aGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVzdWx0LT5zZXRFcnJvclN0YXRlKCk7CiAgICAg
ICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIGF1dG8gc2V0RmVhdHVyZVNldHRpbmdzUmVz
dWx0ID0gcmVzdWx0LT5zZXRGZWF0dXJlU2V0dGluZ3MoY29udGV4dCwgZGVzY3JpcHRvcnMuZmVh
dHVyZVNldHRpbmdzLmlzRW1wdHkoKSA/ICJub3JtYWwiX3MgOiBkZXNjcmlwdG9ycy5mZWF0dXJl
U2V0dGluZ3MpOworICAgIGF1dG8gc2V0RmVhdHVyZVNldHRpbmdzUmVzdWx0ID0gcmVzdWx0LT5z
ZXRGZWF0dXJlU2V0dGluZ3MoY29udGV4dCwgZGVzY3JpcHRvcnMuZmVhdHVyZVNldHRpbmdzLmlz
RW1wdHkoKSA/ICJub3JtYWwiX3N0ciA6IGRlc2NyaXB0b3JzLmZlYXR1cmVTZXR0aW5ncyk7CiAg
ICAgaWYgKHNldEZlYXR1cmVTZXR0aW5nc1Jlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAg
ICByZXN1bHQtPnNldEVycm9yU3RhdGUoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
Ci0gICAgYXV0byBzZXREaXNwbGF5UmVzdWx0ID0gcmVzdWx0LT5zZXREaXNwbGF5KGNvbnRleHQs
IGRlc2NyaXB0b3JzLmRpc3BsYXkuaXNFbXB0eSgpID8gImF1dG8iX3MgOiBkZXNjcmlwdG9ycy5k
aXNwbGF5KTsKKyAgICBhdXRvIHNldERpc3BsYXlSZXN1bHQgPSByZXN1bHQtPnNldERpc3BsYXko
Y29udGV4dCwgZGVzY3JpcHRvcnMuZGlzcGxheS5pc0VtcHR5KCkgPyAiYXV0byJfc3RyIDogZGVz
Y3JpcHRvcnMuZGlzcGxheSk7CiAgICAgaWYgKHNldERpc3BsYXlSZXN1bHQuaGFzRXhjZXB0aW9u
KCkpIHsKICAgICAgICAgcmVzdWx0LT5zZXRFcnJvclN0YXRlKCk7CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CkBAIC0yNzEsNyArMjcxLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpmYW1pbHkoKSBjb25z
dAogCiAgICAgY29uc3QgYXV0byYgZmFtaWxpZXMgPSBtX2JhY2tpbmctPmZhbWlsaWVzKCk7CiAg
ICAgaWYgKCFmYW1pbGllcykKLSAgICAgICAgcmV0dXJuICJub3JtYWwiX3M7CisgICAgICAgIHJl
dHVybiAibm9ybWFsIl9zdHI7CiAgICAgYXV0byBmYW1pbGllc1VucndhcHBlZCA9IGZhbWlsaWVz
LnZhbHVlKCk7CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTYzODEgVGhpcyBpcyBvbmx5IGhlcmUgYmVjYXVzZSBDU1NGb250RmFjZSBlcnJv
bmVvdXNseSB1c2VzIGEgbGlzdCBvZiB2YWx1ZXMgaW5zdGVhZCBvZiBhIHNpbmdsZSB2YWx1ZS4K
ICAgICAvLyBTZWUgY29uc3VtZUZvbnRGYW1pbHlEZXNjcmlwdG9yKCkgaW4gQ1NTUHJvcGVydHlQ
YXJzZXIuY3BwLgpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cmluZyBGb250RmFjZTo6c3R5bGUoKSBj
b25zdAogICAgIGNvbnN0IGF1dG8mIHN0eWxlV3JhcHBlZCA9IG1fYmFja2luZy0+aXRhbGljKCk7
CiAgICAgCiAgICAgaWYgKCFzdHlsZVdyYXBwZWQpCi0gICAgICAgIHJldHVybiAibm9ybWFsIl9z
OworICAgICAgICByZXR1cm4gIm5vcm1hbCJfc3RyOwogICAgIGF1dG8gc3R5bGUgPSBzdHlsZVdy
YXBwZWQudmFsdWUoKTsKICAgICBhdXRvIG1pbmltdW0gPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9y
Ojpmb250U3R5bGVGcm9tU3R5bGVWYWx1ZShzdHlsZS5taW5pbXVtLCBGb250U3R5bGVBeGlzOjpp
dGFsKTsKICAgICBhdXRvIG1heGltdW0gPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250U3R5
bGVGcm9tU3R5bGVWYWx1ZShzdHlsZS5tYXhpbXVtLCBGb250U3R5bGVBeGlzOjppdGFsKTsKQEAg
LTMyOSw3ICszMjksNyBAQCBTdHJpbmcgRm9udEZhY2U6OndlaWdodCgpIGNvbnN0CiAgICAgbV9i
YWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgY29uc3QgYXV0byYgd2VpZ2h0V3Jh
cHBlZCA9IG1fYmFja2luZy0+d2VpZ2h0KCk7CiAgICAgaWYgKCF3ZWlnaHRXcmFwcGVkKQotICAg
ICAgICByZXR1cm4gIm5vcm1hbCJfczsKKyAgICAgICAgcmV0dXJuICJub3JtYWwiX3N0cjsKICAg
ICBhdXRvIHdlaWdodCA9IHdlaWdodFdyYXBwZWQudmFsdWUoKTsKICAgICBhdXRvIG1pbmltdW0g
PSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250V2VpZ2h0RnJvbVN0eWxlVmFsdWUod2VpZ2h0
Lm1pbmltdW0pOwogICAgIGF1dG8gbWF4aW11bSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmZv
bnRXZWlnaHRGcm9tU3R5bGVWYWx1ZSh3ZWlnaHQubWF4aW11bSk7CkBAIC0zNTIsNyArMzUyLDcg
QEAgU3RyaW5nIEZvbnRGYWNlOjpzdHJldGNoKCkgY29uc3QKICAgICBtX2JhY2tpbmctPnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBjb25zdCBhdXRvJiBzdHJldGNoV3JhcHBlZCA9IG1fYmFj
a2luZy0+c3RyZXRjaCgpOwogICAgIGlmICghc3RyZXRjaFdyYXBwZWQpCi0gICAgICAgIHJldHVy
biAibm9ybWFsIl9zOworICAgICAgICByZXR1cm4gIm5vcm1hbCJfc3RyOwogICAgIGF1dG8gc3Ry
ZXRjaCA9IHN0cmV0Y2hXcmFwcGVkLnZhbHVlKCk7CiAgICAgYXV0byBtaW5pbXVtID0gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Zm9udFN0cmV0Y2hGcm9tU3R5bGVWYWx1ZShzdHJldGNoLm1pbmlt
dW0pOwogICAgIGF1dG8gbWF4aW11bSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmZvbnRTdHJl
dGNoRnJvbVN0eWxlVmFsdWUoc3RyZXRjaC5tYXhpbXVtKTsKQEAgLTM3OCw3ICszNzgsNyBAQCBT
dHJpbmcgRm9udEZhY2U6OnVuaWNvZGVSYW5nZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiAiVSsw
LTEwRkZGRiI7CiAgICAgYXV0byByYW5nZXMgPSByYW5nZXNXcmFwcGVkLnZhbHVlKCk7CiAgICAg
aWYgKCFyYW5nZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gIlUrMC0xMEZGRkYiX3M7CisgICAg
ICAgIHJldHVybiAiVSswLTEwRkZGRiJfc3RyOwogICAgIGF1dG8gdmFsdWVzID0gQ1NTVmFsdWVM
aXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgcmFuZ2UgOiByYW5n
ZXMpCiAgICAgICAgIHZhbHVlcy0+YXBwZW5kKENTU1VuaWNvZGVSYW5nZVZhbHVlOjpjcmVhdGUo
cmFuZ2UuZnJvbSwgcmFuZ2UudG8pKTsKQEAgLTM5MCwxMCArMzkwLDEwIEBAIFN0cmluZyBGb250
RmFjZTo6ZmVhdHVyZVNldHRpbmdzKCkgY29uc3QKICAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxl
SWZOZWVkZWQoKTsKICAgICBjb25zdCBhdXRvJiBmZWF0dXJlU2V0dGluZ3NXcmFwcGVkID0gbV9i
YWNraW5nLT5mZWF0dXJlU2V0dGluZ3MoKTsKICAgICBpZiAoIWZlYXR1cmVTZXR0aW5nc1dyYXBw
ZWQpCi0gICAgICAgIHJldHVybiAibm9ybWFsIl9zOworICAgICAgICByZXR1cm4gIm5vcm1hbCJf
c3RyOwogICAgIGF1dG8gZmVhdHVyZVNldHRpbmdzID0gZmVhdHVyZVNldHRpbmdzV3JhcHBlZC52
YWx1ZSgpOwogICAgIGlmICghZmVhdHVyZVNldHRpbmdzLnNpemUoKSkKLSAgICAgICAgcmV0dXJu
ICJub3JtYWwiX3M7CisgICAgICAgIHJldHVybiAibm9ybWFsIl9zdHI7CiAgICAgYXV0byBsaXN0
ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYg
ZmVhdHVyZSA6IGZlYXR1cmVTZXR0aW5ncykKICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0ZvbnRG
ZWF0dXJlVmFsdWU6OmNyZWF0ZShGb250VGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0dXJlLnZhbHVl
KCkpKTsKQEAgLTQwNSw3ICs0MDUsNyBAQCBTdHJpbmcgRm9udEZhY2U6OmRpc3BsYXkoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBtX2JhY2tpbmctPnVwZGF0ZVN0
eWxlSWZOZWVkZWQoKTsKICAgICBjb25zdCBhdXRvJiBsb2FkaW5nQmVoYXZpb3JXcmFwcGVkID0g
bV9iYWNraW5nLT5sb2FkaW5nQmVoYXZpb3IoKTsKICAgICBpZiAoIWxvYWRpbmdCZWhhdmlvcldy
YXBwZWQpCi0gICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICAgICAgcmV0dXJuICJhdXRvIl9z
dHI7CiAgICAgcmV0dXJuIGNvbnRleHQuY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUobG9hZGlu
Z0JlaGF2aW9yV3JhcHBlZC52YWx1ZSgpKS0+Y3NzVGV4dCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeS5jcHAKaW5kZXggNDk3OTBkMzZhMWVhMGQ2ZDNjNzZhMGI2YjM2NmJlYjJiYThhYWNh
Yy4uMGEwNGUxNGU5ZThkOTRhMDU1ZTBjZGFkZjdhMGQ5NDE2ZDc3MzhmOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcgTWVkaWFRdWVyeTo6c2Vy
aWFsaXplKCkgY29uc3QKIHsKICAgICBpZiAobV9pZ25vcmVkKSB7CiAgICAgICAgIC8vIElmIHF1
ZXJ5IGlzIGludmFsaWQsIHNlcmlhbGl6ZWQgdGV4dCBzaG91bGQgdHVybiBpbnRvICJub3QgYWxs
Ii4KLSAgICAgICAgcmV0dXJuICJub3QgYWxsIl9zOworICAgICAgICByZXR1cm4gIm5vdCBhbGwi
X3N0cjsKICAgICB9CiAKICAgICBib29sIHNob3VsZE9taXRNZWRpYVR5cGUgPSBmYWxzZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bi5jcHAKaW5kZXggMTU3Y2JiMDdkNjBiNmZkZWJkNzFkM2Y5OTlhNTA4M2YxYzM0NjRkMy4uOTU1
ZjY4Y2ZjYzc5NjMwZGIxZmQ5ZTQ2Mzc5Mjg2MGI0OGY5ZTkxNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIw
NSwxMiArMjA1LDEyIEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246Omdl
dFByb3BlcnR5VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hCiBTdHJpbmcgUHJvcGVydHlT
ZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYg
cHJvcGVydHlOYW1lKQogewogICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5h
bWUpKQotICAgICAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+Y3VzdG9tUHJvcGVydHlJc0ltcG9y
dGFudChwcm9wZXJ0eU5hbWUpID8gImltcG9ydGFudCJfcyA6IGVtcHR5U3RyaW5nKCk7CisgICAg
ICAgIHJldHVybiBtX3Byb3BlcnR5U2V0LT5jdXN0b21Qcm9wZXJ0eUlzSW1wb3J0YW50KHByb3Bl
cnR5TmFtZSkgPyAiaW1wb3J0YW50Il9zdHIgOiBlbXB0eVN0cmluZygpOwogCiAgICAgQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlm
ICghcHJvcGVydHlJRCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgcmV0dXJu
IG1fcHJvcGVydHlTZXQtPnByb3BlcnR5SXNJbXBvcnRhbnQocHJvcGVydHlJRCkgPyAiaW1wb3J0
YW50Il9zIDogZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+cHJvcGVy
dHlJc0ltcG9ydGFudChwcm9wZXJ0eUlEKSA/ICJpbXBvcnRhbnQiX3N0ciA6IGVtcHR5U3RyaW5n
KCk7CiB9CiAKIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3Bl
cnR5U2hvcnRoYW5kKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcAppbmRleCBmMDQxM2MxN2ZmZmEyODM4MTFmZTI1MTdmZGZkNjFi
Y2RjZjhiMjU5Li4xNjExZWIyZjA1N2VjZjI3MThjMmRjOTk3ZTkzMjhkNjI3ZGEwOGQ3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTAwMCw3ICsxMDAwLDcgQEAg
U3RyaW5nIFN0eWxlUHJvcGVydGllczo6cGFnZUJyZWFrUHJvcGVydHlWYWx1ZShjb25zdCBTdHls
ZVByb3BlcnR5U2hvcnRoYW5kJiBzaG8KICAgICBDU1NWYWx1ZUlEIHZhbHVlSWQgPSBkb3duY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCk7CiAgICAgc3dpdGNoICh2YWx1
ZUlkKSB7CiAgICAgY2FzZSBDU1NWYWx1ZVBhZ2U6Ci0gICAgICAgIHJldHVybiAiYWx3YXlzIl9z
OworICAgICAgICByZXR1cm4gImFsd2F5cyJfc3RyOwogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgog
ICAgIGNhc2UgQ1NTVmFsdWVBdm9pZDoKICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcAppbmRleCA5ZGRlYzE0NzZiOTdiMzc5MTcwODk5
MDBjMzIyZjNmYzdiNGEzZjgzLi5mNzI5MjRlMTQ2ZTRiOTliYWE5OTQxZjlmYzc3NWVlMjNmZWUy
MDYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCkBAIC0yMzMsNyAr
MjMzLDcgQEAgUmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsdWVXaXRoVmFyaWFi
bGVSZWZlcmVuY2VzKENTU1Byb3BlcnR5SUQgcHJvcEkKIAogICAgIGF1dG8mIG5hbWUgPSBkb3du
Y2FzdDxDU1NDdXN0b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSkubmFtZSgpOwogICAgIGF1dG8qIHJl
Z2lzdGVyZWQgPSBidWlsZGVyU3RhdGUuZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9t
UHJvcGVydHlTZXQoKS5nZXQobmFtZSk7Ci0gICAgYXV0byYgc3ludGF4ID0gcmVnaXN0ZXJlZCA/
IHJlZ2lzdGVyZWQtPnN5bnRheCA6ICIqIl9zOworICAgIGF1dG8mIHN5bnRheCA9IHJlZ2lzdGVy
ZWQgPyByZWdpc3RlcmVkLT5zeW50YXggOiAiKiJfc3RyOwogICAgIGF1dG8gcmVzb2x2ZWREYXRh
ID0gdmFsdWVXaXRoUmVmZXJlbmNlcy5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKGJ1aWxkZXJT
dGF0ZSk7CiAgICAgaWYgKCFyZXNvbHZlZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXgg
Y2I1YTA4YWEzZWI3ZDZiOGM4MjU3ZGM4NDhkY2VjMTEzNDE5YzljZC4uZWRjZjczNzFhM2E5MTE5
YzFiNmQ3NzI4NjM0OGE2OTNiMzk0ZTEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFy
c2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBNZWRpYVF1
ZXJ5UGFyc2VyOjpjb21taXRNZWRpYVF1ZXJ5KCkKIHsKICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6
IENvbnZvbHV0ZWQgYW5kIGF3ZnVsLCBidXQgd2UgY2FuJ3QgY2hhbmdlIHRoZSBNZWRpYVF1ZXJ5
U2V0IHlldCBiZWNhdXNlIG9mIHRoZQogICAgIC8vIG9sZCBwYXJzZXIuCi0gICAgc3RhdGljIGNv
bnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZGVmYXVsdE1lZGlhVHlwZSB7ICJhbGwiX3MgfTsK
KyAgICBzdGF0aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkZWZhdWx0TWVkaWFUeXBl
IHsgImFsbCJfc3RyIH07CiAgICAgTWVkaWFRdWVyeSBtZWRpYVF1ZXJ5IHsgbV9tZWRpYVF1ZXJ5
RGF0YS5yZXN0cmljdG9yKCksIG1fbWVkaWFRdWVyeURhdGEubWVkaWFUeXBlKCkudmFsdWVfb3Io
ZGVmYXVsdE1lZGlhVHlwZSksIFdURk1vdmUobV9tZWRpYVF1ZXJ5RGF0YS5leHByZXNzaW9ucygp
KSB9OwogICAgIG1fbWVkaWFRdWVyeURhdGEuY2xlYXIoKTsKICAgICBtX3F1ZXJ5U2V0LT5hZGRN
ZWRpYVF1ZXJ5KFdURk1vdmUobWVkaWFRdWVyeSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9u
LmNwcAppbmRleCA3NTRmNDgyODhmZTE5NmEzZDI4MmEyOTZkODc4ZDIzMzRkMzk3ODRiLi45M2Ri
NWNlZjIwNzk1NTFiMDg5ZDAyN2NhM2E3ZTJlNWFkYjgzZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RB
VEFTZWN0aW9uLmNwcApAQCAtNDEsNyArNDEsNyBAQCBSZWY8Q0RBVEFTZWN0aW9uPiBDREFUQVNl
Y3Rpb246OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKIAog
U3RyaW5nIENEQVRBU2VjdGlvbjo6bm9kZU5hbWUoKSBjb25zdAogewotICAgIHJldHVybiAiI2Nk
YXRhLXNlY3Rpb24iX3M7CisgICAgcmV0dXJuICIjY2RhdGEtc2VjdGlvbiJfc3RyOwogfQogCiBO
b2RlOjpOb2RlVHlwZSBDREFUQVNlY3Rpb246Om5vZGVUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21t
ZW50LmNwcAppbmRleCA4YTNlMzJmNzczOTM0OTFmMjUzMjIzMDdkZDE2NDhmZWMxNmViZjliLi4y
MTIzOWQwZmQ3MTlmMzNmYmMyNjExZjgzMTVlMDY0YjJkZWExYmQ2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1l
bnQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIFJlZjxDb21tZW50PiBDb21tZW50OjpjcmVhdGUoRG9j
dW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAKIFN0cmluZyBDb21tZW50Ojpu
b2RlTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICIjY29tbWVudCJfczsKKyAgICByZXR1cm4g
IiNjb21tZW50Il9zdHI7CiB9CiAKIE5vZGU6Ok5vZGVUeXBlIENvbW1lbnQ6Om5vZGVUeXBlKCkg
Y29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IDU4NDM1
YmMzZmNhZDNjZGE3ODk3MGEyMTFlNzYyYmZjY2YwMTJmNzUuLjZlMGFhNTMzNWRlMDA5N2NjOWM0
NTVjZDhkMzUxMzBjNzliMjQ4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcApAQCAtMTI3LDcgKzEyNyw3IEBAIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVu
dGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBh
dXRvIGRvY3VtZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9kb2N1bWVudC5z
ZXR0aW5ncygpLCBVUkwoKSwgeyB9KTsKICAgICBkb2N1bWVudC0+b3BlbigpOwotICAgIGRvY3Vt
ZW50LT53cml0ZShudWxscHRyLCB7ICI8IWRvY3R5cGUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+
PGJvZHk+PC9ib2R5PjwvaHRtbD4iX3MgfSk7CisgICAgZG9jdW1lbnQtPndyaXRlKG51bGxwdHIs
IHsgIjwhZG9jdHlwZSBodG1sPjxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1s
PiJfc3RyIH0pOwogICAgIGlmICghdGl0bGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byB0aXRs
ZUVsZW1lbnQgPSBIVE1MVGl0bGVFbGVtZW50OjpjcmVhdGUodGl0bGVUYWcsIGRvY3VtZW50KTsK
ICAgICAgICAgdGl0bGVFbGVtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5v
ZGUodGl0bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk1OGEwODU0Y2M0OGFlZTA0
ODI1NDZlNzczOWI1NTA1ZjhjMGYyODEuLjc4YzZlOTMxOTc3MzJlOWNlNWUwZDcwNDgyN2YwMjc5
YjQ2NDM4OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIERv
Y3VtZW50OjpEb2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywg
Y29uc3QgVVJMJiB1cmwsIERvY3VtCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgLCBtX2FwcGx5UGVu
ZGluZ1hTTFRyYW5zZm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50OjphcHBseVBlbmRpbmdYU0xU
cmFuc2Zvcm1zVGltZXJGaXJlZCkKICNlbmRpZgotICAgICwgbV94bWxWZXJzaW9uKCIxLjAiX3Mp
CisgICAgLCBtX3htbFZlcnNpb24oIjEuMCJfc3RyKQogICAgICwgbV9jb25zdGFudFByb3BlcnR5
TWFwKG1ha2VVbmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQogICAgICwgbV9kb2N1
bWVudENsYXNzZXMoZG9jdW1lbnRDbGFzc2VzKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkK
QEAgLTE1NTAsMTMgKzE1NTAsMTMgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGVudChjb25zdCBT
dHJpbmcmIGNvbnRlbnQpCiBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29u
c3QKIHsKICAgICBpZiAoaXNYSFRNTERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAiYXBwbGlj
YXRpb24veGh0bWwreG1sIl9zOworICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3hodG1sK3ht
bCJfc3RyOwogICAgIGlmIChpc1NWR0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAiaW1hZ2Uv
c3ZnK3htbCJfczsKKyAgICAgICAgcmV0dXJuICJpbWFnZS9zdmcreG1sIl9zdHI7CiAgICAgaWYg
KHhtbFN0YW5kYWxvbmUoKSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L3htbCJfczsKKyAgICAgICAg
cmV0dXJuICJ0ZXh0L3htbCJfc3RyOwogICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQotICAgICAg
ICByZXR1cm4gInRleHQvaHRtbCJfczsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiX3N0cjsK
ICAgICBpZiAoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IHRoaXMtPmxvYWRlcigpKQogICAgICAg
ICByZXR1cm4gbG9hZGVyLT5yZXNwb25zZU1JTUVUeXBlKCk7CiAgICAgcmV0dXJuIFN0cmluZygp
OwpAQCAtMTU3OSw3ICsxNTc5LDcgQEAgU3RyaW5nIERvY3VtZW50Ojpjb250ZW50VHlwZSgpIGNv
bnN0CiAgICAgaWYgKCFtaW1lVHlwZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG1pbWVUeXBl
OwogCi0gICAgcmV0dXJuICJhcHBsaWNhdGlvbi94bWwiX3M7CisgICAgcmV0dXJuICJhcHBsaWNh
dGlvbi94bWwiX3N0cjsKIH0KIAogUmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6Y2FyZXRSYW5nZUZy
b21Qb2ludChpbnQgeCwgaW50IHkpCkBAIC0xOTA1LDcgKzE5MDUsNyBAQCB2b2lkIERvY3VtZW50
Ojpmb3JFYWNoTWVkaWFFbGVtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoSFRNTE1lZGlhRWxlbWVu
dCYpPiYgZnVuYwogCiBTdHJpbmcgRG9jdW1lbnQ6Om5vZGVOYW1lKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gIiNkb2N1bWVudCJfczsKKyAgICByZXR1cm4gIiNkb2N1bWVudCJfc3RyOwogfQogCiBO
b2RlOjpOb2RlVHlwZSBEb2N1bWVudDo6bm9kZVR5cGUoKSBjb25zdApAQCAtMzM4OCw3ICszMzg4
LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlbG4oRG9jdW1lbnQqIGVudHJ5
RG9jdW1lbnQsIEZpeGVkVmVjdG9yPFN0cmluZz4KICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHN0
cmluZ3MpCiAgICAgICAgIHRleHQuYXBwZW5kKFdURk1vdmUoc3RyaW5nKSk7CiAKLSAgICB0ZXh0
LmFwcGVuZCgiXG4iX3MpOworICAgIHRleHQuYXBwZW5kKCJcbiJfc3RyKTsKICAgICByZXR1cm4g
d3JpdGUoZW50cnlEb2N1bWVudCwgV1RGTW92ZSh0ZXh0KSk7CiB9CiAKQEAgLTYwMDAsNyArNjAw
MCw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoSW5oZXJpdGVkQm9vbCB2YWx1ZSkK
IAogU3RyaW5nIERvY3VtZW50OjpkZXNpZ25Nb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5E
ZXNpZ25Nb2RlKCkgPyAib24iX3MgOiAib2ZmIl9zOworICAgIHJldHVybiBpbkRlc2lnbk1vZGUo
KSA/ICJvbiJfc3RyIDogIm9mZiJfc3RyOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXREZXNpZ25N
b2RlKGNvbnN0IFN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnRGcmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5jcHAKaW5kZXggOWNlMWViZDFhZWVkY2IzMzI2ZWM0MDZlMjRjZmQ2NGFjYjVlZDc3Zi4uY2Q1
NTA5MjIyYmVmMGFiYzVmZTM5ZDQzOTA0YmIwOTNiYjIyYWJkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWY8RG9jdW1lbnRGcmFn
bWVudD4gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIAogU3Ry
aW5nIERvY3VtZW50RnJhZ21lbnQ6Om5vZGVOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiNk
b2N1bWVudC1mcmFnbWVudCJfczsKKyAgICByZXR1cm4gIiNkb2N1bWVudC1mcmFnbWVudCJfc3Ry
OwogfQogCiBOb2RlOjpOb2RlVHlwZSBEb2N1bWVudEZyYWdtZW50Ojpub2RlVHlwZSgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnREaXJlY3RpdmVQYXJzZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0ZyYWdtZW50RGlyZWN0aXZlUGFyc2VyLmNwcAppbmRl
eCAyYTQ0NDJhY2RjZDhmYTdlZTFjOTQyZjI4ZTBjZjM0NGE3ZjdkYWMzLi42MDNlNjRkYTZkZGUw
YmZhY2Q5Y2M3ZWMwZjQ1YWFkNTMwMGFkYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRnJhZ21lbnREaXJlY3RpdmVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9G
cmFnbWVudERpcmVjdGl2ZVBhcnNlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBGcmFnbWVu
dERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VGcmFnbWVudERpcmVjdGl2ZShTdHJpbmdWaWV3IGZyYWdt
ZW50RGlyZWN0aXYKICAgICBMT0dfV0lUSF9TVFJFQU0oVGV4dEZyYWdtZW50LCBzdHJlYW0gPDwg
IiBwYXJzZUZyYWdtZW50RGlyZWN0aXZlOiAiKTsKICAgICAKICAgICBWZWN0b3I8UGFyc2VkVGV4
dERpcmVjdGl2ZT4gcGFyc2VkVGV4dERpcmVjdGl2ZXM7Ci0gICAgU3RyaW5nIHRleHREaXJlY3Rp
dmVQcmVmaXggPSAidGV4dD0iX3M7CisgICAgU3RyaW5nIHRleHREaXJlY3RpdmVQcmVmaXggPSAi
dGV4dD0iX3N0cjsKIAogICAgIGF1dG8gZGlyZWN0aXZlcyA9IGZyYWdtZW50RGlyZWN0aXZlLnNw
bGl0KCcmJyk7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggNjhhNmZiYjM1ODQ0MTQ0MWEyYjEx
YjU4ZmM2ZjE5NDI5ZjFmMGVlYS4uY2RmOTgyYzMzZDViZDM2MmRjZGZkMGE1MTE4Y2JhMThjNzQ3
NGU1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIFJlZlB0cjxUZXh0PiBU
ZXh0OjpyZXBsYWNlV2hvbGVUZXh0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKIAogU3RyaW5nIFRl
eHQ6Om5vZGVOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiN0ZXh0Il9zOworICAgIHJldHVy
biAiI3RleHQiX3N0cjsKIH0KIAogTm9kZTo6Tm9kZVR5cGUgVGV4dDo6bm9kZVR5cGUoKSBjb25z
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5jcHAKaW5kZXggYWUyMzQ3NTI3OTI3MjM3YzEzZTBk
ZjYwN2MwNTE1NmQ1OTlkYzE5Mi4uZjc3NGM2MmRjZWM5MTNkNWY1ZGFkYjAwZmIwYWYwZjFiOTZj
OWYyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogU3RyaW5nIFRleHRFbmNvZGVyOjplbmNvZGluZygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuICJ1dGYtOCJfczsKKyAgICByZXR1cm4gInV0Zi04Il9zdHI7CiB9CiAK
IFJlZlB0cjxVaW50OEFycmF5PiBUZXh0RW5jb2Rlcjo6ZW5jb2RlKFN0cmluZyYmIGlucHV0KSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRU
eXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAK
aW5kZXggOGE1NGNhMDUzNTRhOTMwMjc1OWFiNzViYTNhMTc1NWY3YjlmNDU1ZC4uMmFkZDU2Zjc5
ZTg1MzhjNjA1OWFkZmJmYWMwYTI4NTViODgzODlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiBGb3JtQ29udHJvbFN0YXRlIEJhc2VDaGVja2FibGVJbnB1dFR5
cGU6OnNhdmVGb3JtQ29udHJvbFN0YXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgp
KTsKLSAgICByZXR1cm4geyBlbGVtZW50KCktPmNoZWNrZWQoKSA/ICJvbiJfcyA6ICJvZmYiX3Mg
fTsKKyAgICByZXR1cm4geyBlbGVtZW50KCktPmNoZWNrZWQoKSA/ICJvbiJfc3RyIDogIm9mZiJf
c3RyIH07CiB9CiAKIHZvaWQgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250
cm9sU3RhdGUoY29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMzc1NTI4MWQxODJl
M2FhYmUxOGM3OWQ5ZDM1MTM2OWFjNzM1NGU4Mi4uMWUxNGJlZmI0YjQ5MDE4YzA2NzcwMzNmNzg4
YmVhZjgzM2Y2ZjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFu
ZFRpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRU
aW1lSW5wdXRUeXBlLmNwcApAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1l
SW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSgpCiAgICAgICAgIGF1dG8gZGlzcGxheVZh
bHVlID0gdmlzaWJsZVZhbHVlKCk7CiAgICAgICAgIGlmIChkaXNwbGF5VmFsdWUuaXNFbXB0eSgp
KSB7CiAgICAgICAgICAgICAvLyBOZWVkIHRvIHB1dCBzb21ldGhpbmcgdG8ga2VlcCB0ZXh0IGJh
c2VsaW5lLgotICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gIiAiX3M7CisgICAgICAgICAgICBk
aXNwbGF5VmFsdWUgPSAiICJfc3RyOwogICAgICAgICB9CiAgICAgICAgIGRvd25jYXN0PEhUTUxF
bGVtZW50Pigqbm9kZSkuc2V0SW5uZXJUZXh0KGRpc3BsYXlWYWx1ZSk7CiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMTcwZmJjNTE0MDE2
YTQ0MTQ4ODQwOTYwNWM5OGQ3MjRlNWI1NmZmZC4uNmY5NzZlODgyMDUzNGQ2ODQ1OTI2YWM5YWE0
MGUzNjc3ZTNjM2YyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0
VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAg
LTExOSw3ICsxMTksNyBAQCBib29sIENvbG9ySW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVkKCkg
Y29uc3QKIAogU3RyaW5nIENvbG9ySW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29uc3QKIHsK
LSAgICByZXR1cm4gIiMwMDAwMDAiX3M7CisgICAgcmV0dXJuICIjMDAwMDAwIl9zdHI7CiB9CiAK
IFN0cmluZyBDb2xvcklucHV0VHlwZTo6c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bv
c2VkVmFsdWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCmluZGV4IDZmNDVl
MWNjNGZiYjI2Y2Q5YzdjMmRmMTYzMmI2NTJiZjE2NjVmODEuLmQzNWM1YTFlNjc1ODQwNzMwMTUx
M2JmMDdmNzVjOGZiZGU3MWQ2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9N
Rm9ybURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCkBA
IC04NCw3ICs4NCw3IEBAIHN0YXRpYyBhdXRvIGNyZWF0ZUZpbGVFbnRyeShjb25zdCBTdHJpbmcm
IG5hbWUsIEJsb2ImIGJsb2IsIGNvbnN0IFN0cmluZyYgZmlsZW5hCiAgICAgYXV0byB1c3ZOYW1l
ID0gcmVwbGFjZVVucGFpcmVkU3Vycm9nYXRlc1dpdGhSZXBsYWNlbWVudENoYXJhY3RlcihTdHJp
bmcobmFtZSkpOwogCiAgICAgaWYgKCFibG9iLmlzRmlsZSgpKQotICAgICAgICByZXR1cm4geyB1
c3ZOYW1lLCBGaWxlOjpjcmVhdGUoYmxvYi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2Is
IGZpbGVuYW1lLmlzTnVsbCgpID8gImJsb2IiX3MgOiBmaWxlbmFtZSkgfTsKKyAgICAgICAgcmV0
dXJuIHsgdXN2TmFtZSwgRmlsZTo6Y3JlYXRlKGJsb2Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LCBibG9iLCBmaWxlbmFtZS5pc051bGwoKSA/ICJibG9iIl9zdHIgOiBmaWxlbmFtZSkgfTsKIAog
ICAgIGlmICghZmlsZW5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IHVzdk5hbWUsIEZp
bGU6OmNyZWF0ZShibG9iLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZG93bmNhc3Q8RmlsZT4o
YmxvYiksIGZpbGVuYW1lKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
SW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKaW5k
ZXggMDBjZjAyOTlkNzQ5Nzc3MjEyMGRkZjIzNTg4MTU4ZjBhYWJjZTgyNC4uMjJlMTc3NWM2NDYy
ZDZhZmM3OTZiZTcyODZiOGYzNmViZWI4ZTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9EYXRlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1
dFR5cGUuY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgU3RyaW5nIERhdGVJbnB1dFR5cGU6OmZvcm1h
dERhdGVUaW1lRmllbGRzU3RhdGUoY29uc3QgRGF0ZVRpbWVGaWVsZHNTdGF0ZSYgc3RhdGUKIHZv
aWQgRGF0ZUlucHV0VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRpdEVsZW1l
bnQ6OkxheW91dFBhcmFtZXRlcnMmIGxheW91dFBhcmFtZXRlcnMsIGNvbnN0IERhdGVDb21wb25l
bnRzJikgY29uc3QKIHsKICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5
b3V0UGFyYW1ldGVycy5sb2NhbGUuZGF0ZUZvcm1hdCgpOwotICAgIGxheW91dFBhcmFtZXRlcnMu
ZmFsbGJhY2tEYXRlVGltZUZvcm1hdCA9ICJ5eXl5LU1NLWRkIl9zOworICAgIGxheW91dFBhcmFt
ZXRlcnMuZmFsbGJhY2tEYXRlVGltZUZvcm1hdCA9ICJ5eXl5LU1NLWRkIl9zdHI7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9j
YWxJbnB1dFR5cGUuY3BwCmluZGV4IGFlYjRhMTJkMTk1YmZjMDgwNGEwODE1M2FjOWI4ZjRjMTg0
ODMxOGQuLjliYzc4NTRjMTRjMGU4YzRmN2M2MTczMDhmZjVmYjgxYzE2MTc1ZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcApAQCAtMTMxLDEw
ICsxMzEsMTAgQEAgdm9pZCBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFt
ZXRlcnMoRGF0ZVRpbWVFZGl0RWxlbWVudDo6TGF5b3V0UGEKIAogICAgIGlmIChsYXlvdXRQYXJh
bWV0ZXJzLnNob3VsZEhhdmVNaWxsaXNlY29uZEZpZWxkIHx8IHNob3VsZEhhdmVTZWNvbmRGaWVs
ZChkYXRlKSkgewogICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5
b3V0UGFyYW1ldGVycy5sb2NhbGUuZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcygpOwotICAgICAg
ICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAieXl5eS1NTS1kZCdU
J0hIOm1tOnNzIl9zOworICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVG
b3JtYXQgPSAieXl5eS1NTS1kZCdUJ0hIOm1tOnNzIl9zdHI7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9j
YWxlLmRhdGVUaW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKTsKLSAgICAgICAgbGF5b3V0UGFyYW1l
dGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gInl5eXktTU0tZGQnVCdISDptbSJfczsKKyAg
ICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gInl5eXktTU0t
ZGQnVCdISDptbSJfc3RyOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cAppbmRleCAxYjM2ZDViMzZmMDAxYWQwN2U5ZTZhYTAyODY4MTYyNzIyNDY0ZDMwLi41YzAxNzdm
OGEzZDZhNmFmNTE2NjlmMWE4ZDFlZjlhZDhiZGY1ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxF
bGVtZW50LmNwcApAQCAtNTcyLDE1ICs1NzIsMTUgQEAgU3RyaW5nIEhUTUxFbGVtZW50Ojpjb250
ZW50RWRpdGFibGUoKSBjb25zdAogewogICAgIHN3aXRjaCAoY29udGVudEVkaXRhYmxlVHlwZSgq
dGhpcykpIHsKICAgICBjYXNlIENvbnRlbnRFZGl0YWJsZVR5cGU6OkluaGVyaXQ6Ci0gICAgICAg
IHJldHVybiAiaW5oZXJpdCJfczsKKyAgICAgICAgcmV0dXJuICJpbmhlcml0Il9zdHI7CiAgICAg
Y2FzZSBDb250ZW50RWRpdGFibGVUeXBlOjpUcnVlOgotICAgICAgICByZXR1cm4gInRydWUiX3M7
CisgICAgICAgIHJldHVybiAidHJ1ZSJfc3RyOwogICAgIGNhc2UgQ29udGVudEVkaXRhYmxlVHlw
ZTo6RmFsc2U6Ci0gICAgICAgIHJldHVybiAiZmFsc2UiX3M7CisgICAgICAgIHJldHVybiAiZmFs
c2UiX3N0cjsKICAgICBjYXNlIENvbnRlbnRFZGl0YWJsZVR5cGU6OlBsYWludGV4dE9ubHk6Ci0g
ICAgICAgIHJldHVybiAicGxhaW50ZXh0LW9ubHkiX3M7CisgICAgICAgIHJldHVybiAicGxhaW50
ZXh0LW9ubHkiX3N0cjsKICAgICB9Ci0gICAgcmV0dXJuICJpbmhlcml0Il9zOworICAgIHJldHVy
biAiaW5oZXJpdCJfc3RyOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdHJ1ZU5hbWUo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNzk4ZmU4NmJj
NGYzMjAyNjcxY2QyZDcxNDY2MDAwYjZlYmFiYjZiZi4uNDZjZTY2YzI3OGUyNzU2ZDUwOTgyNGE1
MjkyOThmYjVlYTMxOWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
Y3BwCkBAIC02NTUsMTMgKzY1NSwxMyBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2Rp
bmcoKSBjb25zdAogewogICAgIHN3aXRjaCAoZGVjb2RpbmdNb2RlKCkpIHsKICAgICBjYXNlIERl
Y29kaW5nTW9kZTo6U3luY2hyb25vdXM6Ci0gICAgICAgIHJldHVybiAic3luYyJfczsKKyAgICAg
ICAgcmV0dXJuICJzeW5jIl9zdHI7CiAgICAgY2FzZSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91
czoKLSAgICAgICAgcmV0dXJuICJhc3luYyJfczsKKyAgICAgICAgcmV0dXJuICJhc3luYyJfc3Ry
OwogICAgIGNhc2UgRGVjb2RpbmdNb2RlOjpBdXRvOgogICAgICAgICBicmVhazsKICAgICB9Ci0g
ICAgcmV0dXJuICJhdXRvIl9zOworICAgIHJldHVybiAiYXV0byJfc3RyOwogfQogCiBEZWNvZGlu
Z01vZGUgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmdNb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDJmMTBjZWQ4NDEzMWVkN2U5
ZGQxODdhMzQwMWNmZGNkZWM0YmE0M2UuLmViZTc0MzA3NWQxMTU3YmNhM2IwY2EyYTNkNmRlMjM0
MzMzMjBmMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNw
cApAQCAtMzk1LDcgKzM5NSw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWVD
b21tb24oY29uc3QgU3RyaW5nJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCCiAgICAgLy8gQ29k
ZSBlbHNld2hlcmUgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3MgYWRkZWQgYnkgdGhlIHVzZXIgdmlh
IHRoZSBrZXlib2FyZCBvciBwYXN0aW5nLgogICAgIC8vIFdlIG5vcm1hbGl6ZSBsaW5lIGVuZGlu
Z3MgY29taW5nIGZyb20gSmF2YVNjcmlwdCBoZXJlLgogICAgIFN0cmluZyBub3JtYWxpemVkVmFs
dWUgPSBuZXdWYWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuZXdWYWx1ZTsKLSAgICBu
b3JtYWxpemVkVmFsdWUucmVwbGFjZSgiXHJcbiIsICJcbiIpOworICAgIG5vcm1hbGl6ZWRWYWx1
ZS5yZXBsYWNlKCJcclxuIl9zdHIsICJcbiJfc3RyKTsKICAgICBub3JtYWxpemVkVmFsdWUucmVw
bGFjZSgnXHInLCAnXG4nKTsKIAogICAgIC8vIFJldHVybiBlYXJseSBiZWNhdXNlIHdlIGRvbid0
IHdhbnQgdG8gbW92ZSB0aGUgY2FyZXQgb3IgdHJpZ2dlciBvdGhlciBzaWRlIGVmZmVjdHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAK
aW5kZXggNzk0MjcwZGZjYTkyNThmYmQ2MDY1MDkzMTI0MTExNmE4OTY4ZDk0My4uNGYxMTU2MjJk
MjY3ZjUxMTlhOGE4ODM0MWE0NzEwNmU0MjJhODEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTc5OCw3ICs3OTgsNyBA
QCBTdHJpbmcgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRh
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICB9KCk7CiAK
LSAgICByZXR1cm4gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/ICJsdHIiX3MgOiAi
cnRsIl9zOworICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0
ciJfc3RyIDogInJ0bCJfc3RyOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGV4dEZvcm1D
b250cm9sRWxlbWVudDo6c2V0TWF4TGVuZ3RoKGludCBtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvTW9udGhJbnB1dFR5cGUuY3BwCmluZGV4IDE5ODNjNDA5OThmMDY1N2IxN2QxZDgwZGViMjgw
YmQ2MmU3NDU4MTEuLmRlZmZlY2E5N2U3NjgyNTAwZjAyYjk5Y2VjZDQ1MDY0NzNkYmQ4MDcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAg
U3RyaW5nIE1vbnRoSW5wdXRUeXBlOjpmb3JtYXREYXRlVGltZUZpZWxkc1N0YXRlKGNvbnN0IERh
dGVUaW1lRmllbGRzU3RhdGUmIHN0YXQKIHZvaWQgTW9udGhJbnB1dFR5cGU6OnNldHVwTGF5b3V0
UGFyYW1ldGVycyhEYXRlVGltZUVkaXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJzJiBsYXlvdXRQ
YXJhbWV0ZXJzLCBjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNvbnN0CiB7CiAgICAgbGF5b3V0UGFy
YW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxlLnNob3J0TW9u
dGhGb3JtYXQoKTsKLSAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQg
PSAieXl5eS1NTSJfczsKKyAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3Jt
YXQgPSAieXl5eS1NTSJfc3RyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcAppbmRleCBiMzg4MGU5MjI4MzI1YTY1MGQ1Mjg5YTMw
NTI3ODg3YmQ2MTg1YzI2Li5mZjI4MjNlYjU4OTI0YTlkMGZkYTEwMzk1YTY4ZmQ4NzAzOGFhZDNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTEzNCwxMCArMTM0LDEw
IEBAIHZvaWQgVGltZUlucHV0VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRp
dEVsZW1lbnQ6OkxheW91dFBhcmFtZXRlcnMmCiAKICAgICBpZiAobGF5b3V0UGFyYW1ldGVycy5z
aG91bGRIYXZlTWlsbGlzZWNvbmRGaWVsZCB8fCBzaG91bGRIYXZlU2Vjb25kRmllbGQoZGF0ZSkp
IHsKICAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFt
ZXRlcnMubG9jYWxlLnRpbWVGb3JtYXQoKTsKLSAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxs
YmFja0RhdGVUaW1lRm9ybWF0ID0gIkhIOm1tOnNzIl9zOworICAgICAgICBsYXlvdXRQYXJhbWV0
ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAiSEg6bW06c3MiX3N0cjsKICAgICB9IGVsc2Ug
ewogICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1l
dGVycy5sb2NhbGUuc2hvcnRUaW1lRm9ybWF0KCk7Ci0gICAgICAgIGxheW91dFBhcmFtZXRlcnMu
ZmFsbGJhY2tEYXRlVGltZUZvcm1hdCA9ICJISDptbSJfczsKKyAgICAgICAgbGF5b3V0UGFyYW1l
dGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gIkhIOm1tIl9zdHI7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAppbmRleCBlNGUzMGE5YjYwNGVm
MWE4NGQ3NzUyYmJkOGIzNzA4NDUyYTFlMDhmLi42ZWI4NzY4NDgzMmZkNGYzN2NlYjJmYTg0ZGEx
YzYzZWRhMTVjMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9z
aXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAK
QEAgLTQwLDcgKzQwLDcgQEAgU3RyaW5nIFVSTERlY29tcG9zaXRpb246OnByb3RvY29sKCkgY29u
c3QKIHsKICAgICBhdXRvIGZ1bGxVUkwgPSB0aGlzLT5mdWxsVVJMKCk7CiAgICAgaWYgKFdURjo6
cHJvdG9jb2xJc0phdmFTY3JpcHQoZnVsbFVSTC5zdHJpbmcoKSkpCi0gICAgICAgIHJldHVybiAi
amF2YXNjcmlwdDoiX3M7CisgICAgICAgIHJldHVybiAiamF2YXNjcmlwdDoiX3N0cjsKICAgICBy
ZXR1cm4gbWFrZVN0cmluZyhmdWxsVVJMLnByb3RvY29sKCksICc6Jyk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggOWQ2YTZj
Y2FkZTBiNGQ1ZWE0MDAyYjUyMmNmZmJkNDEzZjA1NmUxZS4uMDE3MThkNTczYTE5YTEwMjFhNzlj
M2E4ZTY2YTJiNjQwMTVmNTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHAKQEAgLTM1NCw4ICszNTQsOCBAQCBTdHJpbmcgcGFyc2VDT1JT
U2V0dGluZ3NBdHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAgICAgaWYgKHZhbHVl
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UodmFsdWUsICJ1c2UtY3JlZGVudGlhbHMiKSkKLSAgICAgICAgcmV0dXJuICJ1
c2UtY3JlZGVudGlhbHMiX3M7Ci0gICAgcmV0dXJuICJhbm9ueW1vdXMiX3M7CisgICAgICAgIHJl
dHVybiAidXNlLWNyZWRlbnRpYWxzIl9zdHI7CisgICAgcmV0dXJuICJhbm9ueW1vdXMiX3N0cjsK
IH0KIAogLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2VtYW50aWNz
Lmh0bWwjYXR0ci1tZXRhLWh0dHAtZXF1aXYtcmVmcmVzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggMjg5NjI4YWVhODk1YmIy
OGNkMDYzMjY1YjVlNDViNjUzYTUwNThmNS4uNDU3MjBlZTU5NGI5NzA4OTRkZmM4ZjI3ZWEzZGU2
ODU4ZDBlNDQ3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBy
ZWxvYWRTY2FubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJl
bG9hZFNjYW5uZXIuY3BwCkBAIC04MiwxMyArODIsMTMgQEAgU3RyaW5nIFRva2VuUHJlbG9hZFNj
YW5uZXI6OmluaXRpYXRvckZvcihUYWdJZCB0YWdJZCkKICAgICBzd2l0Y2ggKHRhZ0lkKSB7CiAg
ICAgY2FzZSBUYWdJZDo6U291cmNlOgogICAgIGNhc2UgVGFnSWQ6OkltZzoKLSAgICAgICAgcmV0
dXJuICJpbWciX3M7CisgICAgICAgIHJldHVybiAiaW1nIl9zdHI7CiAgICAgY2FzZSBUYWdJZDo6
SW5wdXQ6Ci0gICAgICAgIHJldHVybiAiaW5wdXQiX3M7CisgICAgICAgIHJldHVybiAiaW5wdXQi
X3N0cjsKICAgICBjYXNlIFRhZ0lkOjpMaW5rOgotICAgICAgICByZXR1cm4gImxpbmsiX3M7Cisg
ICAgICAgIHJldHVybiAibGluayJfc3RyOwogICAgIGNhc2UgVGFnSWQ6OlNjcmlwdDoKLSAgICAg
ICAgcmV0dXJuICJzY3JpcHQiX3M7CisgICAgICAgIHJldHVybiAic2NyaXB0Il9zdHI7CiAgICAg
Y2FzZSBUYWdJZDo6VW5rbm93bjoKICAgICBjYXNlIFRhZ0lkOjpTdHlsZToKICAgICBjYXNlIFRh
Z0lkOjpCYXNlOgpAQCAtOTYsMTAgKzk2LDEwIEBAIFN0cmluZyBUb2tlblByZWxvYWRTY2FubmVy
Ojppbml0aWF0b3JGb3IoVGFnSWQgdGFnSWQpCiAgICAgY2FzZSBUYWdJZDo6TWV0YToKICAgICBj
YXNlIFRhZ0lkOjpQaWN0dXJlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAg
ICAgcmV0dXJuICJ1bmtub3duIl9zOworICAgICAgICByZXR1cm4gInVua25vd24iX3N0cjsKICAg
ICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuICJ1bmtub3duIl9zOwor
ICAgIHJldHVybiAidW5rbm93biJfc3RyOwogfQogCiBjbGFzcyBUb2tlblByZWxvYWRTY2FubmVy
OjpTdGFydFRhZ1NjYW5uZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcApp
bmRleCA0YmE1MTkxZTZiM2U0MDk4NzljMjE5YzE2NmE4M2ZlNzEyYTM1ODdhLi5lMThhNTRjN2U3
MWI3MGQ4NGE3NWM5OWU2ODViNTZiODhkMzc2NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3Vy
aXR5T3JpZ2luLmNwcApAQCAtNTM4LDkgKzUzOCw5IEBAIHZvaWQgU2VjdXJpdHlPcmlnaW46OnNl
dEVuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uKCkKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9T
dHJpbmcoKSBjb25zdAogewogICAgIGlmIChpc1VuaXF1ZSgpKQotICAgICAgICByZXR1cm4gIm51
bGwiX3M7CisgICAgICAgIHJldHVybiAibnVsbCJfc3RyOwogICAgIGlmIChtX2RhdGEucHJvdG9j
b2wgPT0gImZpbGUiICYmIG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24pCi0gICAgICAgIHJl
dHVybiAibnVsbCJfczsKKyAgICAgICAgcmV0dXJuICJudWxsIl9zdHI7CiAgICAgcmV0dXJuIHRv
UmF3U3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlPcmlnaW5EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRh
LmNwcAppbmRleCAyZDM4NmRiMWZmM2M2MmNhZmE3OTllNTgyZjdlNWMwMjViZjBkYzNjLi45MTg5
ODM3ZjRmZjkyOGFjMzk5NmRkOWU2MjlhOTYxNzI4NmZkYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIFN0cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nKCkgY29uc3QKIHsK
ICAgICBpZiAocHJvdG9jb2wgPT0gImZpbGUiKQotICAgICAgICByZXR1cm4gImZpbGU6Ly8iX3M7
CisgICAgICAgIHJldHVybiAiZmlsZTovLyJfc3RyOwogCiAgICAgaWYgKHByb3RvY29sLmlzRW1w
dHkoKSAmJiBob3N0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTgxLDcgKzgx
LDcgQEAgU3RyaW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29u
c3QKICAgICAvLyBOb3cgdGhhdCB3ZSd2ZSBmaXhlZCB0aGF0IGJ1Zywgd2UgcHJvZHVjZSB0aGlz
IHN0cmluZyBmb3IgY29tcGF0aWJpbGl0eQogICAgIC8vIHdpdGggZXhpc3RpbmcgcGVyc2lzdGVu
dCBzdGF0ZS4KICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShwcm90b2NvbCwgImZpbGUi
KSkKLSAgICAgICAgcmV0dXJuICJmaWxlX18wIl9zOworICAgICAgICByZXR1cm4gImZpbGVfXzAi
X3N0cjsKIAogICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBhcmF0b3JDaGFyYWN0
ZXIsIEZpbGVTeXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBhcmF0b3JDaGFyYWN0
ZXIsIHBvcnQudmFsdWVfb3IoMCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9TZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5
LmNwcAppbmRleCBkYjA5NGEwMmQzMWNmM2JjMzNkNzllOGU3MWQ4MGM5ZDM2YTdkYzgwLi43ODBh
MjE0NGNjNDk4OGNlMmI0NGQwMGEzZDkxOWM1NjdhZmVlNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NlY3VyaXR5UG9saWN5LmNwcApAQCAtMTQ2LDE2ICsxNDYsMTYgQEAgU3RyaW5nIFNlY3VyaXR5
UG9saWN5OjpnZW5lcmF0ZU9yaWdpbkhlYWRlcihSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGlj
eSwgY29uc3QKIHsKICAgICBzd2l0Y2ggKHJlZmVycmVyUG9saWN5KSB7CiAgICAgY2FzZSBSZWZl
cnJlclBvbGljeTo6Tm9SZWZlcnJlcjoKLSAgICAgICAgcmV0dXJuICJudWxsIl9zOworICAgICAg
ICByZXR1cm4gIm51bGwiX3N0cjsKICAgICBjYXNlIFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVy
V2hlbkRvd25ncmFkZToKICAgICBjYXNlIFJlZmVycmVyUG9saWN5OjpTdHJpY3RPcmlnaW46CiAg
ICAgY2FzZSBSZWZlcnJlclBvbGljeTo6U3RyaWN0T3JpZ2luV2hlbkNyb3NzT3JpZ2luOgogICAg
ICAgICBpZiAocHJvdG9jb2xJcyhzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpLCAiaHR0cHMiKSAm
JiAhdXJsLnByb3RvY29sSXMoImh0dHBzIikpCi0gICAgICAgICAgICByZXR1cm4gIm51bGwiX3M7
CisgICAgICAgICAgICByZXR1cm4gIm51bGwiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBSZWZlcnJlclBvbGljeTo6U2FtZU9yaWdpbjoKICAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdp
bi5jYW5SZXF1ZXN0KHVybCkpCi0gICAgICAgICAgICByZXR1cm4gIm51bGwiX3M7CisgICAgICAg
ICAgICByZXR1cm4gIm51bGwiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWZlcnJl
clBvbGljeTo6RW1wdHlTdHJpbmc6CiAgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6T3JpZ2luOgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCmluZGV4IDc1MTJiMDIzZDVhMjQx
NjlmODVlNDgwYzFlMGIwODY3YjE2YTBjNjkuLmQ4NGE4MGM4MDY4MWFiNDU4ODMzNWViMmI5OWNl
OWM3ZmZlMThiOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRU
eXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKQEAg
LTQ1LDEzICs0NSwxMyBAQCBDb250ZW50VHlwZTo6Q29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSkKIAogY29uc3QgU3RyaW5nJiBDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVy
KCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb2RlY3MgeyAiY29kZWNz
Il9zIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29kZWNzIHsgImNvZGVj
cyJfc3RyIH07CiAgICAgcmV0dXJuIGNvZGVjczsKIH0KIAogY29uc3QgU3RyaW5nJiBDb250ZW50
VHlwZTo6cHJvZmlsZXNQYXJhbWV0ZXIoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxT
dHJpbmc+IHByb2ZpbGVzIHsgInByb2ZpbGVzIl9zIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFN0cmluZz4gcHJvZmlsZXMgeyAicHJvZmlsZXMiX3N0ciB9OwogICAgIHJldHVybiBwcm9m
aWxlczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAppbmRleCA5ZWMwMTcyYTIx
YTk4ZGM4MDdhNGMxNjc3NTdlNzM1YWJlMjM1ODQ4Li5jNzRkMDlhNTE1MzI4YmVjMDg2YWU3ZDkw
NTZlZDg0NjlmYTgxODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNp
bWFsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtOTUy
LDEwICs5NTIsMTAgQEAgU3RyaW5nIERlY2ltYWw6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBz
d2l0Y2ggKG1fZGF0YS5mb3JtYXRDbGFzcygpKSB7CiAgICAgY2FzZSBFbmNvZGVkRGF0YTo6Q2xh
c3NJbmZpbml0eToKLSAgICAgICAgcmV0dXJuIHNpZ24oKSA/ICItSW5maW5pdHkiX3MgOiAiSW5m
aW5pdHkiX3M7CisgICAgICAgIHJldHVybiBzaWduKCkgPyAiLUluZmluaXR5Il9zdHIgOiAiSW5m
aW5pdHkiX3N0cjsKIAogICAgIGNhc2UgRW5jb2RlZERhdGE6OkNsYXNzTmFOOgotICAgICAgICBy
ZXR1cm4gIk5hTiJfczsKKyAgICAgICAgcmV0dXJuICJOYU4iX3N0cjsKIAogICAgIGNhc2UgRW5j
b2RlZERhdGE6OkNsYXNzTm9ybWFsOgogICAgIGNhc2UgRW5jb2RlZERhdGE6OkNsYXNzWmVybzoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCmluZGV4IGJjZThj
NDMwMzQwZmU2NzBiYzI0OWNkZjE3Yjk4NjlhNDRhYjg2MjAuLjRlOWMxNmFjMGRkMWZmYjNhYTgx
NGI0NDdkOTJmYTYwOGM2Y2U4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1JlZ2lzdHJhYmxlRG9tYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0
cmFibGVEb21haW4uaApAQCAtMTA1LDcgKzEwNSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToK
ICAgICBleHBsaWNpdCBSZWdpc3RyYWJsZURvbWFpbihTdHJpbmcmJiBkb21haW4pCi0gICAgICAg
IDogbV9yZWdpc3RyYWJsZURvbWFpbiB7IGRvbWFpbi5pc0VtcHR5KCkgPyAibnVsbE9yaWdpbiJf
cyA6IFdURk1vdmUoZG9tYWluKSB9CisgICAgICAgIDogbV9yZWdpc3RyYWJsZURvbWFpbiB7IGRv
bWFpbi5pc0VtcHR5KCkgPyAibnVsbE9yaWdpbiJfc3RyIDogV1RGTW92ZShkb21haW4pIH0KICAg
ICB7CiAgICAgfQogCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBk
b21haW4gPSBob3N0OwogI2VuZGlmCiAgICAgICAgIGlmIChob3N0LmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIGRvbWFpbiA9ICJudWxsT3JpZ2luIl9zOworICAgICAgICAgICAgZG9tYWluID0gIm51
bGxPcmlnaW4iX3N0cjsKICAgICAgICAgZWxzZSBpZiAoZG9tYWluLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIGRvbWFpbiA9IGhvc3Q7CiAgICAgICAgIHJldHVybiBkb21haW47CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcAppbmRl
eCA5N2IyMDU3ZjZhNDBmZGViZTRkZDM1NmRmM2MzNzRiMDg2ZTVhZjc2Li5lYjUwZDFjMTU4NWU3
ZGFiZWFlZWYyOTc2ODkzODQ4ODFhYWZmNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAKQEAgLTE5OCwxMyArMTk4LDEz
IEBAIFN0cmluZyBUaW1pbmdGdW5jdGlvbjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgaWYgKG1fdHlw
ZSA9PSBUaW1pbmdGdW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbikgewogICAgICAgICBhdXRv
JiBmdW5jdGlvbiA9IGRvd25jYXN0PEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+KCp0aGlzKTsK
ICAgICAgICAgaWYgKGZ1bmN0aW9uLngxKCkgPT0gMC4yNSAmJiBmdW5jdGlvbi55MSgpID09IDAu
MSAmJiBmdW5jdGlvbi54MigpID09IDAuMjUgJiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAg
ICAgICAgICByZXR1cm4gImVhc2UiOworICAgICAgICAgICAgcmV0dXJuICJlYXNlIl9zdHI7CiAg
ICAgICAgIGlmIChmdW5jdGlvbi54MSgpID09IDAuNDIgJiYgIWZ1bmN0aW9uLnkxKCkgJiYgZnVu
Y3Rpb24ueDIoKSA9PSAxLjAgJiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICBy
ZXR1cm4gImVhc2UtaW4iOworICAgICAgICAgICAgcmV0dXJuICJlYXNlLWluIl9zdHI7CiAgICAg
ICAgIGlmICghZnVuY3Rpb24ueDEoKSAmJiAhZnVuY3Rpb24ueTEoKSAmJiBmdW5jdGlvbi54Migp
ID09IDAuNTggJiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICByZXR1cm4gImVh
c2Utb3V0IjsKKyAgICAgICAgICAgIHJldHVybiAiZWFzZS1vdXQiX3N0cjsKICAgICAgICAgaWYg
KGZ1bmN0aW9uLngxKCkgPT0gMC40MiAmJiAhZnVuY3Rpb24ueTEoKSAmJiBmdW5jdGlvbi54Migp
ID09IDAuNTggJiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICByZXR1cm4gImVh
c2UtaW4tb3V0IjsKKyAgICAgICAgICAgIHJldHVybiAiZWFzZS1pbi1vdXQiX3N0cjsKICAgICAg
ICAgcmV0dXJuIG1ha2VTdHJpbmcoImN1YmljLWJlemllcigiLCBmdW5jdGlvbi54MSgpLCAiLCAi
LCBmdW5jdGlvbi55MSgpLCAiLCAiLCBmdW5jdGlvbi54MigpLCAiLCAiLCBmdW5jdGlvbi55Migp
LCAnKScpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455321</attachid>
            <date>2022-03-21 19:55:11 -0700</date>
            <delta_ts>2022-03-21 22:21:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238162-20220321195510.patch</filename>
            <type>text/plain</type>
            <size>674339</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZTIwYjdiMTJiMzg2NWRjZDg1ZjQyNjA4N2ZlNzE4NGZlNzUxMDc4Li45MDdmNDc3YzVmN2JlNTgw
NGQ3OWVhY2YzNDRiZDExZjVkZGExNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MTUgQEAKKzIwMjItMDMtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmcgbGl0ZXJhbHMgd2l0aCBfc3RyIHN1ZmZpeCBzaG91bGQgbm90IG5l
ZWQgdG8gZG8gc3RybGVuKCkgYXQgcnVudGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgdGhlICIiX3N0ciBvcGVyYXRvciBpbiBtb3JlIHBs
YWNlcyBzbyB0aGV5IGNhbiBsZXZlcmFnZSB0aGUgb3B0aW1pemF0aW9uLgorCisgICAgICAgICog
QVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tOgorICAgICAgICAoSlNDOjpjb21wdXRlVmFsaWRJbXBv
cnRTcGVjaWZpZXIpOgorICAgICAgICAoSlNDOjpKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9h
ZGVyRmV0Y2gpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdCk6CisgICAgICAgIChK
U0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tVG9QcmltaXRpdmUpOgorICAgICAg
ICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVySW1w
bCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0
ZXJJbXBsKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmpl
Y3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAgICAqIEFQSS9KU1NjcmlwdC5tbToK
KyAgICAgICAgKC1bSlNTY3JpcHQgd3JpdGVDYWNoZTpdKToKKyAgICAgICAgKiBBUEkvSlNUeXBl
ZEFycmF5LmNwcDoKKyAgICAgICAgKEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlc1B0cik6Cisg
ICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChjb250YWluZXJWYWx1ZVRvT2JqZWN0
KToKKyAgICAgICAgKHZhbHVlVG9BcnJheSk6CisgICAgICAgICh2YWx1ZVRvRGljdGlvbmFyeSk6
CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tOgorICAgICAgICAoSlNDOjpv
YmpDQ2FsbGJhY2tGdW5jdGlvbkNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6b2JqQ0Nh
bGxiYWNrRnVuY3Rpb25DYWxsQXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Ok9iakNDYWxs
YmFja0Z1bmN0aW9uSW1wbDo6Y2FsbCk6CisgICAgICAgICogQVBJL2dsaWIvSlNDQ2FsbGJhY2tG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ0NhbGxiYWNrRnVuY3Rpb246OmNhbGwpOgor
ICAgICAgICAoSlNDOjpKU0NDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QpOgorICAgICAgICAq
IEFQSS9nbGliL0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoanNjQ29udGV4dEpTVmFsdWVUb0dW
YWx1ZSk6CisgICAgICAgICogQVBJL2dsaWIvSlNDVmFsdWUuY3BwOgorICAgICAgICAoanNjVmFs
dWVPYmplY3REZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKToKKyAgICAgICAgKGpzY1ZhbHVlRnVuY3Rp
b25DcmVhdGUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmFtZUZv
clJlZ2lzdGVyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05l
eHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y0Nsb3NlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlp
ZWxkKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRXJyb3JOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmJpbmRW
YWx1ZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZn
L0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZUltcGwpOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFy
cmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElP
Tik6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjp2YWxpZGF0ZUFJU3RhdGUpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90
QnVpbGRlci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U6OmNsZWFyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRp
ZXM6OmZpbmRTdHlsZXNoZWV0U291cmNlTWFwVVJMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6SW5q
ZWN0ZWRTY3JpcHQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZXhlY3V0
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojphd2FpdFByb21pc2UpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldFByZXZpZXcpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
amVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMgY29uc3QpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdCBjb25zdCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmluZyBjb25zdCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUgY29uc3QpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnNldEV2ZW50VmFsdWUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6Y2xlYXJFdmVudFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHQ6OnNldEV4Y2VwdGlvblZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHQ6OmNsZWFyRXhjZXB0aW9uVmFsdWUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQgY29uc3QpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE9iamVjdCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cCk6CisgICAgICAgIChJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0OjpjcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdCBjb25zdCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgIChJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxsUmVzdWx0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvck9iamVjdElkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnRpbWVTdGFtcCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpyZWNvcmRFbmQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QpOgor
ICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6
OmFwcGVuZEFQSUJhY2t0cmFjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcik6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpzdWJ0eXBlKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFsUHJvcGVy
dGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUlu
c3RhbmNlcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVy
eUhvbGRlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZy
YW1lOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzOjpnZXRGaXJzdEFyZ3VtZW50
QXNTdHJpbmcgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJv
bUV4Y2VwdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6SW5zcGVjdG9yQXVkaXRBZ2Vu
dCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckF1ZGl0QWdlbnQ6OnNldHVwKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6dGVhcmRvd24pOgorICAgICAgICAqIGludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6ZnJpZW5kbHlG
dW5jdGlvbk5hbWUpOgorICAgICAgICAqIGludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwOgor
ICAgICAgICAoSlNDOjpTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OmR1bXAgY29uc3QpOgorICAgICAg
ICAoSlNDOjpTaGFkb3dDaGlja2VuOjpGcmFtZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpG
cmFtZTo6ZnVuY3Rpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpG
cmFtZTo6c291cmNlVVJMIGNvbnN0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpkb01haW5UaHJlYWRQcmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKToKKyAgICAgICAgKEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
IChjb21wdXRlRmlsZVBhdGgpOgorICAgICAgICAocnVuV2l0aE9wdGlvbnMpOgorICAgICAgICAo
cnVuSW50ZXJhY3RpdmUpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTElu
dDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAgICAgICogcGFyc2VyL0xleGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmludmFsaWRDaGFyYWN0ZXJNZXNzYWdlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6TGV4ZXI8VD46OnBhcnNlQ29tcGxleEVzY2FwZSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+
OjpwYXJzZVN0cmluZ1Nsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlVGVt
cGxhdGVMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleFdpdGhvdXRDbGVhcmlu
Z0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpzZXRFcnJvck1lc3NhZ2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5V2l0aFNpemVR
dWlyayk6CisgICAgICAgIChKU0M6OmlzQXJyYXlTbG93SW5saW5lKToKKyAgICAgICAgKiBydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0TGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6dG9Mb2Nh
bGVTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjphdG9taWNzV2FpdEltcGwpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCaWdJbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQmln
SW50UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dG9UaGlzQmlnSW50VmFsdWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RF
RklORV9DT01NT05fU0xPV19QQVRIKToKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVDbGllbnQu
Y3BwOgorICAgICAgICAoSlNDOjphcHBlbmRNZXNzYWdlUHJlZml4KToKKyAgICAgICAgKEpTQzo6
Q29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29uc29sZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnZhbHVlT3JEZWZh
dWx0TGFiZWxTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmZvcm1hdGVEYXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpEYXRlUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlU3ludGF4
RXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpj
cmVhdGVPdXRPZk1lbW9yeUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAg
ICAgIChKU0M6OnRocm93Vk1FcnJvcik6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNl
LmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkTmFtZVN0cmluZyk6
CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHA6CisgICAgICAgIChKU0M6
OmRvRXhjZXB0aW9uRnV6emluZyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKToKKyAgICAgICAg
KEpTQzo6bm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjppbnZhbGlk
UGFyYW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAo
SlNDOjppbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlv
blNvdXJjZUFwcGVuZGVyKToKKyAgICAgICAgKEpTQzo6aW52YWxpZFByb3RvdHlwZVNvdXJjZUFw
cGVuZGVyKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0
ZXJFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKToK
KyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvck5vdEZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJF
cnJvckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmNyZWF0ZU5v
dEFDb25zdHJ1Y3RvckVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlTm90QUZ1bmN0aW9uRXJy
b3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVOb3RBbk9iamVjdEVycm9yKToKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlSW52YWxpZFByb3RvdHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlVERa
RXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6Cisg
ICAgICAgIChKU0M6OmNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAo
SlNDOjpjcmVhdGVQcml2YXRlTWV0aG9kQWNjZXNzRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVh
dGVSZWluc3RhbGxQcml2YXRlTWV0aG9kRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRmluYWxp
emF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkZpbmFsaXphdGlv
blJlZ2lzdHJ5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RmluYWxpemF0aW9uUmVnaXN0
cnkpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpnZXRGdW5jdGlvblJlYWxtKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxDb2xsYXRvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6c29y
dExvY2FsZURhdGEpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OnNlYXJjaExvY2FsZURh
dGEpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcik6Cisg
ICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6
OmNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdDo6bG9jYWxlRGF0YSk6CisgICAgICAgIChKU0M6OnRvRGF0ZVRpbWVPcHRpb25zQW55RGF0
ZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZURhdGVJbnRlcnZhbEZv
cm1hdElmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXRSYW5nZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VU
b1BhcnRzKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6aW5pdGlh
bGl6ZURpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6Om9mIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxMaXN0Rm9ybWF0Ojppbml0
aWFsaXplTGlzdEZvcm1hdCk6CisgICAgICAgIChKU0M6OnN0cmluZ0xpc3RGcm9tSXRlcmFibGUp
OgorICAgICAgICAoSlNDOjpJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SW50bExpc3RGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxM
aXN0Rm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGUuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsTG9jYWxlOjppbml0aWFsaXplTG9jYWxlKToKKyAgICAgICAgKEpTQzo6SW50
bExvY2FsZTo6Y2FsZW5kYXJzKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y29sbGF0aW9u
cyk6CisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OmhvdXJDeWNsZXMpOgorICAgICAgICAoSlND
OjpJbnRsTG9jYWxlOjpudW1iZXJpbmdTeXN0ZW1zKToKKyAgICAgICAgKEpTQzo6SW50bExvY2Fs
ZTo6dGltZVpvbmVzKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6dGV4dEluZm8pOgorICAg
ICAgICAoSlNDOjpJbnRsTG9jYWxlOjp3ZWVrSW5mbyk6CisgICAgICAgICogcnVudGltZS9JbnRs
TG9jYWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5j
cHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3Jt
YXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0c0ludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3JvdXBpbmdWYWx1ZSk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpzZXRO
dW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICog
cnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXplTG9jYWxl
TGlzdCk6CisgICAgICAgIChKU0M6OmRlZmF1bHRMb2NhbGUpOgorICAgICAgICAoSlNDOjpyZXNv
bHZlTG9jYWxlKToKKyAgICAgICAgKEpTQzo6bWFwSUNVQ2FsZW5kYXJLZXl3b3JkVG9CQ1A0Nyk6
CisgICAgICAgIChKU0M6Om1hcEJDUDQ3VG9JQ1VDYWxlbmRhcktleXdvcmQpOgorICAgICAgICAo
SlNDOjptYXBJQ1VDb2xsYXRpb25LZXl3b3JkVG9CQ1A0Nyk6CisgICAgICAgIChKU0M6OmF2YWls
YWJsZUNvbGxhdGlvbnMpOgorICAgICAgICAoSlNDOjphdmFpbGFibGVDdXJyZW5jaWVzKToKKyAg
ICAgICAgKEpTQzo6YXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcyk6CisgICAgICAgIChKU0M6OmNh
bm9uaWNhbGl6ZVRpbWVab25lTmFtZUZyb21JQ1VUaW1lWm9uZSk6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjppbnRsR2V0T3B0aW9uc09iamVjdCk6CisgICAgICAgICog
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVs
ZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxl
czo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
OjpzZWxlY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdFJh
bmdlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdCk6CisgICAgICAgIChK
U0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdEludGVybmFsIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9J
bnRsU2VnbWVudGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6aW5pdGlhbGl6
ZVNlZ21lbnRlcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXI6OnNlZ21lbnQgY29uc3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50
cy5jcHA6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6Y3JlYXRlU2VnbWVudEl0ZXJhdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JdGVy
YXRvck9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvck5leHQpOgorICAgICAg
ICAoSlNDOjppdGVyYXRvckNsb3NlKToKKyAgICAgICAgKEpTQzo6aGFzSXRlcmF0b3JNZXRob2Qp
OgorICAgICAgICAoSlNDOjppdGVyYXRvck1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
clByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU3BlY2llc0NvbnN0cnVj
dG9yU2xvdyk6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU2xpY2UpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjp2YWxpZGF0ZVR5cGVk
QXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpleHBv
bmVudGlhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpdmlkZUltcGwpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVySW1wbCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpsZWZ0U2hpZnRCeUFic29sdXRlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFsbG9j
YXRlRm9yKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvTnVtYmVyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmFzVWludE5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQmln
SW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OnRvQmlnSW50IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OnRvUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk6CisgICAgICAgICogcnVu
dGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpnZXREYXRhKToKKyAgICAgICAgKEpTQzo6c2V0RGF0YSk6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9KU0RhdGVNYXRoLmNwcDoK
KyAgICAgICAgKEpTQzo6RGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUpOgorICAgICAgICAoSlND
OjpEYXRlQ2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5lZWRlZCk6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMp
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmlj
VHlwZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpzcGVjaWVzQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAg
ICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UpOgorICAgICAg
ICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpuYW1l
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6ZGVjb2RlKToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3Ry
aW5naWZpZWRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6Y2FsbFRv
UHJpbWl0aXZlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b3JkaW5hcnlUb1By
aW1pdGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFu
Y2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pT
VHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlZEFycmF5SXRlcmF0b3JPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgpOgorICAgICAgICAoSlNDOjpM
aXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleFN0cmluZ1Nsb3cpOgorICAgICAgICAo
SlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleE51bWJlcik6CisgICAgICAg
IChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpzZXRFcnJvck1lc3NhZ2VGb3JUb2tlbik6
CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZVByaW1pdGl2ZVZh
bHVlKToKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKToKKyAg
ICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBh
cnNlcjo6Z2V0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6TWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1l
L01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldE1hcCk6CisgICAgICAgICogcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6dG9Qcm9wZXJ0eURlc2Ny
aXB0b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAo
SlNDOjpvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc1VSU2hpZnQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OnBlcmZvcm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50
ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0Ojpw
ZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVB1
dCk6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChK
U0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmpl
Y3Q6OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0
OjpwZXJmb3JtSXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZv
cm1EZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
R2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
U2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90
b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9SZWdFeHAu
Y3BwOgorICAgICAgICAoSlNDOjplc2NhcGVQYXR0ZXJuKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKToKKyAgICAgICAg
KEpTQzo6dG9GbGFncyk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRp
bWUvUnVudGltZVR5cGUuY3BwOgorICAgICAgICAoSlNDOjpydW50aW1lVHlwZUFzU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpT
YW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6
OlNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2Rlcyk6CisgICAgICAgICogcnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6
cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0U2V0KToKKyAg
ICAgICAgKiBydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUu
Y3BwOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOgorICAgICAg
ICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUgY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OnRvTG9jYWxlQ2FzZSk6
CisgICAgICAgICogcnVudGltZS9TeW1ib2wuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OnRv
TnVtYmVyIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OlN5bWJvbFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHA6CisgICAgICAgIChKU0M6OnBhcnNlVGVtcG9y
YWxDYWxlbmRhclN0cmluZyk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxEdXJhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRy
eUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpmcm9tRHVy
YXRpb25MaWtlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9JU084NjAxRHVy
YXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlv
bik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OmNvbXBhcmUpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbER1cmF0aW9uOjp3aXRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxEdXJhdGlvbjo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6
c3VidHJhY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpyb3VuZCBj
b25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvdGFsIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3Jh
bER1cmF0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHA6CisgICAgICAgICogcnVudGltZS9UZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjp0ZW1wb3JhbExhcmdlc3RVbml0KToKKyAg
ICAgICAgKEpTQzo6dGVtcG9yYWxTbWFsbGVzdFVuaXQpOgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWUuY3BwOgorICAgICAgICAoSlNDOjp0b1BsYWluVGltZSk6CisgICAgICAg
IChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgIChKU0M6OnRv
VGVtcG9yYWxUaW1lUmVjb3JkKToKKyAgICAgICAgKEpTQzo6dG9QYXJ0aWFsVGltZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWU6OndpdGggY29uc3QpOgorICAgICAgICAoSlNDOjpleHRyYWN0RGlmZmVyZW5j
ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3Bw
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpmcm9tKToKKyAgICAgICAgKiBydW50
aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsVGltZVpvbmVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1l
Wm9uZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tik6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNl
dDo6ZHVtcFR5cGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6ZGlzcGxheU5hbWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6bGVhc3RDb21tb25BbmNlc3Rv
cik6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVNoYXBlOjpzZXRDb25zdHJ1Y3Rvck5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEpOgorICAgICAgICAqIHJ1bnRp
bWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6Z2V0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpnZXRXZWFrUmVmKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OldlYWtTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
V2Vha1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFdlYWtTZXQpOgorICAgICAg
ICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6
ZU92ZXJyaWRlSW5mbyk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisKIDIwMjItMDMtMjEgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWZlcmVuY2VFcnJv
ciB3aGVuIHVzaW5nIGV4dHJhIHBhcmVucyBpbiBjbGFzcyBmaWVsZHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNDRiYmRiODky
MmFlYjFiNGFkNWZkMzNhMTBiMGRiYWFkODY1NDA3NC4uMGQzOTUzNGQ4YTE2ZGVkZDVkYWI2OTUy
ZmVjOTBiMTYwYmRiOWIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0wMy0yMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZyBsaXRlcmFscyB3aXRo
IF9zdHIgc3VmZml4IHNob3VsZCBub3QgbmVlZCB0byBkbyBzdHJsZW4oKSBhdCBydW50aW1lCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxNjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgIiJfc3Ry
IG9wZXJhdG9yIHdhcyBjb25zdHJ1Y3RpbmcgYSBTdHJpbmcgZnJvbSBhbiBBU0NJSUxpdGVyYWwu
IFdoaWxlIHRoaXMgYXZvaWRlZCBjb3BpbmcgdGhlIGNoYXJhY3RlcnMsCisgICAgICAgIGl0IGNv
dWxkIHRyaWdnZXIgY2FsbHMgdG8gc3RybGVuKCkgYXQgcnVuIHRpbWUgdG8gZmlndXJlIG91dCB0
aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuIFRoaXMgd2FzIHVuZm9ydW5hdGUKKyAgICAgICAgc2lu
Y2UgdGhlICIiX3N0ciBvcGVyYXRvciB0YWtlcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgYXMg
cGFyYW1ldGVyIGFuZCB3YXMgc2ltcGx5IGlnbm9yaW5nIGl0LiBUaGUgIiJfc3RyCisgICAgICAg
IG9wZXJhdG9yIG5vdyBjb25zdHJ1Y3RzIHN0cmluZ3MgbW9yZSBlZmZpY2llbnRseSBieSBub3Qg
aWdub3JpbmcgdGhlIGxlbmd0aCBpdCB0YWtlcyBhcyBwYXJhbWV0ZXIgYW5kIHRodXMKKyAgICAg
ICAgYXZvaWRpbmcgcnVudGltZSBjYWxscyB0byBzdHJsZW4oKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGFsc28gYWRvcHRzIHRoZSAiIl9zdHIgb3BlcmF0b3IgaW4gbW9yZSBwbGFjZXMgc28gdGhl
eSBjYW4gbGV2ZXJhZ2UgdGhlIG9wdGltaXphdGlvbi4KKworICAgICAgICAqIHd0Zi9JbmRlbnRl
ci5oOgorICAgICAgICAoV1RGOjpJbmRlbnRlcjo6SW5kZW50ZXIpOgorICAgICAgICAqIHd0Zi9M
b2dnZXIuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ6OnRvU3RyaW5nKToKKyAgICAgICAg
KiB3dGYvTWVkaWFUaW1lLmNwcDoKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0pTT05PYmpl
Y3QgY29uc3QpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKiB3dGYvVVJMLmNwcDoKKyAgICAgICAgKFdURjo6bWltZVR5cGVGcm9t
RGF0YVVSTCk6CisgICAgICAgICogd3RmL2NmL0xhbmd1YWdlQ0YuY3BwOgorICAgICAgICAoV1RG
OjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAqIHd0Zi90ZXh0L1dU
RlN0cmluZy5jcHA6CisgICAgICAgIChhc2NpaURlYnVnKToKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nTGl0ZXJhbHM6Om9wZXJhdG9yIF9zdHIp
OgorICAgICAgICAqIHd0Zi91bml4L0xhbmd1YWdlVW5peC5jcHA6CisgICAgICAgIChXVEY6OnBs
YXRmb3JtTGFuZ3VhZ2UpOgorCiAyMDIyLTAzLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVmVjdG9yIG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBhcmUgc3Vib3B0aW1hbCB3aGVuIHRoZSB2ZWN0b3IgaGFzIGFuIGlubGlu
ZSBidWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2N2UzYmRkMzRjN2M4MjliMDUzZTg1NjUxOWRjNGZmM2Y5
YjQ4MDlmLi5lYzUxMjA5NGZiNTZiNzVlZDU5OGQ2OWY0YmYyN2E4MjcyNjlkNGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE3IEBACisyMDIyLTAzLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nIGxpdGVyYWxzIHdpdGggX3N0ciBzdWZmaXggc2hv
dWxkIG5vdCBuZWVkIHRvIGRvIHN0cmxlbigpIGF0IHJ1bnRpbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IHRoZSAiIl9zdHIgb3BlcmF0b3Ig
aW4gbW9yZSBwbGFjZXMgc28gdGhleSBjYW4gbGV2ZXJhZ2UgdGhlIG9wdGltaXphdGlvbi4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVEZWZhdWx0VmFsdWUpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmlu
aXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAg
ICAgICAoR2VuZXJhdGVDYWxsVHJhY2VyKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VSdWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlUnVsZTo6Y3NzVGV4dCBjb25zdCk6
CisgICAgICAgICogY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmJhc2VQYWxldHRlIGNvbnN0KToKKyAg
ICAgICAgKiBjc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NL
ZXlmcmFtZXNSdWxlOjppbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFnZVJ1bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFnZVJ1bGU6OnNlbGVjdG9yVGV4dCBjb25zdCk6Cisg
ICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTaGVldDo6Y3NzUnVsZXNGb3JCaW5kaW5ncyk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hl
ZXQuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0ZvbnRG
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udEZhY2U6OmZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250
RmFjZTo6c3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OndlaWdodCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c3RyZXRjaCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udEZhY2U6OmRpc3BsYXkgY29uc3QpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OnNlcmlhbGl6ZSBjb25zdCk6CisgICAg
ICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5UHJpb3Jp
dHkpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVQcm9wZXJ0aWVzOjpwYWdlQnJlYWtQcm9wZXJ0eVZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBh
cnNlcjo6Y29tbWl0TWVkaWFRdWVyeSk6CisgICAgICAgICogZG9tL0NEQVRBU2VjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246Om5vZGVOYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBkb20vQ29tbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tZW50Ojpub2RlTmFt
ZSBjb25zdCk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VnZ2Vz
dGVkTUlNRVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbnRlbnRU
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2RlTmFtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d3JpdGVsbik6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZGVzaWduTW9kZSBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6bm9kZU5hbWUg
Y29uc3QpOgorICAgICAgICAqIGRvbS9GcmFnbWVudERpcmVjdGl2ZVBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VGcmFnbWVudERpcmVj
dGl2ZSk6CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6
bm9kZU5hbWUgY29uc3QpOgorICAgICAgICAqIGRvbS9UZXh0RW5jb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RW5jb2Rlcjo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAqIGh0bWwv
QmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2th
YmxlSW5wdXRUeXBlOjpzYXZlRm9ybUNvbnRyb2xTdGF0ZSBjb25zdCk6CisgICAgICAgICogaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSk6CisgICAgICAgICogaHRt
bC9Db2xvcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6
ZmFsbGJhY2tWYWx1ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9ET01Gb3JtRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVGaWxlRW50cnkpOgorICAgICAgICAqIGh0bWwvRGF0ZUlu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpzZXR1cExheW91
dFBhcmFtZXRlcnMgY29uc3QpOgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXR1cExh
eW91dFBhcmFtZXRlcnMgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OmRlY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6
c2V0VmFsdWVDb21tb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
cmVjdGlvbkZvckZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBodG1sL01vbnRoSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFt
ZXRlcnMgY29uc3QpOgorICAgICAgICAqIGh0bWwvVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaW1lSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpV
UkxEZWNvbXBvc2l0aW9uOjpwcm90b2NvbCBjb25zdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNPUlNTZXR0aW5n
c0F0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OmluaXRpYXRvckZvcik6
CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRh
YmFzZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlT3JpZ2luSGVhZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRUeXBlOjpwcm9maWxlc1BhcmFtZXRlcik6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOjpSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjo6cmVnaXN0cmFibGVEb21haW5Gcm9tSG9zdCk6CisgICAgICAgICogcGxh
dGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRp
bWluZ0Z1bmN0aW9uOjpjc3NUZXh0IGNvbnN0KToKKwogMjAyMi0wMy0yMSAgQW50b2luZSBRdWlu
dCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbbWVkaWEtY29udHJvbHNdIHNjcnVi
YmluZyBvbiBpT1Mgd2hlbiBpbmxpbmUgZG9lcyBub3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggYjNlMmFlNDQxYzRlYzUyMzQy
YWZlOWQ1NDllNGFlNjIzOGNlMzQ1Zi4uNDA1YmU0ZDUwY2ViNzg4ZjkwZDg0NWZjOTIxYWUyZjdi
NzJiYjYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2Jq
ZWN0Lm1tCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBFeHBlY3RlZDxVUkwsIFN0cmluZz4gY29t
cHV0ZVZhbGlkSW1wb3J0U3BlY2lmaWVyKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QKICAgICB9CiAK
ICAgICBpZiAoYmFzZSA9PSBVUkwoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJD
b3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBiYXNlIFVSTCBmb3IgbG9hZGluZy4iX3MpOworICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGJhc2UgVVJM
IGZvciBsb2FkaW5nLiJfc3RyKTsKIAogICAgIGlmICghYmFzZS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJSZWZlcnJlcmluZyBzY3JpcHQncyB1
cmwgaXMgbm90IHZhbGlkOiAiX3MsIGJhc2Uuc3RyaW5nKCkpKTsKQEAgLTE5NiwxMyArMTk2LDEz
IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0
Y2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKFVO
TElLRUxZKCFbc2NyaXB0IGlzS2luZE9mQ2xhc3M6W0pTU2NyaXB0IGNsYXNzXV0pKQotICAgICAg
ICAgICAgcmV0dXJuIHJlamVjdFByb21pc2UoIkZpcnN0IGFyZ3VtZW50IG9mIHJlc29sdXRpb24g
Y2FsbGJhY2sgaXMgbm90IGEgSlNTY3JpcHQiX3MpOworICAgICAgICAgICAgcmV0dXJuIHJlamVj
dFByb21pc2UoIkZpcnN0IGFyZ3VtZW50IG9mIHJlc29sdXRpb24gY2FsbGJhY2sgaXMgbm90IGEg
SlNTY3JpcHQiX3N0cik7CiAKICAgICAgICAgSlNTY3JpcHQqIGpzU2NyaXB0ID0gc3RhdGljX2Nh
c3Q8SlNTY3JpcHQgKj4oc2NyaXB0KTsKIAogICAgICAgICBKU1NvdXJjZUNvZGUqIHNvdXJjZSA9
IFtqc1NjcmlwdCBqc1NvdXJjZUNvZGVdOwogICAgICAgICBpZiAoVU5MSUtFTFkoW2pzU2NyaXB0
IHR5cGVdICE9IGtKU1NjcmlwdFR5cGVNb2R1bGUpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVj
dFByb21pc2UoIlRoZSBKU1NjcmlwdCB0aGF0IHdhcyBwcm92aWRlZCBkaWQgbm90IGhhdmUgZXhw
ZWN0ZWQgdHlwZSBvZiBrSlNTY3JpcHRUeXBlTW9kdWxlLiJfcyk7CisgICAgICAgICAgICByZXR1
cm4gcmVqZWN0UHJvbWlzZSgiVGhlIEpTU2NyaXB0IHRoYXQgd2FzIHByb3ZpZGVkIGRpZCBub3Qg
aGF2ZSBleHBlY3RlZCB0eXBlIG9mIGtKU1NjcmlwdFR5cGVNb2R1bGUuIl9zdHIpOwogCiAgICAg
ICAgIE5TVVJMICpzb3VyY2VVUkwgPSBbanNTY3JpcHQgc291cmNlVVJMXTsKICAgICAgICAgU3Ry
aW5nIG9sZE1vZHVsZUtleSB7IFtzb3VyY2VVUkwgYWJzb2x1dGVTdHJpbmddIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CmluZGV4IGM3ODRkZmJhOTQwNjk2OTI0OTllYzczNjhhZTFhY2JlYjFjNzk0ZGIuLjkyZGMxMTAz
YjVkODZjNDU0OTZhZTVhNGEzNTdiNGMzOWRjMDAwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMjYsNyAr
MTI2LDcgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogICAgIGlmIChoYXNDb252ZXJ0VG9UeXBlKSB7CiAgICAgICAg
IHRoaXMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2ws
Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltT
eW1ib2wudG9QcmltaXRpdmVdIl9zLCBjdXN0b21Ub1ByaW1pdGl2ZSksCisgICAgICAgICAgICBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRp
dmVdIl9zdHIsIGN1c3RvbVRvUHJpbWl0aXZlKSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9CiAgICAgCkBAIC0y
MzQsNyArMjM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpj
dXN0b21Ub1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIEpTQ2FsbGJhY2tP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNDYWxsYmFja09i
amVjdFtTeW1ib2wudG9QcmltaXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0
aGlzfCB2YWx1ZS4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSlNDYWxsYmFja09iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdIG1ldGhv
ZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0aGlzfCB2YWx1ZS4iX3N0cik7CiAgICAgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSBoaW50ID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIApAQCAtNzA1LDcgKzcwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsKEpTR2xvYmFsT2JqZWN0
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2JhbE9i
amVjdCwgIlN0YXRpYyBmdW5jdGlvbiBwcm9wZXJ0eSBkZWZpbmVkIHdpdGggTlVMTCBjYWxsQXNG
dW5jdGlvbiBjYWxsYmFjay4iX3MpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihnbG9i
YWxPYmplY3QsICJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2Fs
bEFzRnVuY3Rpb24gY2FsbGJhY2suIl9zdHIpKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+CkBAIC03NDAsNyArNzQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpjYWxsYmFja0dldHRlckltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiaGFz
UHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBwcm9wZXJ0eSB0aGF0IGRvZXNu
J3QgZXhpc3QuIl9zKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiaGFzUHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBwcm9wZXJ0eSB0aGF0
IGRvZXNuJ3QgZXhpc3QuIl9zdHIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCA0NWRjZDIzNjRiYTRlY2Jh
NzU4NjA2OGViNWE0NzY3MGViZjUyMjcwLi4zMmY3Mzc2YzAxNzdiNzMwNDk3OTM0MTg1MGIzNGMy
YmQ3YmMxNDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApA
QCAtMTA0LDcgKzEwNCw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUsCiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMoY3R4KTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7Ci0gICAgcmV0dXJuIHRvUmVm
KEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxBc0Z1bmN0
aW9uLCBuYW1lID8gbmFtZS0+c3RyaW5nKCkgOiAiYW5vbnltb3VzIl9zKSk7CisgICAgcmV0dXJu
IHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxB
c0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+c3RyaW5nKCkgOiAiYW5vbnltb3VzIl9zdHIpKTsKIH0K
IAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwg
SlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2Fs
bEFzQ29uc3RydWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
U2NyaXB0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQppbmRleCA4
NTAzNDdiN2NkNzEyNjBhMGJmNjU5MDc1MGE5YTQ1MGRjMzExYzFjLi4xZDk4YmUzOGMyNGI5MGZm
ZWI2ZDI5MThiMzg3NjQ3MzAwM2FlYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KQEAgLTI4NywxMiArMjg3LDEyIEBAIC0gKEpTQzo6SlNTb3VyY2VDb2RlKilqc1NvdXJj
ZUNvZGUKIC0gKEJPT0wpd3JpdGVDYWNoZTooU3RyaW5nJillcnJvcgogewogICAgIGlmIChzZWxm
LmlzVXNpbmdCeXRlY29kZUNhY2hlKSB7Ci0gICAgICAgIGVycm9yID0gIkNhY2hlIGZvciBKU1Nj
cmlwdCBpcyBhbHJlYWR5IG5vbi1lbXB0eS4gQ2FuIG5vdCBvdmVycmlkZSBpdC4iX3M7CisgICAg
ICAgIGVycm9yID0gIkNhY2hlIGZvciBKU1NjcmlwdCBpcyBhbHJlYWR5IG5vbi1lbXB0eS4gQ2Fu
IG5vdCBvdmVycmlkZSBpdC4iX3N0cjsKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIAogICAg
IGlmICghbV9jYWNoZVBhdGgpIHsKLSAgICAgICAgZXJyb3IgPSAiTm8gY2FjaGUgcGF0aCB3YXMg
cHJvdmlkZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGlzIEpTU2NyaXB0LiJfczsKKyAgICAg
ICAgZXJyb3IgPSAiTm8gY2FjaGUgcGF0aCB3YXMgcHJvdmlkZWQgZHVyaW5nIGNvbnN0cnVjdGlv
biBvZiB0aGlzIEpTU2NyaXB0LiJfc3RyOwogICAgICAgICByZXR1cm4gTk87CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKaW5kZXggYWJhNmRmNmUy
YTMxODM4ZTczODg0OWQyOGI3MjkyZTIxMzJhNGU5MS4uMmY3YjEwY2YxYTgxNDZmZWJlOTJlODY4
ZTM4MWIwOWU0M2YxMjkyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1R5cGVkQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFy
cmF5LmNwcApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJC
eXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3RSZWYsIEpTCiAgICAg
aWYgKEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVy
Kj4odm0sIG9iamVjdCkpIHsKICAgICAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzQnVmZmVy
LT5pbXBsKCk7CiAgICAgICAgIGlmIChidWZmZXItPmlzV2FzbU1lbW9yeSgpKSB7Ci0gICAgICAg
ICAgICBzZXRFeGNlcHRpb24oY3R4LCBleGNlcHRpb24sIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJDYW5ub3QgZ2V0IHRoZSBiYWNraW5nIGJ1ZmZlciBmb3IgYSBXZWJBc3NlbWJseS5N
ZW1vcnkiX3MpKTsKKyAgICAgICAgICAgIHNldEV4Y2VwdGlvbihjdHgsIGV4Y2VwdGlvbiwgY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkNhbm5vdCBnZXQgdGhlIGJhY2tpbmcgYnVmZmVy
IGZvciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSJfc3RyKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXgg
ZDNhZDA4MGUxZGRmNGZlNmVmYmE5MTM1YmEyNjg3NmM3N2RjYmMyNi4uZjgzZjU3NDNiM2NjNzA1
MTgwMjJiMTVjYjdiNjM1NDA1NDAxMjE0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1
ZS5tbQpAQCAtODE2LDcgKzgxNiw3IEBAIHN0YXRpYyBpZCBjb250YWluZXJWYWx1ZVRvT2JqZWN0
KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU0NvbnRhaW5lckNvbnZlcnRvCiAgICAgICAg
ICAgICBBU1NFUlQoW2N1cnJlbnQub2JqYyBpc0tpbmRPZkNsYXNzOltOU011dGFibGVBcnJheSBj
bGFzc11dKTsKICAgICAgICAgICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IChOU011dGFibGVB
cnJheSAqKWN1cnJlbnQub2JqYzsKICAgICAgICAgCi0gICAgICAgICAgICBhdXRvIGxlbmd0aFN0
cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoImxlbmd0aCJfcyk7CisgICAgICAgICAg
ICBhdXRvIGxlbmd0aFN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoImxlbmd0aCJf
c3RyKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTQzo6dG9VSW50MzIoSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwganMsIGxlbmd0
aFN0cmluZy5nZXQoKSwgMCksIDApKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC05MTEsNyArOTExLDcgQEAgaWQgdmFsdWVUb0FycmF5
KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVm
KiBleGNlcHQKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKGNvbnRleHQpKTsK
ICAgICBpZiAoIShKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZhbHVlKSB8fCBKU1ZhbHVlSXNVbmRl
ZmluZWQoY29udGV4dCwgdmFsdWUpKSkgewotICAgICAgICBKU0M6OkpTT2JqZWN0KiBleGNlcHRp
b25PYmplY3QgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCAiQ2Fubm90IGNv
bnZlcnQgcHJpbWl0aXZlIHRvIE5TQXJyYXkiX3MpOworICAgICAgICBKU0M6OkpTT2JqZWN0KiBl
eGNlcHRpb25PYmplY3QgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCAiQ2Fu
bm90IGNvbnZlcnQgcHJpbWl0aXZlIHRvIE5TQXJyYXkiX3N0cik7CiAgICAgICAgICpleGNlcHRp
b24gPSB0b1JlZihleGNlcHRpb25PYmplY3QpOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQogICAgICAgICByZXBvcnRFeGNlcHRpb25Ub0luc3BlY3Rvcihjb250ZXh0LCBleGNlcHRpb25P
YmplY3QpOwpAQCAtOTMzLDcgKzkzMyw3IEBAIGlkIHZhbHVlVG9EaWN0aW9uYXJ5KEpTR2xvYmFs
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBlCiAKICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhjb250ZXh0KSk7CiAgICAgaWYgKCEoSlNW
YWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkgfHwgSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQs
IHZhbHVlKSkpIHsKLSAgICAgICAgSlNDOjpKU09iamVjdCogZXhjZXB0aW9uT2JqZWN0ID0gSlND
OjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0KSwgIkNhbm5vdCBjb252ZXJ0IHByaW1pdGl2
ZSB0byBOU0RpY3Rpb25hcnkiX3MpOworICAgICAgICBKU0M6OkpTT2JqZWN0KiBleGNlcHRpb25P
YmplY3QgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCAiQ2Fubm90IGNvbnZl
cnQgcHJpbWl0aXZlIHRvIE5TRGljdGlvbmFyeSJfc3RyKTsKICAgICAgICAgKmV4Y2VwdGlvbiA9
IHRvUmVmKGV4Y2VwdGlvbk9iamVjdCk7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgICAgIHJlcG9ydEV4Y2VwdGlvblRvSW5zcGVjdG9yKGNvbnRleHQsIGV4Y2VwdGlvbk9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1
bmN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlv
bi5tbQppbmRleCBkZjc2MGM2Mjg2NjhhNGY0NmU4OWQ1MzM2MDkzZDFjYTVjMDI0NGRjLi40YTY3
YTZiNGQ1MzNiOTZkMGYxNmMzZjk5Zjc2NjE0NGMwNWIwZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KQEAgLTEyOCw3ICsxMjgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
KmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJlZiks
ICJBcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBPYmplY3RpdmUtQyBDbGFzcyJfcykpOworICAgICAg
ICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0UmVm
KSwgIkFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIE9iamVjdGl2ZS1DIENsYXNzIl9zdHIpKTsKICAg
ICB9CiAKICAgICBSZXRhaW5QdHI8Q2xhc3M+IG1fY2xhc3M7CkBAIC00ODMsNyArNDgzLDcgQEAg
c3RhdGljIEpTVmFsdWVSZWYgb2JqQ0NhbGxiYWNrRnVuY3Rpb25DYWxsQXNGdW5jdGlvbihKU0Nv
bnRleHRSZWYgY2FsbGVyQ29udGV4dCwKIAogICAgIGlmIChpbXBsLT50eXBlKCkgPT0gQ2FsbGJh
Y2tJbml0TWV0aG9kKSB7CiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVmID0g
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXTsKLSAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVm
KEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJlZiksICJDYW5ub3QgY2FsbCBhIGNs
YXNzIGNvbnN0cnVjdG9yIHdpdGhvdXQgfG5ld3wiX3MpKTsKKyAgICAgICAgKmV4Y2VwdGlvbiA9
IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJlZiksICJDYW5ub3QgY2Fs
bCBhIGNsYXNzIGNvbnN0cnVjdG9yIHdpdGhvdXQgfG5ld3wiX3N0cikpOwogICAgICAgICBpZiAo
KmV4Y2VwdGlvbikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dFJlZik7CkBAIC01MjYsNyArNTI2LDcgQEAgc3Rh
dGljIEpTT2JqZWN0UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uQ2FsbEFzQ29uc3RydWN0b3IoSlND
b250ZXh0UmVmIGNhbGxlckNvbnQKIAogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVm
ID0gW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXTsKICAgICBpZiAoIUpTVmFsdWVJc09iamVj
dChjb250ZXh0UmVmLCByZXN1bHQpKSB7Ci0gICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6
OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRSZWYpLCAiT2JqZWN0aXZlLUMgYmxvY2tzIGNh
bGxlZCBhcyBjb25zdHJ1Y3RvcnMgbXVzdCByZXR1cm4gYW4gb2JqZWN0LiJfcykpOworICAgICAg
ICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0UmVm
KSwgIk9iamVjdGl2ZS1DIGJsb2NrcyBjYWxsZWQgYXMgY29uc3RydWN0b3JzIG11c3QgcmV0dXJu
IGFuIG9iamVjdC4iX3N0cikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
QVNTRVJUKCEqZXhjZXB0aW9uKTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBKU1ZhbHVlUmVmIE9iakND
YWxsYmFja0Z1bmN0aW9uSW1wbDo6Y2FsbChKU0NvbnRleHQgKmNvbnRleHQsIEpTT2JqZWN0UmVm
IHRoaXNPYgogICAgICAgICBSRUxFQVNFX0FTU0VSVCghdGhpc09iamVjdCk7CiAgICAgICAgIHRh
cmdldCA9IFttX2luc3RhbmNlQ2xhc3MgYWxsb2NdOwogICAgICAgICBpZiAoIXRhcmdldCB8fCAh
W3RhcmdldCBpc0tpbmRPZkNsYXNzOm1faW5zdGFuY2VDbGFzcy5nZXQoKV0pIHsKLSAgICAgICAg
ICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRS
ZWYpLCAic2VsZiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgT2JqZWN0aXZlLUMgaW5zdGFuY2UgbWV0
aG9kIl9zKSk7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBl
RXJyb3IodG9KUyhjb250ZXh0UmVmKSwgInNlbGYgdHlwZSBjaGVjayBmYWlsZWQgZm9yIE9iamVj
dGl2ZS1DIGluc3RhbmNlIG1ldGhvZCJfc3RyKSk7CiAgICAgICAgICAgICBpZiAoKmV4Y2VwdGlv
bikKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0UmVmKTsKQEAgLTYwNCw3ICs2MDQsNyBAQCBKU1Zh
bHVlUmVmIE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbDo6Y2FsbChKU0NvbnRleHQgKmNvbnRleHQs
IEpTT2JqZWN0UmVmIHRoaXNPYgogICAgIGNhc2UgQ2FsbGJhY2tJbnN0YW5jZU1ldGhvZDogewog
ICAgICAgICB0YXJnZXQgPSB0cnlVbndyYXBPYmpjT2JqZWN0KGNvbnRleHRSZWYsIHRoaXNPYmpl
Y3QpOwogICAgICAgICBpZiAoIXRhcmdldCB8fCAhW3RhcmdldCBpc0tpbmRPZkNsYXNzOm1faW5z
dGFuY2VDbGFzcy5nZXQoKV0pIHsKLSAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6
OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRSZWYpLCAic2VsZiB0eXBlIGNoZWNrIGZhaWxl
ZCBmb3IgT2JqZWN0aXZlLUMgaW5zdGFuY2UgbWV0aG9kIl9zKSk7CisgICAgICAgICAgICAqZXhj
ZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0UmVmKSwgInNl
bGYgdHlwZSBjaGVjayBmYWlsZWQgZm9yIE9iamVjdGl2ZS1DIGluc3RhbmNlIG1ldGhvZCJfc3Ry
KSk7CiAgICAgICAgICAgICBpZiAoKmV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxs
YmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxs
YmFja0Z1bmN0aW9uLmNwcAppbmRleCAwODEwNzdhNGMwNDNjY2I0OGFlYjI5YjAxZjhmZmMwZDhh
ZmJlMTNhLi41NzE0YTQ0ZTQ5ZmIwM2ZjODNkNDI0MzMwMTcyZmIwZTc5ZWYyNWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rp
b24uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEpTVmFsdWVSZWYgSlNDQ2FsbGJhY2tGdW5jdGlvbjo6
Y2FsbChKU0NvbnRleHRSZWYgY2FsbGVyQ29udGV4dCwgSlNPYmplY3RSZWYgdGhpCiAgICAgYXV0
byoganNDb250ZXh0ID0ganNjQ29udGV4dEdldEpTQ29udGV4dChjb250ZXh0LmdldCgpKTsKIAog
ICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6Q29uc3RydWN0b3IpIHsKLSAgICAgICAgKmV4Y2VwdGlv
biA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoanNDb250ZXh0KSwgImNhbm5vdCBj
YWxsIGEgY2xhc3MgY29uc3RydWN0b3Igd2l0aG91dCB8bmV3fCJfcykpOworICAgICAgICAqZXhj
ZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhqc0NvbnRleHQpLCAiY2Fu
bm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciB3aXRob3V0IHxuZXd8Il9zdHIpKTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGpzQ29udGV4dCk7CiAgICAgfQogCkBAIC0x
MDMsNyArMTAzLDcgQEAgSlNWYWx1ZVJlZiBKU0NDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKEpTQ29u
dGV4dFJlZiBjYWxsZXJDb250ZXh0LCBKU09iamVjdFJlZiB0aGkKICAgICBpZiAobV90eXBlID09
IFR5cGU6Ok1ldGhvZCkgewogICAgICAgICBpbnN0YW5jZSA9IGpzY0NvbnRleHRXcmFwcGVkT2Jq
ZWN0KGNvbnRleHQuZ2V0KCksIHRoaXNPYmplY3QpOwogICAgICAgICBpZiAoIWluc3RhbmNlKSB7
Ci0gICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9K
Uyhqc0NvbnRleHQpLCAiaW52YWxpZCBpbnN0YW5jZSB0eXBlIGluIG1ldGhvZCJfcykpOworICAg
ICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoanND
b250ZXh0KSwgImludmFsaWQgaW5zdGFuY2UgdHlwZSBpbiBtZXRob2QiX3N0cikpOwogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGpzQ29udGV4dCk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xNjksNyArMTY5LDcgQEAgSlNPYmplY3RSZWYgSlNDQ2FsbGJhY2tGdW5jdGlv
bjo6Y29uc3RydWN0KEpTQ29udGV4dFJlZiBjYWxsZXJDb250ZXh0LCBzaXplX3QgYXIKICAgICBh
dXRvKiBqc0NvbnRleHQgPSBqc2NDb250ZXh0R2V0SlNDb250ZXh0KGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgaWYgKG1fcmV0dXJuVHlwZSA9PSBHX1RZUEVfTk9ORSkgewotICAgICAgICAqZXhjZXB0
aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhqc0NvbnRleHQpLCAiY29uc3Ry
dWN0b3JzIGNhbm5vdCBiZSB2b2lkIl9zKSk7CisgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihK
U0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGpzQ29udGV4dCksICJjb25zdHJ1Y3RvcnMgY2Fubm90
IGJlIHZvaWQiX3N0cikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTIy
Myw3ICsyMjMsNyBAQCBKU09iamVjdFJlZiBKU0NDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3Qo
SlNDb250ZXh0UmVmIGNhbGxlckNvbnRleHQsIHNpemVfdCBhcgogICAgIGNhc2UgR19UWVBFX09C
SkVDVDoKICAgICAgICAgaWYgKGF1dG8qIHB0ciA9IHJldHVyblZhbHVlLmRhdGFbMF0udl9wb2lu
dGVyKQogICAgICAgICAgICAgcmV0dXJuIHRvUmVmKGpzY0NsYXNzR2V0T3JDcmVhdGVKU1dyYXBw
ZXIobV9jbGFzcy5nZXQoKSwgY29udGV4dC5nZXQoKSwgcHRyKSk7Ci0gICAgICAgICpleGNlcHRp
b24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGpzQ29udGV4dCksICJjb25zdHJ1
Y3RvciByZXR1cm5lZCBudWxsIl9zKSk7CisgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6
OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGpzQ29udGV4dCksICJjb25zdHJ1Y3RvciByZXR1cm5lZCBu
dWxsIl9zdHIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgKmV4Y2Vw
dGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoanNDb250ZXh0KSwgbWFrZVN0
cmluZygiaW52YWxpZCB0eXBlICIsIGdfdHlwZV9uYW1lKEdfVkFMVUVfVFlQRSgmcmV0dXJuVmFs
dWUpKSwgIiByZXR1cm5lZCBieSBjb25zdHJ1Y3RvciIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKaW5kZXggOWRjZWFmYzViODNjYTlhNWUzODE0
OTQxZGQwNGNkNzRkZWUyNWJiNS4uZmE1ZjFjMzMwNzAzNWYyZDg4NGUxYzhkNDVlYTIwY2Q5YzE1
MmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQganNjQ29udGV4dEpTVmFsdWVUb0dWYWx1ZShKU0ND
b250ZXh0KiBjb250ZXh0LCBKU1ZhbHVlUmVmIGpzVmFsdWUsIEdUeXBlIHR5CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAqZXhjZXB0aW9uID0g
dG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiaW52YWxpZCBwb2ludGVy
IHR5cGUiX3MpKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsICJpbnZhbGlkIHBvaW50ZXIgdHlwZSJfc3RyKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQganNj
Q29udGV4dEpTVmFsdWVUb0dWYWx1ZShKU0NDb250ZXh0KiBjb250ZXh0LCBKU1ZhbHVlUmVmIGpz
VmFsdWUsIEdUeXBlIHR5CiAgICAgICAgIGVsc2UgaWYgKEdfSVNfT0JKRUNUKHdyYXBwZWRPYmpl
Y3QpKQogICAgICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3cmFwcGVkT2JqZWN0
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIndyYXBwZWQgb2JqZWN0IGlzIG5vdCBhIEdPYmpl
Y3QiX3MpKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsICJ3cmFwcGVkIG9iamVjdCBpcyBub3QgYSBHT2JqZWN0Il9zdHIp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR19UWVBFX0xPTkc6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcAppbmRleCA0ZGM2OTZlYzg2ZGY5
MDFjM2U5MmM0MGRhZjkwNDQ4ZTJhYTY4NTgwLi40MmNhOTViMmY2MTZkODdlNmNiYjE4YzQ2MTBl
NWFjYWM3NjMxZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIv
SlNDVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1
ZS5jcHAKQEAgLTExMDUsMTIgKzExMDUsMTIgQEAgc3RhdGljIHZvaWQganNjVmFsdWVPYmplY3RE
ZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKEpTQ1ZhbHVlKiB2YWx1ZSwgY29uc3QgY2hhciogcHIKICAg
ICAgICAgICAgIGNsb3N1cmUgPSBhZG9wdEdSZWYoZ19jY2xvc3VyZV9uZXdfc3dhcChnZXR0ZXIs
IHVzZXJEYXRhLCByZWludGVycHJldF9jYXN0PEdDbG9zdXJlTm90aWZ5PihyZWludGVycHJldF9j
YXN0PEdDYWxsYmFjaz4oZGVzdHJveU5vdGlmeSkpKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNsb3N1cmUgPSBhZG9wdEdSZWYoZ19jY2xvc3VyZV9uZXcoZ2V0dGVyLCB1c2VyRGF0YSwg
cmVpbnRlcnByZXRfY2FzdDxHQ2xvc3VyZU5vdGlmeT4ocmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJh
Y2s+KGRlc3Ryb3lOb3RpZnkpKSkpOwotICAgICAgICBhdXRvIGZ1bmN0aW9uID0gSlNDOjpKU0ND
YWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgImdldCJfcywgZnVuY3Rp
b25UeXBlLCBudWxscHRyLCBXVEZNb3ZlKGNsb3N1cmUpLCBwcm9wZXJ0eVR5cGUsIFZlY3RvcjxH
VHlwZT4geyB9KTsKKyAgICAgICAgYXV0byBmdW5jdGlvbiA9IEpTQzo6SlNDQ2FsbGJhY2tGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsICJnZXQiX3N0ciwgZnVuY3Rpb25UeXBlLCBu
dWxscHRyLCBXVEZNb3ZlKGNsb3N1cmUpLCBwcm9wZXJ0eVR5cGUsIFZlY3RvcjxHVHlwZT4geyB9
KTsKICAgICAgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoZnVuY3Rpb24pOwogICAgIH0KICAgICBp
ZiAoc2V0dGVyKSB7CiAgICAgICAgIEdSZWZQdHI8R0Nsb3N1cmU+IGNsb3N1cmUgPSBhZG9wdEdS
ZWYoZ19jY2xvc3VyZV9uZXcoc2V0dGVyLCB1c2VyRGF0YSwgZ2V0dGVyID8gbnVsbHB0ciA6IHJl
aW50ZXJwcmV0X2Nhc3Q8R0Nsb3N1cmVOb3RpZnk+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNr
PihkZXN0cm95Tm90aWZ5KSkpKTsKLSAgICAgICAgYXV0byBmdW5jdGlvbiA9IEpTQzo6SlNDQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsICJzZXQiX3MsIGZ1bmN0aW9u
VHlwZSwgbnVsbHB0ciwgV1RGTW92ZShjbG9zdXJlKSwgR19UWVBFX05PTkUsIFZlY3RvcjxHVHlw
ZT4geyBwcm9wZXJ0eVR5cGUgfSk7CisgICAgICAgIGF1dG8gZnVuY3Rpb24gPSBKU0M6OkpTQ0Nh
bGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAic2V0Il9zdHIsIGZ1bmN0
aW9uVHlwZSwgbnVsbHB0ciwgV1RGTW92ZShjbG9zdXJlKSwgR19UWVBFX05PTkUsIFZlY3RvcjxH
VHlwZT4geyBwcm9wZXJ0eVR5cGUgfSk7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKGZ1
bmN0aW9uKTsKICAgICB9CiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBuYW1lLT5pZGVudGlmaWVyKCZ2bSksIGRlc2Ny
aXB0b3IsIHRydWUpOwpAQCAtMTE3Miw3ICsxMTcyLDcgQEAgc3RhdGljIEdSZWZQdHI8SlNDVmFs
dWU+IGpzY1ZhbHVlRnVuY3Rpb25DcmVhdGUoSlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hh
cioKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGpzY0NvbnRl
eHRHZXRKU0NvbnRleHQoY29udGV4dCkpOwogICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7Ci0gICAgYXV0byogZnVu
Y3Rpb25PYmplY3QgPSB0b1JlZihKU0M6OkpTQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBuYW1lID8gU3RyaW5nOjpmcm9tVVRGOChuYW1lKSA6ICJhbm9ueW1vdXMi
X3MsCisgICAgYXV0byogZnVuY3Rpb25PYmplY3QgPSB0b1JlZihKU0M6OkpTQ0NhbGxiYWNrRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBuYW1lID8gU3RyaW5nOjpmcm9tVVRGOChu
YW1lKSA6ICJhbm9ueW1vdXMiX3N0ciwKICAgICAgICAgSlNDOjpKU0NDYWxsYmFja0Z1bmN0aW9u
OjpUeXBlOjpGdW5jdGlvbiwgbnVsbHB0ciwgV1RGTW92ZShjbG9zdXJlKSwgcmV0dXJuVHlwZSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogICAgIHJldHVybiBqc2NDb250ZXh0R2V0T3JDcmVhdGVW
YWx1ZShjb250ZXh0LCBmdW5jdGlvbk9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpblV0aWxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgKaW5kZXggNDAxYzJmOTM3ZWI1NGExMjMyMDBiMzIw
NzcwMzIzNDFmNjc1MTU3ZS4uMjAxZmNkOTNkOTU3NDI2M2JhMDZlY2UxN2MyYzc4MWM0MjgyMjgz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5VdGls
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluVXRpbHMuaApA
QCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBJTklUSUFMSVpF
X0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZShKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICNuYW1lKSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShKU0M6OklkZW50aWZpZXI6OmZy
b21VaWQoSlNDOjpQcml2YXRlTmFtZShKU0M6OlByaXZhdGVOYW1lOjpQcml2YXRlU3ltYm9sLCAj
bmFtZSAiIl9zKSkpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1f
IyNuYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKSwgbV8jI25hbWUj
I1ByaXZhdGVOYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVpZChKU0M6OlByaXZhdGVOYW1lKEpT
Qzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVTeW1ib2wsICNuYW1lICIiX3N0cikpKQogI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSlNDOjpJZGVudGlmaWVyIG1fIyNuYW1l
OyBjb25zdCBKU0M6OklkZW50aWZpZXIgbV8jI25hbWUjI1ByaXZhdGVOYW1lOwogI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUihuYW1lKSBcCiAgICAgY29uc3QgSlND
OjpJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7
IH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRl
eCAwOThhZWQ5MzVhNjhmN2Q2Njg3YmQzNTIzMjUzMDc3ZjMxZWQxOWYyLi42NDFmMzEyZTI1NzQ3
M2E4MTU5MGU1YmFhZjgwMDNjMGZkMzRjMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzIwMCw3ICszMjAwLDcgQEAgU3RyaW5nIENvZGVC
bG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAg
ICAgICAgIH0KICAgICB9CiAgICAgaWYgKHZpcnR1YWxSZWdpc3RlciA9PSB0aGlzUmVnaXN0ZXIo
KSkKLSAgICAgICAgcmV0dXJuICJ0aGlzIl9zOworICAgICAgICByZXR1cm4gInRoaXMiX3N0cjsK
ICAgICBpZiAodmlydHVhbFJlZ2lzdGVyLmlzQXJndW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoImFyZ3VtZW50c1siLCBwYWQoJyAnLCAzLCB2aXJ0dWFsUmVnaXN0ZXIudG9Bcmd1
bWVudCgpKSwgJ10nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA3OTNlMDlmMjYzMDViMzc4ZmQw
ZWE0YjI5ODNjMjcwZWJmNDhhYjQ4Li4yMTA5ZTE5YjdkNmRmMWNhOTVmZDJmYzNhM2VkZTc0MDQ0
YjY1M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDg3Myw3ICs0ODczLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXIKICAgICB7CiAgICAgICAgIFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0g
bmV3TGFiZWwoKTsKICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBv
cmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOwotICAgICAgICBlbWl0VGhyb3dUeXBl
RXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwor
ICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iX3N0cik7CiAgICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0
KCkpOwogICAgIH0KICAgICByZXR1cm4gZHN0OwpAQCAtNDkwNiw3ICs0OTA2LDcgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBjb25zdCBUaHIKICAgICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKIAogICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkp
LCBkb25lLmdldCgpKTsKLSAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBp
bnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfc3RyKTsKICAgICBl
bWl0TGFiZWwoZG9uZS5nZXQoKSk7CiB9CiAKQEAgLTQ5ODUsNyArNDk4NSw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCwgVGhyb3dhYmxlCiAgICAgICAgICAgICAgICAgICAgIEVtaXRBd2FpdCBlbWl0QXdhaXRJ
bkl0ZXJhdG9yQ2xvc2UgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2Vu
ZXJhdG9yQm9keU1vZGUgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm87CiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9k
ZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlKTsKIAotICAgICAgICAgICAgICAgICAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoIkRlbGVnYXRlZCBnZW5lcmF0b3IgZG9lcyBub3QgaGF2ZSBhICd0aHJv
dycgbWV0aG9kLiJfcyk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
RGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIl9zdHIp
OwogCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd01ldGhvZEZvdW5kLmdldCgp
KTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyB0aHJvd0FyZ3VtZW50cygqdGhp
cywgbnVsbHB0ciwgMSk7CkBAIC01MDIyLDcgKzUwMjIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93
YWJsZQogCiAgICAgICAgICAgICAgICAgICAgIFJlZjxMYWJlbD4gcmV0dXJuSXRlcmF0b3JSZXN1
bHRJc09iamVjdCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZU
cnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCByZXR1cm5JdGVy
YXRvclJlc3VsdElzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93
VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpOwogCiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRMYWJlbChyZXR1cm5JdGVyYXRvclJlc3VsdElzT2JqZWN0LmdldCgpKTsKIApAQCAt
NTA1Niw3ICs1MDU2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
Z2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKIAogICAgICAgICAgICAg
UmVmPExhYmVsPiBpdGVyYXRvclZhbHVlSXNPYmplY3QgPSBuZXdMYWJlbCgpOwogICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQo
KSksIGl0ZXJhdG9yVmFsdWVJc09iamVjdC5nZXQoKSk7Ci0gICAgICAgICAgICBlbWl0VGhyb3dU
eXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3Mp
OworICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJm
YWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpOwogICAgICAgICAgICAgZW1pdExhYmVsKGl0ZXJh
dG9yVmFsdWVJc09iamVjdC5nZXQoKSk7CiAKICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRv
bmUpLCBsb29wRG9uZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZjZlNDNlYzhjYmJhOGYyNTU5MGM2Zjgw
OGEyNDQ3NWRjMmI2ZWFlMS4uMzcwNGYzZDcyNDEzYmZkOGU5Y2NiOGI1OWM4YzIyZWVmZDNmZjIz
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtMTIyOCw3ICsxMjI4LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxs
VmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUK
ICAgICAgICAgCiAgICAgICAgIFJlZjxMYWJlbD4gdGhpc0lzRW1wdHlMYWJlbCA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9y
LmVtaXRJc0VtcHR5KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLnRoaXNSZWdp
c3RlcigpKSwgdGhpc0lzRW1wdHlMYWJlbC5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0
VGhyb3dSZWZlcmVuY2VFcnJvcigiJ3N1cGVyKCknIGNhbid0IGJlIGNhbGxlZCBtb3JlIHRoYW4g
b25jZSBpbiBhIGNvbnN0cnVjdG9yLiJfcyk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dS
ZWZlcmVuY2VFcnJvcigiJ3N1cGVyKCknIGNhbid0IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBp
biBhIGNvbnN0cnVjdG9yLiJfc3RyKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0aGlz
SXNFbXB0eUxhYmVsLmdldCgpKTsKIAogICAgICAgICBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCksIHJldCk7CkBAIC0yNTI0LDggKzI1MjQsOCBAQCBSZWdpc3RlcklEKiBQ
b3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqCiAKICAgICBBU1NFUlQobV9leHByLT5pc0Z1bmN0aW9uQ2FsbCgpKTsKICAgICBy
ZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCBtX29wZXJhdG9yID09IE9w
ZXJhdG9yOjpQbHVzUGx1cwotICAgICAgICA/ICJQb3N0Zml4ICsrIG9wZXJhdG9yIGFwcGxpZWQg
dG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIl9zCi0gICAgICAgIDogIlBvc3RmaXgg
LS0gb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3Ms
CisgICAgICAgID8gIlBvc3RmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlz
IG5vdCBhIHJlZmVyZW5jZS4iX3N0cgorICAgICAgICA6ICJQb3N0Zml4IC0tIG9wZXJhdG9yIGFw
cGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIl9zdHIsCiAgICAgICAgIGRz
dCk7CiB9CiAKQEAgLTI4MTEsOCArMjgxMSw4IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAK
ICAgICBBU1NFUlQobV9leHByLT5pc0Z1bmN0aW9uQ2FsbCgpKTsKICAgICByZXR1cm4gZW1pdFRo
cm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCBtX29wZXJhdG9yID09IE9wZXJhdG9yOjpQbHVz
UGx1cwotICAgICAgICA/ICJQcmVmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0
IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3MKLSAgICAgICAgOiAiUHJlZml4IC0tIG9wZXJhdG9yIGFw
cGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIl9zLAorICAgICAgICA/ICJQ
cmVmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5j
ZS4iX3N0cgorICAgICAgICA6ICJQcmVmaXggLS0gb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0
aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3N0ciwKICAgICAgICAgZHN0KTsKIH0KIApAQCAtMzY5
OCw3ICszNjk4LDcgQEAgUmVnaXN0ZXJJRCogU2hvcnRDaXJjdWl0UmVhZE1vZGlmeURvdE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXIKIAogUmVnaXN0ZXJJRCogQXNz
aWduRXJyb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewotICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihn
ZW5lcmF0b3IsICJMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9z
LCBkc3QpOworICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsICJM
ZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9zdHIsIGRzdCk7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBc3NpZ25CcmFja2V0Tm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDE4MCw3ICs0MTgwLDcgQEAg
dm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIHByb3BlcnQKIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmICgh
bV9sZXhwci0+aXNBc3NpZ25SZXNvbHZlTm9kZSgpICYmICFtX2xleHByLT5pc0Fzc2lnbm1lbnRM
b2NhdGlvbigpKSB7Ci0gICAgICAgIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwg
IkxlZnQgc2lkZSBvZiBmb3ItaW4gc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3MpOwor
ICAgICAgICBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsICJMZWZ0IHNpZGUgb2Yg
Zm9yLWluIHN0YXRlbWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9zdHIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00MjUyLDcgKzQyNTIsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHZv
aWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmICghbV9sZXhwci0+aXNBc3NpZ25tZW50TG9jYXRp
b24oKSkgewotICAgICAgICBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsICJMZWZ0
IHNpZGUgb2YgZm9yLW9mIHN0YXRlbWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9zKTsKKyAgICAg
ICAgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1v
ZiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLiJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNTE0MCw3ICs1MTQwLDcgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAg
ICAgICAgUmVmPExhYmVsPiBzdXBlcmNsYXNzSXNDb25zdHJ1Y3RvckxhYmVsID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3Iu
ZW1pdElzQ29uc3RydWN0b3IoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzdXBlcmNsYXNzLmdl
dCgpKSwgc3VwZXJjbGFzc0lzQ29uc3RydWN0b3JMYWJlbC5nZXQoKSk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVGhlIHN1cGVyY2xhc3Mg
aXMgbm90IGEgY29uc3RydWN0b3IuIl9zKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5
cGVFcnJvcigiVGhlIHN1cGVyY2xhc3MgaXMgbm90IGEgY29uc3RydWN0b3IuIl9zdHIpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHN1cGVyY2xhc3NJc0NvbnN0cnVjdG9yTGFiZWwuZ2V0
KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQocHJvdG9QYXJlbnQuZ2V0KCksIHN1
cGVyY2xhc3MuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKTsKIApA
QCAtNTQ0Nyw3ICs1NDQ3LDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6dG9TdHJpbmcoU3Ry
aW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKICAgICAKIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6
OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMp
IGNvbnN0CiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXRSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHJocywg
IlJpZ2h0IHNpZGUgb2YgYXNzaWdubWVudCBjYW5ub3QgYmUgZGVzdHJ1Y3R1cmVkIl9zKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdFJlcXVpcmVPYmplY3RDb2VyY2libGUocmhzLCAiUmlnaHQgc2lkZSBv
ZiBhc3NpZ25tZW50IGNhbm5vdCBiZSBkZXN0cnVjdHVyZWQiX3N0cik7CiAKICAgICBCeXRlY29k
ZUdlbmVyYXRvcjo6UHJlc2VydmVkVERaU3RhY2sgcHJlc2VydmVkVERaU3RhY2s7CiAgICAgZ2Vu
ZXJhdG9yLnByZXNlcnZlVERaU3RhY2socHJlc2VydmVkVERaU3RhY2spOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAyOGYxMjE1YjM2
OGUzZThhMDFmMGUxNmQ1MjE2ODYyZTBmMThjYjgzLi4zYmRjYzVmMjg4NDcyMTg2MjgyZWE5MzY2
OTQ2ZjdjOTk1NjYyZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtNzM2Myw3ICs3MzYzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90T2JqZWN0QmxvY2s7CiAgICAgICAgICAg
ICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7Ci0gICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVl
IGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3Ig
cmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgICAgICAgICAg
ICAgIExhenlKU1ZhbHVlIGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dy
YXBoLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfc3RyKTsK
ICAgICAgICAgICAgICAgICAgICAgT3BJbmZvIGluZm8gPSBPcEluZm8obV9ncmFwaC5tX2xhenlK
U1ZhbHVlcy5hZGQoZXJyb3JTdHJpbmcpKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogZXJy
b3JNZXNzYWdlID0gYWRkVG9HcmFwaChMYXp5SlNDb25zdGFudCwgaW5mbyk7CiAgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3dTdGF0aWNFcnJvciwgT3BJbmZvKEVycm9yVHlwZTo6
VHlwZUVycm9yKSwgZXJyb3JNZXNzYWdlKTsKQEAgLTc1NzQsNyArNzU3NCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdE9iamVjdEJsb2NrOwog
ICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOwotICAgICAgICAgICAgICAgICAgICBM
YXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwg
Ikl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAg
ICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdT
dHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3N0cik7CiAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyBpbmZvID0gT3BJbmZvKG1fZ3Jh
cGgubV9sYXp5SlNWYWx1ZXMuYWRkKGVycm9yU3RyaW5nKSk7CiAgICAgICAgICAgICAgICAgICAg
IE5vZGUqIGVycm9yTWVzc2FnZSA9IGFkZFRvR3JhcGgoTGF6eUpTQ29uc3RhbnQsIGluZm8pOwog
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93U3RhdGljRXJyb3IsIE9wSW5mbyhF
cnJvclR5cGU6OlR5cGVFcnJvciksIGVycm9yTWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAKaW5kZXggNjUwNzlmY2YxZTU3MzUxNjk3YTk5ZjVkOWNiMzQ1Yjlm
NmUzYTZjOS4uNDg3MDA4ZWY5NjdhZjZmMTg0NzcxMGM5YWM0OGFlNmIzMjBmMDlkNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcApAQCAtNzksNyArNzksNyBAQCBzdGF0
aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgICAgIGRhdGFMb2coIkRGRyhE
cml2ZXIpIGNvbXBpbGluZyAiLCAqY29kZUJsb2NrLCAiIHdpdGggIiwgbW9kZSwgIiwgaW5zdHJ1
Y3Rpb25zIHNpemUgPSAiLCBjb2RlQmxvY2stPmluc3RydWN0aW9uc1NpemUoKSwgIlxuIik7CiAg
ICAgCiAgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpKQotICAgICAgICB2bS50eXBlUHJvZmlsZXJM
b2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlv
bi4iX3MpOworICAgICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMo
dm0sICJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlvbi4iX3N0cik7CiAgICAgCiAgICAgUmVm
PFBsYW4+IHBsYW4gPSBhZG9wdFJlZigKICAgICAgICAgKm5ldyBQbGFuKGNvZGVCbG9jaywgcHJv
ZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUsIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgbXVzdEhhbmRs
ZVZhbHVlcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
aW5kZXggZGM1MDMxNjQ3NWFmODkxYTVmZGJjZWRjODQ2ZmJhYTk0NGI4NjFkZC4uMjk3MjNmODkz
ZDhiMjllZGNjNGEwYTRjNmQ4YWI4ZGM1NGVlZTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgY2hhciogbmV3VHlw
ZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHIKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3Ro
IGlzIG5lZ2F0aXZlIl9zKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBp
cyBuZWdhdGl2ZSJfc3RyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
MjkwLDcgKzI5MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PYmplY3RD
cmVhdGUsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3RvdHlwZSk7CiAKICAgICBpZiAoIXBy
b3RvdHlwZS5pc09iamVjdCgpICYmICFwcm90b3R5cGUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2JqZWN0IHByb3RvdHlwZSBtYXkg
b25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iX3MpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9i
amVjdCBvciBudWxsLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC0xNzg5LDcgKzE3ODksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWShzaXplIDwg
MCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3Vn
aCBwb3NpdGl2ZSBpbnRlZ2VyLiJfcykpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkFycmF5IHNpemUg
aXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zdHIpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xODE0LDcgKzE4MTQsNyBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIqLCAo
SlNHbG9iYWxPYmplYwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIGlmIChVTkxJS0VMWShzaXplIDwgMCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJBcnJh
eSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJfcykpOworICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZl
IGludGVnZXIuIl9zdHIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0y
NTgyLDcgKzI1ODIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW50MzJU
b1N0cmluZywgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChyYWRpeCA8IDIgfHwgcmFkaXgg
PiAzNikgewotICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJ0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3Qg
YmUgYmV0d2VlbiAyIGFuZCAzNiJfcykpOworICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJ0b1N0cmluZygpIHJh
ZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNiJfc3RyKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMjU5OCw3ICsyNTk4LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkludDUyVG9TdHJpbmcsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE8KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpIHsKLSAgICAgICAgdGhyb3dWTUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAidG9T
dHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiX3MpKTsKKyAg
ICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MiBhbmQgMzYiX3N0cikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTI2
MTQsNyArMjYxNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Eb3VibGVU
b1N0cmluZywgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+
IDM2KSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBi
ZSBiZXR3ZWVuIDIgYW5kIDM2Il9zKSk7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgInRvU3RyaW5nKCkgcmFk
aXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2Il9zdHIpKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0zMjY1LDcgKzMyNjUsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRywgdm9pZCwgKFZN
KiB2bVBvaW50ZQogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKLSAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJp
ZXModm0sICJMb2cgRnVsbCwgY2FsbGVkIGZyb20gaW5zaWRlIERGRy4iX3MpOworICAgIHZtLnR5
cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwgIkxvZyBGdWxsLCBjYWxsZWQg
ZnJvbSBpbnNpZGUgREZHLiJfc3RyKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUsIFVuaXF1
ZWRTdHJpbmdJbXBsKiBpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCmluZGV4IDkyNjA0NWY4ZTE3ZDg0YzJi
MTVmZjc5NmFhZDFlNWUxYjdhZTBhNGEuLjBiOThlOWY3N2IyZTNhZjFjYmI3OTlmNjVlNmQxNDM2
ZmFmZTUzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMzU4LDExICszNTgsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIodmFsdWUuYXNOdW1iZXIoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZS5hc0Jvb2xlYW4oKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFzQm9vbGVhbigpID8gInRydWUi
X3N0ciA6ICJmYWxzZSJfc3RyOwogICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm51bGwiX3M7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gIm51bGwiX3N0cjsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVu
ZGVmaW5lZCJfczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAidW5kZWZpbmVkIl9z
dHI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgICAgICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggYzQwN2IwMGM0ZGFiN2Q2NzZhMDVmOWUzZDUwZGRkMWE3MjEwMDJhYi4uYzM5YzZiMzk4
YzQzNTcxYmE4NjFiZmZjYzRiMjI0NjE2N2MyZGVlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNTcyLDcgKzU3Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmICghbV9ncmFwaER1bXApIHsKICAgICAgICAgICAgIFN0cmluZ1ByaW50U3Ry
ZWFtIG91dDsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcChvdXQpOwotICAgICAgICAgICAgbV9n
cmFwaER1bXAgPSBvdXQudHJ5VG9TdHJpbmcoKS52YWx1ZV9vcigiPG91dCBvZiBtZW1vcnkgd2hp
bGUgZHVtcGluZyBncmFwaD4iX3MpOworICAgICAgICAgICAgbV9ncmFwaER1bXAgPSBvdXQudHJ5
VG9TdHJpbmcoKS52YWx1ZV9vcigiPG91dCBvZiBtZW1vcnkgd2hpbGUgZHVtcGluZyBncmFwaD4i
X3N0cik7CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5k
ZXggYThjZGU4ODE1MTc1N2NkN2RkYTQ5MGQ0NDQ1ODI3OGVhM2FmOGUxOS4uMDE3MDZiOWFlOGY1
MDk5NmI3YmVjNGE3OWZkOTY4NWYwNTA4YmFlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCBT
dHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFw
U25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgLy8gQnVpbGQgYSBsaXN0IG9mIHVzZWQgY2xh
c3MgbmFtZXMuCiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBjbGFzc05hbWVJbmRleGVz
OwotICAgIGNsYXNzTmFtZUluZGV4ZXMuc2V0KCI8cm9vdD4iX3MsIDApOworICAgIGNsYXNzTmFt
ZUluZGV4ZXMuc2V0KCI8cm9vdD4iX3N0ciwgMCk7CiAgICAgdW5zaWduZWQgbmV4dENsYXNzTmFt
ZUluZGV4ID0gMTsKIAogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBsYWJlbHMgKHRoaXMgaXMganVz
dCBhIHN0cmluZyB0YWJsZSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IGVmODlhZWQ1ZGFmNTk0NWJiMTc0YTMzMGZlOWZj
NmQ0OWYyYTAxYzMuLjQzZTU2ZGEyYzFmYzc2ZGU3NjMxOWM3MWVjMDNlM2FlMmRiODk1N2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
Y3BwCkBAIC0yNjQsMTIgKzI2NCwxMiBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250
ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpcwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdC0+YWRk
SXRlbShpbnNwZWN0b3JWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkgPiAxKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBpbnNwZWN0b3JPYmplY3QgPSBpbmplY3RlZFNjcmlwdC53cmFw
T2JqZWN0KGNvbHVtbnMsICJjb25zb2xlIl9zLCB0cnVlKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChhdXRvIGluc3BlY3Rvck9iamVjdCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qo
Y29sdW1ucywgImNvbnNvbGUiX3N0ciwgdHJ1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJndW1lbnRzT2JqZWN0LT5hZGRJdGVtKGluc3BlY3Rvck9iamVjdC5yZWxlYXNlTm9uTnVs
bCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy0+
YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gaW5z
cGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KG1fYXJndW1lbnRzLT5hcmd1
bWVudEF0KGkpLCAiY29uc29sZSJfcywgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0
KG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpLCAiY29uc29sZSJfc3RyLCBnZW5lcmF0ZVByZXZp
ZXcpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4NywxMCArMjg3LDEwIEBAIHZvaWQgQ29u
c29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciYgY29u
c29sZUZyb250ZW5kRGlzCiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChtZXNzYWdlLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBKU09OTG9n
VmFsdWU6OlR5cGU6OkpTT046Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0b3JWYWx1
ZSA9IGluamVjdGVkU2NyaXB0LndyYXBKU09OU3RyaW5nKG1lc3NhZ2UudmFsdWUsICJjb25zb2xl
Il9zLCBnZW5lcmF0ZVByZXZpZXcpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdG9y
VmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwSlNPTlN0cmluZyhtZXNzYWdlLnZhbHVlLCAiY29u
c29sZSJfc3RyLCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgSlNPTkxvZ1ZhbHVlOjpUeXBlOjpTdHJpbmc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0
LndyYXBPYmplY3QoSlNDOjpKU1ZhbHVlKEpTQzo6anNTdHJpbmcoZ2xvYmFsT2JqZWN0KCktPnZt
KCksIG1lc3NhZ2UudmFsdWUpKSwgImNvbnNvbGUiX3MsIGdlbmVyYXRlUHJldmlldyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBP
YmplY3QoSlNDOjpKU1ZhbHVlKEpTQzo6anNTdHJpbmcoZ2xvYmFsT2JqZWN0KCktPnZtKCksIG1l
c3NhZ2UudmFsdWUpKSwgImNvbnNvbGUiX3N0ciwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUpCkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBD
b25zb2xlTWVzc2FnZTo6aXNFcXVhbChDb25zb2xlTWVzc2FnZSogbXNnKSBjb25zdAogdm9pZCBD
b25zb2xlTWVzc2FnZTo6Y2xlYXIoKQogewogICAgIGlmICghbV9tZXNzYWdlKQotICAgICAgICBt
X21lc3NhZ2UgPSAiPG1lc3NhZ2UgY29sbGVjdGVkPiJfczsKKyAgICAgICAgbV9tZXNzYWdlID0g
IjxtZXNzYWdlIGNvbGxlY3RlZD4iX3N0cjsKIAogICAgIGlmIChtX2FyZ3VtZW50cykKICAgICAg
ICAgbV9hcmd1bWVudHMgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKaW5kZXggMTI1MTA0
MzhiMmZjOWI0Njg2YTZjNTg3YzVhODZkNGU4M2EzOTE0NS4uNjYzOTk5YTIyMTY4ODJmNTNhMTRk
ZWZlNmIyNjk1NmRkMjdhZjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCkBAIC0yMDEsNyArMjAx
LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kTWFnaWNDb21tZW50KGNvbnN0IFN0cmluZyYgY29udGVu
dCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW4KIFN0cmluZyBmaW5kU3R5bGVzaGVldFNvdXJj
ZU1hcFVSTChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7CiAgICAgLy8gIi8qIyA8bmFtZT49PHZh
bHVlPiAqLyIgYW5kIGRlcHJlY2F0ZWQgIi8qQCIKLSAgICByZXR1cm4gZmluZE1hZ2ljQ29tbWVu
dChjb250ZW50LCAiL1xcKlsjQF1bXDA0MFx0XXNvdXJjZU1hcHBpbmdVUkw9W1wwNDBcdF0qKFte
XFxzXCdcIl0qKVtcMDQwXHRdKlxcKi8iX3MpOworICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50
KGNvbnRlbnQsICIvXFwqWyNAXVtcMDQwXHRdc291cmNlTWFwcGluZ1VSTD1bXDA0MFx0XSooW15c
XHNcJ1wiXSopW1wwNDBcdF0qXFwqLyJfc3RyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQ29udGVu
dFNlYXJjaFV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmNwcAppbmRleCA4YjI5MGZhZWJjMTg2NTUxOWIwZTdjNTE0ZjQ5NzU4
NWRmYzBiYmRhLi41MzRjMmRlODUxOTgzYmZkMzY1MDkzNThkYzYwZTgyNjgwMmMzZTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtNDMsMTIgKzQzLDEyIEBACiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5qZWN0ZWRT
Y3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKLSAgICA6IEluamVjdGVkU2NyaXB0QmFzZSgiSW5qZWN0
ZWRTY3JpcHQiX3MpCisgICAgOiBJbmplY3RlZFNjcmlwdEJhc2UoIkluamVjdGVkU2NyaXB0Il9z
dHIpCiB7CiB9CiAKIEluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdChEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RvckVudmlyb25tZW50KiBl
bnZpcm9ubWVudCkKLSAgICA6IEluamVjdGVkU2NyaXB0QmFzZSgiSW5qZWN0ZWRTY3JpcHQiX3Ms
IGluamVjdGVkU2NyaXB0T2JqZWN0LCBlbnZpcm9ubWVudCkKKyAgICA6IEluamVjdGVkU2NyaXB0
QmFzZSgiSW5qZWN0ZWRTY3JpcHQiX3N0ciwgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIGVudmlyb25t
ZW50KQogewogfQogCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0Ojp+SW5qZWN0ZWRT
Y3JpcHQoKQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpleGVjdXRlKFByb3RvY29sOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25TdHJpbmcsIEV4ZWN1dGVP
cHRpb25zJiYgb3B0aW9ucywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxp
bnQ+JiBzYXZlZFJlc3VsdEluZGV4KQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXhlY3V0ZSJfcywgaW5zcGVj
dG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV4
ZWN1dGUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlvblN0cmluZyk7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQob3B0aW9ucy5vYmplY3RHcm91cCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQob3B0aW9ucy5pbmNsdWRlQ29tbWFuZExpbmVBUEkpOwpAQCAtNzEsNyAr
NzEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpleGVjdXRlKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZgogCiB2b2lkIEluamVjdGVkU2NyaXB0Ojpl
dmFsdWF0ZShQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29s
IHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVz
dWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYg
c2F2ZWRSZXN1bHRJbmRleCkKIHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlIl9zLCBpbnNwZWN0b3JF
bnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVh
dGUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
aW5jbHVkZUNvbW1hbmRMaW5lQVBJKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdDo6ZXZhbHVhdGUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJgogCiB2b2lkIEluamVjdGVkU2NyaXB0Ojphd2FpdFByb21pc2UoY29uc3QgU3RyaW5n
JiBwcm9taXNlT2JqZWN0SWQsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZp
ZXcsIGJvb2wgc2F2ZVJlc3VsdCwgQXN5bmNDYWxsQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAg
ICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgImF3YWl0UHJvbWlzZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rp
b25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImF3YWl0UHJvbWlzZSJfc3RyLCBpbnNwZWN0
b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KHByb21pc2VPYmplY3RJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQocmV0dXJuQnlWYWx1ZSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2VuZXJhdGVQ
cmV2aWV3KTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6YXdhaXRQcm9t
aXNlKGNvbnN0IFN0cmluZyYgcHJvbWlzZU9iamVjdElkLCBib29sIHJldHVybkJ5VmEKIAogdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93bikKIHsKLSAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNh
bGxGdW5jdGlvbk9uIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5k
bGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCAiY2FsbEZ1bmN0aW9uT24iX3N0ciwgaW5zcGVjdG9yRW52aXJv
bm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChvYmplY3RJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoYXJndW1lbnRzKTsKQEAgLTEwNyw3ICsxMDcs
NyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdAogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFs
dWF0ZU9uQ2FsbEZyYW1lKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6
SlNWYWx1ZSBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBi
b29sIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50
PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlT25DYWxsRnJhbWUi
X3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJldmFsdWF0ZU9uQ2FsbEZyYW1lIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCkt
PmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2Fs
bEZyYW1lcyk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lSWQpOwogICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwpAQCAtMTIxLDE0ICsxMjEsMTQg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBKU0MKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVu
Y3Rpb25EZXRhaWxzKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRh
aWxzPiYgcmVzdWx0KQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0RnVuY3Rpb25EZXRhaWxzIl9zLCBpbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
Z2V0RnVuY3Rpb25EZXRhaWxzIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9u
Q2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZnVuY3Rpb25JZCk7
CiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdFZhbHVlID0gbWFrZUNhbGwoZnVuY3Rp
b24pOwogICAgIGlmICghcmVzdWx0VmFsdWUgfHwgcmVzdWx0VmFsdWUtPnR5cGUoKSAhPSBKU09O
OjpWYWx1ZTo6VHlwZTo6T2JqZWN0KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gcmVzdWx0VmFs
dWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlmICghZXJyb3JTdHJpbmcpCi0gICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfczsKKyAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIkludGVybmFsIGVycm9yIl9zdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEz
NywxNCArMTM3LDE0IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zCiAKIHZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmZ1bmN0aW9uRGV0YWlscyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBKU0M6OkpTVmFsdWUgdmFsdWUsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9u
RGV0YWlscz4mIHJlc3VsdCkKIHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImZ1bmN0aW9uRGV0YWlscyJfcywgaW5z
cGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ImZ1bmN0aW9uRGV0YWlscyJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNh
bGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHZhbHVlKTsKIAogICAg
IFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0VmFsdWUgPSBtYWtlQ2FsbChmdW5jdGlvbik7CiAg
ICAgaWYgKCFyZXN1bHRWYWx1ZSB8fCByZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEpTT046OlZhbHVl
OjpUeXBlOjpPYmplY3QpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSByZXN1bHRWYWx1ZS0+YXNT
dHJpbmcoKTsKICAgICAgICAgaWYgKCFlcnJvclN0cmluZykKLSAgICAgICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yIl9zOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3IiX3N0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTUzLDE0ICsx
NTMsMTQgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKFByb3RvY29sOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6SlMKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6
Z2V0UHJldmlldyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBy
ZXN1bHQpCiB7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRQcmV2aWV3Il9zLCBpbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0UHJldmlldyJfc3Ry
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcmVzdWx0VmFsdWUgPSBtYWtlQ2FsbChmdW5jdGlvbik7CiAgICAgaWYgKCFyZXN1bHRWYWx1
ZSB8fCByZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEpTT046OlZhbHVlOjpUeXBlOjpPYmplY3QpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSByZXN1bHRWYWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAg
aWYgKCFlcnJvclN0cmluZykKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVy
cm9yIl9zOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3N0cjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSW5qZWN0
ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyCiAgICAgQVNTRVJUKGZldGNoU3RhcnQgPj0gMCk7CiAgICAgQVNTRVJUKGZl
dGNoQ291bnQgPj0gMCk7CiAKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldFByb3BlcnRpZXMiX3MsIGluc3BlY3Rv
ckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRQ
cm9wZXJ0aWVzIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRs
ZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KG93blByb3BlcnRpZXMpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KGZldGNoU3RhcnQpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmdldFByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyCiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdCA9IG1ha2VDYWxsKGZ1bmN0
aW9uKTsKICAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQtPnR5cGUoKSAhPSBKU09OOjpWYWx1ZTo6
VHlwZTo6QXJyYXkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3M7
CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIl9zdHI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojpn
ZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZwogICAgIEFTU0VSVChmZXRjaFN0YXJ0ID49IDApOwogICAgIEFTU0VSVChmZXRjaENvdW50ID49
IDApOwogCi0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMiX3MsIGluc3BlY3Rv
ckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRE
aXNwbGF5YWJsZVByb3BlcnRpZXMiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rp
b25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZmV0Y2hTdGFydCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoZmV0Y2hDb3VudCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0ID0gbWFrZUNh
bGwoZnVuY3Rpb24pOwogICAgIGlmICghcmVzdWx0IHx8IHJlc3VsdC0+dHlwZSgpICE9IEpTT046
OlZhbHVlOjpUeXBlOjpBcnJheSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBl
cnJvciJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3N0cjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjEwLDEzICsyMTAsMTMgQEAgdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVz
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJvcGVydGllcykKIHsKLSAg
ICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgImdldEludGVybmFsUHJvcGVydGllcyJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldEludGVybmFsUHJvcGVy
dGllcyJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChnZW5lcmF0ZVByZXZpZXcpOwogCiAgICAgUmVmUHRyPEpTT046OlZhbHVl
PiByZXN1bHQgPSBtYWtlQ2FsbChmdW5jdGlvbik7CiAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0
LT50eXBlKCkgIT0gSlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5KSB7Ci0gICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5h
bCBlcnJvciJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzAsNyArMjMwLDcg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY28KICAgICBBU1NFUlQoZmV0Y2hTdGFydCA+PSAwKTsK
ICAgICBBU1NFUlQoZmV0Y2hDb3VudCA+PSAwKTsKIAotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0Q29sbGVjdGlv
bkVudHJpZXMiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIo
KSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJnZXRDb2xsZWN0aW9uRW50cmllcyJfc3RyLCBpbnNwZWN0b3JFbnZp
cm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91
cCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZmV0Y2hTdGFydCk7CkBAIC0yMzgsNyAr
MjM4LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY28KIAogICAgIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcmVzdWx0ID0gbWFrZUNhbGwoZnVuY3Rpb24pOwogICAgIGlmICghcmVzdWx0IHx8IHJlc3Vs
dC0+dHlwZSgpICE9IEpTT046OlZhbHVlOjpUeXBlOjpBcnJheSkgewotICAgICAgICBlcnJvclN0
cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJu
YWwgZXJyb3IiX3N0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQ3LDEyICsyNDcs
MTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoUHJvdG9jb2w6
OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY28KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6c2F2
ZVJlc3VsdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGNhbGxBcmd1bWVudEpTT04sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkK
IHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgInNhdmVSZXN1bHQiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1
bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJzYXZlUmVzdWx0Il9zdHIsIGluc3Bl
Y3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoY2FsbEFyZ3VtZW50SlNPTik7CiAKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHJlc3VsdCA9IG1ha2VDYWxsKGZ1bmN0aW9uKTsKICAgICBpZiAoIXJlc3VsdCB8fCByZXN1
bHQtPnR5cGUoKSAhPSBKU09OOjpWYWx1ZTo6VHlwZTo6SW50ZWdlcikgewotICAgICAgICBlcnJv
clN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3IiX3N0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjYyLDcgKzI2
Miw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhK
U0M6OkpTVmFsdWUgY2FsbEZyYW1lcykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUo
KSk7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBDYWxsRnJhbWVzIl9z
dHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAKICAgICBhdXRvIGNhbGxSZXN1
bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwpAQCAtMjgwLDcgKzI4
MCw3IEBAIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4g
SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzCiBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QoSlNDOjpKU1ZhbHVlIHZh
bHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBPYmpl
Y3QiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5m
dW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2
YWx1ZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAg
d3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhhc0FjY2Vzc1RvSW5zcGVjdGVkU2NyaXB0U3Rh
dGUoKSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KEpTQzo6SlNWYWx1ZQogUmVmUHRy
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwSlNP
TlN0cmluZyhjb25zdCBTdHJpbmcmIGpzb24sIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29s
IGdlbmVyYXRlUHJldmlldykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0g
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAid3JhcEpTT05TdHJpbmciX3MsIGluc3BlY3RvckVudmlyb25tZW50KCkt
PmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcEpTT05TdHJpbmci
X3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAg
ICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoanNvbik7CiAgICAgd3JhcEZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGdlbmVyYXRlUHJldmlldyk7CkBAIC0zMzAsNyArMzMwLDcgQEAgUmVmUHRyPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmluZyhjb25z
dCBTdHIKIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNj
cmlwdDo6d3JhcFRhYmxlKEpTQzo6SlNWYWx1ZSB0YWJsZSwgSlNDOjpKU1ZhbHVlIGNvbHVtbnMp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndy
YXBUYWJsZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwVGFibGUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQoaGFzQWNjZXNzVG9JbnNwZWN0ZWRTY3JpcHRTdGF0ZSgpKTsKICAgICB3cmFwRnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQodGFibGUpOwogICAgIGlmICghY29sdW1ucykKQEAgLTM1Niw3ICszNTYs
NyBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3Jp
cHQ6OndyYXBUYWJsZShKU0M6OkpTVmFsdWUgdAogUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpP
YmplY3RQcmV2aWV3PiBJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVlKEpTQzo6SlNWYWx1ZSB2
YWx1ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgRGVwcmVjYXRl
ZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAicHJldmlld1ZhbHVlIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxI
YW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInByZXZpZXdWYWx1ZSJfc3RyLCBpbnNwZWN0b3JF
bnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIHdyYXBGdW5jdGlvbi5h
cHBlbmRBcmd1bWVudCh2YWx1ZSk7CiAKICAgICBhdXRvIGNhbGxSZXN1bHQgPSBjYWxsRnVuY3Rp
b25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uKTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBSZWZQ
dHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+IEluamVjdGVkU2NyaXB0OjpwcmV2
aWV3VmFsdWUoSlNDOjpKU1ZhbAogdm9pZCBJbmplY3RlZFNjcmlwdDo6c2V0RXZlbnRWYWx1ZShK
U0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAic2V0RXZlbnRWYWx1ZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25D
YWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInNldEV2ZW50VmFsdWUiX3N0ciwgaW5zcGVjdG9y
RW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudCh2YWx1ZSk7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24pOwogfQpAQCAtMzg1LDE0
ICszODUsMTQgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6c2V0RXZlbnRWYWx1ZShKU0M6OkpTVmFs
dWUgdmFsdWUpCiB2b2lkIEluamVjdGVkU2NyaXB0OjpjbGVhckV2ZW50VmFsdWUoKQogewogICAg
IEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNsZWFyRXZlbnRWYWx1ZSJfcywg
aW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgImNsZWFyRXZlbnRWYWx1ZSJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlv
bkNhbGxIYW5kbGVyKCkpOwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uKTsKIH0KIAogdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6c2V0RXhjZXB0aW9uVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAg
IEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInNldEV4Y2VwdGlvblZhbHVlIl9z
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAic2V0RXhjZXB0aW9uVmFsdWUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVu
Y3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7
CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24pOwogfQpAQCAtNDAwLDE0ICs0MDAsMTQgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdDo6c2V0RXhjZXB0aW9uVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKQogdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Y2xlYXJFeGNlcHRpb25WYWx1ZSgpCiB7CiAgICAgQVNTRVJUKCFo
YXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY2xlYXJFeGNlcHRpb25WYWx1ZSJfcywgaW5zcGVj
dG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNs
ZWFyRXhjZXB0aW9uVmFsdWUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25D
YWxsSGFuZGxlcigpKTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbik7CiB9CiAKIEpTQzo6SlNWYWx1
ZSBJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2Jq
ZWN0QnlJZCJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgImZpbmRPYmplY3RCeUlkIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50
KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
b2JqZWN0SWQpOwogCiAgICAgYXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxF
bmFibGVkKGZ1bmN0aW9uKTsKQEAgLTQyMCwxNCArNDIwLDE0IEBAIEpTQzo6SlNWYWx1ZSBJbmpl
Y3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3RPYmplY3QoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluc3BlY3RPYmplY3Qi
X3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJpbnNwZWN0T2JqZWN0Il9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodmFsdWUpOwog
ICAgIG1ha2VDYWxsKGZ1bmN0aW9uKTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFz
ZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9i
amVjdCJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3QiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+
ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmpl
Y3RJZCk7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24pOwogfQpAQCAtNDM1LDcgKzQzNSw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJyZWxlYXNlT2JqZWN0R3JvdXAiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHJl
bGVhc2VGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdEdyb3Vw
Il9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAg
ICAgcmVsZWFzZUZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKIAogICAgIGF1
dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChyZWxlYXNlRnVuY3Rp
b24pOwpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmpl
Y3RHcm91cChjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogSlNDOjpKU09iamVjdCogSW5qZWN0
ZWRTY3JpcHQ6OmNyZWF0ZUNvbW1hbmRMaW5lQVBJT2JqZWN0KEpTQzo6SlNWYWx1ZSBjYWxsRnJh
bWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY3Jl
YXRlQ29tbWFuZExpbmVBUElPYmplY3QiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJjcmVhdGVDb21tYW5kTGluZUFQSU9iamVj
dCJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIGNhbGxS
ZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3Bw
CmluZGV4IGRhN2UwOWNkNzkxOWIwYmJmNjIwNTZjNDdlYTE5NjU4ZDliODg1MDEuLmRmMTcyNTlh
ZTI5MWI3M2UzZDJlZmE5YTY0MzE3NmYzYjk0NWE4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTEyMSw3
ICsxMjEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbChEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLAogCiAgICAgICAgIGpzRnVuY3Rpb24g
PSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBT
dHJpbmcoKSwgWyYsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsKICAgICAg
ICAgICAgIGlmICghY2FsbEZyYW1lKQotICAgICAgICAgICAgICAgIGNoZWNrQXN5bmNDYWxsUmVz
dWx0KEpTT046OlZhbHVlOjpjcmVhdGUobWFrZVN0cmluZygiRXhjZXB0aW9uIHdoaWxlIG1ha2lu
ZyBhIGNhbGwuIl9zKSksIGNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBjaGVja0FzeW5jQ2Fs
bFJlc3VsdChKU09OOjpWYWx1ZTo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2Fs
bC4iX3N0ciksIGNhbGxiYWNrKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8gcmVzdWx0SlNP
TlZhbHVlID0gdG9JbnNwZWN0b3JWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKQogICAgICAgICAgICAgICAgIGNoZWNrQXN5bmNDYWxsUmVzdWx0KHJlc3VsdEpTT05W
YWx1ZSwgY2FsbGJhY2spOwogICAgICAgICAgICAgZWxzZQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQXN5bmNDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCYgZnVuY3Rpb24sCiB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxs
UmVzdWx0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOjpW
YWx1ZT4gcmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJl
c3VsdE9iamVjdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFs
PGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCB2YWx1ZSBpcyBlbXB0eSJfczsK
KyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCB2YWx1ZSBpcyBl
bXB0eSJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTcsMjUgKzE1NywyNSBA
QCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxsUmVzdWx0KFByb3RvY29sOjpFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZgogCiAgICAgYXV0byByZXN1bHRUdXBsZSA9IHJlc3Vs
dC0+YXNPYmplY3QoKTsKICAgICBpZiAoIXJlc3VsdFR1cGxlKSB7Ci0gICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGFuIE9iamVjdCJfczsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYW4gT2JqZWN0
Il9zdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHR5cGVsZXNzUmVzdWx0
T2JqZWN0ID0gcmVzdWx0VHVwbGUtPmdldE9iamVjdCgicmVzdWx0Il9zKTsKKyAgICBhdXRvIHR5
cGVsZXNzUmVzdWx0T2JqZWN0ID0gcmVzdWx0VHVwbGUtPmdldE9iamVjdCgicmVzdWx0Il9zdHIp
OwogICAgIGlmICghdHlwZWxlc3NSZXN1bHRPYmplY3QpIHsKICAgICAgICAgLy8gRklYTUU6IFdo
eSBkbyB3ZSBib3RoZXIgY2hlY2tpbmcgZm9yIG51bGwgaGVyZSwgYnV0IG5vdCBjaGVja2luZyB0
aGF0IHRoZSB0eXBlIGlzIFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q/IFN1cmVseSB0
aGUgdHdvIHBvc3NpYmxlIGVycm9ycyBnbyBoYW5kIGluIGhhbmQuCi0gICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQg
d2FzVGhyb3duIGZsYWciX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9y
OiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQgd2FzVGhyb3duIGZsYWciX3N0cjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdhc1Rocm93biA9IHJlc3VsdFR1cGxlLT5n
ZXRCb29sZWFuKCJ3YXNUaHJvd24iX3MpOworICAgIHdhc1Rocm93biA9IHJlc3VsdFR1cGxlLT5n
ZXRCb29sZWFuKCJ3YXNUaHJvd24iX3N0cik7CiAgICAgaWYgKCF3YXNUaHJvd24pIHsKLSAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9m
IHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9mIHZhbHVlIGFuZCB3YXNUaHJvd24g
ZmxhZyJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgcmVzdWx0T2JqZWN0ID0g
UHJvdG9jb2w6OkJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46
OnJ1bnRpbWVDYXN0KHR5cGVsZXNzUmVzdWx0T2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOwotICAg
IHNhdmVkUmVzdWx0SW5kZXggPSByZXN1bHRUdXBsZS0+Z2V0SW50ZWdlcigic2F2ZWRSZXN1bHRJ
bmRleCJfcyk7CisgICAgc2F2ZWRSZXN1bHRJbmRleCA9IHJlc3VsdFR1cGxlLT5nZXRJbnRlZ2Vy
KCJzYXZlZFJlc3VsdEluZGV4Il9zdHIpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6
Y2hlY2tBc3luY0NhbGxSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHQsIGNvbnN0IEFz
eW5jQ2FsbENhbGxiYWNrJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBlMTNjYzcy
OWU4YmVkNDg0YjU3NTczOWEyMjFkMGM1NTdhNDFhN2M2Li4wNDBlN2RhODExOWIzNDE4Yjk4OGI2
OWM0N2MxYTI5NDQyNDc4MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcg
QEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZv
ck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2IKICAgICBpZiAoIXJlc3VsdE9iamVjdCkKICAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKLSAgICBhdXRvIGluamVjdGVkU2NyaXB0SWQg
PSByZXN1bHRPYmplY3QtPmdldEludGVnZXIoImluamVjdGVkU2NyaXB0SWQiX3MpOworICAgIGF1
dG8gaW5qZWN0ZWRTY3JpcHRJZCA9IHJlc3VsdE9iamVjdC0+Z2V0SW50ZWdlcigiaW5qZWN0ZWRT
Y3JpcHRJZCJfc3RyKTsKICAgICBpZiAoIWluamVjdGVkU2NyaXB0SWQpCiAgICAgICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCmluZGV4IDQ4MjZlNDZmZGI2MWEy
ZWQ2ZmJlODZiODk3NDEyZjQ4ZmQ1ZTlhMTEuLjM5ZjlkOTYxZWQ0MzY4ZDdhOWJiMDRhY2Y5Zjlk
MjEyZmFhYTc1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNCiAKICAgICAvLyBGSVhNRTogTWFrZSB0aGUgSW5qZWN0ZWRTY3JpcHQg
YSBtb2R1bGUgaXRzZWxmLgogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihpbmplY3RlZFNj
cmlwdC5nbG9iYWxPYmplY3QoKSk7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJoYXNJbmpl
Y3RlZE1vZHVsZSJfcywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJo
YXNJbmplY3RlZE1vZHVsZSJfc3RyLCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVu
dmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChuYW1lKCkpOwogICAgIGF1dG8gaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQgPSBpbmpl
Y3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwogICAgIEFT
U0VSVChoYXNJbmplY3RlZE1vZHVsZVJlc3VsdCk7CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogICAgIGlmICghaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4o
KSB8fCAhaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5hc0Jvb2xlYW4oKSkgewotICAg
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluamVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7
CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIl9zdHIsIGluamVj
dGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5k
bGVyKCkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwogICAgICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5n
bG9iYWxPYmplY3QoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCAxMDg4YTZh
OGYyOTY1ZTE3ZTUyZDdiYTFkMTE0MmI5ZWQ2OTdhZDNmLi45MzM3MmM4NTA1Mzk0OTk3NTBkYWE3
N2Q4ZjhmNzY2NTkxN2Q5YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMTE3
LDI4ICsxMTcsMjggQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogCiAgICAgICAgIGF1dG8gcGFyc2VkTWVzc2FnZSA9IEpTT046OlZhbHVl
OjpwYXJzZUpTT04obWVzc2FnZSk7CiAgICAgICAgIGlmICghcGFyc2VkTWVzc2FnZSkgewotICAg
ICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihQYXJzZUVycm9yLCAiTWVzc2FnZSBtdXN0IGJl
IGluIEpTT04gZm9ybWF0Il9zKTsKKyAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoUGFy
c2VFcnJvciwgIk1lc3NhZ2UgbXVzdCBiZSBpbiBKU09OIGZvcm1hdCJfc3RyKTsKICAgICAgICAg
ICAgIHNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAogICAgICAgICBtZXNzYWdlT2JqZWN0ID0gcGFyc2VkTWVzc2FnZS0+YXNPYmplY3QoKTsKICAg
ICAgICAgaWYgKCFtZXNzYWdlT2JqZWN0KSB7Ci0gICAgICAgICAgICByZXBvcnRQcm90b2NvbEVy
cm9yKEludmFsaWRSZXF1ZXN0LCAiTWVzc2FnZSBtdXN0IGJlIGEgSlNPTmlmaWVkIG9iamVjdCJf
cyk7CisgICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0LCAiTWVz
c2FnZSBtdXN0IGJlIGEgSlNPTmlmaWVkIG9iamVjdCJfc3RyKTsKICAgICAgICAgICAgIHNlbmRQ
ZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIHJlcXVlc3RJZFZhbHVlID0gbWVzc2FnZU9iamVjdC0+Z2V0VmFsdWUoImlkIl9zKTsK
KyAgICAgICAgYXV0byByZXF1ZXN0SWRWYWx1ZSA9IG1lc3NhZ2VPYmplY3QtPmdldFZhbHVlKCJp
ZCJfc3RyKTsKICAgICAgICAgaWYgKCFyZXF1ZXN0SWRWYWx1ZSkgewotICAgICAgICAgICAgcmVw
b3J0UHJvdG9jb2xFcnJvcihJbnZhbGlkUmVxdWVzdCwgIidpZCcgcHJvcGVydHkgd2FzIG5vdCBm
b3VuZCJfcyk7CisgICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0
LCAiJ2lkJyBwcm9wZXJ0eSB3YXMgbm90IGZvdW5kIl9zdHIpOwogICAgICAgICAgICAgc2VuZFBl
bmRpbmdFcnJvcnMoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IGF1dG8gcmVxdWVzdElkSW50ID0gcmVxdWVzdElkVmFsdWUtPmFzSW50ZWdlcigpOwogICAgICAg
ICBpZiAoIXJlcXVlc3RJZEludCkgewotICAgICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihJ
bnZhbGlkUmVxdWVzdCwgIlRoZSB0eXBlIG9mICdpZCcgcHJvcGVydHkgbXVzdCBiZSBpbnRlZ2Vy
Il9zKTsKKyAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJU
aGUgdHlwZSBvZiAnaWQnIHByb3BlcnR5IG11c3QgYmUgaW50ZWdlciJfc3RyKTsKICAgICAgICAg
ICAgIHNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTE1MCwyMyArMTUwLDIzIEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgLy8gV2UgY291bGQgYmUgY2FsbGVkIHJlLWVu
dHJhbnRseSBmcm9tIGEgbmVzdGVkIHJ1biBsb29wLCBzbyByZXN0b3JlIHRoZSBwcmV2aW91cyBp
ZC4KICAgICAgICAgU2V0Rm9yU2NvcGUgc2NvcGVkUmVxdWVzdElkKG1fY3VycmVudFJlcXVlc3RJ
ZCwgcmVxdWVzdElkKTsKIAotICAgICAgICBhdXRvIG1ldGhvZFZhbHVlID0gbWVzc2FnZU9iamVj
dC0+Z2V0VmFsdWUoIm1ldGhvZCJfcyk7CisgICAgICAgIGF1dG8gbWV0aG9kVmFsdWUgPSBtZXNz
YWdlT2JqZWN0LT5nZXRWYWx1ZSgibWV0aG9kIl9zdHIpOwogICAgICAgICBpZiAoIW1ldGhvZFZh
bHVlKSB7Ci0gICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0LCAi
J21ldGhvZCcgcHJvcGVydHkgd2Fzbid0IGZvdW5kIl9zKTsKKyAgICAgICAgICAgIHJlcG9ydFBy
b3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICInbWV0aG9kJyBwcm9wZXJ0eSB3YXNuJ3QgZm91
bmQiX3N0cik7CiAgICAgICAgICAgICBzZW5kUGVuZGluZ0Vycm9ycygpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBtZXRob2RTdHJpbmcgPSBtZXRob2RW
YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFtZXRob2RTdHJpbmcpIHsKLSAgICAgICAg
ICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJUaGUgdHlwZSBvZiAnbWV0
aG9kJyBwcm9wZXJ0eSBtdXN0IGJlIHN0cmluZyJfcyk7CisgICAgICAgICAgICByZXBvcnRQcm90
b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0LCAiVGhlIHR5cGUgb2YgJ21ldGhvZCcgcHJvcGVydHkg
bXVzdCBiZSBzdHJpbmciX3N0cik7CiAgICAgICAgICAgICBzZW5kUGVuZGluZ0Vycm9ycygpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZG9tYWluQW5kTWV0aG9kID0gbWV0aG9kU3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMo
Jy4nKTsKICAgICAgICAgaWYgKGRvbWFpbkFuZE1ldGhvZC5zaXplKCkgIT0gMiB8fCAhZG9tYWlu
QW5kTWV0aG9kWzBdLmxlbmd0aCgpIHx8ICFkb21haW5BbmRNZXRob2RbMV0ubGVuZ3RoKCkpIHsK
LSAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJUaGUgJ21l
dGhvZCcgcHJvcGVydHkgd2FzIGZvcm1hdHRlZCBpbmNvcnJlY3RseS4gSXQgc2hvdWxkIGJlICdE
b21haW4ubWV0aG9kJyJfcyk7CisgICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFs
aWRSZXF1ZXN0LCAiVGhlICdtZXRob2QnIHByb3BlcnR5IHdhcyBmb3JtYXR0ZWQgaW5jb3JyZWN0
bHkuIEl0IHNob3VsZCBiZSAnRG9tYWluLm1ldGhvZCciX3N0cik7CiAgICAgICAgICAgICBzZW5k
UGVuZGluZ0Vycm9ycygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMTQs
OCArMjE0LDggQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgcmVx
dWVzdElkLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHJlc3VsdCwKICAgICAvLyBUaGUgSlNPTi1SUEMg
Mi4wIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhhdCB0aGUgImVycm9yIiBtZW1iZXIgaGF2ZSB0
aGUgdmFsdWUgJ251bGwnCiAgICAgLy8gaWYgbm8gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGFuIGlu
dm9jYXRpb24sIGJ1dCB3ZSBkbyBub3QgaW5jbHVkZSBpdCBhdCBhbGwuCiAgICAgUmVmPEpTT046
Ok9iamVjdD4gcmVzcG9uc2VNZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBy
ZXNwb25zZU1lc3NhZ2UtPnNldE9iamVjdCgicmVzdWx0Il9zLCBXVEZNb3ZlKHJlc3VsdCkpOwot
ICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0SW50ZWdlcigiaWQiX3MsIHJlcXVlc3RJZCk7CisgICAg
cmVzcG9uc2VNZXNzYWdlLT5zZXRPYmplY3QoInJlc3VsdCJfc3RyLCBXVEZNb3ZlKHJlc3VsdCkp
OworICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0SW50ZWdlcigiaWQiX3N0ciwgcmVxdWVzdElkKTsK
ICAgICBtX2Zyb250ZW5kUm91dGVyLT5zZW5kUmVzcG9uc2UocmVzcG9uc2VNZXNzYWdlLT50b0pT
T05TdHJpbmcoKSk7CiB9CiAKQEAgLTI0NiwyMyArMjQ2LDIzIEBAIHZvaWQgQmFja2VuZERpc3Bh
dGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKCkKICAgICAgICAgQVNTRVJUX0FSRyhlcnJvckNvZGUs
IGVycm9yQ29kZXNbZXJyb3JDb2RlXSk7CiAKICAgICAgICAgUmVmPEpTT046Ok9iamVjdD4gZXJy
b3IgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBlcnJvci0+c2V0SW50ZWdlcigi
Y29kZSJfcywgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKLSAgICAgICAgZXJyb3ItPnNldFN0cmlu
ZygibWVzc2FnZSJfcywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgZXJyb3ItPnNldEludGVnZXIo
ImNvZGUiX3N0ciwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKKyAgICAgICAgZXJyb3ItPnNldFN0
cmluZygibWVzc2FnZSJfc3RyLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICBwYXlsb2FkLT5wdXNo
T2JqZWN0KFdURk1vdmUoZXJyb3IpKTsKICAgICB9CiAKICAgICBSZWY8SlNPTjo6T2JqZWN0PiB0
b3BMZXZlbEVycm9yID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICB0b3BMZXZlbEVycm9y
LT5zZXRJbnRlZ2VyKCJjb2RlIl9zLCBlcnJvckNvZGVzW2Vycm9yQ29kZV0pOwotICAgIHRvcExl
dmVsRXJyb3ItPnNldFN0cmluZygibWVzc2FnZSJfcywgZXJyb3JNZXNzYWdlKTsKLSAgICB0b3BM
ZXZlbEVycm9yLT5zZXRBcnJheSgiZGF0YSJfcywgV1RGTW92ZShwYXlsb2FkKSk7CisgICAgdG9w
TGV2ZWxFcnJvci0+c2V0SW50ZWdlcigiY29kZSJfc3RyLCBlcnJvckNvZGVzW2Vycm9yQ29kZV0p
OworICAgIHRvcExldmVsRXJyb3ItPnNldFN0cmluZygibWVzc2FnZSJfc3RyLCBlcnJvck1lc3Nh
Z2UpOworICAgIHRvcExldmVsRXJyb3ItPnNldEFycmF5KCJkYXRhIl9zdHIsIFdURk1vdmUocGF5
bG9hZCkpOwogCiAgICAgUmVmPEpTT046Ok9iamVjdD4gbWVzc2FnZSA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgbWVzc2FnZS0+c2V0T2JqZWN0KCJlcnJvciJfcywgV1RGTW92ZSh0b3BM
ZXZlbEVycm9yKSk7CisgICAgbWVzc2FnZS0+c2V0T2JqZWN0KCJlcnJvciJfc3RyLCBXVEZNb3Zl
KHRvcExldmVsRXJyb3IpKTsKICAgICBpZiAobV9jdXJyZW50UmVxdWVzdElkKQotICAgICAgICBt
ZXNzYWdlLT5zZXRJbnRlZ2VyKCJpZCJfcywgbV9jdXJyZW50UmVxdWVzdElkLnZhbHVlKCkpOwor
ICAgICAgICBtZXNzYWdlLT5zZXRJbnRlZ2VyKCJpZCJfc3RyLCBtX2N1cnJlbnRSZXF1ZXN0SWQu
dmFsdWUoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFRoZSAnbnVsbCcgdmFsdWUgZm9yIGFu
IHVua25vd24gaWQgaXMgc3BlY2lmaWVkIGluIEpTT04tUlBDIDIuMCwgU2VjdGlvbiA1LgotICAg
ICAgICBtZXNzYWdlLT5zZXRWYWx1ZSgiaWQiX3MsIEpTT046OlZhbHVlOjpudWxsKCkpOworICAg
ICAgICBtZXNzYWdlLT5zZXRWYWx1ZSgiaWQiX3N0ciwgSlNPTjo6VmFsdWU6Om51bGwoKSk7CiAg
ICAgfQogCiAgICAgbV9mcm9udGVuZFJvdXRlci0+c2VuZFJlc3BvbnNlKG1lc3NhZ2UtPnRvSlNP
TlN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcAppbmRleCBmMDZmZjAzYmUw
ZmUyNzJlMDhhNDZjODRiMGU4MTMyM2FjMDZmOTBiLi4yMjcwNjg4ZGZkNTFhZjU4OWFjNjIyMjg2
MjM5NjU5NDkzMzFiNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCkBAIC0xMDIs
NyArMTAyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGkKICAgICAgICAgZm9yIChhdXRvJiBl
eGlzdGluZ1RpdGxlIDogbV9wcm9maWxlcykgewogICAgICAgICAgICAgaWYgKGV4aXN0aW5nVGl0
bGUgPT0gdGl0bGUpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRv
IHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwotICAgICAgICAgICAgICAgIFN0cmluZyB3
YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0
cyJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCBTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRl
U3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UodGl0bGUpLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKKyAg
ICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJVbm5hbWVk
IFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3N0ciA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCBT
Y3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UodGl0bGUpLCAi
XCIgYWxyZWFkeSBleGlzdHMiKTsKICAgICAgICAgICAgICAgICBtX2NvbnNvbGVBZ2VudC0+YWRk
TWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5n
LCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAt
MTMwLDcgKzEzMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxl
RW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmCiAgICAgfQogCiAgICAgLy8g
RklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KLSAg
ICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJf
cyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7
CisgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhp
c3QiX3N0ciA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4
aXN0Iik7CiAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogfQogCkBAIC0x
OTEsNyArMTkxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnRpbWVTdGFt
cChKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHMKICAgICBpZiAoTElLRUxZKCFt
X2NvbnNvbGVBZ2VudC0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgd2FyblVuaW1wbGVtZW50ZWQoImNvbnNvbGUudGltZVN0YW1wIl9zKTsKKyAgICB3
YXJuVW5pbXBsZW1lbnRlZCgiY29uc29sZS50aW1lU3RhbXAiX3N0cik7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpyZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2Ny
aXB0QXJndW1lbnRzPiYmKQpAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50OjpyZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRz
PiYmCiAgICAgaWYgKExJS0VMWSghbV9jb25zb2xlQWdlbnQtPmRldmVsb3BlckV4dHJhc0VuYWJs
ZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xl
LnJlY29yZCJfcyk7CisgICAgd2FyblVuaW1wbGVtZW50ZWQoImNvbnNvbGUucmVjb3JkIl9zdHIp
OwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTR2xv
YmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikKQEAgLTIwNyw3ICsyMDcsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTR2xvYmFsT2JqZWN0
KiwgUmVmPFNjcmlwdEFyZ3VtZW50cwogICAgIGlmIChMSUtFTFkoIW1fY29uc29sZUFnZW50LT5k
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICB3YXJuVW5p
bXBsZW1lbnRlZCgiY29uc29sZS5yZWNvcmRFbmQiX3MpOworICAgIHdhcm5VbmltcGxlbWVudGVk
KCJjb25zb2xlLnJlY29yZEVuZCJfc3RyKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQ6OnNjcmVlbnNob3QoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRz
PiYmKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
OjpzY3JlZW5zaG90KEpTR2xvYmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50CiAgICAgaWYg
KExJS0VMWSghbV9jb25zb2xlQWdlbnQtPmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xlLnNjcmVlbnNob3Qi
X3MpOworICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xlLnNjcmVlbnNob3QiX3N0cik7CiB9
CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp3YXJuVW5pbXBsZW1lbnRlZChj
b25zdCBTdHJpbmcmIG1ldGhvZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCA2YWUxNzkzOWY0ODg1OGQ2MDQ2Yzk1OTI5MmQzNmNmYmM2MzQ3MWYxLi5lYzRl
OGU5NzZmN2ZmN2UwOTY5YjVkZjQ0MDQ0MTUwYjExODUyN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xNjMsOSArMTYzLDkgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEFQSUJhY2t0cmFjZShTY3JpcHRDYWxs
U3RhY2smIGNhbGwKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBhdXRvIGRlbWFuZ2xlZCA9IFN0YWNrVHJhY2U6OmRlbWFuZ2xlKHN0YWNrW2ldKTsKICAgICAg
ICAgaWYgKGRlbWFuZ2xlZCkKLSAgICAgICAgICAgIGNhbGxTdGFjay5hcHBlbmQoU2NyaXB0Q2Fs
bEZyYW1lKGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpID8gZGVtYW5nbGVkLT5kZW1hbmdsZWRO
YW1lKCkgOiBkZW1hbmdsZWQtPm1hbmdsZWROYW1lKCksICJbbmF0aXZlIGNvZGVdIl9zLCBub1Nv
dXJjZUlELCAwLCAwKSk7CisgICAgICAgICAgICBjYWxsU3RhY2suYXBwZW5kKFNjcmlwdENhbGxG
cmFtZShkZW1hbmdsZWQtPmRlbWFuZ2xlZE5hbWUoKSA/IGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFt
ZSgpIDogZGVtYW5nbGVkLT5tYW5nbGVkTmFtZSgpLCAiW25hdGl2ZSBjb2RlXSJfc3RyLCBub1Nv
dXJjZUlELCAwLCAwKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxTdGFjay5hcHBl
bmQoU2NyaXB0Q2FsbEZyYW1lKCI/Il9zLCAiW25hdGl2ZSBjb2RlXSJfcywgbm9Tb3VyY2VJRCwg
MCwgMCkpOworICAgICAgICAgICAgY2FsbFN0YWNrLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoIj8i
X3N0ciwgIltuYXRpdmUgY29kZV0iX3N0ciwgbm9Tb3VyY2VJRCwgMCwgMCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAppbmRleCA3OGU3NzM0ZTI2MzliN2U5ODhiZDk0NTliMDc2YmY3YmNl
NGMwNzFlLi44ZDhhMjAwYzEzMTVkZGFkOWJkYzljOTY1YjZhZDQxMTI1ZGQxYjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhv
c3Q6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAK
ICAgICBKU1ZhbHVlIHNjcmlwdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcuIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbmplY3RlZFNj
cmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBi
ZSBhIHN0cmluZy4iX3N0cik7CiAKICAgICBTdHJpbmcgcHJvZ3JhbSA9IGFzU3RyaW5nKHNjcmlw
dFZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNj
cmlwdEhvc3Q6OmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihKU0ds
b2JhCiAKICAgICBhdXRvKiBwcm9taXNlID0ganNEeW5hbWljQ2FzdDxKU1Byb21pc2UqPih2bSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9taXNlKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkluamVjdGVkU2NyaXB0SG9z
dC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IgZmlyc3QgYXJndW1l
bnQgbXVzdCBiZSBhIFByb21pc2UuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0
ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBQcm9t
aXNlLiJfc3RyKTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIGVy
cm9ySW5zdGFuY2UgPSBqc0R5bmFtaWNDYXN0PEVycm9ySW5zdGFuY2UqPih2bSwgcHJvbWlzZS0+
cmVzdWx0KHZtKSkpCkBAIC0xODQsNDEgKzE4NCw0MSBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpzdWJ0eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
YwogCiAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwg
dmFsdWUpKSB7CiAgICAgICAgIGlmIChvYmplY3QtPmlzRXJyb3JJbnN0YW5jZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVycm9yIl9zKTsKKyAgICAgICAg
ICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJlcnJvciJfc3RyKTsKIAogICAgICAg
ICAvLyBDb25zaWRlciBjbGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgY2xhc3Mgb2JqZWN0cy4K
ICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24q
Pih2bSwgdmFsdWUpOwogICAgICAgICBpZiAoZnVuY3Rpb24gJiYgZnVuY3Rpb24tPmlzQ2xhc3ND
b25zdHJ1Y3RvckZ1bmN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiY2xhc3MiX3MpOworICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImNsYXNzIl9zdHIpOwogCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTQXJy
YXk+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJhcnJh
eSJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXJyYXki
X3N0cik7CiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPERpcmVjdEFyZ3VtZW50cz4odm0p
IHx8IG9iamVjdC0+aW5oZXJpdHM8U2NvcGVkQXJndW1lbnRzPih2bSkpCi0gICAgICAgICAgICBy
ZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXJyYXkiX3MpOworICAgICAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImFycmF5Il9zdHIpOwogCiAgICAgICAgIGlmIChv
YmplY3QtPmluaGVyaXRzPERhdGVJbnN0YW5jZT4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgImRhdGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgImRhdGUiX3N0cik7CiAgICAgICAgIGlmIChvYmplY3QtPmluaGVy
aXRzPFJlZ0V4cE9iamVjdD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgInJlZ2V4cCJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAicmVnZXhwIl9zdHIpOwogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxQcm94
eU9iamVjdD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
InByb3h5Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJw
cm94eSJfc3RyKTsKIAogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU01hcD4odm0pKQot
ICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm1hcCJfcyk7CisgICAg
ICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAibWFwIl9zdHIpOwogICAgICAg
ICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1NldD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgInNldCJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250
cml2aWFsU3RyaW5nKHZtLCAic2V0Il9zdHIpOwogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0
czxKU1dlYWtNYXA+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJ3ZWFrbWFwIl9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJ3ZWFrbWFwIl9zdHIpOwogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1dlYWtT
ZXQ+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJ3ZWFr
c2V0Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJ3ZWFr
c2V0Il9zdHIpOwogCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTU3RyaW5nSXRlcmF0
b3I+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJpdGVy
YXRvciJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiaXRl
cmF0b3IiX3N0cik7CiAKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8SlNBcnJheUl0ZXJh
dG9yPih2bSkKICAgICAgICAgICAgIHx8IG9iamVjdC0+aW5oZXJpdHM8SlNNYXBJdGVyYXRvcj4o
dm0pCiAgICAgICAgICAgICB8fCBvYmplY3QtPmluaGVyaXRzPEpTU2V0SXRlcmF0b3I+KHZtKSkK
LSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJpdGVyYXRvciJfcyk7
CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiaXRlcmF0b3IiX3N0
cik7CiAKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8SlNJbnQ4QXJyYXk+KHZtKQogICAg
ICAgICAgICAgfHwgb2JqZWN0LT5pbmhlcml0czxKU0ludDE2QXJyYXk+KHZtKQpAQCAtMjMxLDcg
KzIzMSw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnN1YnR5cGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB8fCBvYmplY3Qt
PmluaGVyaXRzPEpTRmxvYXQ2NEFycmF5Pih2bSkKICAgICAgICAgICAgIHx8IG9iamVjdC0+aW5o
ZXJpdHM8SlNCaWdJbnQ2NEFycmF5Pih2bSkKICAgICAgICAgICAgIHx8IG9iamVjdC0+aW5oZXJp
dHM8SlNCaWdVaW50NjRBcnJheT4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgImFycmF5Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJhcnJheSJfc3RyKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1wbCgpLnN1YnR5
cGUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CkBAIC0zMTMsMTkgKzMxMywxOSBAQCBKU1ZhbHVlIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgICAgICBzd2l0Y2ggKHByb21pc2UtPnN0YXR1cyh2bSkpIHsKICAg
ICAgICAgY2FzZSBKU1Byb21pc2U6OlN0YXR1czo6UGVuZGluZzoKICAgICAgICAgICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCAic3Rh
dHVzIl9zLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJwZW5kaW5nIl9zKSkpOworICAgICAgICAg
ICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgY29uc3RydWN0
SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJzdGF0dXMiX3N0ciwganNOb250cml2aWFs
U3RyaW5nKHZtLCAicGVuZGluZyJfc3RyKSkpOwogICAgICAgICAgICAgcmV0dXJuIGFycmF5Owog
ICAgICAgICBjYXNlIEpTUHJvbWlzZTo6U3RhdHVzOjpGdWxmaWxsZWQ6Ci0gICAgICAgICAgICBh
cnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRl
cm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInN0YXR1cyJfcywganNOb250cml2aWFsU3RyaW5n
KHZtLCAicmVzb2x2ZWQiX3MpKSk7CisgICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9i
amVjdCwgInN0YXR1cyJfc3RyLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJyZXNvbHZlZCJfc3Ry
KSkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsK
ICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGFycmF5LT5wdXREaXJl
Y3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHko
Z2xvYmFsT2JqZWN0LCAicmVzdWx0Il9zLCBwcm9taXNlLT5yZXN1bHQodm0pKSk7CisgICAgICAg
ICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1
Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInJlc3VsdCJfc3RyLCBwcm9taXNlLT5y
ZXN1bHQodm0pKSk7CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIGNhc2UgSlNQ
cm9taXNlOjpTdGF0dXM6OlJlamVjdGVkOgotICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9i
YWxPYmplY3QsICJzdGF0dXMiX3MsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInJlamVjdGVkIl9z
KSkpOworICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5k
ZXgrKywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJzdGF0dXMiX3N0
ciwganNOb250cml2aWFsU3RyaW5nKHZtLCAicmVqZWN0ZWQiX3N0cikpKTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInJl
c3VsdCJfcywgcHJvbWlzZS0+cmVzdWx0KHZtKSkpOworICAgICAgICAgICAgYXJyYXktPnB1dERp
cmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0
eShnbG9iYWxPYmplY3QsICJyZXN1bHQiX3N0ciwgcHJvbWlzZS0+cmVzdWx0KHZtKSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTQxNjY0PiBXZWIgSW5zcGVjdG9yOiBFUzY6IEltcHJvdmVkIFN1
cHBvcnQgZm9yIFByb21pc2VzIC0gUHJvbWlzZSBSZWFjdGlvbnMKQEAgLTM1MSw3ICszNTEsNyBA
QCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAg
ICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3Qs
IG51bGxwdHIsIDEpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwotICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsr
LCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInRhcmdldEZ1bmN0aW9u
Il9zLCByZW1vdGVGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSkpOworICAgICAgICBhcnJheS0+
cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFBy
b3BlcnR5KGdsb2JhbE9iamVjdCwgInRhcmdldEZ1bmN0aW9uIl9zdHIsIHJlbW90ZUZ1bmN0aW9u
LT50YXJnZXRGdW5jdGlvbigpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWUoKSk7CiAKICAgICAgICAgcmV0dXJuIGFycmF5OwpAQCAtMzYxLDEwICszNjEsMTAg
QEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwog
ICAgICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0
LCBudWxscHRyLCAyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKLSAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgr
KywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJ0YXJnZXQiX3MsIHBy
b3h5LT50YXJnZXQoKSkpOworICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInRh
cmdldCJfc3RyLCBwcm94eS0+dGFyZ2V0KCkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBh
cnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRl
cm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgImhhbmRsZXIiX3MsIHByb3h5LT5oYW5kbGVyKCkp
KTsKKyAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywg
Y29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJoYW5kbGVyIl9zdHIsIHBy
b3h5LT5oYW5kbGVyKCkpKTsKICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgIH0KIApAQCAtMzcy
LDEzICszNzIsMTMgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQ
cm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgYXV0byB0b1N0
cmluZyA9IFsmXSAoSXRlcmF0aW9uS2luZCBraW5kKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGtp
bmQpIHsKICAgICAgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6S2V5czoKLSAgICAgICAgICAg
ICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAia2V5cyJfcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImtleXMiX3N0cik7CiAgICAgICAg
ICAgICBjYXNlIEl0ZXJhdGlvbktpbmQ6OlZhbHVlczoKLSAgICAgICAgICAgICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKHZtLCAidmFsdWVzIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAidmFsdWVzIl9zdHIpOwogICAgICAgICAgICAgY2Fz
ZSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOgotICAgICAgICAgICAgICAgIHJldHVybiBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJlbnRyaWVzIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKHZtLCAiZW50cmllcyJfc3RyKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICIiX3MpOworICAgICAgICAgICAg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIiJfc3RyKTsKICAgICAgICAgfTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChhdXRvKiBhcnJheUl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0Fy
cmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3JPYmplY3QpKSB7CkBAIC02NDksMTEgKzY0OSwxMSBA
QCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhbmNlcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogCiAgICAgSlNWYWx1ZSBwcm90b3R5cGVPckNvbnN0
cnVjdG9yID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBpZiAoIXByb3Rv
dHlwZU9yQ29uc3RydWN0b3IuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBmaXJzdCBhcmd1bWVudCBt
dXN0IGJlIGFuIG9iamVjdC4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2VzIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUg
YW4gb2JqZWN0LiJfc3RyKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChwcm90
b3R5cGVPckNvbnN0cnVjdG9yKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxQcm94eU9iamVj
dD4odm0pKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBhIFByb3h5LiJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJ
bnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIGEgUHJveHkuIl9zdHIpOwogCiAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSBvYmplY3Q7CiAKQEAgLTY3MSwyMSArNjcxLDIxIEBAIEpTVmFsdWUg
SlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGFuY2VzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGCiAgICAgcHJvdG90eXBlU2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQo
KTsKIAogICAgIGlmIChvYmplY3QtPmluaGVyaXRzPFByb3h5T2JqZWN0Pih2bSkgfHwgcHJvdG90
eXBlLmluaGVyaXRzPFByb3h5T2JqZWN0Pih2bSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxl
ZCB3aXRoIGEgUHJveHkuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYSBQ
cm94eS4iX3N0cik7CiAKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IGEgd2F5IG9mIGRpc3Rpbmd1
aXNoaW5nIGJldHdlZW4gaW50ZXJuYWwgYW5kIHVzZXItY3JlYXRlZCBvYmplY3RzLgogICAgIGlm
IChjaGVja0ZvcmJpZGRlblByb3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRo
IE9iamVjdC4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBPYmplY3QuIl9z
dHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRlblByb3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3Qg
YmUgY2FsbGVkIHdpdGggRnVuY3Rpb24uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVk
IHdpdGggRnVuY3Rpb24uIl9zdHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRlblByb3RvdHlwZShn
bG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUlu
c3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggQXJyYXkuIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5u
b3QgYmUgY2FsbGVkIHdpdGggQXJyYXkuIl9zdHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRlblBy
b3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2JqZWN0LT5tYXBQcm90b3R5cGUo
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
cXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIE1hcC4iX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2Vz
IGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBNYXAuIl9zdHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRl
blByb3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2JqZWN0LT5qc1NldFByb3Rv
dHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggU2V0LiJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0
YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIFNldC4iX3N0cik7CiAgICAgaWYgKGNoZWNrRm9y
YmlkZGVuUHJvdG90eXBlKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21p
c2VQcm90b3R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIFByb21pc2Uu
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggUHJvbWlzZS4iX3N0cik7CiAK
ICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0odm0pOwogICAgIHZtLmhlYXAuY29sbGVjdE5vdyhTeW5j
LCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwpAQCAtODU3LDcgKzg1Nyw3IEBAIEpTVmFsdWUgSlNJ
bmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SG9sZGVycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUhvbGRlcnMgZmlyc3Qg
YXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUhvbGRlcnMgZmlyc3QgYXJndW1lbnQg
bXVzdCBiZSBhbiBvYmplY3QuIl9zdHIpOwogCiAgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKaW5kZXggMjg5OGNkZmViOTllZWFh
YzkzZTI2ZWEwNjkyY2Q3MTIxZWM3ODYxMi4uYjhiMDliMGQ3ZDRhMzU0MzlhYmFmMWEyYTFjOGQy
Yzk2MzgxOGQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcApAQCAtNzgsNyArNzgsNyBAQCBKU1ZhbHVl
IEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbAogCiAgICAgSlNWYWx1ZSBzY3JpcHRWYWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzY3JpcHRWYWx1ZS5pc1N0cmluZygpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkpTSmF2YVNjcmlwdENh
bGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJl
IGEgc3RyaW5nLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcuIl9zdHIpOwogCiAgICAgU3RyaW5n
IHNjcmlwdCA9IGFzU3RyaW5nKHNjcmlwdFZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwpAQCAtMjE5LDkgKzIxOSw5
IEBAIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0eXBlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IHN3aXRjaCAoaW1wbCgpLnR5cGUoKSkgewogICAgIGNhc2UgRGVidWdnZXJDYWxsRnJhbWU6OkZ1
bmN0aW9uVHlwZToKLSAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImZ1bmN0
aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImZ1bmN0aW9u
Il9zdHIpOwogICAgIGNhc2UgRGVidWdnZXJDYWxsRnJhbWU6OlByb2dyYW1UeXBlOgotICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAicHJvZ3JhbSJfcyk7CisgICAgICAgIHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJwcm9ncmFtIl9zdHIpOwogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCmluZGV4IGMxNGVmOGEzMTJmYTJmNjM2NTc5MTFk
MzlmOWMzYjE5MmU1OThhODUuLjdmZWQyZGY4YzRjMTcwZWI1MjE0ZjBmZTRjZjhhMGZmMDVmMWU5
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJn
dW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBTY3JpcHRBcmd1bWVudHM6OmdldEZp
cnN0QXJndW1lbnRBc1N0cmluZyhTdHJpbmcmIHJlc3VsdCkgY29uc3QKIAogICAgIGF1dG8gdmFs
dWUgPSBhcmd1bWVudEF0KDApOwogICAgIGlmIChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpQcm94
eU9iamVjdCo+KGdsb2JhbE9iamVjdC0+dm0oKSwgdmFsdWUpKSB7Ci0gICAgICAgIHJlc3VsdCA9
ICJbb2JqZWN0IFByb3h5XSJfczsKKyAgICAgICAgcmVzdWx0ID0gIltvYmplY3QgUHJveHldIl9z
dHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5k
ZXggNDFhY2M4NTdjNjc2OGM5ZjZiYTk4MzBhNzFhYTAyZmE5MzQ3NmY5YS4uNjkxMjIxMDlmZDUw
YzNjMTk1ZjhlYjM1NmU4NGNiNjExNDNhMzY4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0x
NDQsNyArMTQ0LDcgQEAgc3RhdGljIGJvb2wgZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4
Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICB9CiAgICAgCiAgICAg
aWYgKHNvdXJjZVVSTC0+aXNFbXB0eSgpKQotICAgICAgICAqc291cmNlVVJMID0gInVuZGVmaW5l
ZCJfczsKKyAgICAgICAgKnNvdXJjZVVSTCA9ICJ1bmRlZmluZWQiX3N0cjsKICAgICAKICAgICBz
Y29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHAKaW5kZXggODY4NmQ2OTQxYjc4NDc5OTViMmRmZmRkNjc4YjY2ZDNiNDgxZGRiNS4uMTM0M2Iy
MWE4NzQ0ZjFhMGEzMzU3NWIzMmU4MmU0MjZkZTI3ZGY0YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApA
QCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvckFnZW50
OjpJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCi0gICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoIkluc3BlY3RvciJfcykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSW5zcGVj
dG9yIl9zdHIpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiAgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IDMwYWNhZjMzNDU4
MDUzNzRkODFkYmIwYjFjNWQ0OWZmN2FmMGE2ZTEuLjZlYmNkZTI2OTI4ZTYxZTdiOGEwMTgyOWZi
YjIwMzkxZmM1ZjRmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogSW5z
cGVjdG9yQXVkaXRBZ2VudDo6SW5zcGVjdG9yQXVkaXRBZ2VudChBZ2VudENvbnRleHQmIGNvbnRl
eHQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkF1ZGl0Il9zKQorICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJBdWRpdCJfc3RyKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihBdWRpdEJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFu
YWdlcikKICAgICAsIG1fZGVidWdnZXIoY29udGV4dC5lbnZpcm9ubWVudC5kZWJ1Z2dlcigpKQpA
QCAtNjEsNyArNjEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JB
dWRpdEFnZW50OjpzZXR1cChzdGQ6Om9wdGlvbmFsPFByb3RvY29sOgogICAgIFByb3RvY29sOjpF
cnJvclN0cmluZyBlcnJvclN0cmluZzsKIAogICAgIGlmIChoYXNBY3RpdmVBdWRpdCgpKQotICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk11c3QgY2FsbCB0ZWFyZG93biBiZWZvcmUgY2Fs
bGluZyBzZXR1cCBhZ2FpbiJfcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTXVz
dCBjYWxsIHRlYXJkb3duIGJlZm9yZSBjYWxsaW5nIHNldHVwIGFnYWluIl9zdHIpOwogCiAgICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvckV2YWwoZXJy
b3JTdHJpbmcsIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSk7CiAgICAgaWYgKGluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkKQEAgLTY5LDcgKzY5LDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yQXVkaXRBZ2VudDo6c2V0dXAoc3RkOjpvcHRpb25hbDxQcm90
b2NvbDoKIAogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGluamVjdGVk
U2NyaXB0Lmdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgZXhlY3V0aW9uIHN0YXRlIG9mIGluamVjdGVk
IHNjcmlwdCBmb3IgZ2l2ZW4gZXhlY3V0aW9uQ29udGV4dElkIl9zKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5nIGV4ZWN1dGlvbiBzdGF0ZSBvZiBpbmplY3RlZCBzY3Jp
cHQgZm9yIGdpdmVuIGV4ZWN1dGlvbkNvbnRleHRJZCJfc3RyKTsKIAogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKIApAQCAtNzcsNyArNzcsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JBdWRpdEFnZW50OjpzZXR1cChzdGQ6Om9wdGlvbmFsPFByb3Rv
Y29sOgogCiAgICAgbV9pbmplY3RlZFdlYkluc3BlY3RvckF1ZGl0VmFsdWUuc2V0KHZtLCBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpKTsKICAgICBpZiAoIW1faW5qZWN0ZWRXZWJJ
bnNwZWN0b3JBdWRpdFZhbHVlKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJs
ZSB0byBjb25zdHJ1Y3QgaW5qZWN0ZWQgV2ViSW5zcGVjdG9yQXVkaXQgb2JqZWN0LiJfcyk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGNvbnN0cnVjdCBpbmplY3Rl
ZCBXZWJJbnNwZWN0b3JBdWRpdCBvYmplY3QuIl9zdHIpOwogCiAgICAgcG9wdWxhdGVBdWRpdE9i
amVjdChnbG9iYWxPYmplY3QsIG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlKTsKIApA
QCAtOTUsNyArOTUsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcAogICAgIGF1dG8gZnVuY3Rp
b25TdHJpbmcgPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oV2ViSW5zcGVjdG9yQXVkaXQpIHsgXCJ1
c2Ugc3RyaWN0XCI7IHJldHVybiBldmFsKGAoIiwgU3RyaW5nIHsgdGVzdCB9LnJlcGxhY2UoJ2An
LCAiXFxgIiksICIpYCkoV2ViSW5zcGVjdG9yQXVkaXQpOyB9KSIpOwogCiAgICAgSW5qZWN0ZWRT
Y3JpcHQ6OkV4ZWN1dGVPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5vYmplY3RHcm91cCA9
ICJhdWRpdCJfczsKKyAgICBvcHRpb25zLm9iamVjdEdyb3VwID0gImF1ZGl0Il9zdHI7CiAgICAg
aWYgKG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlKQogICAgICAgICBvcHRpb25zLmFy
Z3MgPSB7IG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlLmdldCgpIH07CiAKQEAgLTEy
MSw3ICsxMjEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcAogUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yQXVkaXRBZ2VudDo6dGVhcmRvd24oKQogewogICAgIGlmICgh
aGFzQWN0aXZlQXVkaXQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJNdXN0IGNh
bGwgc2V0dXAgYmVmb3JlIGNhbGxpbmcgdGVhcmRvd24iX3MpOworICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIk11c3QgY2FsbCBzZXR1cCBiZWZvcmUgY2FsbGluZyB0ZWFyZG93biJfc3Ry
KTsKIAogICAgIG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlLmNsZWFyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKaW5kZXgg
YTYxODNiMGQ3MjRmOWZjZGZlNTQyZDQyZTlmMWFkNjZjNzFjMTgzNi4uOWE0OTc4Yjc4MGQyYTYw
NGNjYzU5NzZhN2U5ZDQ0ZTFhNmY3ZTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKQEAgLTI4MCwxMSArMjgwLDExIEBAIFN0cmluZyBD
YWxsRnJhbWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1lKCkKIAogICAgIHN3aXRjaCAoY29kZUJsb2Nr
LT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBFdmFsQ29kZToKLSAgICAgICAgcmV0dXJuICJldmFs
IGNvZGUiX3M7CisgICAgICAgIHJldHVybiAiZXZhbCBjb2RlIl9zdHI7CiAgICAgY2FzZSBNb2R1
bGVDb2RlOgotICAgICAgICByZXR1cm4gIm1vZHVsZSBjb2RlIl9zOworICAgICAgICByZXR1cm4g
Im1vZHVsZSBjb2RlIl9zdHI7CiAgICAgY2FzZSBHbG9iYWxDb2RlOgotICAgICAgICByZXR1cm4g
Imdsb2JhbCBjb2RlIl9zOworICAgICAgICByZXR1cm4gImdsb2JhbCBjb2RlIl9zdHI7CiAgICAg
Y2FzZSBGdW5jdGlvbkNvZGU6CiAgICAgICAgIGlmIChqc0NhbGxlZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjb2RlQmxvY2stPnZtKCksIGpzQ2FsbGVl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRv
d0NoaWNrZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0No
aWNrZW4uY3BwCmluZGV4IDc2YjRjNjU4MDlmNDUxZGY3OTYwYzkzMzlmNmYyMGVhNGVhYmMwZmMu
LjM3Zjk2ZTkyYjU2NjNiY2U1YWUxYmU4NzE0Yjk5YjU0ZGUyMzc3YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKQEAgLTQ1
LDExICs0NSwxMSBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogICAgIH0KICAgICAKICAgICBpZiAoaXNQcm9sb2d1ZSgpKSB7Ci0gICAg
ICAgIFN0cmluZyBuYW1lID0gIj8iX3M7CisgICAgICAgIFN0cmluZyBuYW1lID0gIj8iX3N0cjsK
ICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4o
Y2FsbGVlLT52bSgpLCBjYWxsZWUpKSB7CiAgICAgICAgICAgICBuYW1lID0gZnVuY3Rpb24tPm5h
bWUoY2FsbGVlLT52bSgpKTsKICAgICAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgICAgICBuYW1lID0gIj8iX3M7CisgICAgICAgICAgICAgICAgbmFtZSA9ICI/Il9zdHI7
CiAgICAgICAgIH0KIAogICAgICAgICBvdXQucHJpbnQoCkBAIC02OSwxMSArNjksMTEgQEAgdm9p
ZCBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIAog
dm9pZCBTaGFkb3dDaGlja2VuOjpGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewotICAgIFN0cmluZyBuYW1lID0gIj8iX3M7CisgICAgU3RyaW5nIG5hbWUgPSAiPyJfc3RyOwog
ICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxl
ZS0+dm0oKSwgY2FsbGVlKSkgewogICAgICAgICBuYW1lID0gZnVuY3Rpb24tPm5hbWUoY2FsbGVl
LT52bSgpKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9
ICI/Il9zOworICAgICAgICAgICAgbmFtZSA9ICI/Il9zdHI7CiAgICAgfQogCiAgICAgb3V0LnBy
aW50KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNr
VmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmNwcAppbmRleCA4OTIxYmJiMTc3OTAzODc2MDA3ZmU3ODQ0MmRlOTE4NDc5ZDA5N2IxLi41
YjI5NGVlNjc1ZTg4ZjY4MDkyZmUxOGQ3ZDQzNTM2MDkxYWFmYzcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMjg4LDEw
ICsyODgsMTAgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSgpIGNv
bnN0CiAgICAgICAgIHRyYWNlTGluZSA9IG1ha2VTdHJpbmcobV93YXNtRnVuY3Rpb25JbmRleE9y
TmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZVR5cGU6OkV2YWw6Ci0gICAgICAg
IHRyYWNlTGluZSA9ICJldmFsIGNvZGUiX3M7CisgICAgICAgIHRyYWNlTGluZSA9ICJldmFsIGNv
ZGUiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlVHlwZTo6TW9kdWxlOgotICAg
ICAgICB0cmFjZUxpbmUgPSAibW9kdWxlIGNvZGUiX3M7CisgICAgICAgIHRyYWNlTGluZSA9ICJt
b2R1bGUgY29kZSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVUeXBlOjpOYXRp
dmU6IHsKICAgICAgICAgSlNDZWxsKiBjYWxsZWUgPSB0aGlzLT5jYWxsZWUoKS5hc0NlbGwoKTsK
QEAgLTMwMyw3ICszMDMsNyBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rpb25O
YW1lKCkgY29uc3QKICAgICAgICAgdHJhY2VMaW5lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1l
KGNhbGxGcmFtZSgpLT5kZXByZWNhdGVkVk0oKSwganNDYXN0PEpTT2JqZWN0Kj4odGhpcy0+Y2Fs
bGVlKCkuYXNDZWxsKCkpKS5pbXBsKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZVR5
cGU6Okdsb2JhbDoKLSAgICAgICAgdHJhY2VMaW5lID0gImdsb2JhbCBjb2RlIl9zOworICAgICAg
ICB0cmFjZUxpbmUgPSAiZ2xvYmFsIGNvZGUiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIHJldHVybiB0cmFjZUxpbmUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogdHJhY2VMaW5l
OwpAQCAtMzI0LDEwICszMjQsMTAgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJj
ZVVSTCgpIGNvbnN0CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvZGVUeXBlOjpO
YXRpdmU6Ci0gICAgICAgIHRyYWNlTGluZSA9ICJbbmF0aXZlIGNvZGVdIl9zOworICAgICAgICB0
cmFjZUxpbmUgPSAiW25hdGl2ZSBjb2RlXSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvZGVUeXBlOjpXYXNtOgotICAgICAgICB0cmFjZUxpbmUgPSAiW3dhc20gY29kZV0iX3M7Cisg
ICAgICAgIHRyYWNlTGluZSA9ICJbd2FzbSBjb2RlXSJfc3RyOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgcmV0dXJuIHRyYWNlTGluZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB0cmFj
ZUxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZTljMGVjYzMwZWFjYzY4YzU1
OWY4YWM0NjNlMTA2MjIzMWRkZWI2YS4uNDlkOTQxZTBiNzdlMWI4YTc1MTdlNzc4MDk3NmMzMTA0
MDY0ODBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMTAzNyw3ICsxMDM3LDcg
QEAgdm9pZCBKSVQ6OmRvTWFpblRocmVhZFByZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgpCiB7CiAg
ICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1cCB0byBkYXRlIHR5cGUg
aW5mb3JtYXRpb24gd2hlbiBwZXJmb3JtaW5nIHR5cGVjaGVjayBvcHRpbWl6YXRpb25zIGZvciBv
cF9wcm9maWxlX3R5cGUuCiAgICAgaWYgKG1fdm0tPnR5cGVQcm9maWxlcigpKQotICAgICAgICBt
X3ZtLT50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoKm1fdm0sICJQcmVwYXJp
bmcgZm9yIEpJVCBjb21waWxhdGlvbi4iX3MpOworICAgICAgICBtX3ZtLT50eXBlUHJvZmlsZXJM
b2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoKm1fdm0sICJQcmVwYXJpbmcgZm9yIEpJVCBjb21waWxh
dGlvbi4iX3N0cik7CiB9CiAKIHVuc2lnbmVkIEpJVDo6ZnJhbWVSZWdpc3RlckNvdW50Rm9yKFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCBlZmM5YTBlOGJiMDJlMjI1ODExODQ2MjNkMTA2MGE4OTM1
Y2RmMmExLi41MTliOTU4ZDRjNDkxOWQyNjBjZmVhMjUxZGZhMDBkYzJjYjc3NmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTIwMiw3ICsyMDIs
NyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3Vs
dElzTm90T2JqZWN0LCB2b2lkLCAoSlNHbG9iYQogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7
CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3Vs
dCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3N0cik7CiB9CiAKIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25DYWxsQXJpdHlDaGVjaywgaW50MzJfdCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpKQpAQCAtMzUyNSw3ICszNTI1LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2csIHZvaWQsIChWTSogdm1Q
b2ludGVyKSkKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgdm0udHlwZVByb2ZpbGVy
TG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAiTG9nIEZ1bGwsIGNhbGxlZCBmcm9tIGluc2lk
ZSBiYXNlbGluZSBKSVQiX3MpOworICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9n
RW50cmllcyh2bSwgIkxvZyBGdWxsLCBjYWxsZWQgZnJvbSBpbnNpZGUgYmFzZWxpbmUgSklUIl9z
dHIpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHJvY2Vzc1NoYWRv
d0NoaWNrZW5Mb2csIHZvaWQsIChWTSogdm1Qb2ludGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggZTdkM2NlOTQyMWU1ZGMxMmUwOWJhZjAyYmU1NTA0MmFmYWQ2MDdkOC4uYjEyNjk4MzlmODJh
YTMyMDFjM2Q3ZDFkYWYzYjdkZjNiNDhiY2IxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQ5
Miw3ICs0OTIsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUih0ZXN0Q3VzdG9t
VmFsdWVTZXR0ZXIpOwogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGFjY2Vzc29yTWFrZU1hc3F1
ZXJhZGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiSXNIVE1MRERBIl9z
LCBmdW5jdGlvbkNhbGxNYXNxdWVyYWRlcikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiSXNIVE1MRERBIl9zdHIsIGZ1bmN0aW9uQ2FsbE1hc3F1
ZXJhZGVyKSk7CiB9CiAKIApAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uRGVzY3JpYmVBcnJheSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
b250cml2aWFsU3RyaW5nKHZtLCAiPG5vdCBvYmplY3Q+Il9zKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiPG5vdCBvYmplY3Q+Il9zdHIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdG9T
dHJpbmcoIjxCdXR0ZXJmbHk6ICIsIFJhd1BvaW50ZXIob2JqZWN0LT5idXR0ZXJmbHkoKSksICI7
IHB1YmxpYyBsZW5ndGg6ICIsIG9iamVjdC0+Z2V0QXJyYXlMZW5ndGgoKSwgIjsgdmVjdG9yIGxl
bmd0aDogIiwgb2JqZWN0LT5nZXRWZWN0b3JMZW5ndGgoKSwgIj4iKSkpOwogfQogCkBAIC0xNTI4
LDcgKzE1MjgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25SdW4sIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsK
ICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDb3VsZCBub3Qgb3BlbiBm
aWxlLiJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDb3VsZCBu
b3Qgb3BlbiBmaWxlLiJfc3RyKSkpOwogCiAgICAgR2xvYmFsT2JqZWN0KiByZWFsbSA9IEdsb2Jh
bE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNO
dWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKIApAQCAtMTU5MSw3ICsxNTkxLDcgQEAgc3RhdGlj
IFVSTCBjb21wdXRlRmlsZVBhdGgoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGwKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBib29sIGNhbGxlclJlbGF0aXZlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KS5nZXRTdHJpbmcoZ2xvYmFsT2JqZWN0KSA9PSAiY2FsbGVyIHJlbGF0aXZlIl9zOworICAgIGJv
b2wgY2FsbGVyUmVsYXRpdmUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmdldFN0cmluZyhnbG9i
YWxPYmplY3QpID09ICJjYWxsZXIgcmVsYXRpdmUiOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIFVSTCgpKTsKIAogICAgIFN0cmluZyBmaWxlTmFtZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKQEAgLTE2MTksNyArMTYxOSw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkxvYWQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqCiAKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlm
ICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKHBhdGguZmlsZVN5c3RlbVBhdGgoKSwg
c2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDb3VsZCBub3Qg
b3BlbiBmaWxlLiJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJD
b3VsZCBub3Qgb3BlbiBmaWxlLiJfc3RyKSkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBl
dmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFs
T2JqZWN0LCBqc2NTb3VyY2Uoc2NyaXB0LCBTb3VyY2VPcmlnaW4geyBwYXRoIH0sIHBhdGguZmls
ZVN5c3RlbVBhdGgoKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CkBAIC0xNjg5
LDcgKzE2ODksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25DaGVja1N5bnRh
eCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7
CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlw
dCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ291bGQgbm90IG9wZW4g
ZmlsZS4iX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ291bGQg
bm90IG9wZW4gZmlsZS4iX3N0cikpKTsKIAogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CiAgICAg
c3RvcFdhdGNoLnN0YXJ0KCk7CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdAogICAgICAgICBnbG9iYWwgPSBqc0Nhc3Q8SlNQcm94eSo+KGdsb2JhbCktPnRhcmdl
dCgpOwogICAgIEdsb2JhbE9iamVjdCogcmVhbG0gPSBqc0R5bmFtaWNDYXN0PEdsb2JhbE9iamVj
dCo+KHZtLCBnbG9iYWwpOwogICAgIGlmICghcmVhbG0pCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQgZ2xvYmFsIHRvIHBvaW50IHRvIGEgZ2xvYmFsIG9iamVj
dCJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJFeHBlY3RlZCBn
bG9iYWwgdG8gcG9pbnQgdG8gYSBnbG9iYWwgb2JqZWN0Il9zdHIpKSk7CiAKICAgICBOYWtlZFB0
cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBl
dmFsdWF0ZShyZWFsbSwganNjU291cmNlKHNvdXJjZUNvZGUsIGNhbGxGcmFtZS0+Y2FsbGVyU291
cmNlT3JpZ2luKHZtKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CkBAIC0yMDc5
LDcgKzIwNzksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJHbG9i
YWxPYmplY3RGb3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVub3Vn
aCBhcmd1bWVudHMiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
Tm90IGVub3VnaCBhcmd1bWVudHMiX3N0cikpKTsKICAgICBKU1ZhbHVlIGFyZyA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGFyZy5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KGFyZyktPmdsb2JhbE9iamVjdCh2bSktPmdsb2JhbFRo
aXMoKSk7CkBAIC0yMDkzLDcgKzIwOTMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVu
Y3Rpb25Eb2xsYXJJc1JlbW90ZUZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3N0cikpKTsKIAogICAgIEpTVmFs
dWUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihpc1JlbW90ZUZ1bmN0aW9uKHZtLCBhcmcpKSk7CkBAIC0yMTIwLDkgKzIx
MjAsOSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIH07CiAKICAgICBpZiAoaXNHaWdh
Y2FnZU1lbW9yeUV4aGF1c3RlZChHaWdhY2FnZTo6SlNWYWx1ZSkgfHwgaXNHaWdhY2FnZU1lbW9y
eUV4aGF1c3RlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkdpZ2Fj
YWdlIGlzIGV4aGF1c3RlZCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiR2lnYWNhZ2UgaXMgZXho
YXVzdGVkIl9zdHIpKTsKIAotICAgIFN0cmluZyB3b3JrZXJQYXRoID0gIndvcmtlciJfczsKKyAg
ICBTdHJpbmcgd29ya2VyUGF0aCA9ICJ3b3JrZXIiX3N0cjsKICAgICBpZiAoIWNhbGxGcmFtZS0+
YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSkgewogICAgICAgICB3b3JrZXJQYXRoID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIxNzEsNyArMjE3
MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2
ZUJyb2FkY2FzdCwgKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNWYWx1ZSBjYWxsYmFjayA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZt
LCBjYWxsYmFjayk7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQgY2FsbGJh
Y2siX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQg
Y2FsbGJhY2siX3N0cikpKTsKICAgICAKICAgICBSZWZQdHI8TWVzc2FnZT4gbWVzc2FnZTsKICAg
ICB7CkBAIC0yMjY5LDcgKzIyNjksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rp
b25Eb2xsYXJBZ2VudEJyb2FkY2FzdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIH0K
ICNlbmRpZgogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3Qgc3VwcG9ydGVk
IG9iamVjdCJfcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBzdXBw
b3J0ZWQgb2JqZWN0Il9zdHIpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkRvbGxhckFnZW50R2V0UmVwb3J0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikpCkBAIC0yMzk1LDExICsyMzk1LDExIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYg
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihn
bG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfcykpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfc3RyKSkpOwogICAg
IAogICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZl
cio+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWJ1ZmZlcikKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIi
X3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQgYW4g
YXJyYXkgYnVmZmVyIl9zdHIpKSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBkdW1t
eUNvbnRlbnRzOwogICAgIGJ1ZmZlci0+aW1wbCgpLT50cmFuc2ZlclRvKHZtLCBkdW1teUNvbnRl
bnRzKTsKQEAgLTI0NzksNyArMjQ3OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkVmZmVjdGZ1bDQyLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk1ha2VNYXNxdWVyYWRlciwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZUZ1bmN0aW9uVGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQodm0sIGdsb2JhbE9iamVjdCwg
MCwgIklzSFRNTEREQSJfcywgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEludGVybmFsRnVuY3Rpb246OmNyZWF0ZUZ1bmN0aW9uVGhhdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQodm0sIGdsb2JhbE9iamVjdCwgMCwgIklzSFRNTEREQSJfc3RyLCBm
dW5jdGlvbkNhbGxNYXNxdWVyYWRlcikpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQpA
QCAtMjUxNyw3ICsyNTE3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uU2V0
VGltZW91dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAvLyBGSVhN
RTogVGhpcyBtZWFucyB3ZSBjYW4ndCBwYXNzIGFueSBpbnRlcm5hbCBmdW5jdGlvbiBidXQgSSBk
b24ndCB0aGluayB0aGF0J3MgY29tbW9uIGZvciB0ZXN0aW5nLgogICAgIGF1dG8gY2FsbGJhY2sg
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CiAgICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9zdHIpOwogCiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGxvb2sgYXQgdGhlIHRpbWVvdXQgcGFyYW1ldGVyIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIHNjaGVkdWxlIHdvcmsgbGF0ZXIgQVBJLgogICAgIGF1dG8gdGlja2V0ID0gdm0u
ZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBjYWxsYmFjaywgeyB9KTsKQEAg
LTI1NDMsNyArMjU0Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkZpbmFs
aXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50LCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBm
aW5hbGl6YXRpb25SZWdpc3RyeSA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3Ry
eSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWZpbmFsaXphdGlvblJl
Z2lzdHJ5KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmlyc3QgYXJndW1lbnQgaXMgbm90IGEgZmluYWxpemF0aW9uUmVnaXN0cnkiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmly
c3QgYXJndW1lbnQgaXMgbm90IGEgZmluYWxpemF0aW9uUmVnaXN0cnkiX3N0cik7CiAKICAgICBM
b2NrZXIgbG9ja2VyIHsgZmluYWxpemF0aW9uUmVnaXN0cnktPmNlbGxMb2NrKCkgfTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5saXZl
Q291bnQobG9ja2VyKSkpOwpAQCAtMjU1Niw3ICsyNTU2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQsIChKU0dsb2JhbE9i
amVjdCoKIAogICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0ganNEeW5hbWljQ2FzdDxK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAg
IGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6
YXRpb25SZWdpc3RyeSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdp
c3RyeSJfc3RyKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBmaW5hbGl6YXRpb25SZWdpc3RyeS0+
Y2VsbExvY2soKSB9OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmluYWxp
emF0aW9uUmVnaXN0cnktPmRlYWRDb3VudChsb2NrZXIpKSk7CkBAIC0yNjE5LDcgKzI2MTksNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25DcmVhdGVCaWdJbnQzMiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0JpZ0ludDMyKHN0YXRpY19jYXN0PGludDMyX3Q+KGRpZ2l0KSkpOwogICAgICAg
ICB9CiAgICAgfQotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQg
b2YgcmFuZ2Ugb2YgQmlnSW50MzIiX3MpOworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJPdXQgb2YgcmFuZ2Ugb2YgQmlnSW50MzIiX3N0cik7CiAgICAgcmV0dXJuIHsg
fTsKIH0KICNlbmRpZgpAQCAtMjc2OCw3ICsyNzY4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzLCAoSlNHbG9iYWxPYmplY3Qq
IGcKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAo
IXZtLnNhbXBsaW5nUHJvZmlsZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmpl
Y3QsICJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIgc3RhcnRlZCJfcykpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIg
c3RhcnRlZCJfc3RyKSkpOwogCiAgICAgU3RyaW5nIGpzb25TdHJpbmcgPSB2bS5zYW1wbGluZ1By
b2ZpbGVyKCktPnN0YWNrVHJhY2VzQXNKU09OKCk7CiAgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0
ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShnbG9iYWxPYmplY3QsIGpzb25TdHJpbmcpKTsK
QEAgLTI3ODksNyArMjc4OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkFz
eW5jVGVzdFN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogICAgIEpTVmFs
dWUgbnVtYmVyT2ZBc3luY1Bhc3NlcyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KCFudW1iZXJPZkFzeW5jUGFzc2VzLmlzVUludDMyKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJl
IGEgdWludDMyIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYSB1aW50MzIiX3N0cik7CiAK
ICAgICBhc3luY1Rlc3RFeHBlY3RlZFBhc3NlcyArPSBudW1iZXJPZkFzeW5jUGFzc2VzLmFzVUlu
dDMyKCk7CiAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwpAQCAtMjgwOSw3ICsyODA5
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlN
b2RlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgCiAgICAgaWYgKCFXYXNtOjppc1N1cHBvcnRlZCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2ViQXNz
ZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgdXNlV2ViQXNzZW1i
bHkgb3B0aW9uIGlzIHNldCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJXZWJBc3NlbWJseU1lbW9yeU1vZGUgc2hvdWxkIG9ubHkgYmUg
Y2FsbGVkIGlmIHRoZSB1c2VXZWJBc3NlbWJseSBvcHRpb24gaXMgc2V0Il9zdHIpOwogCiAgICAg
aWYgKEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmdldE9iamVjdCgp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBtZW1vcnkgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1i
bHlNZW1vcnkqPih2bSwgb2JqZWN0KSkKQEAgLTI4MTgsNyArMjgxOCw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihmdW5jdGlvbldlYkFzc2VtYmx5TWVtb3J5TW9kZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KHZtLCBtYWtlU3RyaW5nKGluc3RhbmNlLT5tZW1vcnlNb2RlKCkpKSk7CiAgICAgfQogCi0gICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIldlYkFzc2VtYmx5
TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSBvciBXZWJBc3Nl
bWJseS5JbnN0YW5jZSJfcyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIldlYkFzc2VtYmx5TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFz
c2VtYmx5Lk1lbW9yeSBvciBXZWJBc3NlbWJseS5JbnN0YW5jZSJfc3RyKTsKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTMyMDIsNyArMzIwMiw3IEBAIHN0YXRpYyB2b2lk
IHJ1bldpdGhPcHRpb25zKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGluZSYg
b3B0aW9ucywgYm9vCiAgICAgICAgICAgICBzaXplX3QgY29tbWFuZExpbmVMZW5ndGggPSBzdHJs
ZW4oc2NyaXB0c1tpXS5hcmd1bWVudCk7CiAgICAgICAgICAgICBzY3JpcHRCdWZmZXIucmVzaXpl
KGNvbW1hbmRMaW5lTGVuZ3RoKTsKICAgICAgICAgICAgIHN0ZDo6Y29weShzY3JpcHRzW2ldLmFy
Z3VtZW50LCBzY3JpcHRzW2ldLmFyZ3VtZW50ICsgY29tbWFuZExpbmVMZW5ndGgsIHNjcmlwdEJ1
ZmZlci5iZWdpbigpKTsKLSAgICAgICAgICAgIGZpbGVOYW1lID0gIltDb21tYW5kIExpbmVdIl9z
OworICAgICAgICAgICAgZmlsZU5hbWUgPSAiW0NvbW1hbmQgTGluZV0iX3N0cjsKICAgICAgICAg
fQogCiAgICAgICAgIGJvb2wgaXNMYXN0RmlsZSA9IGkgPT0gc2NyaXB0cy5zaXplKCkgLSAxOwpA
QCAtMzI1NSw3ICszMjU1LDcgQEAgc3RhdGljIHZvaWQgcnVuSW50ZXJhY3RpdmUoR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVVJMIGRpcmVjdG9yeU5hbWUgPSBjdXJyZW50V29ya2lu
Z0RpcmVjdG9yeSgpOwogICAgIGlmICghZGlyZWN0b3J5TmFtZS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luKFVSTChkaXJlY3RvcnlOYW1l
LCAiLi9pbnRlcnByZXRlciJfcykpOworICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4oVVJM
KGRpcmVjdG9yeU5hbWUsICIuL2ludGVycHJldGVyIl9zdHIpKTsKICAgICAKICAgICBib29sIHNo
b3VsZFF1aXQgPSBmYWxzZTsKICAgICB3aGlsZSAoIXNob3VsZFF1aXQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGRhNjAwZWEwMGYw
YzhkNjQzYTU3ZjY2ZmI1ZjliMGUzYTM1NjgzYTguLmZjNWNkYmU1ZjAwZjA5YWNmODNmYTIxNmNk
YmViY2VhMGI0NWJjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtODk5LDcgKzg5OSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQogICAgIFJlZ2lzdGVyJiBuZXh0UmVnaXN0
ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KTsKIAogICAgIGlmICgh
aXRlcmF0b3IuaXNPYmplY3QoKSkKLSAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3MpKTsKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3N0cikpOwog
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgaXRlcmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKQEAgLTkxOSw3
ICs5MTksNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9n
ZXRfZG9uZSkKICAgICBSZWdpc3RlciYgZG9uZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKGJ5dGVjb2RlLm1fZG9uZSk7CiAKICAgICBpZiAoIWl0ZXJhdG9yUmV0dXJuLmlzT2JqZWN0
KCkpCi0gICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJ
dGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKSk7CisgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpKTsKIAogICAgIEpTVmFsdWUgcmVz
dWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0
ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2Rl
TWV0YWRhdGEpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwpAQCAtMjM0MSw3ICsyMzQx
LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludChWTSYgdm0sIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE8KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkUihieXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCk7CiAgICAgaWYgKCFpdGVyYXRvci5p
c09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMzYxLDcgKzIzNjEsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRvck5l
eHRDaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsTwogICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShuZXh0LCAiV2Ugc2hvdWxkIG5vdCBPU1IgZXhp
dCB0byBhIGNoZWNrcG9pbnQgZm9yIGZhc3QgY2FzZXMuIik7CiAKICAgICBpZiAoIWl0ZXJhdG9y
UmVzdWx0T2JqZWN0LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2Jq
ZWN0LiJfcyk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Ikl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3N0cik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
aW5kZXggMTA5MzUxZDgzNTUwNjMxMWY5ZjljNTA1MGQ3Y2RiNmQ2Y2ZlNjM2OS4uNjBkZTQ5YWE0
YzQ5MGVmZGYyZjU3NTRlMGEwNWZkMjE3OTIwZjZjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAKQEAgLTUxNCwxOSArNTE0LDE5IEBAIFN0cmluZyBMZXhlcjxUPjo6aW52
YWxpZENoYXJhY3Rlck1lc3NhZ2UoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9jdXJyZW50KSB7
CiAgICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFwwJyJf
czsKKyAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcMCciX3N0cjsKICAgICBj
YXNlIDEwOgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFxuJyJfczsKKyAg
ICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcbiciX3N0cjsKICAgICBjYXNlIDEx
OgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFx2JyJfczsKKyAgICAgICAg
cmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcdiciX3N0cjsKICAgICBjYXNlIDEzOgotICAg
ICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFxyJyJfczsKKyAgICAgICAgcmV0dXJu
ICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcciciX3N0cjsKICAgICBjYXNlIDM1OgotICAgICAgICBy
ZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnIyciX3M7CisgICAgICAgIHJldHVybiAiSW52YWxp
ZCBjaGFyYWN0ZXI6ICcjJyJfc3RyOwogICAgIGNhc2UgNjQ6Ci0gICAgICAgIHJldHVybiAiSW52
YWxpZCBjaGFyYWN0ZXI6ICdAJyJfczsKKyAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3Rl
cjogJ0AnIl9zdHI7CiAgICAgY2FzZSA5NjoKLSAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJh
Y3RlcjogJ2AnIl9zOworICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnYCciX3N0
cjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSW52YWxpZCBjaGFy
YWN0ZXIgJ1xcdSIsIGhleChtX2N1cnJlbnQsIDQsIExvd2VyY2FzZSksICdcJycpOwogICAgIH0K
QEAgLTEyMTEsNyArMTIxMSw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4g
QUxXQVlTX0lOTElORSB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSCiAgICAgICAgICAg
ICBlbHNlIGlmIChtX2N1cnJlbnQgPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICAgc2hpZnQoKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpIHx8ICFpc0FT
Q0lJSGV4RGlnaXQocGVlaygxKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSAiXFx4IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBzZXF1
ZW5jZSJfczsKKyAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiXFx4IGNh
biBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBzZXF1ZW5jZSJfc3RyOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKGF0RW5kKCkgfHwgKGlzQVNDSUlIZXhEaWdpdChtX2N1
cnJlbnQpICYmIChtX2NvZGUgKyAxID09IG1fY29kZUVuZCkpKSA/IFN0cmluZ1VudGVybWluYXRl
ZCA6IFN0cmluZ0Nhbm5vdEJlUGFyc2VkOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBUIHByZXYgPSBtX2N1cnJlbnQ7CkBAIC0xMjY1LDcgKzEyNjUsNyBAQCB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFy
c2VDb21wbGV4RXNjYQogICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBBU1NF
UlQoIWlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpKTsKIAotICAgICAgICAgICAgbV9sZXhFcnJv
ck1lc3NhZ2UgPSAiXFx4IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBz
ZXF1ZW5jZSJfczsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlxceCBjYW4gb25s
eSBiZSBmb2xsb3dlZCBieSBhIGhleCBjaGFyYWN0ZXIgc2VxdWVuY2UiX3N0cjsKICAgICAgICAg
ICAgIHJldHVybiBhdEVuZCgpID8gU3RyaW5nVW50ZXJtaW5hdGVkIDogU3RyaW5nQ2Fubm90QmVQ
YXJzZWQ7CiAgICAgICAgIH0KIApAQCAtMTI4OCw3ICsxMjg4LDcgQEAgdGVtcGxhdGUgPGJvb2wg
c2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQ29t
cGxleEVzY2EKICAgICAgICAgICAgIHJldHVybiBTdHJpbmdQYXJzZWRTdWNjZXNzZnVsbHk7CiAg
ICAgICAgIH0KIAotICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJcXHUgY2FuIG9ubHkgYmUg
Zm9sbG93ZWQgYnkgYSBVbmljb2RlIGNoYXJhY3RlciBzZXF1ZW5jZSJfczsKKyAgICAgICAgbV9s
ZXhFcnJvck1lc3NhZ2UgPSAiXFx1IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgVW5pY29kZSBj
aGFyYWN0ZXIgc2VxdWVuY2UiX3N0cjsKICAgICAgICAgcmV0dXJuIGF0RW5kKCkgPyBTdHJpbmdV
bnRlcm1pbmF0ZWQgOiBTdHJpbmdDYW5ub3RCZVBhcnNlZDsKICAgICB9CiAKQEAgLTEzMDYsNyAr
MTMwNiw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElO
RSBhdXRvIExleGVyPFQ+OjpwYXJzZUNvbXBsZXhFc2NhCiAgICAgICAgICAgICAgICAgaWYgKGNo
YXJhY3RlcjEgPT0gJzAnKQogICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwogCi0gICAgICAg
ICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVGhlIG9ubHkgdmFsaWQgbnVtZXJpYyBlc2Nh
cGUgaW4gc3RyaWN0IG1vZGUgaXMgJ1xcMCciX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJv
ck1lc3NhZ2UgPSAiVGhlIG9ubHkgdmFsaWQgbnVtZXJpYyBlc2NhcGUgaW4gc3RyaWN0IG1vZGUg
aXMgJ1xcMCciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4gYXRFbmQoKSA/IFN0cmluZ1Vu
dGVybWluYXRlZCA6IFN0cmluZ0Nhbm5vdEJlUGFyc2VkOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykKQEAgLTEzNDUsNyArMTM0NSw3IEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+
OjpwYXJzZUNvbXBsZXhFc2NhCiAgICAgICAgIHJldHVybiBTdHJpbmdQYXJzZWRTdWNjZXNzZnVs
bHk7CiAgICAgfQogCi0gICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmlu
ZyBjb25zdGFudCJfczsKKyAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3Ry
aW5nIGNvbnN0YW50Il9zdHI7CiAgICAgcmV0dXJuIFN0cmluZ1VudGVybWluYXRlZDsKIH0KIApA
QCAtMTM4Nyw3ICsxMzg3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBh
dXRvIExleGVyPFQ+OjpwYXJzZVN0cmluZ1Nsb3dDYXNlKEpTVG9rZW5EYXQKICAgICAgICAgaWYg
KFVOTElLRUxZKG1fY3VycmVudCA8IDB4RSkpIHsKICAgICAgICAgICAgIC8vIE5ldy1saW5lIG9y
IGVuZCBvZiBpbnB1dCBpcyBub3QgYWxsb3dlZAogICAgICAgICAgICAgaWYgKGF0RW5kKCkgfHwg
bV9jdXJyZW50ID09ICdccicgfHwgbV9jdXJyZW50ID09ICdcbicpIHsKLSAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiJfczsKKyAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiJfc3RyOwogICAgICAgICAgICAg
ICAgIHJldHVybiBhdEVuZCgpID8gU3RyaW5nVW50ZXJtaW5hdGVkIDogU3RyaW5nQ2Fubm90QmVQ
YXJzZWQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBBbnl0aGluZyBlbHNlIGlzIGp1
c3QgYSBub3JtYWwgY2hhcmFjdGVyCkBAIC0xNDY0LDcgKzE0NjQsNyBAQCB0eXBlbmFtZSBMZXhl
cjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVMaXRlcmFsKEpT
VG9rZW5EYXRhKgogICAgICAgICAgICAgLy8gRW5kIG9mIGlucHV0IGlzIG5vdCBhbGxvd2VkLgog
ICAgICAgICAgICAgLy8gVW5saWtlIFN0cmluZywgbGluZSB0ZXJtaW5hdG9yIGlzIGFsbG93ZWQu
CiAgICAgICAgICAgICBpZiAoYXRFbmQoKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zOworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0
cmluZ1VudGVybWluYXRlZDsKICAgICAgICAgICAgIH0KIApAQCAtMjEwMSw3ICsyMTAxLDcgQEAg
c3RhcnQ6CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgaWYgKHBhcnNlTXVsdGls
aW5lQ29tbWVudCgpKQogICAgICAgICAgICAgICAgIGdvdG8gc3RhcnQ7Ci0gICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9ICJNdWx0aWxpbmUgY29tbWVudCB3YXMgbm90IGNsb3NlZCBwcm9w
ZXJseSJfczsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk11bHRpbGluZSBjb21t
ZW50IHdhcyBub3QgY2xvc2VkIHByb3Blcmx5Il9zdHI7CiAgICAgICAgICAgICB0b2tlbiA9IFVO
VEVSTUlOQVRFRF9NVUxUSUxJTkVfQ09NTUVOVF9FUlJPUlRPSzsKICAgICAgICAgICAgIGdvdG8g
cmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAgLTIyNTUsMTMgKzIyNTUsMTMgQEAgc3RhcnQ6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoVU5MSUtFTFkoIXBhcnNl
TnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKSkpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZGVjaW1hbCBwb2ludCJfczsKKyAgICAgICAg
ICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZGVjaW1hbCBw
b2ludCJfc3RyOwogICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05V
TUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9L
OwogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQogICAgICAgICB0b2tl
biA9IERPVUJMRTsKICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1
YWwobV9jdXJyZW50LCAnZScpICYmICFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3Io
KSkpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vbi1udW1iZXIgZm91bmQg
YWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIl9zOworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3IiX3N0cjsKICAg
ICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxf
RVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKICAgICAgICAgICAg
IGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAgLTIyNzYsNyArMjI3Niw3IEBAIHN0YXJ0
OgogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChjdXJyZW50
Q29kZVBvaW50KCkpKSkgewotICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8gaWRl
bnRpZmllcnMgYWxsb3dlZCBkaXJlY3RseSBhZnRlciBudW1lcmljIGxpdGVyYWwiX3M7CisgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBpZGVudGlmaWVycyBhbGxvd2VkIGRpcmVj
dGx5IGFmdGVyIG51bWVyaWMgbGl0ZXJhbCJfc3RyOwogICAgICAgICAgICAgdG9rZW4gPSBhdEVu
ZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVN
RVJJQ19MSVRFUkFMX0VSUk9SVE9LOwogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAg
ICAgICAgfQpAQCAtMjI4Niw3ICsyMjg2LDcgQEAgc3RhcnQ6CiAgICAgICAgIHNoaWZ0KCk7CiAg
ICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ3gnKSkgewog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpKSB7Ci0g
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8gaGV4YWRlY2ltYWwgZGlnaXRz
IGFmdGVyICcweCciX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8g
aGV4YWRlY2ltYWwgZGlnaXRzIGFmdGVyICcweCciX3N0cjsKICAgICAgICAgICAgICAgICB0b2tl
biA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdv
dG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0yMzE0LDcgKzIzMTQsNyBAQCBzdGFy
dDoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFy
dChjdXJyZW50Q29kZVBvaW50KCkpKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIk5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2ltYWwgbGl0ZXJhbCBhbmQgaWRlbnRpZmll
ciJfczsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBzcGFjZSBiZXR3
ZWVuIGhleGFkZWNpbWFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiX3N0cjsKICAgICAgICAgICAg
ICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAg
ICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0yMzI1LDcgKzIzMjUs
NyBAQCBzdGFydDoKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbChtX2N1cnJlbnQsICdiJykpIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghaXNBU0NJ
SUJpbmFyeURpZ2l0KHBlZWsoMSkpKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIk5vIGJpbmFyeSBkaWdpdHMgYWZ0ZXIgJzBiJyJfczsKKyAgICAgICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9ICJObyBiaW5hcnkgZGlnaXRzIGFmdGVyICcwYiciX3N0cjsKICAg
ICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVNQkVSX0VSUk9SVE9L
OwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0y
MzUzLDcgKzIzNTMsNyBAQCBzdGFydDoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGlzSWRlbnRTdGFydChjdXJyZW50Q29kZVBvaW50KCkpKSkgewotICAgICAgICAg
ICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vIHNwYWNlIGJldHdlZW4gYmluYXJ5IGxpdGVy
YWwgYW5kIGlkZW50aWZpZXIiX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSAiTm8gc3BhY2UgYmV0d2VlbiBiaW5hcnkgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciJfc3RyOwog
ICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0JJTkFSWV9OVU1CRVJfRVJST1JU
T0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KQEAg
LTIzNjUsNyArMjM2NSw3IEBAIHN0YXJ0OgogCiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsKG1fY3VycmVudCwgJ28nKSkgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFp
c0FTQ0lJT2N0YWxEaWdpdChwZWVrKDEpKSkpIHsKLSAgICAgICAgICAgICAgICBtX2xleEVycm9y
TWVzc2FnZSA9ICJObyBvY3RhbCBkaWdpdHMgYWZ0ZXIgJzBvJyJfczsKKyAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBvY3RhbCBkaWdpdHMgYWZ0ZXIgJzBvJyJfc3RyOwog
ICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX09DVEFMX05VTUJFUl9FUlJPUlRP
SzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgfQpAQCAt
MjM5Myw3ICsyMzkzLDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChVTkxJS0VMWShpc0lkZW50U3RhcnQoY3VycmVudENvZGVQb2ludCgpKSkpIHsKLSAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBzcGFjZSBiZXR3ZWVuIG9jdGFsIGxpdGVy
YWwgYW5kIGlkZW50aWZpZXIiX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSAiTm8gc3BhY2UgYmV0d2VlbiBvY3RhbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIl9zdHI7CiAg
ICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9L
OwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0y
NDA0LDE0ICsyNDA0LDE0IEBAIHN0YXJ0OgogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElL
RUxZKG1fY3VycmVudCA9PSAnXycpKSB7Ci0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
ICJOdW1lcmljIGxpdGVyYWxzIG1heSBub3QgYmVnaW4gd2l0aCAwXyJfczsKKyAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gIk51bWVyaWMgbGl0ZXJhbHMgbWF5IG5vdCBiZWdpbiB3aXRo
IDBfIl9zdHI7CiAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9PQ1RBTF9OVU1CRVJf
RVJST1JUT0s7CiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICB9CiAKICAg
ICAgICAgcmVjb3JkOCgnMCcpOwogICAgICAgICBpZiAoVU5MSUtFTFkoc3RyaWN0TW9kZSAmJiBp
c0FTQ0lJRGlnaXQobV9jdXJyZW50KSkpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdl
ID0gIkRlY2ltYWwgaW50ZWdlciBsaXRlcmFscyB3aXRoIGEgbGVhZGluZyB6ZXJvIGFyZSBmb3Ji
aWRkZW4gaW4gc3RyaWN0IG1vZGUiX3M7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
ICJEZWNpbWFsIGludGVnZXIgbGl0ZXJhbHMgd2l0aCBhIGxlYWRpbmcgemVybyBhcmUgZm9yYmlk
ZGVuIGluIHN0cmljdCBtb2RlIl9zdHI7CiAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRF
RF9PQ1RBTF9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwog
ICAgICAgICB9CkBAIC0yNDQxLDE0ICsyNDQxLDE0IEBAIHN0YXJ0OgogICAgICAgICAgICAgICAg
IGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAm
JiAhcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBkZWNpbWFs
IHBvaW50Il9zOworICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAi
Tm9uLW51bWJlciBmb3VuZCBhZnRlciBkZWNpbWFsIHBvaW50Il9zdHI7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFM
X0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1
cnJlbnQsICdlJykgJiYgIXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSkgewot
ICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJOb24tbnVtYmVyIGZvdW5k
IGFmdGVyIGV4cG9uZW50IGluZGljYXRvciJfczsKKyAgICAgICAgICAgICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3Ii
X3N0cjsKICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVE
X05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9S
VE9LOwogICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTI0NjUsNyArMjQ2NSw3IEBAIHN0YXJ0OgogICAgICAgICB9CiAKICAgICAgICAg
aWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChjdXJyZW50Q29kZVBvaW50KCkpKSkgewotICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8gaWRlbnRpZmllcnMgYWxsb3dlZCBkaXJlY3Rs
eSBhZnRlciBudW1lcmljIGxpdGVyYWwiX3M7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9ICJObyBpZGVudGlmaWVycyBhbGxvd2VkIGRpcmVjdGx5IGFmdGVyIG51bWVyaWMgbGl0ZXJh
bCJfc3RyOwogICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVS
SUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOwog
ICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQpAQCAtMjUzMiw3ICsyNTMy
LDcgQEAgc3RhcnQ6CiAgICAgICAgIGdvdG8gaW52YWxpZENoYXJhY3RlcjsKICAgICBkZWZhdWx0
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9ICJJbnRlcm5hbCBFcnJvciJfczsKKyAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSAiSW50ZXJuYWwgRXJyb3IiX3N0cjsKICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKICAg
ICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggNTUyNmY1YzlhMTI1MDA4MTMzZTkxOGUyNmVmMzI0N2E4NWRlMjM4
OS4uZGU1ZDM1MzA0ZDk1MDEyYzM4OTkxOGE4ZDQ2MzdkNWVkZjc5ZmVmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIEV4cGVjdGVk
PHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+IFBh
cnNlcjxMZXhlclR5cGU+CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxNjMzCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIW1hdGNoKEFS
Uk9XRlVOQ1RJT04pKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiUGFyc2VyIGVycm9yIl9zKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlBhcnNlciBlcnJvciJfc3Ry
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gIW1hdGNoKE9QRU5CUkFDRSk7CkBAIC0yOTQsNyAr
Mjk0LDcgQEAgRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlSW5uZXJS
ZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT4KIAogICAgIGJvb2wgdmFsaWRFbmRpbmcg
PSBjb25zdW1lKEVPRlRPSyk7CiAgICAgaWYgKCFzb3VyY2VFbGVtZW50cyB8fCAhdmFsaWRFbmRp
bmcpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChoYXNFcnJvcigpID8gbV9lcnJvck1l
c3NhZ2UgOiAiUGFyc2VyIGVycm9yIl9zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGhhc0Vycm9yKCkgPyBtX2Vycm9yTWVzc2FnZSA6ICJQYXJzZXIgZXJyb3IiX3N0cik7CiAKICAg
ICBpZiAoIW1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSAmJiBtX3NlZW5Qcml2YXRlTmFt
ZVVzZUluTm9uUmVwYXJzaW5nRnVuY3Rpb25Nb2RlKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1l
c3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAzMzhmYzBiMmE3
MWFlZDc2MmVlYjkxMTE0NmI3ZmRhZTQxMTYwZWI3Li5mMmI0YjRlNDZiN2UzYTkyYWM0Yzg4Yzc5
NDc0NGEyZjBkOGZlMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTE2MTUsNyArMTYxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IW1lc3NhZ2UuaXNFbXB0eSgpLCAiQXR0ZW1wdGVkIHRvIHNldCB0aGUgZW1wdHkgc3RyaW5nIGFz
IGFuIGVycm9yIG1lc3NhZ2UuIExpa2VseSBjYXVzZWQgYnkgaW52YWxpZCBVVEY4IHVzZWQgd2hl
biBjcmVhdGluZyB0aGUgbWVzc2FnZS4iKTsKICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBtZXNz
YWdlOwogICAgICAgICBpZiAobV9lcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9lcnJvck1lc3NhZ2UgPSAiVW5wYXJzZWFibGUgc2NyaXB0Il9zOworICAgICAgICAgICAgbV9l
cnJvck1lc3NhZ2UgPSAiVW5wYXJzZWFibGUgc2NyaXB0Il9zdHI7CiAgICAgfQogICAgIAogICAg
IE5FVkVSX0lOTElORSB2b2lkIGxvZ0Vycm9yKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDQyNWI4
ZmFkMTM4MGU3M2M2OGU4MjE2ZGU0NWJlZDQ2ZGJhYWRlNTguLmNlYTA3ZDY1NGJjZjFjNGRkMzgy
NjU5MTg2MGEyZDJjYzc3MDY3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtKQogICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgIHNjb3BlLnJl
bGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIG1fZGVwZW5kZW5jaWVzTWFwLnNldCh2bSwg
dGhpcywgbWFwKTsKLSAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJkZXBlbmRlbmNpZXNNYXAiX3MpLCBtX2RlcGVuZGVuY2llc01hcC5nZXQoKSk7CisgICAgcHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVwZW5kZW5jaWVzTWFwIl9z
dHIpLCBtX2RlcGVuZGVuY2llc01hcC5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZp
c2l0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IDA4ODZmOTNmNjVjZjVjNjExYzUzYjRkOGI1MmQ2NDVjM2Q1MzFlYmYu
LmQxZTA4MmUzODg0ZDMwM2QyMjZiMzdjMDkxMmZkMGY2Y2VkMGU3NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC03MCw3
ICs3MCw3IEBAIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpCiAgICAgCiAgICAgdWludDMyX3QgbiA9
IGxlbmd0aC50b1VJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIGlmIChuICE9IGxlbmd0aC50b051
bWJlcihnbG9iYWxPYmplY3QpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQXJyYXkgc2l6ZSBpcyBu
b3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iX3MpKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJf
c3RyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBwcm9maWxlLCBu
LCBuZXdUYXJnZXQpKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBi
b29sIGlzQXJyYXlTbG93SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3h5
TwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYgKHByb3h5LT5pc1Jldm9rZWQoKSkg
ewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFycmF5
LmlzQXJyYXkgY2Fubm90IGJlIGNhbGxlZCBvbiBhIFByb3h5IHRoYXQgaGFzIGJlZW4gcmV2b2tl
ZCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
QXJyYXkuaXNBcnJheSBjYW5ub3QgYmUgY2FsbGVkIG9uIGEgUHJveHkgdGhhdCBoYXMgYmVlbiBy
ZXZva2VkIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIEpTT2JqZWN0KiBhcmd1bWVudCA9IHByb3h5LT50YXJnZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCAxODE1ZTE0N2I5
NjVlY2M2MmEyZWUzYmU4OGQ5NDhhMGMwYjRmMGVkLi44ZjFmNjAyYjNjYzQ4YTMxNDU4MDJmOTJm
OTc2ZjkzYTViZWQ5YWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBK
U09iamUKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGhyb3dFeGNlcHRpb24gPSB0cnVlOwog
ICAgIGlmIChMSUtFTFkoaXNKU0FycmF5KG9iaikpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWSh2
YWx1ZSA+IFVJTlQzMl9NQVgpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludmFsaWQgYXJyYXkgbGVuZ3RoIl9zKTsKKyAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcnJheSBsZW5ndGgi
X3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJh
eVByb3RvRnVuY1NwZWNpZXNDcmVhdGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3BlY2llc1Jlc3VsdC5zZWNvbmQpOwogCiAgICAg
aWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgewotICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFycmF5IHNpemUgaXMg
bm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zKTsKKyAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxs
IGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKQEAgLTY4NSw3ICs2ODUsNyBAQCBzdGF0aWMgSlNTdHJpbmcqIHRvTG9jYWxlU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIEpTVgogCiAgICAg
YXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCB0b0xvY2FsZVN0cmluZ01ldGhvZCk7CiAg
ICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvTG9jYWxlU3RyaW5nIGlzIG5v
dCBjYWxsYWJsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJ0b0xvY2FsZVN0cmluZyBpcyBub3QgY2FsbGFibGUiX3N0cik7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogCkBAIC05NzEsNyArOTcxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGFycmF5UHJvdG9GdW5jUHVzaCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGwKICAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwog
CiAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCArIGFyZ0NvdW50ID4gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG1heFNhZmVJbnRlZ2VyKCkpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInB1c2ggY2Fubm90IHByb2R1Y2UgYW4gYXJyYXkgb2YgbGVu
Z3RoIGxhcmdlciB0aGFuICgyICoqIDUzKSAtIDEiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicHVzaCBjYW5ub3QgcHJvZHVjZSBhbiBh
cnJheSBvZiBsZW5ndGggbGFyZ2VyIHRoYW4gKDIgKiogNTMpIC0gMSJfc3RyKTsKIAogICAgIGZv
ciAodW5zaWduZWQgbiA9IDA7IG4gPCBhcmdDb3VudDsgbisrKSB7CiAgICAgICAgIHRoaXNPYmot
PnB1dEJ5SW5kZXhJbmxpbmUoZ2xvYmFsT2JqZWN0LCBsZW5ndGggKyBuLCBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsKQEAgLTEyMjQsNyArMTIyNCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NwbGljZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhCiAgICAgfQogICAgIHVuc2lnbmVkIGl0ZW1Db3VudCA9IHN0ZDo6bWF4
PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgLSAyLCAwKTsKICAgICBpZiAoVU5MSUtF
TFkobGVuZ3RoIC0gYWN0dWFsRGVsZXRlQ291bnQgKyBpdGVtQ291bnQgPiBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obWF4U2FmZUludGVnZXIoKSkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3BsaWNlIGNhbm5vdCBwcm9kdWNlIGFuIGFycmF5
IG9mIGxlbmd0aCBsYXJnZXIgdGhhbiAoMiAqKiA1MykgLSAxIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwbGljZSBjYW5ub3QgcHJv
ZHVjZSBhbiBhcnJheSBvZiBsZW5ndGggbGFyZ2VyIHRoYW4gKDIgKiogNTMpIC0gMSJfc3RyKTsK
IAogICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNp
ZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXkoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqLCBh
Y3R1YWxEZWxldGVDb3VudCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlv
bigpID09IChzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4
Y2VwdGlvbikpOwpAQCAtMTI5NCw3ICsxMjk0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGFycmF5UHJvdG9GdW5jVW5TaGlmdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMK
ICAgICB1bnNpZ25lZCBuckFyZ3MgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBp
ZiAobnJBcmdzKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShsZW5ndGggKyBuckFyZ3MgPiBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obWF4U2FmZUludGVnZXIoKSkpKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVuc2hpZnQgY2Fubm90IHBy
b2R1Y2UgYW4gYXJyYXkgb2YgbGVuZ3RoIGxhcmdlciB0aGFuICgyICoqIDUzKSAtIDEiX3MpOwor
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InVuc2hpZnQgY2Fubm90IHByb2R1Y2UgYW4gYXJyYXkgb2YgbGVuZ3RoIGxhcmdlciB0aGFuICgy
ICoqIDUzKSAtIDEiX3N0cik7CiAgICAgICAgIHVuc2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZv
clNoaWZ0PihnbG9iYWxPYmplY3QsIHRoaXNPYmosIDAsIDAsIG5yQXJncywgbGVuZ3RoKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZjdmYWM1OGJjNDk4YmUwY2QyY2E0NGQ1ZTNmYTJi
ZDA2MTFjZjYwOS4uYzEwNmE2NjBjMjA4ZmY5M2ViY2E2Zjg5YWMxYzU2MDY5MGI2ODZhNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAKIHZvaWQgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMSwgIkFzeW5jRnVuY3Rpb24iX3MsIFByb3BlcnR5QWRkaXRpb25Nb2Rl
OjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sIDEsICJBc3luY0Z1bmN0aW9uIl9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0
U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDEyYzlhYmU0NTc2YzllYjllM2FiNDdiODgyYjJkYjY2YzZlMjFkNzUuLmFlMDQw
NDVmYWRmODJkODM2OTM4ZDFmZTkwNTgxNTc0MmI4NGUyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtNTgsNyArNTgsNyBAQCBBc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0s
IFN0cgogCiB2b2lkIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsICJBc3luY0dlbmVyYXRvckZ1bmN0
aW9uIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiQXN5bmNHZW5lcmF0b3JGdW5jdGlv
biJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIHByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3Bw
CmluZGV4IDllZTQ1ZGY0NzNhNDkxNTc1ZDk1NWJjZjc5OTBlZmQwNWI4MGFkODYuLjcxYzA3MDg0
NTE0N2MwMTI0YjgwMjY0YjMwZmI0YWNjZWFjMmQyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgc3Rh
dGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICB9CiAKICAgICBpZiAoYWNjZXNzSW5kZXggPj0gdHlw
ZWRBcnJheVZpZXctPmxlbmd0aCgpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQWNjZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBhY2Nl
c3MuIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJB
Y2Nlc3MgaW5kZXggb3V0IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3N0cik7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KICAgICAKQEAgLTE0NSw3ICsxNDUsNyBAQCBpbmxpbmUgSlNB
cnJheUJ1ZmZlclZpZXcqIHZhbGlkYXRlSW50ZWdlclR5cGVkQXJyYXkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgICAgICBjYXNlIEJpZ0ludDY0QXJyYXlUeXBlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVHlwZWQgYXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBJbnQz
MkFycmF5IG9yIEJpZ0ludDY0QXJyYXkuIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUeXBlZCBhcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIElu
dDMyQXJyYXkgb3IgQmlnSW50NjRBcnJheS4iX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTE2MCw3ICsxNjAsNyBAQCBpbmxpbmUgSlNB
cnJheUJ1ZmZlclZpZXcqIHZhbGlkYXRlSW50ZWdlclR5cGVkQXJyYXkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgICAgICBjYXNlIEJpZ1VpbnQ2NEFycmF5VHlwZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkIGFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gSW50
OEFycmF5LCBJbnQxNkFycmF5LCBJbnQzMkFycmF5LCBVaW50OEFycmF5LCBVaW50MTZBcnJheSwg
VWludDMyQXJyYXksIEJpZ0ludDY0QXJyYXksIG9yIEJpZ1VpbnQ2NEFycmF5LiJfcyk7CisgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVHlwZWQgYXJyYXkg
YXJndW1lbnQgbXVzdCBiZSBhbiBJbnQ4QXJyYXksIEludDE2QXJyYXksIEludDMyQXJyYXksIFVp
bnQ4QXJyYXksIFVpbnQxNkFycmF5LCBVaW50MzJBcnJheSwgQmlnSW50NjRBcnJheSwgb3IgQmln
VWludDY0QXJyYXkuIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTQ0Miw3ICs0NDIsNyBAQCBKU1ZhbHVlIGF0b21pY3NXYWl0SW1wbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0FycmF5VHlwZSogdHlwZWRBcnJheSwgdQogICAgICAg
ICB0aW1lb3V0ID0gc3RkOjptYXgoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyh0aW1lb3V0SW5N
aWxsaXNlY29uZHMpLCAwX3MpOwogCiAgICAgaWYgKCF2bS5tX3R5cGVkQXJyYXlDb250cm9sbGVy
LT5pc0F0b21pY3NXYWl0QWxsb3dlZE9uQ3VycmVudFRocmVhZCgpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBdG9taWNzLndhaXQgY2Fubm90IGJlIGNh
bGxlZCBmcm9tIHRoZSBjdXJyZW50IHRocmVhZC4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQXRvbWljcy53YWl0IGNhbm5vdCBiZSBjYWxsZWQgZnJv
bSB0aGUgY3VycmVudCB0aHJlYWQuIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
IApAQCAtNDc1LDcgKzQ3NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhdG9taWNzRnVu
Y1dhaXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghdHlwZWRBcnJheVZpZXctPmlz
U2hhcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC9ub3RpZnkgbXVzdCB3cmFwIGEgU2hhcmVkQXJy
YXlCdWZmZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L25vdGlmeSBtdXN0IHdyYXAgYSBTaGFy
ZWRBcnJheUJ1ZmZlci4iX3N0cik7CiAKICAgICB1bnNpZ25lZCBhY2Nlc3NJbmRleCA9IHZhbGlk
YXRlQXRvbWljQWNjZXNzKGdsb2JhbE9iamVjdCwgdm0sIHR5cGVkQXJyYXlWaWV3LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IDViODVkOWIxYjc1NDVmNjRmZjVhMmJmYWExY2U4ZjU1MDY4MDdlOWQuLjdmYjE4
NGQxODdlNWJiYzhiZjNiZGFlZjI4ZWZiNGU3YjY4MGE4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTY0LDcgKzY0
LDcgQEAgQmlnSW50Q29uc3RydWN0b3I6OkJpZ0ludENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAKIHZvaWQgQmlnSW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDEsICJCaWdJbnQiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IDEsICJCaWdJbnQiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
YmlnSW50UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CkBAIC05
Miw3ICs5Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsQmlnSW50Q29uc3RydWN0
b3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgaWYgKHByaW1pdGl2ZS5p
c0RvdWJsZSgpKSB7CiAgICAgICAgIGRvdWJsZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3VibGUo
KTsKICAgICAgICAgaWYgKCFpc0ludGVnZXIobnVtYmVyKSkKLSAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsICJOb3QgYW4gaW50ZWdlciJfcykpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
Ik5vdCBhbiBpbnRlZ2VyIl9zdHIpKTsKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJbnQzMihnbG9i
YWxPYmplY3QsIHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKaW5kZXggOTUyMjA5
ZDM3MTY1NWM2MDk4ZGI2YmVlN2I1YjNlNzU2ZjZmOWJkZi4uOTgyZWM0MGJmYjBhMmExMGNmMWMz
OWFlMjNlZThjZTUxYjE5MDliMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiJ3RoaXMnIHZhbHVlIG11c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50T2Jq
ZWN0Il9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3RoaXMn
IHZhbHVlIG11c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50T2JqZWN0Il9zdHIpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCAxZWVlZTJjYjllNDZjNDRmMTljOGQ0ZjAyYjY1MTA3YjMz
ZDRhNDE3Li5hNDk5MDM1NTQzM2JlYTI1NTZlOTM5YTQ0YzE3YzEwYWIzZTUxMGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTM3Niw3ICszNzYsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2No
ZWNrX3RkeikKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDaGVj
a1Rkej4oKTsKICAgICBpZiAoYnl0ZWNvZGUubV90YXJnZXRWaXJ0dWFsUmVnaXN0ZXIgPT0gY29k
ZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSkKLSAgICAgICAgVEhST1coY3JlYXRlUmVmZXJlbmNlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29u
c3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3Qu
Il9zKSk7CisgICAgICAgIFRIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2JhbE9iamVjdCwg
IidzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBh
Y2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0LiJfc3RyKSk7CiAgICAgZWxz
ZQogICAgICAgICBUSFJPVyhjcmVhdGVURFpFcnJvcihnbG9iYWxPYmplY3QpKTsKIH0KQEAgLTEw
ODcsNyArMTA4Nyw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW51
bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KQogSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKQogewogICAgIEJFR0lOKCk7Ci0gICAgdm0u
dHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAiTExJbnQgbG9nIGZ1bGwu
Il9zKTsKKyAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJM
TEludCBsb2cgZnVsbC4iX3N0cik7CiAgICAgRU5EKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5jcHAKaW5kZXggMTEzOTllYjA5YjJiY2M4
NTljN2VkMzZhOWNlZTRkMjMzYzljZDZkZC4uZThlMDZiMTExYjNlZmY3ZjRlMmRlZTkwODU3N2Nl
N2UzZGQ5ZjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29s
ZUNsaWVudC5jcHAKQEAgLTYzLDUyICs2Myw1MiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNZXNzYWdl
UHJlZml4KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZQog
ICAgICAgICAvLyBEZWZhdWx0LCBubyBuZWVkIHRvIGJlIG1vcmUgc3BlY2lmaWMuCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6WE1MOgotICAgICAgICBzb3VyY2VTdHJp
bmcgPSAiWE1MIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiWE1MIl9zdHI7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6SlM6Ci0gICAgICAgIHNvdXJjZVN0cmlu
ZyA9ICJKUyJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIkpTIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TmV0d29yazoKLSAgICAgICAgc291cmNlU3Ry
aW5nID0gIk5FVFdPUksiX3M7CisgICAgICAgIHNvdXJjZVN0cmluZyA9ICJORVRXT1JLIl9zdHI7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6U3RvcmFnZToKLSAgICAg
ICAgc291cmNlU3RyaW5nID0gIlNUT1JBR0UiX3M7CisgICAgICAgIHNvdXJjZVN0cmluZyA9ICJT
VE9SQUdFIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6QXBw
Q2FjaGU6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJBUFBDQUNIRSJfczsKKyAgICAgICAgc291
cmNlU3RyaW5nID0gIkFQUENBQ0hFIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVz
c2FnZVNvdXJjZTo6UmVuZGVyaW5nOgotICAgICAgICBzb3VyY2VTdHJpbmcgPSAiUkVOREVSSU5H
Il9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiUkVOREVSSU5HIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6Q1NTOgotICAgICAgICBzb3VyY2VTdHJpbmcg
PSAiQ1NTIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiQ1NTIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHk6Ci0gICAgICAgIHNvdXJjZVN0
cmluZyA9ICJTRUNVUklUWSJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIlNFQ1VSSVRZIl9z
dHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6Q29udGVudEJsb2Nr
ZXI6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJDT05URU5UQkxPQ0tFUiJfczsKKyAgICAgICAg
c291cmNlU3RyaW5nID0gIkNPTlRFTlRCTE9DS0VSIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTWVzc2FnZVNvdXJjZTo6TWVkaWE6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJNRURJ
QSJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIk1FRElBIl9zdHI7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TWVkaWFTb3VyY2U6Ci0gICAgICAgIHNvdXJjZVN0
cmluZyA9ICJNRURJQVNPVVJDRSJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIk1FRElBU09V
UkNFIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6V2ViUlRD
OgotICAgICAgICBzb3VyY2VTdHJpbmcgPSAiV0VCUlRDIl9zOworICAgICAgICBzb3VyY2VTdHJp
bmcgPSAiV0VCUlRDIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJj
ZTo6SVRQRGVidWc6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJJVFBERUJVRyJfczsKKyAgICAg
ICAgc291cmNlU3RyaW5nID0gIklUUERFQlVHIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Ci0gICAgICAgIHNvdXJj
ZVN0cmluZyA9ICJQUklWQVRFQ0xJQ0tNRUFTVVJFTUVOVCJfczsKKyAgICAgICAgc291cmNlU3Ry
aW5nID0gIlBSSVZBVEVDTElDS01FQVNVUkVNRU5UIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTWVzc2FnZVNvdXJjZTo6UGF5bWVudFJlcXVlc3Q6Ci0gICAgICAgIHNvdXJjZVN0cmlu
ZyA9ICJQQVlNRU5UUkVRVUVTVCJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIlBBWU1FTlRS
RVFVRVNUIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6T3Ro
ZXI6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJPVEhFUiJfczsKKyAgICAgICAgc291cmNlU3Ry
aW5nID0gIk9USEVSIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTE4LDQzICsx
MTgsNDMgQEAgc3RhdGljIHZvaWQgYXBwZW5kTWVzc2FnZVByZWZpeChTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWUKICAgICAgICAgLy8gRGVmYXVsdCwgbm8g
bmVlZCB0byBiZSBtb3JlIHNwZWNpZmljLgogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpDbGVhcjoKLSAgICAgICAgdHlwZVN0cmluZyA9ICJDTEVBUiJfczsKKyAgICAgICAg
dHlwZVN0cmluZyA9ICJDTEVBUiJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpEaXI6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiRElSIl9zOworICAgICAgICB0eXBl
U3RyaW5nID0gIkRJUiJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpEaXJYTUw6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiRElSWE1MIl9zOworICAgICAgICB0eXBl
U3RyaW5nID0gIkRJUlhNTCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpUYWJsZToKLSAgICAgICAgdHlwZVN0cmluZyA9ICJUQUJMRSJfczsKKyAgICAgICAgdHlw
ZVN0cmluZyA9ICJUQUJMRSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpUcmFjZToKLSAgICAgICAgdHlwZVN0cmluZyA9ICJUUkFDRSJfczsKKyAgICAgICAgdHlw
ZVN0cmluZyA9ICJUUkFDRSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpTdGFydEdyb3VwOgotICAgICAgICB0eXBlU3RyaW5nID0gIlNUQVJUR1JPVVAiX3M7Cisg
ICAgICAgIHR5cGVTdHJpbmcgPSAiU1RBUlRHUk9VUCJfc3RyOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpTdGFydEdyb3VwQ29sbGFwc2VkOgotICAgICAgICB0eXBlU3Ry
aW5nID0gIlNUQVJUR1JPVVBDT0xMQVBTRUQiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiU1RB
UlRHUk9VUENPTExBUFNFRCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpFbmRHcm91cDoKLSAgICAgICAgdHlwZVN0cmluZyA9ICJFTkRHUk9VUCJfczsKKyAgICAg
ICAgdHlwZVN0cmluZyA9ICJFTkRHUk9VUCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpBc3NlcnQ6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiQVNTRVJUIl9zOwor
ICAgICAgICB0eXBlU3RyaW5nID0gIkFTU0VSVCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpUaW1pbmc6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiVElNSU5HIl9z
OworICAgICAgICB0eXBlU3RyaW5nID0gIlRJTUlORyJfc3RyOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlOgotICAgICAgICB0eXBlU3RyaW5nID0gIlBST0ZJ
TEUiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiUFJPRklMRSJfc3RyOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kOgotICAgICAgICB0eXBlU3RyaW5n
ID0gIlBST0ZJTEVFTkQiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiUFJPRklMRUVORCJfc3Ry
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpJbWFnZToKLSAgICAgICAg
dHlwZVN0cmluZyA9ICJJTUFHRSJfczsKKyAgICAgICAgdHlwZVN0cmluZyA9ICJJTUFHRSJfc3Ry
OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE2MywxOSArMTYzLDE5IEBAIHN0YXRpYyB2
b2lkIGFwcGVuZE1lc3NhZ2VQcmVmaXgoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lCiAgICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkxvZzoKICAgICAgICAgLy8g
RGVmYXVsdCwgbm8gbmVlZCB0byBiZSBtb3JlIHNwZWNpZmljLgogICAgICAgICBpZiAodHlwZSA9
PSBNZXNzYWdlVHlwZTo6TG9nKQotICAgICAgICAgICAgbGV2ZWxTdHJpbmcgPSAiTE9HIl9zOwor
ICAgICAgICAgICAgbGV2ZWxTdHJpbmcgPSAiTE9HIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTWVzc2FnZUxldmVsOjpEZWJ1ZzoKLSAgICAgICAgbGV2ZWxTdHJpbmcgPSAiREVCVUci
X3M7CisgICAgICAgIGxldmVsU3RyaW5nID0gIkRFQlVHIl9zdHI7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTWVzc2FnZUxldmVsOjpJbmZvOgotICAgICAgICBsZXZlbFN0cmluZyA9ICJJTkZP
Il9zOworICAgICAgICBsZXZlbFN0cmluZyA9ICJJTkZPIl9zdHI7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTWVzc2FnZUxldmVsOjpXYXJuaW5nOgotICAgICAgICBsZXZlbFN0cmluZyA9ICJX
QVJOIl9zOworICAgICAgICBsZXZlbFN0cmluZyA9ICJXQVJOIl9zdHI7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTWVzc2FnZUxldmVsOjpFcnJvcjoKLSAgICAgICAgbGV2ZWxTdHJpbmcgPSAi
RVJST1IiX3M7CisgICAgICAgIGxldmVsU3RyaW5nID0gIkVSUk9SIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29uc29sZUNsaWVudDo6cHJp
bnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
CiAgICAgICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGNhbGxGcmFtZSA9IGNhbGxTdGFj
ay0+YXQoaSk7CiAgICAgICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1
bmN0aW9uTmFtZSgpOwogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lID0gIih1bmtub3duKSJfczsKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbk5hbWUgPSAiKHVua25vd24pIl9zdHI7CiAKICAgICAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgY2FsbEZyYW1lQnVpbGRlcjsKICAgICAgICAgICAgIGNhbGxGcmFtZUJ1aWxkZXIu
YXBwZW5kKGksICI6ICIsIGZ1bmN0aW9uTmFtZSwgJygnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAKaW5kZXggMGRkZTk4NzcyNzY2NTU5ODQ2
OTY0NWY0Mzk2YzIzMmM1NjZlNDNhMS4uZWZhNzI5MmYzODUxMjFjY2FiN2JlMTNiYTk3Njg4N2Rh
ZjBjMjQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29s
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9i
amVjdC5jcHAKQEAgLTM2LDExICszNiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBTdHJp
bmcgdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPCAxKQotICAgICAgICByZXR1cm4gImRlZmF1bHQiX3M7CisgICAgICAgIHJldHVybiAi
ZGVmYXVsdCJfc3RyOwogCiAgICAgYXV0byB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiAiZGVmYXVsdCJf
czsKKyAgICAgICAgcmV0dXJuICJkZWZhdWx0Il9zdHI7CiAKICAgICByZXR1cm4gdmFsdWUudG9X
VEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggODU0NWE1NTlhNzMyOGI1NTM3ZGI4MTI4M2M5
OGE2MzlkNmM0YTgzYi4uZWYwY2M1OTE0NzQ2ZjdmMjlkYzkxZDE2ZWYwOWU0NDQ4NTU5MjkyMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAK
QEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0ZURhdGVJbnN0
YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbQogICAgICAgICA/IHRo
aXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWNoZSkKICAgICAgICAgOiB0aGlzRGF0
ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FjaGUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRp
bWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZt
LCBTdHJpbmcoIkludmFsaWQgRGF0ZSJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJJbnZhbGlkIERhdGUiX3N0cikpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIGZvcm1hdERhdGVU
aW1lKCpncmVnb3JpYW5EYXRlVGltZSwgZm9ybWF0LCBhc1VUQ1ZhcmlhbnQpKSk7CiB9CkBAIC0y
NzMsMTYgKzI3MywxNiBAQCB2b2lkIERhdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIAotICAgIElkZW50aWZp
ZXIgdG9VVENTdHJpbmdOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRvVVRDU3Ry
aW5nIl9zKTsKKyAgICBJZGVudGlmaWVyIHRvVVRDU3RyaW5nTmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0b1VUQ1N0cmluZyJfc3RyKTsKICAgICBKU0Z1bmN0aW9uKiB0b1VUQ1N0
cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHRv
VVRDU3RyaW5nTmFtZS5zdHJpbmcoKSwgZGF0ZVByb3RvRnVuY1RvVVRDU3RyaW5nKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdG9VVENTdHJpbmdOYW1lLCB0b1VUQ1N0cmlu
Z0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0b0dNVFN0cmluZyJfcyksIHRvVVRDU3RyaW5nRnVuY3Rpb24sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRv
R01UU3RyaW5nIl9zdHIpLCB0b1VUQ1N0cmluZ0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAgICBKU0Z1bmN0aW9uKiB0b1By
aW1pdGl2ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEs
ICJbU3ltYm9sLnRvUHJpbWl0aXZlXSJfcywgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9s
LCBOb0ludHJpbnNpYyk7CisgICAgSlNGdW5jdGlvbiogdG9QcmltaXRpdmVGdW5jdGlvbiA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAiW1N5bWJvbC50b1ByaW1pdGl2
ZV0iX3N0ciwgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sLCBOb0ludHJpbnNpYyk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvUHJp
bWl0aXZlU3ltYm9sLCB0b1ByaW1pdGl2ZUZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCiAgICAgaWYgKE9wdGlvbnM6
OnVzZVRlbXBvcmFsKCkpIHsKLSAgICAgICAgSWRlbnRpZmllciB0b1RlbXBvcmFsSW5zdGFudE5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidG9UZW1wb3JhbEluc3RhbnQiX3MpOwor
ICAgICAgICBJZGVudGlmaWVyIHRvVGVtcG9yYWxJbnN0YW50TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0b1RlbXBvcmFsSW5zdGFudCJfc3RyKTsKICAgICAgICAgSlNGdW5jdGlv
biogdG9UZW1wb3JhbEluc3RhbnRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCAwLCB0b1RlbXBvcmFsSW5zdGFudE5hbWUuc3RyaW5nKCksIGRhdGVQcm90b0Z1
bmNUb1RlbXBvcmFsSW5zdGFudCk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB0b1RlbXBvcmFsSW5zdGFudE5hbWUsIHRvVGVtcG9yYWxJbnN0YW50RnVuY3Rpb24sIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9
CkBAIC0zMTQsMTEgKzMxNCwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3Rv
RnVuY1RvSVNPU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogCiAgICAgSW50
ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHRoaXNEYXRlT2JqLT5zdHJ1Y3R1cmVJRCgpKTsKICAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBEYXRlIl9zKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsICJJbnZhbGlkIERhdGUiX3N0cikpOwogCiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRp
bWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRD
KHZtLmRhdGVDYWNoZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZygiSW52YWxp
ZCBEYXRlIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIkludmFsaWQgRGF0ZSJfc3RyKSk7CiAgICAgLy8gTWF4aW11bSBhbW91bnQg
b2Ygc3BhY2Ugd2UgbmVlZCBpbiBidWZmZXI6IDcgKG1heC4gZGlnaXRzIGluIHllYXIpICsgMiAq
IDUgKDIgY2hhcmFjdGVycyBlYWNoIGZvciBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29u
ZCkgKyA0ICguICsgMyBkaWdpdHMgZm9yIG1pbGxpc2Vjb25kcykKICAgICAvLyA2IGZvciBmb3Jt
YXR0aW5nIGFuZCBvbmUgZm9yIG51bGwgdGVybWluYXRpb24gPSAyOC4gV2UgYWRkIG9uZSBleHRy
YSBjaGFyYWN0ZXIgdG8gYWxsb3cgdXMgdG8gZm9yY2UgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBj
aGFyIGJ1ZmZlclsyOF07CkBAIC05MTEsNyArOTExLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGRhdGVQcm90b0Z1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWwKIAogICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgdG9JU09WYWx1ZSk7CiAg
ICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b0lTT1N0cmluZyBp
cyBub3QgYSBmdW5jdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiJfc3RyKTsK
IAogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHRvSVNP
VmFsdWUpLCBjYWxsRGF0YSwgb2JqZWN0LCAqdm0uZW1wdHlMaXN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTkyOSw3ICs5MjksNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY1RvVGVtcG9yYWxJbnN0YW50LCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbAogCiAgICAgZG91YmxlIGVwb2NoTWlsbGlzZWNvbmRzID0g
dGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKCFpc0ludGVnZXIoZXBvY2hN
aWxsaXNlY29uZHMpKSAKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgaW50ZWdlciBu
dW1iZXIgb2YgRXBvY2ggTWlsbHNlY29uZHMiX3MpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
IkludmFsaWQgaW50ZWdlciBudW1iZXIgb2YgRXBvY2ggTWlsbHNlY29uZHMiX3N0cikpOwogCiAg
ICAgQVNTRVJUKGVwb2NoTWlsbGlzZWNvbmRzID49IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRf
dD46Om1pbigpICYmIGVwb2NoTWlsbGlzZWNvbmRzIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
NjRfdD46Om1heCgpKTsKICAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lID0gSVNPODYw
MTo6RXhhY3RUaW1lOjpmcm9tRXBvY2hNaWxsaXNlY29uZHMoZXBvY2hNaWxsaXNlY29uZHMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IGY2MzhiNjZkZWFlMDEw
ZmRmYjE1Y2IzMDJlZTliNDk0MDUzOWMwMTYuLjAzOTFjYTI0MWExY2Q3MTI2Nzk1M2E3NTA4MTJm
YjBlNjFmMGM5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAg
LTcwLDcgKzcwLDcgQEAgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEUKIAogSlNPYmplY3QqIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVy
cm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyKQogewotICAgIHJldHVybiBjcmVh
dGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3MsIGFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfc3RyLCBhcHBlbmRlciwgVHlwZU5vdGhpbmcpOwog
fQogCiBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlciBh
cHBlbmRlcikKQEAgLTMyOSwxMiArMzI5LDEyIEBAIEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAK
IEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewotICAgIHJldHVybiBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJTeW50YXgg
ZXJyb3IiX3MsIG51bGxwdHIpOworICAgIHJldHVybiBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxP
YmplY3QsICJTeW50YXggZXJyb3IiX3N0ciwgbnVsbHB0cik7CiB9CiAKIEpTT2JqZWN0KiBjcmVh
dGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4g
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIlR5cGUgZXJyb3IiX3MpOworICAgIHJldHVy
biBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiVHlwZSBlcnJvciJfc3RyKTsKIH0KIAog
SlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0zNTQsNyArMzU0LDcgQEAgSlNPYmplY3QqIGNyZWF0
ZVVSSUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIAogSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKLSAgICBhdXRvKiBlcnJvciA9IGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiT3V0IG9mIG1lbW9yeSJfcywgbnVsbHB0cik7CisgICAgYXV0byogZXJyb3Ig
PSBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk91dCBvZiBtZW1vcnkiX3N0ciwgbnVs
bHB0cik7CiAgICAganNDYXN0PEVycm9ySW5zdGFuY2UqPihlcnJvciktPnNldE91dE9mTWVtb3J5
RXJyb3IoKTsKICAgICByZXR1cm4gZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuaAppbmRleCA1NGIxNDk0NThmZjIyODcwZmRkYjgzMWZlYTk5Njc0ZDIyZDFhNTIyLi4w
ZjEyMDYyNjQ4NzUzYmIzNDBiZWQzM2Q4ZWRjOWUxNDkyMjhhNDM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTkzLDcgKzkzLDggQEAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNWYWx1ZSB0aHJvd0RPTUF0dHJpYnV0ZVNldHRlclR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCos
IFRocm8KIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVk
SlNWYWx1ZS4KIGlubGluZSB2b2lkIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgRXhjZXB0aW9uKiBleGNlcHRpb24pIHsgdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXhjZXB0aW9uKTsgfQogaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJv
d1Njb3BlJiBzY29wZSwgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yKSk7IH0KLWlubGluZSBFbmNv
ZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhy
b3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9y
KGdsb2JhbE9iamVjdCwgZXJyb3JNZXNzYWdlKSkpOyB9CitpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
dGhyb3dWTUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNj
b3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBlcnJvck1lc3NhZ2UpKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBlcnJv
ck1lc3NhZ2UpKSk7IH0KIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOyB9CiBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkg
eyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGVycm9yTWVzc2FnZSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCA3MzhlN2Y0
ZTEyN2UxN2RlZjJmNDU5Yzk4YmEwYTc3MjUwNTY1OThiLi43Y2JkZTg1Njg4ZmQzZDI4NTZiZmRj
MjM2N2QxZmIzZTFhZTVmMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIFN0cmluZyBFcnJvckluc3Rh
bmNlOjpzYW5pdGl6ZWROYW1lU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghbmFtZVZhbHVl
IHx8ICFuYW1lVmFsdWUuaXNQcmltaXRpdmUoKSkKLSAgICAgICAgcmV0dXJuICJFcnJvciJfczsK
KyAgICAgICAgcmV0dXJuICJFcnJvciJfc3RyOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgbmFtZVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKaW5kZXggZWY0MzFm
Mzk1ZTM0MjVhMjYzNTRlOTMyMGFjYzRmOTI1MmIzODI5Yy4uMjBlMTJjNDhlNTkyY2FkNzE2MzE5
NzY3MjUyM2M1YWE1Y2NmOGIyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcApAQCAtOTQsNyArOTQsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oZXJyb3JQcm90b0Z1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgLy8gNC4gSWYgbmFtZSBpcyB1bmRlZmluZWQsIHRoZW4gbGV0IG5hbWUgYmUg
IkVycm9yIjsgZWxzZSBsZXQgbmFtZSBiZSBUb1N0cmluZyhuYW1lKS4KICAgICBTdHJpbmcgbmFt
ZVN0cmluZzsKICAgICBpZiAobmFtZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBuYW1lU3RyaW5n
ID0gIkVycm9yIl9zOworICAgICAgICBuYW1lU3RyaW5nID0gIkVycm9yIl9zdHI7CiAgICAgZWxz
ZSB7CiAgICAgICAgIG5hbWVTdHJpbmcgPSBuYW1lLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKaW5kZXgg
YjQwMjM2MmQwYTRlZTQ2ODNhMzdhY2IzNjlmYzZlMGJhOGEzM2JlZS4uMzJiODRkNTQxMjk4YmJi
NWIzYzJiZmIzYjg1NDkzZTc1MjM3ZDIyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBFcnJvclByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJyb3JQcm90b3R5cGU+KHZtKSkgRXJy
b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3Jl
YXRpb24odm0sICJFcnJvciJfcyk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24o
dm0sICJFcnJvciJfc3RyKTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAKaW5kZXgg
NzI2YTQ1NjljNTU4NmUwMDg3YzU3ZjFjY2FiODVhNTYxODJmYmQxNy4uOGZmNWQ4NjYzYjZlODg3
ZTc3ODY1ZTNjZWJhMmQzMDdhMmQ5ZTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBkb0V4Y2Vw
dGlvbkZ1enppbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2Nv
cGUsIGNvbnN0IGMKICAgICAgICAgLy8gdG8gcGxhY2F0ZSB0aGUgZXhjZXB0aW9uIGNoZWNrIHZl
cmlmaWVyIGhlcmUuCiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoc2NvcGUuZXhjZXB0aW9uKCkg
fHwgIXNjb3BlLmV4Y2VwdGlvbigpKTsKIAotICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJFeGNlcHRpb24gRnV6eiJf
cykpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVF
cnJvcihnbG9iYWxPYmplY3QsICJFeGNlcHRpb24gRnV6eiJfc3RyKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CmluZGV4IDA5OWZmNzFjZDYyNjViOGQxY2E4YzkxZTM2MTEzNjFlZTBlZTdmYTMuLjJlOTg3MWU3
ZTVjMzQyOTJhYmFkNzA3NjBkY2IxMzU1Y2VhMDdhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgYXV0byogZXJyb3IgPSBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVk
LiJfcyk7CisgICAgYXV0byogZXJyb3IgPSBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
Ik1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiJfc3RyKTsKICAgICBqc0Nhc3Q8RXJy
b3JJbnN0YW5jZSo+KGVycm9yKS0+c2V0U3RhY2tPdmVyZmxvd0Vycm9yKCk7CiAgICAgcmV0dXJu
IGVycm9yOwogfQpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBTdHJpbmcgbm90QUZ1bmN0aW9u
U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0CiAg
ICAgYnVpbGRlci5hcHBlbmQoJyknKTsKIAogICAgIGlmIChidWlsZGVyLmhhc092ZXJmbG93ZWQo
KSkKLSAgICAgICAgcmV0dXJuICJvYmplY3QgaXMgbm90IGEgZnVuY3Rpb24uIl9zOworICAgICAg
ICByZXR1cm4gIm9iamVjdCBpcyBub3QgYSBmdW5jdGlvbi4iX3N0cjsKIAogICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0yMzMsMTIgKzIzMywxMiBAQCBpbmxpbmUgU3RyaW5n
IGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBj
b250ZW50LCBjbwogCiBzdGF0aWMgU3RyaW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mTm90
RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSBydW50aW1lVHlwZSwgRXJyb3JJbnN0
YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQogewotICAgIHJl
dHVybiBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZlNvdXJjZUFwcGVuZGVyKCIgaXMgbm90IGEg
ZnVuY3Rpb24iX3MsIG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCwgcnVudGltZVR5cGUsIG9j
Y3VycmVuY2UpOworICAgIHJldHVybiBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZlNvdXJjZUFw
cGVuZGVyKCIgaXMgbm90IGEgZnVuY3Rpb24iX3N0ciwgb3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VU
ZXh0LCBydW50aW1lVHlwZSwgb2NjdXJyZW5jZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgaW52YWxp
ZFBhcmFtZXRlckluc3RhbmNlb2ZoYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb25Tb3VyY2VBcHBl
bmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VU
ZXh0LCBSdW50aW1lVHlwZSBydW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdo
ZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQogewotICAgIHJldHVybiBpbnZhbGlkUGFyYW1l
dGVySW5zdGFuY2VvZlNvdXJjZUFwcGVuZGVyKCJbU3ltYm9sLmhhc0luc3RhbmNlXSBpcyBub3Qg
YSBmdW5jdGlvbiwgdW5kZWZpbmVkLCBvciBudWxsIl9zLCBvcmlnaW5hbE1lc3NhZ2UsIHNvdXJj
ZVRleHQsIHJ1bnRpbWVUeXBlLCBvY2N1cnJlbmNlKTsKKyAgICByZXR1cm4gaW52YWxpZFBhcmFt
ZXRlckluc3RhbmNlb2ZTb3VyY2VBcHBlbmRlcigiW1N5bWJvbC5oYXNJbnN0YW5jZV0gaXMgbm90
IGEgZnVuY3Rpb24sIHVuZGVmaW5lZCwgb3IgbnVsbCJfc3RyLCBvcmlnaW5hbE1lc3NhZ2UsIHNv
dXJjZVRleHQsIHJ1bnRpbWVUeXBlLCBvY2N1cnJlbmNlKTsKIH0KIAogc3RhdGljIFN0cmluZyBp
bnZhbGlkUHJvdG90eXBlU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6
OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKQEAgLTI1MCw3ICsyNTAs
NyBAQCBzdGF0aWMgU3RyaW5nIGludmFsaWRQcm90b3R5cGVTb3VyY2VBcHBlbmRlcihjb25zdCBT
dHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29ucwogICAgIGlmIChleHRlbmRzSW5kZXggPT0gbm90
Rm91bmQgfHwgc291cmNlVGV4dC5maW5kKCJleHRlbmRzIikgIT0gZXh0ZW5kc0luZGV4KQogICAg
ICAgICByZXR1cm4gbWFrZVN0cmluZyhvcmlnaW5hbE1lc3NhZ2UsICIgKGV2YWx1YXRpbmcgJyIs
IHNvdXJjZVRleHQsICInKSIpOwogCi0gICAgcmV0dXJuICJUaGUgdmFsdWUgb2YgdGhlIHN1cGVy
Y2xhc3MncyBwcm90b3R5cGUgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdCBvciBudWxsLiJfczsK
KyAgICByZXR1cm4gIlRoZSB2YWx1ZSBvZiB0aGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBwcm9w
ZXJ0eSBpcyBub3QgYW4gb2JqZWN0IG9yIG51bGwuIl9zdHI7CiB9CiAKIEpTT2JqZWN0KiBjcmVh
dGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIEVycm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyIGFwcGVuZGVy
KQpAQCAtMjc5LDQyICsyNzksNDIgQEAgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYKIAogSlNPYmpl
Y3QqIGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgInNlY29uZCBhcmd1bWVudCB0byBGdW5jdGlvbi5wcm90b3R5
cGUuYXBwbHkgbXVzdCBiZSBhbiBBcnJheS1saWtlIG9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFw
cGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGdsb2JhbE9iamVjdC0+dm0oKSwgdmFsdWUpKTsK
KyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgInNlY29uZCBhcmd1bWVu
dCB0byBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgbXVzdCBiZSBhbiBBcnJheS1saWtlIG9iamVj
dCJfc3RyLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoZ2xvYmFs
T2JqZWN0LT52bSgpLCB2YWx1ZSkpOwogfQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZEluUGFy
YW1ldGVyRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
IHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImlzIG5vdCBh
biBPYmplY3QuIl9zLCBpbnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcik7CisgICAgcmV0
dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpcyBub3QgYW4gT2JqZWN0LiJf
c3RyLCBpbnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcik7CiB9CiAKIEpTT2JqZWN0KiBj
cmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9yTm90RnVuY3Rpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRl
RXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIiBpcyBub3QgYSBmdW5jdGlvbiJfcywgaW52YWxp
ZFBhcmFtZXRlckluc3RhbmNlb2ZOb3RGdW5jdGlvblNvdXJjZUFwcGVuZGVyKTsKKyAgICByZXR1
cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIiBpcyBub3QgYSBmdW5jdGlvbiJf
c3RyLCBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIp
OwogfQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvckhh
c0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQogewotICAgIHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZh
bHVlLCAiW1N5bWJvbC5oYXNJbnN0YW5jZV0gaXMgbm90IGEgZnVuY3Rpb24sIHVuZGVmaW5lZCwg
b3IgbnVsbCJfcywgaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZoYXNJbnN0YW5jZVZhbHVlTm90
RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcik7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9i
amVjdCwgdmFsdWUsICJbU3ltYm9sLmhhc0luc3RhbmNlXSBpcyBub3QgYSBmdW5jdGlvbiwgdW5k
ZWZpbmVkLCBvciBudWxsIl9zdHIsIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9maGFzSW5zdGFu
Y2VWYWx1ZU5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOwogfQogCiBKU09iamVjdCogY3JlYXRl
Tm90QUNvbnN0cnVjdG9yRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwg
ImlzIG5vdCBhIGNvbnN0cnVjdG9yIl9zLCBkZWZhdWx0U291cmNlQXBwZW5kZXIpOworICAgIHJl
dHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGEgY29uc3RydWN0
b3IiX3N0ciwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZU5v
dEFGdW5jdGlvbkVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpcyBu
b3QgYSBmdW5jdGlvbiJfcywgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOworICAgIHJldHVy
biBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGEgZnVuY3Rpb24iX3N0
ciwgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOwogfQogCiBKU09iamVjdCogY3JlYXRlTm90
QW5PYmplY3RFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewotICAgIHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90
IGFuIG9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKTsKKyAgICByZXR1cm4gY3JlYXRl
RXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImlzIG5vdCBhbiBvYmplY3QiX3N0ciwgZGVmYXVs
dFNvdXJjZUFwcGVuZGVyKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcm90b3R5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewotICAg
IHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGFuIG9iamVj
dCBvciBudWxsIl9zLCBpbnZhbGlkUHJvdG90eXBlU291cmNlQXBwZW5kZXIpOworICAgIHJldHVy
biBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGFuIG9iamVjdCBvciBu
dWxsIl9zdHIsIGludmFsaWRQcm90b3R5cGVTb3VyY2VBcHBlbmRlcik7CiB9CiAKIEpTT2JqZWN0
KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpAQCAtMzI0LDI3ICszMjQs
MjcgQEAgSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY28KIAogSlNPYmplY3QqIGNyZWF0ZVREWkVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKGdsb2JhbE9iamVjdCwgIkNhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJp
YWJsZS4iKTsKKyAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
Q2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiJfc3RyKTsKIH0KIAogSlNPYmpl
Y3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VT
dHJpbmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3Vy
Y2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgZmllbGQiX3N0ciwgZGVm
YXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVS
ZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNh
bm5vdCByZWRlZmluZSBleGlzdGluZyBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBl
bmRlciwgVHlwZU5vdGhpbmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiQ2Fubm90IHJlZGVmaW5lIGV4aXN0aW5nIHByaXZhdGUgZmllbGQiX3N0ciwgZGVmYXVs
dFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVQcml2
YXRlTWV0aG9kQWNjZXNzRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90
IGFjY2VzcyBwcml2YXRlIG1ldGhvZCBvciBhY2Vzc29yIl9zKSwgZGVmYXVsdFNvdXJjZUFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsICJDYW5ub3QgYWNjZXNzIHByaXZhdGUgbWV0aG9kIG9yIGFjZXNzb3IiX3N0ciwgZGVmYXVs
dFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVSZWlu
c3RhbGxQcml2YXRlTWV0aG9kRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
LSAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fu
bm90IGluc3RhbGwgc2FtZSBwcml2YXRlIG1ldGhvZHMgb24gb2JqZWN0IG1vcmUgdGhhbiBvbmNl
Il9zKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNy
ZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgaW5zdGFsbCBzYW1lIHByaXZhdGUg
bWV0aG9kcyBvbiBvYmplY3QgbW9yZSB0aGFuIG9uY2UiX3N0ciwgZGVmYXVsdFNvdXJjZUFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcAppbmRleCBmMzFkYjg2YTc5NjE2ZTQ1YThkYzExNWFh
MjY1NzBhYzNjN2U2NmY1Li5kMGQ3YmU1MTYxNGYyMmJmOGQxMGE5OWNiMmEzMGZhOWM2ZjNiYjkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcApAQCAtNDEsNyArNDEsNyBAQCBj
b25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6cwogCiB2b2lkIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUqIHByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgIkZpbmFs
aXphdGlvblJlZ2lzdHJ5Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVy
ZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiRmluYWxpemF0
aW9uUmVnaXN0cnkiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKIH0KIApAQCAtNjYsNyArNjYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
Y29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS5pc0NhbGxhYmxlKHZtKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEZpbmFs
aXphdGlvblJlZ2lzdHJ5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRv
IEZpbmFsaXphdGlvblJlZ2lzdHJ5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zdHIpOwogCiAgICAg
SlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOwog
ICAgIFN0cnVjdHVyZSogZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1Y3R1cmUgPSBKU0NfR0VUX0RF
UklWRURfU1RSVUNUVVJFKHZtLCBmaW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSwgbmV3VGFy
Z2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3Bw
CmluZGV4IDg1M2U0YWE4NzRjYjUxMDBhMzYzYjJjMDAxNDMzNTNjZmZhNWIwOWMuLjE0YzEwNzBj
MjMzZGY2Zjk5MjZiMmNjZDA4ZTk2OTgzNzBlNzY0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaW5hbGl6
YXRpb25SZWdpc3RyeSogZ2V0RmluYWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBKU0cKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFko
IXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJDYWxsZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gbm9uLW9i
amVjdCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJD
YWxsZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gbm9uLW9iamVjdCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC02MSw3ICs2MSw3IEBAIEFMV0FZ
U19JTkxJTkUgc3RhdGljIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGdldEZpbmFsaXphdGlvblJl
Z2lzdHJ5KFZNJiB2bSwgSlNHCiAgICAgaWYgKExJS0VMWShncm91cCkpCiAgICAgICAgIHJldHVy
biBncm91cDsKIAotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxs
ZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gYSBub24tRmluYWxpemF0aW9uUmVn
aXN0cnkgb2JqZWN0Il9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIGEgbm9uLUZpbmFsaXph
dGlvblJlZ2lzdHJ5IG9iamVjdCJfc3RyKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAt
NzUsMTUgKzc1LDE1IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihwcm90b0Z1bmNGaW5hbGl6
YXRpb25SZWdpc3RyeVJlZ2lzdGVyLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBKU1ZhbHVlIHRh
cmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InJlZ2lzdGVyIHJlcXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdGFyZ2V0Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJl
cXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdGFyZ2V0Il9zdHIpOwogCiAgICAgSlNWYWx1ZSBob2xk
aW5ncyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKHRhcmdldCA9PSBob2xkaW5n
cykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InJlZ2lzdGVyIGV4cGVjdHMgdGhlIHRhcmdldCBvYmplY3QgYW5kIHRoZSBob2xkaW5ncyBwYXJh
bWV0ZXIgYXJlIG5vdCB0aGUgc2FtZS4gT3RoZXJ3aXNlLCB0aGUgdGFyZ2V0IGNhbiBuZXZlciBi
ZSBjb2xsZWN0ZWQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgZXhwZWN0cyB0aGUgdGFyZ2V0IG9iamVjdCBhbmQgdGhl
IGhvbGRpbmdzIHBhcmFtZXRlciBhcmUgbm90IHRoZSBzYW1lLiBPdGhlcndpc2UsIHRoZSB0YXJn
ZXQgY2FuIG5ldmVyIGJlIGNvbGxlY3RlZCJfc3RyKTsKIAogICAgIEpTVmFsdWUgdW5yZWdpc3Rl
clRva2VuID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKICAgICBpZiAoIXVucmVnaXN0ZXJUb2tl
bi5pc1VuZGVmaW5lZCgpICYmICF1bnJlZ2lzdGVyVG9rZW4uaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJl
cXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9rZW4iX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIg
cmVxdWlyZXMgYW4gb2JqZWN0IGFzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfc3RyKTsKIAog
ICAgIGdyb3VwLT5yZWdpc3RlclRhcmdldCh2bSwgdGFyZ2V0LmdldE9iamVjdCgpLCBob2xkaW5n
cywgdW5yZWdpc3RlclRva2VuKTsKICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CkBA
IC0xMDIsNyArMTAyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHByb3RvRnVuY0ZpbmFs
aXphdGlvblJlZ2lzdHJ5VW5yZWdpc3RlciwgKEpTR2xvYmFsT2JqZWMKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVucmVnaXN0ZXIgcmVxdWly
ZXMgYW4gb2JqZWN0IGlzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7CisgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVucmVnaXN0ZXIgcmVxdWly
ZXMgYW4gb2JqZWN0IGlzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfc3RyKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKaW5kZXggYTE3NjQ3YWM5YWEyM2U3NTQ3NTY3MmU0YzZlYjUyZmQwNTllNGI2Yy4uZWU5
ZWZhMzQ5NDYxODdhNzU4NThiZTcwNzRmNmRjOTFjMTRlZGQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xNDUs
NyArMTQ1LDcgQEAgSlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUoKSkgewog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKLSAg
ICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiZnVuY3Rpb24qICI7CisgICAgICAgIGZ1bmN0aW9uSGVh
ZGVyID0gImZ1bmN0aW9uKiAiX3N0cjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgpAQCAtMTU5LDI2ICsxNTksMjYgQEAgSlNT
dHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9k
eU1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6Ci0g
ICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0aW9uICI7CisgICAgICAgIGZ1bmN0aW9uSGVh
ZGVyID0gImZ1bmN0aW9uICJfc3RyOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiIjsK
KyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSBlbXB0eVN0cmluZygpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRl
ciA9ICJhc3luYyBmdW5jdGlvbiAiOworICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBm
dW5jdGlvbiAiX3N0cjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5
bmMgIjsKKyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5bmMgIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlckZ1
bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFw
cGVyTWV0aG9kTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5bmMgZnVuY3Rpb24q
ICI7CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jIGZ1bmN0aW9uKiAiX3N0cjsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IDdm
YTNiMjExNjIzNjg3YzFhOTliMzU1MThkMmI0ZDA0MjdkNDc3NjAuLmJmYjlkM2JiYTY4ZmNjY2Ex
ZDBiOTc3ODJkNDE0ZTEwNTE2OWJhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0CiAKIHZvaWQgR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDEsICJHZW5lcmF0b3JGdW5jdGlvbiJfcywgUHJvcGVydHlBZGRp
dGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgMSwgIkdlbmVyYXRvckZ1bmN0aW9uIl9zdHIsIFByb3BlcnR5QWRkaXRpb25N
b2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApp
bmRleCBkNWJjNDk0MDk1N2U1NTJiZjY0YTUwYTU5MDJjMTEwYzE1MjZkYjkxLi5mMmZiNzc5MzAx
OWVlMTJiOTE2ODU1YTFiYzViNzljMDQ2OGY4MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
IEpTR2xvYmFsT2JqZWN0KiBnZXRGdW5jdGlvblJlYWxtKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIGlmIChvYmplY3QtPnR5cGUoKSA9PSBQ
cm94eU9iamVjdFR5cGUpIHsKICAgICAgICAgICAgIGF1dG8qIHByb3h5ID0ganNDYXN0PFByb3h5
T2JqZWN0Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIGlmIChwcm94eS0+aXNSZXZva2VkKCkpIHsK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fu
bm90IGdldCBmdW5jdGlvbiByZWFsbSBmcm9tIHJldm9rZWQgUHJveHkiX3MpOworICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgZ2V0IGZ1
bmN0aW9uIHJlYWxtIGZyb20gcmV2b2tlZCBQcm94eSJfc3RyKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdCA9IHByb3h5
LT50YXJnZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuY3BwCmluZGV4IGI2YmI3NTE1ODBkNzY4MmUxNjZhNDU5NjVmMzIzMjliZTJjNGM2NTUuLjM2
NTNjOTY0OWZhMzFlZGNiNGQyNjRlYzI5YTI1MGVkM2U3Y2NhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAtMTA3LDE0ICsxMDcsMTQg
QEAgVmVjdG9yPFN0cmluZz4gSW50bENvbGxhdG9yOjpzb3J0TG9jYWxlRGF0YShjb25zdCBTdHJp
bmcmIGxvY2FsZSwgUmVsZXZhbnRFeHRlbnMKICAgICB9CiAgICAgY2FzZSBSZWxldmFudEV4dGVu
c2lvbktleTo6S2Y6CiAgICAgICAgIGtleUxvY2FsZURhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eSgzKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImZhbHNlIl9zKTsK
LSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImxvd2VyIl9zKTsKLSAgICAg
ICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoInVwcGVyIl9zKTsKKyAgICAgICAga2V5
TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImZhbHNlIl9zdHIpOworICAgICAgICBrZXlMb2Nh
bGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgibG93ZXIiX3N0cik7CisgICAgICAgIGtleUxvY2FsZURh
dGEudW5jaGVja2VkQXBwZW5kKCJ1cHBlciJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBSZWxldmFudEV4dGVuc2lvbktleTo6S246CiAgICAgICAgIGtleUxvY2FsZURhdGEucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eSgyKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBl
bmQoImZhbHNlIl9zKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoInRy
dWUiX3MpOworICAgICAgICBrZXlMb2NhbGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgiZmFsc2UiX3N0
cik7CisgICAgICAgIGtleUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5kKCJ0cnVlIl9zdHIpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTEzNCwxNCArMTM0LDE0IEBAIFZlY3RvcjxTdHJpbmc+IEludGxDb2xsYXRvcjo6c2Vh
cmNoTG9jYWxlRGF0YShjb25zdCBTdHJpbmcmLCBSZWxldmFudEV4dGVuc2lvbktlCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUmVsZXZhbnRFeHRlbnNpb25LZXk6OktmOgogICAgICAgICBrZXlM
b2NhbGVEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMyk7Ci0gICAgICAgIGtleUxvY2FsZURh
dGEudW5jaGVja2VkQXBwZW5kKCJmYWxzZSJfcyk7Ci0gICAgICAgIGtleUxvY2FsZURhdGEudW5j
aGVja2VkQXBwZW5kKCJsb3dlciJfcyk7Ci0gICAgICAgIGtleUxvY2FsZURhdGEudW5jaGVja2Vk
QXBwZW5kKCJ1cHBlciJfcyk7CisgICAgICAgIGtleUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5k
KCJmYWxzZSJfc3RyKTsKKyAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImxv
d2VyIl9zdHIpOworICAgICAgICBrZXlMb2NhbGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgidXBwZXIi
X3N0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVsZXZhbnRFeHRlbnNpb25LZXk6Oktu
OgogICAgICAgICBrZXlMb2NhbGVEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAg
ICAgIGtleUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5kKCJmYWxzZSJfcyk7Ci0gICAgICAgIGtl
eUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5kKCJ0cnVlIl9zKTsKKyAgICAgICAga2V5TG9jYWxl
RGF0YS51bmNoZWNrZWRBcHBlbmQoImZhbHNlIl9zdHIpOworICAgICAgICBrZXlMb2NhbGVEYXRh
LnVuY2hlY2tlZEFwcGVuZCgidHJ1ZSJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9p
ZCBJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGxvY2EKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKICAgICAgICAgaWYgKCFjb2xsYXRpb24uaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoY29sbGF0aW9uKSkgewotICAgICAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiY29sbGF0aW9u
IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGNvbGxhdGlvbiB2YWx1ZSJfcyk7CisgICAgICAgICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjb2xsYXRpb24gaXMgbm90
IGEgd2VsbC1mb3JtZWQgY29sbGF0aW9uIHZhbHVlIl9zdHIpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxvY2FsZU9wdGlvbnNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpDbyldID0gV1RGTW92ZShjb2xsYXRp
b24pOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgSW50bENvbGxhdG9yOjppbml0aWFsaXplQ29s
bGF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhCiAgICAgVHJp
U3RhdGUgbnVtZXJpYyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
dm0ucHJvcGVydHlOYW1lcy0+bnVtZXJpYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICBpZiAobnVtZXJpYyAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkK
LSAgICAgICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRl
bnNpb25LZXk6OktuKV0gPSBTdHJpbmcobnVtZXJpYyA9PSBUcmlTdGF0ZTo6VHJ1ZSA/ICJ0cnVl
Il9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUmVsZXZhbnRFeHRlbnNpb25LZXk6OktuKV0gPSBudW1lcmljID09IFRyaVN0YXRlOjpU
cnVlID8gInRydWUiX3N0ciA6ICJmYWxzZSJfc3RyOwogCiAgICAgU3RyaW5nIGNhc2VGaXJzdE9w
dGlvbiA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jYXNlRmlyc3QsIHsgInVwcGVyIiwgImxvd2VyIiwgImZhbHNlIiB9LCAiY2FzZUZp
cnN0IG11c3QgYmUgZWl0aGVyIFwidXBwZXJcIiwgXCJsb3dlclwiLCBvciBcImZhbHNlXCIiLCBu
dWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwpAQCAtMTk4
LDEyICsxOTgsMTIgQEAgdm9pZCBJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2EKIAogICAgIG1fbG9jYWxlID0g
cmVzb2x2ZWQubG9jYWxlOwogICAgIGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXpl
IENvbGxhdG9yIGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBDb2xsYXRvciBk
dWUgdG8gaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBjb25zdCBTdHJpbmcmIGNvbGxhdGlvbiA9IHJlc29sdmVkLmV4dGVuc2lvbnNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpDbyldOwotICAgIG1fY29sbGF0aW9u
ID0gY29sbGF0aW9uLmlzTnVsbCgpID8gImRlZmF1bHQiX3MgOiBjb2xsYXRpb247CisgICAgbV9j
b2xsYXRpb24gPSBjb2xsYXRpb24uaXNOdWxsKCkgPyAiZGVmYXVsdCJfc3RyIDogY29sbGF0aW9u
OwogICAgIG1fbnVtZXJpYyA9IHJlc29sdmVkLmV4dGVuc2lvbnNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpLbildID09ICJ0cnVlIl9zOwogCiAgICAgY29uc3Qg
U3RyaW5nJiBjYXNlRmlyc3RTdHJpbmcgPSByZXNvbHZlZC5leHRlbnNpb25zW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6S2YpXTsKQEAgLTI0Myw3ICsyNDMsNyBA
QCB2b2lkIEludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOwogICAgIG1fY29sbGF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNvbGxhdG9yLCBVQ29s
bGF0b3JEZWxldGVyPih1Y29sX29wZW4oZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwg
JnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgQ29sbGF0
b3IiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgQ29sbGF0b3IiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTMxNyw3ICszMTcsNyBAQCBKU1ZhbHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmlu
Z3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyB4LAogICAgICAgICBy
ZXR1cm4gdWNvbF9zdHJjb2xsKG1fY29sbGF0b3IuZ2V0KCksIHgudXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzKCksIHgubGVuZ3RoKCksIHkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHkubGVuZ3RoKCkp
OwogICAgIH0oKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iX3MpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVj
dCwgIkZhaWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIl9zdHIpKTsKICAgICByZXR1cm4ganNOdW1i
ZXIocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDBiYzVhYTM3ZDdjZGUwMjAz
M2Q3M2U5Zjg1Y2IyZTEzMTczMTAzMjkuLmNlNmU4NzJlYmI3MDdmZDU0YTA1NzBmN2YwMDRhOTE5
NDgwOGE2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgSW50bENvbGxh
dG9yQ29uc3RydWN0b3I6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAKIHZvaWQgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3RvdHlwZSkKIHsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIkNvbGxhdG9yIl9zLCBQcm9wZXJ0eUFk
ZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCAwLCAiQ29sbGF0b3IiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBjb2xsYXRvclByb3RvdHlwZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIGNvbGxhdG9yUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDA1OWMxOTVmYjAzNTVkNDU1MDcxNmFlYjg0YzU5
OTAxYzgyZDQ1MzEuLmQwNmM3Mzk2ZGVkZmFlOGRmYWEwOTFhOWMwM2VmNjczOWUwNzg3Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
UHJvdG90eXBlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
UihpbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGds
CiAgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0b3Igb2JqZWN0LgogICAgIElu
dGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFjb2xsYXRvcikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIENvbGxhdG9yIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90eXBl
LmNvbXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBDb2xsYXRvciJfc3RyKSk7CiAK
ICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFyZSA9IGNvbGxhdG9yLT5ib3VuZENvbXBh
cmUoKTsKICAgICAvLyAyLiBJZiBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIGlzIHVuZGVmaW5l
ZCwKQEAgLTEyMiw3ICsxMjIsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bENvbGxh
dG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29sbGF0b3ItPmdsb2JhbE9iamVjdCh2bSk7
CiAgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBh
cyBkZWZpbmVkIGluIDExLjMuNC4KICAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxl
bmd0aCBwcm9wZXJ0eSBpcyAyLgotICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMiwgImNvbXBhcmUiX3MsIGludGxD
b2xsYXRvckZ1bmNDb21wYXJlLCBOb0ludHJpbnNpYyk7CisgICAgICAgIEpTRnVuY3Rpb24qIHRh
cmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAyLCAiY29t
cGFyZSJfc3RyLCBpbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSwgTm9JbnRyaW5zaWMpOwogCiAgICAg
ICAgIC8vIGMuIExldCBiYyBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7
KS4KICAgICAgICAgYm91bmRDb21wYXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwgbnVsbHB0ciwgMiwgbnVsbHB0cik7
CkBAIC0xNDIsNyArMTQyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxDb2xsYXRv
clByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbE9iamUKICAgICAvLyAxMC4z
LjUgSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIu
MCkKICAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0
b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjb2xsYXRvcikKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgQ29sbGF0b3IiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Db2xs
YXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgQ29sbGF0b3IiX3N0cikpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY29sbGF0b3ItPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcAppbmRleCBjMmQ0OWRhOThhNjYwYmM2MmIwNGFmZTE5YzU3OGYyNTkyZmQ0YmI5Li4w
NGY1OTRlM2Q5MWFhNmY4NTg4YjQ3OWE0NzM1NGQzYjg2NTFjYTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTE0
NSw3ICsxNDUsNyBAQCBzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZShjb25z
dCBTdHJpbmcmIHRpbWVab25lTmFtZSkKIAogICAgIC8vIDMuIElmIGlhbmFUaW1lWm9uZSBpcyAi
RXRjL1VUQyIgb3IgIkV0Yy9HTVQiLCB0aGVuIHJldHVybiAiVVRDIi4KICAgICBpZiAoaXNVVENF
cXVpdmFsZW50KGNhbm9uaWNhbCkpCi0gICAgICAgIHJldHVybiAiVVRDIl9zOworICAgICAgICBy
ZXR1cm4gIlVUQyJfc3RyOwogCiAgICAgLy8gNC4gUmV0dXJuIGlhbmFUaW1lWm9uZS4KICAgICBy
ZXR1cm4gY2Fub25pY2FsOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIFZlY3RvcjxTdHJpbmc+IEludGxE
YXRlVGltZUZvcm1hdDo6bG9jYWxlRGF0YShjb25zdCBTdHJpbmcmIGxvY2FsZSwgUmVsZXZhbnRF
eHRlCiAgICAgICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZChjYWxlbmRhcik7CiAgICAgICAg
ICAgICAvLyBBZGRpbmcgImlzbGFtaWNjIiBjYW5kaWRhdGUgZm9yIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHkuCiAgICAgICAgICAgICBpZiAoY2FsZW5kYXIgPT0gImlzbGFtaWMtY2l2aWwiX3MpCi0g
ICAgICAgICAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImlzbGFtaWNjIl9zKTsKKyAgICAg
ICAgICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZCgiaXNsYW1pY2MiX3N0cik7CiAgICAgICAg
ICAgICBpZiAoYXV0byBtYXBwZWQgPSBtYXBJQ1VDYWxlbmRhcktleXdvcmRUb0JDUDQ3KGNhbGVu
ZGFyKSkKICAgICAgICAgICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZChXVEZNb3ZlKG1hcHBl
ZC52YWx1ZSgpKSk7CiAgICAgICAgIH0KQEAgLTE3NywxMCArMTc3LDEwIEBAIFZlY3RvcjxTdHJp
bmc+IEludGxEYXRlVGltZUZvcm1hdDo6bG9jYWxlRGF0YShjb25zdCBTdHJpbmcmIGxvY2FsZSwg
UmVsZXZhbnRFeHRlCiAgICAgY2FzZSBSZWxldmFudEV4dGVuc2lvbktleTo6SGM6CiAgICAgICAg
IC8vIE51bGwgZGVmYXVsdCBzbyB3ZSBrbm93IHRvIHVzZSAnaicgaW4gcGF0dGVybi4KICAgICAg
ICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoU3RyaW5nKCkpOwotICAgICAgICBrZXlMb2NhbGVEYXRh
LmFwcGVuZCgiaDExIl9zKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgxMiJfcyk7
Ci0gICAgICAgIGtleUxvY2FsZURhdGEuYXBwZW5kKCJoMjMiX3MpOwotICAgICAgICBrZXlMb2Nh
bGVEYXRhLmFwcGVuZCgiaDI0Il9zKTsKKyAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgx
MSJfc3RyKTsKKyAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgxMiJfc3RyKTsKKyAgICAg
ICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgyMyJfc3RyKTsKKyAgICAgICAga2V5TG9jYWxlRGF0
YS5hcHBlbmQoImgyNCJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWxldmFudEV4
dGVuc2lvbktleTo6TnU6CiAgICAgICAgIGtleUxvY2FsZURhdGEgPSBudW1iZXJpbmdTeXN0ZW1z
Rm9yTG9jYWxlKGxvY2FsZSk7CkBAIC0yODcsNyArMjg3LDcgQEAgc3RhdGljIEpTT2JqZWN0KiB0
b0RhdGVUaW1lT3B0aW9uc0FueURhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZQogICAgICAgICAvLyBhLiBGb3IgZWFjaCBvZiB0aGUgcHJvcGVydHkgbmFtZXMgInllYXIi
LCAibW9udGgiLCAiZGF5IjoKICAgICAgICAgLy8gaS4gTGV0IHN0YXR1cyBiZSBDcmVhdGVEYXRl
UHJvcGVydHlPclRocm93KG9wdGlvbnMsIHByb3AsICJudW1lcmljIikuCiAgICAgICAgIC8vIGlp
LiBSZXR1cm5JZkFicnVwdChzdGF0dXMpLgotICAgICAgICBKU1N0cmluZyogbnVtZXJpYyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIm51bWVyaWMiX3MpOworICAgICAgICBKU1N0cmluZyogbnVt
ZXJpYyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm51bWVyaWMiX3N0cik7CiAKICAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT55ZWFyLCBudW1lcmljKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTYwOCw3ICs2MDgs
NyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICBpZiAoIWNhbGVuZGFyLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICgh
aXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoY2FsZW5kYXIpKSB7Ci0gICAgICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNhbGVuZGFyIGlzIG5vdCBhIHdl
bGwtZm9ybWVkIGNhbGVuZGFyIHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiY2FsZW5kYXIgaXMgbm90IGEgd2VsbC1mb3JtZWQgY2Fs
ZW5kYXIgdmFsdWUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25L
ZXk6OkNhKV0gPSBjYWxlbmRhcjsKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lkIEludGxEYXRlVGlt
ZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAo
IW51bWJlcmluZ1N5c3RlbS5pc051bGwoKSkgewogICAgICAgICBpZiAoIWlzVW5pY29kZUxvY2Fs
ZUlkZW50aWZpZXJUeXBlKG51bWJlcmluZ1N5c3RlbSkpIHsKLSAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdl
bGwtZm9ybWVkIG51bWJlcmluZyBzeXN0ZW0gdmFsdWUiX3MpOworICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXJpbmdTeXN0ZW0gaXMgbm90IGEg
d2VsbC1mb3JtZWQgbnVtYmVyaW5nIHN5c3RlbSB2YWx1ZSJfc3RyKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVPcHRpb25zW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6TnUpXSA9IG51bWJlcmluZ1N5c3RlbTsKQEAgLTY0
Myw3ICs2NDMsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBtX2xvY2FsZSA9IHJl
c29sdmVkLmxvY2FsZTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBE
YXRlVGltZUZvcm1hdCBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRp
bWVGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRp
YWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAg
ICAvLyAgICAgaWlpLiBJZiBwIGlzIG5vdCB1bmRlZmluZWQsIHRoZW4KICAgICAgICAgLy8gICAg
ICAgICAxLiBUaHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmICh3ZWVrZGF5
ICE9IFdlZWtkYXk6Ok5vbmUgfHwgZXJhICE9IEVyYTo6Tm9uZSB8fCB5ZWFyICE9IFllYXI6Ok5v
bmUgfHwgbW9udGggIT0gTW9udGg6Ok5vbmUgfHwgZGF5ICE9IERheTo6Tm9uZSB8fCBkYXlQZXJp
b2QgIT0gRGF5UGVyaW9kOjpOb25lIHx8IGhvdXIgIT0gSG91cjo6Tm9uZSB8fCBtaW51dGUgIT0g
TWludXRlOjpOb25lIHx8IHNlY29uZCAhPSBTZWNvbmQ6Ok5vbmUgfHwgZnJhY3Rpb25hbFNlY29u
ZERpZ2l0cyAhPSAwIHx8IHRpbWVab25lTmFtZSAhPSBUaW1lWm9uZU5hbWU6Ok5vbmUpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJkYXRlU3R5bGUg
YW5kIHRpbWVTdHlsZSBtYXkgbm90IGJlIHVzZWQgd2l0aCBvdGhlciBEYXRlVGltZUZvcm1hdCBv
cHRpb25zIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJkYXRlU3R5bGUgYW5kIHRpbWVTdHlsZSBtYXkgbm90IGJlIHVzZWQgd2l0aCBvdGhlciBE
YXRlVGltZUZvcm1hdCBvcHRpb25zIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTkyNSwxMyArOTI1LDEzIEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAg
ICAgU3RyaW5nVmlldyB0aW1lWm9uZVZpZXcobV90aW1lWm9uZSk7CiAgICAgICAgIGF1dG8gZGF0
ZUZvcm1hdEZyb21TdHlsZSA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZUZvcm1hdCwgVURhdGVGb3Jt
YXREZWxldGVyPih1ZGF0X29wZW4ocGFyc2VVRGF0ZUZvcm1hdFN0eWxlKG1fdGltZVN0eWxlKSwg
cGFyc2VVRGF0ZUZvcm1hdFN0eWxlKG1fZGF0ZVN0eWxlKSwgZGF0YUxvY2FsZVdpdGhFeHRlbnNp
b25zLmRhdGEoKSwgdGltZVpvbmVWaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB0aW1lWm9u
ZVZpZXcubGVuZ3RoKCksIG51bGxwdHIsIC0xLCAmc3RhdHVzKSk7CiAgICAgICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5p
dGlhbGl6ZSBEYXRlVGltZUZvcm1hdCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBjb25zdGV4cHIgYm9vbCBsb2NhbGl6ZWQgPSBmYWxzZTsgLy8gQWxpZ25l
ZCB3aXRoIGhvdyBJQ1UgU2ltcGxlRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdCB3b3Jrcy4gV2UgZG8g
bm90IG5lZWQgdG8gdHJhbnNsYXRlIHRoaXMgdG8gbG9jYWxpemVkIHBhdHRlcm4uCiAgICAgICAg
IHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1ZGF0X3RvUGF0dGVybiwgZGF0
ZUZvcm1hdEZyb21TdHlsZS5nZXQoKSwgbG9jYWxpemVkLCBwYXR0ZXJuQnVmZmVyKTsKICAgICAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQi
X3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zdHIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTk2MCw3ICs5NjAsNyBAQCB2b2lkIEludGxEYXRlVGltZUZv
cm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgICAgICAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gc2tlbGV0b247CiAgICAgICAg
ICAgICAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWRhdHBn
X2dldFNrZWxldG9uLCBudWxscHRyLCBwYXR0ZXJuQnVmZmVyLmRhdGEoKSwgcGF0dGVybkJ1ZmZl
ci5zaXplKCksIHNrZWxldG9uKTsKICAgICAgICAgICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zdHIpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlcGxhY2VIb3VyQ3lj
bGVJblNrZWxldG9uKHNrZWxldG9uLCBzcGVjaWZpZWRIb3VyMTIpOwpAQCAtOTY4LDcgKzk2OCw3
IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogICAgICAgICAgICAgICAgIHBhdHRlcm5CdWZm
ZXIgPSB2bS5pbnRsQ2FjaGUoKS5nZXRCZXN0RGF0ZVRpbWVQYXR0ZXJuKGRhdGFMb2NhbGVXaXRo
RXh0ZW5zaW9ucywgc2tlbGV0b24uZGF0YSgpLCBza2VsZXRvbi5zaXplKCksIHN0YXR1cyk7CiAg
ICAgICAgICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlh
bGl6ZSBEYXRlVGltZUZvcm1hdCJfcyk7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZv
cm1hdCJfc3RyKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTk3OCw3ICs5NzgsNyBAQCB2b2lkIEludGxEYXRlVGltZUZv
cm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygp
OwogICAgICAgICBwYXR0ZXJuQnVmZmVyID0gdm0uaW50bENhY2hlKCkuZ2V0QmVzdERhdGVUaW1l
UGF0dGVybihkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMsIFN0cmluZ1ZpZXcoc2tlbGV0b24pLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvbi5sZW5ndGgoKSwgc3RhdHVzKTsK
ICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVG
b3JtYXQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zdHIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtOTk2LDcgKzk5Niw3IEBAIHZvaWQgSW50
bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBTdHJpbmdWaWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsK
ICAgICBtX2RhdGVGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9y
bWF0RGVsZXRlcj4odWRhdF9vcGVuKFVEQVRfUEFUVEVSTiwgVURBVF9QQVRURVJOLCBkYXRhTG9j
YWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCB0aW1lWm9uZVZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzKCksIHRpbWVab25lVmlldy5sZW5ndGgoKSwgcGF0dGVybi51cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKSwgcGF0dGVybi5sZW5ndGgoKSwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVG
b3JtYXQiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyODMsMTIgKzEyODMs
MTIgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGMKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQotICAgICAg
ICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJkYXRlIHZhbHVl
IGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJkYXRlIHZhbHVlIGlz
IG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiX3N0cik7CiAKICAgICBWZWN0
b3I8VUNoYXIsIDMyPiByZXN1bHQ7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVj
aW5nRnVuY3Rpb24odWRhdF9mb3JtYXQsIG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3Vs
dCwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgZGF0
ZSB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIl9zdHIpOwogCiAgICAgcmV0dXJu
IGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0KSk7CiB9CkBAIC0xMzY1LDI0ICsxMzY1LDI0IEBA
IEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZGF0ZSB2YWx1ZSBpcyBu
b3QgZmluaXRlIGluIERhdGVUaW1lRm9ybWF0IGZvcm1hdFRvUGFydHMoKSJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImRhdGUgdmFsdWUg
aXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdCBmb3JtYXRUb1BhcnRzKCkiX3N0cik7CiAK
ICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIGZpZWxkcyA9
IHN0ZDo6dW5pcXVlX3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlvbkl0
ZXJhdG9yRGVsZXRlcj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zdHIpOwogCiAgICAgVmVjdG9yPFVD
aGFyLCAzMj4gcmVzdWx0OwogICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlv
bih1ZGF0X2Zvcm1hdEZvckZpZWxkcywgbV9kYXRlRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0
LCBmaWVsZHMuZ2V0KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0
IGRhdGUgdmFsdWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgZGF0ZSB2YWx1ZSJfc3RyKTsKIAogICAgIEpT
QXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1
b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAogICAgIGF1dG8gcmVzdWx0U3RyaW5nID0g
U3RyaW5nKHJlc3VsdCk7Ci0gICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAibGl0ZXJhbCJfcyk7CisgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2
aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfc3RyKTsKIAogICAgIGludDMyX3QgcmVzdWx0TGVuZ3Ro
ID0gcmVzdWx0LnNpemUoKTsKICAgICBpbnQzMl90IHByZXZpb3VzRW5kSW5kZXggPSAwOwpAQCAt
MTQzNSw3ICsxNDM1LDcgQEAgVURhdGVJbnRlcnZhbEZvcm1hdCogSW50bERhdGVUaW1lRm9ybWF0
OjpjcmVhdGVEYXRlSW50ZXJ2YWxGb3JtYXRJZk5lY2Vzc2FyeShKU0cKICAgICB7CiAgICAgICAg
IGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRfdG9QYXR0ZXJu
LCBtX2RhdGVGb3JtYXQuZ2V0KCksIGZhbHNlLCBwYXR0ZXJuKTsKICAgICAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZUludGVydmFsRm9ybWF0Il9zKTsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBEYXRlSW50ZXJ2YWxGb3JtYXQiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KQEAgLTE0NDQsNyArMTQ0NCw3IEBAIFVEYXRlSW50
ZXJ2YWxGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlRGF0ZUludGVydmFsRm9ybWF0
SWZOZWNlc3NhcnkoSlNHCiAgICAgewogICAgICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1ZGF0cGdfZ2V0U2tlbGV0b24sIG51bGxwdHIsIHBhdHRlcm4uZGF0
YSgpLCBwYXR0ZXJuLnNpemUoKSwgc2tlbGV0b24pOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlSW50ZXJ2YWxGb3JtYXQiX3MpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFs
aXplIERhdGVJbnRlcnZhbEZvcm1hdCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgVURhdGVJbnRlcnZhbEZv
cm1hdCogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVEYXRlSW50ZXJ2YWxGb3JtYXRJZk5lY2Vz
c2FyeShKU0cKICAgICBTdHJpbmdWaWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsKICAgICBt
X2RhdGVJbnRlcnZhbEZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZUludGVydmFsRm9ybWF0
LCBVRGF0ZUludGVydmFsRm9ybWF0RGVsZXRlcj4odWR0aXR2Zm10X29wZW4oZGF0YUxvY2FsZVdp
dGhFeHRlbnNpb25zLmRhdGEoKSwgc2tlbGV0b24uZGF0YSgpLCBza2VsZXRvbi5zaXplKCksIHRp
bWVab25lVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdGltZVpvbmVWaWV3Lmxlbmd0aCgp
LCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRl
SW50ZXJ2YWxGb3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZUludGVydmFsRm9ybWF0Il9zdHIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIG1fZGF0ZUludGVydmFs
Rm9ybWF0LmdldCgpOwpAQCAtMTU2Miw3ICsxNTYyLDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBz
dGEKICAgICBzdGFydERhdGUgPSB0aW1lQ2xpcChzdGFydERhdGUpOwogICAgIGVuZERhdGUgPSB0
aW1lQ2xpcChlbmREYXRlKTsKICAgICBpZiAoc3RkOjppc25hbihzdGFydERhdGUpIHx8IHN0ZDo6
aXNuYW4oZW5kRGF0ZSkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJQYXNzZWQgZGF0ZSBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBkYXRlIGlzIG91dCBvZiByYW5n
ZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTE1NzMsMTQgKzE1NzMs
MTQgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGEKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBhdXRvIHJlc3VsdCA9IGZvcm1hdHRlZFZhbHVlRnJvbURhdGVSYW5n
ZSgqZGF0ZUludGVydmFsRm9ybWF0LCAqbV9kYXRlRm9ybWF0LCBzdGFydERhdGUsIGVuZERhdGUs
IHN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2
YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KIAogICAgIC8vIFVGb3JtYXR0ZWRWYWx1ZSBpcyBvd25lZCBieSBVRm9ybWF0dGVkRGF0
ZUludGVydmFsLiBXZSBkbyBub3QgbmVlZCB0byBjbG9zZSBpdC4KICAgICBhdXRvIGZvcm1hdHRl
ZFZhbHVlID0gdWR0aXR2Zm10X3Jlc3VsdEFzVmFsdWUocmVzdWx0LmdldCgpLCAmc3RhdHVzKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBA
IC0xNTkwLDcgKzE1OTAsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFu
Z2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YQogICAgIC8vIGBzb3Vy
Y2U6ICJzaGFyZWQiYCBhZGRpdGlvbmFsIGZpZWxkcy4KICAgICBib29sIGVxdWFsID0gZGF0ZUZp
ZWxkc1ByYWN0aWNhbGx5RXF1YWwoZm9ybWF0dGVkVmFsdWUsIHN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGlu
dGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTYwMCw3ICsx
NjAwLDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGEKICAgICBpbnQzMl90IGZvcm1hdHRlZFN0
cmluZ0xlbmd0aCA9IDA7CiAgICAgY29uc3QgVUNoYXIqIGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIg
PSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmZvcm1hdHRlZFN0cmluZ0xlbmd0
aCwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50
ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIApAQCAtMTYwOSw3ICsxNjA5LDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGEK
ICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVm
ZmVyUHJvZHVjaW5nRnVuY3Rpb24odWR0aXR2Zm10X2Zvcm1hdCwgZGF0ZUludGVydmFsRm9ybWF0
LCBzdGFydERhdGUsIGVuZERhdGUsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFs
Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTYyOSw3ICsxNjI5LDcg
QEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3UKICAgICBzdGFydERhdGUgPSB0aW1lQ2xpcChzdGFy
dERhdGUpOwogICAgIGVuZERhdGUgPSB0aW1lQ2xpcChlbmREYXRlKTsKICAgICBpZiAoc3RkOjpp
c25hbihzdGFydERhdGUpIHx8IHN0ZDo6aXNuYW4oZW5kRGF0ZSkpIHsKLSAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQYXNzZWQgZGF0ZSBpcyBvdXQgb2YgcmFu
Z2UiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBh
c3NlZCBkYXRlIGlzIG91dCBvZiByYW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKQEAgLTE2MzksMTggKzE2MzksMTggQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3UKICAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHJlc3VsdCA9IGZv
cm1hdHRlZFZhbHVlRnJvbURhdGVSYW5nZSgqZGF0ZUludGVydmFsRm9ybWF0LCAqbV9kYXRlRm9y
bWF0LCBzdGFydERhdGUsIGVuZERhdGUsIHN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIC8vIFVGb3JtYXR0ZWRWYWx1ZSBp
cyBvd25lZCBieSBVRm9ybWF0dGVkRGF0ZUludGVydmFsLiBXZSBkbyBub3QgbmVlZCB0byBjbG9z
ZSBpdC4KICAgICBhdXRvIGZvcm1hdHRlZFZhbHVlID0gdWR0aXR2Zm10X3Jlc3VsdEFzVmFsdWUo
cmVzdWx0LmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQogCi0gICAgYXV0byBzaGFyZWRTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJzaGFyZWQiX3MpOworICAgIGF1dG8gc2hhcmVkU3RyaW5nID0ganNOb250
cml2aWFsU3RyaW5nKHZtLCAic2hhcmVkIl9zdHIpOwogCiAgICAgLy8gSWYgdGhlIGZvcm1hdHRl
ZCBwYXJ0cyBvZiBzdGFydERhdGUgYW5kIGVuZERhdGUgYXJlIHRoZSBzYW1lLCBpdCBpcyBwb3Nz
aWJsZSB0aGF0IHRoZSByZXN1bHRlZCBzdHJpbmcgZG9lcyBub3QgbG9vayBsaWtlIHJhbmdlLgog
ICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGUgcmVxdWVzdGVkIGZvcm1hdCBvbmx5IGluY2x1ZGVz
ICJ5ZWFyIiBhbmQgc3RhcnREYXRlIGFuZCBlbmREYXRlIGFyZSB0aGUgc2FtZSB5ZWFyLCB0aGUg
cmVzdWx0IGp1c3QgY29udGFpbnMgb25lIHllYXIuCkBAIC0xNjU4LDcgKzE2NTgsNyBAQCBKU1Zh
bHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdQogICAgIC8vIGBzb3VyY2U6ICJzaGFyZWQiYCBhZGRpdGlvbmFs
IGZpZWxkcy4KICAgICBib29sIGVxdWFsID0gZGF0ZUZpZWxkc1ByYWN0aWNhbGx5RXF1YWwoZm9y
bWF0dGVkVmFsdWUsIHN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0
IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTcxMyw3ICsxNzEzLDcgQEAgSlNWYWx1ZSBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3UKICAgICBpbnQzMl90IGZvcm1hdHRlZFN0cmluZ0xlbmd0aCA9IDA7CiAgICAgY29u
c3QgVUNoYXIqIGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIgPSB1Zm10dmFsX2dldFN0cmluZyhmb3Jt
YXR0ZWRWYWx1ZSwgJmZvcm1hdHRlZFN0cmluZ0xlbmd0aCwgJnN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGlu
dGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBTdHJpbmcgcmVz
dWx0U3RyaW5nKGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIsIGZvcm1hdHRlZFN0cmluZ0xlbmd0aCk7
CkBAIC0xNzIyLDEzICsxNzIyLDEzIEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXRSYW5nZVRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91CiAgICAgLy8g
U28gd2UgZG8gbm90IGNvbnN0cmFpbnQgaXRlcmF0b3IuCiAgICAgYXV0byBpdGVyYXRvciA9IHN0
ZDo6dW5pcXVlX3B0cjxVQ29uc3RyYWluZWRGaWVsZFBvc2l0aW9uLCBJQ1VEZWxldGVyPHVjZnBv
c19jbG9zZT4+KHVjZnBvc19vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgYXV0byBzdGFydFJhbmdlU3RyaW5n
ID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAic3RhcnRSYW5nZSJfcyk7Ci0gICAgYXV0byBlbmRS
YW5nZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVuZFJhbmdlIl9zKTsKLSAgICBh
dXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsK
KyAgICBhdXRvIHN0YXJ0UmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJzdGFy
dFJhbmdlIl9zdHIpOworICAgIGF1dG8gZW5kUmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJlbmRSYW5nZSJfc3RyKTsKKyAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zdHIpOwogCiAgICAgV1RGOjpSYW5nZTxpbnQzMl90
PiBzdGFydFJhbmdlIHsgLTEsIC0xIH07CiAgICAgV1RGOjpSYW5nZTxpbnQzMl90PiBlbmRSYW5n
ZSB7IC0xLCAtMSB9OwpAQCAtMTc1NSw3ICsxNzU1LDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBk
b3UKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBib29sIG5leHQgPSB1Zm10dmFsX25leHRQ
b3NpdGlvbihmb3JtYXR0ZWRWYWx1ZSwgaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAgICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0
byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCFuZXh0KQpAQCAtMTc2MywxMyArMTc2MywxMyBAQCBKU1Zh
bHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdQogCiAgICAgICAgIGludDMyX3QgY2F0ZWdvcnkgPSB1Y2Zwb3Nf
Z2V0Q2F0ZWdvcnkoaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0
ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIAog
ICAgICAgICBpbnQzMl90IGZpZWxkVHlwZSA9IHVjZnBvc19nZXRGaWVsZChpdGVyYXRvci5nZXQo
KSwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQg
ZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogCkBAIC0xNzc3LDcgKzE3NzcsNyBAQCBKU1Zh
bHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdQogICAgICAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKICAgICAg
ICAgdWNmcG9zX2dldEluZGV4ZXMoaXRlcmF0b3IuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5k
ZXgsICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0
IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIApAQCAtMTgyOCw3ICsxODI4LDcgQEAgSlNW
YWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBkb3UKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXJ0RGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGVuZERhdGUpOwotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUg
aW50ZXJ2YWwiX3N0cik7CiAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuY3BwCmluZGV4IGI0NTFlZTA5YjFkZGYxN2FmNTcyYWM5YTRlYmI5MTczZWU2
ZjJiNzMuLjNiODI2MDQ0NDE0YmRkYzMwMGIxZmNjMGZjZDlkZjU1YzMzYjBkNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKgogCiB2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJEYXRlVGltZUZv
cm1hdCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIkRhdGVUaW1lRm9ybWF0Il9zdHIs
IFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggZTc0MTJjYzI4MjEyZmJh
OWZhMjE4OWRmNjQ0NjhhNGIzZmMzODEwYS4uNDNmMmQ0YjE3NDFkMWJhODAyMTkyMWJkODYyZWZm
OTliMzdkMDFlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0xMzksNyArMTM5LDcg
QEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWMKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIC8vIDIuIFJldHVybklmQWJydXB0KGR0ZikuCiAgICAgaWYgKFVOTElLRUxZ
KCFkdGYpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfc3RyKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rp
b24qIGJvdW5kRm9ybWF0ID0gZHRmLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDMuIElmIHRoZSBb
W2JvdW5kRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVj
dCBpcyB1bmRlZmluZWQsCkBAIC0xNDcsNyArMTQ3LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2Jq
ZWMKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGR0Zi0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24g
b2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2Yg
RuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkg
d2FzIDAgaW4gRUNNQS00MDIgMS4wKQotICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3Qg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgImZvcm1hdCJfcywgaW50
bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CisgICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCAiZm9ybWF0Il9zdHIsIGludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRl
VGltZSwgTm9JbnRyaW5zaWMpOwogICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5jdGlv
bkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCiAgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3Vu
ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBkdGYsIG51
bGxwdHIsIDEsIG51bGxwdHIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMsIChKU0ds
b2JhbAogICAgIC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rpb25zLgogICAgIGF1dG8q
IGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkYXRlVGltZUZvcm1h
dCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFy
dHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQiX3N0cikpOwogCiAgICAgSlNW
YWx1ZSBkYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBkb3VibGUgdmFsdWUgPSBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBkYXRl
KTsKQEAgLTE4NywyMCArMTg3LDIwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UsIChKU0dsb2JhbE9iCiAgICAgLy8g
RG8gbm90IHVzZSB1bndyYXBGb3JPbGRGdW5jdGlvbnMuCiAgICAgYXV0byogZGF0ZVRpbWVGb3Jt
YXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRhdGVUaW1lRm9ybWF0KSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0UmFuZ2UgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRSYW5nZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIERhdGVUaW1lRm9ybWF0Il9zdHIpKTsKIAogICAgIEpTVmFsdWUgc3RhcnREYXRlVmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgZW5kRGF0ZVZhbHVlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAogICAgIGlmIChzdGFydERhdGVWYWx1ZS5pc1VuZGVm
aW5lZCgpIHx8IGVuZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUg
aXMgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfc3RyKTsK
IAogICAgIGRvdWJsZSBzdGFydERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVU
aW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBzdGFydERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZv
cm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4g
ZW5kRGF0ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIGlz
IGxhcmdlciB0aGFuIGVuZERhdGUiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0UmFuZ2UoZ2xvYmFsT2Jq
ZWN0LCBzdGFydERhdGUsIGVuZERhdGUpKSk7CiB9CkBAIC0yMTQsMjAgKzIxNCwyMCBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1h
dFJhbmdlVG9QYXJ0cywgKEpTRwogICAgIC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rp
b25zLgogICAgIGF1dG8qIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRp
bWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkYXRlVGltZUZvcm1hdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLmZvcm1hdFJhbmdlVG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVU
aW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LmZvcm1hdFJhbmdlVG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVUaW1l
Rm9ybWF0Il9zdHIpKTsKIAogICAgIEpTVmFsdWUgc3RhcnREYXRlVmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgZW5kRGF0ZVZhbHVlID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgxKTsKIAogICAgIGlmIChzdGFydERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZERh
dGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUgaXMgdW5kZWZpbmVkIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfc3RyKTsKIAogICAgIGRvdWJsZSBz
dGFydERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFs
T2JqZWN0LCBzdGFydERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0
ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERh
dGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIGlzIGxhcmdlciB0aGFuIGVu
ZERhdGUiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0UmFuZ2VUb1BhcnRzKGdsb2JhbE9iamVjdCwgc3Rh
cnREYXRlLCBlbmREYXRlKSkpOwogfQpAQCAtMjQyLDcgKzI0Miw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
LCAoSlNHbG9iCiAgICAgYXV0byogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkYXRlVGltZUZvcm1hdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVU
aW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVUaW1lRm9y
bWF0Il9zdHIpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGRhdGVUaW1lRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1l
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNw
cAppbmRleCBmYmU4NmU0YjdlYWEwNjNjYmI2NDYzYjlhMWZhOWY3MWIyOTE4N2U0Li5lZDExOWIw
MTA1Y2ZjYmVlMWIzYWY1ZTg5MmEyOTNhN2QzMmQ2ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcApAQCAtODksNyArODksNyBA
QCB2b2lkIEludGxEaXNwbGF5TmFtZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2Nh
bGU7CiAgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGlzcGxheU5hbWVz
IGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZXMgZHVlIHRv
IGludmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgYXV0byB0eXBlID0gaW50bE9w
dGlvbjxzdGQ6Om9wdGlvbmFsPFR5cGU+PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3Bl
cnR5TmFtZXMtPnR5cGUsIHsgeyAibGFuZ3VhZ2UiX3MsIFR5cGU6Okxhbmd1YWdlIH0sIHsgInJl
Z2lvbiJfcywgVHlwZTo6UmVnaW9uIH0sIHsgInNjcmlwdCJfcywgVHlwZTo6U2NyaXB0IH0sIHsg
ImN1cnJlbmN5Il9zLCBUeXBlOjpDdXJyZW5jeSB9LCB7ICJjYWxlbmRhciJfcywgVHlwZTo6Q2Fs
ZW5kYXIgfSwgeyAiZGF0ZVRpbWVGaWVsZCJfcywgVHlwZTo6RGF0ZVRpbWVGaWVsZCB9IH0sICJ0
eXBlIG11c3QgYmUgZWl0aGVyIFwibGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRcIiwg
XCJjdXJyZW5jeVwiLCBcImNhbGVuZGFyXCIsIG9yIFwiZGF0ZVRpbWVGaWVsZFwiIl9zLCBzdGQ6
Om51bGxvcHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAg
aWYgKCF0eXBlKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJ0eXBlIG11c3Qgbm90IGJlIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0eXBlIG11c3Qgbm90IGJlIHVuZGVmaW5lZCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3R5cGUgPSB0eXBlLnZhbHVlKCk7CkBAIC0x
MzQsNyArMTM0LDcgQEAgdm9pZCBJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5h
bWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBtX2xvY2FsZUNTdHJp
bmcgPSBtX2xvY2FsZS51dGY4KCk7CiAgICAgbV9kaXNwbGF5TmFtZXMgPSBzdGQ6OnVuaXF1ZV9w
dHI8VUxvY2FsZURpc3BsYXlOYW1lcywgVUxvY2FsZURpc3BsYXlOYW1lc0RlbGV0ZXI+KHVsZG5f
b3BlbkZvckNvbnRleHQobV9sb2NhbGVDU3RyaW5nLmRhdGEoKSwgY29udGV4dHMsIFdURl9BUlJB
WV9MRU5HVEgoY29udGV4dHMpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGlzcGxheU5hbWVzIl9z
dHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtMTk5LDcgKzE5OSw3IEBAIEpTVmFs
dWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6
Okxhbmd1YWdlOiB7CiAgICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkgewot
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVu
dCBpcyBub3QgYSBsYW5ndWFnZSBpZCJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkIl9zdHIp
OwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBjYW5vbmljYWxD
b2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIFdURk1vdmUoY29k
ZSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIEpTVmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgfQog
ICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CiAgICAgICAgIGlmICghaXNVbmljb2RlUmVnaW9uU3Vi
dGFnKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWciX3MpOworICAgICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBy
ZWdpb24gc3VidGFnIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQog
ICAgICAgICBjYW5vbmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyht
X3R5cGUsIFdURk1vdmUoY29kZSkpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIEpTVmFsdWUgSW50bERp
c3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2Rl
VmFsdWUpIGNvCiAgICAgfQogICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CiAgICAgICAgIGlmICgh
aXNVbmljb2RlU2NyaXB0U3VidGFnKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWci
X3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJh
cmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICAgICAgfQogICAgICAgICBjYW5vbmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29k
ZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIFdURk1vdmUoY29kZSkpOwpAQCAtMjM0LDcgKzIzNCw3
IEBAIEpTVmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFt
ZXMKICAgICAgICAgLy8gNS4gSWYgISBJc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoY29kZSkgaXMg
ZmFsc2UsIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmICghaXNXZWxs
Rm9ybWVkQ3VycmVuY3lDb2RlKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJl
bmN5IGNvZGUiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zdHIp
OwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoY29k
ZS5pc0FsbEFTQ0lJKCkpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIEpTVmFsdWUgSW50bERpc3BsYXlO
YW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUp
IGNvCiAgICAgICAgIFVCb29sIGlzQ2hvaWNlRm9ybWF0ID0gZmFsc2U7IC8vIFdlIG5lZWQgdG8g
cGFzcyB0aGlzLCBvdGhlcndpc2UsIHdlIHdpbGwgc2VlIGNyYXNoIGluIElDVSA2NC4KICAgICAg
ICAgY29uc3QgVUNoYXIqIHJlc3VsdCA9IHVjdXJyX2dldE5hbWUoY3VycmVuY3ksIG1fbG9jYWxl
Q1N0cmluZy5kYXRhKCksIHN0eWxlLCAmaXNDaG9pY2VGb3JtYXQsICZsZW5ndGgsICZzdGF0dXMp
OwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBxdWVyeSBhIGRpc3Bs
YXkgbmFtZS4iX3MpOworICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUuIl9zdHIpOwogICAg
ICAgICAvLyB1Y3Vycl9nZXROYW1lIHJldHVybnMgVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgaWYg
dGhlIGRpc3BsYXktbmFtZSBpcyBub3QgZm91bmQuIEJ1dCBVX1VTSU5HX0RFRkFVTFRfV0FSTklO
RyBpcyByZXR1cm5lZCBldmVuIGlmCiAgICAgICAgIC8vIG5hcnJvdyBhbmQgc2hvcnQgcmVzdWx0
cyBhcmUgdGhlIHNhbWU6IG5hcnJvdyAiVVNEIiBpcyAiJCIgd2l0aCBVX1VTSU5HX0RFRkFVTFRf
V0FSTklORyBzaW5jZSBzaG9ydCAiVVNEIiBpcyBhbHNvICIkIi4gV2UgbmVlZCB0byBjaGVjawog
ICAgICAgICAvLyByZXN1bHQgPT0gY3VycmVuY3kgdG8gY2hlY2sgd2hldGhlciBJQ1UgYWN0dWFs
bHkgZmFpbGVkIHRvIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGlzcGxheS1uYW1lLiBUaGlzIHBv
aW50ZXIgY29tcGFyaXNvbiBpcyBlbnN1cmVkIGJ5CkBAIC0yNzcsNyArMjc3LDcgQEAgSlNWYWx1
ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGNvZGVWYWx1ZSkgY28KICAgICBjYXNlIFR5cGU6OkNhbGVuZGFyOiB7CiAgICAgICAgIC8v
IGEuIElmIGNvZGUgZG9lcyBub3QgbWF0Y2ggdGhlIFVuaWNvZGUgTG9jYWxlIElkZW50aWZpZXIg
dHlwZSBub250ZXJtaW5hbCwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KICAgICAgICAg
aWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShjb2RlKSkgewotICAgICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBj
YWxlbmRhciBjb2RlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgY2FsZW5kYXIgY29kZSJfc3RyKTsKICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgY2Fub25pY2FsQ29kZSA9IGNh
bm9uaWNhbGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBXVEZNb3ZlKGNvZGUpKTsKQEAg
LTMxOSw3ICszMTksNyBAQCBKU1ZhbHVlIEludGxEaXNwbGF5TmFtZXM6Om9mKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY29kZVZhbHVlKSBjbwogCiAgICAgICAgIGF1dG8g
ZmllbGQgPSBpc1ZhbGlkRGF0ZVRpbWVGaWVsZENvZGUoY29kZSk7CiAgICAgICAgIGlmICghZmll
bGQpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
YXJndW1lbnQgaXMgbm90IGEgZGF0ZVRpbWVGaWVsZCBjb2RlIl9zKTsKKyAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgZGF0
ZVRpbWVGaWVsZCBjb2RlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAg
fQogCkBAIC0zNDcsNyArMzQ3LDcgQEAgSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY28KICAgICAgICAg
Ly8gV2Ugc2hvdWxkIHJldHVybiB1bmRlZmluZWQgaWYgZmFsbGJhY2sgaXMgIm5vbmUiLiBPdGhl
cndpc2UsIHdlIHNob3VsZCByZXR1cm4gaW5wdXQgdmFsdWUuCiAgICAgICAgIGlmIChzdGF0dXMg
PT0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SKQogICAgICAgICAgICAgcmV0dXJuIChtX2ZhbGxi
YWNrID09IEZhbGxiYWNrOjpOb25lKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgU3Ry
aW5nKGNhbm9uaWNhbENvZGUuZGF0YSgpLCBjYW5vbmljYWxDb2RlLmxlbmd0aCgpKSk7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJf
c3RyKTsKICAgICB9CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcAppbmRleCBlYTA1MWJiMzRjNWUxZDkyMmQ3YmYwODRm
MTNhNWU0NmYxMGM0MzI0Li44NzUzMjEwNWRlOTY3Y2VlM2EzZmJjNGVkOWY0NmY1YzcwOTlmMjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnUKIAogdm9pZCBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxheU5hbWVz
UHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAyLCAiRGlzcGxheU5h
bWVzIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAyLCAiRGlzcGxheU5hbWVzIl9zdHIsIFBy
b3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
ZGlzcGxheU5hbWVzUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CiAgICAgZGlzcGxheU5hbWVzUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5j
cHAKaW5kZXggNDVhNjIwNWQxMmI4ZDhiMzZkMmY4YmFhOWU3NzNlZTQxMmMwMjU0Mi4uMzJhYjg2
MWZmNTliY2MxNDUwZjY4MjdiYjE0OGY1NWZkMjkxOGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5j
cHAKQEAgLTgxLDcgKzgxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGVGdW5jT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGF1dG8q
IGRpc3BsYXlOYW1lcyA9IGpzRHluYW1pY0Nhc3Q8SW50bERpc3BsYXlOYW1lcyo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRpc3BsYXlOYW1lcykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGlzcGxheU5h
bWVzLnByb3RvdHlwZS5vZiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERpc3BsYXlOYW1l
cyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBEaXNwbGF5TmFtZXMiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShkaXNwbGF5TmFtZXMtPm9mKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KQEAgLTk0LDcgKzk0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAo
SlNHbG9iYWwKIAogICAgIGF1dG8qIGRpc3BsYXlOYW1lcyA9IGpzRHluYW1pY0Nhc3Q8SW50bERp
c3BsYXlOYW1lcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRpc3Bs
YXlOYW1lcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBEaXNwbGF5TmFtZXMiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERp
c3BsYXlOYW1lcyJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGRpc3BsYXlOYW1lcy0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9iamVjdCkpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9y
bWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmNw
cAppbmRleCBmNWMzMDU3MDk4Yzk0OGYzMTRjZjFiY2ZkNjljZGU4OGQyNWU5MzNmLi44Mjc0NjJk
NThmZGM1ODhiMGQxNjljZjU5YmQzNTkyZGZlMzRjMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAg
dm9pZCBJbnRsTGlzdEZvcm1hdDo6aW5pdGlhbGl6ZUxpc3RGb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZQogCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2NhbGU7
CiAgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTGlzdEZvcm1hdCBkdWUg
dG8gaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTGlzdEZvcm1hdCBkdWUgdG8gaW52YWxp
ZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0NiwxMSArMTQ2
LDExIEBAIHZvaWQgSW50bExpc3RGb3JtYXQ6OmluaXRpYWxpemVMaXN0Rm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBtX2xpc3RGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VUxpc3RGb3Jt
YXR0ZXIsIFVMaXN0Rm9ybWF0dGVyRGVsZXRlcj4odWxpc3RmbXRfb3BlbkZvclR5cGUobV9sb2Nh
bGUudXRmOCgpLmRhdGEoKSwgdG9VTGlzdEZvcm1hdHRlclR5cGUobV90eXBlKSwgdG9VTGlzdEZv
cm1hdHRlcldpZHRoKG1fc3R5bGUpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIExpc3RGb3JtYXQiX3N0
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZWxzZQotICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBJbnRsLkxpc3RGb3JtYXQg
c2luY2UgdGhpcyBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGxpbmtlZCBJQ1UgdmVy
c2lvbiJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBpbml0aWFsaXplIEludGwuTGlzdEZvcm1hdCBzaW5jZSB0aGlzIGZlYXR1cmUgaXMgbm90
IHN1cHBvcnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9zdHIpOwogICAgIHJldHVybjsK
ICNlbmRpZgogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nLCA0PiBz
dHJpbmdMaXN0RnJvbUl0ZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAg
ICAgZm9yRWFjaEluSXRlcmFibGUoZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkgewogICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIGlmICghdmFsdWUu
aXNTdHJpbmcoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkl0ZXJhYmxlIHBhc3NlZCB0byBMaXN0Rm9ybWF0IGluY2x1ZGVzIG5vbiBTdHJpbmci
X3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0
ZXJhYmxlIHBhc3NlZCB0byBMaXN0Rm9ybWF0IGluY2x1ZGVzIG5vbiBTdHJpbmciX3N0cik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgU3RyaW5nIGl0ZW0gPSB2YWx1
ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwpAQCAtMjI0LDEyICsyMjQsMTIgQEAgSlNWYWx1
ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgbGlzdCkgY29uc3QKICAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQ7CiAgICAgYXV0
byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxpc3RmbXRfZm9ybWF0LCBt
X2xpc3RGb3JtYXQuZ2V0KCksIGlucHV0LnN0cmluZ1BvaW50ZXJzKCksIGlucHV0LnN0cmluZ0xl
bmd0aHMoKSwgaW5wdXQuc2l6ZSgpLCByZXN1bHQpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9m
IHN0cmluZ3MiX3N0cik7CiAKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQp
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxpc3QpOwotICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmlu
Z3MiX3MpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7CiAjZW5kaWYKIH0KIApAQCAt
MjQ5LDE2ICsyNDksMTYgQEAgSlNWYWx1ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxpc3QKIAogICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWRMaXN0LCBJQ1VEZWxldGVyPHVsaXN0Zm10
X2Nsb3NlUmVzdWx0Pj4odWxpc3RmbXRfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfc3RyKTsKIAogICAgIHVsaXN0Zm10X2Zvcm1hdFN0cmlu
Z3NUb1Jlc3VsdChtX2xpc3RGb3JtYXQuZ2V0KCksIGlucHV0LnN0cmluZ1BvaW50ZXJzKCksIGlu
cHV0LnN0cmluZ0xlbmd0aHMoKSwgaW5wdXQuc2l6ZSgpLCByZXN1bHQuZ2V0KCksICZzdGF0dXMp
OwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3RyaW5n
cyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7CiAKICAgICAvLyBVRm9y
bWF0dGVkVmFsdWUgaXMgb3duZWQgYnkgVUZvcm1hdHRlZExpc3QuIFdlIGRvIG5vdCBuZWVkIHRv
IGNsb3NlIGl0LgogICAgIGF1dG8gZm9ybWF0dGVkVmFsdWUgPSB1bGlzdGZtdF9yZXN1bHRBc1Zh
bHVlKHJlc3VsdC5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3Ry
aW5ncyJfc3RyKTsKIAogICAgIEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKQEAgLTI2Nywx
OSArMjY3LDE5IEBAIEpTVmFsdWUgSW50bExpc3RGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsaXN0CiAgICAgaW50MzJfdCBmb3JtYXR0
ZWRTdHJpbmdMZW5ndGggPSAwOwogICAgIGNvbnN0IFVDaGFyKiBmb3JtYXR0ZWRTdHJpbmdQb2lu
dGVyID0gdWZtdHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZmb3JtYXR0ZWRTdHJpbmdM
ZW5ndGgsICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0
IGxpc3Qgb2Ygc3RyaW5ncyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7
CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyhmb3JtYXR0ZWRTdHJpbmdQb2ludGVyLCBmb3JtYXR0
ZWRTdHJpbmdMZW5ndGgpOwogCiAgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxV
Q29uc3RyYWluZWRGaWVsZFBvc2l0aW9uLCBJQ1VEZWxldGVyPHVjZnBvc19jbG9zZT4+KHVjZnBv
c19vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1h
dCBsaXN0IG9mIHN0cmluZ3MiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zdHIp
OwogCiAgICAgdWNmcG9zX2NvbnN0cmFpbkZpZWxkKGl0ZXJhdG9yLmdldCgpLCBVRklFTERfQ0FU
RUdPUllfTElTVCwgVUxJU1RGTVRfRUxFTUVOVF9GSUVMRCwgJnN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfc3RyKTsKIAotICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOwotICAgIGF1dG8gZWxlbWVudFN0
cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVsZW1lbnQiX3MpOworICAgIGF1dG8gbGl0
ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3N0cik7CisgICAg
YXV0byBlbGVtZW50U3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiZWxlbWVudCJfc3Ry
KTsKIAogICAgIGF1dG8gY3JlYXRlUGFydCA9IFsmXSAoSlNTdHJpbmcqIHR5cGUsIEpTU3RyaW5n
KiB2YWx1ZSkgewogICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CkBAIC0yOTMsNyArMjkzLDcgQEAgSlNWYWx1ZSBJbnRsTGlzdEZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxp
c3QKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBib29sIG5leHQgPSB1Zm10dmFsX25leHRQ
b3NpdGlvbihmb3JtYXR0ZWRWYWx1ZSwgaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAgICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdz
Il9zKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7CiAgICAgICAgIGlm
ICghbmV4dCkKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0zMDEsNyArMzAxLDcgQEAgSlNWYWx1
ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGxpc3QKICAgICAgICAgaW50MzJfdCBlbmRJbmRleCA9IDA7CiAgICAgICAg
IHVjZnBvc19nZXRJbmRleGVzKGl0ZXJhdG9yLmdldCgpLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4
LCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9y
bWF0IGxpc3Qgb2Ygc3RyaW5ncyJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdz
Il9zdHIpOwogCiAgICAgICAgIGlmIChwcmV2aW91c0VuZEluZGV4IDwgYmVnaW5JbmRleCkgewog
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGpzU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcuc3Vic3Ry
aW5nKHByZXZpb3VzRW5kSW5kZXgsIGJlZ2luSW5kZXggLSBwcmV2aW91c0VuZEluZGV4KSk7CkBA
IC0zMjcsNyArMzI3LDcgQEAgSlNWYWx1ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxpc3QKICAgICByZXR1cm4gcGFy
dHM7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShsaXN0KTsKLSAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJp
bmdzIl9zKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zdHIpOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0Q29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNWQwMDg0NTNmZmY2ZmY3YWQ3M2JmNjk2OTZhNTI5NzQ1
MTAwZWZhNS4uNWUyMDFjMThiYTM2YzAxNDFmMzgyMzQyNzVjODcxMjRjOTNmMDcxZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW50bExpc3RGb3JtYXRDb25zdHJ1
Y3Rvcjo6SW50bExpc3RGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXIKIAogdm9pZCBJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEludGxMaXN0Rm9ybWF0UHJvdG90eXBlKiBsaXN0Rm9ybWF0UHJvdG90eXBlKQogewotICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiTGlzdEZvcm1hdCJfcywgUHJvcGVydHlBZGRp
dGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgMCwgIkxpc3RGb3JtYXQiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBsaXN0Rm9ybWF0UHJvdG90eXBlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgbGlzdEZvcm1hdFByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTGlzdEZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggYmY3MzdhYzViYTRhYmUxMjFiZWM2
MTVmODMwZjJiYjNjNjA2YjBiZi4uZmUzZGM3ZTFmNmY4MjliNmQzYzhmN2NjNDIyOTMxM2ZiNjQw
NDdiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RG
b3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcApAQCAtODMsNyArODMsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bExpc3RGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0LCAoSlNHbG9iYWxP
YmplY3QqIGdsbwogCiAgICAgYXV0byogbGlzdEZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bExp
c3RGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsaXN0Rm9y
bWF0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5MaXN0Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTGlzdEZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTGlzdEZvcm1hdCJfc3RyKTsKIAogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxpc3RGb3JtYXQtPmZvcm1hdChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CkBAIC05Niw3ICs5Niw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTGlzdEZvcm1hdFByb3RvdHlwZUZ1bmNG
b3JtYXRUb1BhcnRzLCAoSlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBsaXN0Rm9ybWF0ID0ganNE
eW5hbWljQ2FzdDxJbnRsTGlzdEZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBpZiAoIWxpc3RGb3JtYXQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxpc3RGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFy
dHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTGlzdEZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IExpc3RGb3JtYXQiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShsaXN0Rm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KQEAgLTEwOSw3ICsxMDksNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bExpc3RGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAo
SlNHbG9iYWxPYgogCiAgICAgYXV0byogbGlzdEZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bExp
c3RGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsaXN0Rm9y
bWF0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5MaXN0Rm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTGlzdEZvcm1hdC5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTGlzdEZvcm1hdCJf
c3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxp
c3RGb3JtYXQtPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCmluZGV4IGZjY2FkMzExODlhOGFk
N2UwMDI0OWQ0OTIwYzlhYThiYzYwNDdkYTUuLjM4MGMwMmM5ZTk4NzQ4NTA1YmIzZWU2NzA2M2Qx
OGQ3NGQ2Mzk4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMb2NhbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2Nh
bGUuY3BwCkBAIC0yNDcsMjggKzI0NywyOCBAQCB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxpemVM
b2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB0YQogCiAg
ICAgTG9jYWxlSURCdWlsZGVyIGxvY2FsZUlEOwogICAgIGlmICghbG9jYWxlSUQuaW5pdGlhbGl6
ZSh0YWcpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW52YWxpZCBsYW5ndWFnZSB0YWciX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImludmFsaWQgbGFuZ3VhZ2UgdGFnIl9zdHIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgU3RyaW5nIGxhbmd1YWdlID0gaW50bFN0cmluZ09wdGlvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxhbmd1YWdlLCB7IH0sIG51bGxw
dHIsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAg
ICAgaWYgKCFsYW5ndWFnZS5pc051bGwoKSAmJiAhaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcobGFu
Z3VhZ2UpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
bGFuZ3VhZ2UgaXMgbm90IGEgd2VsbC1mb3JtZWQgbGFuZ3VhZ2UgdmFsdWUiX3MpOworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImxhbmd1YWdlIGlzIG5vdCBh
IHdlbGwtZm9ybWVkIGxhbmd1YWdlIHZhbHVlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgU3RyaW5nIHNjcmlwdCA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zY3JpcHQsIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIXNjcmlw
dC5pc051bGwoKSAmJiAhaXNVbmljb2RlU2NyaXB0U3VidGFnKHNjcmlwdCkpIHsKLSAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzY3JpcHQgaXMgbm90IGEgd2Vs
bC1mb3JtZWQgc2NyaXB0IHZhbHVlIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzY3JpcHQgaXMgbm90IGEgd2VsbC1mb3JtZWQgc2NyaXB0IHZhbHVl
Il9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgU3RyaW5nIHJlZ2lvbiA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5y
ZWdpb24sIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKICAgICBpZiAoIXJlZ2lvbi5pc051bGwoKSAmJiAhaXNVbmljb2RlUmVn
aW9uU3VidGFnKHJlZ2lvbikpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJyZWdpb24gaXMgbm90IGEgd2VsbC1mb3JtZWQgcmVnaW9uIHZhbHVlIl9zKTsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpb24gaXMg
bm90IGEgd2VsbC1mb3JtZWQgcmVnaW9uIHZhbHVlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBJbnRsTG9jYWxlOjppbml0aWFsaXplTG9j
YWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdGEKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghY2FsZW5kYXIuaXNO
dWxsKCkpIHsKICAgICAgICAgaWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShjYWxl
bmRhcikpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiY2FsZW5kYXIgaXMgbm90IGEgd2VsbC1mb3JtZWQgY2FsZW5kYXIgdmFsdWUiX3MpOworICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRhciBp
cyBub3QgYSB3ZWxsLWZvcm1lZCBjYWxlbmRhciB2YWx1ZSJfc3RyKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVJRC5zZXRLZXl3b3JkVmFsdWUoImNhbGVu
ZGFyIl9zLCBjYWxlbmRhcik7CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBJbnRsTG9jYWxlOjpp
bml0aWFsaXplTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgdGEKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICgh
Y29sbGF0aW9uLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRp
ZmllclR5cGUoY29sbGF0aW9uKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJjb2xsYXRpb24gaXMgbm90IGEgd2VsbC1mb3JtZWQgY29sbGF0aW9u
IHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiY29sbGF0aW9uIGlzIG5vdCBhIHdlbGwtZm9ybWVkIGNvbGxhdGlvbiB2YWx1ZSJfc3Ry
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVJRC5zZXRL
ZXl3b3JkVmFsdWUoImNvbGxhdGlvbiJfcywgY29sbGF0aW9uKTsKQEAgLTMxNCw3ICszMTQsNyBA
QCB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxpemVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RyaW5nJiB0YQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAgICAgaWYgKCFudW1iZXJpbmdTeXN0ZW0uaXNOdWxsKCkpIHsKICAgICAgICAg
aWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShudW1iZXJpbmdTeXN0ZW0pKSB7Ci0g
ICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm51bWJlcmlu
Z1N5c3RlbSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBudW1iZXJpbmcgc3lzdGVtIHZhbHVlIl9zKTsK
KyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibnVtYmVy
aW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmluZyBzeXN0ZW0gdmFsdWUiX3N0
cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbG9jYWxlSUQuc2V0
S2V5d29yZFZhbHVlKCJudW1iZXJzIl9zLCBudW1iZXJpbmdTeXN0ZW0pOwpAQCAtMzIyLDcgKzMy
Miw3IEBAIHZvaWQgSW50bExvY2FsZTo6aW5pdGlhbGl6ZUxvY2FsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHRhCiAKICAgICBtX2xvY2FsZUlEID0gbG9jYWxl
SUQudG9DYW5vbmljYWwoKTsKICAgICBpZiAobV9sb2NhbGVJRC5pc051bGwoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxp
emUgTG9jYWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIExvY2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIH0KQEAgLTU1OCw3ICs1NTgsNyBAQCBKU0FycmF5KiBJbnRsTG9jYWxlOjpjYWxlbmRh
cnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBjb25zdGV4cHIgYm9vbCBjb21t
b25seVVzZWQgPSB0cnVlOwogICAgIGF1dG8gY2FsZW5kYXJzID0gc3RkOjp1bmlxdWVfcHRyPFVF
bnVtZXJhdGlvbiwgSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjYWxfZ2V0S2V5d29yZFZhbHVl
c0ZvckxvY2FsZSgiY2FsZW5kYXIiLCBtX2xvY2FsZUlELmRhdGEoKSwgY29tbW9ubHlVc2VkLCAm
c3RhdHVzKSk7CiAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0
cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNTcyLDcgKzU3Miw3IEBA
IEpTQXJyYXkqIEludGxMb2NhbGU6OmNhbGVuZGFycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKFdURk1vdmUoY2FsZW5kYXIpKTsKICAg
ICB9CiAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0cik7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNTk2LDcgKzU5Niw3IEBAIEpTQXJy
YXkqIEludGxMb2NhbGU6OmNvbGxhdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBjb25zdGV4cHIgYm9vbCBjb21tb25seVVzZWQgPSB0cnVlOwogICAgIGF1dG8gZW51bWVy
YXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVlbnVtX2Ns
b3NlPj4odWNvbF9nZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlKCJjb2xsYXRpb24iLCBtX2xvY2Fs
ZUlELmRhdGEoKSwgY29tbW9ubHlVc2VkLCAmc3RhdHVzKSk7CiAgICAgaWYgKCFVX1NVQ0NFU1Mo
c3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtNjEzLDcgKzYxMyw3IEBAIEpTQXJyYXkqIEludGxMb2NhbGU6OmNvbGxhdGlv
bnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIGVsZW1lbnRzLmFw
cGVuZChXVEZNb3ZlKGNvbGxhdGlvbikpOwogICAgIH0KICAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0
dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZh
bGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC02NDMsNyArNjQzLDcgQEAgSlNBcnJheSogSW50bExvY2FsZTo6aG91ckN5Y2xlcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHBhdHRl
cm47CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRwZ19nZXRC
ZXN0UGF0dGVybldpdGhPcHRpb25zLCBnZW5lcmF0b3IuZ2V0KCksIHNrZWxldG9uLCAxLCBVREFU
UEdfTUFUQ0hfSE9VUl9GSUVMRF9MRU5HVEgsIHBhdHRlcm4pOwogICAgIGlmICghVV9TVUNDRVNT
KHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKQEAgLTY1MywxOSArNjUzLDE5IEBAIEpTQXJyYXkqIEludGxMb2NhbGU6OmhvdXJD
eWNsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBjYXNlIEludGxEYXRlVGlt
ZUZvcm1hdDo6SG91ckN5Y2xlOjpOb25lOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEludGxE
YXRlVGltZUZvcm1hdDo6SG91ckN5Y2xlOjpIMTE6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5k
KCJoMTEiX3MpOworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgxMSJfc3RyKTsKICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICBjYXNlIEludGxEYXRl
VGltZUZvcm1hdDo6SG91ckN5Y2xlOjpIMTI6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJo
MTIiX3MpOworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgxMiJfc3RyKTsKICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICBjYXNlIEludGxEYXRlVGlt
ZUZvcm1hdDo6SG91ckN5Y2xlOjpIMjM6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJoMjMi
X3MpOworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgyMyJfc3RyKTsKICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICBjYXNlIEludGxEYXRlVGltZUZv
cm1hdDo6SG91ckN5Y2xlOjpIMjQ6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJoMjQiX3Mp
OworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgyNCJfc3RyKTsKICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICB9CkBAIC02ODgsNyArNjg4LDcgQEAg
SlNBcnJheSogSW50bExvY2FsZTo6bnVtYmVyaW5nU3lzdGVtcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1
dG8gbnVtYmVyaW5nU3lzdGVtID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJpbmdTeXN0ZW0sIElD
VURlbGV0ZXI8dW51bXN5c19jbG9zZT4+KHVudW1zeXNfb3BlbihtX2xvY2FsZUlELmRhdGEoKSwg
JnN0YXR1cykpOwogICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9z
dHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgZWxlbWVudHMuYXBwZW5k
KHVudW1zeXNfZ2V0TmFtZShudW1iZXJpbmdTeXN0ZW0uZ2V0KCkpKTsKQEAgLTcxMSw3ICs3MTEs
NyBAQCBKU1ZhbHVlIEludGxMb2NhbGU6OnRpbWVab25lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8g
ZW51bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVl
bnVtX2Nsb3NlPj4odWNhbF9vcGVuVGltZVpvbmVJREVudW1lcmF0aW9uKFVDQUxfWk9ORV9UWVBF
X0NBTk9OSUNBTCwgcmVnaW9uLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAg
ICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCBKU1ZhbHVlIEludGxMb2Nh
bGU6OnRpbWVab25lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHdoaWxlICgo
Y29sbGF0aW9uID0gdWVudW1fbmV4dChlbnVtZXJhdGlvbi5nZXQoKSwgJmxlbmd0aCwgJnN0YXR1
cykpICYmIFVfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICBlbGVtZW50cy5jb25zdHJ1Y3RBbmRB
cHBlbmQoY29sbGF0aW9uLCBsZW5ndGgpOwogICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9j
YWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImlu
dmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNzM1
LDcgKzczNSw3IEBAIEpTT2JqZWN0KiBJbnRsTG9jYWxlOjp0ZXh0SW5mbyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwog
ICAgIFVMYXlvdXRUeXBlIGxheW91dCA9IHVsb2NfZ2V0Q2hhcmFjdGVyT3JpZW50YXRpb24obV9s
b2NhbGVJRC5kYXRhKCksICZzdGF0dXMpOwogICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9j
YWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImlu
dmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAg
LTc0MywxNiArNzQzLDE2IEBAIEpTT2JqZWN0KiBJbnRsTG9jYWxlOjp0ZXh0SW5mbyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHN3aXRjaCAobGF5b3V0KSB7CiAgICAgZGVmYXVs
dDoKICAgICBjYXNlIFVMT0NfTEFZT1VUX0xUUjoKLSAgICAgICAgbGF5b3V0U3RyaW5nID0ganNT
dHJpbmcodm0sICJsdHIiX3MpOworICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwg
Imx0ciJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVTE9DX0xBWU9VVF9SVEw6Ci0g
ICAgICAgIGxheW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAicnRsIl9zKTsKKyAgICAgICAgbGF5
b3V0U3RyaW5nID0ganNTdHJpbmcodm0sICJydGwiX3N0cik7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgVUxPQ19MQVlPVVRfVFRCOgotICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2
bSwgInR0YiJfcyk7CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAidHRiIl9z
dHIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVMT0NfTEFZT1VUX0JUVDoKLSAgICAgICAg
bGF5b3V0U3RyaW5nID0ganNTdHJpbmcodm0sICJidHQiX3MpOworICAgICAgICBsYXlvdXRTdHJp
bmcgPSBqc1N0cmluZyh2bSwgImJ0dCJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBA
IC03NjksNyArNzY5LDcgQEAgSlNPYmplY3QqIEludGxMb2NhbGU6OndlZWtJbmZvKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CiAgICAgYXV0byBjYWxlbmRhciA9IHN0ZDo6dW5pcXVlX3B0cjxVQ2FsZW5kYXIsIElDVURl
bGV0ZXI8dWNhbF9jbG9zZT4+KHVjYWxfb3BlbihudWxscHRyLCAwLCBtX2xvY2FsZUlELmRhdGEo
KSwgVUNBTF9ERUZBVUxULCAmc3RhdHVzKSk7CiAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBs
b2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApA
QCAtODIxLDcgKzgyMSw3IEBAIEpTT2JqZWN0KiBJbnRsTG9jYWxlOjp3ZWVrSW5mbyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGZvciAoaW50MzJfdCBkYXkgPSAxOyBkYXkgPD0g
NzsgKytkYXkpIHsKICAgICAgICAgVUNhbGVuZGFyV2Vla2RheVR5cGUgdHlwZSA9IGNhbm9uaWNh
bGl6ZURheU9mV2Vla1R5cGUodWNhbF9nZXREYXlPZldlZWtUeXBlKGNhbGVuZGFyLmdldCgpLCBj
b252ZXJ0TW9uZGF5QmFzZWREYXlUb1VDYWxlbmRhckRheXNPZldlZWsoZGF5KSwgJnN0YXR1cykp
OwogICAgICAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxl
Il9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAg
c3dpdGNoICh0eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcAppbmRleCAzNzY1M2JiMzcxMzk1NzcyMjY1ZWFl
ZWMzZTExNWRiMGYxOGViYmJjLi5lMjUyNWYxNDkyNzQ1NWE5YjgxNWVjYTZkZWMwYTgzOGQ4ZTIz
ZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
b2NhbGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgSW50bExvY2FsZUNvbnN0cnVj
dG9yOjpJbnRsTG9jYWxlQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IAogdm9pZCBJbnRsTG9jYWxlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50
bExvY2FsZVByb3RvdHlwZSogbG9jYWxlUHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCAxLCAiTG9jYWxlIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0
cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiTG9j
YWxlIl9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlv
bik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgbG9jYWxlUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CiAgICAgbG9jYWxlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KQEAgLTc5LDcgKzc5LDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEludGxMb2NhbGUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKIAogICAgIEpTVmFsdWUgdGFnID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIXRhZy5pc1N0cmluZygpICYmICF0YWcuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZp
cnN0IGFyZ3VtZW50IHRvIEludGwuTG9jYWxlIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gb2JqZWN0
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEludGwuTG9jYWxlIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4g
b2JqZWN0Il9zdHIpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGxvY2FsZS0+aW5pdGlh
bGl6ZUxvY2FsZShnbG9iYWxPYmplY3QsIHRhZywgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5
cGUuY3BwCmluZGV4IDA5MGM5MjUzMjMxZDYyMzlmOTQ5ZDM4MjZiMGRmNjQ2NDI2MDkyOGYuLjg5
MDRhMWVmZTdkMWQ0NmFiYTRkMGIwN2EyOTA4YjgxNjE0OWI3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCkBAIC0x
MTgsNyArMTE4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxMb2NhbGVQcm90b3R5
cGVGdW5jTWF4aW1pemUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGF1dG8qIGxvY2Fs
ZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5tYXhpbWl6ZSBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubWF4
aW1pemUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBJ
bnRsTG9jYWxlKiBuZXdMb2NhbGUgPSBJbnRsTG9jYWxlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+bG9jYWxlU3RydWN0dXJlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTEzNCw3ICsx
MzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bExvY2FsZVByb3RvdHlwZUZ1bmNN
aW5pbWl6ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAg
IGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm1pbmltaXplIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5taW5pbWl6ZSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIEludGxMb2Nh
bGUqIG5ld0xvY2FsZSA9IEludGxMb2NhbGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5sb2Nh
bGVTdHJ1Y3R1cmUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMTUwLDcgKzE1MCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3RyaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFs
b2NhbGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgY29uc3QgU3RyaW5nJiBm
dWxsU3RyaW5nID0gbG9jYWxlLT50b1N0cmluZygpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZ1bGxTdHJpbmcuaXNFbXB0eSgpID8ganNVbmRlZmluZWQo
KSA6IGpzU3RyaW5nKHZtLCBmdWxsU3RyaW5nKSkpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUsIChK
U0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PElu
dGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9j
YWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmJhc2VOYW1lIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZSBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYmFz
ZU5hbWUgPSBsb2NhbGUtPmJhc2VOYW1lKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoYmFzZU5hbWUuaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpz
U3RyaW5nKHZtLCBiYXNlTmFtZSkpKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxP
YmplY3QqIGdsbwogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxl
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
TG9jYWxlLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FsZW5kYXIgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBjb25zdCBTdHJpbmcmIGNhbGVuZGFyID0g
bG9jYWxlLT5jYWxlbmRhcigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNhbGVuZGFyLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZt
LCBjYWxlbmRhcikpKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFycywgKEpTR2xvYmFsT2JqZWN0KiBn
bAogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnBy
b3RvdHlwZS5jYWxlbmRhcnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFycyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIExvY2FsZSJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGxvY2FsZS0+Y2FsZW5kYXJzKGdsb2JhbE9iamVjdCkpKTsKIH0KQEAgLTIwNSw3
ICsyMDUsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckNhc2VGaXJzdCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0byogbG9jYWxlID0g
anNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNh
c2VGaXJzdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAg
IGNvbnN0IFN0cmluZyYgY2FzZUZpcnN0ID0gbG9jYWxlLT5jYXNlRmlyc3QoKTsKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYXNlRmlyc3QuaXNOdWxsKCkg
PyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNhc2VGaXJzdCkpKTsKQEAgLTIxOSw3ICsy
MTksNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNvbGxhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24gY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxh
dGlvbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIGNv
bnN0IFN0cmluZyYgY29sbGF0aW9uID0gbG9jYWxlLT5jb2xsYXRpb24oKTsKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRpb24uaXNOdWxsKCkgPyBq
c1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNvbGxhdGlvbikpKTsKQEAgLTIzMyw3ICsyMzMs
NyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckNv
bGxhdGlvbnMsIChKU0dsb2JhbE9iamVjdCogZwogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5h
bWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb25zIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRp
b25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT5jb2xsYXRpb25z
KGdsb2JhbE9iamVjdCkpKTsKIH0KQEAgLTI0Niw3ICsyNDYsNyBAQCBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbAogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9j
YWxlLnByb3RvdHlwZS5ob3VyQ3ljbGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2Nh
bGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZSBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaG91ckN5Y2xlID0g
bG9jYWxlLT5ob3VyQ3ljbGUoKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShob3VyQ3ljbGUuaXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmco
dm0sIGhvdXJDeWNsZSkpKTsKQEAgLTI2MCw3ICsyNjAsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZXMsIChKU0dsb2JhbE9iamVj
dCogZwogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxl
LnByb3RvdHlwZS5ob3VyQ3ljbGVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxl
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyQ3ljbGVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUobG9jYWxlLT5ob3VyQ3ljbGVzKGdsb2JhbE9iamVjdCkpKTsKIH0KQEAg
LTI3Myw3ICsyNzMsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3Rv
dHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYgogCiAgICAgYXV0byogbG9j
YWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmljIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlw
ZS5udW1lcmljIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGxv
Y2FsZS0+bnVtZXJpYygpID09IFRyaVN0YXRlOjpUcnVlKSkpOwogfQpAQCAtMjg2LDcgKzI4Niw3
IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVt
YmVyaW5nU3lzdGVtLCAoSlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFt
aWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbSBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubnVt
YmVyaW5nU3lzdGVtIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwog
CiAgICAgY29uc3QgU3RyaW5nJiBudW1iZXJpbmdTeXN0ZW0gPSBsb2NhbGUtPm51bWJlcmluZ1N5
c3RlbSgpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51
bWJlcmluZ1N5c3RlbS5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgbnVt
YmVyaW5nU3lzdGVtKSkpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtcywgKEpTR2xvYmFs
T2JqCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUu
cHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbXMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBM
b2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbXMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUtPm51bWJlcmluZ1N5c3RlbXMoZ2xvYmFs
T2JqZWN0KSkpOwogfQpAQCAtMzEzLDcgKzMxMyw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
UihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UsIChKU0dsb2JhbE9iamVjdCogZ2xv
CiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJv
dG90eXBlLmxhbmd1YWdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuTG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IExvY2FsZSJfc3RyKTsKIAogICAgIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UgPSBsb2NhbGUtPmxh
bmd1YWdlKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
bGFuZ3VhZ2UuaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBsYW5ndWFn
ZSkpKTsKQEAgLTMyNyw3ICszMjcsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExv
Y2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAg
YXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5z
Y3JpcHQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUu
cHJvdG90eXBlLnNjcmlwdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3Ry
KTsKIAogICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0ID0gbG9jYWxlLT5zY3JpcHQoKTsKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzY3JpcHQuaXNFbXB0eSgp
ID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBzY3JpcHQpKSk7CkBAIC0zNDEsNyArMzQx
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJS
ZWdpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGF1dG8qIGxvY2FsZSA9IGpzRHlu
YW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCFsb2NhbGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUucmVnaW9uIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5yZWdpb24gY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBjb25zdCBTdHJp
bmcmIHJlZ2lvbiA9IGxvY2FsZS0+cmVnaW9uKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUocmVnaW9uLmlzRW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBq
c1N0cmluZyh2bSwgcmVnaW9uKSkpOwpAQCAtMzU1LDcgKzM1NSw3IEBAIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyVGltZVpvbmVzLCAoSlNHbG9iYWxP
YmplY3QqIGdsCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLnRpbWVab25lcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUudGltZVpvbmVzIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT50aW1lWm9uZXMoZ2xvYmFsT2JqZWN0KSkpOwogfQpA
QCAtMzY4LDcgKzM2OCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyVGV4dEluZm8sIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBs
b2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnRleHRJbmZv
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3Rv
dHlwZS50ZXh0SW5mbyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsK
IAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZS0+
dGV4dEluZm8oZ2xvYmFsT2JqZWN0KSkpOwogfQpAQCAtMzgxLDcgKzM4MSw3IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyV2Vla0luZm8sIChKU0ds
b2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxM
b2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxl
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW50bC5Mb2NhbGUucHJvdG90eXBlLndlZWtJbmZvIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS53ZWVrSW5mbyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZS0+d2Vla0luZm8oZ2xvYmFsT2JqZWN0KSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmNwcAppbmRleCA5NTNjMzlmZTY0YTllODRkMGJiNmMxMGMwNDJiMDczYWY2OWUzNTY5Li5mN2Y0
YjllMTIyNmI5MGQ5ZWU4ZDk4ZmNjZjJjNTI4NTMwNGI5M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzA4LDcgKzMw
OCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKICAgICBpZiAoIW51bWJlcmluZ1N5c3RlbS5pc051bGwoKSkgewogICAg
ICAgICBpZiAoIWlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKG51bWJlcmluZ1N5c3RlbSkp
IHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibnVt
YmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmluZyBzeXN0ZW0gdmFsdWUi
X3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJu
dW1iZXJpbmdTeXN0ZW0gaXMgbm90IGEgd2VsbC1mb3JtZWQgbnVtYmVyaW5nIHN5c3RlbSB2YWx1
ZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVP
cHRpb25zW3N0YXRpY19jYXN0PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6TnUpXSA9
IG51bWJlcmluZ1N5c3RlbTsKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIEludGxOdW1iZXJGb3Jt
YXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYQogCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2NhbGU7CiAgICAgaWYgKG1fbG9jYWxl
LmlzRW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxvY2Fs
ZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zdHIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBJbnRs
TnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmEKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwog
ICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFpc1dlbGxGb3JtZWRD
dXJyZW5jeUNvZGUoY3VycmVuY3kpKSB7Ci0gICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgImN1cnJlbmN5
IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpKTsKKyAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSJfc3Ry
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDAsNyArMzQw
LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICB1bnNpZ25lZCBjdXJyZW5jeURpZ2l0
cyA9IDA7CiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CiAgICAgICAgIGlm
IChjdXJyZW5jeS5pc051bGwoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImN1cnJlbmN5IG11c3QgYmUgYSBzdHJpbmciX3MpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImN1cnJlbmN5IG11c3QgYmUg
YSBzdHJpbmciX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzYx
LDEyICszNjEsMTIgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBpZiAoIXVuaXQuaXNO
dWxsKCkpIHsKICAgICAgICAgd2VsbEZvcm1lZFVuaXQgPSB3ZWxsRm9ybWVkVW5pdElkZW50aWZp
ZXIodW5pdCk7CiAgICAgICAgIGlmICghd2VsbEZvcm1lZFVuaXQpIHsKLSAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBpcyBub3QgYSB3ZWxsLWZv
cm1lZCB1bml0IGlkZW50aWZpZXIiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIG5vdCBhIHdlbGwtZm9ybWVkIHVuaXQgaWRlbnRp
ZmllciJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX3Vu
aXQgPSB1bml0OwogICAgIH0gZWxzZSBpZiAobV9zdHlsZSA9PSBTdHlsZTo6VW5pdCkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBtdXN0IGJlIGEg
c3RyaW5nIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InVuaXQgbXVzdCBiZSBhIHN0cmluZyJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzkxLDExICszOTEsMTEgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVt
YmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgWyZd
KHVuc2lnbmVkIGNhbmRpZGF0ZSkgewogICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZSA9PSBt
X3JvdW5kaW5nSW5jcmVtZW50OwogICAgICAgICB9KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5kaW5nSW5jcmVtZW50IG11c3QgYmUgb25lIG9m
IDEsIDIsIDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAs
IDI1MDAsIDUwMDAiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInJvdW5kaW5nSW5jcmVtZW50IG11c3QgYmUgb25lIG9mIDEsIDIsIDUsIDEwLCAyMCwg
MjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAsIDUwMDAiX3N0cik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0g
MSAmJiBtX3JvdW5kaW5nVHlwZSAhPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cykg
ewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5kaW5n
IHR5cGUgaXMgbm90IGZyYWN0aW9uLWRpZ2l0cyB3aGlsZSByb3VuZGluZ0luY3JlbWVudCBpcyBz
cGVjaWZpZWQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInJvdW5kaW5nIHR5cGUgaXMgbm90IGZyYWN0aW9uLWRpZ2l0cyB3aGlsZSByb3VuZGluZ0lu
Y3JlbWVudCBpcyBzcGVjaWZpZWQiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTYzNSwxNCArNjM1LDE0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVu
aXF1ZV9wdHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1m
X29wZW5Gb3JTa2VsZXRvbkFuZExvY2FsZSh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3
Lmxlbmd0aCgpLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCAmc3RhdHVzKSk7CiAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGlu
aXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQogICAgIG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVy
UmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxhcHNl
QW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0
aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX0FVVE8sIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tfQVBQ
Uk9YSU1BVEVMWSwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwgbnVsbHB0ciwgJnN0
YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9y
bWF0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgpAQCAtNzA3LDE0ICs3MDcsMTQgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0
Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmEKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBtX251bWJlckZv
cm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBJQ1VEZWxldGVyPHVudW1fY2xv
c2U+Pih1bnVtX29wZW4oc3R5bGUsIG51bGxwdHIsIDAsIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9u
cy5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3N0
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6
Q3VycmVuY3kpIHsKICAgICAgICAgdW51bV9zZXRUZXh0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0
LmdldCgpLCBVTlVNX0NVUlJFTkNZX0NPREUsIFN0cmluZ1ZpZXcobV9jdXJyZW5jeSkudXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKCksIG1fY3VycmVuY3kubGVuZ3RoKCksICZzdGF0dXMpOwogICAgICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3Mp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTc2NywxOCArNzY3LDE4IEBAIEpTVmFsdWUgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1
ZSkgY29uCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBm
b3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVs
ZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVy
Rm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zdHIpOwogICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9k
dWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0dGVkTnVtYmVyLmdldCgp
LCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVt
YmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAjZWxzZQogICAgIEFTU0VS
VChtX251bWJlckZvcm1hdCk7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24odW51bV9mb3JtYXREb3VibGUsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwg
YnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIG51bWJlci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zdHIpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIpKSk7CiB9CkBAIC03
OTgsMTggKzc5OCwxOCBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTWF0aGVtYXRpY2FsVgogICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1
bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+
Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zdHIp
OwogICAgIHVudW1mX2Zvcm1hdERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHN0cmlu
Zy5kYXRhKCksIHN0cmluZy5sZW5ndGgoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVz
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zdHIpOwogICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0dGVkTnVtYmVyLmdl
dCgpLCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEg
QmlnSW50LiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3N0cik7CiAjZWxzZQogICAgIEFT
U0VSVChtX251bWJlckZvcm1hdCk7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVj
aW5nRnVuY3Rpb24odW51bV9mb3JtYXREZWNpbWFsLCBtX251bWJlckZvcm1hdC5nZXQoKSwgc3Ry
aW5nLmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIEJpZ0ludC4iX3N0cik7CiAjZW5kaWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KQEAgLTgyMywzMSArODIzLDMxIEBAIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlIHN0YXJ0CiAgICAgQVNTRVJUKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIpOwogCiAgICAg
aWYgKHN0ZDo6aXNuYW4oc3RhcnQpIHx8IHN0ZDo6aXNuYW4oZW5kKSkKLSAgICAgICAgcmV0dXJu
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJlcnMgYXJl
IG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3N0cik7CiAK
ICAgICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxh
cmdlciB0aGFuIGVuZCJfc3RyKTsKIAogICAgIGlmIChpc05lZ2F0aXZlWmVybyhlbmQpICYmIHN0
YXJ0ID49IDApCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVu
ZCJfc3RyKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1
dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdlLCBJQ1VEZWxl
dGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGEgcmFuZ2UiX3N0cik7CiAKICAgICB1bnVtcmZfZm9ybWF0RG91YmxlUmFuZ2UobV9u
dW1iZXJSYW5nZUZvcm1hdHRlci5nZXQoKSwgc3RhcnQsIGVuZCwgcmFuZ2UuZ2V0KCksICZzdGF0
dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIGF1dG8qIGZvcm1hdHRlZFZhbHVl
ID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUocmFuZ2UuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQg
YSByYW5nZSJfc3RyKTsKIAogICAgIGludDMyX3QgbGVuZ3RoID0gMDsKICAgICBjb25zdCBVQ2hh
ciogc3RyaW5nID0gdWZtdHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZsZW5ndGgsICZz
dGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2Ui
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIHJldHVybiBqc1N0cmluZyh2
bSwgU3RyaW5nKHN0cmluZywgbGVuZ3RoKSk7CiB9CkBAIC04NjAsNyArODYwLDcgQEAgSlNWYWx1
ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBJbnRsTWF0aGVtYXQKICAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CiAK
ICAgICBpZiAoc3RhcnQubnVtYmVyVHlwZSgpID09IEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVt
YmVyVHlwZTo6TmFOIHx8IGVuZC5udW1iZXJUeXBlKCkgPT0gSW50bE1hdGhlbWF0aWNhbFZhbHVl
OjpOdW1iZXJUeXBlOjpOYU4pCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQYXNzZWQg
bnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zdHIpOwogCiAgICAgc3RhcnQuZW5zdXJlTm9uRG91
YmxlKCk7CiAgICAgY29uc3QgYXV0byYgc3RhcnRTdHJpbmcgPSBzdGFydC5nZXRTdHJpbmcoKTsK
QEAgLTg3MSwyMCArODcxLDIwIEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFu
Z2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bE1hdGhlbWF0CiAgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byByYW5nZSA9IHN0ZDo6dW5pcXVl
X3B0cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0
Pj4odW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsK
IAogICAgIHVudW1yZl9mb3JtYXREZWNpbWFsUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1hdHRlci5n
ZXQoKSwgc3RhcnRTdHJpbmcuZGF0YSgpLCBzdGFydFN0cmluZy5sZW5ndGgoKSwgZW5kU3RyaW5n
LmRhdGEoKSwgZW5kU3RyaW5nLmxlbmd0aCgpLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CiAgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZv
cm1hdCBhIHJhbmdlIl9zdHIpOwogCiAgICAgYXV0byogZm9ybWF0dGVkVmFsdWUgPSB1bnVtcmZf
cmVzdWx0QXNWYWx1ZShyYW5nZS5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9z
dHIpOwogCiAgICAgaW50MzJfdCBsZW5ndGggPSAwOwogICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcg
PSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmxlbmd0aCwgJnN0YXR1cyk7CiAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRv
IGZvcm1hdCBhIHJhbmdlIl9zdHIpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmco
c3RyaW5nLCBsZW5ndGgpKTsKIH0KQEAgLTEwMzAsNyArMTAzMCw3IEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKICAgICBpbnQzMl90IGZvcm1hdHRlZFN0cmluZ0xlbmd0aCA9IDA7CiAgICAgY29u
c3QgVUNoYXIqIGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIgPSB1Zm10dmFsX2dldFN0cmluZyhmb3Jt
YXR0ZWRWYWx1ZSwgJmZvcm1hdHRlZFN0cmluZ0xlbmd0aCwgJnN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciByYW5nZSJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciBy
YW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgcmVzdWx0U3Ry
aW5nKGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIsIGZvcm1hdHRlZFN0cmluZ0xlbmd0aCk7CkBAIC0x
MDM5LDE0ICsxMDM5LDE0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1Bh
cnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAvLyBTbyB3ZSBk
byBub3QgY29uc3RyYWludCBpdGVyYXRvci4KICAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjp1bmlx
dWVfcHRyPFVDb25zdHJhaW5lZEZpZWxkUG9zaXRpb24sIElDVURlbGV0ZXI8dWNmcG9zX2Nsb3Nl
Pj4odWNmcG9zX29wZW4oJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZv
cm1hdCBudW1iZXIgcmFuZ2UiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3N0cik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNoYXJlZFN0cmluZyA9IGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgInNoYXJlZCJfcyk7Ci0gICAgYXV0byBzdGFydFJhbmdlU3RyaW5nID0ganNOb250
cml2aWFsU3RyaW5nKHZtLCAic3RhcnRSYW5nZSJfcyk7Ci0gICAgYXV0byBlbmRSYW5nZVN0cmlu
ZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVuZFJhbmdlIl9zKTsKLSAgICBhdXRvIGxpdGVy
YWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsKKyAgICBhdXRv
IHNoYXJlZFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInNoYXJlZCJfc3RyKTsKKyAg
ICBhdXRvIHN0YXJ0UmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJzdGFydFJh
bmdlIl9zdHIpOworICAgIGF1dG8gZW5kUmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJlbmRSYW5nZSJfc3RyKTsKKyAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJsaXRlcmFsIl9zdHIpOwogCiAgICAgV1RGOjpSYW5nZTxpbnQzMl90PiBz
dGFydFJhbmdlIHsgLTEsIC0xIH07CiAgICAgV1RGOjpSYW5nZTxpbnQzMl90PiBlbmRSYW5nZSB7
IC0xLCAtMSB9OwpAQCAtMTA1NSw3ICsxMDU1LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpm
b3JtYXRSYW5nZVRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGJvb2wgbmV4dCA9IHVmbXR2YWxfbmV4dFBvc2l0
aW9uKGZvcm1hdHRlZFZhbHVlLCBpdGVyYXRvci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9zKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IG51bWJlciByYW5nZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIW5leHQpCkBAIC0xMDYzLDEzICsxMDYzLDEzIEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKIAogICAgICAgICBpbnQzMl90IGNhdGVnb3J5ID0gdWNmcG9zX2dldENhdGVnb3J5
KGl0ZXJhdG9yLmdldCgpLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9z
dHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaW50MzJfdCBm
aWVsZFR5cGUgPSB1Y2Zwb3NfZ2V0RmllbGQoaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAg
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciByYW5nZSJfcyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXRSYW5nZVRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
ICAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKICAgICAgICAgdWNmcG9zX2dldEluZGV4ZXMoaXRl
cmF0b3IuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgsICZzdGF0dXMpOwogICAgICAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciBpbnRlcnZhbCJfcyk7Cisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBudW1iZXIgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTE1MiwzNSArMTE1MiwzNSBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6
OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibAog
ICAgIEFTU0VSVChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKIAogICAgIGlmIChzdGQ6OmlzbmFu
KHN0YXJ0KSB8fCBzdGQ6OmlzbmFuKGVuZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2Ui
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJQYXNzZWQgbnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zdHIpOwogCiAgICAgaWYgKGVuZCA8
IHN0YXJ0KQotICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQi
X3N0cik7CiAKICAgICBpZiAoaXNOZWdhdGl2ZVplcm8oZW5kKSAmJiBzdGFydCA+PSAwKQotICAg
ICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBp
cyBsYXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3N0cik7CiAKICAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHJhbmdlID0gc3Rk
Ojp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xv
c2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zdHIpOwogCiAgICAgdW51bXJmX2Zvcm1hdERvdWJsZVJhbmdlKG1fbnVtYmVyUmFuZ2VGb3Jt
YXR0ZXIuZ2V0KCksIHN0YXJ0LCBlbmQsIHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0
IGEgcmFuZ2UiX3N0cik7CiAKICAgICBhdXRvKiBmb3JtYXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1
bHRBc1ZhbHVlKHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3N0cik7
CiAKICAgICBib29sIGVxdWFsID0gbnVtYmVyRmllbGRzUHJhY3RpY2FsbHlFcXVhbChmb3JtYXR0
ZWRWYWx1ZSwgc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVt
YmVyIHJhbmdlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAogICAgIGlmIChlcXVhbCkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBmb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgc3RhcnQsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgInNoYXJlZCJfcykpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBmb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgc3RhcnQsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgInNoYXJlZCJfc3RyKSkpOwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlD
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKSB7
CkBAIC0xMjAyLDcgKzEyMDIsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJh
bmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTQogICAgIEFTU0VS
VChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKIAogICAgIGlmIChzdGFydC5udW1iZXJUeXBlKCkg
PT0gSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpOYU4gfHwgZW5kLm51bWJlclR5
cGUoKSA9PSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6Ok5hTikKLSAgICAgICAg
cmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJl
cnMgYXJlIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3N0
cik7CiAKICAgICBzdGFydC5lbnN1cmVOb25Eb3VibGUoKTsKICAgICBjb25zdCBhdXRvJiBzdGFy
dFN0cmluZyA9IHN0YXJ0LmdldFN0cmluZygpOwpAQCAtMTIxMywyNCArMTIxMywyNCBAQCBKU1Zh
bHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBJbnRsTQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdl
LCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0
dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3N0cik7CiAKICAgICB1bnVtcmZfZm9ybWF0RGVjaW1h
bFJhbmdlKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIuZ2V0KCksIHN0YXJ0U3RyaW5nLmRhdGEoKSwg
c3RhcnRTdHJpbmcubGVuZ3RoKCksIGVuZFN0cmluZy5kYXRhKCksIGVuZFN0cmluZy5sZW5ndGgo
KSwgcmFuZ2UuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAg
IGF1dG8qIGZvcm1hdHRlZFZhbHVlID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUocmFuZ2UuZ2V0KCks
ICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFu
Z2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIGJvb2wgZXF1YWwgPSBu
dW1iZXJGaWVsZHNQcmFjdGljYWxseUVxdWFsKGZvcm1hdHRlZFZhbHVlLCBzdGF0dXMpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3MpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBu
dW1iZXIgcmFuZ2UiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaWYg
KGVxdWFsKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZvcm1hdFRvUGFydHMo
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN0YXJ0KSwganNOb250cml2aWFsU3RyaW5nKHZtLCAic2hh
cmVkIl9zKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZvcm1hdFRvUGFy
dHMoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN0YXJ0KSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
c2hhcmVkIl9zdHIpKSk7CiAKICAgICBKU0FycmF5KiBwYXJ0cyA9IEpTQXJyYXk6OnRyeUNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwogICAgIGlmICghcGFydHMpIHsKQEAg
LTE0MDgsMTEgKzE0MDgsMTEgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGlu
Z1ZhbHVlKFZNJiB2bSwgVXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCiAgICAgY2FzZSBVc2VHcm91
cGluZzo6RmFsc2U6CiAgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwogICAgIGNhc2Ug
VXNlR3JvdXBpbmc6Ok1pbjI6Ci0gICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJtaW4yIl9zKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm1pbjIi
X3N0cik7CiAgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoKLSAgICAgICAgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgImF1dG8iX3MpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFs
U3RyaW5nKHZtLCAiYXV0byJfc3RyKTsKICAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6Ci0g
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJhbHdheXMiX3MpOworICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYWx3YXlzIl9zdHIpOwogICAgIH0KICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTE0ODksNyArMTQ4OSw3IEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0eWxlCiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgICAgICBpbnQzMl90IGZpZWxkVHlwZSA9IGl0ZXJhdG9yLm5leHQoYmVnaW5JbmRleCwg
ZW5kSW5kZXgsIHN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBp
dGVyYXRlIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaXRlcmF0ZSBmaWVsZCBwb3Np
dGlvbiBpdGVyYXRvciJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICBpZiAoZmllbGRUeXBlIDwgMCkKQEAgLTE1MDAsNyArMTUwMCw3IEBAIHZvaWQgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0eWxlCiAKICAgICBhdXRvIGZsYXR0ZW4gPSBmbGF0dGVuRmllbGRzKFdURk1vdmUo
ZmllbGRzKSwgc3RyaW5nTGVuZ3RoKTsKIAotICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOworICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3N0cik7CiAgICAgSWRlbnRpZmllciB1
bml0TmFtZTsKICAgICBpZiAodW5pdCkKICAgICAgICAgdW5pdE5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidW5pdCIpOwpAQCAtMTUzMCwyOSArMTUzMCwyOSBAQCBKU1ZhbHVlIElu
dGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YmxlIHZhbAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IGF1dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZpZWxkUG9zaXRpb25JdGVyYXRvciwg
VUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+KHVmaWVsZHBvc2l0ZXJfb3Blbigmc3RhdHVz
KSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9u
IGl0ZXJhdG9yIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfc3RyKTsK
IAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKICNpZiBIQVZFKElDVV9VX05VTUJFUl9G
T1JNQVRURVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKICAgICBhdXRvIGZvcm1h
dHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVy
PHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IGEgbnVtYmVyLiJfc3RyKTsKICAgICB1bnVtZl9mb3JtYXREb3VibGUobV9udW1iZXJGb3Jt
YXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2lu
Z0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIHJl
c3VsdCk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfc3RyKTsKICAgICB1bnVtZl9yZXN1bHRHZXRB
bGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGZpZWxkSXRyLmdldCgpLCAm
c3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJl
ci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zdHIpOwogICAgIEludGxGaWVsZEl0ZXJh
dG9yIGl0ZXJhdG9yKCpmaWVsZEl0ci5nZXQoKSk7CiAjZWxzZQogICAgIEFTU0VSVChtX251bWJl
ckZvcm1hdCk7CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1f
Zm9ybWF0RG91YmxlRm9yRmllbGRzLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3Vs
dCwgZmllbGRJdHIuZ2V0KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9y
bWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAgICAgSW50
bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdldCgpKTsKICNlbmRpZgogCkBAIC0x
NTgwLDI1ICsxNTgwLDI1IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTWF0aGVtCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBmaWVsZEl0ciA9IHN0ZDo6dW5pcXVl
X3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRl
cj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVuIGZp
ZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zdHIpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVz
dWx0OwogICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CiAgICAgYXV0byBmb3JtYXR0ZWRO
dW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVsZXRlcjx1bnVt
Zl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBh
IG51bWJlci4iX3N0cik7CiAKICAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0
dGVyLmdldCgpLCBzdHJpbmcuZGF0YSgpLCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJl
ci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfc3RyKTsKIAogICAgIHN0
YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywg
Zm9ybWF0dGVkTnVtYmVyLmdldCgpLCByZXN1bHQpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3N0
cik7CiAKICAgICB1bnVtZl9yZXN1bHRHZXRBbGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWROdW1i
ZXIuZ2V0KCksIGZpZWxkSXRyLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zdHIpOwogCiAgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDE2NDA4OTk3YzE4ZjdjNzYyOGY3
NzViOGQ0MWRmNzcyNDJhNGQxNi4uM2MxMjE0MDNhOGEyMmNmY2E4ZDY0MjNhZTIxNDAyOTdmOWI1
MDU3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC03NCw3ICs3NCw3IEBAIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1CiAKIHZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZv
cm1hdFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIk51bWJl
ckZvcm1hdCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0
aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIk51bWJlckZvcm1hdCJfc3Ry
LCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIG51bWJlckZvcm1hdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdElubGluZXMuaAppbmRleCAxYWY0MWVhMjEyM2I1ZDZmYTI5MWNhZmQzZjJl
ZjYyZGVhYjc4Mzk0Li4zOTc3ZDkwMjI5NTBkZGFmZjM2YTQzMjMyY2FkMWY5MDlkMmQ1OThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRJbmxpbmVzLmgKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdp
dE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bFR5cGUqIGludGxJbnMK
ICAgICAgICAgICAgIGVsc2UgaWYgKG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRW
YWx1ZSkKICAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBzdGQ6Om1heCht
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMpOwogICAg
ICAgICAgICAgZWxzZSBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9u
RGlnaXRzKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDb21wdXRlZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4
aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBs
YXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3N0cik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IDhkYjI5
NDA4YWRmYWJjYTE4MzZkMTkwZDhjZDFiOGU1NTg1OWZhZWIuLjliM2E0MjJkYTk5ZjRlNjcyZmJm
NGJiNGVhYTlmMjA4YmM1ZTQwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0xMjAsNyAr
MTIwLDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCoKICAgICBhdXRvKiBuZiA9IEludGxOdW1i
ZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
ICAgIGlmIChVTkxJS0VMWSghbmYpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTnVtYmVyRm9ybWF0Il9z
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3N0cikpOwogCiAgICAgSlNCb3Vu
ZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDIuIElm
IG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCkBAIC0xMjgsNyArMTI4LDcgQEAgSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3Jt
YXQsIChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG5mLT5nbG9iYWxPYmplY3Qodm0pOwogICAgICAgICAvLyBhLiBMZXQgRiBiZSBhIG5ldyBi
dWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBpbiAxMS4zLjQuCiAgICAgICAgIC8v
IGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4KLSAgICAgICAgYXV0
byogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEs
ICJmb3JtYXQiX3MsIGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0LCBOb0ludHJpbnNpYyk7Cisg
ICAgICAgIGF1dG8qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCAiZm9ybWF0Il9zdHIsIGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0LCBOb0lu
dHJpbnNpYyk7CiAgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYs
IMKrdGhpcyB2YWx1ZcK7KS4KICAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIG5mLCBudWxscHRyLCAxLCBu
dWxscHRyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CkBAIC0xNDgsMTMgKzE0OCwxMyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSwgKEpTR2xvYmFsT2JqZQogICAg
IC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rpb25zLgogICAgIGF1dG8qIG51bWJlckZv
cm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW51bWJlckZvcm1hdCkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRSYW5nZSBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBO
dW1iZXJGb3JtYXQiX3N0cikpOwogCiAgICAgSlNWYWx1ZSBzdGFydFZhbHVlID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBKU1ZhbHVlIGVuZFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKTsKIAogICAgIGlmIChzdGFydFZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgZW5kVmFsdWUuaXNV
bmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInN0YXJ0IG9yIGVuZCBpcyB1bmRlZmluZWQiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgb3IgZW5kIGlzIHVu
ZGVmaW5lZCJfc3RyKTsKIAogICAgIGF1dG8gc3RhcnQgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1
ZShnbG9iYWxPYmplY3QsIHN0YXJ0VmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CkBAIC0xODIsNyArMTgyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGlu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cywgKEpTR2xvYmFsT2IKICAg
ICAvLyBEbyBub3QgdXNlIHVud3JhcEZvck9sZEZ1bmN0aW9ucy4KICAgICBhdXRvKiBudW1iZXJG
b3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJl
ckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIE51bWJlckZvcm1hdCJfc3RyKSk7CiAKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRU
RVIpCiAgICAgYXV0byB2YWx1ZSA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CkBAIC0yMDksMTMgKzIwOSwxMyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5n
ZVRvUGFydHMsIChKU0dsbwogICAgIC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rpb25z
LgogICAgIGF1dG8qIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1h
dCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW51bWJl
ckZvcm1hdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRS
YW5nZVRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3Mp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFJhbmdlVG9Q
YXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfc3RyKSk7CiAK
ICAgICBKU1ZhbHVlIHN0YXJ0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpT
VmFsdWUgZW5kVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgaWYgKHN0YXJ0
VmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgb3IgZW5k
IGlzIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zdHIpOwogCiAgICAg
YXV0byBzdGFydCA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnRW
YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTI0Miw3ICsy
NDIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbAogICAgIGF1dG8qIG51bWJlckZvcm1hdCA9
IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgTnVtYmVyRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBO
dW1iZXJGb3JtYXQiX3N0cikpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRl
eCAwNDliYzM5NDY4MjU2ZGUzNmZiY2RkYThmYTI3MjIxOWJiMzE4ZWY0Li40YzQyY2E0YjM3NjM2
NjYzMWYyMTU0ZjBhMWJhZGNlMzllOGQyOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtNzM0LDcgKzczNCw3IEBAIFZlY3RvcjxTdHJpbmc+
IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBsb2NhCiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBWZWN0b3I8
U3RyaW5nPigpKTsKIAogICAgICAgICAgICAgaWYgKCFrVmFsdWUuaXNTdHJpbmcoKSAmJiAha1Zh
bHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAibG9jYWxlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3Igb2JqZWN0Il9z
KTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
bG9jYWxlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3Igb2JqZWN0Il9zdHIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CiAKQEAgLTgxMSw3ICs4MTEsNyBAQCBT
dHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGlm
ICghaWN1RGVmYXVsdExvY2FsU3RyaW5nLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBpY3VE
ZWZhdWx0TG9jYWxTdHJpbmcuZ2V0KCk7CiAKLSAgICByZXR1cm4gImVuIl9zOworICAgIHJldHVy
biAiZW4iX3N0cjsKIH0KIAogU3RyaW5nIHJlbW92ZVVuaWNvZGVMb2NhbGVFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBsb2NhbGUpCkBAIC05MTcsNyArOTE3LDcgQEAgUmVzb2x2ZWRMb2NhbGUgcmVz
b2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBMb2NhbGVTZXQm
IGF2YWkKICAgICBSZXNvbHZlZExvY2FsZSByZXNvbHZlZDsKICAgICByZXNvbHZlZC5kYXRhTG9j
YWxlID0gZm91bmRMb2NhbGU7CiAKLSAgICBTdHJpbmcgc3VwcG9ydGVkRXh0ZW5zaW9uID0gIi11
Il9zOworICAgIFN0cmluZyBzdXBwb3J0ZWRFeHRlbnNpb24gPSAiLXUiX3N0cjsKICAgICBmb3Ig
KFJlbGV2YW50RXh0ZW5zaW9uS2V5IGtleSA6IHJlbGV2YW50RXh0ZW5zaW9uS2V5cykgewogICAg
ICAgICBBU0NJSUxpdGVyYWwga2V5U3RyaW5nID0gcmVsZXZhbnRFeHRlbnNpb25LZXlTdHJpbmco
a2V5KTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4ga2V5TG9jYWxlRGF0YSA9IGxvY2FsZURhdGEo
Zm91bmRMb2NhbGUsIGtleSk7CkBAIC05MzcsNyArOTM3LDcgQEAgUmVzb2x2ZWRMb2NhbGUgcmVz
b2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBMb2NhbGVTZXQm
IGF2YWkKICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbkFkZGl0aW9u
ID0gbWFrZVN0cmluZygnLScsIGtleVN0cmluZywgJy0nLCB2YWx1ZSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUxvY2FsZURhdGEuY29udGFp
bnMoInRydWUiX3MpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gInRydWUiX3M7Cisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gInRydWUiX3N0cjsKICAgICAgICAgICAgICAgICAg
ICAgc3VwcG9ydGVkRXh0ZW5zaW9uQWRkaXRpb24gPSBtYWtlU3RyaW5nKCctJywga2V5U3RyaW5n
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNTEwLDM1ICsxNTEwLDM1
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPGNoYXIsIDMyPj4gY2Fub25pY2FsaXplTG9jYWxlSURX
aXRob3V0TnVsbFRlcm1pbmF0b3IoY29uc3QKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBJQ1VD
YWxlbmRhcktleXdvcmRUb0JDUDQ3KGNvbnN0IFN0cmluZyYgY2FsZW5kYXIpCiB7CiAgICAgaWYg
KGNhbGVuZGFyID09ICJncmVnb3JpYW4iX3MpCi0gICAgICAgIHJldHVybiAiZ3JlZ29yeSJfczsK
KyAgICAgICAgcmV0dXJuICJncmVnb3J5Il9zdHI7CiAgICAgLy8gaXNsYW1pY2MgaXMgZGVwcmVj
YXRlZCBpbiBCQ1A0NywgYW5kIGlzbGFtaWMtY2l2aWwgaXMgcHJlZmVycmVkLgogICAgIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9jbGRyL2Jsb2IvbWFzdGVyL2NvbW1vbi9iY3A0
Ny9jYWxlbmRhci54bWwKICAgICBpZiAoY2FsZW5kYXIgPT0gImV0aGlvcGljLWFtZXRlLWFsZW0i
X3MpCi0gICAgICAgIHJldHVybiAiZXRoaW9hYSJfczsKKyAgICAgICAgcmV0dXJuICJldGhpb2Fh
Il9zdHI7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RkOjpvcHRpb25hbDxTdHJp
bmc+IG1hcEJDUDQ3VG9JQ1VDYWxlbmRhcktleXdvcmQoY29uc3QgU3RyaW5nJiBjYWxlbmRhcikK
IHsKICAgICBpZiAoY2FsZW5kYXIgPT0gImdyZWdvcnkiX3MpCi0gICAgICAgIHJldHVybiAiZ3Jl
Z29yaWFuIl9zOworICAgICAgICByZXR1cm4gImdyZWdvcmlhbiJfc3RyOwogICAgIGlmIChjYWxl
bmRhciA9PSAiaXNsYW1pY2MiX3MpCi0gICAgICAgIHJldHVybiAiaXNsYW1pYy1jaXZpbCJfczsK
KyAgICAgICAgcmV0dXJuICJpc2xhbWljLWNpdmlsIl9zdHI7CiAgICAgaWYgKGNhbGVuZGFyID09
ICJldGhpb2FhIl9zKQotICAgICAgICByZXR1cm4gImV0aGlvcGljLWFtZXRlLWFsZW0iX3M7Cisg
ICAgICAgIHJldHVybiAiZXRoaW9waWMtYW1ldGUtYWxlbSJfc3RyOwogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBJQ1VDb2xsYXRpb25LZXl3
b3JkVG9CQ1A0Nyhjb25zdCBTdHJpbmcmIGNvbGxhdGlvbikKIHsKICAgICBpZiAoY29sbGF0aW9u
ID09ICJkaWN0aW9uYXJ5Il9zKQotICAgICAgICByZXR1cm4gImRpY3QiX3M7CisgICAgICAgIHJl
dHVybiAiZGljdCJfc3RyOwogICAgIGlmIChjb2xsYXRpb24gPT0gImdiMjMxMmhhbiJfcykKLSAg
ICAgICAgcmV0dXJuICJnYjIzMTIiX3M7CisgICAgICAgIHJldHVybiAiZ2IyMzEyIl9zdHI7CiAg
ICAgaWYgKGNvbGxhdGlvbiA9PSAicGhvbmVib29rIl9zKQotICAgICAgICByZXR1cm4gInBob25l
YmsiX3M7CisgICAgICAgIHJldHVybiAicGhvbmViayJfc3RyOwogICAgIGlmIChjb2xsYXRpb24g
PT0gInRyYWRpdGlvbmFsIl9zKQotICAgICAgICByZXR1cm4gInRyYWQiX3M7CisgICAgICAgIHJl
dHVybiAidHJhZCJfc3RyOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKQEAgLTE2NDIs
MTMgKzE2NDIsMTMgQEAgc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZUNvbGxhdGlvbnMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKICAgICBhdXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFVFbnVtZXJhdGlv
biwgSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjb2xfZ2V0S2V5d29yZFZhbHVlcygiY29sbGF0
aW9uIiwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBh
dmFpbGFibGUgY29sbGF0aW9ucyJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjb2xsYXRpb25zIl9z
dHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGludDMyX3QgY291bnQgPSB1
ZW51bV9jb3VudChlbnVtZXJhdGlvbi5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjb2xsYXRpb25zIl9zKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUg
YXZhaWxhYmxlIGNvbGxhdGlvbnMiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CkBAIC0xNjU2LDEzICsxNjU2LDEzIEBAIHN0YXRpYyBKU0FycmF5KiBhdmFpbGFibGVDb2xsYXRp
b25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgZWxlbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShjb3VudCArIDIpOwogICAgIC8vIElDVSB+NjkgaGFzIGEgYnVnIHRoYXQg
ZG9lcyBub3QgcmVwb3J0ICJlbW9qaSIgYW5kICJlb3IiIGZvciBjb2xsYXRpb24gd2hlbiB1c2lu
ZyB1Y29sX2dldEtleXdvcmRWYWx1ZXMuCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNv
ZGUtb3JnL2ljdS9jb21taXQvMjQ3NzhkZmM5YmY2N2Y0MzE1MDkzNjFhMTczYTMzYTFhYjg2MGI1
ZAotICAgIGVsZW1lbnRzLmFwcGVuZCgiZW1vamkiX3MpOwotICAgIGVsZW1lbnRzLmFwcGVuZCgi
ZW9yIl9zKTsKKyAgICBlbGVtZW50cy5hcHBlbmQoImVtb2ppIl9zdHIpOworICAgIGVsZW1lbnRz
LmFwcGVuZCgiZW9yIl9zdHIpOwogICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwg
Y291bnQ7ICsraW5kZXgpIHsKICAgICAgICAgaW50MzJfdCBsZW5ndGggPSAwOwogICAgICAgICBj
b25zdCBjaGFyKiBwb2ludGVyID0gdWVudW1fbmV4dChlbnVtZXJhdGlvbi5nZXQoKSwgJmxlbmd0
aCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJh
dGUgYXZhaWxhYmxlIGNvbGxhdGlvbnMiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIGNvbGxh
dGlvbnMiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAg
IFN0cmluZyBjb2xsYXRpb24ocG9pbnRlciwgbGVuZ3RoKTsKQEAgLTE2OTUsMTMgKzE2OTUsMTMg
QEAgc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZUN1cnJlbmNpZXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBh
dXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFVFbnVtZXJhdGlvbiwgSUNVRGVsZXRl
cjx1ZW51bV9jbG9zZT4+KHVjdXJyX29wZW5JU09DdXJyZW5jaWVzKFVDVVJSX0FMTCwgJnN0YXR1
cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY3Vy
cmVuY2llcyJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjdXJyZW5jaWVzIl9zdHIpOwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGludDMyX3QgY291bnQgPSB1ZW51bV9jb3VudChl
bnVtZXJhdGlvbi5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
ZW51bWVyYXRlIGF2YWlsYWJsZSBjdXJyZW5jaWVzIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIGN1
cnJlbmNpZXMiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xNzEzLDEz
ICsxNzEzLDEzIEBAIHN0YXRpYyBKU0FycmF5KiBhdmFpbGFibGVDdXJyZW5jaWVzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgLy8gICAgIDIuIERvIG5vdCBhZGQgRVFFIGFuZCBM
U00KICAgICAvLyBodHRwczovL3VuaWNvZGUtb3JnLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0lDVS0y
MTY4NQogICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQgKyAyKTsKLSAg
ICBlbGVtZW50cy5hcHBlbmQoIlZFUyJfcyk7Ci0gICAgZWxlbWVudHMuYXBwZW5kKCJVWVciX3Mp
OworICAgIGVsZW1lbnRzLmFwcGVuZCgiVkVTIl9zdHIpOworICAgIGVsZW1lbnRzLmFwcGVuZCgi
VVlXIl9zdHIpOwogICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsr
aW5kZXgpIHsKICAgICAgICAgaW50MzJfdCBsZW5ndGggPSAwOwogICAgICAgICBjb25zdCBjaGFy
KiBwb2ludGVyID0gdWVudW1fbmV4dChlbnVtZXJhdGlvbi5nZXQoKSwgJmxlbmd0aCwgJnN0YXR1
cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxh
YmxlIGN1cnJlbmNpZXMiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIGN1cnJlbmNpZXMiX3N0
cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIFN0cmluZyBj
dXJyZW5jeShwb2ludGVyLCBsZW5ndGgpOwpAQCAtMTc1MSwxMyArMTc1MSwxMyBAQCBzdGF0aWMg
SlNBcnJheSogYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8g
ZW51bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVl
bnVtX2Nsb3NlPj4odW51bXN5c19vcGVuQXZhaWxhYmxlTmFtZXMoJnN0YXR1cykpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3Rl
bXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3RlbXMiX3N0cik7CiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaW50MzJfdCBjb3VudCA9IHVlbnVtX2NvdW50
KGVudW1lcmF0aW9uLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBlbnVtZXJhdGUgYXZhaWxhYmxlIG51bWJlcmluZyBzeXN0ZW1zIl9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZh
aWxhYmxlIG51bWJlcmluZyBzeXN0ZW1zIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KIApAQCAtMTc2NywxMiArMTc2NywxMiBAQCBzdGF0aWMgSlNBcnJheSogYXZhaWxhYmxlTnVt
YmVyaW5nU3lzdGVtcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBpbnQz
Ml90IGxlbmd0aCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSB1ZW51bV9uZXh0KGVu
dW1lcmF0aW9uLmdldCgpLCAmbGVuZ3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3RlbXMiX3Mp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIG51bWJlcmluZyBzeXN0ZW1zIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBhdXRvIG51bWJlcmluZ1N5c3Rl
bSA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyaW5nU3lzdGVtLCBJQ1VEZWxldGVyPHVudW1zeXNf
Y2xvc2U+Pih1bnVtc3lzX29wZW5CeU5hbWUobmFtZSwgJnN0YXR1cykpOwogICAgICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBudW1iZXJpbmcgc3lz
dGVtcyJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3RlbXMiX3N0cik7
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIGlmICh1bnVtc3lz
X2lzQWxnb3JpdGhtaWMobnVtYmVyaW5nU3lzdGVtLmdldCgpKSkKQEAgLTE4MDksNyArMTgwOSw3
IEBAIHN0YXRpYyBib29sIGlzVmFsaWRUaW1lWm9uZU5hbWVGcm9tSUNVVGltZVpvbmUoU3RyaW5n
VmlldyB0aW1lWm9uZU5hbWUpCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNhbm9uaWNh
bGl6ZVRpbWVab25lTmFtZUZyb21JQ1VUaW1lWm9uZShTdHJpbmcmJiB0aW1lWm9uZU5hbWUpCiB7
CiAgICAgaWYgKGlzVVRDRXF1aXZhbGVudCh0aW1lWm9uZU5hbWUpKQotICAgICAgICByZXR1cm4g
IlVUQyJfczsKKyAgICAgICAgcmV0dXJuICJVVEMiX3N0cjsKICAgICByZXR1cm4gc3RkOjptYWtl
X29wdGlvbmFsKFdURk1vdmUodGltZVpvbmVOYW1lKSk7CiB9CiAKQEAgLTE5MzEsNyArMTkzMSw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsT2JqZWN0RnVuY1N1cHBvcnRlZFZhbHVl
c09mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgaWYgKGtleSA9PSAidW5pdCJfcykKICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYXZhaWxhYmxl
VW5pdHMoZ2xvYmFsT2JqZWN0KSkpOwogCi0gICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJVbmtub3duIGtleSBmb3IgSW50bC5zdXBwb3J0ZWRWYWx1ZXNPZiJfcyk7Cisg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmtub3duIGtleSBmb3Ig
SW50bC5zdXBwb3J0ZWRWYWx1ZXNPZiJfc3RyKTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRl
eCA0MWMyYmZkZjZlZTUxNWMyMzRkY2JjZTYwY2RiMzMwM2VhYjMwYWZlLi45YTlmOTBlZDJkMGY5
ZjkxNmU0MTMwY2VjODhkY2M4MzY4MDY4MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBpbmxp
bmUgSlNPYmplY3QqIGludGxHZXRPcHRpb25zT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgb3B0aQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoTElL
RUxZKG9wdGlvbnMuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBhc09iamVjdChvcHRpb25z
KTsKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAib3B0aW9ucyBhcmd1
bWVudCBpcyBub3QgYW4gb2JqZWN0IG9yIHVuZGVmaW5lZCJfcyk7CisgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm9wdGlvbnMgYXJndW1lbnQgaXMgbm90IGFuIG9iamVj
dCBvciB1bmRlZmluZWQiX3N0cik7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4IGE4
NTEzMTFjNzQ0YjVlYWIxNjVhYzdmNGQ1NjcxMDA2ZDg2Njc4M2UuLjY0ZmYwZjE5ZTI2MDRmODgy
OTlmMGZlZmRiOWM1ZTBiNGU5MzBkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgSW50
bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1CiAgICAgYXV0byByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFs
T2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBsb2NhbGVNYXRjaGVy
LCBsb2NhbGVPcHRpb25zLCB7IH0sIGxvY2FsZURhdGEpOwogICAgIG1fbG9jYWxlID0gcmVzb2x2
ZWQubG9jYWxlOwogICAgIGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJh
bFJ1bGVzIGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyBk
dWUgdG8gaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTE0MCwyMSArMTQwLDIxIEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFs
UnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAKICAgICBtX251bWJl
ckZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9y
bWF0dGVyRGVsZXRlcj4odW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVk
LmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGxvY2FsZS5kYXRhKCksICZzdGF0dXMpKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBp
bml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQogICAgIG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVy
UmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxhcHNl
QW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0
aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX05PTkUsIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tfUkFO
R0UsIGxvY2FsZS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1
bGVzIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAjZWxzZQogICAgIG1f
bnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3Jt
YXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBsb2NhbGUuZGF0
YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0g
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5p
dGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfc3RyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgSW50bFBsdXJh
bFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1CiAKICAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxS
dWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobG9jYWxlLmRh
dGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQ
TFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3N0
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CkBAIC0xOTIsNyArMTkyLDcgQEAgSlNPYmpl
Y3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiAKICAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sb2NhbGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9sb2NhbGUpKTsKLSAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyAib3JkaW5hbCJfcyA6ICJj
YXJkaW5hbCJfcykpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dHlwZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/
ICJvcmRpbmFsIl9zdHIgOiAiY2FyZGluYWwiX3N0cikpOwogICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUludGVnZXJEaWdpdHMsIGpzTnVtYmVyKG1f
bWluaW11bUludGVnZXJEaWdpdHMpKTsKICAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CiAg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKQEAgLTI0NSwyNyArMjQ1
LDI3IEBAIEpTVmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zKTsKKyAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zdHIpOwogCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRU
RVIpCiAgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRl
ZE51bWJlciwgSUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQo
JnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJh
bCB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3N0cik7CiAgICAgdW51bWZf
Zm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVt
YmVyLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNl
bGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zdHIpOwog
ICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJv
ZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0Rm9ybWF0dGVkLCBtX3BsdXJhbFJ1bGVzLmdl
dCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJh
bCB2YWx1ZSJfc3RyKTsKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhXVEZNb3ZlKGJ1
ZmZlcikpKTsKICNlbHNlCiAgICAgVmVjdG9yPFVDaGFyLCA4PiByZXN1bHQoOCk7CiAgICAgYXV0
byBsZW5ndGggPSB1cGxydWxlc19zZWxlY3RXaXRoRm9ybWF0KG1fcGx1cmFsUnVsZXMuZ2V0KCks
IHZhbHVlLCBtX251bWJlckZvcm1hdC5nZXQoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUo
KSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1
cmFsIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfc3RyKTsKIAogICAgIHJl
dHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKHJlc3VsdC5kYXRhKCksIGxlbmd0aCkpOwogI2VuZGlm
CkBAIC0yODAsMjcgKzI4MCwyNyBAQCBKU1ZhbHVlIEludGxQbHVyYWxSdWxlczo6c2VsZWN0UmFu
Z2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YXJ0LAogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChzdGQ6OmlzbmFuKHN0
YXJ0KSB8fCBzdGQ6OmlzbmFuKGVuZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQ
YXNzZWQgbnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zdHIpOwogCiAgICAgaWYgKGVuZCA8IHN0
YXJ0KQotICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3N0
cik7CiAKICAgICBpZiAoaXNOZWdhdGl2ZVplcm8oZW5kKSAmJiBzdGFydCA+PSAwKQotICAgICAg
ICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBs
YXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3N0cik7CiAKICAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHJhbmdlID0gc3RkOjp1
bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xvc2VS
ZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2Vs
ZWN0IHJhbmdlIG9mIHBsdXJhbCB2YWx1ZSJfc3RyKTsKIAogICAgIHVudW1yZl9mb3JtYXREb3Vi
bGVSYW5nZShtX251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydCwgZW5kLCByYW5nZS5n
ZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3Qg
cmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2
YWx1ZSJfc3RyKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKICAgICBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0Rm9yUmFuZ2UsIG1f
cGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdlLmdldCgpLCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBw
bHVyYWwgdmFsdWUiX3N0cik7CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92
ZShidWZmZXIpKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAppbmRleCA4MTJh
YWEyMDAwZTMwYjllNmI5Y2Y3MzA1N2JlZDQ0NDAyMjc4ODE2Li4zYmNlN2RmYzQxOGIyMzlkOGU2
N2EzMTk0MDU5MzhiYzZkN2VkZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCkBAIC03NCw3
ICs3NCw3IEBAIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpJbnRsUGx1cmFsUnVsZXNDb25z
dHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0CiAKIHZvaWQgSW50bFBsdXJhbFJ1bGVz
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlKiBwbHVyYWxSdWxlc1Byb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgMCwgIlBsdXJhbFJ1bGVzIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVj
dHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiUGx1cmFs
UnVsZXMiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0
aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBwbHVyYWxSdWxlc1Byb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpOwogICAgIHBsdXJhbFJ1bGVzUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUuY3BwCmluZGV4IDYyYzA4YmY5NTdhMTMyZjEyZDZkNGJmYjJkODFjZGIwOThkM2E1
OTEuLjZhYWJiZTkwNTcwZDc3N2Q5MGI2NTBmODVmYmFhOGNhN2I5MDJlNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlLmNwcApAQCAtOTEsNyArOTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAg
IEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQbHVyYWxS
dWxlcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIGlmICghcGx1cmFsUnVs
ZXMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdCBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIFBsdXJhbFJ1bGVzIl9zKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
UGx1cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IFBsdXJhbFJ1bGVzIl9zdHIpKTsKIAogICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTEwOCwxMyArMTA4LDEzIEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2Us
IChKU0dsb2JhbE9iamVjCiAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVt
YmVyZm9ybWF0LXYzL291dC9wbHVyYWxydWxlcy9kaWZmLmh0bWwjc2VjLWludGwucGx1cmFscnVs
ZXMucHJvdG90eXBlLnNlbGVjdHJhbmdlCiAgICAgSW50bFBsdXJhbFJ1bGVzKiBwbHVyYWxSdWxl
cyA9IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJhbFJ1bGVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghcGx1cmFsUnVsZXMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUGx1cmFsUnVs
ZXMucHJvdG90eXBlLnNlbGVjdFJhbmdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgUGx1
cmFsUnVsZXMiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2Vs
ZWN0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxlcyJfc3RyKSk7
CiAKICAgICBKU1ZhbHVlIHN0YXJ0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAg
IEpTVmFsdWUgZW5kVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgaWYgKHN0
YXJ0VmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgb3Ig
ZW5kIGlzIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zdHIpOwogCiAg
ICAgZG91YmxlIHN0YXJ0ID0gc3RhcnRWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0xMzYsNyArMTM2LDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZl
ZE9wdGlvbnMsIChKU0dsb2JhbE8KICAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0g
anNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAKICAgICBpZiAoIXBsdXJhbFJ1bGVzKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVz
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQ
bHVyYWxSdWxlcyJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxlcyJf
c3RyKSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShw
bHVyYWxSdWxlcy0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9iamVjdCkpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5jcHAKaW5kZXggZTMyOGExYzFmNDBjNDllNjk1NDUxYTUzZDI5OWU1MjMxN2I5ZDc1Ni4uMzBj
NmM3MDU2NjYxOTkxMDFjMjRiYTY1OGIyYmMxN2QxNTgzMzc0YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAK
QEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmluaXRpYWxp
emVSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKCFudW1iZXJpbmdTeXN0ZW0uaXNO
dWxsKCkpIHsKICAgICAgICAgaWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShudW1i
ZXJpbmdTeXN0ZW0pKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIm51bWJlcmluZ1N5c3RlbSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBudW1iZXJpbmcg
c3lzdGVtIHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmlu
ZyBzeXN0ZW0gdmFsdWUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNp
b25LZXk6Ok51KV0gPSBudW1iZXJpbmdTeXN0ZW07CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojppbml0aWFsaXplUmVsYXRpdmVUaW1lRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWwKICAgICBhdXRvIHJlc29sdmVkID0gcmVzb2x2ZUxvY2FsZShnbG9i
YWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU1hdGNo
ZXIsIGxvY2FsZU9wdGlvbnMsIHsgUmVsZXZhbnRFeHRlbnNpb25LZXk6Ok51IH0sIGxvY2FsZURh
dGEpOwogICAgIG1fbG9jYWxlID0gcmVzb2x2ZWQubG9jYWxlOwogICAgIGlmIChtX2xvY2FsZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZlVGltZUZvcm1hdCBkdWUgdG8gaW52YWxpZCBs
b2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxv
Y2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM4LDcgKzEzOCw3IEBA
IHZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1h
dCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIs
IDAsIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsK
ICAgICBpZiAoVU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1cykpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxhdGl2
ZVRpbWVGb3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zdHIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjMsMTMgKzE2MywxMyBAQCB2b2lkIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbAogCiAgICAgVU51bWJlckZvcm1hdCogY2xvbmVkTnVtYmVyRm9ybWF0ID0gdW51
bV9jbG9uZShtX251bWJlckZvcm1hdC5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVOTElLRUxZ
KFVfRkFJTFVSRShzdGF0dXMpKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBp
bml0aWFsaXplIFJlbGF0aXZlVGltZUZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxV
UmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciwgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxl
dGVyPih1cmVsZGF0ZWZtdF9vcGVuKGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIGNs
b25lZE51bWJlckZvcm1hdCwgaWN1U3R5bGUsIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9T
VEFOREFMT05FLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVOTElLRUxZKFVfRkFJTFVSRShzdGF0dXMp
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZl
VGltZUZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTE5NSw3ICsx
OTUsNyBAQCBKU09iamVjdCogSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6cmVzb2x2ZWRPcHRpb25z
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1f
bG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
dHlsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0eWxlKSkpOwotICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bnVtZXJpYywganNOb250
cml2aWFsU3RyaW5nKHZtLCBtX251bWVyaWMgPyAiYWx3YXlzIl9zIDogImF1dG8iX3MpKTsKKyAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm51bWVyaWMsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgbV9udW1lcmljID8gImFsd2F5cyJfc3RyIDogImF1dG8iX3N0cikp
OwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bnVtYmVyaW5n
U3lzdGVtLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbnVtYmVyaW5nU3lzdGVtKSk7CiAgICAg
cmV0dXJuIG9wdGlvbnM7CiB9CkBAIC0yMzksMTMgKzIzOSwxMyBAQCBTdHJpbmcgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6Zm9ybWF0SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXIgYXJndW1lbnQgbXVzdCBiZSBmaW5pdGUiX3MpOwor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm51bWJlciBhcmd1
bWVudCBtdXN0IGJlIGZpbml0ZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IH0KIAogICAgIGF1dG8gdW5pdFR5cGUgPSByZWxhdGl2ZVRpbWVVbml0VHlwZSh1bml0KTsKICAg
ICBpZiAoIXVuaXRUeXBlKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAidW5pdCBhcmd1bWVudCBpcyBub3QgYSByZWNvZ25pemVkIHVuaXQgdHlwZSJfcyk7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBhcmd1
bWVudCBpcyBub3QgYSByZWNvZ25pemVkIHVuaXQgdHlwZSJfc3RyKTsKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIH0KIApAQCAtMjU0LDcgKzI1NCw3IEBAIFN0cmluZyBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Ojpmb3JtYXRJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3ViCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0OwogICAgIGF1dG8gc3RhdHVzID0g
Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKGZvcm1hdFJlbGF0aXZlVGltZSwgbV9yZWxhdGl2
ZURhdGVUaW1lRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgdW5pdFR5cGUudmFsdWUoKSwgcmVzdWx0
KTsKICAgICBpZiAoVU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1cykpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZl
IHRpbWUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGZvcm1hdCByZWxhdGl2ZSB0aW1lIl9zdHIpOwogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgfQogCkBAIC0yOTEsNyArMjkxLDcgQEAgSlNWYWx1ZSBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRv
dWIKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzLCBtX251bWJlckZv
cm1hdC5nZXQoKSwgYWJzVmFsdWUsIGJ1ZmZlciwgaXRlcmF0b3IuZ2V0KCkpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRpbWUiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBm
b3JtYXQgcmVsYXRpdmUgdGltZSJfc3RyKTsKIAogICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0g
U3RyaW5nKGJ1ZmZlcik7CiAKQEAgLTI5OSw3ICsyOTksNyBAQCBKU1ZhbHVlIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YgogICAgIGlmICghcGFydHMpCiAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKLSAgICBKU1N0cmluZyogbGl0ZXJhbFN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOworICAgIEpTU3RyaW5nKiBsaXRl
cmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfc3RyKTsKIAogICAg
IC8vIFdlIG9ubHkgaGF2ZSBvbmUgaW5wdXQgbnVtYmVyLCBzbyBvdXIgcmVsYXRpdmUgdGltZSB3
aWxsIGhhdmUgYXQgbW9zdCBvbmUgbnVtZXJpYyBzdWJzdHJpbmcsCiAgICAgLy8gYnV0IHdlIG5l
ZWQgdG8gbGlzdCBhbGwgb2YgdGhlIG51bWVyaWMgcGFydHMgc2VwYXJhdGVseS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCmluZGV4IGE4MjVjMzY2NzEzYzE0NDkwY2I2ZGRl
YjQ1NzZkYmQ1NTZjZjM2NjQuLjU1NjZjNTBmNzViYTAyMWE0Y2U2YjJhMjlhNzljYWQ4NTdiMzAz
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtNzQsNyArNzQs
NyBAQCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cgogCiB2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlKiByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDAsICJSZWxhdGl2ZVRpbWVGb3JtYXQiX3MsIFByb3BlcnR5QWRk
aXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sIDAsICJSZWxhdGl2ZVRpbWVGb3JtYXQiX3N0ciwgUHJvcGVydHlBZGRpdGlv
bk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWxhdGl2ZVRpbWVG
b3JtYXRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBy
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAppbmRleCBkNDc5NDVhZDZhOTcyYWZmZjVlNjM4YmFkOTRlNDJlMDlmOTll
MzIxLi4wNDM1ZjI4ODJlNDU1MTJjOTgxMGNjZTY1NzNjNGM2ZjVjOGY0OGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtODQsNyArODQsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXQsIChK
U0dsb2JhbE9iagogCiAgICAgYXV0byogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2Fz
dDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghcmVsYXRpdmVUaW1lRm9ybWF0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgUmVs
YXRpdmVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBSZWxhdGl2ZVRp
bWVGb3JtYXQiX3N0cikpOwogCiAgICAgZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihpbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFy
dHMsIChKU0dsCiAKICAgICBhdXRvKiByZWxhdGl2ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0
PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCFyZWxhdGl2ZVRpbWVGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgUmVsYXRpdmVUaW1lRm9ybWF0Il9zdHIpKTsKIAogICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMsIChKUwogCiAgICAgYXV0byogcmVsYXRpdmVUaW1lRm9ybWF0ID0g
anNEeW5hbWljQ2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwogICAgIGlmICghcmVsYXRpdmVUaW1lRm9ybWF0KQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRs
LlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3N0cikpOwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0
LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlLmNwcAppbmRleCAwN2MwNWNiYzBiY2FlOWMyNWEzZjNjYjAxMWVjMzJhZDhjNTYzMzI1Li4w
ZDE4NDM1MzIxYjA0N2MxMGJhMWFiNGRiZjBkNjVhNWY4NTEzMGJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9y
UHJvdG90eXBlLmNwcApAQCAtNzksNyArNzksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
aW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0LCAoSlNHbG9iYWxPYmplY3QqCiAK
ICAgICBhdXRvKiBzZWdtZW50SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdtZW50SXRl
cmF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzZWdtZW50SXRl
cmF0b3IpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLlNlZ21lbnRJdGVyYXRvci5wcm90b3R5cGUubmV4dCBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIFNlZ21lbnRJdGVyYXRvciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRJdGVyYXRvci5wcm90
b3R5cGUubmV4dCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFNlZ21lbnRJdGVyYXRvciJf
c3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNl
Z21lbnRJdGVyYXRvci0+bmV4dChnbG9iYWxPYmplY3QpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCmluZGV4IDhkODVmZTdjOWNjMmU2
MGNmZTZiMjIzODMzNDk3ZGRmOWI0ZjdjYjMuLmFjMTkyNjk4MTA1MGM1YWY4YjgzNzIwNjQ0YTY2
MmNkNzc5OTkxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxTZWdtZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxT
ZWdtZW50ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSW50bFNlZ21lbnRlcjo6aW5pdGlh
bGl6ZVNlZ21lbnRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvCiAK
ICAgICBtX2xvY2FsZSA9IHJlc29sdmVkLmxvY2FsZTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50ZXIgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0
aWFsaXplIFNlZ21lbnRlciBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEludGxTZWdtZW50ZXI6Omlu
aXRpYWxpemVTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBs
bwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIG1fc2VnbWVudGVy
ID0gc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+
KHVicmtfb3Blbih0eXBlLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAwLCAmc3Rh
dHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50ZXIi
X3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgU2VnbWVudGVyIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
fQpAQCAtMTI4LDEyICsxMjgsMTIgQEAgSlNWYWx1ZSBJbnRsU2VnbWVudGVyOjpzZWdtZW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc3RyaW5nVmFsdWUKICAgICBVRXJy
b3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHNlZ21lbnRlciA9IHN0ZDo6
dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPihjbG9uZVVC
cmVha0l0ZXJhdG9yKG1fc2VnbWVudGVyLmdldCgpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50cyJfcyk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50
cyJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgdWJya19zZXRUZXh0KHNl
Z21lbnRlci5nZXQoKSwgdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLT5kYXRhKCksIHVwY29udmVydGVk
Q2hhcmFjdGVycy0+c2l6ZSgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIFNlZ21lbnRzIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRzIl9zdHIpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjU5MDYx
MDUwY2VjYmJhZWQ5Y2E0MTJjNDYwNzExNzkwOTVlOWQwNC4uYTZkODkxMzRmYjIyNmFmYmRiYjIx
ZGVjNzJiOGI0ZWNkMjg3ODNkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAKIHZvaWQgSW50bFNlZ21lbnRlckNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNlZ21l
bnRlclByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlNlZ21l
bnRlciJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlNlZ21lbnRlciJfc3RyLCBQcm9w
ZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNl
Z21lbnRlclByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAg
IHNlZ21lbnRlclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCmluZGV4IDY2YTVj
YzNhOTdlZGY2OThiYmI5YTFlMjMxNmUwYzFmYzk5YTllNWEuLmEyNDY3MzBjOGUwYzM3ZjkxNDJk
NmYzMTU4OTBhNzNkMjk0NGI4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCkBAIC04MSw3ICs4MSw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1NlZ21l
bnQsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBzZWdtZW50ZXIgPSBqc0R5bmFt
aWNDYXN0PEludGxTZWdtZW50ZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKCFzZWdtZW50ZXIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRlci5wcm90b3R5cGUuc2VnbWVudCBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIFNlZ21lbnRlciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRlci5wcm90b3R5cGUu
c2VnbWVudCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFNlZ21lbnRlciJfc3RyKTsKIAog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRlci0+
c2VnbWVudChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CkBAIC05
NCw3ICs5NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsU2VnbWVudGVyUHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucywgKEpTR2xvYmFsT2JqCiAKICAgICBhdXRvKiBzZWdtZW50
ZXIgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdtZW50ZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCFzZWdtZW50ZXIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRlci5wcm90b3R5cGUucmVzb2x2
ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgU2VnbWVudGVyIl9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
U2VnbWVudGVyLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBTZWdtZW50ZXIiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShzZWdtZW50ZXItPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3Qp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzLmNw
cAppbmRleCA4ZGUzNGEzMDRlZGUwM2UwYjg0YjIwYzI4MDExMzQ0MTk5NmFiNGY4Li40MWM5OWM3
Y2I1YTA2MDc1NDRlNDliMjEzMWI5Y2YyNTBiZTk3MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBKU09i
amVjdCogSW50bFNlZ21lbnRzOjpjcmVhdGVTZWdtZW50SXRlcmF0b3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAg
ICBhdXRvIHNlZ21lbnRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFr
SXRlcmF0b3JEZWxldGVyPihjbG9uZVVCcmVha0l0ZXJhdG9yKG1fc2VnbWVudGVyLmdldCgpLCAm
c3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50
SXRlcmF0b3IiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVudEl0ZXJhdG9yIl9zdHIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCmluZGV4IDUzZTNlY2YwMmZmODRh
MjkzNjljNTQ5YTY2ZDA3ODk2ZTVlZjZkZDcuLjkwZjIwOTRlZjg0NjliNDhjY2FjNTQ4MDliZjdm
NjI0N2Y0OTlkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcApAQCAtODAsNyArODAsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bFNlZ21lbnRzUHJvdG90eXBlRnVuY0NvbnRhaW5pbmcsIChKU0ds
b2JhbE9iamVjdCogZwogCiAgICAgYXV0byogc2VnbWVudHMgPSBqc0R5bmFtaWNDYXN0PEludGxT
ZWdtZW50cyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNlZ21lbnRz
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
JVNlZ21lbnRzLnByb3RvdHlwZSUuY29udGFpbmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIFNlZ21lbnRzIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIiVTZWdtZW50cy5wcm90b3R5cGUlLmNvbnRhaW5pbmcgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBTZWdtZW50cyJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRzLT5jb250YWluaW5nKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJdGVyYXRvciwg
KEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogICAgIGF1dG8qIHNlZ21lbnRzID0ganNEeW5hbWljQ2Fz
dDxJbnRsU2VnbWVudHMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFz
ZWdtZW50cykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIiVTZWdtZW50cy5wcm90b3R5cGUlW0BAaXRlcmF0b3JdIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgU2VnbWVudHMiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJVNlZ21lbnRzLnByb3RvdHlwZSVbQEBpdGVyYXRvcl0g
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBTZWdtZW50cyJfc3RyKTsKIAogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRzLT5jcmVhdGVTZWdt
ZW50SXRlcmF0b3IoZ2xvYmFsT2JqZWN0KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKaW5kZXggYzMxNjlhMmNlNTk3
ZDc0MGZmMDJkZjcyNzNkZjJlNmVhMGM3MzMwNy4uMzdhMWU4MzBlZGJhYTRlOWJlMzNiNTIxMTkz
N2EyZTMyNWQ5Mzk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SXRlcmF0b3JPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEpTVmFsdWUgaXRlcmF0
b3JOZXh0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEl0ZXJhdGlvblJlY29yZCBpdGVy
YXRpb25SZWNvCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKIAog
ICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJf
c3RyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBp
dGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlcmF0
b3IpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB2b2lkKCkpOwogCiAgICAg
aWYgKCFpbm5lclJlc3VsdC5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
dHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wg
aGFzSXRlcmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IG9iamVjdC0+Z2V0TWV0
aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3lt
Ym9sLCAiU3ltYm9sLml0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7Cisg
ICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IG9iamVjdC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwg
Y2FsbERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCAiU3ltYm9sLml0ZXJh
dG9yIHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICByZXR1cm4gIWFwcGx5TWV0aG9kLmlzVW5kZWZp
bmVkKCk7CkBAIC0xNzIsNyArMTcyLDcgQEAgSlNWYWx1ZSBpdGVyYXRvck1ldGhvZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0KQogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IEpTVmFsdWUgbWV0aG9kID0gb2JqZWN0LT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0
YSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsICJTeW1ib2wuaXRlcmF0b3IgcHJv
cGVydHkgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIG1ldGhvZCA9IG9iamVj
dC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yU3ltYm9sLCAiU3ltYm9sLml0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJs
ZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBqc1VuZGVmaW5lZCgpKTsK
IAogICAgIHJldHVybiBtZXRob2Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuY3BwCmluZGV4IDMxNzk4NWZmZWQ2YWViM2U4ODU5Mzg0MzAyMDNlYzliYTQzZDBjYzAuLmNl
MWM2ZjQyMzQ4NTNiMjI5Y2M4ZDZlZDhmOGRkMTZkZGU4YjhmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgYm9vbCBKU0Fy
cmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgZG91YmxlIHZhbHVlQXNOdW1iZXIgPSBkZXNjcmlw
dG9yLnZhbHVlKCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIGlmICh2YWx1ZUFzTnVtYmVy
ICE9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewotICAgICAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcnJheSBsZW5ndGgi
X3MpOworICAgICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW52YWxpZCBhcnJheSBsZW5ndGgiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMDgsNyArMjA4LDcgQEAgYm9vbCBK
U0FycmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB1aW50MzJfdCBpbmRleCA9IG9wdGlvbmFsSW5kZXgu
dmFsdWUoKTsKICAgICAgICAgLy8gRklYTUU6IE5vdGhpbmcgcHJldmVudHMgdGhpcyBmcm9tIGJl
aW5nIGNhbGxlZCBvbiBhIFJ1bnRpbWVBcnJheSwgYW5kIHRoZSBsZW5ndGggZnVuY3Rpb24gd2ls
bCBhbHdheXMgcmV0dXJuIDAgaW4gdGhhdCBjYXNlLgogICAgICAgICBpZiAoaW5kZXggPj0gYXJy
YXktPmxlbmd0aCgpICYmICFhcnJheS0+aXNMZW5ndGhXcml0YWJsZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgIkF0
dGVtcHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJvcGVydHkgb24gYXJyYXkgd2l0aCBub24td3Jp
dGFibGUgbGVuZ3RoIHByb3BlcnR5LiJfcyk7CisgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBkZWZp
bmUgbnVtZXJpYyBwcm9wZXJ0eSBvbiBhcnJheSB3aXRoIG5vbi13cml0YWJsZSBsZW5ndGggcHJv
cGVydHkuIl9zdHIpOwogICAgICAgICAvLyBjLiBMZXQgc3VjY2VlZGVkIGJlIHRoZSByZXN1bHQg
b2YgY2FsbGluZyB0aGUgZGVmYXVsdCBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0
aG9kICg4LjEyLjkpIG9uIEEgcGFzc2luZyBQLCBEZXNjLCBhbmQgZmFsc2UgYXMgYXJndW1lbnRz
LgogICAgICAgICAvLyBkLiBSZWplY3QgaWYgc3VjY2VlZGVkIGlzIGZhbHNlLgogICAgICAgICAv
LyBlLiBJZiBpbmRleCA+PSBvbGRMZW4KQEAgLTI0Niw3ICsyNDYsNyBAQCBib29sIEpTQXJyYXk6
OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZQogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKSB7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+aXNMZW5ndGhXcml0YWJsZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQXJyYXkgbGVuZ3RoIGlzIG5vdCB3cml0
YWJsZSJfcyk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkFycmF5IGxlbmd0aCBpcyBub3Qgd3JpdGFibGUiX3N0cik7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMjU4LDcgKzI1OCw3IEBAIGJvb2wgSlNBcnJh
eTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlCiAgICAgICAgIGRvdWJsZSB2YWx1ZUFzTnVtYmVyID0gdmFsdWUudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgICAgICBpZiAodmFsdWVBc051bWJlciAhPSBzdGF0aWNfY2FzdDxkb3VibGU+KG5l
d0xlbmd0aCkpIHsKLSAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBhcnJheSBsZW5ndGgi
X3MpKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBhcnJheSBsZW5ndGgiX3N0cikp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgdGhpc09iamVjdC0+c2V0TGVuZ3RoKGdsb2JhbE9iamVjdCwgbmV3
TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IGNmYTA4
Y2JlZjUxZjExNTgxOTY5NTVkMDUyNzFmNjc2MjFlYmU4YzUuLjI1YTIwNmE5MjZkMGY5YTdiZmM3
NDBhYjU3MDZjYTU0NWEzZDYwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3JTbG93
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoIWNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNvbnN0cnVjdG9yIHByb3BlcnR5IHNob3VsZCBub3Qg
YmUgbnVsbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJjb25zdHJ1Y3RvciBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIG51bGwiX3N0cik7CiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNBcnJh
eUJ1ZmZlcio+IHNwZWNpZXNDbwogICAgIC8vIDE3LiBQZXJmb3JtID8gUmVxdWlyZUludGVybmFs
U2xvdChuZXcsIFtbQXJyYXlCdWZmZXJEYXRhXV0pLgogICAgIEpTQXJyYXlCdWZmZXIqIHJlc3Vs
dCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBuZXdPYmplY3QpOwogICAgIGlm
IChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gZG9lcyBub3QgY3JlYXRlIEFycmF5QnVm
ZmVyIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNw
ZWNpZXMgY29uc3RydWN0aW9uIGRvZXMgbm90IGNyZWF0ZSBBcnJheUJ1ZmZlciJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIGVycm9yUmVzdWx0OwogICAgIH0KIAogICAgIGlmIChtb2RlID09IEFycmF5
QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpIHsKICAgICAgICAgLy8gMTguIElmIElzU2hhcmVk
QXJyYXlCdWZmZXIobmV3KSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAg
ICAgICAgIGlmIChyZXN1bHQtPmlzU2hhcmVkKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgY3Jl
YXRlcyBTaGFyZWRBcnJheUJ1ZmZlciJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlIGNyZWF0ZXMg
U2hhcmVkQXJyYXlCdWZmZXIiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3JSZXN1bHQ7
CiAgICAgICAgIH0KICAgICAgICAgLy8gMTkuIElmIElzRGV0YWNoZWRCdWZmZXIobmV3KSBpcyB0
cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCkBAIC0xMjIsMjAgKzEyMiwyMCBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNB
cnJheUJ1ZmZlcio+IHNwZWNpZXNDbwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIDE3LiBJZiBJ
c1NoYXJlZEFycmF5QnVmZmVyKG5ldykgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVycm9yIGV4Y2Vw
dGlvbi4KICAgICAgICAgaWYgKCFyZXN1bHQtPmlzU2hhcmVkKCkpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTaGFyZWRBcnJheUJ1ZmZlci5wcm90
b3R5cGUuc2xpY2UgY3JlYXRlcyBub24tc2hhcmVkIEFycmF5QnVmZmVyIl9zKTsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTaGFyZWRBcnJheUJ1ZmZl
ci5wcm90b3R5cGUuc2xpY2UgY3JlYXRlcyBub24tc2hhcmVkIEFycmF5QnVmZmVyIl9zdHIpOwog
ICAgICAgICAgICAgcmV0dXJuIGVycm9yUmVzdWx0OwogICAgICAgICB9CiAgICAgfQogCiAgICAg
Ly8gMjAuIElmIFNhbWVWYWx1ZShuZXcsIE8pIGlzIHRydWUsIHRocm93IGEgVHlwZUVycm9yIGV4
Y2VwdGlvbi4KICAgICBpZiAocmVzdWx0ID09IHRoaXNPYmplY3QpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gcmV0
dXJucyBzYW1lIEFycmF5QnVmZmVyIHRvIGEgcmVjZWl2ZXIiX3MpOworICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTcGVjaWVzIGNvbnN0cnVjdGlvbiByZXR1
cm5zIHNhbWUgQXJyYXlCdWZmZXIgdG8gYSByZWNlaXZlciJfc3RyKTsKICAgICAgICAgcmV0dXJu
IGVycm9yUmVzdWx0OwogICAgIH0KIAogICAgIC8vIDIxLiBJZiBuZXcuW1tBcnJheUJ1ZmZlckJ5
dGVMZW5ndGhdXSA8IG5ld0xlbiwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlm
IChyZXN1bHQtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpIDwgbGVuZ3RoKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwZWNpZXMgY29uc3RydWN0aW9uIHJl
dHVybnMgQXJyYXlCdWZmZXIgd2hpY2ggYnl0ZUxlbmd0aCBpcyBsZXNzIHRoYW4gcmVxdWVzdGVk
Il9zKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3Bl
Y2llcyBjb25zdHJ1Y3Rpb24gcmV0dXJucyBBcnJheUJ1ZmZlciB3aGljaCBieXRlTGVuZ3RoIGlz
IGxlc3MgdGhhbiByZXF1ZXN0ZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBlcnJvclJlc3VsdDsK
ICAgICB9CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgYXJyYXlC
dWZmZXJTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFycgogCiAg
ICAgLy8gNC4gSWYgSXNEZXRhY2hlZEJ1ZmZlcihPKSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJv
ciBleGNlcHRpb24uCiAgICAgaWYgKG1vZGUgPT0gQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVm
YXVsdCAmJiB0aGlzT2JqZWN0LT5pbXBsKCktPmlzRGV0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIGlzIGRldGFj
aGVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlJlY2VpdmVyIGlzIGRldGFjaGVkIl9zdHIpOwogCiAgICAgLy8gNS4gTGV0IGxlbiBi
ZSBPLltbQXJyYXlCdWZmZXJCeXRlTGVuZ3RoXV0uCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9
IHRoaXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBhcnJheUJ1ZmZlclNsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgYXJyCiAKICAgICAvLyAyMy4gSWYgSXNEZXRhY2hlZEJ1ZmZlcihP
KSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKG1vZGUgPT0g
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCAmJiB0aGlzT2JqZWN0LT5pbXBsKCktPmlz
RGV0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIGlzIGRldGFjaGVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIGlzIGRldGFjaGVkIl9z
dHIpOwogCiAgICAgaWYgKExJS0VMWShzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25z
dHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoKSkgewogICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPmlt
cGwoKS0+aXNEZXRhY2hlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA5MTliMzE1OWNjMzc2MDQ1ZDlhYjk2YTNi
ZTYyZTBhYWQyMjZiZTYyLi4yNzQxZTNkZjE5Y2U4NWZjZjlhNjIzN2U5MTUwNjYxYTNkOGU4MGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCkBAIC0zNDQsMTMgKzM0NCwxMyBAQCBKU0FycmF5QnVmZmVyVmlldyogdmFsaWRh
dGVUeXBlZEFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdHlwZQog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghdHlw
ZWRBcnJheVZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJBcmd1bWVudCBuZWVkcyB0byBiZSBhIHR5cGVkIGFycmF5LiJfcyk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcmd1bWVudCBuZWVk
cyB0byBiZSBhIHR5cGVkIGFycmF5LiJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCiAgICAgSlNDZWxsKiB0eXBlZEFycmF5Q2VsbCA9IHR5cGVkQXJyYXlWYWx1ZS5hc0Nl
bGwoKTsKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlDZWxsLT5jbGFzc0luZm8odm0p
LT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJBcmd1bWVudCBuZWVkcyB0byBiZSBhIHR5cGVkIGFycmF5LiJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcmd1bWVudCBu
ZWVkcyB0byBiZSBhIHR5cGVkIGFycmF5LiJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5k
ZXggMDNkOTQ0MGJhNWQwZTc4YmQzMTcxZGY3M2M2MjI5YzMyNWYxNDMyZC4uZmQzZDhjYzUyYmU1
MTUxYWRmMTllOWExMmEyZmY3ZGY3Mzk2Njg3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGlubGluZSBKU0JpZ0ludCog
SlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgoSlNHbG9iYWxPYmplY3QqIG51bGxPckdsb2JhbE9i
amVjdEZvCiAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1heExlbmd0aCkpIHsKICAgICAgICAg
aWYgKG51bGxPckdsb2JhbE9iamVjdEZvck9PTSkgewogICAgICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKG51bGxPckdsb2JhbE9iamVjdEZvck9PTSwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZy
b20gdGhpcyBvcGVyYXRpb24gaXMgdG9vIGJpZyJfcyk7CisgICAgICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IobnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NLCBzY29wZSwgIkJpZ0ludCBnZW5l
cmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTUyMyw3ICs1MjMsNyBAQCBKU0JpZ0lu
dDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlSW1wbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBCaQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIGlmIChleHBvbmVudC5zaWduKCkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJOZWdhdGl2ZSBleHBvbmVudCBpcyBub3QgYWxsb3dlZCJf
cyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiTmVnYXRp
dmUgZXhwb25lbnQgaXMgbm90IGFsbG93ZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApAQCAtNTQ5LDcgKzU0OSw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmln
SW50OjpleHBvbmVudGlhdGVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEJpCiAg
ICAgLy8gcmVzdWx0cy4KICAgICBzdGF0aWNfYXNzZXJ0KG1heExlbmd0aEJpdHMgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPERpZ2l0Pjo6bWF4KCksICJtYXhMZW5ndGhCaXRzIG5lZWRzIHRvIGJlIGxl
c3MgdGhhbiBkaWdpdDo6bWF4KCkiKTsKICAgICBpZiAoZXhwb25lbnQubGVuZ3RoKCkgPiAxKSB7
Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQmln
SW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3BlcmF0aW9uIGlzIHRvbyBiaWciX3MpOworICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBnZW5l
cmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTU1Nyw3ICs1NTcsNyBAQCBKU0JpZ0ludDo6SW1wbFJl
c3VsdCBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBCaQogICAgIGlmIChleHBWYWx1ZSA9PSAxKQogICAgICAgICByZXR1cm4gYmFzZTsKICAg
ICBpZiAoZXhwVmFsdWUgPj0gbWF4TGVuZ3RoQml0cykgewotICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlz
IG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRp
b24gaXMgdG9vIGJpZyJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC02ODMsNyArNjgzLDcgQEAgSlNCaWdJbnQ6OkltcGxSZXN1bHQgSlNCaWdJbnQ6OmRpdmlkZUlt
cGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQmlnSW50SW0KICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoeS5pc1plcm8oKSkgewotICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxp
ZCBkaXZpc29yIHZhbHVlLiJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZhbGlkIGRpdmlzb3IgdmFsdWUuIl9zdHIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc3OCw3ICs3NzgsNyBAQCBKU0JpZ0ludDo6
SW1wbFJlc3VsdCBKU0JpZ0ludDo6cmVtYWluZGVySW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBCaWdJbgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICAKICAgICBpZiAoeS5pc1plcm8oKSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxpZCBkaXZpc29yIHZhbHVlLiJfcyk7Cisg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZh
bGlkIGRpdmlzb3IgdmFsdWUuIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKQEAgLTIwMTEsNyArMjAxMSw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojps
ZWZ0U2hpZnRCeUFic29sdXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBh
dXRvIG9wdGlvbmFsU2hpZnQgPSB0b1NoaWZ0QW1vdW50KHkpOwogICAgIGlmICghb3B0aW9uYWxT
aGlmdCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zKTsK
KyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJ
bnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRpb24gaXMgdG9vIGJpZyJfc3RyKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yMDIyLDcgKzIwMjIsNyBAQCBKU0JpZ0lu
dDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6bGVmdFNoaWZ0QnlBYnNvbHV0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgIGJvb2wgZ3JvdyA9IGJpdHNTaGlmdCAmJiAoeC5kaWdpdChs
ZW5ndGggLSAxKSA+PiAoZGlnaXRCaXRzIC0gYml0c1NoaWZ0KSk7CiAgICAgaW50IHJlc3VsdExl
bmd0aCA9IGxlbmd0aCArIGRpZ2l0U2hpZnQgKyBncm93OwogICAgIGlmIChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocmVzdWx0TGVuZ3RoKSA+IG1heExlbmd0aCkgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0
aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVy
YXRpb24gaXMgdG9vIGJpZyJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC0yMzk4LDcgKzIzOTgsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFsbG9jYXRlRm9yKEpT
R2xvYmFsT2JqZWN0KiBudWxsT3JHbG9iYWxPYmplY3RGb3JPT00sIFZNJiB2bQogCiAgICAgaWYg
KG51bGxPckdsb2JhbE9iamVjdEZvck9PTSkgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihudWxsT3JH
bG9iYWxPYmplY3RGb3JPT00sIHNjb3BlLCAiQmlnSW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3Bl
cmF0aW9uIGlzIHRvbyBiaWciX3MpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IobnVs
bE9yR2xvYmFsT2JqZWN0Rm9yT09NLCBzY29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlz
IG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjQxMyw3ICsyNDEzLDcgQEAgZG91YmxlIEpTQmlnSW50Ojp0b051bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmln
SW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJl
cicgaXMgbm90IGFsbG93ZWQuIl9zdHIpOwogICAgIHJldHVybiAwLjA7CiB9CiAKQEAgLTI5NTks
NyArMjk1OSw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojphc1VpbnROSW1wbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfCiAgICAgLy8gSWYgYmlnSW50IGlz
IG5lZ2F0aXZlLCBzaW11bGF0ZSB0d28ncyBjb21wbGVtZW50IHJlcHJlc2VudGF0aW9uLgogICAg
IGlmIChiaWdJbnQuc2lnbigpKSB7CiAgICAgICAgIGlmIChuID4gbWF4TGVuZ3RoQml0cykgewot
ICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJC
aWdJbnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRpb24gaXMgdG9vIGJpZyJfcyk7CisgICAg
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0lu
dCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCB0cnVuY2F0ZUFuZFN1YkZyb21Qb3dlck9mVHdvKGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obiksIGJpZ0ludCwgZmFsc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IGUwYjViY2ZhMTA3NTc5NGQ1Yzc2NzdlNDFiYmI5
MjBkMWRlMDdmZjIuLmM5MjAzZDZjZDVjMGMwYTU2MzgyMGZjZDgyYzY3MjBmMWFmMjMzMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMzA2LDcgKzMwNiw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICgheSkgewogICAgICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxp
ZCBkaXZpc29yIHZhbHVlLiJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxpZCBkaXZpc29yIHZhbHVlLiJfc3RyKTsKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGFz
SW50MzJPckhlYXBDZWxsKGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oeCkgLyBz
dGF0aWNfY2FzdDxpbnQ2NF90Pih5KSk7CkBAIC0zMjEsNyArMzIxLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgaWYgKCF5KSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShnZXRWTShnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZhbGlkIGRpdmlzb3IgdmFsdWUu
Il9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
MCBpcyBhbiBpbnZhbGlkIGRpdmlzb3IgdmFsdWUuIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gYXNJbnQzMk9ySGVhcENlbGwo
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih4KSAlIHN0YXRpY19jYXN0PGludDY0
X3Q+KHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
aW5kZXggMTg1YWNlNzI3ZDE1NDdmOTZkOGZmNjczOWQ1MzYzNGJhMGVjZWI0NS4uNmVlOWZmN2Qx
NzI0ZTIzOTY0MTg2MjU3ZGZhY2JkMjA2NzYwMTQyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgZG91YmxlIEpTVmFs
dWU6OnRvTnVtYmVyU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc0NlbGwoKS0+dG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KSk7CiAjaWYgVVNFKEJJR0lOVDMyKQogICAgIGlmIChpc0JpZ0ludDMyKCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24g
ZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udmVyc2lvbiBmcm9tICdCaWdJ
bnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxvd2VkLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIDAu
MDsKICAgICB9CiAjZW5kaWYKQEAgLTExOCw3ICsxMTgsNyBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRv
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgfQogCiAgICAg
QVNTRVJUKHByaW1pdGl2ZS5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IHByaW1pdGl2ZS5pc051bWJl
cigpIHx8IHByaW1pdGl2ZS5pc1N5bWJvbCgpKTsKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlv
biJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQg
YXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3N0cik7CiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDc5MjY3NjNjZDU2NWRlYmIxYTBiMWM5Y2YxN2ZkMzA5
MjE0NDg2NmEuLmQ0YmUzNjVkNDBhYWM2YTY2MGQ0ZmExZmE5ODEyNGU2ZmM0OWU4ZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApA
QCAtODM1LDcgKzgzNSw3IEBAIGlubGluZSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHRvUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcmltaXRp
dmUgaGludCBpcyBub3QgYSBzdHJpbmcuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByaW1pdGl2ZSBoaW50IGlzIG5vdCBhIHN0cmluZy4iX3N0cik7
CiAgICAgICAgIHJldHVybiBOb1ByZWZlcmVuY2U7CiAgICAgfQogCkBAIC04NDksNyArODQ5LDcg
QEAgaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBpZiAoV1RGOjplcXVhbChoaW50U3RyaW5n
LCAic3RyaW5nIikpCiAgICAgICAgIHJldHVybiBQcmVmZXJTdHJpbmc7CiAKLSAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQgcHJpbWl0aXZlIGhpbnQgdG8g
bWF0Y2ggb25lIG9mICdkZWZhdWx0JywgJ251bWJlcicsICdzdHJpbmcnLiJfcyk7CisgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIHByaW1pdGl2ZSBoaW50
IHRvIG1hdGNoIG9uZSBvZiAnZGVmYXVsdCcsICdudW1iZXInLCAnc3RyaW5nJy4iX3N0cik7CiAg
ICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCBhYmE2ODhkZTQ4NzFmODRjNjI1MWI3OGYwYjgzY2Q2
Mjg2NjcxZDIzLi43OWNkMzc4YTk3ZDBlYmU0MTMwYTA5Y2RmN2NhNWNhZTY4Mjc1MzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtNDksMTUg
KzQ5LDE1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKIAogICAgIEFTU0VSVChi
dWZmZXIpOwogICAgIGlmIChidWZmZXItPmlzRGV0YWNoZWQoKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQnVmZmVyIGlzIGFscmVhZHkgZGV0YWNoZWQi
X3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQnVmZmVy
IGlzIGFscmVhZHkgZGV0YWNoZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZl
ciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewotICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ug
b2YgYnVmZmVyIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciJfc3RyKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zm
c2V0QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemVvZih1aW50OF90KSkpIHsKLSAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCeXRlIG9mZnNldCBpcyBub3QgYWxp
Z25lZCJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
Qnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCBlOThjNzhhYmFiZjk4MzFjZmYwNjVjMWJlOTAyYmZh
YzgwYTA2ZDJhLi4yZGMxNzY0YjgxYzU5ZWZkZmExNzI5MmU3OTE5M2NiM2MwMzgwMjViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAKICAgICBKU0Rh
dGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRhdGFWaWV3KQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcg
bWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2Qg
bXVzdCBiZSBhIERhdGFWaWV3Il9zdHIpOwogICAgIAogICAgIHNpemVfdCBieXRlT2Zmc2V0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQi
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAg
LTE0NywxMSArMTQ3LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgfQogCiAgICAgaWYgKGRh
dGFWaWV3LT5pc0RldGFjaGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRh
Y2hlZCBmcm9tIHRoZSB2aWV3Il9zdHIpOwogCiAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRh
Vmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfc3RyKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFT
aXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIHVuaW9uIHsKQEAgLTE4
MCw3ICsxODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogCiAgICAgSlNEYXRhVmlldyogZGF0YVZp
ZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAgICAgaWYgKCFkYXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJl
IGEgRGF0YVZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRh
VmlldyJfc3RyKTsKICAgICAKICAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMDIsMTEgKzIwMiwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIH0KIAogICAgIGlmIChkYXRhVmlldy0+aXNEZXRh
Y2hlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2
aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUg
dmlldyJfc3RyKTsKIAogICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgp
OwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGggLSBlbGVtZW50U2l6ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5k
cyBhY2Nlc3MiX3N0cik7CiAKICAgICB1aW50OF90KiBkYXRhUHRyID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGRhdGFWaWV3LT52ZWN0b3IoKSkgKyBieXRlT2Zmc2V0OwogCkBAIC0yNDQsNyArMjQ0
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVu
Z3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmlldy5wcm90
b3R5cGUuYnl0ZUxlbmd0aCBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIp
OwogICAgIGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBi
ZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMg
YmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogfQpAQCAtMjU4LDcgKzI1OCw3IEBA
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBl
LmJ5dGVPZmZzZXQgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKICAg
ICBpZiAodmlldy0+aXNEZXRhY2hlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBk
ZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4g
ZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIodmlldy0+Ynl0ZU9mZnNldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmluZGV4IGZjNmZkMzhlY2IzOTJlOWQ1ZWE1NGQ1
NzAyNTc4NTYyMjg5NDM0ZmIuLjFhOTA0MzE4N2Y3ZGIzNDc5ZTIxYWMyMTk0YWYxNjZkMmE0MWE4
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGgu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCkBA
IC0zNDQsMTEgKzM0NCwxMSBAQCBTdHJpbmcgRGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUoKQog
ICAgIFVCb29sIGlzU3lzdGVtID0gZmFsc2U7CiAgICAgaWN1OjpUaW1lWm9uZTo6Z2V0Q2Fub25p
Y2FsSUQodGltZVpvbmVJRCwgY2Fub25pY2FsVGltZVpvbmVJRCwgaXNTeXN0ZW0sIHN0YXR1cyk7
CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gIlVUQyJfczsKKyAg
ICAgICAgcmV0dXJuICJVVEMiX3N0cjsKIAogICAgIFN0cmluZyBjYW5vbmljYWwgPSBTdHJpbmco
Y2Fub25pY2FsVGltZVpvbmVJRC5nZXRCdWZmZXIoKSwgY2Fub25pY2FsVGltZVpvbmVJRC5sZW5n
dGgoKSk7CiAgICAgaWYgKGlzVVRDRXF1aXZhbGVudChjYW5vbmljYWwpKQotICAgICAgICByZXR1
cm4gIlVUQyJfczsKKyAgICAgICAgcmV0dXJuICJVVEMiX3N0cjsKIAogICAgIHJldHVybiBjYW5v
bmljYWw7CiAjZW5kaWYKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIERhdGVDYWNoZTo6dGltZVpv
bmVDYWNoZVNsb3coKQogICAgICAgICAgICAgY2Fub25pY2FsID0gU3RyaW5nKGNhbm9uaWNhbEJ1
ZmZlcik7CiAgICAgfQogICAgIGlmIChjYW5vbmljYWwuaXNOdWxsKCkgfHwgaXNVVENFcXVpdmFs
ZW50KGNhbm9uaWNhbCkpCi0gICAgICAgIGNhbm9uaWNhbCA9ICJVVEMiX3M7CisgICAgICAgIGNh
bm9uaWNhbCA9ICJVVEMiX3N0cjsKICAgICBjYWNoZS0+bV9jYW5vbmljYWxUaW1lWm9uZUlEID0g
V1RGTW92ZShjYW5vbmljYWwpOwogCiAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBkOTM3YjM2YjMw
NDU3NDQwY2VhOGJlYTUxOGQxOTgxOWE2NGE5ZDVjLi5mNTA5NzJhZDk1MjlmZGQzNWYyZjYzZDFh
OGU2N2Y4NDhmYzU3YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcApAQCAtNTEyLDcgKzUxMiw3IEBAIFN0cmluZyBnZXRDYWxjdWxhdGVkRGlzcGxh
eU5hbWUoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1RvV2FzbUlDQ2FsbGVlKj4odm0sIG9iamVjdCkp
Ci0gICAgICAgIHJldHVybiAid2FzbS1zdHViIl9zOworICAgICAgICByZXR1cm4gIndhc20tc3R1
YiJfc3RyOwogI2VuZGlmCiAKICAgICBpZiAoIWpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZt
LCBvYmplY3QpICYmICFqc0R5bmFtaWNDYXN0PEludGVybmFsRnVuY3Rpb24qPih2bSwgb2JqZWN0
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4
IDZmZmVjMzEwY2VlOGU2MWE0NWM0ZjQyNzU0YmI5MDBhZjMwODhkNDEuLjg2YTgyMDcyNmJhNmM1
ZjZmNjY4MDc4YmFiNjVhY2U3NmZlMGE4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTIxLDcgKzEyMSw3IEBAIGlubGluZSBKU0FycmF5
QnVmZmVyKiBjb25zdHJ1Y3RDdXN0b21BcnJheUJ1ZmZlcklmTmVlZGVkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFzcGVjaWVzLT5p
c0NvbnN0cnVjdG9yKHZtKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAic3BlY2llcyBpcyBub3QgYSBjb25zdHJ1Y3RvciJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzcGVjaWVzIGlzIG5vdCBhIGNvbnN0cnVj
dG9yIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE1Myw3ICsx
NTMsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIGlmIChKU0FycmF5QnVmZmVyKiBq
c0J1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSkg
ewogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IGpzQnVmZmVyLT5pbXBsKCk7
CiAgICAgICAgIGlmIChidWZmZXItPmlzRGV0YWNoZWQoKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJ1ZmZlciBpcyBhbHJlYWR5IGRldGFjaGVk
Il9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJC
dWZmZXIgaXMgYWxyZWFkeSBkZXRhY2hlZCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3Qq
IGdsbwogICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoT3B0LnZhbHVlKCk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9m
ZnNldCkgJSBWaWV3Q2xhc3M6OmVsZW1lbnRTaXplKSkgewotICAgICAgICAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVz
IHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUiX3Mp
OworICAgICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
QXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxl
IG9mIHRoZSBlbGVtZW50IHNpemUiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBsZW5ndGggPSAoYnVmZmVyLT5ieXRlTGVu
Z3RoKCkgLSBvZmZzZXQpIC8gVmlld0NsYXNzOjplbGVtZW50U2l6ZTsKQEAgLTE3Myw3ICsxNzMs
NyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIEFTU0VSVCghb2Zmc2V0ICYmICFsZW5n
dGhPcHQpOwogICAgIAogICAgIGlmIChVTkxJS0VMWShWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9y
YWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJFeHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3Vt
ZW50LiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJF
eHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50LiJfc3RyKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtMTkxLDEyICsxOTEsMTIgQEAgaW5s
aW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
KEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAgICAgIGN1c3RvbUJ1ZmZlciA9IGNvbnN0cnVj
dEN1c3RvbUFycmF5QnVmZmVySWZOZWVkZWQoZ2xvYmFsT2JqZWN0LCB2aWV3KTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgaWYg
KHZpZXctPmlzRGV0YWNoZWQoKSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZShvYmplY3QtPmNs
YXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgIT0gVmlld0NsYXNzOjpjb250ZW50
VHlwZSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDb250ZW50IHR5cGVzIG9mIHNvdXJjZSBhbmQgbmV3IHR5cGVkIGFycmF5IGFyZSBkaWZm
ZXJlbnQiX3MpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDb250ZW50IHR5cGVzIG9mIHNvdXJjZSBhbmQgbmV3IHR5cGVkIGFycmF5IGFyZSBk
aWZmZXJlbnQiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICB9CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAKICAg
ICBpZiAoIWFyZ0NvdW50KSB7CiAgICAgICAgIGlmIChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9y
YWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVxdWlyZXMg
YXQgbGVhc3Qgb25lIGFyZ3VtZW50LiJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVxdWly
ZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiJfc3RyKTsKIAogICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgMCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IGQzMmEyYjBjMGMwM2IzYzI5YmI4ZTVmZTk0YzNjMDdlZmJkOGI1NzAuLjNmM2QxMzFjODAw
MjYxOTg5ODRjY2U3NWEwOTZlYmE3ZWU3NDcwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCkBAIC0xODAsNyArMTgwLDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgY29uc3RleHByIChBZGFwdG9yOjpjb250ZW50VHlwZSAhPSBPdGhlckFkYXB0b3I6OmNvbnRl
bnRUeXBlKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJD
b250ZW50IHR5cGVzIG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gdHlwZWQgYXJyYXlzIGFyZSBk
aWZmZXJlbnQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQ29udGVudCB0eXBlcyBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHR5cGVkIGFycmF5cyBh
cmUgZGlmZmVyZW50Il9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApA
QCAtNDU3LDcgKzQ1Nyw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlZmluZU93blByb3BlcnR5KAogICAgIH0KIAogICAgIGlmIChpc0Nhbm9uaWNhbE51bWVyaWNJ
bmRleFN0cmluZyhwcm9wZXJ0eU5hbWUpKQotICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBzdG9yZSBjYW5vbmlj
YWwgbnVtZXJpYyBzdHJpbmcgcHJvcGVydHkgb24gYSB0eXBlZCBhcnJheSJfcyk7CisgICAgICAg
IHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2hvdWxkVGhyb3csICJBdHRl
bXB0aW5nIHRvIHN0b3JlIGNhbm9uaWNhbCBudW1lcmljIHN0cmluZyBwcm9wZXJ0eSBvbiBhIHR5
cGVkIGFycmF5Il9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpk
ZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZUZ1bmN0aW9ucy5oCmluZGV4IGRmMDQzNWY2ZTM3OTgwNjFkOWY2Y2NjNmQ3NTlk
ZmU2NmJkNmQ5ZmEuLmYzNjE3NmUxOGM1NTA1MGRmZThhMjhiYmMwNGYyYTU2MTlkNTg3MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaApAQCAtNTUs
NyArNTUsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXNDb25zdHJ1Y3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplYwogICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGRlZmF1bHRDb25zdHJ1Y3RvcigpKTsKIAogICAgIGlmICghY29uc3RydWN0
b3IuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiY29uc3RydWN0b3IgUHJvcGVydHkgc2hvdWxkIG5vdCBiZSBudWxsIl9zKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNvbnN0cnVjdG9yIFByb3Bl
cnR5IHNob3VsZCBub3QgYmUgbnVsbCJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC03MSw3ICs3MSw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2ll
c0NvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjCiAKICAgICBp
ZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJW
aWV3Kj4odm0sIHJlc3VsdCkpIHsKICAgICAgICAgaWYgKHZpZXctPnR5cGUoKSA9PSBEYXRhVmll
d1R5cGUpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJzcGVjaWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3Il9z
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzcGVj
aWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3Il9zdHIpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIApAQCAtODIsNyArODIsNyBA
QCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXNDb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3BlY2llcyBjb25z
dHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyJfcyk7CisgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5v
dCByZXR1cm4gYSBUeXBlZEFycmF5IFZpZXciX3N0cik7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChWTSYgdm0sIEpTR2xvYmFsTwogICAgIFZpZXdD
bGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKIAogICAgIGlmIChVTkxJS0VMWSghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhw
ZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1
bWVudCJfc3RyKTsKIAogICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgaWYgKGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpID49IDIpIHsKQEAgLTUwMiw3ICs1MDIsNyBAQCBBTFdBWVNfSU5MSU5FIEVu
Y29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKFZNJiB2bSwg
SlNHbG9iYQogICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyN0eXBlZGFycmF5LXNwZWNp
ZXMtY3JlYXRlCiAgICAgLy8gSWYgcmVzdWx0LltbQ29udGVudFR5cGVdXSDiiaAgZXhlbXBsYXIu
W1tDb250ZW50VHlwZV1dLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKGNv
bnRlbnRUeXBlKHJlc3VsdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSAh
PSBWaWV3Q2xhc3M6OmNvbnRlbnRUeXBlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udGVudCB0eXBlcyBvZiBzb3VyY2UgYW5kIGNyZWF0
ZWQgdHlwZWQgYXJyYXlzIGFyZSBkaWZmZXJlbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udGVudCB0eXBlcyBvZiBzb3VyY2Ug
YW5kIGNyZWF0ZWQgdHlwZWQgYXJyYXlzIGFyZSBkaWZmZXJlbnQiX3N0cik7CiAKICAgICAvLyBX
ZSByZXR1cm4gZWFybHkgaGVyZSBzaW5jZSB3ZSBkb24ndCBhbGxvY2F0ZSBhIGJhY2tpbmcgc3Rv
cmUgaWYgbGVuZ3RoIGlzIDAgYW5kIG1lbW1vdmUgZG9lcyBub3QgbGlrZSBudWxscHRycwogICAg
IGlmICghbGVuZ3RoKQpAQCAtNTEzLDcgKzUxMyw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpT
VmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoVk0mIHZtLCBKU0dsb2Jh
CiAKICAgICAvLyBUaGUgc3BlY2llcyBjb25zdHJ1Y3RvciBtYXkgcmV0dXJuIGFuIGFycmF5IHdp
dGggYW55IGFyYml0cmFyeSBsZW5ndGguCiAgICAgaWYgKHJlc3VsdC0+bGVuZ3RoKCkgPCBsZW5n
dGgpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUeXBlZEFycmF5LnByb3RvdHlwZS5zbGljZSBjb25zdHJ1Y3RlZCB0eXBlZCBhcnJheSBvZiBp
bnN1ZmZpY2llbnQgbGVuZ3RoIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkQXJyYXkucHJvdG90eXBlLnNsaWNlIGNvbnN0cnVj
dGVkIHR5cGVkIGFycmF5IG9mIGluc3VmZmljaWVudCBsZW5ndGgiX3N0cik7CiAKICAgICBzd2l0
Y2ggKHJlc3VsdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSB7CiAgICAg
Y2FzZSBUeXBlSW50ODoKQEAgLTYzMSw3ICs2MzEsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0m
CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZhbGlkYXRlZCA9IHZhbGlkYXRlVHlwZWRBcnJheShn
bG9iYWxPYmplY3QsIHJlc3VsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICBpZiAoY29udGVudFR5cGUodmFsaWRhdGVkLT5jbGFzc0luZm8odm0pLT50eXBlZEFy
cmF5U3RvcmFnZVR5cGUpICE9IFZpZXdDbGFzczo6Y29udGVudFR5cGUpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUeXBlZEFycmF5LnByb3Rv
dHlwZS5zdWJhcnJheSBjb25zdHJ1Y3RlZCB0eXBlZCBhcnJheSBvZiBkaWZmZXJlbnQgY29udGVu
dCB0eXBlIGZyb20gfHRoaXN8Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5IGNvbnN0
cnVjdGVkIHR5cGVkIGFycmF5IG9mIGRpZmZlcmVudCBjb250ZW50IHR5cGUgZnJvbSB8dGhpc3wi
X3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbGlkYXRlZCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXgg
ZmE2MjNlMDkwNzRjMzhmYmUzMjM0MTY3ZGNkNTkyMDJmOGYxNTFiNi4uNzA3MmY5M2I0YTU4YzEw
NmExYTM4NDViOWI4ODFmZTIwNjViNzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODU0LDcgKzg1NCw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJl
OjpJbml0aWFsaXplciYgaW5pdCkgeyBcCiAgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShK
UyAjIyB0eXBlICMjIEFycmF5UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5nbG9iYWws
IEpTICMjIHR5cGUgIyMgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBp
bml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJheVByb3RvLmdldChpbml0Lmdsb2Jh
bCkpKSk7IFwKICAgICAgICAgICAgIGluaXQuc2V0U3RydWN0dXJlKEpTICMjIHR5cGUgIyMgQXJy
YXk6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5wcm90b3R5cGUp
KTsgXAotICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihKUyAjIyB0eXBlICMjIEFycmF5
Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlwZSAjIyBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGlu
aXQuZ2xvYmFsLT5tX3R5cGVkQXJyYXlTdXBlckNvbnN0cnVjdG9yLmdldChpbml0Lmdsb2JhbCkp
LCBpbml0LnByb3RvdHlwZSwgI3R5cGUgIkFycmF5Il9zKSk7IFwKKyAgICAgICAgICAgIGluaXQu
c2V0Q29uc3RydWN0b3IoSlMgIyMgdHlwZSAjIyBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUoaW5p
dC52bSwgaW5pdC5nbG9iYWwsIEpTICMjIHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5
U3VwZXJDb25zdHJ1Y3Rvci5nZXQoaW5pdC5nbG9iYWwpKSwgaW5pdC5wcm90b3R5cGUsICN0eXBl
ICJBcnJheSJfc3RyKSk7IFwKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5wdXREaXJlY3QoaW5p
dC52bSwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlICMjIEFycmF5
UHJpdmF0ZU5hbWUoKSwgaW5pdC5jb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOyBcCiAgICAgICAgIH0pOwogICAgIEZPUl9FQUNI
X1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhJTklUX1RZUEVEX0FSUkFZX0xB
VEVSKQpAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgewog
ICAgICAgICAgICAgaW5pdC5zZXRQcm90b3R5cGUoSlNEYXRhVmlld1Byb3RvdHlwZTo6Y3JlYXRl
KGluaXQudm0sIEpTRGF0YVZpZXdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBp
bml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAg
ICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSlNEYXRhVmlldzo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGluaXQuZ2xvYmFsLCBpbml0LnByb3RvdHlwZSkpOwotICAgICAgICAgICAgaW5pdC5z
ZXRDb25zdHJ1Y3RvcihKU0RhdGFWaWV3Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0
Lmdsb2JhbCwgSlNEYXRhVmlld0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
aW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgaW5p
dC5wcm90b3R5cGUsICJEYXRhVmlldyJfcykpOworICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1
Y3RvcihKU0RhdGFWaWV3Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwg
SlNEYXRhVmlld0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9i
YWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgaW5pdC5wcm90b3R5
cGUsICJEYXRhVmlldyJfc3RyKSk7CiAgICAgICAgIH0pOwogICAgIAogICAgIG1fbGV4aWNhbEVu
dmlyb25tZW50U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwpAQCAtMTM5Nyw3ICsxMzk3LDcgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCks
IGdsb2JhbEZ1bmNDb3B5RGF0YVByb3BlcnRpZXMpKTsKICAgICAgICAgfSk7CiAgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZW5x
dWV1ZUpvYildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
ewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5xdWV1
ZUpvYikpOworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCAiZW5xdWV1ZUpvYiJfc3Ry
LCBlbnF1ZXVlSm9iKSk7CiAgICAgICAgIH0pOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VUeXBlRXJyb3IpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCBkZTVlMzdkMGZhMzQwMmU3NzZmMWZmZjgyY2QxZTU0
NjhlNjZmZjFiLi4yNzVkYjY1NGEzNGI0ZjM3OGRkYzM4NDFjM2E0M2VkNTFhM2ViNWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIFN0cmluZyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6Om5hbWUoKSBjb25zdAogewogICAg
IFN0cmluZyBuYW1lID0gbV9nbG9iYWxPYmplY3QubmFtZSgpOwotICAgIHJldHVybiBuYW1lLmlz
RW1wdHkoKSA/ICJKU0NvbnRleHQiX3MgOiBuYW1lOworICAgIHJldHVybiBuYW1lLmlzRW1wdHko
KSA/ICJKU0NvbnRleHQiX3N0ciA6IG5hbWU7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCYgZnJvbnRlbmRDaGFubmVsLCBib29sIGF1
dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgaW1tZWRpYXRlbHlQYXVzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAppbmRleCAwOTRmNzZiZjJkN2JiNzAyY2IxNDUzMDA4ZTRkYzc5MzVkOTljMTVkLi44OTM0NGI0
NDAyODUzYzlhMmY1ODE1NmU5MjJhMTM1YzQ2YzdmYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBA
IC03MSw3ICs3MSw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBCaXRtYXA8MjU2PiYgZG9Ob3RFc2NhCiAgICAgLy8gaHR0cHM6Ly90
YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZW5jb2RlCiAKICAgICBhdXRvIHRocm93RXhjZXB0
aW9uID0gWyZzY29wZSwgZ2xvYmFsT2JqZWN0XSB7Ci0gICAgICAgIHJldHVybiBKU0M6OnRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVj
dCwgIlN0cmluZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2VxdWVuY2UuIl9zKSk7Cisg
ICAgICAgIHJldHVybiBKU0M6OnRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgIlN0cmluZyBjb250YWluZWQgYW4gaWxsZWdhbCBV
VEYtMTYgc2VxdWVuY2UuIl9zdHIpKTsKICAgICB9OwogCiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyKFN0cmluZ0J1aWxkZXI6Ok92ZXJmbG93SGFuZGxlcjo6UmVjb3JkT3ZlcmZsb3cpOwpAQCAt
MjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChjaGFyTGVuID09IDApIHsKICAgICAgICAgICAgICAgICBpZiAoc3RyaWN0
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlVVJJRXJyb3IoZ2xvYmFsT2JqZWN0LCAiVVJJIGVycm9yIl9zKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVVUklFcnJvcihnbG9iYWxPYmplY3QsICJVUkkgZXJyb3IiX3N0cikpOwogICAg
ICAgICAgICAgICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgZG9uJ3QgdXNlICJzdHJpY3Qi
IG1vZGUgaXMgdGhlICJ1bmVzY2FwZSIgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8gRm9y
IHRoYXQsIGl0J3MgZ29vZCB0byBzdXBwb3J0IHRoZSB3b25reSAiJXUiIHN5bnRheCBmb3IgY29t
cGF0aWJpbGl0eSB3aXRoIFdpbklFLgogICAgICAgICAgICAgICAgIGlmIChrIDw9IGxlbmd0aCAt
IDYgJiYgcFsxXSA9PSAndScKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAppbmRleCA5NmEwZjdkYTQzZDNjZTgz
MTFmZWM5NmQ5NjM4MzlhYWM5ODZlOTE0Li5kOWY5YWJlNDY5Mzc5N2NlZjZmNjYyYTQwMTEwNDFm
ODE2MjNjOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEFic3RyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJNb2R1bGUiX3MpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiTW9kdWxlIl9zdHIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CiAKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1nZXRwcm90b3R5cGVv
ZgogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldHByb3RvdHlwZW9mLXYKQEAg
LTI3OSwyOCArMjc5LDI4IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBjZWxsLCBKU0dsb2JhbE9iamVjdCoKICAgICAvLyA0LiBJZiBJ
c0FjY2Vzc29yRGVzY3JpcHRvcihEZXNjKSBpcyB0cnVlLCByZXR1cm4gZmFsc2UuCiAgICAgaWYg
KGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAoc2hvdWxk
VGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
Q2Fubm90IGNoYW5nZSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcgdG8gYWNjZXNz
b3IiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkNhbm5vdCBjaGFuZ2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QncyBiaW5kaW5nIHRvIGFjY2Vz
c29yIl9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gNS4gSWYg
RGVzYy5bW1dyaXRhYmxlXV0gaXMgcHJlc2VudCBhbmQgaGFzIHZhbHVlIGZhbHNlLCByZXR1cm4g
ZmFsc2UuCiAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgIWRlc2NyaXB0
b3Iud3JpdGFibGUoKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNoYW5nZSBtb2R1bGUg
bmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcgdG8gbm9uLXdyaXRhYmxlIGF0dHJpYnV0ZSJfcyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90
IGNoYW5nZSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcgdG8gbm9uLXdyaXRhYmxl
IGF0dHJpYnV0ZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8v
IDYuIElmIERlc2MuW1tFbnVtZXJhYmxlXV0gaXMgcHJlc2VudCBhbmQgaGFzIHZhbHVlIGZhbHNl
LCByZXR1cm4gZmFsc2UuCiAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAm
JiAhZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpIHsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQot
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBy
ZXBsYWNlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0J3MgYmluZGluZyB3aXRoIG5vbi1lbnVtZXJh
YmxlIGF0dHJpYnV0ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiQ2Fubm90IHJlcGxhY2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QncyBiaW5k
aW5nIHdpdGggbm9uLWVudW1lcmFibGUgYXR0cmlidXRlIl9zdHIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgLy8gNy4gSWYgRGVzYy5bW0NvbmZpZ3VyYWJsZV1dIGlzIHBy
ZXNlbnQgYW5kIGhhcyB2YWx1ZSB0cnVlLCByZXR1cm4gZmFsc2UuCiAgICAgaWYgKGRlc2NyaXB0
b3IuY29uZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsK
ICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByZXBsYWNlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0
J3MgYmluZGluZyB3aXRoIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUiX3MpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByZXBsYWNlIG1vZHVs
ZSBuYW1lc3BhY2Ugb2JqZWN0J3MgYmluZGluZyB3aXRoIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUi
X3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTMxMCw3ICszMTAsNyBA
QCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCogY2VsbCwgSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgIGlmIChzaG91
bGRUaHJvdykKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2Fubm90IHJlcGxhY2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QncyBiaW5kaW5nJ3Mg
dmFsdWUiX3MpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDYW5ub3QgcmVwbGFjZSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcn
cyB2YWx1ZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXgg
NmI3YzU4ODFhZDliZmZkY2E1YTI0OWE0MzcxMDI1YTJjZjQ3ZjgwYi4uMDNlNzZmNmQ3N2QxY2I4
YTViOTdhMzlhMjk5ZGVkYzAxYjcyYWExMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTM5MSw3ICszOTEsNyBAQCBTdHJpbmdpZmllcjo6U3Ry
aW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1
aWxkZXImCiAgICAgfQogCiAgICAgaWYgKHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IobV9nbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90
IHNlcmlhbGl6ZSBCaWdJbnQuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9nbG9iYWxP
YmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBCaWdJbnQuIl9z
dHIpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogICAgIH0KIApAQCAtNDEzLDcg
KzQxMyw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVu
ZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKICAgICAvLyBIYW5kbGUgY3ljbGUgZGV0
ZWN0aW9uLCBhbmQgcHV0IHRoZSBob2xkZXIgb24gdGhlIHN0YWNrLgogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2hvbGRlclN0YWNrLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGlmICht
X2hvbGRlclN0YWNrW2ldLm9iamVjdCgpID09IG9iamVjdCkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IobV9nbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNl
cmlhbGl6ZSBjeWNsaWMgc3RydWN0dXJlcy4iX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IobV9nbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6
ZSBjeWNsaWMgc3RydWN0dXJlcy4iX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5
RmFpbGVkOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCmluZGV4IGQ1NDRhNDNiYTE5ZWEzMjdmYmQyODE1YWRjN2FmMzQxNmM1NjFh
NjYuLjU5OTA0OGZmY2U1ZWM5ZWFlYTA0OWM1OWVkZWQzY2U5OTczNDVjMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTU1Nyw3ICs1NTcsNyBAQCBT
dHJpbmcgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPYmplY3QqIG9iamVjdCkKICAg
ICAgICAgICAgIHJldHVybiBjbGFzc0luZm9OYW1lOwogCiAgICAgICAgIGlmIChjb25zdHJ1Y3Rv
ckZ1bmN0aW9uTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiAiT2JqZWN0Il9zOwor
ICAgICAgICAgICAgcmV0dXJuICJPYmplY3QiX3N0cjsKICAgICB9CiAKICAgICByZXR1cm4gY29u
c3RydWN0b3JGdW5jdGlvbk5hbWU7CkBAIC0xOTEyLDcgKzE5MTIsNyBAQCBib29sIEpTT2JqZWN0
OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCkgPT0gcHJvdG90eXBlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgcmV0
dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2FudFNldCwg
IkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0Il9zKTsK
KyAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJv
d0lmQ2FudFNldCwgIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUg
b2JqZWN0Il9zdHIpOwogICAgIH0KIAogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhp
cyh0aGlzLCBnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkgPT0gdGhpcyk7CkBAIC0x
OTI5LDcgKzE5MjksNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVj
ayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSBuZXh0
UHJvdG90eXBlID0gcHJvdG90eXBlOwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlICYmIG5leHRQ
cm90b3R5cGUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAobmV4dFByb3RvdHlwZSA9PSB0aGlz
KQotICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91
bGRUaHJvd0lmQ2FudFNldCwgImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiX3MpOworICAgICAgICAg
ICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2Fu
dFNldCwgImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiX3N0cik7CiAgICAgICAgIC8vIEZJWE1FOiBU
aGUgc3BlY2lmaWNhdGlvbiBjdXJyZW50bHkgc2F5cyB3ZSBzaG91bGQgY2hlY2sgaWYgdGhlIFtb
R2V0UHJvdG90eXBlT2ZdXSBpbnRlcm5hbCBtZXRob2Qgb2YgbmV4dFByb3RvdHlwZQogICAgICAg
ICAvLyBpcyBub3QgdGhlIG9yZGluYXJ5IG9iamVjdCBpbnRlcm5hbCBtZXRob2QuIEhvd2V2ZXIs
IHdlIGN1cnJlbnRseSByZXN0cmljdCB0aGlzIHRvIFByb3h5IG9iamVjdHMgYXMgaXQgd291bGQg
YWxsb3cKICAgICAgICAgLy8gZm9yIGN5Y2xlcyB3aXRoIGNlcnRhaW4gSFRNTCBvYmplY3RzIChX
aW5kb3dQcm94eSwgTG9jYXRpb24pIG90aGVyd2lzZS4KQEAgLTIyNzMsNyArMjI3Myw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2FsbFRvUHJpbWl0aXZlRnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZt
LCBmdW5jdGlvbik7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpIHsKICAgICAgICAgaWYgY29uc3RleHByIChrZXkgPT0gQ2FjaGVkU3BlY2lhbFByb3BlcnR5
S2V5OjpUb1ByaW1pdGl2ZSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJTeW1ib2wudG9QcmltaXRpdmUgaXMgbm90IGEgZnVuY3Rpb24sIHVuZGVmaW5l
ZCwgb3IgbnVsbCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiU3ltYm9sLnRvUHJpbWl0aXZlIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmluZWQs
IG9yIG51bGwiX3N0cik7CiAgICAgICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKTsKICAgICB9
CiAKQEAgLTIzMDIsNyArMjMwMiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2Fs
bFRvUHJpbWl0aXZlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgQVNT
RVJUKCFyZXN1bHQuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgp
KSB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2V5ID09IENhY2hlZFNwZWNpYWxQcm9wZXJ0eUtl
eTo6VG9QcmltaXRpdmUpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlN5bWJvbC50b1ByaW1pdGl2ZSByZXR1cm5lZCBhbiBvYmplY3QiX3Mp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJTeW1ib2wudG9QcmltaXRpdmUgcmV0dXJuZWQgYW4gb2JqZWN0Il9zdHIpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjM0NCw3ICsy
MzQ0LDcgQEAgSlNWYWx1ZSBKU09iamVjdDo6b3JkaW5hcnlUb1ByaW1pdGl2ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmkKIAogICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uRXhjZXB0VGVybWluYXRpb24oKTsKIAotICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiTm8gZGVmYXVsdCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJObyBkZWZhdWx0IHZhbHVlIl9zdHIp
OwogfQogCiBKU1ZhbHVlIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CkBA
IC0yNDMzLDcgKzI0MzMsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9i
amVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiJfcyk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnN0YW5jZW9mIGNhbGxlZCBvbiBh
biBvYmplY3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iX3N0cik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI4NjMsMTAgKzI4NjMsMTAgQEAgYm9vbCBK
U09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGkKICAgICAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUo
KSkgewogICAgICAgICAgICAgICAgIC8vIDExLmkuIFJlamVjdCwgaWYgdGhlIFtbU2V0XV0gZmll
bGQgb2YgRGVzYyBpcyBwcmVzZW50IGFuZCBTYW1lVmFsdWUoRGVzYy5bW1NldF1dLCBjdXJyZW50
LltbU2V0XV0pIGlzIGZhbHNlLgogICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNldHRl
clByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLnNldHRlcigpICE9IGN1cnJlbnQuc2V0dGVyKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
dGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVu
Y29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5n
IHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfc3Ry
KTsKICAgICAgICAgICAgICAgICAvLyAxMS5paS4gUmVqZWN0LCBpZiB0aGUgW1tHZXRdXSBmaWVs
ZCBvZiBEZXNjIGlzIHByZXNlbnQgYW5kIFNhbWVWYWx1ZShEZXNjLltbR2V0XV0sIGN1cnJlbnQu
W1tHZXRdXSkgaXMgZmFsc2UuCiAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVy
UHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZ2V0dGVyKCkgIT0gY3VycmVudC5nZXR0ZXIoKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5j
b25maWd1cmFibGUgcHJvcGVydHkuIl9zKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcg
dG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9zdHIp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzc3MSw5ICszNzcxLDkgQEAg
Ym9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5pc0FjY2Vz
c29yRGVzY3JpcHRvcigpKTsKICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7
CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkgJiYgZGVzY3JpcHRv
ci5zZXR0ZXIoKSAhPSBjdXJyZW50LnNldHRlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5n
IHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5j
b25maWd1cmFibGUgcHJvcGVydHkuIl9zdHIpOwogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iu
Z2V0dGVyUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZ2V0dGVyKCkgIT0gY3VycmVudC5nZXR0ZXIo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1
bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iX3MpOworICAgICAgICAgICAgICAgIHJldHVybiB0eXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRv
IGNoYW5nZSB0aGUgZ2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfc3RyKTsK
IAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3IuY3BwCmluZGV4IGZhMzMzODJlZmM4M2MwNWYxOTVkNTRiZTZmNDUwODQzYzEwYWY1MjEuLjgx
ODgzMjlhOWU5MTllMGVkZTc1NmVlYjE3YmViNTZmNzU2NDUzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZgogCiB2
b2lkIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBw
cm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKIHsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMCwgIlR5cGVkQXJyYXkiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IDAsICJUeXBlZEFycmF5Il9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0
dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU3ltYm9sLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogCkBAIC02MSw3ICs2MSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUeXBlZEFycmF5VmlldywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJVR5cGVkQXJyYXklIHNob3VsZCBu
b3QgYmUgY2FsbGVkIGRpcmVjdGx5Il9zKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiJVR5cGVkQXJyYXklIHNob3VsZCBub3QgYmUgY2FsbGVkIGRp
cmVjdGx5Il9zdHIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5j
cHAKaW5kZXggODgyN2IzZGU5OGZlMDVmZTU4YjkxNzA0MjllMzg2NDk5NWUxOWY1OC4uOTcxY2Vl
OTI0NTBlY2QxZDFmYjljNWIwZTRhMWFkMDQyM2ZlN2I5MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5j
cHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odHlw
ZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNUb1N0cmluZ1RhZyk7CiAgICAgY2FzZSBOb3RUeXBl
ZEFycmF5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRGF0YVZpZXc6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfcyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAiUmVjZWl2
ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfc3RyKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IHdoaWxl
IChmYWxzZSkKQEAgLTE2NywxMiArMTY3LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0
eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghYXJndW1lbnQuaXNDZWxs
KCkgfHwgIWlzVHlwZWRWaWV3KGFyZ3VtZW50LmFzQ2VsbCgpLT5jbGFzc0luZm8odm0pLT50eXBl
ZEFycmF5U3RvcmFnZVR5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zdHIpOwogCiAgICAgSlNB
cnJheUJ1ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihh
cmd1bWVudCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBB
cnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcg
QXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfc3RyKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+bGVuZ3RoKCkpKTsK
IH0KQEAgLTE4Myw3ICsxODMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJh
eVZpZXdQcml2YXRlRnVuY0NvbnRlbnRUeXBlLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghYXJndW1lbnQuaXNDZWxsKCkgfHwgIWlz
VHlwZWRWaWV3KGFyZ3VtZW50LmFzQ2VsbCgpLT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zdHIpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oY29udGVudFR5cGUoYXJndW1l
bnQuYXNDZWxsKCktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpKSk7CiB9
CiAKQEAgLTIwMSwxMiArMjAxLDEyIEBAIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjcmVhdGVUeXBl
ZEFycmF5SXRlcmF0b3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLmlzQ2VsbCgpIHx8ICFpc1R5cGVkQXJyYXlUeXBlKGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkuYXNDZWxsKCktPnR5cGUoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJh
eSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciX3N0cik7CiAK
ICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVy
Vmlldyo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlz
RGV0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0
aGUgdmlldyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20g
dGhlIHZpZXciX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJyYXlJdGVy
YXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwg
dGhpc09iamVjdCwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpKSkpOwogfQpA
QCAtMjQxLDcgKzI0MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5Vmll
d1Byb3RvRnVuY1NldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4g
b2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVS
SUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jU2V0KTsKIH0KQEAgLTI1Miw3ICsyNTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluLCAoSlNHbG9iYWxPYmplY3QqIGds
bwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0
IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxM
X0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jQ29weVdpdGhpbik7CiB9CkBAIC0yNzQsNyArMjc0LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YsIChKU0ds
b2JhbE9iamVjdCogZ2wKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2
aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBh
cnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfc3RyKTsKICAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKTsKIH0KQEAgLTI4NSw3ICsyODUs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRl
eE9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAg
IHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVf
RlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik7CiB9CkBAIC0y
OTYsNyArMjk2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jSm9pbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
c3RyKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlf
UFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOwog
fQpAQCAtMzA3LDcgKzMwNyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5
Vmlld1Byb3RvRnVuY0ZpbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVj
ZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3Qi
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiX3N0cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBF
REFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNG
aWxsKTsKIH0KQEAgLTMxOCw3ICszMTgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlw
ZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIsIChKU0dsb2JhbE9iamVjdCogZwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4g
b2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVS
SUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9HZXR0ZXJGdW5jQnVmZmVyKTsKIH0KQEAgLTMyOSw3ICszMjksNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgsIChKU0dsb2Jh
bE9iamVjdCogZwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0
aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsK
ICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKTsKIH0KQEAgLTM0MCw3ICszNDAsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNC
eXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplYwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5
cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNj
b3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVO
Q1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCk7CiB9
CkBAIC0zNTEsNyArMzUxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlW
aWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldCwgKEpTR2xvYmFsT2JqZWMKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9i
amVjdCJfc3RyKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVE
QVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY0J5dGVPZmZzZXQpOwogfQpAQCAtMzYyLDcgKzM2Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3N0cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAg
IENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKTsKIH0KQEAgLTM3Myw3ICszNzMsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRl
LCAoSlNHbG9iYWxPYmplYwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7CiB9CkBAIC0zODQs
NyArMzg0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jU2xpY2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91
bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfc3Ry
KTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJP
VE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKTsKIH0K
QEAgLTM5OCwyNyArMzk4LDI3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3RyaW5nVGFnLCAoSlNHbG9iYWxPYmplCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHN3aXRjaCAodGhpc1ZhbHVlLmdldE9iamVjdCgp
LT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpIHsKICAgICBjYXNlIFR5cGVV
aW50OENsYW1wZWQ6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFs
U3RyaW5nKHZtLCAiVWludDhDbGFtcGVkQXJyYXkiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50OENsYW1wZWRBcnJheSJfc3Ry
KSk7CiAgICAgY2FzZSBUeXBlSW50MzI6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50MzJBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkludDMyQXJyYXkiX3N0cikp
OwogICAgIGNhc2UgVHlwZVVpbnQzMjoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50MzJBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlVpbnQzMkFycmF5Il9zdHIp
KTsKICAgICBjYXNlIFR5cGVGbG9hdDY0OgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkZsb2F0NjRBcnJheSJfcykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkZsb2F0NjRBcnJheSJf
c3RyKSk7CiAgICAgY2FzZSBUeXBlRmxvYXQzMjoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJGbG9hdDMyQXJyYXkiX3MpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJGbG9hdDMyQXJy
YXkiX3N0cikpOwogICAgIGNhc2UgVHlwZUludDg6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50OEFycmF5Il9zKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50OEFycmF5Il9z
dHIpKTsKICAgICBjYXNlIFR5cGVVaW50ODoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50OEFycmF5Il9zKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiVWludDhBcnJheSJfc3Ry
KSk7CiAgICAgY2FzZSBUeXBlSW50MTY6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50MTZBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkludDE2QXJyYXkiX3N0cikp
OwogICAgIGNhc2UgVHlwZVVpbnQxNjoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50MTZBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlVpbnQxNkFycmF5Il9zdHIp
KTsKICAgICBjYXNlIFR5cGVCaWdJbnQ2NDoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJCaWdJbnQ2NEFycmF5Il9zKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiQmlnSW50NjRBcnJh
eSJfc3RyKSk7CiAgICAgY2FzZSBUeXBlQmlnVWludDY0OgotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkJpZ1VpbnQ2NEFycmF5Il9zKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiQmln
VWludDY0QXJyYXkiX3N0cikpOwogICAgIGNhc2UgTm90VHlwZWRBcnJheToKICAgICBjYXNlIFR5
cGVEYXRhVmlldzoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGlmIChP
cHRpb25zOjp1c2VBdE1ldGhvZCgpKQogICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXRQdWJsaWNO
YW1lKCksIHR5cGVkQXJyYXlQcm90b3R5cGVBdENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgIEpTRnVuY3Rpb24q
IHRvU3RyaW5nVGFnRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMCwgImdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSJfcywgdHlwZWRBcnJheVZpZXdQcm90b0dl
dHRlckZ1bmNUb1N0cmluZ1RhZywgTm9JbnRyaW5zaWMpOworICAgIEpTRnVuY3Rpb24qIHRvU3Ry
aW5nVGFnRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwg
ImdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSJfc3RyLCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY1RvU3RyaW5nVGFnLCBOb0ludHJpbnNpYyk7CiAgICAgR2V0dGVyU2V0dGVyKiB0b1N0cmlu
Z1RhZ0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdG9T
dHJpbmdUYWdGdW5jdGlvbiwgbnVsbHB0cik7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nv
cldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJv
bCwgdG9TdHJpbmdUYWdBY2Nlc3NvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApp
bmRleCA0MTJlMjU4YWIwOTU5ZjE4YjMyZGE5OTFkYjNmOTYwNGYyOThiN2Y0Li41MzczMWY3ZTM1
MmY1NjJkZTM0YjFmYTU1M2Y2MzM2NTE1YzViNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNzI4LDcgKzcyOCw3IEBAIEFMV0FZ
U19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4KExp
dGVyYWxQYXJzZXJUb2tlbjxDCiAgICAgICAgIHN3aXRjaCAodG9rZW5UeXBlKSB7CiAgICAgICAg
IGNhc2UgVG9rU3RyaW5nOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKGNoYXJhY3RlciA9PSAn
XCcnICYmIG1fbW9kZSA9PSBTdHJpY3RKU09OKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIlNpbmdsZSBxdW90ZXMgKFwnKSBhcmUgbm90IGFsbG93ZWQgaW4gSlNPTiJf
czsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJTaW5nbGUgcXVvdGVzIChc
JykgYXJlIG5vdCBhbGxvd2VkIGluIEpTT04iX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4g
VG9rRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbGV4U3RyaW5nKHRv
a2VuLCBjaGFyYWN0ZXIpOwpAQCAtOTEwLDcgKzkxMCw3IEBAIHNsb3dQYXRoQmVnaW46CiAgICAg
ICAgICAgICAgICAgbV9idWlsZGVyLmFwcGVuZENoYXJhY3RlcnMocnVuU3RhcnQsIG1fcHRyIC0g
cnVuU3RhcnQpOwogICAgICAgICAgICAgKyttX3B0cjsKICAgICAgICAgICAgIGlmIChtX3B0ciA+
PSBtX2VuZCkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlVudGVybWlu
YXRlZCBzdHJpbmciX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW50
ZXJtaW5hdGVkIHN0cmluZyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoKm1fcHRyKSB7CkBAIC05NDksNyAr
OTQ5LDcgQEAgc2xvd1BhdGhCZWdpbjoKIAogICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgogICAg
ICAgICAgICAgICAgICAgICBpZiAoKG1fZW5kIC0gbV9wdHIpIDwgNSkgeyAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlxcdSBtdXN0IGJlIGZvbGxvd2VkIGJ5
IDQgaGV4IGRpZ2l0cyJfczsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIlxcdSBtdXN0IGJlIGZvbGxvd2VkIGJ5IDQgaGV4IGRpZ2l0cyJfc3RyOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICAgICAgICAgICAgICB9
IC8vIHVOTk5OID09IDUgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBp
ID0gMTsgaSA8IDU7IGkrKykgewpAQCAtOTc1LDcgKzk3NSw3IEBAIHNsb3dQYXRoQmVnaW46CiAg
ICAgfSB3aGlsZSAoKG1fbW9kZSAhPSBOb25TdHJpY3RKU09OKSAmJiBtX3B0ciAhPSBydW5TdGFy
dCAmJiAobV9wdHIgPCBtX2VuZCkgJiYgKm1fcHRyICE9IHRlcm1pbmF0b3IpOwogCiAgICAgaWYg
KG1fcHRyID49IG1fZW5kIHx8ICptX3B0ciAhPSB0ZXJtaW5hdG9yKSB7Ci0gICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gIlVudGVybWluYXRlZCBzdHJpbmciX3M7CisgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIlVudGVybWluYXRlZCBzdHJpbmciX3N0cjsKICAgICAgICAgcmV0dXJuIFRv
a0Vycm9yOwogICAgIH0KIApAQCAtMTAyNiw3ICsxMDI2LDcgQEAgVG9rZW5UeXBlIExpdGVyYWxQ
YXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4TnVtYmVyKExpdGVyYWxQYXJzZXJUb2tlbjxDaGFy
VHlwZT4KICAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNBU0NJSURpZ2l0KCptX3B0
cikpCiAgICAgICAgICAgICArK21fcHRyOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIkludmFsaWQgbnVtYmVyIl9zOworICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9ICJJbnZhbGlkIG51bWJlciJfc3RyOwogICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAg
fQogCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlw
ZT46OkxleGVyOjpsZXhOdW1iZXIoTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPgogICAgICAg
ICArK21fcHRyOwogICAgICAgICAvLyBbMC05XSsKICAgICAgICAgaWYgKG1fcHRyID49IG1fZW5k
IHx8ICFpc0FTQ0lJRGlnaXQoKm1fcHRyKSkgewotICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSAiSW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludCJfczsKKyAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gIkludmFsaWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnQi
X3N0cjsKICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICAgICAgfQogCkBAIC0xMDc5
LDcgKzEwNzksNyBAQCBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjps
ZXhOdW1iZXIoTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPgogCiAgICAgICAgIC8vIFswLTld
KwogICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7
Ci0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJFeHBvbmVudCBzeW1ib2xzIHNob3Vs
ZCBiZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3IgJy0nIGFuZCB0aGVuIGJ5IGF0IGxl
YXN0IG9uZSBudW1iZXIiX3M7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJFeHBv
bmVudCBzeW1ib2xzIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3IgJy0n
IGFuZCB0aGVuIGJ5IGF0IGxlYXN0IG9uZSBudW1iZXIiX3N0cjsKICAgICAgICAgICAgIHJldHVy
biBUb2tFcnJvcjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTExMDAsMTMgKzExMDAsMTMgQEAg
dm9pZCBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6c2V0RXJyb3JNZXNzYWdlRm9yVG9rZW4oVG9r
ZW5UeXBlIHRva2VuVHlwZSkKIHsKICAgICBzd2l0Y2ggKHRva2VuVHlwZSkgewogICAgIGNhc2Ug
VG9rUkJyYWNlOgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICd9JyJf
czsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnfSciX3N0cjsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBUb2tSQnJhY2tldDoKLSAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJFeHBlY3RlZCAnXSciX3M7CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiRXhwZWN0ZWQgJ10nIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVG9rQ29sb246
Ci0gICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJzonIGJlZm9yZSB2YWx1
ZSBpbiBvYmplY3QgcHJvcGVydHkgZGVmaW5pdGlvbiJfczsKKyAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJFeHBlY3RlZCAnOicgYmVmb3JlIHZhbHVlIGluIG9iamVjdCBwcm9wZXJ0eSBk
ZWZpbml0aW9uIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTExMzgsMTAgKzExMzgsMTAgQEAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZVByaW1pdGl2
ZVZhbHVlKFZNJiB2bSkKICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgIHJldHVybiBq
c0Jvb2xlYW4oZmFsc2UpOwogICAgIGNhc2UgVG9rUkJyYWNrZXQ6Ci0gICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3M7CisgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3N0cjsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICBjYXNlIFRva1JCcmFjZToKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJVbmV4cGVjdGVkIHRva2VuICd9JyJfczsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJVbmV4cGVjdGVkIHRva2VuICd9JyJfc3RyOwogICAgICAgICByZXR1cm4geyB9OwogICAgIGNh
c2UgVG9rSWRlbnRpZmllcjogewogICAgICAgICBhdXRvIHRva2VuID0gbV9sZXhlci5jdXJyZW50
VG9rZW4oKTsKQEAgLTExNjgsMzMgKzExNjgsMzMgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIExp
dGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZVByaW1pdGl2ZVZhbHVlKFZNJiB2bSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgY2FzZSBUb2tDb2xvbjoKLSAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyJfczsKKyAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyJfc3RyOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIGNhc2UgVG9rTFBhcmVuOgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJygnIl9zOworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJygnIl9zdHI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
Y2FzZSBUb2tSUGFyZW46Ci0gICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3Rl
ZCB0b2tlbiAnKSciX3M7CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3Rl
ZCB0b2tlbiAnKSciX3N0cjsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBjYXNlIFRva0NvbW1h
OgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIl9z
OworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIl9z
dHI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgY2FzZSBUb2tEb3Q6Ci0gICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciX3M7CisgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciX3N0cjsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICBjYXNlIFRva0Fzc2lnbjoKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyJfczsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyJfc3RyOwogICAgICAgICByZXR1cm4geyB9OwogICAg
IGNhc2UgVG9rU2VtaToKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc7JyJfczsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc7JyJfc3RyOwogICAgICAgICByZXR1cm4geyB9OwogICAgIGNhc2UgVG9rRW5kOgot
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zOworICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zdHI7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgY2FzZSBUb2tFcnJvcjoKICAgICBkZWZhdWx0OgogICAgICAgICAvLyBF
cnJvcgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkNvdWxkIG5vdCBwYXJzZSB2YWx1
ZSBleHByZXNzaW9uIl9zOworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkNvdWxkIG5v
dCBwYXJzZSB2YWx1ZSBleHByZXNzaW9uIl9zdHI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogfQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBl
Pjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgVG9rZW5UeXBl
IGxhc3RUb2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCktPnR5cGU7CiAgICAgICAgICAgICBp
ZiAobV9sZXhlci5uZXh0KCkgPT0gVG9rUkJyYWNrZXQpIHsKICAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkobGFzdFRva2VuID09IFRva0NvbW1hKSkgewotICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJh
eSBleHByZXNzaW9uIl9zOworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIl9zdHI7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwpAQCAtMTI4NCw3ICsxMjg0LDcgQEAgSlNWYWx1
ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRl
KQogCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX21vZGUgIT0gU3RyaWN0SlNPTiAmJiBpZGVu
dCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghdmlzaXRlZFVuZGVyc2NvcmVQcm90by5hZGQob2JqZWN0
KS5pc05ld0VudHJ5KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiQXR0ZW1wdGVkIHRvIHJlZGVmaW5lIF9fcHJvdG9fXyBwcm9wZXJ0eSJfczsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkF0dGVt
cHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHkiX3N0cjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBtX251bGxP
ckNvZGVCbG9jayA/IG1fbnVsbE9yQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0
cmljdENvbnRleHQoKSA6IGZhbHNlKTsKQEAgLTEzMDMsNyArMTMwMyw3IEBAIEpTVmFsdWUgTGl0
ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKIAog
ICAgICAgICAgICAgICAgICAgICBuZXh0VHlwZSA9IG1fbGV4ZXIubmV4dCgpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFR5cGUgIT0gVG9rU3RyaW5nICYmIChtX21vZGUg
PT0gU3RyaWN0SlNPTiB8fCBuZXh0VHlwZSAhPSBUb2tJZGVudGlmaWVyKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiUHJvcGVydHkgbmFtZSBtdXN0
IGJlIGEgc3RyaW5nIGxpdGVyYWwiX3M7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsIl9z
dHI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTMzMCw3ICsxMzMwLDcgQEAgSlNWYWx1ZSBM
aXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQog
ICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RTdGFydEV4cHJlc3Npb246IHsKICAgICAgICAgICAg
IFRva2VuVHlwZSB0eXBlID0gbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkodHlwZSAhPSBUb2tTdHJpbmcgJiYgKG1fbW9kZSA9PSBTdHJpY3RKU09OIHx8IHR5cGUgIT0g
VG9rSWRlbnRpZmllcikpKSB7Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJQcm9wZXJ0eSBuYW1lIG11c3QgYmUgYSBzdHJpbmcgbGl0ZXJhbCJfczsKKyAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmlu
ZyBsaXRlcmFsIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFjay5hcHBlbmQobWFrZUlkZW50aWZpZXIodm0s
IG1fbGV4ZXIuY3VycmVudFRva2VuKCkpKTsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIEpTVmFsdWUg
TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkK
ICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQgPSBpZGVudGlmaWVyU3RhY2sudGFrZUxhc3Qo
KTsKICAgICAgICAgICAgIGlmIChtX21vZGUgIT0gU3RyaWN0SlNPTiAmJiBpZGVudCA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoIXZpc2l0ZWRVbmRlcnNjb3JlUHJvdG8uYWRkKG9iamVjdCkuaXNOZXdFbnRyeSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJBdHRlbXB0ZWQgdG8g
cmVkZWZpbmUgX19wcm90b19fIHByb3BlcnR5Il9zOworICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIkF0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVy
dHkiX3N0cjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBtX251bGxP
ckNvZGVCbG9jayA/IG1fbnVsbE9yQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0
cmljdENvbnRleHQoKSA6IGZhbHNlKTsKQEAgLTE0MDMsNTAgKzE0MDMsNTAgQEAgSlNWYWx1ZSBM
aXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQog
ICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIFRva1JCcmFja2V0OgotICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3M7CisgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICddJyJfc3RyOwogICAgICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKLSAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ3snIl9z
OworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tl
biAneyciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2Fz
ZSBUb2tSQnJhY2U6Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICd9JyJfczsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgICAgIGNhc2UgVG9rSWRlbnRpZmllcjoKLSAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgaWRlbnRpZmllciJfczsKKyAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgaWRlbnRpZmllciJfc3RyOwog
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICBjYXNlIFRva0NvbG9uOgot
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
OiciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc6JyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAg
ICBjYXNlIFRva1JQYXJlbjoKLSAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgdG9rZW4gJyknIl9zOworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKSciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1
cm4geyB9OwogICAgICAgICAgICAgY2FzZSBUb2tDb21tYToKLSAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIl9zOworICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciX3N0cjsKICAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2FzZSBUb2tUcnVlOgotICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAndHJ1
ZSciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICd0cnVlJyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
ICAgICBjYXNlIFRva0ZhbHNlOgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIl9zOworICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIl9zdHI7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIGNhc2UgVG9rTnVsbDoKLSAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ251bGwnIl9zOwor
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
bnVsbCciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2Fz
ZSBUb2tFbmQ6Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVj
dGVkIEVPRiJfczsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhw
ZWN0ZWQgRU9GIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAg
IGNhc2UgVG9rRG90OgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5l
eHBlY3RlZCB0b2tlbiAnLiciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgICAgICAgICBjYXNlIFRva0Fzc2lnbjoKLSAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIl9zOworICAgICAgICAgICAgICAg
IG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnPSciX3N0cjsKICAgICAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2FzZSBUb2tTZW1pOgotICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnOyciX3M7
CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICc7JyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICBjYXNl
IFRva0Vycm9yOgogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIkNvdWxkIG5vdCBwYXJzZSBzdGF0ZW1lbnQiX3M7CisgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJDb3VsZCBub3QgcGFyc2Ugc3RhdGVtZW50Il9z
dHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENo
YXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CiAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgPT0gVG9rRW5kKQog
ICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWU7Ci0gICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29udGVudCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIl9z
OworICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIGNvbnRlbnQg
YXQgZW5kIG9mIEpTT04gbGl0ZXJhbCJfc3RyOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IDJlMmFiMDI1ZGJkMWI5MzZiMzMwZTU2N2ZlYjgyNTEx
MjU1MTE5ZTguLjFhM2RlNGM3ZjcxODgwNTYxZTMwYTlmOTY5OTUzZDRhYjNkYTViYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTEwOSw3
ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gIkpTT04gUGFyc2UgZXJyb3I6
ICIgKyBtX2xleGVyLmdldEVycm9yTWVzc2FnZSgpOwogICAgICAgICBpZiAoIW1fcGFyc2VFcnJv
ck1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuICJKU09OIFBhcnNlIGVycm9y
OiAiICsgbV9wYXJzZUVycm9yTWVzc2FnZTsKLSAgICAgICAgcmV0dXJuICJKU09OIFBhcnNlIGVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciX3M7CisgICAgICAgIHJldHVybiAiSlNP
TiBQYXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nIl9zdHI7CiAgICAgfQog
ICAgIAogICAgIEpTVmFsdWUgdHJ5TGl0ZXJhbFBhcnNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAppbmRleCBlNWEyODk4Njc1ODQ4Mjlm
ZWEyMTQxZjk2ODgyNDk1MDYwOGNiNzhiLi5iZWJkM2FkYTJiZmNkNTE0ZjFkZTNjOGRlYWExN2Qx
OGRlNjI2MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29u
c3RydWN0b3IuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGNvbnN0IENsYXNzSW5mbyBNYXBDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBuCiAK
IHZvaWQgTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTWFwUHJvdG90eXBl
KiBtYXBQcm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKIHsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIk1hcCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
MCwgIk1hcCJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5z
aXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIG1hcFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTg3LDcgKzg3LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdE1hcCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSoKIAogICAgICAgICBhZGRlckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxs
RGF0YSh2bSwgYWRkZXJGdW5jdGlvbik7CiAgICAgICAgIGlmIChVTkxJS0VMWShhZGRlckZ1bmN0
aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3NldCcgcHJvcGVy
dHkgb2YgYSBNYXAgc2hvdWxkIGJlIGNhbGxhYmxlLiJfcyk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3NldCcgcHJvcGVydHkgb2Yg
YSBNYXAgc2hvdWxkIGJlIGNhbGxhYmxlLiJfc3RyKTsKICAgICB9CiAKICAgICBzY29wZS5yZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNw
cAppbmRleCA5M2ViZTAwM2M0NzJiYzg5NDNhODU4ZGE4MzUzNGYyYmI3YTE4MDZlLi40NGExMTYz
ZTRmODVmYzAwMjllNGU4NjJmZDZiOGQ4ZTcwM2Q1MzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgSlNNYXAqIGdldE1hcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHRoaXNWYWwKICAgICBhdXRvKiBtYXAgPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4o
dm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSk7CiAgICAgaWYgKExJS0VMWShtYXApKQogICAgICAgICBy
ZXR1cm4gbWFwOwotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJNYXAg
b3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAg
b2JqZWN0Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAppbmRleCA4ODg1OTFkZGMw
NmZmYWNhZDJmMGEwOTczYmYwMjU1NGQ2NTE4MGI2Li5mNmMwNWM0NTVjMTViYjA1Mjg0ZThkODYz
YjEzYmFmMmI5NDlkOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04obnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgU3RyaW5nOjpudW1iZXIoeCkpKTsKIAogICAgIGlmIChkZWNpbWFsUGxhY2VzIDwgMCB8
fCBkZWNpbWFsUGxhY2VzID4gMTAwKQotICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInRvRXhwb25lbnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJl
dHdlZW4gMCBhbmQgMTAwIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3
ZWVuIDAgYW5kIDEwMCJfc3RyKTsKIAogICAgIC8vIFJvdW5kIGlmIHRoZSBhcmd1bWVudCBpcyBu
b3QgdW5kZWZpbmVkLCBhbHdheXMgZm9ybWF0IGFzIGV4cG9uZW50aWFsLgogICAgIE51bWJlclRv
U3RyaW5nQnVmZmVyIGJ1ZmZlcjsKQEAgLTQzMSw3ICs0MzEsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04obnVtYmVyUHJvdG9GdW5jVG9GaXhlZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgaW50IGRlY2ltYWxQbGFjZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChkZWNpbWFsUGxhY2VzIDwg
MCB8fCBkZWNpbWFsUGxhY2VzID4gMTAwKQotICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdl
ZW4gMCBhbmQgMTAwIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5k
IDEwMCJfc3RyKTsKIAogICAgIC8vIDE1LjcuNC41Ljcgc3RhdGVzICJJZiB4ID49IDEwXjIxLCB0
aGVuIGxldCBtID0gVG9TdHJpbmcoeCkiCiAgICAgLy8gVGhpcyBhbHNvIGNvdmVycyBJbmluaXR5
LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0aGF0IE5hTgpAQCAtNDc2LDcgKzQ3Niw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlcih4KSkpOwogCiAgICAgaWYgKHNp
Z25pZmljYW50RmlndXJlcyA8IDEgfHwgc2lnbmlmaWNhbnRGaWd1cmVzID4gMTAwKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvUHJlY2lz
aW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEwMCJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidG9QcmVjaXNpb24o
KSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAwIl9zdHIpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0ZpeGVk
UHJlY2lzaW9uKHgsIHNpZ25pZmljYW50RmlndXJlcywgS2VlcFRyYWlsaW5nWmVyb3MpKSk7CiB9
CkBAIC02MDcsNyArNjA3LDcgQEAgaW50MzJfdCBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcmFkaXgKICAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRpeERvdWJsZSk7ICAgCiAgICAgfQogCi0g
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgInRvU3RyaW5nKCkg
cmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2Il9zKTsKKyAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAidG9TdHJpbmcoKSByYWRpeCBhcmd1
bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiX3N0cik7CiAgICAgcmV0dXJuIDA7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcAppbmRleCA1ODQwNmVhNzMxYzk0YWViNzQ5MTE5MmViZTZkMTRjOTNhMjM4Yzc3Li4yMDZi
OWFiMGJjNjZlYjg4YjNmYjc5NjUyYWQyMmI1OWVlOWI5MmVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0xNTYsMTEg
KzE1NiwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29uc3RydWN0b3JTZXRQ
cm90b3R5cGVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgSlNWYWx1ZSBvYmplY3RW
YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKG9iamVjdFZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiB1bmRlZmluZWQgb3IgbnVsbCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiB1bmRlZmluZWQgb3IgbnVsbCJfc3RyKTsKIAogICAg
IEpTVmFsdWUgcHJvdG9WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFw
cm90b1ZhbHVlLmlzT2JqZWN0KCkgJiYgIXByb3RvVmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm90b3R5cGUgdmFs
dWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJvdG90eXBlIHZhbHVlIGNhbiBv
bmx5IGJlIGFuIG9iamVjdCBvciBudWxsIl9zdHIpOwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9
IG9iamVjdFZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0zMTAsNyArMzEwLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yQXNzaWduLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKIAogICAgIEpTVmFsdWUgdGFyZ2V0VmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmICh0YXJnZXRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2Jq
ZWN0LmFzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBvciB1
bmRlZmluZWQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiT2JqZWN0LmFzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBu
b3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3N0cik7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRh
cmdldFZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIApAQCAtMzU0LDcgKzM1NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihvYmplY3RDb25zdHJ1Y3RvckVudHJpZXMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0CiAKICAgICBKU1ZhbHVlIHRhcmdldFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICBpZiAodGFyZ2V0VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdC5lbnRyaWVzIHJl
cXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJP
YmplY3QuZW50cmllcyByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBv
ciB1bmRlZmluZWQiX3N0cik7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRhcmdldFZhbHVlLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIApAQCAtNDEzLDcgKzQxMyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RD
b25zdHJ1Y3RvclZhbHVlcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBK
U1ZhbHVlIHRhcmdldFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAodGFy
Z2V0VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdC52YWx1ZXMgcmVxdWlyZXMgdGhhdCBp
bnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdC52YWx1ZXMg
cmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9z
dHIpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJnZXRWYWx1ZS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKQEAgLTQ2MCw3
ICs0NjAsNyBAQCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzYwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghaW4uaXNPYmplY3QoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJvcGVydHkgZGVzY3JpcHRp
b24gbXVzdCBiZSBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0LiJf
c3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBKU09iamVjdCogZGVzY3Jp
cHRpb24gPSBhc09iamVjdChpbik7CkBAIC01MDgsNyArNTA4LDcgQEAgYm9vbCB0b1Byb3BlcnR5
RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGluLCBQcm9w
ZXJ0eURlc2MKICAgICAgICAgSlNWYWx1ZSBnZXQgPSBkZXNjcmlwdGlvbi0+Z2V0KGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Z2V0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoIWdldC5pc1VuZGVmaW5lZCgpICYmICFnZXQu
aXNDYWxsYWJsZSh2bSkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJHZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiJfcyk7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiR2V0dGVyIG11c3QgYmUgYSBmdW5j
dGlvbi4iX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgZGVzYy5zZXRHZXR0ZXIoZ2V0KTsKQEAgLTUyMSw3ICs1MjEsNyBAQCBib29sIHRvUHJvcGVy
dHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW4sIFBy
b3BlcnR5RGVzYwogICAgICAgICBKU1ZhbHVlIHNldCA9IGRlc2NyaXB0aW9uLT5nZXQoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICghc2V0LmlzVW5kZWZpbmVkKCkgJiYgIXNl
dC5pc0NhbGxhYmxlKHZtKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlNldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIl9zKTsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTZXR0ZXIgbXVzdCBiZSBhIGZ1
bmN0aW9uLiJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBkZXNjLnNldFNldHRlcihzZXQpOwpAQCAtNTMyLDEyICs1MzIsMTIgQEAgYm9vbCB0b1By
b3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGlu
LCBQcm9wZXJ0eURlc2MKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoZGVzYy52YWx1
ZSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZh
bGlkIHByb3BlcnR5LiAgJ3ZhbHVlJyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9y
IHNldHRlci4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW52YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdl
dHRlciBvciBzZXR0ZXIuIl9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgaWYgKGRlc2Mud3JpdGFibGVQcmVzZW50KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHByZXNl
bnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRh
YmxlJyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iX3N0cik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NDksNyAr
NTQ5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yRGVmaW5l
UHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm9w
ZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3N0cik7CiAgICAgSlNPYmpl
Y3QqIG9iaiA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CkBAIC02MTYsNyArNjE2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0
cnVjdG9yRGVmaW5lUHJvcGVydGllcywgKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmpl
Y3RzLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3N0cik7
CiAgICAgSlNPYmplY3QqIHRhcmdldE9iaiA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOwogICAgIEpTT2JqZWN0KiBwcm9wcyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIXByb3BzKTsKQEAgLTYzMiw3ICs2MzIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04ob2JqZWN0Q29uc3RydWN0b3JDcmVhdGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogCiAgICAgSlNWYWx1ZSBwcm90byA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KCFwcm90by5pc09iamVjdCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdCBwcm90b3R5cGUgbWF5
IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGwuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkg
YmUgYW4gT2JqZWN0IG9yIG51bGwuIl9zdHIpOwogICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBw
cm90by5pc09iamVjdCgpCiAgICAgICAgID8gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBhc09iamVjdChwcm90bykpCiAgICAgICAgIDogY29uc3RydWN0RW1wdHlPYmplY3Qodm0s
IGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKQEAgLTc1Myw3
ICs3NTMsNyBAQCBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JTZWFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgYm9vbCBzdWNjZXNzID0gc2V0
SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OlNlYWxlZD4oZ2xvYmFsT2JqZWN0LCB2bSwg
b2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJVbmFibGUgdG8gcHJldmVudCBleHRlbnNpb24gaW4gT2JqZWN0LnNlYWwi
X3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxl
IHRvIHByZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5zZWFsIl9zdHIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc4Niw3ICs3ODYsNyBAQCBKU09iamVjdCogb2JqZWN0
Q29uc3RydWN0b3JGcmVlemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IG9iamVjdAogICAgIGJvb2wgc3VjY2VzcyA9IHNldEludGVncml0eUxldmVsPEludGVncml0eUxl
dmVsOjpGcm96ZW4+KGdsb2JhbE9iamVjdCwgdm0sIG9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxlIHRvIHBy
ZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5mcmVlemUiX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxlIHRvIHByZXZlbnQgZXh0ZW5zaW9uIGlu
IE9iamVjdC5mcmVlemUiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAg
ICByZXR1cm4gb2JqZWN0OwpAQCAtODE3LDcgKzgxNyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zLCAoSlNHbG9iYWxPYmplY3Qq
IGdsCiAgICAgYm9vbCBzdGF0dXMgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4
dGVuc2lvbnMob2JqZWN0LCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxlIHRvIHByZXZlbnQg
ZXh0ZW5zaW9uIGluIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmFibGUgdG8gcHJldmVu
dCBleHRlbnNpb24gaW4gT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zIl9zdHIpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUob2JqZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggOTViYmEzY2IzMjBlYTVjNzBm
OTgwNDNmZTBkMjY3MDE3NzNhMGUyYy4uYzA4ZmM0YjdjMDdhNTY2MjI1MGMxOGFjMjlhNTI1NmZj
ODFiMTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
IAogICAgIEpTVmFsdWUgZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIWdl
dC5pc0NhbGxhYmxlKHZtKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImludmFsaWQgZ2V0dGVyIHVzYWdlIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgZ2V0dGVyIHVz
YWdlIl9zdHIpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogCiAgICAgSlNWYWx1ZSBzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
OwogICAgIGlmICghc2V0LmlzQ2FsbGFibGUodm0pKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52
YWxpZCBzZXR0ZXIgdXNhZ2UiX3N0cik7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDA5MTllNzIxODZkMzlkNmQ1NmVkZDcx
OGE5Y2ZiOGEzMDRmNTkxNzEuLmI3NDQ4OTliM2I5YTI3YmI0OTY0YjU1N2Q1ODQzNDA0NzgwYjQ0
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTgw
Nyw3ICs4MDcsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNVUlNoaWZ0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbGVmdCwgSlNWYQogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoVU5MSUtFTFkoIWxlZnRVaW50MzIgfHwgIXJp
Z2h0VWludDMyKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQmlnSW50IGRvZXMgbm90IHN1cHBvcnQgPj4+IG9wZXJhdG9yIl9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBkb2VzIG5vdCBzdXBwb3J0
ID4+PiBvcGVyYXRvciJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcApp
bmRleCBlYWJmYTg1YWNhMzdlZjBhYTdjN2RmODk1ZWFlNDE3MzlkMTU0OTBlLi44MzczM2E1YmYx
NGIzMWY1ZWEzOWQ2M2E4ZDUzMmJhYTA5MDYwZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBAIC04OCw3ICs4OCw3IEBA
IEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBnbG9i
YWxPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5
cGUgJiYgbmV4dFByb3RvdHlwZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShh
c09iamVjdChuZXh0UHJvdG90eXBlKS0+dHlwZSgpID09IFByb3h5T2JqZWN0VHlwZSkpCi0gICAg
ICAgICAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIlByb3h5IGlzIG5v
dCBhbGxvd2VkIGluIHRoZSBnbG9iYWwgcHJvdG90eXBlIGNoYWluLiJfcyk7CisgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIlByb3h5IGlzIG5vdCBhbGxv
d2VkIGluIHRoZSBnbG9iYWwgcHJvdG90eXBlIGNoYWluLiJfc3RyKTsKICAgICAgICAgbmV4dFBy
b3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90b3R5cGUpLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
OwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjcyZjhmN2FlZTUzMDkwNzE4NjM5NmMyMzE0NWNiYWJk
ZmJiMWYzYy4uOTFkNDhkZjA5ZmMxMmFkZWU2OTg3OTdlZTM0YzFmZDVmM2MzYTczMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1ha2VSZXZvY2FibGVQ
cm94eSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eS5yZXZvY2Fi
bGUgbmVlZHMgdG8gYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQg
dGhlIGhhbmRsZXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUHJveHkucmV2b2NhYmxlIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHR3
byBhcmd1bWVudHM6IHRoZSB0YXJnZXQgYW5kIHRoZSBoYW5kbGVyIl9zdHIpOwogCiAgICAgSlNW
YWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgaGFuZGxl
ciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggNDVmNThkOTlkMzVkNWExM2RkYjk5ZTBhNjRjZjkx
ZmI2NmQ5MzhkZi4uOGU1ODliZmFmMDk0MTllZjY4YmM1OTY4NWUzNDU4YTY1YjBkZWIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNjAs
MTEgKzYwLDExIEBAIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIEFTU0VSVCh0eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKTsKICAgICBp
ZiAoIXRhcmdldC5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJBIFByb3h5J3MgJ3RhcmdldCcgc2hvdWxkIGJlIGFuIE9iamVjdCJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBIFByb3h5J3Mg
J3RhcmdldCcgc2hvdWxkIGJlIGFuIE9iamVjdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAoIWhhbmRsZXIuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQgYmUgYW4g
T2JqZWN0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkEgUHJveHkncyAnaGFuZGxlcicgc2hvdWxkIGJlIGFuIE9iamVjdCJfc3RyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZv
cm1Qcm94eUdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm94eU9iamVjdCogcHJv
eHlPCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJW
YWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBnZXRIYW5kbGVyID0g
aGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3BlcnR5TmFt
ZXMtPmdldCwgIidnZXQnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIG9iamVjdCBzaG91
bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgZ2V0SGFuZGxlciA9IGhhbmRsZXItPmdl
dE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXQsICIn
Z2V0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBvYmplY3Qgc2hvdWxkIGJlIGNhbGxh
YmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBp
ZiAoZ2V0SGFuZGxlci5pc1VuZGVmaW5lZCgpKQpAQCAtMTM5LDEwICsxMzksMTAgQEAgc3RhdGlj
IEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3h5T2JqZWN0KiBwcm94eU8KICAgICAgICAgICAgIGJvb2wgaXNTYW1lID0gc2FtZVZhbHVlKGds
b2JhbE9iamVjdCwgZGVzY3JpcHRvci52YWx1ZSgpLCB0cmFwUmVzdWx0KTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBpZiAoIWlzU2Ft
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxl
IGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFzIHRo
ZSB0YXJnZXQncyBwcm9wZXJ0eSJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ2dldCcgcmVzdWx0
IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHByb3BlcnR5IHNob3VsZCBi
ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGFyZ2V0J3MgcHJvcGVydHkiX3N0cik7CiAgICAgICAg
IH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmICFkZXNjcmlw
dG9yLmNvbmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3IuZ2V0dGVyKCkuaXNVbmRlZmluZWQoKSkg
ewogICAgICAgICAgICAgaWYgKCF0cmFwUmVzdWx0LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBo
YW5kbGVyJ3MgJ2dldCcgcmVzdWx0IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9w
ZXJ0eSB3aXRob3V0IGEgZ2V0dGVyIHNob3VsZCBiZSB1bmRlZmluZWQiX3MpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkg
aGFuZGxlcidzICdnZXQnIHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNzb3IgcHJv
cGVydHkgd2l0aG91dCBhIGdldHRlciBzaG91bGQgYmUgdW5kZWZpbmVkIl9zdHIpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUK
IAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVl
KTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvck1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRh
LCBtYWtlSWRlbnRpZmllcih2bSwgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpLCAiJ2dldE93
blByb3BlcnR5RGVzY3JpcHRvcicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxk
IGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1l
dGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRl
bnRpZmllcih2bSwgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpLCAiJ2dldE93blByb3BlcnR5
RGVzY3JpcHRvcicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxh
YmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBp
ZiAoZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kLmlzVW5kZWZpbmVkKCkpCiAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcGVyZm9ybURlZmF1bHRHZXRPd25Qcm9wZXJ0eSgp
KTsKQEAgLTIyNCw3ICsyMjQsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxN
ZXRob2RHZXRPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc1Vu
ZGVmaW5lZCgpICYmICF0cmFwUmVzdWx0LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJyBjYWxsIHNob3VsZCBlaXRoZXIgYmUgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZXN1bHQgb2Yg
J2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FsbCBzaG91bGQgZWl0aGVyIGJlIGFuIE9iamVj
dCBvciB1bmRlZmluZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTIzNiwxMyArMjM2LDEzIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhv
ZEdldE93blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIGlmICgh
aXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBpZiAoIXRhcmdldFByb3BlcnR5RGVzY3JpcHRvci5jb25maWd1cmFibGUo
KSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIldo
ZW4gdGhlIHJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBpcyB1bmRlZmluZWQg
dGhlIHRhcmdldCBtdXN0IGJlIGNvbmZpZ3VyYWJsZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2hlbiB0aGUgcmVzdWx0IG9mICdnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0aGUgdGFyZ2V0IG11c3QgYmUgY29uZmln
dXJhYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gdGFyZ2V0LT5pc0V4dGVuc2libGUoZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBp
ZiAoIWlzRXh0ZW5zaWJsZSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIldoZW4gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgcmV0dXJucyB1bmRl
ZmluZWQsIHRoZSAndGFyZ2V0JyBvZiBhIFByb3h5IHNob3VsZCBiZSBleHRlbnNpYmxlIl9zKTsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJXaGVuICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIHJldHVybnMgdW5kZWZpbmVkLCB0aGUgJ3RhcmdldCcg
b2YgYSBQcm94eSBzaG91bGQgYmUgZXh0ZW5zaWJsZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCkBAIC0yNjAsMTcgKzI2MCwxNyBAQCBib29sIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZQogICAgICAgICB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLCBpc1RhcmdldFByb3Bl
cnR5RGVzY3JpcHRvckRlZmluZWQsIHRhcmdldFByb3BlcnR5RGVzY3JpcHRvciwgdGhyb3dFeGNl
cHRpb24pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAo
IXZhbGlkKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZXN1bHQgZnJvbSAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBmYWlscyB0aGUgSXNDb21wYXRp
YmxlUHJvcGVydHlEZXNjcmlwdG9yIHRlc3QiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRv
cicgZmFpbHMgdGhlIElzQ29tcGF0aWJsZVByb3BlcnR5RGVzY3JpcHRvciB0ZXN0Il9zdHIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCF0cmFwUmVzdWx0QXNEZXNj
cmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgIGlmICghaXNUYXJnZXRQcm9wZXJ0eURl
c2NyaXB0b3JEZWZpbmVkIHx8IHRhcmdldFByb3BlcnR5RGVzY3JpcHRvci5jb25maWd1cmFibGUo
KSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJl
c3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1
cmFibGUgd2hlbiB0aGUgJ3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0
eSBvciBpZiBpdCBpcyBhIGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciX3Mp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlc3Vs
dCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFi
bGUgd2hlbiB0aGUgJ3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBv
ciBpZiBpdCBpcyBhIGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciX3N0cik7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRyYXBS
ZXN1bHRBc0Rlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgIXRyYXBSZXN1bHRBc0Rlc2Ny
aXB0b3Iud3JpdGFibGUoKSAmJiB0YXJnZXRQcm9wZXJ0eURlc2NyaXB0b3Iud3JpdGFibGUoKSkg
ewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlc3Vs
dCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFi
bGUgYW5kIG5vbi13cml0YWJsZSB3aGVuIHRoZSB0YXJnZXQncyBwcm9wZXJ0eSBpcyB3cml0YWJs
ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FuJ3QgYmUgbm9uLWNvbmZp
Z3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIHdy
aXRhYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKIAogICAgIEpTT2Jq
ZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGhhc01ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhv
ZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsICInaGFzJyBw
cm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAg
IEpTVmFsdWUgaGFzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2Fs
bERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPmhhcywgIidoYXMnIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKGhhc01ldGhvZC5pc1VuZGVmaW5lZCgpKQogICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1EZWZhdWx0SGFzUHJvcGVydHko
KSk7CkBAIC0zMzYsMTMgKzMzNiwxMyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJv
cGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKGlzUHJvcGVy
dHlEZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3Igbm9uLWNvbmZpZ3Vy
YWJsZSBwcm9wZXJ0aWVzIl9zKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUHJveHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUnIGZvciBub24t
Y29uZmlndXJhYmxlIHByb3BlcnRpZXMiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0YXJn
ZXQtPmlzRXh0ZW5zaWJsZShnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgaWYgKCFpc0V4dGVuc2libGUpIHsK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJv
eHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUnIGZvciBhIG5vbi1leHRlbnNpYmxlICd0YXJnZXQn
IG9iamVjdCB3aXRoIGEgY29uZmlndXJhYmxlIHByb3BlcnR5Il9zKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgJ2hhcycgbXVzdCBy
ZXR1cm4gJ3RydWUnIGZvciBhIG5vbi1leHRlbnNpYmxlICd0YXJnZXQnIG9iamVjdCB3aXRoIGEg
Y29uZmlndXJhYmxlIHByb3BlcnR5Il9zdHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDE5LDcgKzQxOSw3IEBAIGJvb2wgUHJv
eHlPYmplY3Q6OnBlcmZvcm1QdXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwdXRWYWx1ZSwgSlNWCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVj
dCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBz
ZXRNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgdm0u
cHJvcGVydHlOYW1lcy0+c2V0LCAiJ3NldCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIg
c2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIHNldE1ldGhvZCA9IGhhbmRsZXIt
PmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQs
ICInc2V0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUi
X3N0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIEpTT2Jq
ZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKICAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZp
bmVkKCkpCkBAIC00NDksMTEgKzQ0OSwxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVgogICAg
ICAgICAgICAgYm9vbCBpc1NhbWUgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBkZXNjcmlwdG9y
LnZhbHVlKCksIHB1dFZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgICAgIGlmICghaXNTYW1lKSB7Ci0gICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnc2V0
JyBvbiBhIG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFy
Z2V0JyBzaG91bGQgZWl0aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJl
YWR5IG9uIHRoZSAndGFyZ2V0JyJfcyk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnc2V0JyBvbiBhIG5vbi1jb25m
aWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFyZ2V0JyBzaG91bGQgZWl0
aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJlYWR5IG9uIHRoZSAndGFy
Z2V0JyJfc3RyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYm
ICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3Iuc2V0dGVyKCkuaXNVbmRl
ZmluZWQoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlByb3h5IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJhYmxlIGFj
Y2Vzc29yIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZSJfcyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkg
aGFuZGxlcidzICdzZXQnIG1ldGhvZCBvbiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNzb3IgcHJv
cGVydHkgd2l0aG91dCBhIHNldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNTEyLDcgKzUxMiw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihwZXJmb3JtUHJveHlDYWxsLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2Fz
dDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
SlNWYWx1ZSBhcHBseU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNh
bGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9m
IGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBh
cHBseU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBt
YWtlSWRlbnRpZmllcih2bSwgImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gcHJv
eHktPnRhcmdldCgpOwogICAgIGlmIChhcHBseU1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CkBAIC01
NTksNyArNTU5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHBlcmZvcm1Qcm94eUNvbnN0
cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKIAogICAgIEpTT2JqZWN0KiBo
YW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICBKU1ZhbHVlIGNvbnN0cnVjdE1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhv
ZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImNvbnN0cnVjdCIp
LCAiJ2NvbnN0cnVjdCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNh
bGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGNvbnN0cnVjdE1ldGhvZCA9IGhhbmRsZXItPmdldE1l
dGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImNvbnN0cnVj
dCIpLCAiJ2NvbnN0cnVjdCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJl
IGNhbGxhYmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBwcm94eS0+dGFyZ2V0KCk7CiAgICAg
aWYgKGNvbnN0cnVjdE1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CkBAIC01NzgsNyArNTc4LDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHBlcmZvcm1Qcm94eUNvbnN0cnVjdCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZ2xvYmFs
T2JqZWN0LCBjb25zdHJ1Y3RNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlm
ICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVj
dCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVzdWx0IGZyb20gUHJveHkgaGFuZGxl
cidzICdjb25zdHJ1Y3QnIG1ldGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0Il9zdHIpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtNjE2LDcgKzYxNiw3IEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxK
U09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNW
YWx1ZSBkZWxldGVQcm9wZXJ0eU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmpl
Y3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImRlbGV0ZVByb3BlcnR5IiksICInZGVs
ZXRlUHJvcGVydHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxs
YWJsZSJfcyk7CisgICAgSlNWYWx1ZSBkZWxldGVQcm9wZXJ0eU1ldGhvZCA9IGhhbmRsZXItPmdl
dE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImRlbGV0
ZVByb3BlcnR5IiksICInZGVsZXRlUHJvcGVydHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5k
bGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwogICAg
IGlmIChkZWxldGVQcm9wZXJ0eU1ldGhvZC5pc1VuZGVmaW5lZCgpKQpAQCAtNjQwLDEzICs2NDAs
MTMgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSB8fCAhcmVzdWx0KTsKICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgIGlm
ICghZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHkn
IG1ldGhvZCBzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlz
IG5vdCBjb25maWd1cmFibGUiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1ldGhvZCBz
aG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vdCBjb25m
aWd1cmFibGUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgYm9vbCB0YXJnZXRJc0V4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShnbG9i
YWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgICAgIGlmICghdGFyZ2V0SXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidzICdkZWxldGVQcm9wZXJ0
eScgbWV0aG9kIHNob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgdGFyZ2V0IGhhcyBwcm9wZXJ0
eSBhbmQgaXMgbm90IGV4dGVuc2libGUiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1l
dGhvZCBzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCBoYXMgcHJvcGVydHkgYW5k
IGlzIG5vdCBleHRlbnNpYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNjk3LDcgKzY5Nyw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZv
cm1QcmV2ZW50RXh0ZW5zaW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAg
SlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTVmFsdWUgcHJldmVudEV4dGVuc2lvbnNNZXRob2Qg
PSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZp
ZXIodm0sICJwcmV2ZW50RXh0ZW5zaW9ucyIpLCAiJ3ByZXZlbnRFeHRlbnNpb25zJyBwcm9wZXJ0
eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFs
dWUgcHJldmVudEV4dGVuc2lvbnNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJwcmV2ZW50RXh0ZW5zaW9ucyIpLCAi
J3ByZXZlbnRFeHRlbnNpb25zJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQg
YmUgY2FsbGFibGUiX3N0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKICAgICBpZiAocHJldmVu
dEV4dGVuc2lvbnNNZXRob2QuaXNVbmRlZmluZWQoKSkKQEAgLTcxNiw3ICs3MTYsNyBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICAgICAgYm9vbCB0YXJnZXRJc0V4dGVuc2libGUgPSB0YXJnZXQtPmlz
RXh0ZW5zaWJsZShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICh0YXJnZXRJc0V4dGVuc2libGUpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdwcmV2ZW50
RXh0ZW5zaW9ucycgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0YXJnZXQgaXMg
ZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiX3MpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ3ByZXZlbnRF
eHRlbnNpb25zJyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91Z2ggaXRzIHRhcmdldCBpcyBl
eHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSJfc3RyKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTc0OCw3ICs3NDgsNyBAQCBi
b29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhh
bmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBpc0V4dGVu
c2libGVNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwg
bWFrZUlkZW50aWZpZXIodm0sICJpc0V4dGVuc2libGUiKSwgIidpc0V4dGVuc2libGUnIHByb3Bl
cnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNW
YWx1ZSBpc0V4dGVuc2libGVNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0
LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJpc0V4dGVuc2libGUiKSwgIidpc0V4dGVu
c2libGUnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJf
c3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBKU09i
amVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CkBAIC03NzAsMTEgKzc3MCwxMSBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgaWYgKHRyYXBSZXN1bHRBc0Jvb2wgIT0gaXNUYXJnZXRFeHRlbnNpYmxlKSB7
CiAgICAgICAgIGlmIChpc1RhcmdldEV4dGVuc2libGUpIHsKICAgICAgICAgICAgIEFTU0VSVCgh
dHJhcFJlc3VsdEFzQm9vbCk7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCBm
YWxzZSB3aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJu
ZWQgdHJ1ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCBmYWxzZSB3
aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgdHJ1
ZSJfc3RyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNUYXJnZXRF
eHRlbnNpYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCh0cmFwUmVzdWx0QXNCb29sKTsKLSAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBvYmplY3Qn
cyAnaXNFeHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiB0aGUgdGFyZ2V0IGlzIG5v
bi1leHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSJfcyk7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgb2JqZWN0J3Mg
J2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCB0cnVlIHdoZW4gdGhlIHRhcmdldCBpcyBub24t
ZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiX3N0cik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkBAIC04MTMsNyArODEzLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybURlZmluZU93blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnQKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZh
bHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGRlZmluZVByb3BlcnR5
TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnBy
b3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LCAiJ2RlZmluZVByb3BlcnR5JyBwcm9wZXJ0eSBv
ZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUg
ZGVmaW5lUHJvcGVydHlNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBj
YWxsRGF0YSwgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksICInZGVmaW5lUHJvcGVy
dHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3Ry
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBpZiAoZGVm
aW5lUHJvcGVydHlNZXRob2QuaXNVbmRlZmluZWQoKSkKQEAgLTg1MCwxMSArODUwLDExIEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAKICAgICBpZiAoIWlzVGFyZ2V0RGVzY3JpcHRvckRlZmlu
ZWQpIHsKICAgICAgICAgaWYgKCF0YXJnZXRJc0V4dGVuc2libGUpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0
eScgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRv
ciBvZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0
IGlzIG5vbi1leHRlbnNpYmxlIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0
cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBvZiB0aGUgUHJveHkncyB0
YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0IGlzIG5vbi1leHRlbnNpYmxl
Il9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlm
IChzZXR0aW5nQ29uZmlndXJhYmxlVG9GYWxzZSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIHJl
dHVybmVkIHRydWUgZm9yIGEgbm9uLWNvbmZpZ3VyYWJsZSBmaWVsZCBldmVuIHRob3VnaCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVkIHVuZGVm
aW5lZCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBub24t
Y29uZmlndXJhYmxlIGZpZWxkIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBv
ZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIl9zdHIpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTg2OCwxNiArODY4LDE2IEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0CiAgICAgYm9vbCBpc0NvbXBhdGlibGVEZXNjcmlwdG9yID0gdmFs
aWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWxPYmplY3QsIG51bGxwdHIsIHBy
b3BlcnR5TmFtZSwgdGFyZ2V0SXNFeHRlbnNpYmxlLCBkZXNjcmlwdG9yLCBpc0N1cnJlbnREZWZp
bmVkLCBjdXJyZW50LCB0aHJvd0V4Y2VwdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOyAgICAKICAgICBpZiAoIWlzQ29tcGF0aWJsZURlc2NyaXB0b3IpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ2RlZmlu
ZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5lIGEgcHJvcGVydHkgb24gaXRzIHRhcmdldCB0
aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdHJhcCdzIGlucHV0IGRlc2NyaXB0b3IiX3MpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkncyAnZGVm
aW5lUHJvcGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0
IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciJfc3Ry
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoc2V0dGluZ0NvbmZpZ3Vy
YWJsZVRvRmFsc2UgJiYgdGFyZ2V0RGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkncyAnZGVmaW5lUHJv
cGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IG9u
IGl0cyB0YXJnZXQgZXZlbiB0aG91Z2ggdGhlIGlucHV0IGRlc2NyaXB0b3IgdG8gdGhlIHRyYXAg
c2FpZCBpdCBtdXN0IGRvIHNvIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5l
IGEgbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IGV2ZW4gdGhvdWdoIHRo
ZSBpbnB1dCBkZXNjcmlwdG9yIHRvIHRoZSB0cmFwIHNhaWQgaXQgbXVzdCBkbyBzbyJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAodGFyZ2V0RGVzY3JpcHRvci5p
c0RhdGFEZXNjcmlwdG9yKCkgJiYgIXRhcmdldERlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYg
dGFyZ2V0RGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLndy
aXRhYmxlUHJlc2VudCgpICYmICFkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKLSAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9w
ZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZvciBhIG5vbi13cml0YWJsZSBpbnB1dCBkZXNjcmlw
dG9yIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vbi1jb25maWd1cmFibGUgYW5kIHdy
aXRhYmxlIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZvciBhIG5v
bi13cml0YWJsZSBpbnB1dCBkZXNjcmlwdG9yIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlz
IG5vbi1jb25maWd1cmFibGUgYW5kIHdyaXRhYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtOTA5LDcgKzkwOSw3IEBAIHZvaWQgUHJveHlP
YmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+
KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBvd25L
ZXlzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1h
a2VJZGVudGlmaWVyKHZtLCAib3duS2V5cyIpLCAiJ293bktleXMnIHByb3BlcnR5IG9mIGEgUHJv
eHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBvd25LZXlz
TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJ
ZGVudGlmaWVyKHZtLCAib3duS2V5cyIpLCAiJ293bktleXMnIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQo
KTsKICAgICBpZiAob3duS2V5c01ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CkBAIC05MjUsMTQgKzky
NSwxNCBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlOYW1lcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAKICAgICBpZiAoIXRyYXBSZXN1bHQuaXNPYmplY3QoKSkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidz
ICdvd25LZXlzJyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5
cycgbWV0aG9kIG11c3QgcmV0dXJuIGFuIG9iamVjdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIEhhc2hTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqPiB1bmNoZWNrZWRSZXN1bHRL
ZXlzOwogICAgIGZvckVhY2hJbkFycmF5TGlrZShnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHRyYXBS
ZXN1bHQpLCBbJl0gKEpTVmFsdWUgdmFsdWUpIC0+IGJvb2wgewogICAgICAgICBpZiAoIXZhbHVl
LmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1l
dGhvZCBtdXN0IHJldHVybiBhbiBhcnJheS1saWtlIG9iamVjdCBjb250YWluaW5nIG9ubHkgU3Ry
aW5ncyBhbmQgU3ltYm9scyJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidzICdvd25LZXlzJyBtZXRob2QgbXVzdCByZXR1
cm4gYW4gYXJyYXktbGlrZSBvYmplY3QgY29udGFpbmluZyBvbmx5IFN0cmluZ3MgYW5kIFN5bWJv
bHMiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtOTQw
LDcgKzk0MCw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgICAgICBpZiAoIXVuY2hlY2tlZFJlc3VsdEtl
eXMuYWRkKGlkZW50LmltcGwoKSkuaXNOZXdFbnRyeSkgewotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycgdHJh
cCByZXN1bHQgbXVzdCBub3QgY29udGFpbiBhbnkgZHVwbGljYXRlIG5hbWVzIl9zKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVy
J3MgJ293bktleXMnIHRyYXAgcmVzdWx0IG11c3Qgbm90IGNvbnRhaW4gYW55IGR1cGxpY2F0ZSBu
YW1lcyJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC05
ODMsNyArOTgzLDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFt
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGUKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICh1bmNoZWNrZWRSZXN1bHRLZXlzLnNpemUoKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycg
bWV0aG9kIHJldHVybmVkIGEga2V5IHRoYXQgd2FzIG5vdCBwcmVzZW50IGluIGl0cyBub24tZXh0
ZW5zaWJsZSB0YXJnZXQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycgbWV0aG9kIHJldHVybmVkIGEg
a2V5IHRoYXQgd2FzIG5vdCBwcmVzZW50IGluIGl0cyBub24tZXh0ZW5zaWJsZSB0YXJnZXQiX3N0
cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDQwLDcgKzEw
NDAsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdAogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIg
PSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgIEpTVmFsdWUgc2V0UHJvdG90eXBlT2ZNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2Qo
Z2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJzZXRQcm90b3R5cGVP
ZiIpLCAiJ3NldFByb3RvdHlwZU9mJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91
bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgc2V0UHJvdG90eXBlT2ZNZXRob2QgPSBo
YW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIo
dm0sICJzZXRQcm90b3R5cGVPZiIpLCAiJ3NldFByb3RvdHlwZU9mJyBwcm9wZXJ0eSBvZiBhIFBy
b3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3N0cik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRh
cmdldCgpOwpAQCAtMTA1OSw3ICsxMDU5LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNl
dFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3QKICAg
ICAKICAgICBpZiAoIXRyYXBSZXN1bHRBc0Jvb2wpIHsKICAgICAgICAgaWYgKHNob3VsZFRocm93
SWZDYW50U2V0KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlByb3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBpdCBj
b3VsZCBub3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4cGVj
dGVkIHRvIHN1Y2NlZWQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNh
dGluZyBpdCBjb3VsZCBub3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24g
d2FzIGV4cGVjdGVkIHRvIHN1Y2NlZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTEwNzMsNyArMTA3Myw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQ
cm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90CiAgICAg
Ym9vbCBpc1NhbWUgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIHRhcmdldFBy
b3RvdHlwZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlm
ICghaXNTYW1lKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJQcm94eSAnc2V0UHJvdG90eXBlT2YnIHRyYXAgcmV0dXJuZWQgdHJ1ZSB3aGVuIGl0cyB0YXJn
ZXQgaXMgbm9uLWV4dGVuc2libGUgYW5kIHRoZSBuZXcgcHJvdG90eXBlIHZhbHVlIGlzIG5vdCB0
aGUgc2FtZSBhcyB0aGUgY3VycmVudCBwcm90b3R5cGUgdmFsdWUuIEl0IHNob3VsZCBoYXZlIHJl
dHVybmVkIGZhbHNlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlByb3h5ICdzZXRQcm90b3R5cGVPZicgdHJhcCByZXR1cm5lZCB0cnVlIHdoZW4gaXRz
IHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSBhbmQgdGhlIG5ldyBwcm90b3R5cGUgdmFsdWUgaXMg
bm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHByb3RvdHlwZSB2YWx1ZS4gSXQgc2hvdWxkIGhh
dmUgcmV0dXJuZWQgZmFsc2UiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTExMDQsNyArMTEwNCw3IEBAIEpTVmFsdWUgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90
b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTT2JqZWN0KiBoYW5k
bGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBKU1ZhbHVlIGdldFByb3RvdHlwZU9mTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0
aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAiZ2V0UHJvdG90
eXBlT2YiKSwgIidnZXRQcm90b3R5cGVPZicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIg
c2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGdldFByb3RvdHlwZU9mTWV0aG9k
ID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlm
aWVyKHZtLCAiZ2V0UHJvdG90eXBlT2YiKSwgIidnZXRQcm90b3R5cGVPZicgcHJvcGVydHkgb2Yg
YSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zdHIpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+
dGFyZ2V0KCk7CkBAIC0xMTE4LDcgKzExMTgsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJm
b3JtR2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc09iamVj
dCgpICYmICF0cmFwUmVzdWx0LmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ2dldFByb3RvdHlwZU9mJyB0cmFw
IHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsIl9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZ2V0UHJv
dG90eXBlT2YnIHRyYXAgc2hvdWxkIGVpdGhlciByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwiX3N0
cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBK
U1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgYm9vbCBpc1NhbWUgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCB0
YXJnZXRQcm90b3R5cGUsIHRyYXBSZXN1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgaWYgKCFpc1NhbWUpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIGZvciBhIG5v
bi1leHRlbnNpYmxlIHRhcmdldCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0
YXJnZXQncyBwcm90b3R5cGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiUHJveHkncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgZm9yIGEgbm9uLWV4dGVu
c2libGUgdGFyZ2V0IHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHRhcmdldCdz
IHByb3RvdHlwZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggMDg3Mzdk
YWE3NTYyMzdmNmNhMmUwOWRjOGMxYWQ3NWQxZGI4YzUxNi4uYmE4MDM1MjI3OTcyMmM0NzgyOWQ5
Y2FlMDZmNjcyODVlYjVkZWUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAKQEAgLTkyLDIzICs5MiwyMyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04ocmVmbGVjdE9iamVjdENvbnN0cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAg
ICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3Qg
cmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiX3MpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEg
Y29uc3RydWN0b3IiX3N0cikpOwogCiAgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3Ry
dWN0RGF0YSh2bSwgdGFyZ2V0KTsKICAgICBpZiAoY29uc3RydWN0RGF0YS50eXBlID09IENhbGxE
YXRhOjpUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0
aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZs
ZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3Rv
ciJfc3RyKSk7CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IHRhcmdldDsKICAgICBpZiAoY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAgICBuZXdUYXJnZXQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDIpOwogICAgICAgICBpZiAoIW5ld1RhcmdldC5pc0NvbnN0cnVjdG9y
KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSB0aGly
ZCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIGlmIHByZXNlbnQiX3MpKTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSB0aGlyZCBhcmd1bWVudCBiZSBhIGNv
bnN0cnVjdG9yIGlmIHByZXNlbnQiX3N0cikpOwogICAgIH0KIAogICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3VtZW50czsKICAgICBKU09iamVjdCogYXJndW1lbnRzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBpZiAo
IWFyZ3VtZW50c09iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMg
dGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVj
dC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3N0
cikpOwogCiAgICAgZm9yRWFjaEluQXJyYXlMaWtlKGdsb2JhbE9iamVjdCwgYXJndW1lbnRzT2Jq
ZWN0LCBbJl0gKEpTVmFsdWUgdmFsdWUpIC0+IGJvb2wgewogICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKHZhbHVlKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
cmVmbGVjdE9iamVjdERlZmluZVByb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagog
CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICgh
dGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3QuZGVmaW5lUHJvcGVydHkgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZWZsZWN0LmRlZmluZVByb3BlcnR5IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBv
YmplY3QiX3N0cikpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04ocmVmbGVjdE9iamVjdEdldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcgogCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3Qu
Z2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUmVmbGVjdC5nZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVj
dCJfc3RyKSk7CiAKICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTc4LDcgKzE3OCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zdHIp
KTsKIAogICAgIGF1dG8ga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkBAIC0xOTQsNyArMTk0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJl
ZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRh
cmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVp
cmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVm
bGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2Jq
ZWN0Il9zdHIpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShhc09iamVjdCh0YXJnZXQpLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpKTsKIH0K
IApAQCAtMjA2LDcgKzIwNiw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2Jq
ZWN0SXNFeHRlbnNpYmxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKICAgICBKU1Zh
bHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5pc0V4dGVuc2libGUgcmVxdWlyZXMgdGhlIGZp
cnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmlzRXh0
ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zdHIpKTsK
IAogICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxl
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkBAIC0yMjEsNyArMjIxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJl
ZmxlY3RPYmplY3RPd25LZXlzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKIAog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRh
cmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0Lm93
bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfc3RyKSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlL
ZXlzKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1l
TW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUs
IHN0ZDo6bnVsbG9wdCkpKTsKIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihyZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5wcmV2ZW50
RXh0ZW5zaW9ucyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0
IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfc3RyKSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KHRhcmdldCk7CiAgICAgYm9vbCByZXN1bHQgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+cHJldmVudEV4dGVuc2lvbnMob2JqZWN0LCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjQ4LDcgKzI0OCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2JqZWN0U2V0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVmbGVjdC5zZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUg
YW4gb2JqZWN0Il9zdHIpKTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0gYXNPYmplY3Qo
dGFyZ2V0KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNzIsMTAgKzI3MiwxMCBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04ocmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxl
Y3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVj
dCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3N0cikpOwogICAgIEpTVmFsdWUgcHJvdG8gPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJv
dG8uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMg
dGhlIHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIG51bGwiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3Vt
ZW50IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgbnVsbCJfc3RyKSk7CiAKICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5jcHAKaW5kZXggNDQ5MDlkMTY5NGJjNTVjNzViMjc3Y2M1MTYwMDAwMjg0YjRhZDMy
Zi4uYzk0MTAxNzY1MzIwNDRlZmVlMTk4ZDZlOTljNzA3N2M3NmY4YWY1YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC01MTQsNyArNTE0LDcgQEAgc3RhdGlj
IGlubGluZSBTdHJpbmcgZXNjYXBlUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGNvbnN0
IENoYXJhY3RlclR5cGUqIGMKICAgICAvLyBzb3VyY2UgY2Fubm90IGV2ZXIgdmFsaWRseSBiZSAi
Ii4gSWYgdGhlIHNvdXJjZSBpcyBlbXB0eSwgcmV0dXJuIGEgZGlmZmVyZW50IFBhdHRlcm4KICAg
ICAvLyB0aGF0IHdvdWxkIG1hdGNoIHRoZSBzYW1lIHRoaW5nLgogICAgIGlmICghbGVuZ3RoKQot
ICAgICAgICByZXR1cm4gIig/OikiX3M7CisgICAgICAgIHJldHVybiAiKD86KSJfc3RyOwogCiAg
ICAgLy8gZWFybHkgcmV0dXJuIGZvciBzdHJpbmdzIHRoYXQgZG9uJ3QgY29udGFpbiBhIGZvcndh
cmRzIHNsYXNoIGFuZCBMaW5lVGVybWluYXRvcgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IGZkNGM5MmIzNDExYzU5ZGViYWE2ZmI4MGJmOTAy
YzE5M2Y4Yzg4Y2EuLmVhNWE2MWU3MjBhMmJkZjA3NGMxMTBiNDk0ODQ1ZWFiNDU0MmVjN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSAhPSBnbG9iYWxP
YmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAuJE4gZ2V0dGVycyByZXF1aXJlIFJlZ0V4
cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLiROIGdldHRlcnMgcmVxdWlyZSBSZWdF
eHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9zdHIpOwogICAgIHVuc2lnbmVkIE4gPSBwcm9wZXJ0
eU5hbWUudWlkKCktPmF0KDEpIC0gJzAnOwogICAgIEFTU0VSVChOID49IDEgJiYgTiA8PSA5KTsK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmpl
Y3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRCYWNrcmVmKGdsb2JhbE9iamVjdCwgTikpKTsKQEAg
LTEwOCw3ICsxMDgsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIocmVnRXhwQ29uc3RydWN0
b3JJbnB1dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBpZiAoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkgIT0gZ2xvYmFsT2JqZWN0LT5y
ZWdFeHBDb25zdHJ1Y3RvcigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLmlucHV0IGdldHRlciByZXF1aXJlcyBSZWdFeHAgY29u
c3RydWN0b3IgYXMgfHRoaXN8Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5pbnB1dCBnZXR0ZXIgcmVxdWlyZXMgUmVnRXhw
IGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfc3RyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmlucHV0KCkpOwogfQogCkBAIC0xMTcs
NyArMTE3LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHJlZ0V4cENvbnN0cnVjdG9yTXVs
dGlsaW5lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSAhPSBnbG9iYWxPYmplY3QtPnJlZ0V4
cENvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJSZWdFeHAubXVsdGlsaW5lIGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25z
dHJ1Y3RvciBhcyB8dGhpc3wiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLm11bHRpbGluZSBnZXR0ZXIgcmVxdWlyZSBSZWdF
eHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9zdHIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLm11bHRpbGluZSgp
KSk7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIocmVn
RXhwQ29uc3RydWN0b3JMYXN0TWF0Y2gsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpICE9IGds
b2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5sYXN0TWF0Y2ggZ2V0dGVyIHJl
cXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAubGFzdE1hdGNoIGdl
dHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3N0cik7CiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdF
eHBHbG9iYWxEYXRhKCkuZ2V0QmFja3JlZihnbG9iYWxPYmplY3QsIDApKSk7CiB9CiAKQEAgLTEz
NSw3ICsxMzUsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIocmVnRXhwQ29uc3RydWN0b3JM
YXN0UGFyZW4sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgaWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpICE9IGdsb2JhbE9iamVjdC0+cmVn
RXhwQ29uc3RydWN0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5sYXN0UGFyZW4gZ2V0dGVyIHJlcXVpcmUgUmVnRXhwIGNv
bnN0cnVjdG9yIGFzIHx0aGlzfCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAubGFzdFBhcmVuIGdldHRlciByZXF1aXJlIFJl
Z0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3N0cik7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCku
Z2V0TGFzdFBhcmVuKGdsb2JhbE9iamVjdCkpKTsKIH0KIApAQCAtMTQ0LDcgKzE0NCw3IEBAIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkgIT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25zdHJ1Y3Rvcigp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVnRXhwLmxlZnRDb250ZXh0IGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8
dGhpc3wiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVnRXhwLmxlZnRDb250ZXh0IGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1
Y3RvciBhcyB8dGhpc3wiX3N0cik7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0TGVmdENvbnRl
eHQoZ2xvYmFsT2JqZWN0KSkpOwogfQogCkBAIC0xNTMsNyArMTUzLDcgQEAgSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKHJlZ0V4cENvbnN0cnVjdG9yUmlnaHRDb250ZXh0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSAhPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAucmln
aHRDb250ZXh0IGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVnRXhwLnJpZ2h0Q29udGV4dCBnZXR0ZXIgcmVxdWlyZSBSZWdFeHAgY29uc3RydWN0b3IgYXMg
fHRoaXN8Il9zdHIpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmdldFJpZ2h0Q29udGV4dChnbG9i
YWxPYmplY3QpKSk7CiB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpICE9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLmlucHV0IHNldHRlcnMgcmVx
dWlyZSBSZWdFeHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5pbnB1dCBzZXR0ZXJzIHJlcXVpcmUg
UmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfc3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICBhdXRvKiBzdHJpbmcgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSAhPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5tdWx0aWxpbmUgc2V0dGVy
cyByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLm11bHRpbGluZSBzZXR0ZXJz
IHJlcXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfc3RyKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICBib29sIG11bHRpbGluZSA9IEpTVmFsdWU6OmRlY29kZSh2
YWx1ZSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5l
IE9wdGlvblNldDxZYXJyOjpGbGFncz4gdG9GbGFncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGZsYWcKICAgICBhdXRvIHJlc3VsdCA9IFlhcnI6OnBhcnNlRmxhZ3MoZmxh
Z3MudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICB0aHJvd1N5bnRheEVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBj
b25zdHJ1Y3Rvci4iX3MpOworICAgICAgICB0aHJvd1N5bnRheEVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iX3N0
cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCA1ODI0YTQyYzNiNmExNTcz
ZjAwMTY1NWE2OTJkNjc5ZmRmYTAwOWY0Li5kMDE0MGNkMWRjMDA2ODVlZjFjNDFlOWE5YmNkNjQz
NTllZDVjMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5jcHAKQEAgLTEzMywxMCArMTMzLDEwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihyZWdFeHBQcm90b0Z1bmNDb21waWxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7
CiAKICAgICBpZiAodGhpc1JlZ0V4cC0+Z2xvYmFsT2JqZWN0KHZtKSAhPSBnbG9iYWxPYmplY3Qp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZWdFeHAucHJvdG90eXBlLmNvbXBpbGUgZnVuY3Rpb24ncyBSZWFsbSBtdXN0IGJlIHRoZSBzYW1l
IHRvIHx0aGlzfCBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5wcm90b3R5cGUuY29tcGlsZSBmdW5j
dGlvbidzIFJlYWxtIG11c3QgYmUgdGhlIHNhbWUgdG8gfHRoaXN8IFJlZ0V4cCBvYmplY3QiX3N0
cik7CiAKICAgICBpZiAoIXRoaXNSZWdFeHAtPmFyZUxlZ2FjeUZlYXR1cmVzRW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAifHRo
aXN8IFJlZ0V4cCBvYmplY3QncyBsZWdhY3kgZmVhdHVyZXMgYXJlIG5vdCBlbmFibGVkIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInx0
aGlzfCBSZWdFeHAgb2JqZWN0J3MgbGVnYWN5IGZlYXR1cmVzIGFyZSBub3QgZW5hYmxlZCJfc3Ry
KTsKIAogICAgIFJlZ0V4cCogcmVnRXhwOwogICAgIEpTVmFsdWUgYXJnMCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIAogICAgIGlmIChhdXRvKiByZWdFeHBPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9i
amVjdCo+KHZtLCBhcmcwKSkgewogICAgICAgICBpZiAoIWFyZzEuaXNVbmRlZmluZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJD
YW5ub3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90
aGVyLiJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVn
RXhwIGZyb20gYW5vdGhlci4iX3N0cik7CiAgICAgICAgIHJlZ0V4cCA9IHJlZ0V4cE9iamVjdC0+
cmVnRXhwKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlz
VW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1dURlN0cmluZyhnbG9iYWxPYmpl
Y3QpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQ
cm90b0Z1bmNDb21waWxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAg
YXV0byBmbGFncyA9IGFyZzEuaXNVbmRlZmluZWQoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChPcHRp
b25TZXQ8WWFycjo6RmxhZ3M+IHsgfSkgOiBZYXJyOjpwYXJzZUZsYWdzKGFyZzEudG9XVEZTdHJp
bmcoZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIWZsYWdzKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9i
YWxPYmplY3QsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4i
X3MpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBmbGFncyBzdXBwbGll
ZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIl9zdHIpKTsKIAogICAgICAgICByZWdFeHAgPSBSZWdF
eHA6OmNyZWF0ZSh2bSwgcGF0dGVybiwgZmxhZ3MudmFsdWUoKSk7CiAgICAgfQpAQCAtMjI5LDcg
KzIyOSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlckdsb2Jh
bCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgaWYgKFVOTElLRUxZKCFyZWdl
eHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUgPT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBQcm90
b3R5cGUoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUaGUgUmVnRXhwLnByb3RvdHlwZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBv
biBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zdHIpOwogICAgIH0KIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPmdsb2Jh
bCgpKSk7CkBAIC0yNDUsNyArMjQ1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4
cFByb3RvR2V0dGVySGFzSW5kaWNlcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBp
ZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZSA9PSBnbG9iYWxP
YmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmhhc0luZGljZXMgZ2V0dGVy
IGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90
b3R5cGUuaGFzSW5kaWNlcyBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCJfc3RyKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihyZWdleHAtPnJlZ0V4cCgpLT5oYXNJbmRpY2VzKCkpKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgewogICAg
ICAgICBpZiAodGhpc1ZhbHVlID09IGdsb2JhbE9iamVjdC0+cmVnRXhwUHJvdG90eXBlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4
cC5wcm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVn
RXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBjYW4g
b25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zdHIpOwogICAgIH0KIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPmlnbm9yZUNh
c2UoKSkpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdF
eHBQcm90b0dldHRlck11bHRpbGluZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAg
aWYgKFVOTElLRUxZKCFyZWdleHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUgPT0gZ2xvYmFs
T2JqZWN0LT5yZWdFeHBQcm90b3R5cGUoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVy
IGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90
b3R5cGUubXVsdGlsaW5lIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2Jq
ZWN0Il9zdHIpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHJlZ2V4cC0+cmVnRXhwKCktPm11bHRpbGluZSgpKSk7CkBAIC0yOTMsNyArMjkzLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyRG90QWxsLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAg
ICAgaWYgKHRoaXNWYWx1ZSA9PSBnbG9iYWxPYmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAu
cHJvdG90eXBlLmRvdEFsbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5kb3RBbGwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNh
bGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3N0cik7CiAgICAgfQogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPmRvdEFsbCgpKSk7CkBA
IC0zMDksNyArMzA5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0
dGVyU3RpY2t5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBpZiAoVU5MSUtF
TFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZSA9PSBnbG9iYWxPYmplY3QtPnJl
Z0V4cFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnN0aWNreSBnZXR0ZXIgY2FuIG9ubHkgYmUg
Y2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3N0cik7CiAgICAg
fQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVn
RXhwKCktPnN0aWNreSgpKSk7CkBAIC0zMjUsNyArMzI1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1
ZSA9PSBnbG9iYWxPYmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnVuaWNv
ZGUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJl
Z0V4cC5wcm90b3R5cGUudW5pY29kZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVn
RXhwIG9iamVjdCJfc3RyKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+dW5pY29kZSgpKSk7CkBAIC0zMzgsNyArMzM4
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlzT2Jq
ZWN0KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxl
ZCBvbiBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBv
bmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QiX3N0cik7CiAKICAgICBhdXRvIGZsYWdzID0gZmxh
Z3NTdHJpbmcoZ2xvYmFsT2JqZWN0LCBhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTM1NSw4ICszNTUsOCBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nh
c3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdl
eHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUgPT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBQcm90
b3R5cGUoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFs
U3RyaW5nKHZtLCAiKD86KSJfcykpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiKD86KSJfc3RyKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
aGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBh
IFJlZ0V4cCBvYmplY3QiX3N0cik7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1N0cmluZyh2bSwgcmVnZXhwLT5yZWdFeHAoKS0+ZXNjYXBlZFBhdHRlcm4oKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZVR5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZVR5cGUuY3BwCmluZGV4IDM3MTk0
NzNiNDNiYTdlNDZjZjhiMDFhMjBjZGI4Zjk3MTFkMjI0MmMuLjhiYTYyZTVkNjRkNzg3MjdkZTM4
OWE1OWQ4ODlhYTVjMzY0Y2ZkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1J1bnRpbWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SdW50aW1lVHlwZS5jcHAKQEAgLTY0LDI3ICs2NCwyNyBAQCBSdW50aW1lVHlwZSBydW50aW1l
VHlwZUZvclZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIFN0cmluZyBydW50aW1lVHlwZUFz
U3RyaW5nKFJ1bnRpbWVUeXBlIHR5cGUpCiB7CiAgICAgaWYgKHR5cGUgPT0gVHlwZVVuZGVmaW5l
ZCkKLSAgICAgICAgcmV0dXJuICJVbmRlZmluZWQiX3M7CisgICAgICAgIHJldHVybiAiVW5kZWZp
bmVkIl9zdHI7CiAgICAgaWYgKHR5cGUgPT0gVHlwZU51bGwpCi0gICAgICAgIHJldHVybiAiTnVs
bCJfczsKKyAgICAgICAgcmV0dXJuICJOdWxsIl9zdHI7CiAgICAgaWYgKHR5cGUgPT0gVHlwZUFu
eUludCkKLSAgICAgICAgcmV0dXJuICJJbnRlZ2VyIl9zOworICAgICAgICByZXR1cm4gIkludGVn
ZXIiX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlTnVtYmVyKQotICAgICAgICByZXR1cm4gIk51
bWJlciJfczsKKyAgICAgICAgcmV0dXJuICJOdW1iZXIiX3N0cjsKICAgICBpZiAodHlwZSA9PSBU
eXBlU3RyaW5nKQotICAgICAgICByZXR1cm4gIlN0cmluZyJfczsKKyAgICAgICAgcmV0dXJuICJT
dHJpbmciX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlT2JqZWN0KQotICAgICAgICByZXR1cm4g
Ik9iamVjdCJfczsKKyAgICAgICAgcmV0dXJuICJPYmplY3QiX3N0cjsKICAgICBpZiAodHlwZSA9
PSBUeXBlQm9vbGVhbikKLSAgICAgICAgcmV0dXJuICJCb29sZWFuIl9zOworICAgICAgICByZXR1
cm4gIkJvb2xlYW4iX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlRnVuY3Rpb24pCi0gICAgICAg
IHJldHVybiAiRnVuY3Rpb24iX3M7CisgICAgICAgIHJldHVybiAiRnVuY3Rpb24iX3N0cjsKICAg
ICBpZiAodHlwZSA9PSBUeXBlU3ltYm9sKQotICAgICAgICByZXR1cm4gIlN5bWJvbCJfczsKKyAg
ICAgICAgcmV0dXJuICJTeW1ib2wiX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlQmlnSW50KQot
ICAgICAgICByZXR1cm4gIkJpZ0ludCJfczsKKyAgICAgICAgcmV0dXJuICJCaWdJbnQiX3N0cjsK
ICAgICBpZiAodHlwZSA9PSBUeXBlTm90aGluZykKLSAgICAgICAgcmV0dXJuICIoTm90aGluZyki
X3M7CisgICAgICAgIHJldHVybiAiKE5vdGhpbmcpIl9zdHI7CiAKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAppbmRleCBkOTMx
MWMyZmM2MjU0NzJmZTZmNmUyNmVkODIyMzhlN2Q0ZDFmODYwLi5iNTNiZjI2MTM3MDIyMWQ1Mzk4
YTU1ZmUyY2RhYTg2NTFiYmEyNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtODIwLDIzICs4MjAsMjMgQEAgU3RyaW5n
IFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6OmRpc3BsYXlOYW1lKFZNJiB2bSkKICAgICAg
ICAgICAgIFdURjo6ZGF0YUxvZygiY291bGRuJ3QgZ2V0IGEgbmFtZSIpOwogICAgICAgICB9CiAj
ZW5kaWYKLSAgICAgICAgcmV0dXJuICIodW5rbm93biBDIFBDKSJfczsKKyAgICAgICAgcmV0dXJu
ICIodW5rbm93biBDIFBDKSJfc3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6OlVua25vd246Ci0g
ICAgICAgIHJldHVybiAiKHVua25vd24pIl9zOworICAgICAgICByZXR1cm4gIih1bmtub3duKSJf
c3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6Okhvc3Q6Ci0gICAgICAgIHJldHVybiAiKGhvc3Qp
Il9zOworICAgICAgICByZXR1cm4gIihob3N0KSJfc3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6
OlJlZ0V4cDoKLSAgICAgICAgcmV0dXJuICIocmVnZXhwKSJfczsKKyAgICAgICAgcmV0dXJuICIo
cmVnZXhwKSJfc3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6Oldhc206CiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICBpZiAod2FzbUluZGV4T3JOYW1lKQogICAgICAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcod2FzbUluZGV4T3JOYW1lLnZhbHVlKCkpOwogI2VuZGlmCi0gICAgICAg
IHJldHVybiAiKHdhc20pIl9zOworICAgICAgICByZXR1cm4gIih3YXNtKSJfc3RyOwogCiAgICAg
Y2FzZSBGcmFtZVR5cGU6OkV4ZWN1dGFibGU6CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0hv
c3RGdW5jdGlvbigpKQpAQCAtODQ1LDkgKzg0NSw5IEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVy
OjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZShWTSYgdm0pCiAgICAgICAgIGlmIChleGVjdXRhYmxl
LT5pc0Z1bmN0aW9uRXhlY3V0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5lY21hTmFtZSgpLnN0cmluZygpOwog
ICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNQcm9ncmFtRXhlY3V0YWJsZSgpIHx8IGV4ZWN1dGFi
bGUtPmlzRXZhbEV4ZWN1dGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiAiKHByb2dyYW0pIl9z
OworICAgICAgICAgICAgcmV0dXJuICIocHJvZ3JhbSkiX3N0cjsKICAgICAgICAgaWYgKGV4ZWN1
dGFibGUtPmlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiAi
KG1vZHVsZSkiX3M7CisgICAgICAgICAgICByZXR1cm4gIihtb2R1bGUpIl9zdHI7CiAKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwpAQCAtMTE1OCwxNyArMTE1OCwxNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRv
cEJ5dGVjb2RlcyhQcmludFN0cmVhbSYgb3V0KQogICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+
IGJ5dGVjb2RlQ291bnRzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IHRpZXJDb3VudHM7
CiAKLSAgICBTdHJpbmcgbGxpbnQgPSAiTExJbnQiX3M7Ci0gICAgU3RyaW5nIGJhc2VsaW5lID0g
IkJhc2VsaW5lIl9zOwotICAgIFN0cmluZyBkZmcgPSAiREZHIl9zOwotICAgIFN0cmluZyBmdGwg
PSAiRlRMIl9zOwotICAgIFN0cmluZyBidWlsdGluID0gImpzIGJ1aWx0aW4iX3M7Ci0gICAgU3Ry
aW5nIHdhc20gPSAiV2FzbSJfczsKLSAgICBTdHJpbmcgaG9zdCA9ICJIb3N0Il9zOwotICAgIFN0
cmluZyByZWdleHAgPSAiUmVnRXhwIl9zOwotICAgIFN0cmluZyBjcHAgPSAiQy9DKysiX3M7Ci0g
ICAgU3RyaW5nIHVua25vd25GcmFtZSA9ICJVbmtub3duIEZyYW1lIl9zOwotICAgIFN0cmluZyB1
bmtub3duRXhlY3V0YWJsZSA9ICJVbmtub3duIEV4ZWN1dGFibGUiX3M7CisgICAgU3RyaW5nIGxs
aW50ID0gIkxMSW50Il9zdHI7CisgICAgU3RyaW5nIGJhc2VsaW5lID0gIkJhc2VsaW5lIl9zdHI7
CisgICAgU3RyaW5nIGRmZyA9ICJERkciX3N0cjsKKyAgICBTdHJpbmcgZnRsID0gIkZUTCJfc3Ry
OworICAgIFN0cmluZyBidWlsdGluID0gImpzIGJ1aWx0aW4iX3N0cjsKKyAgICBTdHJpbmcgd2Fz
bSA9ICJXYXNtIl9zdHI7CisgICAgU3RyaW5nIGhvc3QgPSAiSG9zdCJfc3RyOworICAgIFN0cmlu
ZyByZWdleHAgPSAiUmVnRXhwIl9zdHI7CisgICAgU3RyaW5nIGNwcCA9ICJDL0MrKyJfc3RyOwor
ICAgIFN0cmluZyB1bmtub3duRnJhbWUgPSAiVW5rbm93biBGcmFtZSJfc3RyOworICAgIFN0cmlu
ZyB1bmtub3duRXhlY3V0YWJsZSA9ICJVbmtub3duIEV4ZWN1dGFibGUiX3N0cjsKIAogICAgIGF1
dG8gZm9yRWFjaFRpZXIgPSBbJl0gKGF1dG8gZnVuYykgewogICAgICAgICBmdW5jKGxsaW50KTsK
QEAgLTEyMDgsMTcgKzEyMDgsMTcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BC
eXRlY29kZXMoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5oYXNC
eXRlY29kZUluZGV4KCkpCiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVJbmRleCA9IHRvU3RyaW5n
KGxvY2F0aW9uLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGJ5dGVjb2RlSW5kZXggPSAiPG5pbD4iX3M7CisgICAgICAgICAgICAgICAgYnl0ZWNvZGVJ
bmRleCA9ICI8bmlsPiJfc3RyOwogCiAgICAgICAgICAgICBpZiAobG9jYXRpb24uaGFzQ29kZUJs
b2NrSGFzaCgpKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gc3RyZWFtOwog
ICAgICAgICAgICAgICAgIGxvY2F0aW9uLmNvZGVCbG9ja0hhc2guZHVtcChzdHJlYW0pOwogICAg
ICAgICAgICAgICAgIGNvZGVCbG9ja0hhc2ggPSBzdHJlYW0udG9TdHJpbmcoKTsKICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNvZGVCbG9ja0hhc2ggPSAiPG5pbD4iX3M7Cisg
ICAgICAgICAgICAgICAgY29kZUJsb2NrSGFzaCA9ICI8bmlsPiJfc3RyOwogCiAgICAgICAgICAg
ICBpZiAobG9jYXRpb24uaXNSZWdFeHApCi0gICAgICAgICAgICAgICAgaml0VHlwZSA9ICJSZWdF
eHAiX3M7CisgICAgICAgICAgICAgICAgaml0VHlwZSA9ICJSZWdFeHAiX3N0cjsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBqaXRUeXBlID0gSklUQ29kZTo6dHlwZU5hbWUobG9j
YXRpb24uaml0VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggNDIxZDcwMGU0NmFmYjgwOGU3ZDVhNTcwZGNhZjVm
NWM3YmE5YjQxZi4uMGNiZDlmMzFjNDUxNjhkMWViYjY5ODNjZGQwMzBmMTUyNDJmZDVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5j
cHAKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JF
eGVjdXRpb25JbXBsKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIEpTUwogCiAgICAgaWYg
KFVOTElLRUxZKHZtLmdldEFuZENsZWFyRmFpbE5leHROZXdDb2RlQmxvY2soKSkpIHsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0p
OwotICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkZvcmNlZCBGYWlsdXJlIl9zKSk7CisgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRm9yY2VkIEZhaWx1cmUiX3N0cikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggZDU0NDMzYmZlZTRmZGRkYTVmNDcwNjc3YWY0NTdmOWJmNGY3NGU0NS4uMDhjNGVlODcyODQ0
OTE0ZmZkNWRiNWI4OTQzMGJkYjFiZGVmZmM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtODcsNyArODcsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0U2V0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKgogCiAgICAgICAgIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSA9IGdldENh
bGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uKTsKICAgICAgICAgaWYgKFVOTElLRUxZKGFkZGVyRnVu
Y3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICInYWRkJyBwcm9w
ZXJ0eSBvZiBhIFNldCBzaG91bGQgYmUgY2FsbGFibGUuIl9zKTsKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICInYWRkJyBwcm9wZXJ0eSBv
ZiBhIFNldCBzaG91bGQgYmUgY2FsbGFibGUuIl9zdHIpOwogICAgIH0KIAogICAgIHNjb3BlLnJl
bGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwCmluZGV4IGE2ZWZjMmZiYjMxNDQ2ZTgyYTQ2MzQyMTJmMjdiNmQwZDRkNTkyY2UuLmZmMjA1
YTJjNzhjZDk3MTVhYmFiMDMyM2YzNTU3NmM0MWMxNjdmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtODksNyArODksNyBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdGhpc1ZhbAogICAgIGF1dG8qIHNldCA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQq
Pih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKTsKICAgICBpZiAoTElLRUxZKHNldCkpCiAgICAgICAg
IHJldHVybiBzZXQ7Ci0gICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNl
dCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0Il9zKTsKKyAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLVNl
dCBvYmplY3QiX3N0cik7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcAppbmRl
eCA4ZTg4NjY2Mzk4M2FmM2E1N2M2MzExZTdhMDg4ZmM2NWU3ZGEzYTUyLi4xY2JiYTlmY2NhNWRi
Mzk1MjQyM2Q0N2Q0NGYyOWZiMzI0ZDczN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGV2YWxJblJlYWxtLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKgogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsIHN5bnRheEVycm9yTWVzc2Fn
ZSkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXJyb3IgZW5jb3VudGVy
ZWQgZHVyaW5nIGV2YWx1YXRpb24iX3MpKTsKKyAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXJyb3IgZW5j
b3VudGVyZWQgZHVyaW5nIGV2YWx1YXRpb24iX3N0cikpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwpAQCAtMTE5LDcgKzExOSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihldmFsSW5SZWFsbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSoK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIHJlYWxt
R2xvYmFsT2JqZWN0LCByZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCByZWFsbUdsb2Jh
bE9iamVjdC0+Z2xvYmFsU2NvcGUoKSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkgewogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfc3Ry
KSk7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUu
Y3BwCmluZGV4IDZiOGYzZGY2MzM1MDQ1ZDVhYzIxZWY1YTA4MmQ0ODY4MDRmYTNlNmIuLmM5NGEx
Yjk0Nzk4ZDJkMWRlN2U0OGMxYWI2MjcyY2ZmZjM4YmI5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCkBAIC02MSwxMCArNjEsMTAgQEAgU291cmNl
SUQgU3RhY2tGcmFtZTo6c291cmNlSUQoKSBjb25zdAogU3RyaW5nIFN0YWNrRnJhbWU6OnNvdXJj
ZVVSTCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNXYXNtRnJhbWUpCi0gICAgICAgIHJldHVybiAi
W3dhc20gY29kZV0iX3M7CisgICAgICAgIHJldHVybiAiW3dhc20gY29kZV0iX3N0cjsKIAogICAg
IGlmICghbV9jb2RlQmxvY2spIHsKLSAgICAgICAgcmV0dXJuICJbbmF0aXZlIGNvZGVdIl9zOwor
ICAgICAgICByZXR1cm4gIltuYXRpdmUgY29kZV0iX3N0cjsKICAgICB9CiAKICAgICBTdHJpbmcg
c291cmNlVVJMID0gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsK
QEAgLTgxLDEzICs4MSwxMyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2
bSkgY29uc3QKICAgICBpZiAobV9jb2RlQmxvY2spIHsKICAgICAgICAgc3dpdGNoIChtX2NvZGVC
bG9jay0+Y29kZVR5cGUoKSkgewogICAgICAgICBjYXNlIEV2YWxDb2RlOgotICAgICAgICAgICAg
cmV0dXJuICJldmFsIGNvZGUiX3M7CisgICAgICAgICAgICByZXR1cm4gImV2YWwgY29kZSJfc3Ry
OwogICAgICAgICBjYXNlIE1vZHVsZUNvZGU6Ci0gICAgICAgICAgICByZXR1cm4gIm1vZHVsZSBj
b2RlIl9zOworICAgICAgICAgICAgcmV0dXJuICJtb2R1bGUgY29kZSJfc3RyOwogICAgICAgICBj
YXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdsb2Jh
bENvZGU6Ci0gICAgICAgICAgICByZXR1cm4gImdsb2JhbCBjb2RlIl9zOworICAgICAgICAgICAg
cmV0dXJuICJnbG9iYWwgY29kZSJfc3RyOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRleCA5MmRjOTQ2OWQyYTg0
YzU0OTIyMGUyMWY1ZjE2Zjc3YTAwNTVmZDg1Li40ZDdhMWI5YjNiZTg5MWQzNjYzYzA4ZDQ4ZGNj
ZGFkOTRiOTJkY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHN0cmluZ0Zyb21Db2RlUG9pbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWwKICAgICAgICAgdWludDMyX3QgY29kZVBvaW50ID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGNvZGVQb2ludEFzRG91YmxlKTsKIAogICAgICAgICBpZiAoY29kZVBvaW50ICE9IGNvZGVQ
b2ludEFzRG91YmxlIHx8IGNvZGVQb2ludCA+IFVDSEFSX01BWF9WQUxVRSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsICJBcmd1bWVudHMgY29udGFpbiBhIHZhbHVlIHRoYXQgaXMgb3V0IG9m
IHJhbmdlIG9mIGNvZGUgcG9pbnRzIl9zKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
QXJndW1lbnRzIGNvbnRhaW4gYSB2YWx1ZSB0aGF0IGlzIG91dCBvZiByYW5nZSBvZiBjb2RlIHBv
aW50cyJfc3RyKSk7CiAKICAgICAgICAgaWYgKFVfSVNfQk1QKGNvZGVQb2ludCkpCiAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRl
eCBmM2IzODNkY2JhNDI1M2E0YWM5MjU1ODRkMTliYzgwNzZiOTRhNTRhLi43ODQyZjlhMDIwMmM1
NzdlMmEzNGI5YjAzZWM2NjI5ZWIyYjg3NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTE1NCwxNCArMTU0LDE0IEBAIHZv
aWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgaWYgKE9wdGlvbnM6OnVzZUF0TWV0aG9kKCkpCiAgICAgICAg
IEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5hdFB1YmxpY05hbWUoKSwgc3RyaW5nUHJvdG90eXBlQXRDb2RlR2Vu
ZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAKLSAgICBKU0Z1bmN0aW9uKiB0cmltU3RhcnRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAidHJpbVN0YXJ0Il9zLCBzdHJpbmdQcm90b0Z1bmNU
cmltU3RhcnQsIE5vSW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiB0cmltRW5kRnVuY3Rpb24g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgInRyaW1FbmQiX3MsIHN0
cmluZ1Byb3RvRnVuY1RyaW1FbmQsIE5vSW50cmluc2ljKTsKKyAgICBKU0Z1bmN0aW9uKiB0cmlt
U3RhcnRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAi
dHJpbVN0YXJ0Il9zdHIsIHN0cmluZ1Byb3RvRnVuY1RyaW1TdGFydCwgTm9JbnRyaW5zaWMpOwor
ICAgIEpTRnVuY3Rpb24qIHRyaW1FbmRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAwLCAidHJpbUVuZCJfc3RyLCBzdHJpbmdQcm90b0Z1bmNUcmltRW5kLCBO
b0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ0cmltU3RhcnQiKSwgdHJpbVN0YXJ0RnVuY3Rpb24sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRy
aW1MZWZ0IiksIHRyaW1TdGFydEZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0cmltRW5kIiksIHRyaW1FbmRGdW5jdGlv
biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAidHJpbVJpZ2h0IiksIHRyaW1FbmRGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgSlNGdW5jdGlvbiogaXRlcmF0
b3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5
bWJvbC5pdGVyYXRvcl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBOb0ludHJpbnNpYyk7
CisgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5bWJvbC5pdGVyYXRvcl0iX3N0ciwgc3RyaW5nUHJvdG9G
dW5jSXRlcmF0b3IsIE5vSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGl0ZXJhdG9yRnVuY3Rpb24s
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAog
ICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdD
b25zdHJ1Y3RvciBoYXMgYmVlbiBidWlsdApAQCAtMTUxNiw3ICsxNTE2LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKICAgICAvLyAxLiBMZXQgTyBiZSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxl
KHRoaXMgdmFsdWUpLgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTdHJpbmcucHJv
dG90eXBlLmxvY2FsZUNvbXBhcmUgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3Ig
dW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlN0cmluZy5wcm90b3R5cGUubG9jYWxlQ29tcGFyZSByZXF1aXJlcyB0aGF0
IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3N0cik7CiAKICAgICAvLyAyLiBMZXQg
UyBiZSBUb1N0cmluZyhPKS4KICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChTKS4KQEAgLTE2MDYs
NyArMTYwNiw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNhc2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsCiAKICAgICAvLyAxMi4gSWYgbG9j
YWxlIGlzIHVuZGVmaW5lZCwgbGV0IGxvY2FsZSBiZSAidW5kIi4KICAgICBpZiAobG9jYWxlLmlz
TnVsbCgpKQotICAgICAgICBsb2NhbGUgPSAidW5kIl9zOworICAgICAgICBsb2NhbGUgPSAidW5k
Il9zdHI7CiAKICAgICAvLyBEZWxlZ2F0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzIHRvIGljdSB1X3N0
clRvTG93ZXIgb3IgdV9zdHJUb1VwcGVyLgogICAgIC8vIDEzLiBMZXQgY3BMaXN0IGJlIGEgTGlz
dCBjb250YWluaW5nIGluIG9yZGVyIHRoZSBjb2RlIHBvaW50cyBvZiBTIGFzIGRlZmluZWQgaW4g
RVMyMDE1LCA2LjEuNCwgc3RhcnRpbmcgYXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgUy4KQEAgLTE5
NTIsNyArMTk1Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihzdHJpbmdQcm90b0Z1bmNO
b3JtYWxpemUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgICAgIGVsc2UgaWYg
KGZvcm1TdHJpbmcgPT0gIk5GS0QiKQogICAgICAgICAgICAgZm9ybSA9IE5vcm1hbGl6YXRpb25G
b3JtOjpORktEOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIGFueSBu
b3JtYWxpemF0aW9uIGZvcm0iX3MpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBhbnkgbm9y
bWFsaXphdGlvbiBmb3JtIl9zdHIpOwogICAgIH0KIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG5vcm1hbGl6ZShnbG9iYWxPYmplY3QsIHN0cmluZywgZm9y
bSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCmluZGV4IGMzZGIx
OTZmYjkzNDZlMDZlMGM1YzFmMGZlNDliNDFiZjBhM2Y3ZWIuLjVmOWEyNDdlMTVhYWI4OWFjNDk5
MmJkNGE4NjIyODM2ZjQ1ZjlmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sLmNwcApAQCAtODEsNyArODEsNyBAQCBkb3VibGUgU3ltYm9sOjp0b051bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252ZXJ0IGEgc3lt
Ym9sIHRvIGEgbnVtYmVyIl9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBudW1iZXIiX3N0cik7CiAgICAgcmV0
dXJuIDAuMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFByb3RvdHlwZS5jcHAKaW5kZXggYmNmMTYzNTE2OWMwMjQ3NzI0YzcxMDM5MTU1MzFjMTIwZDg5
YzM4OC4uZWQ2ZmNjZGNiYjFhNDE0YzgzMjY4NjQwYmVkZjMzMDFlYzY5NGI3NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIHZvaWQgU3ltYm9sUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAKLSAgICBKU0Z1bmN0aW9u
KiB0b1ByaW1pdGl2ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDEsICJbU3ltYm9sLnRvUHJpbWl0aXZlXSJfcywgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZiwg
Tm9JbnRyaW5zaWMpOworICAgIEpTRnVuY3Rpb24qIHRvUHJpbWl0aXZlRnVuY3Rpb24gPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRpdmVd
Il9zdHIsIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YsIE5vSW50cmluc2ljKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1i
b2wsIHRvUHJpbWl0aXZlRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9V
VF9UUkFOU0lUSU9OKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbENhbGVuZGFyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXIuY3BwCmluZGV4IDA2ZGYyNTViOTk4N2JlZmIzZjQxZTU5MTE1NmFh
NTJhMWZjYmJkZDIuLjZhY2NiMjYwYWZlNDU4NmZkMDkyZTEzZjU0YjNjYTQ5YzhlZDlhNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENhbGVuZGFySUQ+IHBh
cnNlVGVtcG9yYWxDYWxlbmRhclN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBwYXJzaW5nIHRlbXBvcmFsIGNhbGVuZGFyIHN0cmluZywgd2hpY2ggcmVx
dWlyZXMgZnVsbCBJU08gODYwMSBwYXJzZXIuCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgY2FsZW5kYXIgSUQiX3Mp
OworICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxl
bmRhciBJRCJfc3RyKTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNv
bnN0cnVjdG9yLmNwcAppbmRleCBkOTc5OTMxNTY0NmQ4NzQ3NTBjYjA0YmY1ZWZkMzU4Mzc3NzFh
YTcxLi4wNmMwNDYwZTc3ZDRlZmU1YmMyOWZjNzdkMDVhZTJjM2YxNDhjODhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5k
YXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnUKIAogdm9pZCBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogdGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIkNhbGVuZGFyIl9zLCBQcm9w
ZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiQ2FsZW5kYXIiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1v
ZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCB0ZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgdGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CkBAIC05MCw3ICs5MCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbENhbGVuZGFyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjCiAKICAgICBzdGQ6Om9wdGlvbmFsPENhbGVuZGFySUQ+IGlkZW50aWZp
ZXIgPSBUZW1wb3JhbENhbGVuZGFyOjppc0J1aWx0aW5DYWxlbmRhcihjYWxlbmRhclN0cmluZyk7
CiAgICAgaWYgKCFpZGVudGlmaWVyKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxlbmRhciBJRCJfcyk7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxlbmRhciBJRCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKaW5kZXgg
OGZiM2E1MzRjZGU0OGEzMzQzZjgxMjk3NjRmNTJlYmM4YzdhYjkzNS4uMjEwYWU5YzgzOGUxZDFl
YWQ3ODAzM2EzMzU5ZGFiOTgzZTU2ZThiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGVGdW5jRmllbGRzLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8qIGNhbGVuZGFy
ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbENhbGVuZGFyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghY2FsZW5kYXIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5DYWxlbmRhci5wcm90b3R5cGUuZmll
bGRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgQ2FsZW5kYXIiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuQ2Fs
ZW5kYXIucHJvdG90eXBlLmZpZWxkcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIENhbGVu
ZGFyIl9zdHIpOwogCiAgICAgYm9vbCBpc0lTTzg2MDEgPSBjYWxlbmRhci0+aXNJU084NjAxKCk7
CiAgICAgYm9vbCBzaG91bGRBZGRFcmFBbmRFcmFZZWFyID0gZmFsc2U7CkBAIC0xMDQsNyArMTA0
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVG
dW5jRmllbGRzLCAoSlNHbG9iYWxPYmplY3QqIGcKICAgICBmb3JFYWNoSW5JdGVyYWJsZShnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIFtpc0lTTzg2MDEsICZzaG91bGRBZGRF
cmFBbmRFcmFZZWFyLCAmZmllbGROYW1lc10oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmllbGRzIGluY2x1ZGUg
bm9uIHN0cmluZyB2YWx1ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmllbGRzIGluY2x1ZGUgbm9uIHN0cmluZyB2YWx1ZSJfc3RyKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWlzSVNPODYwMSAmJiAh
c2hvdWxkQWRkRXJhQW5kRXJhWWVhcikgewpAQCAtMjAyLDcgKzIwMiw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVuY01lcmdlRmllbGRzLCAo
SlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBjYWxlbmRhciA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxDYWxlbmRhcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWNhbGVu
ZGFyKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLm1lcmdlRmllbGRzIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgQ2FsZW5kYXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLm1l
cmdlRmllbGRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgQ2FsZW5kYXIiX3N0cik7CiAK
ICAgICBhdXRvKiBmaWVsZHMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTMxNyw3
ICszMTcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogY2FsZW5kYXIg
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsQ2FsZW5kYXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCFjYWxlbmRhcikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkNhbGVuZGFyLnByb3RvdHlwZS50b1N0
cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIENhbGVuZGFyIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkNh
bGVuZGFyLnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIENh
bGVuZGFyIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwg
aW50bEF2YWlsYWJsZUNhbGVuZGFycygpW2NhbGVuZGFyLT5pZGVudGlmaWVyKCldKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3Bw
CmluZGV4IDc3ZDk5YWEzZDBjN2ZkODM5Mzk0MTY2MmQxMjVhMWJiN2JkMTlhMGMuLjJhZjE2YjMz
NWNhMWI2MmU0ZmYzMmU5NmQ0ZDlmMDdiZjJjNzc5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCkBAIC03MSw3ICs3MSw3IEBA
IFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgaWYgKCFJU084NjAxOjppc1ZhbGlkRHVyYXRpb24oZHVyYXRpb24p
KSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2YgY29uc2lzdGVudCBz
aWduIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBvZiBjb25zaXN0
ZW50IHNpZ24iX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xMDQsMTMg
KzEwNCwxMyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9uOjpmcm9tRHVyYXRp
b25MaWtlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlmICghaXNJbnRlZ2VyKHJlc3VsdFt1bml0
XSkpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGludGVnZXJzIl9zKTsKKyAgICAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVy
YXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGludGVnZXJzIl9zdHIpOwogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghaGFzUmVsZXZhbnRQcm9wZXJ0
eSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2JqZWN0
IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydHkiX3Mp
OworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2JqZWN0IG11
c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydHkiX3N0cik7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xNDMsNyArMTQzLDcgQEAgSVNPODYw
MTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6dG9JU084NjAxRHVyYXRpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamUKICAgICB9CiAKICAgICBpZiAoIUlTTzg2MDE6OmlzVmFsaWREdXJh
dGlvbihkdXJhdGlvbikpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBv
ZiBjb25zaXN0ZW50IHNpZ24iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUg
YW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9u
Ojp0b0xpbWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoIWlzVmFsaWREdXJhdGlvbihk
dXJhdGlvbikpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBvZiBjb25z
aXN0ZW50IHNpZ24iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9m
IGNvbnNpc3RlbnQgc2lnbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAg
LTIyOCw3ICsyMjgsNyBAQCBKU1ZhbHVlIFRlbXBvcmFsRHVyYXRpb246OmNvbXBhcmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZU9uZQogCiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCByZWxhdGl2ZVRvIHBhcmFtZXRlciBhZnRlciBQbGFpbkRhdGVUaW1lIC8gWm9u
ZWREYXRlVGltZS4KICAgICBpZiAob25lLT55ZWFycygpIHx8IHR3by0+eWVhcnMoKSB8fCBvbmUt
Pm1vbnRocygpIHx8IHR3by0+bW9udGhzKCkgfHwgb25lLT53ZWVrcygpIHx8IHR3by0+d2Vla3Mo
KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5v
dCBjb21wYXJlIGEgZHVyYXRpb24gb2YgeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgd2l0aG91dCBh
IHJlbGF0aXZlVG8gb3B0aW9uIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJDYW5ub3QgY29tcGFyZSBhIGR1cmF0aW9uIG9mIHllYXJzLCBtb250aHMs
IG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAKQEAgLTI3MSwxMyArMjcxLDEzIEBAIElTTzg2MDE6OkR1cmF0aW9u
IFRlbXBvcmFsRHVyYXRpb246OndpdGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAg
ICAgaWYgKCFpc0ludGVnZXIocmVzdWx0W3VuaXRdKSkgewotICAgICAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVz
IG11c3QgYmUgaW50ZWdlcnMiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgaW50
ZWdlcnMiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKCFoYXNSZWxldmFudFByb3BlcnR5KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBU
ZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0eSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBUZW1w
b3JhbC5EdXJhdGlvbiBwcm9wZXJ0eSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKQEAgLTM2Myw3ICszNjMsNyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9u
OjphZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvdAogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgcmVsYXRpdmVUbyBwYXJhbWV0ZXIgYWZ0ZXIgUGxhaW5EYXRlVGltZSAv
IFpvbmVkRGF0ZVRpbWUuCiAgICAgYXV0byBsYXJnZXN0VW5pdCA9IHN0ZDo6bWluKGxhcmdlc3RT
dWJkdXJhdGlvbihtX2R1cmF0aW9uKSwgbGFyZ2VzdFN1YmR1cmF0aW9uKG90aGVyKSk7CiAgICAg
aWYgKGxhcmdlc3RVbml0IDw9IFRlbXBvcmFsVW5pdDo6V2VlaykgewotICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBhZGQgYSBkdXJhdGlvbiBvZiB5
ZWFycywgbW9udGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRpdmVUbyBvcHRpb24iX3MpOwor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBhZGQg
YSBkdXJhdGlvbiBvZiB5ZWFycywgbW9udGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRpdmVU
byBvcHRpb24iX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0zODgsNyAr
Mzg4LDcgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6c3VidHJhY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWwKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHJlbGF0aXZlVG8gcGFyYW1ldGVyIGFmdGVyIFBsYWluRGF0ZVRpbWUgLyBab25lZERhdGVUaW1l
LgogICAgIGF1dG8gbGFyZ2VzdFVuaXQgPSBzdGQ6Om1pbihsYXJnZXN0U3ViZHVyYXRpb24obV9k
dXJhdGlvbiksIGxhcmdlc3RTdWJkdXJhdGlvbihvdGhlcikpOwogICAgIGlmIChsYXJnZXN0VW5p
dCA8PSBUZW1wb3JhbFVuaXQ6OldlZWspIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJDYW5ub3Qgc3VidHJhY3QgYSBkdXJhdGlvbiBvZiB5ZWFycywgbW9u
dGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRpdmVUbyBvcHRpb24iX3MpOworICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBzdWJ0cmFjdCBhIGR1
cmF0aW9uIG9mIHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9w
dGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTQ3MywxMiArNDcz
LDEyIEBAIElTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OnJvdW5kKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCiAgICAgaWYgKCFzbWFsbGVzdCAmJiAhbGFyZ2VzdCkgewotICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0
IGEgc21hbGxlc3RVbml0IG9yIGxhcmdlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHJvdW5kIHdpdGhvdXQgYSBz
bWFsbGVzdFVuaXQgb3IgbGFyZ2VzdFVuaXQgb3B0aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAogICAgIGlmIChzbWFsbGVzdCAmJiBsYXJnZXN0ICYmIHNtYWxsZXN0LnZh
bHVlKCkgPCBsYXJnZXN0LnZhbHVlKCkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2Vz
dFVuaXQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InNtYWxsZXN0VW5pdCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTQ5MywxMSArNDkzLDExIEBAIElTTzg2MDE6
OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OnJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVsYXRpdmVUbyBwYXJh
bWV0ZXIgYWZ0ZXIgUGxhaW5EYXRlVGltZSAvIFpvbmVkRGF0ZVRpbWUuCiAgICAgaWYgKGxhcmdl
c3RVbml0ID4gVGVtcG9yYWxVbml0OjpZZWFyICYmICh5ZWFycygpIHx8IG1vbnRocygpIHx8IHdl
ZWtzKCkgfHwgKGRheXMoKSAmJiBsYXJnZXN0VW5pdCA8IFRlbXBvcmFsVW5pdDo6RGF5KSkpIHsK
LSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qgcm91
bmQgYSBkdXJhdGlvbiBvZiB5ZWFycywgbW9udGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRp
dmVUbyBvcHRpb24iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkNhbm5vdCByb3VuZCBhIGR1cmF0aW9uIG9mIHllYXJzLCBtb250aHMsIG9yIHdlZWtz
IHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAgICAgaWYgKGxhcmdlc3RVbml0IDw9IFRlbXBvcmFsVW5pdDo6V2VlaykgewotICAg
ICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZJWE1FOiB5ZWFycywgbW9u
dGhzLCBvciB3ZWVrcyByb3VuZGluZyB3aXRoIHJlbGF0aXZlVG8gbm90IGltcGxlbWVudGVkIHll
dCJfcyk7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRklYTUU6
IHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHJvdW5kaW5nIHdpdGggcmVsYXRpdmVUbyBub3QgaW1w
bGVtZW50ZWQgeWV0Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNTIw
LDE0ICs1MjAsMTQgQEAgZG91YmxlIFRlbXBvcmFsRHVyYXRpb246OnRvdGFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHUKIAogICAgIGF1dG8gdW5pdFR5
cGUgPSB0ZW1wb3JhbFVuaXRUeXBlKHVuaXRTdHJpbmcpOwogICAgIGlmICghdW5pdFR5cGUpIHsK
LSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIGFu
IGludmFsaWQgVGVtcG9yYWwgdW5pdCJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAidW5pdCBpcyBhbiBpbnZhbGlkIFRlbXBvcmFsIHVuaXQiX3N0cik7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBUZW1wb3JhbFVuaXQgdW5pdCA9IHVuaXRU
eXBlLnZhbHVlKCk7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbGF0aXZlVG8gcGFyYW1l
dGVyIGFmdGVyIFBsYWluRGF0ZVRpbWUgLyBab25lZERhdGVUaW1lLgogICAgIGlmICh1bml0ID4g
VGVtcG9yYWxVbml0OjpZZWFyICYmICh5ZWFycygpIHx8IG1vbnRocygpIHx8IHdlZWtzKCkgfHwg
KGRheXMoKSAmJiB1bml0IDwgVGVtcG9yYWxVbml0OjpEYXkpKSkgewotICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCB0b3RhbCBhIGR1cmF0aW9uIG9m
IHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfcyk7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHRv
dGFsIGEgZHVyYXRpb24gb2YgeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgd2l0aG91dCBhIHJlbGF0
aXZlVG8gb3B0aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNTUx
LDcgKzU1MSw3IEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAgICAgUHJlY2lzaW9uRGF0YSBk
YXRhID0gc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKGRhdGEudW5pdCA8IFRl
bXBvcmFsVW5pdDo6U2Vjb25kKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3Qgbm90IGJlIFwibWludXRlXCIiX3MpOworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBt
dXN0IG5vdCBiZSBcIm1pbnV0ZVwiIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGQzY2VmMTA1NjYzYjczODNmYzkzOGE4
ZDQ2OGI5Nzk2YTU4YzYwYy4uYTZhY2MzNjgzYjI4Zjc0MTc5NGE0MDMwM2QwNTQ0NWU1ODM1MWZj
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFRlbXBvcmFs
RHVyYXRpb25Db25zdHJ1Y3Rvcjo6VGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1CiAKIHZvaWQgVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUqIGR1cmF0aW9uUHJv
dG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiRHVyYXRpb24iX3Ms
IFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJEdXJhdGlvbiJfc3RyLCBQcm9wZXJ0eUFkZGl0
aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGR1cmF0aW9uUHJv
dG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgZHVyYXRpb25Q
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogfQpAQCAtOTYsNyArOTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oY29uc3RydWN0VGVtcG9yYWxEdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAg
IGlmICghc3RkOjppc2Zpbml0ZShyZXN1bHRbaV0pKQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9w
ZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGll
cyBtdXN0IGJlIGZpbml0ZSJfc3RyKTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlk
KGdsb2JhbE9iamVjdCwgV1RGTW92ZShyZXN1bHQpLCBzdHJ1Y3R1cmUpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuY3BwCmluZGV4IDBjYjQ0MmUyOTBiZjhmYTFhMmQ2ZGU4OGY5NjE5ZDc2YjJiYWYzYzQu
LjE0ZDJmNGM5MjYzZTc3OGY0MTNjNDY0YWM2OThmOWUwOTA5N2NhODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuY3BwCkBAIC0xMjMsMTEgKzEyMywxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNXaXRoLCAoSlNHbG9iYWxPYmplY3QqIGdsbwog
CiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1
cmF0aW9uLnByb3RvdHlwZS53aXRoIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRp
b24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLndpdGggY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKICAgICAKICAgICBKU1ZhbHVlIGR1cmF0aW9uTGlr
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFkdXJhdGlvbkxpa2UuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS53aXRoIG11
c3QgYmUgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS53aXRoIG11c3QgYmUgYW4gb2JqZWN0Il9zdHIpOwogCiAgICAgYXV0byByZXN1bHQg
PSBkdXJhdGlvbi0+d2l0aChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGR1cmF0aW9uTGlrZSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0xNDIsNyArMTQyLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVGdW5jTmVn
YXRlZCwgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5uZWdhdGVkIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90
eXBlLm5lZ2F0ZWQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCksIGR1cmF0aW9uLT5uZWdhdGVkKCkp
KTsKIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZUZ1bmNBYnMsIChKU0dsb2JhbE9iamVjdCogZ2xvYgogCiAgICAg
YXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9u
LnByb3RvdHlwZS5hYnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuYWJzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFs
RHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBk
dXJhdGlvbi0+YWJzKCkpKTsKIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNBZGQsIChKU0dsb2JhbE9iamVj
dCogZ2xvYgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVy
YXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5hZGQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICBhdXRvIHJlc3VsdCA9IGR1
cmF0aW9uLT5hZGQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMTgxLDcgKzE4MSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY1N1YnRyYWN0
LCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8
VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAo
IWR1cmF0aW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLnN1YnRyYWN0IGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBl
LnN1YnRyYWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAK
ICAgICBhdXRvIHJlc3VsdCA9IGR1cmF0aW9uLT5zdWJ0cmFjdChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CkBAIC0xOTYsMTEgKzE5NiwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0
byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIER1cmF0aW9uIl9zdHIpOwogCiAgICAgYXV0byBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBpZiAob3B0aW9ucy5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24u
cHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwu
RHVyYXRpb24ucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3N0
cik7CiAKICAgICBhdXRvIHJlc3VsdCA9IGR1cmF0aW9uLT5yb3VuZChnbG9iYWxPYmplY3QsIG9w
dGlvbnMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0yMTUsMTEg
KzIxNSwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3Rv
dHlwZUZ1bmNUb3RhbCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0byogZHVyYXRpb24g
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS50b3Rh
bCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0
aW9uLnByb3RvdHlwZS50b3RhbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9u
Il9zdHIpOwogCiAgICAgYXV0byBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAob3B0aW9ucy5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLnRv
dGFsIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJv
dG90eXBlLnRvdGFsIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3N0cik7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkdXJhdGlv
bi0+dG90YWwoZ2xvYmFsT2JqZWN0LCBvcHRpb25zKSkpKTsKIH0KQEAgLTIzMSw3ICsyMzEsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNU
b1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS50b1N0cmluZyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9z
dHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcodm0sIGR1cmF0aW9uLT50b1N0cmluZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpKSkpOwogfQpAQCAtMjQzLDcgKzI0Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY1RvSlNPTiwgKEpTR2xvYmFsT2JqZWN0
KiBnCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlv
bio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24ucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS50b0pTT04gY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcodm0sIGR1cmF0aW9uLT50b1N0cmluZygpKSk7CiB9CkBAIC0yNTYs
NyArMjU2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2JhbE8KIAogICAgIGF1dG8qIGR1cmF0aW9u
ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUudG9M
b2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5EdXJhdGlvbi5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcodm0sIGR1cmF0aW9uLT50b1N0cmluZygpKSk7CiB9CkBAIC0yNjYsNyArMjY2LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVGdW5j
VmFsdWVPZiwgKEpTR2xvYmFsT2JqZWN0KgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRp
b24ucHJvdG90eXBlLnZhbHVlT2YgbXVzdCBub3QgYmUgY2FsbGVkLiBUbyBjb21wYXJlIER1cmF0
aW9uIHZhbHVlcywgdXNlIFRlbXBvcmFsLkR1cmF0aW9uLmNvbXBhcmUiX3MpOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlv
bi5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBiZSBjYWxsZWQuIFRvIGNvbXBhcmUgRHVyYXRp
b24gdmFsdWVzLCB1c2UgVGVtcG9yYWwuRHVyYXRpb24uY29tcGFyZSJfc3RyKTsKIH0KIAogSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVHZXR0ZXJZZWFy
cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTI3Niw3ICsyNzYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlclllYXJzLCAoSlNHbG9iYWxPYmpl
Y3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlv
bio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkdXJhdGlvbikK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS55ZWFycyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS55ZWFycyBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihkdXJhdGlvbi0+eWVhcnMoKSkpOwogfQpAQCAtMjg4LDcgKzI4
OCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
R2V0dGVyTW9udGhzLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5tb250
aHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJh
dGlvbi5wcm90b3R5cGUubW9udGhzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRp
b24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9u
LT5tb250aHMoKSkpOwogfQpAQCAtMzAwLDcgKzMwMCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlR2V0dGVyV2Vla3MsIChKU0dsb2JhbE9iamVj
dCoKIAogICAgIGF1dG8qIGR1cmF0aW9uID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9u
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWR1cmF0aW9uKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLndlZWtzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLndlZWtzIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT53ZWVrcygpKSk7CiB9CkBAIC0zMTIsNyArMzEy
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVH
ZXR0ZXJEYXlzLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8qIGR1cmF0aW9uID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLmRheXMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlv
bi5wcm90b3R5cGUuZGF5cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9z
dHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkdXJhdGlvbi0+ZGF5
cygpKSk7CiB9CkBAIC0zMjQsNyArMzI0LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsRHVyYXRpb25Qcm90b3R5cGVHZXR0ZXJIb3VycywgKEpTR2xvYmFsT2JqZWN0KgogCiAg
ICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5E
dXJhdGlvbi5wcm90b3R5cGUuaG91cnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJh
dGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuaG91cnMgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoZHVyYXRpb24tPmhvdXJzKCkpKTsKIH0KQEAgLTMzNiw3ICszMzYsNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlck1p
bnV0ZXMsIChKU0dsb2JhbE9iamVjdAogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubWludXRlcyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS5taW51dGVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0
cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5taW51
dGVzKCkpKTsKIH0KQEAgLTM0OCw3ICszNDgsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
dGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlclNlY29uZHMsIChKU0dsb2JhbE9iamVjdAog
CiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5EdXJhdGlvbi5wcm90b3R5cGUuc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5zZWNvbmRzIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5zZWNvbmRzKCkpKTsKIH0KQEAgLTM2MCw3ICsz
NjAsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlw
ZUdldHRlck1pbGxpc2Vjb25kcywgKEpTR2xvYmFsTwogCiAgICAgYXV0byogZHVyYXRpb24gPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubWls
bGlzZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24ucHJvdG90eXBlLm1pbGxpc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIER1cmF0aW9uIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihkdXJhdGlvbi0+bWlsbGlzZWNvbmRzKCkpKTsKIH0KQEAgLTM3Miw3ICszNzIsNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlck1p
Y3Jvc2Vjb25kcywgKEpTR2xvYmFsTwogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubWljcm9zZWNvbmRz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRp
b24ucHJvdG90eXBlLm1pY3Jvc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1
cmF0aW9uIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkdXJh
dGlvbi0+bWljcm9zZWNvbmRzKCkpKTsKIH0KQEAgLTM4NCw3ICszODQsNyBAQCBKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlck5hbm9zZWNvbmRz
LCAoSlNHbG9iYWxPYgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBv
cmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICgh
ZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubmFub3NlY29uZHMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5
cGUubmFub3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3Ry
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZHVyYXRpb24tPm5hbm9z
ZWNvbmRzKCkpKTsKIH0KQEAgLTM5Niw3ICszOTYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlclNpZ24sIChKU0dsb2JhbE9iamVjdCog
ZwogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24q
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuc2lnbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5zaWduIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5zaWduKCkpKTsKIH0KQEAgLTQwOCw3ICs0MDgsNyBA
QCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRl
ckJsYW5rLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5ibGFuayBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS5ibGFuayBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zdHIp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oIWR1cmF0aW9uLT5zaWdu
KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsSW5zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnQuY3BwCmluZGV4IDZmNjhjZjBmZjNjZDJjODU3MTM3NGFiYjNlMDJjNzEzYzIwNWZmNTAu
LjkxOGZmNDcxZmZiZTdiZTQxN2MyZGIzMmNmNDM5OTNjYTY1MTcxNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcApAQCAtMTI0LDcg
KzEyNCw3IEBAIFRlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIFN0cmluZyBhcmdBc1N0
cmluZyA9IGJpZ2ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCk7CiAgICAgICAgIGlmIChz
Y29wZS5leGNlcHRpb24oKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsK
LSAgICAgICAgICAgIGFyZ0FzU3RyaW5nID0gIlRoZSBnaXZlbiBudW1iZXIgb2YiX3M7CisgICAg
ICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVyIG9mIl9zdHI7CiAgICAgICAg
IH0KIAogICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0
cmluZyhlbGxpcHNpemVBdCgxMDAsIGFyZ0FzU3RyaW5nKSwgIiBlcG9jaCBuYW5vc2Vjb25kcyBp
cyBvdXRzaWRlIG9mIHRoZSBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3Mp
KTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBT
dHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApOwog
ICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVy
IG9mIl9zOworICAgICAgICAgICAgYXJnQXNTdHJpbmcgPSAiVGhlIGdpdmVuIG51bWJlciBvZiJf
c3RyOwogICAgICAgICB9CiAKICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0cmluZyksICIgZXBvY2gg
bWljcm9zZWNvbmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5J
bnN0YW50Il9zKSk7CkBAIC0zMTEsNyArMzExLDcgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9y
YWxJbnN0YW50OjpkaWZmZXJlbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlbXAK
ICAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQgPSBsYXJnZXN0LnZhbHVlX29yKGRlZmF1bHRM
YXJnZXN0VW5pdCk7CiAKICAgICBpZiAoc21hbGxlc3QgJiYgbGFyZ2VzdCAmJiBzbWFsbGVzdCA8
IGxhcmdlc3QpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJzbWFsbGVzdFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2VzdFVuaXQiX3MpOworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBt
dXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBJU084NjAxOjpFeGFjdFRpbWUgVGVtcG9y
YWxJbnN0YW50Ojpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghc21hbGxlc3Qp
IHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qg
cm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24iX3MpOworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0IGEgc21h
bGxlc3RVbml0IG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAg
VGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5p
dDo6TmFub3NlY29uZCk7CkBAIC00MjMsNyArNDIzLDcgQEAgU3RyaW5nIFRlbXBvcmFsSW5zdGFu
dDo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25z
VmEKICAgICAvLyAxLiBMZXQgX2RhdGVUaW1lXyBiZSA/IEJ1aWx0aW5UaW1lWm9uZUdldFBsYWlu
RGF0ZVRpbWVGb3IoX291dHB1dFRpbWVab25lXywgX2luc3RhbnRfLCBfaXNvQ2FsZW5kYXJfKS4K
ICAgICBKU09iamVjdCogb3V0cHV0VGltZVpvbmUgPSB0aW1lWm9uZTsKICAgICBpZiAob3V0cHV0
VGltZVpvbmUpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
SVhNRTogVGVtcG9yYWwuSW5zdGFudC50b1N0cmluZyh7dGltZVpvbmV9KSBub3QgaW1wbGVtZW50
ZWQgeWV0Il9zKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
SVhNRTogVGVtcG9yYWwuSW5zdGFudC50b1N0cmluZyh7dGltZVpvbmV9KSBub3QgaW1wbGVtZW50
ZWQgeWV0Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IDg2MWQ4MGMxODg3ZTI2NTBmMGNkNzcyYTczNzVmOTljZDY0YWU1M2Yu
LjFmZTBkMWY5NDIyZWM4MDcwYzc4ZDlhNjE1NGMwZTBjMzJkZDBiYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6
OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKIAog
dm9pZCBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDEsICJJbnN0YW50Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6
V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCAxLCAiSW5zdGFudCJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVy
ZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGluc3RhbnRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKICAgICBpbnN0YW50UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KQEAgLTk4
LDcgKzk4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsSW5z
dGFudCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Ik1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vjb25kcyBhcmd1bWVudCB0byBUZW1wb3JhbC5J
bnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIk1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vjb25kcyBhcmd1bWVudCB0byBU
ZW1wb3JhbC5JbnN0YW50Il9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgc3RydWN0dXJlKSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5jcHAKaW5kZXggYTQyNmJlMDZmZmQzOTQxMDYzYzFmZjJiNTE4N2I5OWM2
MTU2NWMzMy4uOGMwNWYxZGM4YWE1MTVlMzY0ZTU5N2YzOGEzZGIzZTU0NDI3MjNlOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUuY3BwCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYQogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1w
b3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0
YW50KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5hZGQgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgSVNPODYwMTo6RHVyYXRp
b24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgc3RkOjpvcHRpb25h
bDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0VGltZSgp
LmFkZChkdXJhdGlvbik7CiAgICAgaWYgKCFuZXdFeGFjdFRpbWUpIHsKLSAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBZGRpdGlvbiBpcyBvdXRzaWRlIG9mIHN1
cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcyk7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQWRkaXRpb24gaXMgb3V0c2lkZSBvZiBzdXBw
b3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3N0cik7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCkBAIC0xMzUsMTQgKzEzNSwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1N1YnRyYWN0LCAoSlNHbG9iYWxPYmplY3Qq
CiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFs
SW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWluc3RhbnQp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5zdWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc3VidHJhY3QgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgSVNPODYwMTo6
RHVyYXRpb24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVu
aXRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgc3RkOjpv
cHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0
VGltZSgpLmFkZCgtZHVyYXRpb24pOwogICAgIGlmICghbmV3RXhhY3RUaW1lKSB7Ci0gICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3VidHJhY3Rpb24gaXMgb3V0
c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpOworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlzIG91
dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zdHIpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVW50aWwsIChKU0dsb2Jh
bE9iamVjdCogZ2xvCiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIWluc3RhbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudW50
aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgVGVt
cG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlLCAoSlNHbG9iYWxPYmplY3QqIGdsbwog
CiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbElu
c3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0YW50KQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc2luY2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIFRlbXBvcmFsSW5zdGFudCog
b3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBA
IC0xOTQsMTEgKzE5NCwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlRnVuY1JvdW5kLCAoSlNHbG9iYWxPYmplY3QqIGdsbwogCiAgICAgVGVtcG9y
YWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFu
dC5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnJvdW5kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKG9wdGlvbnMuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgcmVxdWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJf
c3RyKTsKIAogICAgIElTTzg2MDE6OkV4YWN0VGltZSBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5y
b3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CkBAIC0yMTMsNyArMjEzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0dsb2JhbE9iamVjdCogZ2wKIAog
ICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0
YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaW5zdGFudCkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLkluc3RhbnQucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXF1YWxzIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIFRlbXBvcmFsSW5zdGFudCog
b3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBA
IC0yMzAsNyArMjMwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgVGVtcG9yYWxJ
bnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5w
cm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBpbnN0YW50LT50b1N0cmluZyhnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSkpOwogfQpAQCAtMjQyLDcgKzI0Miw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9KU09O
LCAoSlNHbG9iYWxPYmplY3QqIGdsCiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKICAgICBpZiAoIWluc3RhbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b0pTT04gY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJv
dG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3N0cik7
CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
Zyh2bSwgaW5zdGFudC0+dG9TdHJpbmcoKSkpKTsKIH0KQEAgLTI1NSw3ICsyNTUsNyBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvTG9jYWxl
U3RyaW5nLCAoSlNHbG9iYWxPYgogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9Mb2NhbGVTdHJp
bmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
SW5zdGFudCJfc3RyKTsKIAogICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0dGVyID0gSW50
bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTI3
Miw3ICsyNzIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuSW5zdGFudC5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBiZSBjYWxsZWQuIFRvIGNv
bXBhcmUgSW5zdGFudCB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5JbnN0YW50LmNvbXBhcmUiX3MpOwor
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5JbnN0YW50LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFy
ZSBJbnN0YW50IHZhbHVlcywgdXNlIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSJfc3RyKTsKIH0K
IAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRl
ckVwb2NoU2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTI4Miw3ICsyODIsNyBAQCBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNv
bmRzLCAoSlNHbG9iYWxPYgogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5h
bWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoU2Vjb25k
cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFu
dC5wcm90b3R5cGUuZXBvY2hTZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5z
dGFudCJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5zdGFu
dC0+ZXhhY3RUaW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsKIH0KQEAgLTI5NCw3ICsyOTQsNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBv
Y2hNaWxsaXNlY29uZHMsIChKU0dsbwogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2No
TWlsbGlzZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pbGxpc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIEluc3RhbnQiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCkpKTsKIH0K
QEAgLTMwNiw3ICszMDYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWNyb3NlY29uZHMsIChKU0dsbwogCiAgICAgVGVtcG9y
YWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLklu
c3RhbnQucHJvdG90eXBlLmVwb2NoTWljcm9zZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pY3Jvc2Vj
b25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3N0cik7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6bWFrZUhl
YXBCaWdJbnRPckJpZ0ludDMyKGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBv
Y2hNaWNyb3NlY29uZHMoKSkpKTsKIH0KQEAgLTMxOCw3ICszMTgsNyBAQCBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25k
cywgKEpTR2xvYgogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2Fz
dDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmICghaW5zdGFudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoTmFub3NlY29uZHMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQu
cHJvdG90eXBlLmVwb2NoTmFub3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJ
bnN0YW50Il9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRp
bWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKaW5kZXggM2NkMmZhMzczM2JhNzAwZmI2YWU3
MmRiMDk5MjA0ZTE5Mzg3YmEyMC4uOGNkZmU5YTIzMDk2ZDJlNzMyNzM4N2RmMjE4YWYxYzc5OWZl
ODVlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcApAQCAtMjQxLDEyICsyNDEsMTIgQEAgc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+
IHRlbXBvcmFsTGFyZ2VzdFVuaXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAog
ICAgIGF1dG8gdW5pdFR5cGUgPSB0ZW1wb3JhbFVuaXRUeXBlKGxhcmdlc3RVbml0KTsKICAgICBp
ZiAoIXVuaXRUeXBlKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAibGFyZ2VzdFVuaXQgaXMgYW4gaW52YWxpZCBUZW1wb3JhbCB1bml0Il9zKTsKKyAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJsYXJnZXN0VW5pdCBpcyBh
biBpbnZhbGlkIFRlbXBvcmFsIHVuaXQiX3N0cik7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgaWYgKGRpc2FsbG93ZWRVbml0cy5zaXplKCkgJiYgc3RkOjpmaW5k
KGRpc2FsbG93ZWRVbml0cy5iZWdpbigpLCBkaXNhbGxvd2VkVW5pdHMuZW5kKCksIHVuaXRUeXBl
LnZhbHVlKCkpICE9IGRpc2FsbG93ZWRVbml0cy5lbmQoKSkgewotICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImxhcmdlc3RVbml0IGlzIGEgZGlzYWxsb3dlZCB1
bml0Il9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJs
YXJnZXN0VW5pdCBpcyBhIGRpc2FsbG93ZWQgdW5pdCJfc3RyKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKQEAgLTI2OCwxMiArMjY4LDEyIEBAIHN0ZDo6b3B0aW9uYWw8
VGVtcG9yYWxVbml0PiB0ZW1wb3JhbFNtYWxsZXN0VW5pdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKCiAKICAgICBhdXRvIHVuaXRUeXBlID0gdGVtcG9yYWxVbml0VHlwZShzbWFsbGVz
dFVuaXQpOwogICAgIGlmICghdW5pdFR5cGUpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgaXMgYW4gaW52YWxpZCBUZW1wb3JhbCB1
bml0Il9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJz
bWFsbGVzdFVuaXQgaXMgYW4gaW52YWxpZCBUZW1wb3JhbCB1bml0Il9zdHIpOwogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChkaXNhbGxvd2VkVW5pdHMuc2l6
ZSgpICYmIHN0ZDo6ZmluZChkaXNhbGxvd2VkVW5pdHMuYmVnaW4oKSwgZGlzYWxsb3dlZFVuaXRz
LmVuZCgpLCB1bml0VHlwZS52YWx1ZSgpKSAhPSBkaXNhbGxvd2VkVW5pdHMuZW5kKCkpIHsKLSAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQg
aXMgYSBkaXNhbGxvd2VkIHVuaXQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBpcyBhIGRpc2FsbG93ZWQgdW5pdCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcAppbmRleCBmMzNmNmFm
ZmI5MDgwZjYwMDg4ZGMxMDRhOTQ1NGYyMjNiZWI5NmU1Li4zNTJiMjJjZWM0ZTIyMjhiNjVkZjU5
YjU0YTYwYTY2NzdiODNkOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwCkBAIC05NiwyNyArOTYsMjcgQEAgc3RhdGljIElT
Tzg2MDE6OlBsYWluVGltZSB0b1BsYWluVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBJU084NjAxOjpEdXIKICAgICBkb3VibGUgbWljcm9zZWNvbmQgPSBkdXJhdGlvbi5taWNyb3Nl
Y29uZHMoKTsKICAgICBkb3VibGUgbmFub3NlY29uZCA9IGR1cmF0aW9uLm5hbm9zZWNvbmRzKCk7
CiAgICAgaWYgKCEoaG91ciA+PSAwICYmIGhvdXIgPD0gMjMpKSB7Ci0gICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaG91ciBpcyBvdXQgb2YgcmFuZ2UiX3MpOwor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImhvdXIgaXMgb3V0
IG9mIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBpZiAoISht
aW51dGUgPj0gMCAmJiBtaW51dGUgPD0gNTkpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAibWludXRlIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibWludXRlIGlzIG91dCBvZiBy
YW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgaWYgKCEoc2Vjb25k
ID49IDAgJiYgc2Vjb25kIDw9IDU5KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNlY29uZCBpcyBvdXQgb2YgcmFuZ2Ui
X3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIGlmICghKG1pbGxpc2Vjb25k
ID49IDAgJiYgbWlsbGlzZWNvbmQgPD0gOTk5KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pbGxpc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7Cisg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibWlsbGlzZWNvbmQg
aXMgb3V0IG9mIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBp
ZiAoIShtaWNyb3NlY29uZCA+PSAwICYmIG1pY3Jvc2Vjb25kIDw9IDk5OSkpIHsKLSAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaWNyb3NlY29uZCBpcyBvdXQg
b2YgcmFuZ2UiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIm1pY3Jvc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAgICAgaWYgKCEobmFub3NlY29uZCA+PSAwICYmIG5hbm9zZWNvbmQgPD0gOTk5
KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm5hbm9z
ZWNvbmQgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJuYW5vc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfc3RyKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgcmV0dXJuIElTTzg2MDE6OlBsYWluVGltZSB7CkBA
IC0yMzQsNyArMjM0LDcgQEAgSVNPODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpy
b3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBhdXRvIHNtYWxs
ZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IFRlbXBv
cmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpXZWVrLCBU
ZW1wb3JhbFVuaXQ6OkRheSB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogICAgIGlmICghc21hbGxlc3QpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24i
X3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5v
dCByb3VuZCB3aXRob3V0IGEgc21hbGxlc3RVbml0IG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAgICAgVGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0
LnZhbHVlKCk7CkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHRv
VGVtcG9yYWxUaW1lUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2IKICAg
ICAgICAgZG91YmxlIGludGVnZXIgPSB2YWx1ZS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAg
IGlmICghc3RkOjppc2Zpbml0ZShpbnRlZ2VyKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUgcHJvcGVydGllcyBt
dXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRl
Il9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBkdXJh
dGlvblt1bml0XSA9IGludGVnZXI7CkBAIC0zMjcsMTQgKzMyNywxNCBAQCBzdGF0aWMgc3RkOjph
cnJheTxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0
cz4gdG9QYXJ0aQogICAgICAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gdmFsdWUudG9JbnRl
Z2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShkb3VibGVW
YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInRvUGFydGlhbFRpbWUgcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAg
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b1BhcnRp
YWxUaW1lIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3N0cik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBhcnRpYWxUaW1lW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPih1bml0KSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZW1wb3JhbFVu
aXQ6OkhvdXIpXSA9IGRvdWJsZVZhbHVlOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICghaGFz
QW55RmllbGRzKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJ0b1BhcnRpYWxUaW1lIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSJfcyk7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b1BhcnRpYWxUaW1lIHJl
cXVpcmVzIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAgICAgcmV0dXJuIHBhcnRpYWxUaW1lOwpAQCAtNDA1LDcgKzQwNSw3IEBAIFRlbXBv
cmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlCiAgICAgICAgIFN0cmluZyBjYWxlbmRhcldURlN0cmluZyA9IGNh
bGVuZGFyU3RyaW5nLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAoY2FsZW5kYXJXVEZTdHJpbmcgIT0gImlz
bzg2MDEiX3MpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiY2FsZW5kYXIgaXMgbm90IGlzbzg2MDEiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRhciBpcyBub3QgaXNvODYwMSJfc3Ry
KTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgYXV0byBkdXJh
dGlvbiA9IHRvVGVtcG9yYWxUaW1lUmVjb3JkKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0
Kj4oaXRlbVZhbHVlKSk7CkBAIC00MzksNyArNDM5LDcgQEAgVGVtcG9yYWxQbGFpblRpbWUqIFRl
bXBvcmFsUGxhaW5UaW1lOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUKICAgICAgICAgfQogICAgIH0KIAotICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaW52YWxpZCB0aW1lIHN0cmluZyJfcyk7CisgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIHRpbWUgc3RyaW5nIl9zdHIpOwogICAgIHJldHVy
biB7IH07CiB9CiAKQEAgLTUxNCwyMSArNTE0LDIxIEBAIElTTzg2MDE6OlBsYWluVGltZSBUZW1w
b3JhbFBsYWluVGltZTo6d2l0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKHRl
bXBvcmFsVGltZUxpa2UtPmluaGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1lPih2bSkpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBt
dXN0IG5vdCBjYXJyeSBjYWxlbmRhciJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBvYmplY3QgbXVzdCBub3QgY2FycnkgY2FsZW5kYXIi
X3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgSlNWYWx1ZSBjYWxlbmRh
clByb3BlcnR5ID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVy
dHlOYW1lcy0+Y2FsZW5kYXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgaWYgKCFjYWxlbmRhclByb3BlcnR5LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0IG5v
dCBjYXJyeSBjYWxlbmRhciJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJhcmd1bWVudCBvYmplY3QgbXVzdCBub3QgY2FycnkgY2FsZW5kYXIiX3N0cik7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgSlNWYWx1ZSB0aW1lWm9uZVByb3Bl
cnR5ID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+dGltZVpvbmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
aWYgKCF0aW1lWm9uZVByb3BlcnR5LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0IG5vdCBjYXJy
eSB0aW1lIHpvbmUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiYXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNhcnJ5IHRpbWUgem9uZSJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgc3Rk
Ojp0dXBsZTxUZW1wb3JhbFVuaXQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlLCBkb3VibGU+
IGV4dHJhY3REaWZmZQogICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0VW5pdCA9IGxhcmdlc3QudmFs
dWVfb3IoVGVtcG9yYWxVbml0OjpIb3VyKTsKIAogICAgIGlmIChzbWFsbGVzdFVuaXQgPCBsYXJn
ZXN0VW5pdCkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InNtYWxsZXN0VW5pdCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfcyk7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11
c3QgYmUgc21hbGxlciB0aGFuIGxhcmdlc3RVbml0Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAppbmRleCBkNjdjZmM5YTUwYTZm
YmZmOTgyZjI4MDY2Y2VhNzcyYTE4YzEzMWE4Li5lYjRkMjk4ZjY5MGQ5NTMzMzlmZDJjZjRiNDM0
ODhiMDcxYjM5ZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcApAQCAtNzUsNyArNzUs
NyBAQCBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdAogCiB2b2lkIFRlbXBvcmFsUGxhaW5UaW1lQ29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGUqIHBsYWluVGltZVByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
MCwgIlBsYWluVGltZSJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlBsYWluVGltZSJf
c3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIHBsYWluVGltZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOwogICAgIHBsYWluVGltZVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CkBAIC05Niw3ICs5Niw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhd
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b0ludGVnZXJPckluZmluaXR5KGds
b2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAg
ICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShkdXJhdGlvbltkdXJhdGlvbkluZGV4XSkpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuUGxhaW5UaW1lIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3N0cik7CiAgICAgfQogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5U
aW1lOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBXVEZNb3ZlKGR1
cmF0aW9uKSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAppbmRleCBlNDk2N2Q0Zjk0OTU4
ZDNjYzNhMmI3NTdjNzAzYzFiODQ4NGRkNTQ4Li4zNWU4MzA2YmZhMjA1ODYxMDBkNjllMDViYjEy
MWU5ZDZkM2UwMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCkBAIC0xMTcsNyArMTE3LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVu
Y0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmFkZCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3Ry
KTsKIAogICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT5hZGQoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwpAQCAtMTMzLDcgKzEzMyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0CiAKICAgICBhdXRv
KiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1l
LnByb3RvdHlwZS5zdWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGlt
ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnN1YnRyYWN0IGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgYXV0byByZXN1bHQgPSBwbGFp
blRpbWUtPnN1YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTE0OSwxMSArMTQ5LDExIEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNX
aXRoLCAoSlNHbG9iYWxPYmplY3QqIGdsCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS53aXRoIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5w
cm90b3R5cGUud2l0aCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3Ry
KTsKIAogICAgIEpTVmFsdWUgdGVtcG9yYWxUaW1lTGlrZSAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGlmICghdGVtcG9yYWxUaW1lTGlrZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQg
dG8gVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS53aXRoIG11c3QgYmUgYW4gb2JqZWN0Il9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUud2l0aCBtdXN0
IGJlIGFuIG9iamVjdCJfc3RyKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT53aXRo
KGdsb2JhbE9iamVjdCwgYXNPYmplY3QodGVtcG9yYWxUaW1lTGlrZSksIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0xNjks
NyArMTY5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8qIHBsYWluVGlt
ZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBl
LnVudGlsIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFs
LlBsYWluVGltZS5wcm90b3R5cGUudW50aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBw
bGFpblRpbWUiX3N0cik7CiAKICAgICBhdXRvKiBvdGhlciA9IFRlbXBvcmFsUGxhaW5UaW1lOjpm
cm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc3RkOjpudWxsb3B0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMTg4LDcgKzE4OCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNT
aW5jZSwgKEpTR2xvYmFsT2JqZWN0KiBnCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zaW5jZSBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9z
dHIpOwogCiAgICAgYXV0byogb3RoZXIgPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTIwNywxMSArMjA3LDExIEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNSb3VuZCwgKEpT
R2xvYmFsT2JqZWN0KiBnCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICgh
cGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBl
LnJvdW5kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAg
ICAgYXV0byBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAob3B0aW9u
cy5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5yb3VuZCByZXF1aXJl
cyBhbiBvcHRpb25zIGFyZ3VtZW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUucm91
bmQgcmVxdWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJfc3RyKTsKIAogICAgIGF1dG8gcm91bmRl
ZCA9IHBsYWluVGltZS0+cm91bmQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMjI3LDcgKzIyNyw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0ds
b2JhbE9iamVjdCoKIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFwbGFp
blRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVx
dWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAg
IGF1dG8qIG90aGVyID0gVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CkBAIC0yNDMsNyArMjQzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0dldElTT0ZpZWxkcywgKEpTR2xvYmFs
T2IKIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRp
bWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAgIEpTT2JqZWN0
KiBmaWVsZHMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGZpZWxk
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhciwgcGxhaW5UaW1lLT5j
YWxlbmRhcigpKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdAog
CiAgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFs
LlBsYWluVGltZS5wcm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b1N0cmluZyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUt
PnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKSk7CiB9CkBA
IC0yNzcsNyArMjc3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1RvSlNPTiwgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogcGxh
aW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90
b3R5cGUudG9KU09OIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudG9KU09OIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyh2bSwgcGxhaW5UaW1lLT50b1N0cmluZygpKSk7CiB9CkBAIC0yOTAsNyArMjkwLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1Rv
TG9jYWxlU3RyaW5nLCAoSlNHbG9iYWwKIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvTG9jYWxlU3Ry
aW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBs
YWluVGltZS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkpKTsKIH0KQEAgLTMwMSw3ICszMDEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVmFs
dWVPZiwgKEpTR2xvYmFsT2JqZWN0KgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1l
LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFyZSBQbGFpblRp
bWUgdmFsdWVzLCB1c2UgVGVtcG9yYWwuUGxhaW5UaW1lLmNvbXBhcmUiX3MpOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRp
bWUucHJvdG90eXBlLnZhbHVlT2YgbXVzdCBub3QgYmUgY2FsbGVkLiBUbyBjb21wYXJlIFBsYWlu
VGltZSB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5QbGFpblRpbWUuY29tcGFyZSJfc3RyKTsKIH0KIAog
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVy
SG91ciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTMxMSw3ICszMTEsNyBAQCBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyLCAoSlNHbG9iYWxP
YmplY3QqCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxh
aW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXBsYWlu
VGltZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuaG91ciBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmhvdXIg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+aG91cigpKSk7CiB9CkBAIC0z
MjMsNyArMzIzLDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlR2V0dGVyTWludXRlLCAoSlNHbG9iYWxPYmplY3QKIAogICAgIGF1dG8qIHBsYWlu
VGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5taW51dGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taW51dGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHBsYWluVGltZS0+bWludXRlKCkpKTsKIH0KQEAgLTMzNSw3ICszMzUsNyBAQCBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJTZWNv
bmQsIChKU0dsb2JhbE9iamVjdAogCiAgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2Fz
dDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnNlY29uZCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLnNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJf
c3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5z
ZWNvbmQoKSkpOwogfQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbGxpc2Vjb25kLCAoSlNHbG9iYWxP
CiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1l
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXBsYWluVGltZSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUubWlsbGlzZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWxs
aXNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5taWxsaXNlY29u
ZCgpKSk7CiB9CkBAIC0zNTksNyArMzU5LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQsIChKU0dsb2JhbE8KIAog
ICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghcGxhaW5UaW1lKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWNyb3NlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pY3Jvc2Vj
b25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm1pY3Jvc2Vjb25kKCkp
KTsKIH0KQEAgLTM3MSw3ICszNzEsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25kLCAoSlNHbG9iYWxPYgogCiAgICAg
YXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5Q
bGFpblRpbWUucHJvdG90eXBlLm5hbm9zZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5uYW5vc2Vjb25kIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm5hbm9zZWNvbmQoKSkpOwogfQpA
QCAtMzgzLDcgKzM4Myw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBw
bGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGlt
ZS5wcm90b3R5cGUuY2FsZW5kYXIgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRp
bWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocGxhaW5UaW1lLT5jYWxlbmRhcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKaW5kZXggMTAxYWQ3NmU3NjY2NDA3
NjY5NTkwNjVhYTVjNzRkZTY5NmFjODFlNC4uYzk3NDVjMmIxNjViZGM5MzRlNzY5YjEzMDM5YTBm
YTYzZTE2YWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZS5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBKU09iamVjdCogVGVtcG9yYWxU
aW1lWm9uZTo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRpbWVa
b25lTAogICAgIGlmICh1dGNPZmZzZXRGcm9tSW5zdGFudCkKICAgICAgICAgcmV0dXJuIFRlbXBv
cmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZzZXQodm0sIGdsb2JhbE9iamVjdC0+dGltZVpv
bmVTdHJ1Y3R1cmUoKSwgdXRjT2Zmc2V0RnJvbUluc3RhbnQudmFsdWUoKSk7CiAKLSAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVU
QyBvZmZzZXQgc3RyaW5nLCBUaW1lWm9uZSBpZGVudGlmaWVyLCBvciB0ZW1wb3JhbCBJbnN0YW50
IHN0cmluZyJfcyk7CisgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJh
cmd1bWVudCBuZWVkcyB0byBiZSBVVEMgb2Zmc2V0IHN0cmluZywgVGltZVpvbmUgaWRlbnRpZmll
ciwgb3IgdGVtcG9yYWwgSW5zdGFudCBzdHJpbmciX3N0cik7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1l
Wm9uZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGQ3NTNjMDMxZTFjZGI3ZGEyMDMyY2U4
ODA4MGEzMzllYzRiNDBhZi4uZjg4MGI3NjMyZDlhOGJmZmFhNTNiZGI4ZTAyODZiNTlkYWMxYzNl
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1l
Wm9uZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFRlbXBvcmFs
VGltZVpvbmVDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1CiAKIHZvaWQgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUqIHRlbXBvcmFsVGlt
ZVpvbmVQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJUaW1l
Wm9uZSJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlRpbWVab25lIl9zdHIsIFByb3Bl
cnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgdGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OwogICAgIHRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQpAQCAtOTUsNyArOTUs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxUaW1lWm9uZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAgc3RkOjpvcHRpb25hbDxUaW1lWm9u
ZUlEPiBpZGVudGlmaWVyID0gSVNPODYwMTo6cGFyc2VUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJp
bmcpOwogICAgIGlmICghaWRlbnRpZmllcikgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVUQyBvZmZzZXQgc3RyaW5n
IG9yIFRpbWVab25lIGlkZW50aWZpZXIiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVUQyBvZmZzZXQgc3RyaW5n
IG9yIFRpbWVab25lIGlkZW50aWZpZXIiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJv
bUlEKHZtLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIudmFsdWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBl
LmNwcAppbmRleCA2ZjU3NTU3OWUzZWFmYjYxMzkzZjE1MWM2YmZiYjRhM2NhY2Y3YTgxLi5lZTVh
MDQyYTI0ZDk0N2NhZThkZjljZjVlNDBjYWQ1MjI2N2ZjZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBl
LmNwcApAQCAtOTEsNyArOTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxU
aW1lWm9uZVByb3RvdHlwZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0
byogdGltZVpvbmUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsVGltZVpvbmUqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aW1lWm9uZSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlRpbWVab25lLnBy
b3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFRpbWVab25lIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLlRpbWVab25lLnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIFRpbWVab25lIl9zdHIpOwogCiAgICAgYXV0byB2YXJpYW50ID0gdGltZVpvbmUt
PnRpbWVab25lKCk7CiAgICAgYXV0byBzdHJpbmcgPSBXVEY6OnN3aXRjaE9uKHZhcmlhbnQsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IGQ4OGJhMjhjM2Yz
MDkyNzJlM2RhMmVjNDI2YjkzOWVkMWU5OTUxY2YuLjVkYmQ5Nzg1NjcyYmM3OWI5ZWRiMTc2MDkz
MWE2NzNjOTMzNjdjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQu
Y3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgVHlwZVNldDo6aW52YWxpZGF0ZUNhY2hlKFZNJiB2
bSkKIFN0cmluZyBUeXBlU2V0OjpkdW1wVHlwZXMoKSBjb25zdAogewogICAgIGlmIChtX3NlZW5U
eXBlcyA9PSBUeXBlTm90aGluZykKLSAgICAgICAgcmV0dXJuICIoVW5yZWFjaGVkIFN0YXRlbWVu
dCkiX3M7CisgICAgICAgIHJldHVybiAiKFVucmVhY2hlZCBTdGF0ZW1lbnQpIl9zdHI7CiAKICAg
ICBTdHJpbmdCdWlsZGVyIHNlZW47CiAKQEAgLTE2Nyw0OCArMTY3LDQ4IEBAIFN0cmluZyBUeXBl
U2V0OjpkaXNwbGF5TmFtZSgpIGNvbnN0CiAgICAgLy8gVGhlcmVmb3JlLCBtb3JlIHNwZWNpZmlj
IHR5cGVzIG11c3QgYmUgY2hlY2tlZCBmaXJzdC4KIAogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1U
byhUeXBlRnVuY3Rpb24pKQotICAgICAgICByZXR1cm4gIkZ1bmN0aW9uIl9zOworICAgICAgICBy
ZXR1cm4gIkZ1bmN0aW9uIl9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVVbmRl
ZmluZWQpKQotICAgICAgICByZXR1cm4gIlVuZGVmaW5lZCJfczsKKyAgICAgICAgcmV0dXJuICJV
bmRlZmluZWQiX3N0cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bGwpKQotICAg
ICAgICByZXR1cm4gIk51bGwiX3M7CisgICAgICAgIHJldHVybiAiTnVsbCJfc3RyOwogICAgIGlm
IChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlQm9vbGVhbikpCi0gICAgICAgIHJldHVybiAiQm9vbGVh
biJfczsKKyAgICAgICAgcmV0dXJuICJCb29sZWFuIl9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29u
Zm9ybVRvKFR5cGVBbnlJbnQpKQotICAgICAgICByZXR1cm4gIkludGVnZXIiX3M7CisgICAgICAg
IHJldHVybiAiSW50ZWdlciJfc3RyOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlTnVt
YmVyIHwgVHlwZUFueUludCkpCi0gICAgICAgIHJldHVybiAiTnVtYmVyIl9zOworICAgICAgICBy
ZXR1cm4gIk51bWJlciJfc3RyOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlU3RyaW5n
KSkKLSAgICAgICAgcmV0dXJuICJTdHJpbmciX3M7CisgICAgICAgIHJldHVybiAiU3RyaW5nIl9z
dHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVTeW1ib2wpKQotICAgICAgICByZXR1
cm4gIlN5bWJvbCJfczsKKyAgICAgICAgcmV0dXJuICJTeW1ib2wiX3N0cjsKICAgICBpZiAoZG9l
c1R5cGVDb25mb3JtVG8oVHlwZUJpZ0ludCkpCi0gICAgICAgIHJldHVybiAiQmlnSW50Il9zOwor
ICAgICAgICByZXR1cm4gIkJpZ0ludCJfc3RyOwogCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRv
KFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiKD8pIl9zOworICAg
ICAgICByZXR1cm4gIig/KSJfc3RyOwogCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVG
dW5jdGlvbiB8IFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiRnVu
Y3Rpb24/Il9zOworICAgICAgICByZXR1cm4gIkZ1bmN0aW9uPyJfc3RyOwogICAgIGlmIChkb2Vz
VHlwZUNvbmZvcm1UbyhUeXBlQm9vbGVhbiB8IFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0g
ICAgICAgIHJldHVybiAiQm9vbGVhbj8iX3M7CisgICAgICAgIHJldHVybiAiQm9vbGVhbj8iX3N0
cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZUFueUludCB8IFR5cGVOdWxsIHwgVHlw
ZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiSW50ZWdlcj8iX3M7CisgICAgICAgIHJldHVy
biAiSW50ZWdlcj8iX3N0cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bWJlciB8
IFR5cGVBbnlJbnQgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4g
Ik51bWJlcj8iX3M7CisgICAgICAgIHJldHVybiAiTnVtYmVyPyJfc3RyOwogICAgIGlmIChkb2Vz
VHlwZUNvbmZvcm1UbyhUeXBlU3RyaW5nIHwgVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAg
ICAgICAgcmV0dXJuICJTdHJpbmc/Il9zOworICAgICAgICByZXR1cm4gIlN0cmluZz8iX3N0cjsK
ICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZVN5bWJvbCB8IFR5cGVOdWxsIHwgVHlwZVVu
ZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiU3ltYm9sPyJfczsKKyAgICAgICAgcmV0dXJuICJT
eW1ib2w/Il9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVCaWdJbnQgfCBUeXBl
TnVsbCB8IFR5cGVVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gIkJpZ0ludD8iX3M7CisgICAg
ICAgIHJldHVybiAiQmlnSW50PyJfc3RyOwogICAgCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRv
KFR5cGVPYmplY3QgfCBUeXBlRnVuY3Rpb24gfCBUeXBlU3RyaW5nKSkKLSAgICAgICAgcmV0dXJu
ICJPYmplY3QiX3M7CisgICAgICAgIHJldHVybiAiT2JqZWN0Il9zdHI7CiAgICAgaWYgKGRvZXNU
eXBlQ29uZm9ybVRvKFR5cGVPYmplY3QgfCBUeXBlRnVuY3Rpb24gfCBUeXBlU3RyaW5nIHwgVHlw
ZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuICJPYmplY3Q/Il9zOworICAg
ICAgICByZXR1cm4gIk9iamVjdD8iX3N0cjsKIAotICAgIHJldHVybiAiKG1hbnkpIl9zOworICAg
IHJldHVybiAiKG1hbnkpIl9zdHI7CiB9CiAKIFN0cmluZyBUeXBlU2V0OjpsZWFzdENvbW1vbkFu
Y2VzdG9yKCkgY29uc3QKQEAgLTM4MSw3ICszODEsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6
OmxlYXN0Q29tbW9uQW5jZXN0b3IoY29uc3QgVmVjdG9yPFJlZjxTdHJ1Y3R1cmVTaGFwZT4+JiBz
aAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdW5saWtlbHkgdG8gaGFwcGVuLCBiZWNhdXNl
IHdlIHVzdWFsbHkgYm90dG9tIG91dCBhdCAiT2JqZWN0IiwgYnV0IHRoZXJlIGFyZSBzb21lIHNl
dHMgb2YgT2JqZWN0cwogICAgICAgICAgICAgICAgIC8vIHRoYXQgbWF5IGNhdXNlIHRoaXMgYmVo
YXZpb3IuIFdlIGZhbGwgYmFjayB0byAiT2JqZWN0IiBiZWNhdXNlIGl0J3Mgb3VyIHZlcnNpb24g
b2YgVG9wLgogICAgICAgICAgICAgICAgIGlmICghb3JpZ2luLT5tX3Byb3RvKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gIk9iamVjdCJfczsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICJPYmplY3QiX3N0cjsKICAgICAgICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW4tPm1fcHJvdG8u
Z2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVTZXQuaAppbmRleCA4MGJiNDA3ZWYxZDI2Yjg0OGQwNmM1ZTcxMGM2MGEwOWI1OGFm
YjI2Li5hY2JjZTM3YmU1ZDI3MTEzYzkwZTBlMjJlMDdlYTU3Y2VlYmJiYjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgc3RyaW5nUmVwcmVzZW50YXRpb24oKTsKICAgICBTdHJpbmcgdG9KU09OU3Ry
aW5nKCkgY29uc3Q7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVj
dHVyZURlc2NyaXB0aW9uPiBpbnNwZWN0b3JSZXByZXNlbnRhdGlvbigpOwotICAgIHZvaWQgc2V0
Q29uc3RydWN0b3JOYW1lKFN0cmluZyBuYW1lKSB7IG1fY29uc3RydWN0b3JOYW1lID0gKG5hbWUu
aXNFbXB0eSgpID8gIk9iamVjdCJfcyA6IG5hbWUpOyB9CisgICAgdm9pZCBzZXRDb25zdHJ1Y3Rv
ck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fY29uc3RydWN0b3JOYW1lID0gKG5hbWUuaXNF
bXB0eSgpID8gIk9iamVjdCJfc3RyIDogbmFtZSk7IH0KICAgICBTdHJpbmcgY29uc3RydWN0b3JO
YW1lKCkgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvck5hbWU7IH0KICAgICB2b2lkIHNldFByb3RvKFJl
ZjxTdHJ1Y3R1cmVTaGFwZT4mJiBzaGFwZSkgeyBtX3Byb3RvID0gV1RGTW92ZShzaGFwZSk7IH0K
ICAgICB2b2lkIGVudGVyRGljdGlvbmFyeU1vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAppbmRleCBlMzJkY2IwYWQzNGIyM2JjZGEyNDcxYTAzZWU5MmNiNTIzMzM4MjM4Li5m
NjQyZjkyZGQyOGIzZDU4NGU1N2Q0MDVhMGI0MGY3NmUwNDcwNjU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMjE5LDcgKzEyMTksNyBAQCB2b2lkIFZNOjpkdW1wVHlw
ZVByb2ZpbGVyRGF0YSgpCiAgICAgaWYgKCF0eXBlUHJvZmlsZXIoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgdHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKCp0aGlzLCAiVk0g
RHVtcCBUeXBlcyJfcyk7CisgICAgdHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVz
KCp0aGlzLCAiVk0gRHVtcCBUeXBlcyJfc3RyKTsKICAgICB0eXBlUHJvZmlsZXIoKS0+ZHVtcFR5
cGVQcm9maWxlckRhdGEoKnRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAppbmRleCA3ZWIwZmU0NTU0MTc5YTUx
NGIzMzI4ZjNkMmQ3NjI0NGRiYTRlZTRmLi5mNWZiNjllOWE2N2U3NDc4Yzc4ZmYwMWI3NmRmNDEw
MGE2NzdiZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdl
YWtNYXBDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHQKIAogdm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
V2Vha01hcFByb3RvdHlwZSogcHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCAwLCAiV2Vha01hcCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1
cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIldlYWtNYXAi
X3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0K
IApAQCAtNzUsNyArNzUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0V2Vh
a01hcCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogCiAgICAgYXV0byBh
ZGRlckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbik7CiAg
ICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25l
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
J3NldCcgcHJvcGVydHkgb2YgYSBXZWFrTWFwIHNob3VsZCBiZSBjYWxsYWJsZS4iX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3NldCcg
cHJvcGVydHkgb2YgYSBXZWFrTWFwIHNob3VsZCBiZSBjYWxsYWJsZS4iX3N0cik7CiAKICAgICBi
b29sIGNhblBlcmZvcm1GYXN0U2V0ID0gYWRkZXJGdW5jdGlvbkNhbGxEYXRhLnR5cGUgPT0gQ2Fs
bERhdGE6OlR5cGU6Ok5hdGl2ZSAmJiBhZGRlckZ1bmN0aW9uQ2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uID09IHByb3RvRnVuY1dlYWtNYXBTZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAKaW5kZXggYjg1NmQ3NjEzNWJmNjFiZmEz
ZDM4MzRiNmNlMDUzZDdiYzRmNmY4My4uMWM4MGE2ZDc1OTI2MDdiMjJhN2ZiMzYyYzBhNjFjMzYw
NTc5MjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cFByb3RvdHlwZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNX
ZWFrTWFwKiBnZXRXZWFrTWFwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5M
SUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBub24tb2JqZWN0Il9z
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBX
ZWFrTWFwIGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtNjYsNyArNjYsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dl
YWtNYXAqIGdldFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZQog
ICAgIGlmIChMSUtFTFkobWFwKSkKICAgICAgICAgcmV0dXJuIG1hcDsKIAotICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBh
IG5vbi1XZWFrTWFwIG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtNYXAgb2JqZWN0
Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcAppbmRl
eCBmYmZhZjM1Yzc4YmY2ZTk2ODcxY2MwZDc0MTAxZmNmYmIwN2RlOTg2Li5iNjdlZWFhYzFjNTZk
ZmJkMWFlOTA4ZTQwNWU1ZjYzOGRlZjFiYmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLAogCiB2b2lkIFdlYWtPYmplY3RSZWZD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWFrT2JqZWN0UmVmUHJvdG90eXBl
KiBwcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsICJXZWFrUmVm
Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiV2Vha1JlZiJfc3RyLCBQcm9wZXJ0eUFk
ZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCkBAIC02MSw3ICs2MSw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXZWFrUmVmLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGaXJzdCBhcmd1bWVudCB0byBXZWFrUmVmIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3Qg
YXJndW1lbnQgdG8gV2Vha1JlZiBzaG91bGQgYmUgYW4gb2JqZWN0Il9zdHIpOwogCiAgICAgSlNP
YmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOwogICAg
IFN0cnVjdHVyZSogd2Vha09iamVjdFJlZlN0cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJV
Q1RVUkUodm0sIHdlYWtPYmplY3RSZWZTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtPYmplY3RSZWZQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHAKaW5kZXggODNhMjA0NjA5ZDlhZDdiYWU4YWE4OGIx
MjI4YzFjYjc2NDllZjgwOC4uYTZhZmRiNGFkYzRiOGEyNjEwMDFkZjdmNjZmNTUxZjM1MDliYzU1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJl
ZlByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09i
amVjdFJlZlByb3RvdHlwZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0
aWMgSlNXZWFrT2JqZWN0UmVmKiBnZXRXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBp
ZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1JlZiBmdW5jdGlvbiBvbiBub24tb2Jq
ZWN0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNh
bGxlZCBXZWFrUmVmIGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3N0cik7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtNjAsNyArNjAsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBKU1dlYWtPYmplY3RSZWYqIGdldFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSgogICAgIGlmIChMSUtFTFkocmVmKSkKICAgICAgICAgcmV0dXJuIHJlZjsKIAotICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1JlZiBmdW5jdGlv
biBvbiBhIG5vbi1XZWFrUmVmIG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkNhbGxlZCBXZWFrUmVmIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtSZWYg
b2JqZWN0Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBjOGRh
YWI0NmIwM2RiMDNlMGU3YWFhZjcxMGY5MTM0ODQxNWY2YWIwLi4zM2Q3MGEwMTgzODE3ZDU3NWE2
ZmNiMGUyMmY5MmJiODY2NmU0OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIFdlYWtTZXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCBudWxscHQKIAogdm9pZCBXZWFrU2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgV2Vha1NldFByb3RvdHlwZSogcHJvdG90eXBlKQogewotICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCAwLCAiV2Vha1NldCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
MCwgIldlYWtTZXQiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKIH0KIApAQCAtNzYsNyArNzYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
Y29uc3RydWN0V2Vha1NldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgog
CiAgICAgYXV0byBhZGRlckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJG
dW5jdGlvbik7CiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRh
OjpUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiJ2FkZCcgcHJvcGVydHkgb2YgYSBXZWFrU2V0IHNob3VsZCBiZSBjYWxsYWJs
ZS4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiJ2FkZCcgcHJvcGVydHkgb2YgYSBXZWFrU2V0IHNob3VsZCBiZSBjYWxsYWJsZS4iX3N0
cik7CiAKICAgICBib29sIGNhblBlcmZvcm1GYXN0QWRkID0gYWRkZXJGdW5jdGlvbkNhbGxEYXRh
LnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZSAmJiBhZGRlckZ1bmN0aW9uQ2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uID09IHByb3RvRnVuY1dlYWtTZXRBZGQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKaW5kZXggYzE3ZmZj
ZjA3YjY4MWVjOGFhZGZjOGExOWZmMzc1MDAwMDhjZTBkNy4uMGVhYjkzYTkyY2ZhNTI1MTRiZGYx
MjY2ZDcxYWFmNmUzY2UzNDk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgSlNXZWFrU2V0KiBnZXRXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBu
b24tb2JqZWN0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3N0cik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNjYsNyArNjYsNyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU1dlYWtTZXQqIGdldFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZQogICAgIGlmIChMSUtFTFkoc2V0KSkKICAgICAgICAgcmV0dXJuIHNldDsKIAot
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1NldCBm
dW5jdGlvbiBvbiBhIG5vbi1XZWFrU2V0IG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIGEgbm9uLVdl
YWtTZXQgb2JqZWN0Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA3YTNi
Mzc5MjRiZTU2MDU0N2ZjMmRmZmUzMzJkM2U2NmJmOGE5NWY2Li5mODUxZDdjNGQxODRlZWViNDYz
ZjdkOTYzNzM5ZjM2NTZlMzEzZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25z
dCBTdHJpbmcmIG5ldwogICAgIG5ld1Byb3ZpZGVyU3RyLmFwcGVuZChvcmlnSGVhZGVyKTsKICAg
ICBuZXdQcm92aWRlclN0ci5hcHBlbmQobmV3Qm9keSk7CiAKLSAgICBhdXRvIG92ZXJyaWRkZW4g
PSAiPG92ZXJyaWRkZW4+Il9zOworICAgIGF1dG8gb3ZlcnJpZGRlbiA9ICI8b3ZlcnJpZGRlbj4i
X3N0cjsKICAgICBVUkwgdXJsKHsgfSwgb3ZlcnJpZGRlbik7CiAgICAgUmVmPFNvdXJjZVByb3Zp
ZGVyPiBuZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUobmV3UHJvdmlk
ZXJTdHIsIFNvdXJjZU9yaWdpbiB7IHVybCB9LCBvdmVycmlkZGVuKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDNmYzcxMTg2YmUyM2M0Nzg2MTlm
Mzc4NTA2ZGU0MTJiYmQ1N2FjNjYuLjRkM2QxNmEzMmE2YjgxYmY0OGRkYmRjNjQ1NmRkZTI4NzQw
Y2ZkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAg
LTEyODcsNyArMTI4Nyw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkb21KSVRHZXR0ZXJD
b21wbGV4Q3VzdG9tR2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgaWYgKCF0aGlz
T2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlKTsKICAgICBpZiAodGhpc09iamVjdC0+bV9lbmFibGVFeGNlcHRpb24pCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRE9NSklUR2V0dGVyQ29tcGxleCBzbG93IGNhbGwg
ZXhjZXB0aW9uIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIkRP
TUpJVEdldHRlckNvbXBsZXggc2xvdyBjYWxsIGV4Y2VwdGlvbiJfc3RyKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFsdWUoKSkpOwogfQogCkBA
IC0xMzAyLDcgKzEzMDIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04oZG9tSklUR2V0dGVy
Q29tcGxleFNsb3dDYWxsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsTwogICAgIGF1dG8qIGRv
bWppdEdldHRlckNvbXBsZXggPSBqc0R5bmFtaWNDYXN0PERPTUpJVEdldHRlckNvbXBsZXgqPih2
bSwgb2JqZWN0KTsKICAgICBpZiAoZG9taml0R2V0dGVyQ29tcGxleCkgewogICAgICAgICBpZiAo
ZG9taml0R2V0dGVyQ29tcGxleC0+bV9lbmFibGVFeGNlcHRpb24pCi0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIkRPTUpJVEdldHRlckNvbXBsZXggc2xvdyBjYWxsIGV4
Y2VwdGlvbiJfcykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
RE9NSklUR2V0dGVyQ29tcGxleCBzbG93IGNhbGwgZXhjZXB0aW9uIl9zdHIpKSk7CiAgICAgfQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIob2JqZWN0LT52YWx1ZSgpKSk7CiB9
CkBAIC0zMDMwLDcgKzMwMzAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25D
cmVhdGVXYXNtU3RyZWFtaW5nQ29tcGlsZXJGb3JDb21waWxlLCAoSlNHbG9iYQogCiAgICAgYXV0
byBjYWxsYmFjayA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICBpZiAoIWNhbGxiYWNrKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgSlMg
ZnVuY3Rpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgSlMgZnVuY3Rpb24iX3N0cik7CiAK
ICAgICBhdXRvIGNvbXBpbGVyID0gV2FzbVN0cmVhbWluZ0NvbXBpbGVyOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgV2FzbTo6Q29tcGlsZXJNb2RlOjpWYWxpZGF0aW9uLCBudWxscHRyKTsKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpAQCAtMzA1Miw3ICszMDUyLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWluZ0NvbXBpbGVyRm9y
SW5zdGFudGlhdGUsIChKU0cKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBqc0R5bmFtaWNDYXN0PEpT
RnVuY3Rpb24qPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFjYWxsYmFj
aykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IGlz
IG5vdCBhIEpTIGZ1bmN0aW9uIl9zdHIpOwogCiAgICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9IGlt
cG9ydEFyZ3VtZW50LmdldE9iamVjdCgpOwpAQCAtMzEzMSw3ICszMTMxLDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmEKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBJbXB1cmVHZXR0ZXIqIGltcHVyZUdldHRlciA9IGpzRHluYW1pY0Nhc3Q8SW1w
dXJlR2V0dGVyKj4odm0sIGFzT2JqZWN0KGJhc2UuYXNDZWxsKCkpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWltcHVyZUdldHRlcikpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhbiBJbXB1cmVHZXR0ZXIiX3MpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGFuIElt
cHVyZUdldHRlciJfc3RyKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAg
fQogICAgIGltcHVyZUdldHRlci0+c2V0RGVsZWdhdGUodm0sIGFzT2JqZWN0KGRlbGVnYXRlLmFz
Q2VsbCgpKSk7CkBAIC0zMTkyLDcgKzMxOTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25DcmVhdGVFbGVtZW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwog
CiAgICAgUm9vdCogcm9vdCA9IGpzRHluYW1pY0Nhc3Q8Um9vdCo+KHZtLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICBpZiAoIXJvb3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiQ2Fubm90IGNyZWF0ZSBFbGVtZW50IHdpdGhvdXQgYSBSb290LiJfcykpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgY3JlYXRlIEVsZW1lbnQg
d2l0aG91dCBhIFJvb3QuIl9zdHIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFbGVt
ZW50OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcm9vdCkpOwogfQogCkBAIC0zMjI1LDcgKzMy
MjUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25HZXRIaWRkZW5WYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBTaW1wbGVPYmplY3QqIHNpbXBs
ZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8U2ltcGxlT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghc2ltcGxlT2JqZWN0KSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2YgZ2V0SGlk
ZGVuVmFsdWUgdGVzdCBmdW5jdGlvbiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIHVzZSBvZiBnZXRIaWRkZW5WYWx1ZSB0ZXN0IGZ1bmN0
aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaW1wbGVPYmplY3QtPmhpZGRlblZhbHVlKCkpOwpAQCAt
MzI0MCw3ICszMjQwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uU2V0SGlk
ZGVuVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgU2ltcGxlT2Jq
ZWN0KiBzaW1wbGVPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFNpbXBsZU9iamVjdCo+KHZtLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIXNpbXBsZU9iamVjdCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgdXNl
IG9mIHNldEhpZGRlblZhbHVlIHRlc3QgZnVuY3Rpb24iX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2Ygc2V0SGlkZGVuVmFsdWUg
dGVzdCBmdW5jdGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAg
ICAgfQogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMzI4
OCw3ICszMjg4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRmluZFR5cGVG
b3JFeHByZXNzaW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBSRUxFQVNFX0FTU0VSVCh2bS50eXBlUHJvZmlsZXIoKSk7Ci0gICAgdm0udHlwZVByb2ZpbGVy
TG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvbkZp
bmRUeXBlRm9yRXhwcmVzc2lvbiJfcyk7CisgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nl
c3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvbkZpbmRUeXBlRm9yRXhw
cmVzc2lvbiJfc3RyKTsKIAogICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0NhbGxhYmxl
KHZtKSk7CkBAIC0zMzA4LDcgKzMzMDgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVu
Y3Rpb25SZXR1cm5UeXBlRm9yLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLnR5cGVQcm9maWxlcigpKTsKLSAgICB2
bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJqc2MgVGVzdGluZyBB
UEk6IGZ1bmN0aW9uUmV0dXJuVHlwZUZvciJfcyk7CisgICAgdm0udHlwZVByb2ZpbGVyTG9nKCkt
PnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvblJldHVyblR5
cGVGb3IiX3N0cik7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNDYWxsYWJsZSh2
bSkpOwpAQCAtMzQ5OCw3ICszNDk4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0
aW9uTG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2wKIAogICAg
IEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0ganNEeW5hbWljQ2FzdDxHZXR0ZXJTZXR0ZXIq
Pih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFnZXR0ZXJT
ZXR0ZXIpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJ
bnZhbGlkIHVzZSBvZiBsb2FkR2V0dGVyRnJvbUdldHRlclNldHRlciB0ZXN0IGZ1bmN0aW9uOiBh
cmd1bWVudCBpcyBub3QgYSBHZXR0ZXJTZXR0ZXIiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2YgbG9hZEdldHRlckZyb21HZXR0
ZXJTZXR0ZXIgdGVzdCBmdW5jdGlvbjogYXJndW1lbnQgaXMgbm90IGEgR2V0dGVyU2V0dGVyIl9z
dHIpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKQEAgLTM2NTks
NyArMzY1OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblNldFVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBKU0FycmF5KiBhcnJh
eSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoIWFycmF5KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gYXJyYXkiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gYXJyYXkiX3N0cik7CiAKICAgICBWZWN0
b3I8U3RyaW5nPiBsYW5ndWFnZXM7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPmxlbmd0
aCgpOwpAQCAtMzczNyw3ICszNzM3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0
aW9uVG9DYWNoZWFibGVEaWN0aW9uYXJ5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIAogICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQg
dG8gYmUgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVj
dCJfc3RyKTsKICAgICBpZiAoIW9iamVjdC0+c3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSkKICAgICAgICAgb2JqZWN0LT5jb252ZXJ0VG9EaWN0aW9uYXJ5KHZtKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdCk7CkBAIC0zNzUxLDcgKzM3NTEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Ub1VuY2FjaGVhYmxlRGljdGlvbmFyeSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFv
YmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJFeHBlY3RlZCBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQg
Zmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zdHIpOwogICAgIG9iamVjdC0+Y29udmVy
dFRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5KHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRlbnRlci5oIGIvU291
cmNlL1dURi93dGYvSW5kZW50ZXIuaAppbmRleCBjZGVkN2MyNjE1ZmFkODk3ZmZjNmViYzY2MmI4
OGZhM2I0NTUyZGIyLi4xNjI1NjE5NjVhMTY4YjhiMTkwYjg5ZTFkMTYyNmRhMjljYzVlZWQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbmRlbnRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0luZGVudGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBJbmRl
bnRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5kZW50
ZXIodW5zaWduZWQgY291bnQgPSAwLCBTdHJpbmcgc3RyaW5nID0gIiAgIl9zKQorICAgIEluZGVu
dGVyKHVuc2lnbmVkIGNvdW50ID0gMCwgU3RyaW5nIHN0cmluZyA9ICIgICJfc3RyKQogICAgICAg
ICA6IG1fY291bnQoY291bnQpCiAgICAgICAgICwgbV9zdHJpbmcoc3RyaW5nKQogICAgIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dn
ZXIuaAppbmRleCBlNzQ0YTc4Nzc3ZWQzNGUzMTkyZGNlYzNlYzVjY2VkYjE5OWUzNGYxLi4xMWYx
OTkyZmY2NmE0NTU5YzMwMjg2NzU0Zjc2ZGNmYTk0ZTdkZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Mb2dnZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaApAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBM
b2dBcmd1bWVudCB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgYm9vbD46OnZhbHVlLCBTdHJpbmc+Ojp0
eXBlIHRvU3RyaW5nKGJvb2wgYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50ID8gInRydWUiX3Mg
OiAiZmFsc2UiX3M7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBib29sPjo6dmFsdWUsIFN0cmluZz46
OnR5cGUgdG9TdHJpbmcoYm9vbCBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQgPyAidHJ1ZSJf
c3RyIDogImZhbHNlIl9zdHI7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGlj
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBpbnQ+Ojp2YWx1ZSwgU3Ry
aW5nPjo6dHlwZSB0b1N0cmluZyhpbnQgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KGFyZ3VtZW50KTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIHVuc2lnbmVkPjo6dmFsdWUsIFN0cmlu
Zz46OnR5cGUgdG9TdHJpbmcodW5zaWduZWQgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVt
YmVyKGFyZ3VtZW50KTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIHVuc2lnbmVkIGxvbmc+Ojp2YWx1
ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyh1bnNpZ25lZCBsb25nIGFyZ3VtZW50KSB7IHJldHVy
biBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCmluZGV4IDRiODI4
YTZmNmZlODBiODY0MTA5N2I5Yjk0ZjcwMmQ4YjlmMTA3NTIuLmNiNTQ3MWRjNzM1NjZlYjVjNDY4
OWE1MzA4YjNiNTIyODMwYTI1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lZGlhVGlt
ZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcApAQCAtNTY0LDI0ICs1NjQs
MjQgQEAgUmVmPEpTT046Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBjb25zdAog
ICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKIAogICAgIGlmIChoYXNE
b3VibGVWYWx1ZSgpKSB7Ci0gICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2YWx1ZSJfcywgdG9E
b3VibGUoKSk7CisgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2YWx1ZSJfc3RyLCB0b0RvdWJs
ZSgpKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKICAgICBpZiAoaXNJbnZhbGlk
KCkpCi0gICAgICAgIG9iamVjdC0+c2V0Qm9vbGVhbigiaW52YWxpZCJfcywgdHJ1ZSk7CisgICAg
ICAgIG9iamVjdC0+c2V0Qm9vbGVhbigiaW52YWxpZCJfc3RyLCB0cnVlKTsKICAgICBlbHNlIGlm
IChpc0luZGVmaW5pdGUoKSkKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCAi
TmFOIl9zKTsKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zdHIsICJOYU4iX3N0
cik7CiAgICAgZWxzZSBpZiAoaXNQb3NpdGl2ZUluZmluaXRlKCkpCi0gICAgICAgIG9iamVjdC0+
c2V0U3RyaW5nKCJ2YWx1ZSJfcywgIlBPU0lUSVZFX0lORklOSVRZIl9zKTsKKyAgICAgICAgb2Jq
ZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zdHIsICJQT1NJVElWRV9JTkZJTklUWSJfc3RyKTsKICAg
ICBlbHNlIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJp
bmcoInZhbHVlIl9zLCAiTkVHQVRJVkVfSU5GSU5JVFkiX3MpOworICAgICAgICBvYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3N0ciwgIk5FR0FUSVZFX0lORklOSVRZIl9zdHIpOwogICAgIGVsc2UK
LSAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoInZhbHVlIl9zLCB0b0RvdWJsZSgpKTsKKyAgICAg
ICAgb2JqZWN0LT5zZXREb3VibGUoInZhbHVlIl9zdHIsIHRvRG91YmxlKCkpOwogCi0gICAgb2Jq
ZWN0LT5zZXREb3VibGUoIm51bWVyYXRvciJfcywgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3RpbWVW
YWx1ZSkpOwotICAgIG9iamVjdC0+c2V0SW50ZWdlcigiZGVub21pbmF0b3IiX3MsIG1fdGltZVNj
YWxlKTsKLSAgICBvYmplY3QtPnNldEludGVnZXIoImZsYWdzIl9zLCBtX3RpbWVGbGFncyk7Cisg
ICAgb2JqZWN0LT5zZXREb3VibGUoIm51bWVyYXRvciJfc3RyLCBzdGF0aWNfY2FzdDxkb3VibGU+
KG1fdGltZVZhbHVlKSk7CisgICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJkZW5vbWluYXRvciJfc3Ry
LCBtX3RpbWVTY2FsZSk7CisgICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJmbGFncyJfc3RyLCBtX3Rp
bWVGbGFncyk7CiAKICAgICByZXR1cm4gb2JqZWN0OwogfQpAQCAtNjA5LDggKzYwOSw4IEBAIFN0
cmluZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIG9i
amVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAKLSAgICBvYmplY3QtPnNldE9iamVjdCgi
c3RhcnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVjdCgpKTsKLSAgICBvYmplY3QtPnNldE9iamVjdCgi
ZW5kIl9zLCBlbmQudG9KU09OT2JqZWN0KCkpOworICAgIG9iamVjdC0+c2V0T2JqZWN0KCJzdGFy
dCJfc3RyLCBzdGFydC50b0pTT05PYmplY3QoKSk7CisgICAgb2JqZWN0LT5zZXRPYmplY3QoImVu
ZCJfc3RyLCBlbmQudG9KU09OT2JqZWN0KCkpOwogCiAgICAgcmV0dXJuIG9iamVjdC0+dG9KU09O
U3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIvU291cmNl
L1dURi93dGYvVVJMLmNwcAppbmRleCA0ODBmZWM2NDQyNmIwODZhODVmYzBkMThjMjllNzgxOTdl
NGZkNDdiLi5kOTdmNzI3ZjMyODYzY2E4Y2NjMzg0NmQ5MWJhY2U2NWQ5M2I1YjY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAK
QEAgLTEwNDQsNyArMTA0NCw3IEBAIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKFN0cmluZ1Zp
ZXcgZGF0YVVSTCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogICAgIGlm
IChpbmRleCA9PSA1KQotICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgICAgIHJl
dHVybiAidGV4dC9wbGFpbiJfc3RyOwogICAgIEFTU0VSVChpbmRleCA+PSA1KTsKICAgICByZXR1
cm4gZGF0YVVSTC5zdWJzdHJpbmcoNSwgaW5kZXggLSA1KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcAppbmRleCBjMDRjNTViYzYwM2QyODFkMGNh
Mzg5MjBlYmE4Yzc5ZTVlNjkyOTgxLi5lNWRlZGUyNzZjODg1MmVmMWNlOTZhYzIyMWZiZTdjOGE1
ZjBkZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcApAQCAtOTksNyArOTksNyBAQCBWZWN0
b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoU2hvdWxkTWluaW1pemVM
YW5ndWFnZXMgc2hvdWxkTWluaQogCiAgICAgQ0ZJbmRleCBwbGF0Zm9ybUxhbmd1YWdlc0NvdW50
ID0gQ0ZBcnJheUdldENvdW50KHBsYXRmb3JtTGFuZ3VhZ2VzLmdldCgpKTsKICAgICBpZiAoIXBs
YXRmb3JtTGFuZ3VhZ2VzQ291bnQpCi0gICAgICAgIHJldHVybiB7ICJlbiJfcyB9OworICAgICAg
ICByZXR1cm4geyAiZW4iX3N0ciB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzOwog
ICAgIGxhbmd1YWdlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBsYXRmb3JtTGFuZ3VhZ2VzQ291
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IDNhOTFhNjc3ZDVjMDM4ZTAzYjdj
NWViMzJmMzczM2JlZmMwOGNhNTUuLjM0ODVlOGZlYWNiZGZkZmVhMzE1NWM4YzMxNmE2NjhjYjNj
OTJhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCBT
dHJpbmcqIHN0cmluZyhjb25zdCBjaGFyKiBzKQogVmVjdG9yPGNoYXI+IGFzY2lpRGVidWcoU3Ry
aW5nSW1wbCogaW1wbCkKIHsKICAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBhc2NpaURl
YnVnKFN0cmluZygiW251bGxdIl9zKS5pbXBsKCkpOworICAgICAgICByZXR1cm4gYXNjaWlEZWJ1
ZygiW251bGxdIl9zdHIuaW1wbCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVmZmVyOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbXBsLT5sZW5ndGgoKTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAppbmRleCA1MTFiOWMxNjRhMWE1OGMxMWQ0Y2ZkNTMyMWUzMmY1MjdiNGM5
ZWQ2Li4yZTY1MGU3YWUwNzdhZTMxMWY3OTg0M2EwOWVmMDdmZjNjZTQ4ZDFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKQEAgLTk5LDEwICs5OSw5IEBAIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcoQVNDSUlMaXRlcmFsKTsKIAotICAgIC8vIENvbnN0cnVjdCBhIHN0
cmluZyBmcm9tIGEgY29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCi0gICAgLy8gVGhpcyBpcyB0aGUg
ImJpZyIgdmVyc2lvbjogcHV0cyB0aGUgbGVuZ3RoIGluIHRoZSBmdW5jdGlvbiBjYWxsIGFuZCBn
ZW5lcmF0ZXMgYmlnZ2VyIGNvZGUuCi0gICAgZW51bSBDb25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZyB7
IENvbnN0cnVjdEZyb21MaXRlcmFsIH07Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVy
Q291bnQ+IFN0cmluZyhjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBD
b25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZykgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxp
dGVyYWw8Y2hhcmFjdGVyQ291bnQ+KGNoYXJhY3RlcnMpKSB7IH0KKyAgICAvLyBDb25zdHJ1Y3Qg
YSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLCB1c2UgInN0cmluZyJfc3Ry
IGluc3RlYWQgb2YgY2FsbGluZyB0aGlzIGNvbnN0cnVjdG9yIGRpcmVjdGx5LgorICAgIGVudW0g
Y2xhc3MgQ29uc3RydWN0RnJvbUxpdGVyYWwgeyBZZXMgfTsKKyAgICBTdHJpbmcoY29uc3QgY2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBt
X2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoY2hhcmFjdGVycywgbGVuZ3RoKSkg
eyB9CiAKICAgICBTdHJpbmcoY29uc3QgU3RyaW5nJikgPSBkZWZhdWx0OwogICAgIFN0cmluZyhT
dHJpbmcmJikgPSBkZWZhdWx0OwpAQCAtNjI4LDkgKzYyNyw5IEBAIHRlbXBsYXRlPHVuc2lnbmVk
IGxlbmd0aD4gaW5saW5lIGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTCiAKIGlubGluZSBuYW1lc3BhY2UgU3RyaW5nTGl0ZXJhbHMgewogCi1pbmxpbmUgU3Ry
aW5nIG9wZXJhdG9yIiIgX3N0cihjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QpCitpbmxp
bmUgU3RyaW5nIG9wZXJhdG9yIiIgX3N0cihjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qg
bGVuZ3RoKQogewotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6OmZyb21MaXRlcmFsVW5zYWZlKGNo
YXJhY3RlcnMpOworICAgIHJldHVybiBTdHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoLCBTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsOjpZZXMpOwogfQogCiB9IC8vIGlubGluZSBTdHJpbmdMaXRl
cmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5peC9MYW5ndWFnZVVuaXguY3BwIGIv
U291cmNlL1dURi93dGYvdW5peC9MYW5ndWFnZVVuaXguY3BwCmluZGV4IGFmOTRiYjA2Y2MzOGRk
MmE4NTk1YmZiYjc3MTY5MGY5MmRiNDhhZTIuLmQ2OThlMDc4MTU3NzdlMGFhZTk3MzlmODc2ODMx
Nzk3YzQ5MTUyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTGFuZ3VhZ2VVbml4
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bml4L0xhbmd1YWdlVW5peC5jcHAKQEAgLTM0LDcg
KzM0LDcgQEAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBTdHJpbmcg
bG9jYWxlRGVmYXVsdChzZXRsb2NhbGUoTENfQ1RZUEUsIG51bGxwdHIpKTsKICAgICBpZiAobG9j
YWxlRGVmYXVsdC5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShsb2NhbGVEZWZh
dWx0LCAiQyIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobG9jYWxlRGVmYXVsdCwgIlBPU0lY
IikpCi0gICAgICAgIHJldHVybiAiZW4tVVMiX3M7CisgICAgICAgIHJldHVybiAiZW4tVVMiX3N0
cjsKIAogICAgIFN0cmluZyBub3JtYWxpemVkRGVmYXVsdCA9IGxvY2FsZURlZmF1bHQ7CiAgICAg
bm9ybWFsaXplZERlZmF1bHQucmVwbGFjZSgnXycsICctJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGVhMDZlY2U3YmM1
NjAyODAyOTU4NjQyYjM1ZWNiOWM5MTU1ODQ3NjIuLmNiNWFlYWFlNjY3NjcxYjU0MWVlZDQ2MWNj
ZjZkY2QxZTQ4M2MzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yNTM1LDcgKzI1MzUsNyBAQCBzdWIgR2VuZXJhdGVE
ZWZhdWx0VmFsdWUKICAgICAgICAgICAgIGlmICgkZGVmYXVsdFZhbHVlIGVxICJcIlwiIikgewog
ICAgICAgICAgICAgICAgIHJldHVybiAkdXNlQXRvbVN0cmluZyA/ICJlbXB0eUF0b20oKSIgOiAi
ZW1wdHlTdHJpbmcoKSI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJl
dHVybiAkdXNlQXRvbVN0cmluZyA/ICJBdG9tU3RyaW5nKCR7ZGVmYXVsdFZhbHVlfSwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpIiA6ICIke2RlZmF1bHRWYWx1ZX1fcyI7CisgICAg
ICAgICAgICAgICAgcmV0dXJuICR1c2VBdG9tU3RyaW5nID8gIkF0b21TdHJpbmcoJHtkZWZhdWx0
VmFsdWV9LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkiIDogIiR7ZGVmYXVsdFZh
bHVlfV9zdHIiOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTc3MTUsNyArNzcxNSw3
IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgICAgICAgICAgIGlmICgk
b3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgewogICAg
ICAgICAgICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJh
dGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwgJG9wZXJhdGlvbiwg
ImxleGljYWxHbG9iYWxPYmplY3QiKTsKICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGlmICghJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KSB7XG4iKTsK
LSAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB0aHJvd1R5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBcIklsbGVnYWwgY29uc3RydWN0
b3JcIl9zKTtcbiIpOworICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIHRocm93VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFwiSWxs
ZWdhbCBjb25zdHJ1Y3RvclwiX3N0cik7XG4iKTsKICAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTtcbiIp
OwogICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAg
ICAgICAgICAgfQpAQCAtNzg3NCw3ICs3ODc0LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JI
ZWxwZXJNZXRob2RzCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKCR7bGVhc3RDb25zdHJ1
Y3Rvckxlbmd0aH0pLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTtcbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFs
U3RyaW5nKHZtLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiX3MpO1xuIik7CisgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIl9zdHIpO1xuIik7CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5h
bWVTdHJpbmcpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xu
Iik7CiAKQEAgLTgwOTgsNyArODA5OCw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxUcmFjZXIoKQogICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCRjYWxsVHJhY2VyIC4gIi5oIik7CiAKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICRpbmRlbnQgLiAiaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlIiAuICRjYWxs
VHJhY2VyIC4gIigpKSlcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICIg
ICAgIiAuICRjYWxsVHJhY2VyIC4gIjo6cmVjb3JkQWN0aW9uKGltcGwsIFwiIiAuICRuYW1lIC4g
IlwiX3MiKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiICAgICIgLiAkY2Fs
bFRyYWNlciAuICI6OnJlY29yZEFjdGlvbihpbXBsLCBcIiIgLiAkbmFtZSAuICJcIl9zdHIiKTsK
ICAgICBpZiAoc2NhbGFyKEAkYXJndW1lbnRzKSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIsIHsgIiAuIGpvaW4oIiwgIiwgbWFwIHsgJGNhbGxUcmFjZXIgLiAiOjpwcm9jZXNzQXJn
dW1lbnQoaW1wbCwgIiAuICRfIC4gIikiIH0gQCRhcmd1bWVudHMpIC4gIiB9Iik7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcAppbmRleCBkZTQ1OWRkODk2MGM3ODY1
NDQ2NzAzOTM3YThlODYxYzBmZGY2NjliLi41ZThmMzcyYTBiMTNiNTRkZmE2MTA5MzEyOTc2ODc4
MGFhY2FmZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcApAQCAtNTIs
NyArNTIsNyBAQCBTdHJpbmcgQ1NTRm9udEZhY2VSdWxlOjpjc3NUZXh0KCkgY29uc3QKIHsKICAg
ICBTdHJpbmcgZGVjbGFyYXRpb25zID0gbV9mb250RmFjZVJ1bGUtPnByb3BlcnRpZXMoKS5hc1Rl
eHQoKTsKICAgICBpZiAoZGVjbGFyYXRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICJA
Zm9udC1mYWNlIHsgfSJfczsKKyAgICAgICAgcmV0dXJuICJAZm9udC1mYWNlIHsgfSJfc3RyOwog
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJAZm9udC1mYWNlIHsgIiwgZGVjbGFyYXRpb25zLCAiIH0i
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFs
dWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxl
LmNwcAppbmRleCBlNGMyYTBkOWE2MjI3NTg4NTYxYzNlYTgzZDZjZWZkYTIwNzViMWEzLi40OWEz
NGFlOTlkYmYwYmJlM2QzNTE5ZGZhMTIzM2JjYzhiYjA3ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcApAQCAtNjMsOSArNjMsOSBAQCBT
dHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpiYXNlUGFsZXR0ZSgpIGNvbnN0CiAKICAg
ICBzd2l0Y2ggKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLT50eXBlKSB7
CiAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpMaWdodDoKLSAgICAgICAgcmV0dXJu
ICJsaWdodCJfczsKKyAgICAgICAgcmV0dXJuICJsaWdodCJfc3RyOwogICAgIGNhc2UgRm9udFBh
bGV0dGVJbmRleDo6VHlwZTo6RGFyazoKLSAgICAgICAgcmV0dXJuICJkYXJrIl9zOworICAgICAg
ICByZXR1cm4gImRhcmsiX3N0cjsKICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6Oklu
dGVnZXI6CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxl
LT5iYXNlUGFsZXR0ZSgpLT5pbnRlZ2VyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5
ZnJhbWVzUnVsZS5jcHAKaW5kZXggYTE2ZTZjY2RiNzVlZmY4Y2FlNjk3Mzg4NWUzYWExNGFiODU1
NTQ3MC4uMGJkMTc0MGJhNWNjM2M2MzY2ZjgxZGY4YTY4NDZjYmM0ODk1NDMzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQg
Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVUZXh0KQogewog
ICAgIGlmIChDU1NTdHlsZVNoZWV0KiBwYXJlbnQgPSBwYXJlbnRTdHlsZVNoZWV0KCkpIHsKICAg
ICAgICAgaWYgKERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gcGFyZW50LT5vd25lckRvY3VtZW50
KCkpCi0gICAgICAgICAgICBvd25lckRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiQ1NTS2V5ZnJhbWVzUnVsZSAnaW5z
ZXJ0UnVsZScgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4gIFVzZSAnYXBwZW5kUnVsZScgaW5zdGVh
ZC4iX3MpOworICAgICAgICAgICAgb3duZXJEb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIkNTU0tleWZyYW1lc1J1bGUg
J2luc2VydFJ1bGUnIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuICBVc2UgJ2FwcGVuZFJ1bGUnIGlu
c3RlYWQuIl9zdHIpOwogICAgIH0KICAgICBhcHBlbmRSdWxlKHJ1bGVUZXh0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCmluZGV4IGQxZjZkMGE1MTVhNWRiOWRiNzUwY2JmMWUyZjc5
ZDRhOWYwZjJmNTQuLmQ5NGNmYThhNWIzMTlkZWU2NjEyZTc4MjFjYzkyOWJhMmVjN2E5NmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBTdHJpbmcgQ1NT
UGFnZVJ1bGU6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAgICAgIGlmICghcGFnZVNwZWNpZmlj
YXRpb24uaXNFbXB0eSgpICYmIHBhZ2VTcGVjaWZpY2F0aW9uICE9IHN0YXJBdG9tKCkpCiAgICAg
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiQHBhZ2UgIiwgcGFnZVNwZWNpZmljYXRpb24pOwog
ICAgIH0KLSAgICByZXR1cm4gIkBwYWdlIl9zOworICAgIHJldHVybiAiQHBhZ2UiX3N0cjsKIH0K
IAogdm9pZCBDU1NQYWdlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgc2VsZWN0
b3JUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGI0YmY5ZjM0YTg5
NTc3YThjMDc5MGNlODhmYThhNDRiOWM4MDZiOWYuLjFjOTdlZWFiNjQ2MjFlMTQ1ODgyZTFhZWVk
ODgzNWRkNDIwMGUzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTMx
Niw3ICszMTYsNyBAQCBFeGNlcHRpb25PcjxSZWY8Q1NTUnVsZUxpc3Q+PiBDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlc0ZvckJpbmRpbmdzKCkKIHsKICAgICBhdXRvIGNzc1J1bGVzID0gdGhpcy0+Y3Nz
UnVsZXMoKTsKICAgICBpZiAoIWNzc1J1bGVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U2VjdXJpdHlFcnJvciwgIk5vdCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmlnaW4gc3R5bGVz
aGVldCJfcyB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIk5v
dCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmlnaW4gc3R5bGVzaGVldCJfc3RyIH07CiAgICAg
cmV0dXJuIGNzc1J1bGVzLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5oCmluZGV4IGI0ZjNkODc4ZDc1YWFlN2MxM2M2YzViMzdmMTFjYTM3OTlmNjFkMzAu
LmZhYzA2NjEzNzY4NzhmOTljMGE5YTI4NWFlZmRiMjhlODVlNzM1NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuaApAQCAtMTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgQ1NTU3R5
bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0
IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mKTsKIAogICAgIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFN0cmluZyB0eXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gInRleHQvY3NzIl9zOyB9CisgICAgU3RyaW5nIHR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAidGV4dC9jc3MiX3N0cjsgfQogCiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJbmxpbmVTdHlsZXNoZWV0IHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXggMmIyNDMzZjcyNjEyMDNiNjZhOTVk
Yjc1YjI0OTUwYzdlMGZkOGFmMS4uMDNlMWNkNDM3ZjhlNDUzNGY3MWFjYjVjOGI1ODhjMzcwMmJj
ZWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAg
U3RyaW5nIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgU3RyaW5nQnVp
bGRlciByZXN1bHQ7CiAgICAgYXV0byBzZXBhcmF0b3IgPSBzZXBhcmF0b3JDU1NUZXh0KCk7CiAg
ICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKQotICAgICAgICByZXN1bHQuYXBwZW5kKHJl
c3VsdC5pc0VtcHR5KCkgPyAiIl9zIDogc2VwYXJhdG9yLCB2YWx1ZS5nZXQoKS5jc3NUZXh0KCkp
OworICAgICAgICByZXN1bHQuYXBwZW5kKHJlc3VsdC5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygp
IDogc2VwYXJhdG9yLCB2YWx1ZS5nZXQoKS5jc3NUZXh0KCkpOwogICAgIHJldHVybiByZXN1bHQu
dG9TdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggZWZmZDYwN2MzNDZm
OWJjZmJjOWMyODg5YmY4MzE2OTRkYTM0MDMwNS4uYzIwMzQ5YjA1NDU0MTI0MDc4NzNjM2VmMWM3
Mzg4MjQ5OThkNzY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0xMDIsMzIgKzEwMiwz
MiBAQCBSZWY8Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBmYQogICAgIH0KIAogICAgIC8vIFRoZXNlIHRlcm5h
cmllcyBtYXRjaCB0aGUgZGVmYXVsdCBzdHJpbmdzIGluc2lkZSB0aGUgRm9udEZhY2VEZXNjcmlw
dG9ycyBkaWN0aW9uYXJ5IGluc2lkZSBGb250RmFjZS5pZGwuCi0gICAgYXV0byBzZXRTdHlsZVJl
c3VsdCA9IHJlc3VsdC0+c2V0U3R5bGUoY29udGV4dCwgZGVzY3JpcHRvcnMuc3R5bGUuaXNFbXB0
eSgpID8gIm5vcm1hbCJfcyA6IGRlc2NyaXB0b3JzLnN0eWxlKTsKKyAgICBhdXRvIHNldFN0eWxl
UmVzdWx0ID0gcmVzdWx0LT5zZXRTdHlsZShjb250ZXh0LCBkZXNjcmlwdG9ycy5zdHlsZS5pc0Vt
cHR5KCkgPyAibm9ybWFsIl9zdHIgOiBkZXNjcmlwdG9ycy5zdHlsZSk7CiAgICAgaWYgKHNldFN0
eWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0RXJyb3JTdGF0
ZSgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBhdXRvIHNldFdlaWdodFJl
c3VsdCA9IHJlc3VsdC0+c2V0V2VpZ2h0KGNvbnRleHQsIGRlc2NyaXB0b3JzLndlaWdodC5pc0Vt
cHR5KCkgPyAibm9ybWFsIl9zIDogZGVzY3JpcHRvcnMud2VpZ2h0KTsKKyAgICBhdXRvIHNldFdl
aWdodFJlc3VsdCA9IHJlc3VsdC0+c2V0V2VpZ2h0KGNvbnRleHQsIGRlc2NyaXB0b3JzLndlaWdo
dC5pc0VtcHR5KCkgPyAibm9ybWFsIl9zdHIgOiBkZXNjcmlwdG9ycy53ZWlnaHQpOwogICAgIGlm
IChzZXRXZWlnaHRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVzdWx0LT5zZXRF
cnJvclN0YXRlKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIGF1dG8gc2V0
U3RyZXRjaFJlc3VsdCA9IHJlc3VsdC0+c2V0U3RyZXRjaChjb250ZXh0LCBkZXNjcmlwdG9ycy5z
dHJldGNoLmlzRW1wdHkoKSA/ICJub3JtYWwiX3MgOiBkZXNjcmlwdG9ycy5zdHJldGNoKTsKKyAg
ICBhdXRvIHNldFN0cmV0Y2hSZXN1bHQgPSByZXN1bHQtPnNldFN0cmV0Y2goY29udGV4dCwgZGVz
Y3JpcHRvcnMuc3RyZXRjaC5pc0VtcHR5KCkgPyAibm9ybWFsIl9zdHIgOiBkZXNjcmlwdG9ycy5z
dHJldGNoKTsKICAgICBpZiAoc2V0U3RyZXRjaFJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAg
ICAgICByZXN1bHQtPnNldEVycm9yU3RhdGUoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9Ci0gICAgYXV0byBzZXRVbmljb2RlUmFuZ2VSZXN1bHQgPSByZXN1bHQtPnNldFVuaWNvZGVS
YW5nZShjb250ZXh0LCBkZXNjcmlwdG9ycy51bmljb2RlUmFuZ2UuaXNFbXB0eSgpID8gIlUrMC0x
MEZGRkYiX3MgOiBkZXNjcmlwdG9ycy51bmljb2RlUmFuZ2UpOworICAgIGF1dG8gc2V0VW5pY29k
ZVJhbmdlUmVzdWx0ID0gcmVzdWx0LT5zZXRVbmljb2RlUmFuZ2UoY29udGV4dCwgZGVzY3JpcHRv
cnMudW5pY29kZVJhbmdlLmlzRW1wdHkoKSA/ICJVKzAtMTBGRkZGIl9zdHIgOiBkZXNjcmlwdG9y
cy51bmljb2RlUmFuZ2UpOwogICAgIGlmIChzZXRVbmljb2RlUmFuZ2VSZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKICAgICAgICAgcmVzdWx0LT5zZXRFcnJvclN0YXRlKCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQotICAgIGF1dG8gc2V0RmVhdHVyZVNldHRpbmdzUmVzdWx0ID0gcmVz
dWx0LT5zZXRGZWF0dXJlU2V0dGluZ3MoY29udGV4dCwgZGVzY3JpcHRvcnMuZmVhdHVyZVNldHRp
bmdzLmlzRW1wdHkoKSA/ICJub3JtYWwiX3MgOiBkZXNjcmlwdG9ycy5mZWF0dXJlU2V0dGluZ3Mp
OworICAgIGF1dG8gc2V0RmVhdHVyZVNldHRpbmdzUmVzdWx0ID0gcmVzdWx0LT5zZXRGZWF0dXJl
U2V0dGluZ3MoY29udGV4dCwgZGVzY3JpcHRvcnMuZmVhdHVyZVNldHRpbmdzLmlzRW1wdHkoKSA/
ICJub3JtYWwiX3N0ciA6IGRlc2NyaXB0b3JzLmZlYXR1cmVTZXR0aW5ncyk7CiAgICAgaWYgKHNl
dEZlYXR1cmVTZXR0aW5nc1Jlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICByZXN1bHQt
PnNldEVycm9yU3RhdGUoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgYXV0
byBzZXREaXNwbGF5UmVzdWx0ID0gcmVzdWx0LT5zZXREaXNwbGF5KGNvbnRleHQsIGRlc2NyaXB0
b3JzLmRpc3BsYXkuaXNFbXB0eSgpID8gImF1dG8iX3MgOiBkZXNjcmlwdG9ycy5kaXNwbGF5KTsK
KyAgICBhdXRvIHNldERpc3BsYXlSZXN1bHQgPSByZXN1bHQtPnNldERpc3BsYXkoY29udGV4dCwg
ZGVzY3JpcHRvcnMuZGlzcGxheS5pc0VtcHR5KCkgPyAiYXV0byJfc3RyIDogZGVzY3JpcHRvcnMu
ZGlzcGxheSk7CiAgICAgaWYgKHNldERpc3BsYXlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgcmVzdWx0LT5zZXRFcnJvclN0YXRlKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBA
IC0yNzEsNyArMjcxLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpmYW1pbHkoKSBjb25zdAogCiAgICAg
Y29uc3QgYXV0byYgZmFtaWxpZXMgPSBtX2JhY2tpbmctPmZhbWlsaWVzKCk7CiAgICAgaWYgKCFm
YW1pbGllcykKLSAgICAgICAgcmV0dXJuICJub3JtYWwiX3M7CisgICAgICAgIHJldHVybiAibm9y
bWFsIl9zdHI7CiAgICAgYXV0byBmYW1pbGllc1VucndhcHBlZCA9IGZhbWlsaWVzLnZhbHVlKCk7
CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTYzODEgVGhpcyBpcyBvbmx5IGhlcmUgYmVjYXVzZSBDU1NGb250RmFjZSBlcnJvbmVvdXNseSB1
c2VzIGEgbGlzdCBvZiB2YWx1ZXMgaW5zdGVhZCBvZiBhIHNpbmdsZSB2YWx1ZS4KICAgICAvLyBT
ZWUgY29uc3VtZUZvbnRGYW1pbHlEZXNjcmlwdG9yKCkgaW4gQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
LgpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cmluZyBGb250RmFjZTo6c3R5bGUoKSBjb25zdAogICAg
IGNvbnN0IGF1dG8mIHN0eWxlV3JhcHBlZCA9IG1fYmFja2luZy0+aXRhbGljKCk7CiAgICAgCiAg
ICAgaWYgKCFzdHlsZVdyYXBwZWQpCi0gICAgICAgIHJldHVybiAibm9ybWFsIl9zOworICAgICAg
ICByZXR1cm4gIm5vcm1hbCJfc3RyOwogICAgIGF1dG8gc3R5bGUgPSBzdHlsZVdyYXBwZWQudmFs
dWUoKTsKICAgICBhdXRvIG1pbmltdW0gPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250U3R5
bGVGcm9tU3R5bGVWYWx1ZShzdHlsZS5taW5pbXVtLCBGb250U3R5bGVBeGlzOjppdGFsKTsKICAg
ICBhdXRvIG1heGltdW0gPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250U3R5bGVGcm9tU3R5
bGVWYWx1ZShzdHlsZS5tYXhpbXVtLCBGb250U3R5bGVBeGlzOjppdGFsKTsKQEAgLTMyOSw3ICsz
MjksNyBAQCBTdHJpbmcgRm9udEZhY2U6OndlaWdodCgpIGNvbnN0CiAgICAgbV9iYWNraW5nLT51
cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgY29uc3QgYXV0byYgd2VpZ2h0V3JhcHBlZCA9IG1f
YmFja2luZy0+d2VpZ2h0KCk7CiAgICAgaWYgKCF3ZWlnaHRXcmFwcGVkKQotICAgICAgICByZXR1
cm4gIm5vcm1hbCJfczsKKyAgICAgICAgcmV0dXJuICJub3JtYWwiX3N0cjsKICAgICBhdXRvIHdl
aWdodCA9IHdlaWdodFdyYXBwZWQudmFsdWUoKTsKICAgICBhdXRvIG1pbmltdW0gPSBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpmb250V2VpZ2h0RnJvbVN0eWxlVmFsdWUod2VpZ2h0Lm1pbmltdW0p
OwogICAgIGF1dG8gbWF4aW11bSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmZvbnRXZWlnaHRG
cm9tU3R5bGVWYWx1ZSh3ZWlnaHQubWF4aW11bSk7CkBAIC0zNTIsNyArMzUyLDcgQEAgU3RyaW5n
IEZvbnRGYWNlOjpzdHJldGNoKCkgY29uc3QKICAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKICAgICBjb25zdCBhdXRvJiBzdHJldGNoV3JhcHBlZCA9IG1fYmFja2luZy0+c3Ry
ZXRjaCgpOwogICAgIGlmICghc3RyZXRjaFdyYXBwZWQpCi0gICAgICAgIHJldHVybiAibm9ybWFs
Il9zOworICAgICAgICByZXR1cm4gIm5vcm1hbCJfc3RyOwogICAgIGF1dG8gc3RyZXRjaCA9IHN0
cmV0Y2hXcmFwcGVkLnZhbHVlKCk7CiAgICAgYXV0byBtaW5pbXVtID0gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Zm9udFN0cmV0Y2hGcm9tU3R5bGVWYWx1ZShzdHJldGNoLm1pbmltdW0pOwogICAg
IGF1dG8gbWF4aW11bSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmZvbnRTdHJldGNoRnJvbVN0
eWxlVmFsdWUoc3RyZXRjaC5tYXhpbXVtKTsKQEAgLTM3OCw3ICszNzgsNyBAQCBTdHJpbmcgRm9u
dEZhY2U6OnVuaWNvZGVSYW5nZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiAiVSswLTEwRkZGRiI7
CiAgICAgYXV0byByYW5nZXMgPSByYW5nZXNXcmFwcGVkLnZhbHVlKCk7CiAgICAgaWYgKCFyYW5n
ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gIlUrMC0xMEZGRkYiX3M7CisgICAgICAgIHJldHVy
biAiVSswLTEwRkZGRiJfc3RyOwogICAgIGF1dG8gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgcmFuZ2UgOiByYW5nZXMpCiAgICAg
ICAgIHZhbHVlcy0+YXBwZW5kKENTU1VuaWNvZGVSYW5nZVZhbHVlOjpjcmVhdGUocmFuZ2UuZnJv
bSwgcmFuZ2UudG8pKTsKQEAgLTM5MCwxMCArMzkwLDEwIEBAIFN0cmluZyBGb250RmFjZTo6ZmVh
dHVyZVNldHRpbmdzKCkgY29uc3QKICAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQo
KTsKICAgICBjb25zdCBhdXRvJiBmZWF0dXJlU2V0dGluZ3NXcmFwcGVkID0gbV9iYWNraW5nLT5m
ZWF0dXJlU2V0dGluZ3MoKTsKICAgICBpZiAoIWZlYXR1cmVTZXR0aW5nc1dyYXBwZWQpCi0gICAg
ICAgIHJldHVybiAibm9ybWFsIl9zOworICAgICAgICByZXR1cm4gIm5vcm1hbCJfc3RyOwogICAg
IGF1dG8gZmVhdHVyZVNldHRpbmdzID0gZmVhdHVyZVNldHRpbmdzV3JhcHBlZC52YWx1ZSgpOwog
ICAgIGlmICghZmVhdHVyZVNldHRpbmdzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuICJub3JtYWwi
X3M7CisgICAgICAgIHJldHVybiAibm9ybWFsIl9zdHI7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgZmVhdHVyZSA6
IGZlYXR1cmVTZXR0aW5ncykKICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0ZvbnRGZWF0dXJlVmFs
dWU6OmNyZWF0ZShGb250VGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0dXJlLnZhbHVlKCkpKTsKQEAg
LTQwNSw3ICs0MDUsNyBAQCBTdHJpbmcgRm9udEZhY2U6OmRpc3BsYXkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKICAgICBjb25zdCBhdXRvJiBsb2FkaW5nQmVoYXZpb3JXcmFwcGVkID0gbV9iYWNraW5n
LT5sb2FkaW5nQmVoYXZpb3IoKTsKICAgICBpZiAoIWxvYWRpbmdCZWhhdmlvcldyYXBwZWQpCi0g
ICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICAgICAgcmV0dXJuICJhdXRvIl9zdHI7CiAgICAg
cmV0dXJuIGNvbnRleHQuY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUobG9hZGluZ0JlaGF2aW9y
V3JhcHBlZC52YWx1ZSgpKS0+Y3NzVGV4dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5j
cHAKaW5kZXggNDk3OTBkMzZhMWVhMGQ2ZDNjNzZhMGI2YjM2NmJlYjJiYThhYWNhYy4uMGEwNGUx
NGU5ZThkOTRhMDU1ZTBjZGFkZjdhMGQ5NDE2ZDc3MzhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcgTWVkaWFRdWVyeTo6c2VyaWFsaXplKCkg
Y29uc3QKIHsKICAgICBpZiAobV9pZ25vcmVkKSB7CiAgICAgICAgIC8vIElmIHF1ZXJ5IGlzIGlu
dmFsaWQsIHNlcmlhbGl6ZWQgdGV4dCBzaG91bGQgdHVybiBpbnRvICJub3QgYWxsIi4KLSAgICAg
ICAgcmV0dXJuICJub3QgYWxsIl9zOworICAgICAgICByZXR1cm4gIm5vdCBhbGwiX3N0cjsKICAg
ICB9CiAKICAgICBib29sIHNob3VsZE9taXRNZWRpYVR5cGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5k
ZXggMTU3Y2JiMDdkNjBiNmZkZWJkNzFkM2Y5OTlhNTA4M2YxYzM0NjRkMy4uOTU1ZjY4Y2ZjYzc5
NjMwZGIxZmQ5ZTQ2Mzc5Mjg2MGI0OGY5ZTkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIwNSwxMiArMjA1
LDEyIEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hCiBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lKQogewogICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKQotICAg
ICAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+Y3VzdG9tUHJvcGVydHlJc0ltcG9ydGFudChwcm9w
ZXJ0eU5hbWUpID8gImltcG9ydGFudCJfcyA6IGVtcHR5U3RyaW5nKCk7CisgICAgICAgIHJldHVy
biBtX3Byb3BlcnR5U2V0LT5jdXN0b21Qcm9wZXJ0eUlzSW1wb3J0YW50KHByb3BlcnR5TmFtZSkg
PyAiaW1wb3J0YW50Il9zdHIgOiBlbXB0eVN0cmluZygpOwogCiAgICAgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVy
dHlJRCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1fcHJvcGVy
dHlTZXQtPnByb3BlcnR5SXNJbXBvcnRhbnQocHJvcGVydHlJRCkgPyAiaW1wb3J0YW50Il9zIDog
ZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+cHJvcGVydHlJc0ltcG9y
dGFudChwcm9wZXJ0eUlEKSA/ICJpbXBvcnRhbnQiX3N0ciA6IGVtcHR5U3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5U2hvcnRo
YW5kKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAppbmRleCBmMDQxM2MxN2ZmZmEyODM4MTFmZTI1MTdmZGZkNjFiY2RjZjhiMjU5
Li4xNjExZWIyZjA1N2VjZjI3MThjMmRjOTk3ZTkzMjhkNjI3ZGEwOGQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTAwMCw3ICsxMDAwLDcgQEAgU3RyaW5nIFN0
eWxlUHJvcGVydGllczo6cGFnZUJyZWFrUHJvcGVydHlWYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJiBzaG8KICAgICBDU1NWYWx1ZUlEIHZhbHVlSWQgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCk7CiAgICAgc3dpdGNoICh2YWx1ZUlkKSB7CiAg
ICAgY2FzZSBDU1NWYWx1ZVBhZ2U6Ci0gICAgICAgIHJldHVybiAiYWx3YXlzIl9zOworICAgICAg
ICByZXR1cm4gImFsd2F5cyJfc3RyOwogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgogICAgIGNhc2Ug
Q1NTVmFsdWVBdm9pZDoKICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyLmNwcAppbmRleCA5ZGRlYzE0NzZiOTdiMzc5MTcwODk5MDBjMzIyZjNm
YzdiNGEzZjgzLi5mNzI5MjRlMTQ2ZTRiOTliYWE5OTQxZjlmYzc3NWVlMjNmZWUyMDYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAg
UmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVu
Y2VzKENTU1Byb3BlcnR5SUQgcHJvcEkKIAogICAgIGF1dG8mIG5hbWUgPSBkb3duY2FzdDxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSkubmFtZSgpOwogICAgIGF1dG8qIHJlZ2lzdGVyZWQg
PSBidWlsZGVyU3RhdGUuZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQoKS5nZXQobmFtZSk7Ci0gICAgYXV0byYgc3ludGF4ID0gcmVnaXN0ZXJlZCA/IHJlZ2lzdGVy
ZWQtPnN5bnRheCA6ICIqIl9zOworICAgIGF1dG8mIHN5bnRheCA9IHJlZ2lzdGVyZWQgPyByZWdp
c3RlcmVkLT5zeW50YXggOiAiKiJfc3RyOwogICAgIGF1dG8gcmVzb2x2ZWREYXRhID0gdmFsdWVX
aXRoUmVmZXJlbmNlcy5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKGJ1aWxkZXJTdGF0ZSk7CiAg
ICAgaWYgKCFyZXNvbHZlZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXggY2I1YTA4YWEz
ZWI3ZDZiOGM4MjU3ZGM4NDhkY2VjMTEzNDE5YzljZC4uZWRjZjczNzFhM2E5MTE5YzFiNmQ3NzI4
NjM0OGE2OTNiMzk0ZTEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9N
ZWRpYVF1ZXJ5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlh
UXVlcnlQYXJzZXIuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBNZWRpYVF1ZXJ5UGFyc2Vy
Ojpjb21taXRNZWRpYVF1ZXJ5KCkKIHsKICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IENvbnZvbHV0
ZWQgYW5kIGF3ZnVsLCBidXQgd2UgY2FuJ3QgY2hhbmdlIHRoZSBNZWRpYVF1ZXJ5U2V0IHlldCBi
ZWNhdXNlIG9mIHRoZQogICAgIC8vIG9sZCBwYXJzZXIuCi0gICAgc3RhdGljIGNvbnN0IE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gZGVmYXVsdE1lZGlhVHlwZSB7ICJhbGwiX3MgfTsKKyAgICBzdGF0
aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkZWZhdWx0TWVkaWFUeXBlIHsgImFsbCJf
c3RyIH07CiAgICAgTWVkaWFRdWVyeSBtZWRpYVF1ZXJ5IHsgbV9tZWRpYVF1ZXJ5RGF0YS5yZXN0
cmljdG9yKCksIG1fbWVkaWFRdWVyeURhdGEubWVkaWFUeXBlKCkudmFsdWVfb3IoZGVmYXVsdE1l
ZGlhVHlwZSksIFdURk1vdmUobV9tZWRpYVF1ZXJ5RGF0YS5leHByZXNzaW9ucygpKSB9OwogICAg
IG1fbWVkaWFRdWVyeURhdGEuY2xlYXIoKTsKICAgICBtX3F1ZXJ5U2V0LT5hZGRNZWRpYVF1ZXJ5
KFdURk1vdmUobWVkaWFRdWVyeSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NE
QVRBU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAppbmRl
eCA3NTRmNDgyODhmZTE5NmEzZDI4MmEyOTZkODc4ZDIzMzRkMzk3ODRiLi45M2RiNWNlZjIwNzk1
NTFiMDg5ZDAyN2NhM2E3ZTJlNWFkYjgzZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ0RBVEFTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9u
LmNwcApAQCAtNDEsNyArNDEsNyBAQCBSZWY8Q0RBVEFTZWN0aW9uPiBDREFUQVNlY3Rpb246OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKIAogU3RyaW5nIENE
QVRBU2VjdGlvbjo6bm9kZU5hbWUoKSBjb25zdAogewotICAgIHJldHVybiAiI2NkYXRhLXNlY3Rp
b24iX3M7CisgICAgcmV0dXJuICIjY2RhdGEtc2VjdGlvbiJfc3RyOwogfQogCiBOb2RlOjpOb2Rl
VHlwZSBDREFUQVNlY3Rpb246Om5vZGVUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcApp
bmRleCA4YTNlMzJmNzczOTM0OTFmMjUzMjIzMDdkZDE2NDhmZWMxNmViZjliLi4yMTIzOWQwZmQ3
MTlmMzNmYmMyNjExZjgzMTVlMDY0YjJkZWExYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIFJlZjxDb21tZW50PiBDb21tZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAKIFN0cmluZyBDb21tZW50Ojpub2RlTmFtZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuICIjY29tbWVudCJfczsKKyAgICByZXR1cm4gIiNjb21tZW50
Il9zdHI7CiB9CiAKIE5vZGU6Ok5vZGVUeXBlIENvbW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IDU4NDM1YmMzZmNhZDNj
ZGE3ODk3MGEyMTFlNzYyYmZjY2YwMTJmNzUuLjZlMGFhNTMzNWRlMDA5N2NjOWM0NTVjZDhkMzUx
MzBjNzliMjQ4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApA
QCAtMTI3LDcgKzEyNyw3IEBAIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpj
cmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBhdXRvIGRvY3Vt
ZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9kb2N1bWVudC5zZXR0aW5ncygp
LCBVUkwoKSwgeyB9KTsKICAgICBkb2N1bWVudC0+b3BlbigpOwotICAgIGRvY3VtZW50LT53cml0
ZShudWxscHRyLCB7ICI8IWRvY3R5cGUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PC9i
b2R5PjwvaHRtbD4iX3MgfSk7CisgICAgZG9jdW1lbnQtPndyaXRlKG51bGxwdHIsIHsgIjwhZG9j
dHlwZSBodG1sPjxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiJfc3RyIH0p
OwogICAgIGlmICghdGl0bGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byB0aXRsZUVsZW1lbnQg
PSBIVE1MVGl0bGVFbGVtZW50OjpjcmVhdGUodGl0bGVUYWcsIGRvY3VtZW50KTsKICAgICAgICAg
dGl0bGVFbGVtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUodGl0bGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk1OGEwODU0Y2M0OGFlZTA0ODI1NDZlNzcz
OWI1NTA1ZjhjMGYyODEuLjc4YzZlOTMxOTc3MzJlOWNlNWUwZDcwNDgyN2YwMjc5YjQ2NDM4OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIERvY3VtZW50OjpE
b2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJM
JiB1cmwsIERvY3VtCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgLCBtX2FwcGx5UGVuZGluZ1hTTFRy
YW5zZm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1z
VGltZXJGaXJlZCkKICNlbmRpZgotICAgICwgbV94bWxWZXJzaW9uKCIxLjAiX3MpCisgICAgLCBt
X3htbFZlcnNpb24oIjEuMCJfc3RyKQogICAgICwgbV9jb25zdGFudFByb3BlcnR5TWFwKG1ha2VV
bmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQogICAgICwgbV9kb2N1bWVudENsYXNz
ZXMoZG9jdW1lbnRDbGFzc2VzKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTE1NTAs
MTMgKzE1NTAsMTMgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNv
bnRlbnQpCiBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIHsKICAg
ICBpZiAoaXNYSFRNTERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAiYXBwbGljYXRpb24veGh0
bWwreG1sIl9zOworICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3hodG1sK3htbCJfc3RyOwog
ICAgIGlmIChpc1NWR0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCJf
czsKKyAgICAgICAgcmV0dXJuICJpbWFnZS9zdmcreG1sIl9zdHI7CiAgICAgaWYgKHhtbFN0YW5k
YWxvbmUoKSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L3htbCJfczsKKyAgICAgICAgcmV0dXJuICJ0
ZXh0L3htbCJfc3RyOwogICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4g
InRleHQvaHRtbCJfczsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiX3N0cjsKICAgICBpZiAo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IHRoaXMtPmxvYWRlcigpKQogICAgICAgICByZXR1cm4g
bG9hZGVyLT5yZXNwb25zZU1JTUVUeXBlKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMTU3
OSw3ICsxNTc5LDcgQEAgU3RyaW5nIERvY3VtZW50Ojpjb250ZW50VHlwZSgpIGNvbnN0CiAgICAg
aWYgKCFtaW1lVHlwZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG1pbWVUeXBlOwogCi0gICAg
cmV0dXJuICJhcHBsaWNhdGlvbi94bWwiX3M7CisgICAgcmV0dXJuICJhcHBsaWNhdGlvbi94bWwi
X3N0cjsKIH0KIAogUmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludChp
bnQgeCwgaW50IHkpCkBAIC0xOTA1LDcgKzE5MDUsNyBAQCB2b2lkIERvY3VtZW50Ojpmb3JFYWNo
TWVkaWFFbGVtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoSFRNTE1lZGlhRWxlbWVudCYpPiYgZnVu
YwogCiBTdHJpbmcgRG9jdW1lbnQ6Om5vZGVOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiNk
b2N1bWVudCJfczsKKyAgICByZXR1cm4gIiNkb2N1bWVudCJfc3RyOwogfQogCiBOb2RlOjpOb2Rl
VHlwZSBEb2N1bWVudDo6bm9kZVR5cGUoKSBjb25zdApAQCAtMzM4OCw3ICszMzg4LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlbG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQs
IEZpeGVkVmVjdG9yPFN0cmluZz4KICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHN0cmluZ3MpCiAg
ICAgICAgIHRleHQuYXBwZW5kKFdURk1vdmUoc3RyaW5nKSk7CiAKLSAgICB0ZXh0LmFwcGVuZCgi
XG4iX3MpOworICAgIHRleHQuYXBwZW5kKCJcbiJfc3RyKTsKICAgICByZXR1cm4gd3JpdGUoZW50
cnlEb2N1bWVudCwgV1RGTW92ZSh0ZXh0KSk7CiB9CiAKQEAgLTYwMDAsNyArNjAwMCw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoSW5oZXJpdGVkQm9vbCB2YWx1ZSkKIAogU3RyaW5n
IERvY3VtZW50OjpkZXNpZ25Nb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5EZXNpZ25Nb2Rl
KCkgPyAib24iX3MgOiAib2ZmIl9zOworICAgIHJldHVybiBpbkRlc2lnbk1vZGUoKSA/ICJvbiJf
c3RyIDogIm9mZiJfc3RyOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXREZXNpZ25Nb2RlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRG
cmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5k
ZXggOWNlMWViZDFhZWVkY2IzMzI2ZWM0MDZlMjRjZmQ2NGFjYjVlZDc3Zi4uY2Q1NTA5MjIyYmVm
MGFiYzVmZTM5ZDQzOTA0YmIwOTNiYjIyYWJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEZyYWdtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gRG9j
dW1lbnRGcmFnbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIAogU3RyaW5nIERvY3Vt
ZW50RnJhZ21lbnQ6Om5vZGVOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiNkb2N1bWVudC1m
cmFnbWVudCJfczsKKyAgICByZXR1cm4gIiNkb2N1bWVudC1mcmFnbWVudCJfc3RyOwogfQogCiBO
b2RlOjpOb2RlVHlwZSBEb2N1bWVudEZyYWdtZW50Ojpub2RlVHlwZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnREaXJlY3RpdmVQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0ZyYWdtZW50RGlyZWN0aXZlUGFyc2VyLmNwcAppbmRleCAyYTQ0NDJh
Y2RjZDhmYTdlZTFjOTQyZjI4ZTBjZjM0NGE3ZjdkYWMzLi42MDNlNjRkYTZkZGUwYmZhY2Q5Y2M3
ZWMwZjQ1YWFkNTMwMGFkYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21l
bnREaXJlY3RpdmVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudERp
cmVjdGl2ZVBhcnNlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBGcmFnbWVudERpcmVjdGl2
ZVBhcnNlcjo6cGFyc2VGcmFnbWVudERpcmVjdGl2ZShTdHJpbmdWaWV3IGZyYWdtZW50RGlyZWN0
aXYKICAgICBMT0dfV0lUSF9TVFJFQU0oVGV4dEZyYWdtZW50LCBzdHJlYW0gPDwgIiBwYXJzZUZy
YWdtZW50RGlyZWN0aXZlOiAiKTsKICAgICAKICAgICBWZWN0b3I8UGFyc2VkVGV4dERpcmVjdGl2
ZT4gcGFyc2VkVGV4dERpcmVjdGl2ZXM7Ci0gICAgU3RyaW5nIHRleHREaXJlY3RpdmVQcmVmaXgg
PSAidGV4dD0iX3M7CisgICAgU3RyaW5nIHRleHREaXJlY3RpdmVQcmVmaXggPSAidGV4dD0iX3N0
cjsKIAogICAgIGF1dG8gZGlyZWN0aXZlcyA9IGZyYWdtZW50RGlyZWN0aXZlLnNwbGl0KCcmJyk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggNjhhNmZiYjM1ODQ0MTQ0MWEyYjExYjU4ZmM2ZjE5
NDI5ZjFmMGVlYS4uY2RmOTgyYzMzZDViZDM2MmRjZGZkMGE1MTE4Y2JhMThjNzQ3NGU1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIFJlZlB0cjxUZXh0PiBUZXh0OjpyZXBs
YWNlV2hvbGVUZXh0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKIAogU3RyaW5nIFRleHQ6Om5vZGVO
YW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiN0ZXh0Il9zOworICAgIHJldHVybiAiI3RleHQi
X3N0cjsKIH0KIAogTm9kZTo6Tm9kZVR5cGUgVGV4dDo6bm9kZVR5cGUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0RW5jb2Rlci5jcHAKaW5kZXggYWUyMzQ3NTI3OTI3MjM3YzEzZTBkZjYwN2MwNTE1
NmQ1OTlkYzE5Mi4uZjc3NGM2MmRjZWM5MTNkNWY1ZGFkYjAwZmIwYWYwZjFiOTZjOWYyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU3RyaW5nIFRleHRFbmNvZGVyOjplbmNvZGluZygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuICJ1dGYtOCJfczsKKyAgICByZXR1cm4gInV0Zi04Il9zdHI7CiB9CiAKIFJlZlB0cjxV
aW50OEFycmF5PiBUZXh0RW5jb2Rlcjo6ZW5jb2RlKFN0cmluZyYmIGlucHV0KSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAKaW5kZXggOGE1
NGNhMDUzNTRhOTMwMjc1OWFiNzViYTNhMTc1NWY3YjlmNDU1ZC4uMmFkZDU2Zjc5ZTg1MzhjNjA1
OWFkZmJmYWMwYTI4NTViODgzODlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VD
aGVja2FibGVJbnB1dFR5cGUuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiBGb3JtQ29udHJvbFN0YXRlIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnNhdmVG
b3JtQ29udHJvbFN0YXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICBy
ZXR1cm4geyBlbGVtZW50KCktPmNoZWNrZWQoKSA/ICJvbiJfcyA6ICJvZmYiX3MgfTsKKyAgICBy
ZXR1cm4geyBlbGVtZW50KCktPmNoZWNrZWQoKSA/ICJvbiJfc3RyIDogIm9mZiJfc3RyIH07CiB9
CiAKIHZvaWQgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUo
Y29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMzc1NTI4MWQxODJlM2FhYmUxOGM3
OWQ5ZDM1MTM2OWFjNzM1NGU4Mi4uMWUxNGJlZmI0YjQ5MDE4YzA2NzcwMzNmNzg4YmVhZjgzM2Y2
ZjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcApAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
Ojp1cGRhdGVJbm5lclRleHRWYWx1ZSgpCiAgICAgICAgIGF1dG8gZGlzcGxheVZhbHVlID0gdmlz
aWJsZVZhbHVlKCk7CiAgICAgICAgIGlmIChkaXNwbGF5VmFsdWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAvLyBOZWVkIHRvIHB1dCBzb21ldGhpbmcgdG8ga2VlcCB0ZXh0IGJhc2VsaW5lLgot
ICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gIiAiX3M7CisgICAgICAgICAgICBkaXNwbGF5VmFs
dWUgPSAiICJfc3RyOwogICAgICAgICB9CiAgICAgICAgIGRvd25jYXN0PEhUTUxFbGVtZW50Pigq
bm9kZSkuc2V0SW5uZXJUZXh0KGRpc3BsYXlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMTcwZmJjNTE0MDE2YTQ0MTQ4ODQw
OTYwNWM5OGQ3MjRlNWI1NmZmZC4uNmY5NzZlODgyMDUzNGQ2ODQ1OTI2YWM5YWE0MGUzNjc3ZTNj
M2YyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTExOSw3ICsx
MTksNyBAQCBib29sIENvbG9ySW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QKIAog
U3RyaW5nIENvbG9ySW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gIiMwMDAwMDAiX3M7CisgICAgcmV0dXJuICIjMDAwMDAwIl9zdHI7CiB9CiAKIFN0cmluZyBD
b2xvcklucHV0VHlwZTo6c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCmluZGV4IDZmNDVlMWNjNGZiYjI2
Y2Q5YzdjMmRmMTYzMmI2NTJiZjE2NjVmODEuLmQzNWM1YTFlNjc1ODQwNzMwMTUxM2JmMDdmNzVj
OGZiZGU3MWQ2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCkBAIC04NCw3ICs4
NCw3IEBAIHN0YXRpYyBhdXRvIGNyZWF0ZUZpbGVFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIEJs
b2ImIGJsb2IsIGNvbnN0IFN0cmluZyYgZmlsZW5hCiAgICAgYXV0byB1c3ZOYW1lID0gcmVwbGFj
ZVVucGFpcmVkU3Vycm9nYXRlc1dpdGhSZXBsYWNlbWVudENoYXJhY3RlcihTdHJpbmcobmFtZSkp
OwogCiAgICAgaWYgKCFibG9iLmlzRmlsZSgpKQotICAgICAgICByZXR1cm4geyB1c3ZOYW1lLCBG
aWxlOjpjcmVhdGUoYmxvYi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IsIGZpbGVuYW1l
LmlzTnVsbCgpID8gImJsb2IiX3MgOiBmaWxlbmFtZSkgfTsKKyAgICAgICAgcmV0dXJuIHsgdXN2
TmFtZSwgRmlsZTo6Y3JlYXRlKGJsb2Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iLCBm
aWxlbmFtZS5pc051bGwoKSA/ICJibG9iIl9zdHIgOiBmaWxlbmFtZSkgfTsKIAogICAgIGlmICgh
ZmlsZW5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IHVzdk5hbWUsIEZpbGU6OmNyZWF0
ZShibG9iLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZG93bmNhc3Q8RmlsZT4oYmxvYiksIGZp
bGVuYW1lKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKaW5kZXggMDBjZjAy
OTlkNzQ5Nzc3MjEyMGRkZjIzNTg4MTU4ZjBhYWJjZTgyNC4uMjJlMTc3NWM2NDYyZDZhZmM3OTZi
ZTcyODZiOGYzNmViZWI4ZTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3Bw
CkBAIC0xMDEsNyArMTAxLDcgQEAgU3RyaW5nIERhdGVJbnB1dFR5cGU6OmZvcm1hdERhdGVUaW1l
RmllbGRzU3RhdGUoY29uc3QgRGF0ZVRpbWVGaWVsZHNTdGF0ZSYgc3RhdGUKIHZvaWQgRGF0ZUlu
cHV0VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRpdEVsZW1lbnQ6OkxheW91
dFBhcmFtZXRlcnMmIGxheW91dFBhcmFtZXRlcnMsIGNvbnN0IERhdGVDb21wb25lbnRzJikgY29u
c3QKIHsKICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1l
dGVycy5sb2NhbGUuZGF0ZUZvcm1hdCgpOwotICAgIGxheW91dFBhcmFtZXRlcnMuZmFsbGJhY2tE
YXRlVGltZUZvcm1hdCA9ICJ5eXl5LU1NLWRkIl9zOworICAgIGxheW91dFBhcmFtZXRlcnMuZmFs
bGJhY2tEYXRlVGltZUZvcm1hdCA9ICJ5eXl5LU1NLWRkIl9zdHI7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5
cGUuY3BwCmluZGV4IGFlYjRhMTJkMTk1YmZjMDgwNGEwODE1M2FjOWI4ZjRjMTg0ODMxOGQuLjli
Yzc4NTRjMTRjMGU4YzRmN2M2MTczMDhmZjVmYjgxYzE2MTc1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcApAQCAtMTMxLDEwICsxMzEsMTAg
QEAgdm9pZCBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMoRGF0
ZVRpbWVFZGl0RWxlbWVudDo6TGF5b3V0UGEKIAogICAgIGlmIChsYXlvdXRQYXJhbWV0ZXJzLnNo
b3VsZEhhdmVNaWxsaXNlY29uZEZpZWxkIHx8IHNob3VsZEhhdmVTZWNvbmRGaWVsZChkYXRlKSkg
ewogICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1l
dGVycy5sb2NhbGUuZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcygpOwotICAgICAgICBsYXlvdXRQ
YXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAieXl5eS1NTS1kZCdUJ0hIOm1tOnNz
Il9zOworICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAi
eXl5eS1NTS1kZCdUJ0hIOm1tOnNzIl9zdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbGF5b3V0
UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxlLmRhdGVU
aW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKTsKLSAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxs
YmFja0RhdGVUaW1lRm9ybWF0ID0gInl5eXktTU0tZGQnVCdISDptbSJfczsKKyAgICAgICAgbGF5
b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gInl5eXktTU0tZGQnVCdISDpt
bSJfc3RyOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCAx
YjM2ZDViMzZmMDAxYWQwN2U5ZTZhYTAyODY4MTYyNzIyNDY0ZDMwLi41YzAxNzdmOGEzZDZhNmFm
NTE2NjlmMWE4ZDFlZjlhZDhiZGY1ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cApAQCAtNTcyLDE1ICs1NzIsMTUgQEAgU3RyaW5nIEhUTUxFbGVtZW50Ojpjb250ZW50RWRpdGFi
bGUoKSBjb25zdAogewogICAgIHN3aXRjaCAoY29udGVudEVkaXRhYmxlVHlwZSgqdGhpcykpIHsK
ICAgICBjYXNlIENvbnRlbnRFZGl0YWJsZVR5cGU6OkluaGVyaXQ6Ci0gICAgICAgIHJldHVybiAi
aW5oZXJpdCJfczsKKyAgICAgICAgcmV0dXJuICJpbmhlcml0Il9zdHI7CiAgICAgY2FzZSBDb250
ZW50RWRpdGFibGVUeXBlOjpUcnVlOgotICAgICAgICByZXR1cm4gInRydWUiX3M7CisgICAgICAg
IHJldHVybiAidHJ1ZSJfc3RyOwogICAgIGNhc2UgQ29udGVudEVkaXRhYmxlVHlwZTo6RmFsc2U6
Ci0gICAgICAgIHJldHVybiAiZmFsc2UiX3M7CisgICAgICAgIHJldHVybiAiZmFsc2UiX3N0cjsK
ICAgICBjYXNlIENvbnRlbnRFZGl0YWJsZVR5cGU6OlBsYWludGV4dE9ubHk6Ci0gICAgICAgIHJl
dHVybiAicGxhaW50ZXh0LW9ubHkiX3M7CisgICAgICAgIHJldHVybiAicGxhaW50ZXh0LW9ubHki
X3N0cjsKICAgICB9Ci0gICAgcmV0dXJuICJpbmhlcml0Il9zOworICAgIHJldHVybiAiaW5oZXJp
dCJfc3RyOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdHJ1ZU5hbWUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNzk4ZmU4NmJjNGYzMjAyNjcx
Y2QyZDcxNDY2MDAwYjZlYmFiYjZiZi4uNDZjZTY2YzI3OGUyNzU2ZDUwOTgyNGE1MjkyOThmYjVl
YTMxOWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC02
NTUsMTMgKzY1NSwxMyBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmcoKSBjb25z
dAogewogICAgIHN3aXRjaCAoZGVjb2RpbmdNb2RlKCkpIHsKICAgICBjYXNlIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXM6Ci0gICAgICAgIHJldHVybiAic3luYyJfczsKKyAgICAgICAgcmV0dXJu
ICJzeW5jIl9zdHI7CiAgICAgY2FzZSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czoKLSAgICAg
ICAgcmV0dXJuICJhc3luYyJfczsKKyAgICAgICAgcmV0dXJuICJhc3luYyJfc3RyOwogICAgIGNh
c2UgRGVjb2RpbmdNb2RlOjpBdXRvOgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJu
ICJhdXRvIl9zOworICAgIHJldHVybiAiYXV0byJfc3RyOwogfQogCiBEZWNvZGluZ01vZGUgSFRN
TEltYWdlRWxlbWVudDo6ZGVjb2RpbmdNb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDJmMTBjZWQ4NDEzMWVkN2U5ZGQxODdhMzQw
MWNmZGNkZWM0YmE0M2UuLmViZTc0MzA3NWQxMTU3YmNhM2IwY2EyYTNkNmRlMjM0MzMzMjBmMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzk1
LDcgKzM5NSw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWVDb21tb24oY29u
c3QgU3RyaW5nJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCCiAgICAgLy8gQ29kZSBlbHNld2hl
cmUgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3MgYWRkZWQgYnkgdGhlIHVzZXIgdmlhIHRoZSBrZXli
b2FyZCBvciBwYXN0aW5nLgogICAgIC8vIFdlIG5vcm1hbGl6ZSBsaW5lIGVuZGluZ3MgY29taW5n
IGZyb20gSmF2YVNjcmlwdCBoZXJlLgogICAgIFN0cmluZyBub3JtYWxpemVkVmFsdWUgPSBuZXdW
YWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuZXdWYWx1ZTsKLSAgICBub3JtYWxpemVk
VmFsdWUucmVwbGFjZSgiXHJcbiIsICJcbiIpOworICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNl
KCJcclxuIl9zdHIsICJcbiJfc3RyKTsKICAgICBub3JtYWxpemVkVmFsdWUucmVwbGFjZSgnXHIn
LCAnXG4nKTsKIAogICAgIC8vIFJldHVybiBlYXJseSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8g
bW92ZSB0aGUgY2FyZXQgb3IgdHJpZ2dlciBvdGhlciBzaWRlIGVmZmVjdHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggNzk0
MjcwZGZjYTkyNThmYmQ2MDY1MDkzMTI0MTExNmE4OTY4ZDk0My4uNGYxMTU2MjJkMjY3ZjUxMTlh
OGE4ODM0MWE0NzEwNmU0MjJhODEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTc5OCw3ICs3OTgsNyBAQCBTdHJpbmcg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRhKCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICB9KCk7CiAKLSAgICByZXR1
cm4gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/ICJsdHIiX3MgOiAicnRsIl9zOwor
ICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciJfc3RyIDog
InJ0bCJfc3RyOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0TWF4TGVuZ3RoKGludCBtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJ
bnB1dFR5cGUuY3BwCmluZGV4IDE5ODNjNDA5OThmMDY1N2IxN2QxZDgwZGViMjgwYmQ2MmU3NDU4
MTEuLmRlZmZlY2E5N2U3NjgyNTAwZjAyYjk5Y2VjZDQ1MDY0NzNkYmQ4MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgU3RyaW5nIE1v
bnRoSW5wdXRUeXBlOjpmb3JtYXREYXRlVGltZUZpZWxkc1N0YXRlKGNvbnN0IERhdGVUaW1lRmll
bGRzU3RhdGUmIHN0YXQKIHZvaWQgTW9udGhJbnB1dFR5cGU6OnNldHVwTGF5b3V0UGFyYW1ldGVy
cyhEYXRlVGltZUVkaXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJzJiBsYXlvdXRQYXJhbWV0ZXJz
LCBjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNvbnN0CiB7CiAgICAgbGF5b3V0UGFyYW1ldGVycy5k
YXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxlLnNob3J0TW9udGhGb3JtYXQo
KTsKLSAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAieXl5eS1N
TSJfczsKKyAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAieXl5
eS1NTSJfc3RyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lSW5wdXRUeXBlLmNwcAppbmRleCBiMzg4MGU5MjI4MzI1YTY1MGQ1Mjg5YTMwNTI3ODg3YmQ2
MTg1YzI2Li5mZjI4MjNlYjU4OTI0YTlkMGZkYTEwMzk1YTY4ZmQ4NzAzOGFhZDNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTEzNCwxMCArMTM0LDEwIEBAIHZvaWQg
VGltZUlucHV0VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRpdEVsZW1lbnQ6
OkxheW91dFBhcmFtZXRlcnMmCiAKICAgICBpZiAobGF5b3V0UGFyYW1ldGVycy5zaG91bGRIYXZl
TWlsbGlzZWNvbmRGaWVsZCB8fCBzaG91bGRIYXZlU2Vjb25kRmllbGQoZGF0ZSkpIHsKICAgICAg
ICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9j
YWxlLnRpbWVGb3JtYXQoKTsKLSAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVU
aW1lRm9ybWF0ID0gIkhIOm1tOnNzIl9zOworICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxi
YWNrRGF0ZVRpbWVGb3JtYXQgPSAiSEg6bW06c3MiX3N0cjsKICAgICB9IGVsc2UgewogICAgICAg
ICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1ldGVycy5sb2Nh
bGUuc2hvcnRUaW1lRm9ybWF0KCk7Ci0gICAgICAgIGxheW91dFBhcmFtZXRlcnMuZmFsbGJhY2tE
YXRlVGltZUZvcm1hdCA9ICJISDptbSJfczsKKyAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxs
YmFja0RhdGVUaW1lRm9ybWF0ID0gIkhIOm1tIl9zdHI7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAppbmRleCBlNGUzMGE5YjYwNGVmMWE4NGQ3NzUy
YmJkOGIzNzA4NDUyYTFlMDhmLi42ZWI4NzY4NDgzMmZkNGYzN2NlYjJmYTg0ZGExYzYzZWRhMTVj
MWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgU3RyaW5nIFVSTERlY29tcG9zaXRpb246OnByb3RvY29sKCkgY29uc3QKIHsKICAg
ICBhdXRvIGZ1bGxVUkwgPSB0aGlzLT5mdWxsVVJMKCk7CiAgICAgaWYgKFdURjo6cHJvdG9jb2xJ
c0phdmFTY3JpcHQoZnVsbFVSTC5zdHJpbmcoKSkpCi0gICAgICAgIHJldHVybiAiamF2YXNjcmlw
dDoiX3M7CisgICAgICAgIHJldHVybiAiamF2YXNjcmlwdDoiX3N0cjsKICAgICByZXR1cm4gbWFr
ZVN0cmluZyhmdWxsVVJMLnByb3RvY29sKCksICc6Jyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggOWQ2YTZjY2FkZTBiNGQ1
ZWE0MDAyYjUyMmNmZmJkNDEzZjA1NmUxZS4uMDE3MThkNTczYTE5YTEwMjFhNzljM2E4ZTY2YTJi
NjQwMTVmNTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5jcHAKQEAgLTM1NCw4ICszNTQsOCBAQCBTdHJpbmcgcGFyc2VDT1JTU2V0dGluZ3NB
dHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAgICAgaWYgKHZhbHVlLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UodmFsdWUsICJ1c2UtY3JlZGVudGlhbHMiKSkKLSAgICAgICAgcmV0dXJuICJ1c2UtY3JlZGVu
dGlhbHMiX3M7Ci0gICAgcmV0dXJuICJhbm9ueW1vdXMiX3M7CisgICAgICAgIHJldHVybiAidXNl
LWNyZWRlbnRpYWxzIl9zdHI7CisgICAgcmV0dXJuICJhbm9ueW1vdXMiX3N0cjsKIH0KIAogLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2VtYW50aWNzLmh0bWwjYXR0
ci1tZXRhLWh0dHAtZXF1aXYtcmVmcmVzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggMjg5NjI4YWVhODk1YmIyOGNkMDYzMjY1
YjVlNDViNjUzYTUwNThmNS4uNDU3MjBlZTU5NGI5NzA4OTRkZmM4ZjI3ZWEzZGU2ODU4ZDBlNDQ3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2Fu
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwCkBAIC04MiwxMyArODIsMTMgQEAgU3RyaW5nIFRva2VuUHJlbG9hZFNjYW5uZXI6Omlu
aXRpYXRvckZvcihUYWdJZCB0YWdJZCkKICAgICBzd2l0Y2ggKHRhZ0lkKSB7CiAgICAgY2FzZSBU
YWdJZDo6U291cmNlOgogICAgIGNhc2UgVGFnSWQ6OkltZzoKLSAgICAgICAgcmV0dXJuICJpbWci
X3M7CisgICAgICAgIHJldHVybiAiaW1nIl9zdHI7CiAgICAgY2FzZSBUYWdJZDo6SW5wdXQ6Ci0g
ICAgICAgIHJldHVybiAiaW5wdXQiX3M7CisgICAgICAgIHJldHVybiAiaW5wdXQiX3N0cjsKICAg
ICBjYXNlIFRhZ0lkOjpMaW5rOgotICAgICAgICByZXR1cm4gImxpbmsiX3M7CisgICAgICAgIHJl
dHVybiAibGluayJfc3RyOwogICAgIGNhc2UgVGFnSWQ6OlNjcmlwdDoKLSAgICAgICAgcmV0dXJu
ICJzY3JpcHQiX3M7CisgICAgICAgIHJldHVybiAic2NyaXB0Il9zdHI7CiAgICAgY2FzZSBUYWdJ
ZDo6VW5rbm93bjoKICAgICBjYXNlIFRhZ0lkOjpTdHlsZToKICAgICBjYXNlIFRhZ0lkOjpCYXNl
OgpAQCAtOTYsMTAgKzk2LDEwIEBAIFN0cmluZyBUb2tlblByZWxvYWRTY2FubmVyOjppbml0aWF0
b3JGb3IoVGFnSWQgdGFnSWQpCiAgICAgY2FzZSBUYWdJZDo6TWV0YToKICAgICBjYXNlIFRhZ0lk
OjpQaWN0dXJlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICJ1bmtub3duIl9zOworICAgICAgICByZXR1cm4gInVua25vd24iX3N0cjsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuICJ1bmtub3duIl9zOworICAgIHJldHVy
biAidW5rbm93biJfc3RyOwogfQogCiBjbGFzcyBUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRh
Z1NjYW5uZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA0YmE1
MTkxZTZiM2U0MDk4NzljMjE5YzE2NmE4M2ZlNzEyYTM1ODdhLi5lMThhNTRjN2U3MWI3MGQ4NGE3
NWM5OWU2ODViNTZiODhkMzc2NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcApAQCAtNTM4LDkgKzUzOCw5IEBAIHZvaWQgU2VjdXJpdHlPcmlnaW46OnNldEVuZm9yY2Vz
RmlsZVBhdGhTZXBhcmF0aW9uKCkKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIGlmIChpc1VuaXF1ZSgpKQotICAgICAgICByZXR1cm4gIm51bGwiX3M7Cisg
ICAgICAgIHJldHVybiAibnVsbCJfc3RyOwogICAgIGlmIChtX2RhdGEucHJvdG9jb2wgPT0gImZp
bGUiICYmIG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24pCi0gICAgICAgIHJldHVybiAibnVs
bCJfczsKKyAgICAgICAgcmV0dXJuICJudWxsIl9zdHI7CiAgICAgcmV0dXJuIHRvUmF3U3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRl
eCAyZDM4NmRiMWZmM2M2MmNhZmE3OTllNTgyZjdlNWMwMjViZjBkYzNjLi45MTg5ODM3ZjRmZjky
OGFjMzk5NmRkOWU2MjlhOTYxNzI4NmZkYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IFN0cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAo
cHJvdG9jb2wgPT0gImZpbGUiKQotICAgICAgICByZXR1cm4gImZpbGU6Ly8iX3M7CisgICAgICAg
IHJldHVybiAiZmlsZTovLyJfc3RyOwogCiAgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSAmJiBo
b3N0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTgxLDcgKzgxLDcgQEAgU3Ry
aW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3QKICAgICAv
LyBOb3cgdGhhdCB3ZSd2ZSBmaXhlZCB0aGF0IGJ1Zywgd2UgcHJvZHVjZSB0aGlzIHN0cmluZyBm
b3IgY29tcGF0aWJpbGl0eQogICAgIC8vIHdpdGggZXhpc3RpbmcgcGVyc2lzdGVudCBzdGF0ZS4K
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShwcm90b2NvbCwgImZpbGUiKSkKLSAgICAg
ICAgcmV0dXJuICJmaWxlX18wIl9zOworICAgICAgICByZXR1cm4gImZpbGVfXzAiX3N0cjsKIAog
ICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIEZpbGVT
eXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIHBvcnQu
dmFsdWVfb3IoMCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRl
eCBkYjA5NGEwMmQzMWNmM2JjMzNkNzllOGU3MWQ4MGM5ZDM2YTdkYzgwLi43ODBhMjE0NGNjNDk4
OGNlMmI0NGQwMGEzZDkxOWM1NjdhZmVlNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmNwcApAQCAtMTQ2LDE2ICsxNDYsMTYgQEAgU3RyaW5nIFNlY3VyaXR5UG9saWN5Ojpn
ZW5lcmF0ZU9yaWdpbkhlYWRlcihSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uc3QK
IHsKICAgICBzd2l0Y2ggKHJlZmVycmVyUG9saWN5KSB7CiAgICAgY2FzZSBSZWZlcnJlclBvbGlj
eTo6Tm9SZWZlcnJlcjoKLSAgICAgICAgcmV0dXJuICJudWxsIl9zOworICAgICAgICByZXR1cm4g
Im51bGwiX3N0cjsKICAgICBjYXNlIFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25n
cmFkZToKICAgICBjYXNlIFJlZmVycmVyUG9saWN5OjpTdHJpY3RPcmlnaW46CiAgICAgY2FzZSBS
ZWZlcnJlclBvbGljeTo6U3RyaWN0T3JpZ2luV2hlbkNyb3NzT3JpZ2luOgogICAgICAgICBpZiAo
cHJvdG9jb2xJcyhzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpLCAiaHR0cHMiKSAmJiAhdXJsLnBy
b3RvY29sSXMoImh0dHBzIikpCi0gICAgICAgICAgICByZXR1cm4gIm51bGwiX3M7CisgICAgICAg
ICAgICByZXR1cm4gIm51bGwiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWZlcnJl
clBvbGljeTo6U2FtZU9yaWdpbjoKICAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdpbi5jYW5SZXF1
ZXN0KHVybCkpCi0gICAgICAgICAgICByZXR1cm4gIm51bGwiX3M7CisgICAgICAgICAgICByZXR1
cm4gIm51bGwiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6
RW1wdHlTdHJpbmc6CiAgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6T3JpZ2luOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCmluZGV4IDc1MTJiMDIzZDVhMjQxNjlmODVlNDgw
YzFlMGIwODY3YjE2YTBjNjkuLmQ4NGE4MGM4MDY4MWFiNDU4ODMzNWViMmI5OWNlOWM3ZmZlMThi
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKQEAgLTQ1LDEzICs0
NSwxMyBAQCBDb250ZW50VHlwZTo6Q29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKIAogY29uc3QgU3RyaW5nJiBDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb2RlY3MgeyAiY29kZWNzIl9zIH07Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29kZWNzIHsgImNvZGVjcyJfc3RyIH07
CiAgICAgcmV0dXJuIGNvZGVjczsKIH0KIAogY29uc3QgU3RyaW5nJiBDb250ZW50VHlwZTo6cHJv
ZmlsZXNQYXJhbWV0ZXIoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHBy
b2ZpbGVzIHsgInByb2ZpbGVzIl9zIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gcHJvZmlsZXMgeyAicHJvZmlsZXMiX3N0ciB9OwogICAgIHJldHVybiBwcm9maWxlczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAppbmRleCA5ZWMwMTcyYTIxYTk4ZGM4MDdh
NGMxNjc3NTdlNzM1YWJlMjM1ODQ4Li5jNzRkMDlhNTE1MzI4YmVjMDg2YWU3ZDkwNTZlZDg0Njlm
YTgxODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtOTUyLDEwICs5NTIs
MTAgQEAgU3RyaW5nIERlY2ltYWw6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1f
ZGF0YS5mb3JtYXRDbGFzcygpKSB7CiAgICAgY2FzZSBFbmNvZGVkRGF0YTo6Q2xhc3NJbmZpbml0
eToKLSAgICAgICAgcmV0dXJuIHNpZ24oKSA/ICItSW5maW5pdHkiX3MgOiAiSW5maW5pdHkiX3M7
CisgICAgICAgIHJldHVybiBzaWduKCkgPyAiLUluZmluaXR5Il9zdHIgOiAiSW5maW5pdHkiX3N0
cjsKIAogICAgIGNhc2UgRW5jb2RlZERhdGE6OkNsYXNzTmFOOgotICAgICAgICByZXR1cm4gIk5h
TiJfczsKKyAgICAgICAgcmV0dXJuICJOYU4iX3N0cjsKIAogICAgIGNhc2UgRW5jb2RlZERhdGE6
OkNsYXNzTm9ybWFsOgogICAgIGNhc2UgRW5jb2RlZERhdGE6OkNsYXNzWmVybzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCmluZGV4IGJjZThjNDMwMzQwZmU2
NzBiYzI0OWNkZjE3Yjk4NjlhNDRhYjg2MjAuLjRlOWMxNmFjMGRkMWZmYjNhYTgxNGI0NDdkOTJm
YTYwOGM2Y2U4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJh
YmxlRG9tYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21h
aW4uaApAQCAtMTA1LDcgKzEwNSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBSZWdpc3RyYWJsZURvbWFpbihTdHJpbmcmJiBkb21haW4pCi0gICAgICAgIDogbV9yZWdp
c3RyYWJsZURvbWFpbiB7IGRvbWFpbi5pc0VtcHR5KCkgPyAibnVsbE9yaWdpbiJfcyA6IFdURk1v
dmUoZG9tYWluKSB9CisgICAgICAgIDogbV9yZWdpc3RyYWJsZURvbWFpbiB7IGRvbWFpbi5pc0Vt
cHR5KCkgPyAibnVsbE9yaWdpbiJfc3RyIDogV1RGTW92ZShkb21haW4pIH0KICAgICB7CiAgICAg
fQogCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBkb21haW4gPSBo
b3N0OwogI2VuZGlmCiAgICAgICAgIGlmIChob3N0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRv
bWFpbiA9ICJudWxsT3JpZ2luIl9zOworICAgICAgICAgICAgZG9tYWluID0gIm51bGxPcmlnaW4i
X3N0cjsKICAgICAgICAgZWxzZSBpZiAoZG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGRv
bWFpbiA9IGhvc3Q7CiAgICAgICAgIHJldHVybiBkb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcAppbmRleCA5N2IyMDU3
ZjZhNDBmZGViZTRkZDM1NmRmM2MzNzRiMDg2ZTVhZjc2Li5lYjUwZDFjMTU4NWU3ZGFiZWFlZWYy
OTc2ODkzODQ4ODFhYWZmNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAKQEAgLTE5OCwxMyArMTk4LDEzIEBAIFN0cmlu
ZyBUaW1pbmdGdW5jdGlvbjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgaWYgKG1fdHlwZSA9PSBUaW1p
bmdGdW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbikgewogICAgICAgICBhdXRvJiBmdW5jdGlv
biA9IGRvd25jYXN0PEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+KCp0aGlzKTsKICAgICAgICAg
aWYgKGZ1bmN0aW9uLngxKCkgPT0gMC4yNSAmJiBmdW5jdGlvbi55MSgpID09IDAuMSAmJiBmdW5j
dGlvbi54MigpID09IDAuMjUgJiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICBy
ZXR1cm4gImVhc2UiOworICAgICAgICAgICAgcmV0dXJuICJlYXNlIl9zdHI7CiAgICAgICAgIGlm
IChmdW5jdGlvbi54MSgpID09IDAuNDIgJiYgIWZ1bmN0aW9uLnkxKCkgJiYgZnVuY3Rpb24ueDIo
KSA9PSAxLjAgJiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICByZXR1cm4gImVh
c2UtaW4iOworICAgICAgICAgICAgcmV0dXJuICJlYXNlLWluIl9zdHI7CiAgICAgICAgIGlmICgh
ZnVuY3Rpb24ueDEoKSAmJiAhZnVuY3Rpb24ueTEoKSAmJiBmdW5jdGlvbi54MigpID09IDAuNTgg
JiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICByZXR1cm4gImVhc2Utb3V0IjsK
KyAgICAgICAgICAgIHJldHVybiAiZWFzZS1vdXQiX3N0cjsKICAgICAgICAgaWYgKGZ1bmN0aW9u
LngxKCkgPT0gMC40MiAmJiAhZnVuY3Rpb24ueTEoKSAmJiBmdW5jdGlvbi54MigpID09IDAuNTgg
JiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICByZXR1cm4gImVhc2UtaW4tb3V0
IjsKKyAgICAgICAgICAgIHJldHVybiAiZWFzZS1pbi1vdXQiX3N0cjsKICAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoImN1YmljLWJlemllcigiLCBmdW5jdGlvbi54MSgpLCAiLCAiLCBmdW5jdGlv
bi55MSgpLCAiLCAiLCBmdW5jdGlvbi54MigpLCAiLCAiLCBmdW5jdGlvbi55MigpLCAnKScpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5
c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApp
bmRleCA1Zjk2Yjc1NmQzOTZlMGQ5OTIxOGNkYjQxNGY5MzhjOTZkOTk0NmE5Li45OTk1NzVhNmVj
MjcyZjhiNDIxYmJlMDI0MTI3MGQ5NjQzMGJjZTM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtODQwLDcgKzg0MCw3IEBAIFRFU1RfRihGaWxl
U3lzdGVtVGVzdCwgcmVhZEVudGlyZUZpbGUpCiBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIG1ha2VT
YWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKQogewogICAgIEVYUEVDVF9UUlVFKEZpbGVTeXN0ZW06
Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHRlbXBGaWxlUGF0aCgpKSk7Ci0gICAgYXV0
byByZXN1bHQgPSBGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aChTdHJp
bmcoIlRoaXNpc25vdGFyZWFsZmlsZSIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpKTsK
KyAgICBhdXRvIHJlc3VsdCA9IEZpbGVTeXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQ
YXRoKCJUaGlzaXNub3RhcmVhbGZpbGUiX3N0cik7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogICAgIC8vIE5TRmlsZVByb3RlY3Rp
b25LZXkgb25seSBhY3R1YWxseSBtZWFucyBhbnl0aGluZyBvbi1kZXZpY2UuCiAgICAgRVhQRUNU
X0ZBTFNFKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dU
Ri9XVEZTdHJpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5n
LmNwcAppbmRleCAwZTBlOWM3Zjg4N2YzZWFmN2M0Nzc1YTAxNGYxZTZjY2E4ZDQxMGYxLi5mMWU3
MzQ5N2NmNzM5N2VlNTNjNjUzMWY5Yzc3NDJiYTdmYmVkMjY4IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKQEAgLTQ3LDEyICs0Nyw2IEBAIFRFU1QoV1RG
LCBTdHJpbmdDcmVhdGlvbkZyb21MaXRlcmFsKQogICAgIEVYUEVDVF9FUSgiU3RyaW5nIExpdGVy
YWwiLCBzdHJpbmdGcm9tTGl0ZXJhbCk7CiAgICAgRVhQRUNUX1RSVUUoc3RyaW5nRnJvbUxpdGVy
YWwuaXM4Qml0KCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoIlN0cmluZyBMaXRlcmFsIiksIHN0
cmluZ0Zyb21MaXRlcmFsKTsKLQotICAgIFN0cmluZyBzdHJpbmdXaXRoVGVtcGxhdGUoIlRlbXBs
YXRlIExpdGVyYWwiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBFWFBFQ1Rf
RVEoc3RybGVuKCJUZW1wbGF0ZSBMaXRlcmFsIiksIHN0cmluZ1dpdGhUZW1wbGF0ZS5sZW5ndGgo
KSk7Ci0gICAgRVhQRUNUX0VRKCJUZW1wbGF0ZSBMaXRlcmFsIiwgc3RyaW5nV2l0aFRlbXBsYXRl
KTsKLSAgICBFWFBFQ1RfVFJVRShzdHJpbmdXaXRoVGVtcGxhdGUuaXM4Qml0KCkpOwotICAgIEVY
UEVDVF9FUShTdHJpbmcoIlRlbXBsYXRlIExpdGVyYWwiKSwgc3RyaW5nV2l0aFRlbXBsYXRlKTsK
IH0KIAogVEVTVChXVEYsIFN0cmluZ0FTQ0lJKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455332</attachid>
            <date>2022-03-21 22:21:33 -0700</date>
            <delta_ts>2022-03-22 11:16:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238162-20220321222132.patch</filename>
            <type>text/plain</type>
            <size>675712</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ZTIwYjdiMTJiMzg2NWRjZDg1ZjQyNjA4N2ZlNzE4NGZlNzUxMDc4Li45MDdmNDc3YzVmN2JlNTgw
NGQ3OWVhY2YzNDRiZDExZjVkZGExNzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MTUgQEAKKzIwMjItMDMtMjEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmcgbGl0ZXJhbHMgd2l0aCBfc3RyIHN1ZmZpeCBzaG91bGQgbm90IG5l
ZWQgdG8gZG8gc3RybGVuKCkgYXQgcnVudGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRvcHQgdGhlICIiX3N0ciBvcGVyYXRvciBpbiBtb3JlIHBs
YWNlcyBzbyB0aGV5IGNhbiBsZXZlcmFnZSB0aGUgb3B0aW1pemF0aW9uLgorCisgICAgICAgICog
QVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tOgorICAgICAgICAoSlNDOjpjb21wdXRlVmFsaWRJbXBv
cnRTcGVjaWZpZXIpOgorICAgICAgICAoSlNDOjpKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9h
ZGVyRmV0Y2gpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6Cisg
ICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdCk6CisgICAgICAgIChK
U0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tVG9QcmltaXRpdmUpOgorICAgICAg
ICAoSlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVySW1w
bCk6CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0
ZXJJbXBsKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmpl
Y3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAgICAqIEFQSS9KU1NjcmlwdC5tbToK
KyAgICAgICAgKC1bSlNTY3JpcHQgd3JpdGVDYWNoZTpdKToKKyAgICAgICAgKiBBUEkvSlNUeXBl
ZEFycmF5LmNwcDoKKyAgICAgICAgKEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlc1B0cik6Cisg
ICAgICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChjb250YWluZXJWYWx1ZVRvT2JqZWN0
KToKKyAgICAgICAgKHZhbHVlVG9BcnJheSk6CisgICAgICAgICh2YWx1ZVRvRGljdGlvbmFyeSk6
CisgICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tOgorICAgICAgICAoSlNDOjpv
YmpDQ2FsbGJhY2tGdW5jdGlvbkNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6b2JqQ0Nh
bGxiYWNrRnVuY3Rpb25DYWxsQXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Ok9iakNDYWxs
YmFja0Z1bmN0aW9uSW1wbDo6Y2FsbCk6CisgICAgICAgICogQVBJL2dsaWIvSlNDQ2FsbGJhY2tG
dW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ0NhbGxiYWNrRnVuY3Rpb246OmNhbGwpOgor
ICAgICAgICAoSlNDOjpKU0NDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QpOgorICAgICAgICAq
IEFQSS9nbGliL0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoanNjQ29udGV4dEpTVmFsdWVUb0dW
YWx1ZSk6CisgICAgICAgICogQVBJL2dsaWIvSlNDVmFsdWUuY3BwOgorICAgICAgICAoanNjVmFs
dWVPYmplY3REZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKToKKyAgICAgICAgKGpzY1ZhbHVlRnVuY3Rp
b25DcmVhdGUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oOgorICAgICAgICAq
IGJ5dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmFtZUZv
clJlZ2lzdGVyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05l
eHQpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJp
Y0Nsb3NlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlp
ZWxkKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAg
KEpTQzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlND
OjpQb3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRXJyb3JOb2RlOjplbWl0Qnl0ZWNv
ZGUpOgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChK
U0M6OkZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9k
ZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmJpbmRW
YWx1ZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZn
L0RGR0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZUltcGwpOgorICAgICAg
ICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFy
cmF5V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElP
Tik6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAg
ICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93
ZXJERkdUb0IzOjp2YWxpZGF0ZUFJU3RhdGUpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90
QnVpbGRlci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgor
ICAgICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChJbnNwZWN0
b3I6OkNvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
Q29uc29sZU1lc3NhZ2U6OmNsZWFyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJj
aFV0aWxpdGllcy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRp
ZXM6OmZpbmRTdHlsZXNoZWV0U291cmNlTWFwVVJMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6SW5q
ZWN0ZWRTY3JpcHQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZXhlY3V0
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojphd2FpdFByb21pc2UpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldFByZXZpZXcpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
amVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMgY29uc3QpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdCBjb25zdCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmluZyBjb25zdCk6CisgICAgICAgIChJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUgY29uc3QpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnNldEV2ZW50VmFsdWUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6Y2xlYXJFdmVudFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHQ6OnNldEV4Y2VwdGlvblZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5qZWN0ZWRTY3JpcHQ6OmNsZWFyRXhjZXB0aW9uVmFsdWUpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQgY29uc3QpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE9iamVjdCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cCk6CisgICAgICAgIChJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0OjpjcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdCBjb25zdCk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgIChJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxsUmVzdWx0KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvck9iamVjdElkKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OkJhY2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tl
bmREaXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5k
RGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0ds
b2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnRpbWVTdGFtcCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpyZWNvcmRFbmQpOgorICAgICAg
ICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QpOgor
ICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6
OmFwcGVuZEFQSUJhY2t0cmFjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6OmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcik6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpzdWJ0eXBlKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFsUHJvcGVy
dGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUlu
c3RhbmNlcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVy
eUhvbGRlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0
aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZy
YW1lOjp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNw
cDoKKyAgICAgICAgKEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzOjpnZXRGaXJzdEFyZ3VtZW50
QXNTdHJpbmcgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJv
bUV4Y2VwdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6SW5zcGVjdG9yQXVkaXRBZ2Vu
dCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckF1ZGl0QWdlbnQ6OnNldHVwKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6dGVhcmRvd24pOgorICAgICAgICAqIGludGVy
cHJldGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6ZnJpZW5kbHlG
dW5jdGlvbk5hbWUpOgorICAgICAgICAqIGludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwOgor
ICAgICAgICAoSlNDOjpTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OmR1bXAgY29uc3QpOgorICAgICAg
ICAoSlNDOjpTaGFkb3dDaGlja2VuOjpGcmFtZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogaW50
ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpG
cmFtZTo6ZnVuY3Rpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpG
cmFtZTo6c291cmNlVVJMIGNvbnN0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAg
KEpTQzo6SklUOjpkb01haW5UaHJlYWRQcmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUpOgorICAgICAg
ICAqIGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKToKKyAgICAgICAgKEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAg
IChjb21wdXRlRmlsZVBhdGgpOgorICAgICAgICAocnVuV2l0aE9wdGlvbnMpOgorICAgICAgICAo
cnVuSW50ZXJhY3RpdmUpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAg
ICAgICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6
TExJbnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTElu
dDo6aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAgICAgICogcGFyc2VyL0xleGVy
LmNwcDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmludmFsaWRDaGFyYWN0ZXJNZXNzYWdlIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKEpT
Qzo6TGV4ZXI8VD46OnBhcnNlQ29tcGxleEVzY2FwZSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+
OjpwYXJzZVN0cmluZ1Nsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlVGVt
cGxhdGVMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleFdpdGhvdXRDbGVhcmlu
Z0xpbmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAqIHBhcnNlci9Q
YXJzZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpzZXRFcnJvck1lc3NhZ2UpOgorICAgICAg
ICAqIHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0
cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5V2l0aFNpemVR
dWlyayk6CisgICAgICAgIChKU0M6OmlzQXJyYXlTbG93SW5saW5lKToKKyAgICAgICAgKiBydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0TGVuZ3RoKToKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6dG9Mb2Nh
bGVTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAg
ICAgICAoSlNDOjphdG9taWNzV2FpdEltcGwpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCaWdJbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQmln
SW50UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dG9UaGlzQmlnSW50VmFsdWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RF
RklORV9DT01NT05fU0xPV19QQVRIKToKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVDbGllbnQu
Y3BwOgorICAgICAgICAoSlNDOjphcHBlbmRNZXNzYWdlUHJlZml4KToKKyAgICAgICAgKEpTQzo6
Q29uc29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29uc29sZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnZhbHVlT3JEZWZh
dWx0TGFiZWxTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmZvcm1hdGVEYXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpEYXRlUHJv
dG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmNy
ZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlU3ludGF4
RXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpj
cmVhdGVPdXRPZk1lbW9yeUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAg
ICAgIChKU0M6OnRocm93Vk1FcnJvcik6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNl
LmNwcDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkTmFtZVN0cmluZyk6
CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlw
ZS5oOgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHA6CisgICAgICAgIChKU0M6
OmRvRXhjZXB0aW9uRnV6emluZyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKToKKyAgICAgICAg
KEpTQzo6bm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjppbnZhbGlk
UGFyYW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAo
SlNDOjppbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlv
blNvdXJjZUFwcGVuZGVyKToKKyAgICAgICAgKEpTQzo6aW52YWxpZFByb3RvdHlwZVNvdXJjZUFw
cGVuZGVyKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0
ZXJFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKToK
KyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvck5vdEZ1
bmN0aW9uKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJF
cnJvckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmNyZWF0ZU5v
dEFDb25zdHJ1Y3RvckVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlTm90QUZ1bmN0aW9uRXJy
b3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVOb3RBbk9iamVjdEVycm9yKToKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlSW52YWxpZFByb3RvdHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlVERa
RXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6Cisg
ICAgICAgIChKU0M6OmNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAo
SlNDOjpjcmVhdGVQcml2YXRlTWV0aG9kQWNjZXNzRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVh
dGVSZWluc3RhbGxQcml2YXRlTWV0aG9kRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRmluYWxp
emF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkZpbmFsaXphdGlv
blJlZ2lzdHJ5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJl
Z2lzdHJ5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RmluYWxpemF0aW9uUmVnaXN0
cnkpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHJ1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25F
eGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpnZXRGdW5jdGlvblJlYWxtKToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxDb2xsYXRvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6c29y
dExvY2FsZURhdGEpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OnNlYXJjaExvY2FsZURh
dGEpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcik6Cisg
ICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJ
bnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6
OmNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZv
cm1hdDo6bG9jYWxlRGF0YSk6CisgICAgICAgIChKU0M6OnRvRGF0ZVRpbWVPcHRpb25zQW55RGF0
ZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3Qp
OgorICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZURhdGVJbnRlcnZhbEZv
cm1hdElmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXRSYW5nZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VU
b1BhcnRzKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRs
RGlzcGxheU5hbWVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6aW5pdGlh
bGl6ZURpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6Om9mIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRp
b24pOgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxMaXN0Rm9ybWF0Ojppbml0
aWFsaXplTGlzdEZvcm1hdCk6CisgICAgICAgIChKU0M6OnN0cmluZ0xpc3RGcm9tSXRlcmFibGUp
OgorICAgICAgICAoSlNDOjpJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SW50bExpc3RGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvSW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxM
aXN0Rm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1l
L0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGUuY3BwOgorICAgICAg
ICAoSlNDOjpJbnRsTG9jYWxlOjppbml0aWFsaXplTG9jYWxlKToKKyAgICAgICAgKEpTQzo6SW50
bExvY2FsZTo6Y2FsZW5kYXJzKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y29sbGF0aW9u
cyk6CisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OmhvdXJDeWNsZXMpOgorICAgICAgICAoSlND
OjpJbnRsTG9jYWxlOjpudW1iZXJpbmdTeXN0ZW1zKToKKyAgICAgICAgKEpTQzo6SW50bExvY2Fs
ZTo6dGltZVpvbmVzKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6dGV4dEluZm8pOgorICAg
ICAgICAoSlNDOjpJbnRsTG9jYWxlOjp3ZWVrSW5mbyk6CisgICAgICAgICogcnVudGltZS9JbnRs
TG9jYWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlQ29uc3RydWN0
b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5j
cHA6CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3Jt
YXQpOgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQgY29uc3QpOgorICAg
ICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZSBjb25zdCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0c0ludGVybmFsKToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3JvdXBpbmdWYWx1ZSk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbCk6CisgICAg
ICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpzZXRO
dW1iZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZv
cm1hdFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICog
cnVudGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXplTG9jYWxl
TGlzdCk6CisgICAgICAgIChKU0M6OmRlZmF1bHRMb2NhbGUpOgorICAgICAgICAoSlNDOjpyZXNv
bHZlTG9jYWxlKToKKyAgICAgICAgKEpTQzo6bWFwSUNVQ2FsZW5kYXJLZXl3b3JkVG9CQ1A0Nyk6
CisgICAgICAgIChKU0M6Om1hcEJDUDQ3VG9JQ1VDYWxlbmRhcktleXdvcmQpOgorICAgICAgICAo
SlNDOjptYXBJQ1VDb2xsYXRpb25LZXl3b3JkVG9CQ1A0Nyk6CisgICAgICAgIChKU0M6OmF2YWls
YWJsZUNvbGxhdGlvbnMpOgorICAgICAgICAoSlNDOjphdmFpbGFibGVDdXJyZW5jaWVzKToKKyAg
ICAgICAgKEpTQzo6YXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcyk6CisgICAgICAgIChKU0M6OmNh
bm9uaWNhbGl6ZVRpbWVab25lTmFtZUZyb21JQ1VUaW1lWm9uZSk6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5s
aW5lcy5oOgorICAgICAgICAoSlNDOjppbnRsR2V0T3B0aW9uc09iamVjdCk6CisgICAgICAgICog
cnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVs
ZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxl
czo6cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVz
OjpzZWxlY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdFJh
bmdlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6
CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdCk6CisgICAgICAgIChK
U0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAg
ICAgIChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdEludGVybmFsIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25z
dCk6CisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9J
bnRsU2VnbWVudGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6aW5pdGlhbGl6
ZVNlZ21lbnRlcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXI6OnNlZ21lbnQgY29uc3Qp
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAg
ICAgICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50
cy5jcHA6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6Y3JlYXRlU2VnbWVudEl0ZXJhdG9y
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JdGVy
YXRvck9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvck5leHQpOgorICAgICAg
ICAoSlNDOjppdGVyYXRvckNsb3NlKToKKyAgICAgICAgKEpTQzo6aGFzSXRlcmF0b3JNZXRob2Qp
OgorICAgICAgICAoSlNDOjppdGVyYXRvck1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAg
ICAgICAoSlNDOjpKU0FycmF5OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZl
clByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU3BlY2llc0NvbnN0cnVj
dG9yU2xvdyk6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU2xpY2UpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjp2YWxpZGF0ZVR5cGVk
QXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlNDOjpK
U0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpleHBv
bmVudGlhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpdmlkZUltcGwpOgorICAg
ICAgICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVySW1wbCk6CisgICAgICAgIChKU0M6OkpTQmln
SW50OjpsZWZ0U2hpZnRCeUFic29sdXRlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFsbG9j
YXRlRm9yKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvTnVtYmVyIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6SlNCaWdJbnQ6OmFzVWludE5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQmln
SW50Lmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6
OnRvQmlnSW50IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6
CisgICAgICAgIChKU0M6OnRvUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk6CisgICAgICAgICogcnVu
dGltZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Y3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpnZXREYXRhKToKKyAgICAgICAgKEpTQzo6c2V0RGF0YSk6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9KU0RhdGVNYXRoLmNwcDoK
KyAgICAgICAgKEpTQzo6RGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUpOgorICAgICAgICAoSlND
OjpEYXRlQ2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVu
Y3Rpb24uY3BwOgorICAgICAgICAoSlNDOjpnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aDoKKyAgICAgICAgKEpTQzo6Y29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5lZWRlZCk6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMp
OgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAg
ICAoSlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmlj
VHlwZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+Ojpk
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpzcGVjaWVzQ29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAg
ICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UpOgorICAgICAg
ICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpuYW1l
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoK
KyAgICAgICAgKEpTQzo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6ZGVjb2RlKToKKyAgICAgICAg
KiBydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50
aW1lL0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3Ry
aW5naWZpZWRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKToKKyAgICAgICAgKEpTQzo6SlNP
YmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6Y2FsbFRv
UHJpbWl0aXZlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b3JkaW5hcnlUb1By
aW1pdGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFu
Y2UpOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KToK
KyAgICAgICAgKEpTQzo6dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcik6CisgICAg
ICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pT
VHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlZEFycmF5SXRlcmF0b3JPYmpl
Y3QpOgorICAgICAgICAoSlNDOjpKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgpOgorICAgICAgICAoSlNDOjpM
aXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleFN0cmluZ1Nsb3cpOgorICAgICAgICAo
SlNDOjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleE51bWJlcik6CisgICAgICAg
IChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpzZXRFcnJvck1lc3NhZ2VGb3JUb2tlbik6
CisgICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZVByaW1pdGl2ZVZh
bHVlKToKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKToKKyAg
ICAgICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBh
cnNlcjo6Z2V0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6TWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1l
L01hcFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldE1hcCk6CisgICAgICAgICogcnVu
dGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KToK
KyAgICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6dG9Qcm9wZXJ0eURlc2Ny
aXB0b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAo
SlNDOjpvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgor
ICAgICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc1VSU2hpZnQp
OgorICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlND
OjpQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAg
ICAqIHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OnBlcmZvcm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50
ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0Ojpw
ZXJmb3JtSGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVB1
dCk6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChK
U0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmpl
Y3Q6OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0
OjpwZXJmb3JtSXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZv
cm1EZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
R2V0T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3Jt
U2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90
b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9SZWdFeHAu
Y3BwOgorICAgICAgICAoSlNDOjplc2NhcGVQYXR0ZXJuKToKKyAgICAgICAgKiBydW50aW1lL1Jl
Z0V4cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKToKKyAgICAgICAg
KEpTQzo6dG9GbGFncyk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRp
bWUvUnVudGltZVR5cGUuY3BwOgorICAgICAgICAoSlNDOjpydW50aW1lVHlwZUFzU3RyaW5nKToK
KyAgICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpT
YW1wbGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6
OlNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2Rlcyk6CisgICAgICAgICogcnVudGlt
ZS9TY3JpcHRFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6
cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAqIHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0U2V0KToKKyAg
ICAgICAgKiBydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUu
Y3BwOgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOgorICAgICAg
ICAoSlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUgY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvU3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6U3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OnRvTG9jYWxlQ2FzZSk6
CisgICAgICAgICogcnVudGltZS9TeW1ib2wuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OnRv
TnVtYmVyIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OlN5bWJvbFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHA6CisgICAgICAgIChKU0M6OnBhcnNlVGVtcG9y
YWxDYWxlbmRhclN0cmluZyk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29u
c3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxEdXJhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRy
eUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpmcm9tRHVy
YXRpb25MaWtlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9JU084NjAxRHVy
YXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlv
bik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OmNvbXBhcmUpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbER1cmF0aW9uOjp3aXRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxEdXJhdGlvbjo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6
c3VidHJhY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpyb3VuZCBj
b25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvdGFsIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3Jh
bER1cmF0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHA6CisgICAgICAgICogcnVudGltZS9UZW1w
b3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFu
dENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjp0ZW1wb3JhbExhcmdlc3RVbml0KToKKyAg
ICAgICAgKEpTQzo6dGVtcG9yYWxTbWFsbGVzdFVuaXQpOgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWUuY3BwOgorICAgICAgICAoSlNDOjp0b1BsYWluVGltZSk6CisgICAgICAg
IChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgIChKU0M6OnRv
VGVtcG9yYWxUaW1lUmVjb3JkKToKKyAgICAgICAgKEpTQzo6dG9QYXJ0aWFsVGltZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWU6OndpdGggY29uc3QpOgorICAgICAgICAoSlNDOjpleHRyYWN0RGlmZmVyZW5j
ZU9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3Bw
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpmcm9tKToKKyAgICAgICAgKiBydW50
aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsVGltZVpvbmVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1l
Wm9uZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tik6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNl
dDo6ZHVtcFR5cGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6ZGlzcGxheU5hbWUg
Y29uc3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6bGVhc3RDb21tb25BbmNlc3Rv
cik6CisgICAgICAgICogcnVudGltZS9UeXBlU2V0Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVy
ZVNoYXBlOjpzZXRDb25zdHJ1Y3Rvck5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgor
ICAgICAgICAoSlNDOjpWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEpOgorICAgICAgICAqIHJ1bnRp
bWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6Z2V0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlND
OjpnZXRXZWFrUmVmKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6
CisgICAgICAgIChKU0M6OldlYWtTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
V2Vha1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFdlYWtTZXQpOgorICAgICAg
ICAqIHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6
ZU92ZXJyaWRlSW5mbyk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisKIDIwMjItMDMtMjEgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBSZWZlcmVuY2VFcnJv
ciB3aGVuIHVzaW5nIGV4dHJhIHBhcmVucyBpbiBjbGFzcyBmaWVsZHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggNDRiYmRiODky
MmFlYjFiNGFkNWZkMzNhMTBiMGRiYWFkODY1NDA3NC4uMGQzOTUzNGQ4YTE2ZGVkZDVkYWI2OTUy
ZmVjOTBiMTYwYmRiOWIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBAQAorMjAyMi0wMy0yMSAgQ2hyaXMg
RHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmluZyBsaXRlcmFscyB3aXRo
IF9zdHIgc3VmZml4IHNob3VsZCBub3QgbmVlZCB0byBkbyBzdHJsZW4oKSBhdCBydW50aW1lCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxNjIKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgIiJfc3Ry
IG9wZXJhdG9yIHdhcyBjb25zdHJ1Y3RpbmcgYSBTdHJpbmcgZnJvbSBhbiBBU0NJSUxpdGVyYWwu
IFdoaWxlIHRoaXMgYXZvaWRlZCBjb3BpbmcgdGhlIGNoYXJhY3RlcnMsCisgICAgICAgIGl0IGNv
dWxkIHRyaWdnZXIgY2FsbHMgdG8gc3RybGVuKCkgYXQgcnVuIHRpbWUgdG8gZmlndXJlIG91dCB0
aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcuIFRoaXMgd2FzIHVuZm9ydW5hdGUKKyAgICAgICAgc2lu
Y2UgdGhlICIiX3N0ciBvcGVyYXRvciB0YWtlcyB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgYXMg
cGFyYW1ldGVyIGFuZCB3YXMgc2ltcGx5IGlnbm9yaW5nIGl0LiBUaGUgIiJfc3RyCisgICAgICAg
IG9wZXJhdG9yIG5vdyBjb25zdHJ1Y3RzIHN0cmluZ3MgbW9yZSBlZmZpY2llbnRseSBieSBub3Qg
aWdub3JpbmcgdGhlIGxlbmd0aCBpdCB0YWtlcyBhcyBwYXJhbWV0ZXIgYW5kIHRodXMKKyAgICAg
ICAgYXZvaWRpbmcgcnVudGltZSBjYWxscyB0byBzdHJsZW4oKS4KKworICAgICAgICBUaGlzIHBh
dGNoIGFsc28gYWRvcHRzIHRoZSAiIl9zdHIgb3BlcmF0b3IgaW4gbW9yZSBwbGFjZXMgc28gdGhl
eSBjYW4gbGV2ZXJhZ2UgdGhlIG9wdGltaXphdGlvbi4KKworICAgICAgICAqIHd0Zi9JbmRlbnRl
ci5oOgorICAgICAgICAoV1RGOjpJbmRlbnRlcjo6SW5kZW50ZXIpOgorICAgICAgICAqIHd0Zi9M
b2dnZXIuaDoKKyAgICAgICAgKFdURjo6TG9nQXJndW1lbnQ6OnRvU3RyaW5nKToKKyAgICAgICAg
KiB3dGYvTWVkaWFUaW1lLmNwcDoKKyAgICAgICAgKFdURjo6TWVkaWFUaW1lOjp0b0pTT05PYmpl
Y3QgY29uc3QpOgorICAgICAgICAoV1RGOjpNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nIGNv
bnN0KToKKyAgICAgICAgKiB3dGYvVVJMLmNwcDoKKyAgICAgICAgKFdURjo6bWltZVR5cGVGcm9t
RGF0YVVSTCk6CisgICAgICAgICogd3RmL2NmL0xhbmd1YWdlQ0YuY3BwOgorICAgICAgICAoV1RG
OjpwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMpOgorICAgICAgICAqIHd0Zi90ZXh0L1dU
RlN0cmluZy5jcHA6CisgICAgICAgIChhc2NpaURlYnVnKToKKyAgICAgICAgKiB3dGYvdGV4dC9X
VEZTdHJpbmcuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nTGl0ZXJhbHM6Om9wZXJhdG9yIF9zdHIp
OgorICAgICAgICAqIHd0Zi91bml4L0xhbmd1YWdlVW5peC5jcHA6CisgICAgICAgIChXVEY6OnBs
YXRmb3JtTGFuZ3VhZ2UpOgorCiAyMDIyLTAzLTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBs
ZS5jb20+CiAKICAgICAgICAgVmVjdG9yIG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUgYXNzaWdu
bWVudCBvcGVyYXRvciBhcmUgc3Vib3B0aW1hbCB3aGVuIHRoZSB2ZWN0b3IgaGFzIGFuIGlubGlu
ZSBidWZmZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2N2UzYmRkMzRjN2M4MjliMDUzZTg1NjUxOWRjNGZmM2Y5
YjQ4MDlmLi5lYzUxMjA5NGZiNTZiNzVlZDU5OGQ2OWY0YmYyN2E4MjcyNjlkNGFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTE3IEBACisyMDIyLTAzLTIxICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKKyAgICAgICAgU3RyaW5nIGxpdGVyYWxzIHdpdGggX3N0ciBzdWZmaXggc2hv
dWxkIG5vdCBuZWVkIHRvIGRvIHN0cmxlbigpIGF0IHJ1bnRpbWUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE2MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkb3B0IHRoZSAiIl9zdHIgb3BlcmF0b3Ig
aW4gbW9yZSBwbGFjZXMgc28gdGhleSBjYW4gbGV2ZXJhZ2UgdGhlIG9wdGltaXphdGlvbi4KKwor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVEZWZhdWx0VmFsdWUpOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckRlZmlu
aXRpb24pOgorICAgICAgICAoR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMpOgorICAg
ICAgICAoR2VuZXJhdGVDYWxsVHJhY2VyKToKKyAgICAgICAgKiBjc3MvQ1NTRm9udEZhY2VSdWxl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZvbnRGYWNlUnVsZTo6Y3NzVGV4dCBjb25zdCk6
CisgICAgICAgICogY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NGb250UGFsZXR0ZVZhbHVlc1J1bGU6OmJhc2VQYWxldHRlIGNvbnN0KToKKyAg
ICAgICAgKiBjc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NL
ZXlmcmFtZXNSdWxlOjppbnNlcnRSdWxlKToKKyAgICAgICAgKiBjc3MvQ1NTUGFnZVJ1bGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFnZVJ1bGU6OnNlbGVjdG9yVGV4dCBjb25zdCk6Cisg
ICAgICAgICogY3NzL0NTU1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTaGVldDo6Y3NzUnVsZXNGb3JCaW5kaW5ncyk6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2hl
ZXQuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCBjb25zdCk6CisgICAgICAgICogY3NzL0ZvbnRG
YWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Rm9udEZhY2U6OmZhbWlseSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250
RmFjZTo6c3R5bGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OndlaWdodCBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6c3RyZXRjaCBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGb250RmFjZTo6dW5pY29kZVJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZvbnRGYWNlOjpmZWF0dXJlU2V0dGluZ3MgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Rm9udEZhY2U6OmRpc3BsYXkgY29uc3QpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OnNlcmlhbGl6ZSBjb25zdCk6CisgICAg
ICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5UHJpb3Jp
dHkpOgorICAgICAgICAqIGNzcy9TdHlsZVByb3BlcnRpZXMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVQcm9wZXJ0aWVzOjpwYWdlQnJlYWtQcm9wZXJ0eVZhbHVlIGNvbnN0KToKKyAgICAg
ICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJz
ZXI6OnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVuY2VzKToKKyAgICAgICAgKiBjc3MvcGFy
c2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeVBh
cnNlcjo6Y29tbWl0TWVkaWFRdWVyeSk6CisgICAgICAgICogZG9tL0NEQVRBU2VjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDREFUQVNlY3Rpb246Om5vZGVOYW1lIGNvbnN0KToKKyAgICAg
ICAgKiBkb20vQ29tbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb21tZW50Ojpub2RlTmFt
ZSBjb25zdCk6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVIVE1MRG9jdW1lbnQpOgorICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c3VnZ2Vz
dGVkTUlNRVR5cGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNvbnRlbnRU
eXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpub2RlTmFtZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6d3JpdGVsbik6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6ZGVzaWduTW9kZSBjb25zdCk6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJh
Z21lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRGcmFnbWVudDo6bm9kZU5hbWUg
Y29uc3QpOgorICAgICAgICAqIGRvbS9GcmFnbWVudERpcmVjdGl2ZVBhcnNlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFnbWVudERpcmVjdGl2ZVBhcnNlcjo6cGFyc2VGcmFnbWVudERpcmVj
dGl2ZSk6CisgICAgICAgICogZG9tL1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dDo6
bm9kZU5hbWUgY29uc3QpOgorICAgICAgICAqIGRvbS9UZXh0RW5jb2Rlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0RW5jb2Rlcjo6ZW5jb2RpbmcgY29uc3QpOgorICAgICAgICAqIGh0bWwv
QmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCYXNlQ2hlY2th
YmxlSW5wdXRUeXBlOjpzYXZlRm9ybUNvbnRyb2xTdGF0ZSBjb25zdCk6CisgICAgICAgICogaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmFzZURh
dGVBbmRUaW1lSW5wdXRUeXBlOjp1cGRhdGVJbm5lclRleHRWYWx1ZSk6CisgICAgICAgICogaHRt
bC9Db2xvcklucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb2xvcklucHV0VHlwZTo6
ZmFsbGJhY2tWYWx1ZSBjb25zdCk6CisgICAgICAgICogaHRtbC9ET01Gb3JtRGF0YS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVGaWxlRW50cnkpOgorICAgICAgICAqIGh0bWwvRGF0ZUlu
cHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlSW5wdXRUeXBlOjpzZXR1cExheW91
dFBhcmFtZXRlcnMgY29uc3QpOgorICAgICAgICAqIGh0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlw
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXR1cExh
eW91dFBhcmFtZXRlcnMgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTEVsZW1lbnQ6OmNvbnRlbnRFZGl0YWJsZSBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxJbWFnZUVsZW1lbnQ6OmRlY29kaW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRBcmVhRWxlbWVudDo6
c2V0VmFsdWVDb21tb24pOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
cmVjdGlvbkZvckZvcm1EYXRhIGNvbnN0KToKKyAgICAgICAgKiBodG1sL01vbnRoSW5wdXRUeXBl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1vbnRoSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFt
ZXRlcnMgY29uc3QpOgorICAgICAgICAqIGh0bWwvVGltZUlucHV0VHlwZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUaW1lSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMgY29uc3QpOgor
ICAgICAgICAqIGh0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpV
UkxEZWNvbXBvc2l0aW9uOjpwcm90b2NvbCBjb25zdCk6CisgICAgICAgICogaHRtbC9wYXJzZXIv
SFRNTFBhcnNlcklkaW9tcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNPUlNTZXR0aW5n
c0F0dHJpYnV0ZSk6CisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRva2VuUHJlbG9hZFNjYW5uZXI6OmluaXRpYXRvckZvcik6
CisgICAgICAgICogcGFnZS9TZWN1cml0eU9yaWdpbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlP
cmlnaW5EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6dG9T
dHJpbmcgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhOjpkYXRh
YmFzZUlkZW50aWZpZXIgY29uc3QpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlQb2xpY3kuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlT3JpZ2luSGVhZGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9Db250ZW50VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRl
bnRUeXBlOjpwcm9maWxlc1BhcmFtZXRlcik6CisgICAgICAgICogcGxhdGZvcm0vRGVjaW1hbC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEZWNpbWFsOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAg
ICogcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlZ2lz
dHJhYmxlRG9tYWluOjpSZWdpc3RyYWJsZURvbWFpbik6CisgICAgICAgIChXZWJDb3JlOjpSZWdp
c3RyYWJsZURvbWFpbjo6cmVnaXN0cmFibGVEb21haW5Gcm9tSG9zdCk6CisgICAgICAgICogcGxh
dGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRp
bWluZ0Z1bmN0aW9uOjpjc3NUZXh0IGNvbnN0KToKKwogMjAyMi0wMy0yMSAgQW50b2luZSBRdWlu
dCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbbWVkaWEtY29udHJvbHNdIHNjcnVi
YmluZyBvbiBpT1Mgd2hlbiBpbmxpbmUgZG9lcyBub3Qgd29yawpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5tbSBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KaW5kZXggYjNlMmFlNDQxYzRlYzUyMzQy
YWZlOWQ1NDllNGFlNjIzOGNlMzQ1Zi4uNDA1YmU0ZDUwY2ViNzg4ZjkwZDg0NWZjOTIxYWUyZjdi
NzJiYjYwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2Jh
bE9iamVjdC5tbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2Jq
ZWN0Lm1tCkBAIC05Niw3ICs5Niw3IEBAIHN0YXRpYyBFeHBlY3RlZDxVUkwsIFN0cmluZz4gY29t
cHV0ZVZhbGlkSW1wb3J0U3BlY2lmaWVyKGNvbnN0IFVSTCYgYmFzZSwgY29uc3QKICAgICB9CiAK
ICAgICBpZiAoYmFzZSA9PSBVUkwoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJD
b3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBiYXNlIFVSTCBmb3IgbG9hZGluZy4iX3MpOworICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGJhc2UgVVJM
IGZvciBsb2FkaW5nLiJfc3RyKTsKIAogICAgIGlmICghYmFzZS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybiBtYWtlVW5leHBlY3RlZChtYWtlU3RyaW5nKCJSZWZlcnJlcmluZyBzY3JpcHQncyB1
cmwgaXMgbm90IHZhbGlkOiAiX3MsIGJhc2Uuc3RyaW5nKCkpKTsKQEAgLTE5NiwxMyArMTk2LDEz
IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyRmV0
Y2goSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKFVO
TElLRUxZKCFbc2NyaXB0IGlzS2luZE9mQ2xhc3M6W0pTU2NyaXB0IGNsYXNzXV0pKQotICAgICAg
ICAgICAgcmV0dXJuIHJlamVjdFByb21pc2UoIkZpcnN0IGFyZ3VtZW50IG9mIHJlc29sdXRpb24g
Y2FsbGJhY2sgaXMgbm90IGEgSlNTY3JpcHQiX3MpOworICAgICAgICAgICAgcmV0dXJuIHJlamVj
dFByb21pc2UoIkZpcnN0IGFyZ3VtZW50IG9mIHJlc29sdXRpb24gY2FsbGJhY2sgaXMgbm90IGEg
SlNTY3JpcHQiX3N0cik7CiAKICAgICAgICAgSlNTY3JpcHQqIGpzU2NyaXB0ID0gc3RhdGljX2Nh
c3Q8SlNTY3JpcHQgKj4oc2NyaXB0KTsKIAogICAgICAgICBKU1NvdXJjZUNvZGUqIHNvdXJjZSA9
IFtqc1NjcmlwdCBqc1NvdXJjZUNvZGVdOwogICAgICAgICBpZiAoVU5MSUtFTFkoW2pzU2NyaXB0
IHR5cGVdICE9IGtKU1NjcmlwdFR5cGVNb2R1bGUpKQotICAgICAgICAgICAgcmV0dXJuIHJlamVj
dFByb21pc2UoIlRoZSBKU1NjcmlwdCB0aGF0IHdhcyBwcm92aWRlZCBkaWQgbm90IGhhdmUgZXhw
ZWN0ZWQgdHlwZSBvZiBrSlNTY3JpcHRUeXBlTW9kdWxlLiJfcyk7CisgICAgICAgICAgICByZXR1
cm4gcmVqZWN0UHJvbWlzZSgiVGhlIEpTU2NyaXB0IHRoYXQgd2FzIHByb3ZpZGVkIGRpZCBub3Qg
aGF2ZSBleHBlY3RlZCB0eXBlIG9mIGtKU1NjcmlwdFR5cGVNb2R1bGUuIl9zdHIpOwogCiAgICAg
ICAgIE5TVVJMICpzb3VyY2VVUkwgPSBbanNTY3JpcHQgc291cmNlVVJMXTsKICAgICAgICAgU3Ry
aW5nIG9sZE1vZHVsZUtleSB7IFtzb3VyY2VVUkwgYWJzb2x1dGVTdHJpbmddIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5o
CmluZGV4IGM3ODRkZmJhOTQwNjk2OTI0OTllYzczNjhhZTFhY2JlYjFjNzk0ZGIuLjkyZGMxMTAz
YjVkODZjNDU0OTZhZTVhNGEzNTdiNGMzOWRjMDAwYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oCkBAIC0xMjYsNyAr
MTI2LDcgQEAgdm9pZCBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmluaXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogICAgIGlmIChoYXNDb252ZXJ0VG9UeXBlKSB7CiAgICAgICAg
IHRoaXMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2ws
Ci0gICAgICAgICAgICBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltT
eW1ib2wudG9QcmltaXRpdmVdIl9zLCBjdXN0b21Ub1ByaW1pdGl2ZSksCisgICAgICAgICAgICBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRp
dmVdIl9zdHIsIGN1c3RvbVRvUHJpbWl0aXZlKSwKICAgICAgICAgICAgIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9CiAgICAgCkBAIC0y
MzQsNyArMjM0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+Ojpj
dXN0b21Ub1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIEpTQ2FsbGJhY2tP
YmplY3QqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQ2FsbGJhY2tPYmplY3QqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aGlzT2JqZWN0KQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNDYWxsYmFja09i
amVjdFtTeW1ib2wudG9QcmltaXRpdmVdIG1ldGhvZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0
aGlzfCB2YWx1ZS4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSlNDYWxsYmFja09iamVjdFtTeW1ib2wudG9QcmltaXRpdmVdIG1ldGhv
ZCBjYWxsZWQgb24gaW5jb21wYXRpYmxlIHx0aGlzfCB2YWx1ZS4iX3N0cik7CiAgICAgUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZSBoaW50ID0gdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKIApAQCAtNzA1LDcgKzcwNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJh
Y2tPYmplY3Q8UGFyZW50Pjo6c3RhdGljRnVuY3Rpb25HZXR0ZXJJbXBsKEpTR2xvYmFsT2JqZWN0
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2JhbE9i
amVjdCwgIlN0YXRpYyBmdW5jdGlvbiBwcm9wZXJ0eSBkZWZpbmVkIHdpdGggTlVMTCBjYWxsQXNG
dW5jdGlvbiBjYWxsYmFjay4iX3MpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihnbG9i
YWxPYmplY3QsICJTdGF0aWMgZnVuY3Rpb24gcHJvcGVydHkgZGVmaW5lZCB3aXRoIE5VTEwgY2Fs
bEFzRnVuY3Rpb24gY2FsbGJhY2suIl9zdHIpKSk7CiB9CiAKIHRlbXBsYXRlIDxjbGFzcyBQYXJl
bnQ+CkBAIC03NDAsNyArNzQwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQ
YXJlbnQ+OjpjYWxsYmFja0dldHRlckltcGwoSlNHbG9iYWxPYmplY3QqIGdsb2IKICAgICAgICAg
fQogICAgIH0KIAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiaGFz
UHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBwcm9wZXJ0eSB0aGF0IGRvZXNu
J3QgZXhpc3QuIl9zKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiaGFzUHJvcGVydHkgY2FsbGJhY2sgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBwcm9wZXJ0eSB0aGF0
IGRvZXNuJ3QgZXhpc3QuIl9zdHIpKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU09iamVjdFJlZi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcAppbmRleCA0NWRjZDIzNjRiYTRlY2Jh
NzU4NjA2OGViNWE0NzY3MGViZjUyMjcwLi4zMmY3Mzc2YzAxNzdiNzMwNDk3OTM0MTg1MGIzNGMy
YmQ3YmMxNDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0
UmVmLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTT2JqZWN0UmVmLmNwcApA
QCAtMTA0LDcgKzEwNCw3IEBAIEpTT2JqZWN0UmVmIEpTT2JqZWN0TWFrZUZ1bmN0aW9uV2l0aENh
bGxiYWNrKEpTQ29udGV4dFJlZiBjdHgsIEpTU3RyaW5nUmVmIG5hbWUsCiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IHRvSlMoY3R4KTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CiAgICAgSlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7Ci0gICAgcmV0dXJuIHRvUmVm
KEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxBc0Z1bmN0
aW9uLCBuYW1lID8gbmFtZS0+c3RyaW5nKCkgOiAiYW5vbnltb3VzIl9zKSk7CisgICAgcmV0dXJu
IHRvUmVmKEpTQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIGNhbGxB
c0Z1bmN0aW9uLCBuYW1lID8gbmFtZS0+c3RyaW5nKCkgOiAiYW5vbnltb3VzIl9zdHIpKTsKIH0K
IAogSlNPYmplY3RSZWYgSlNPYmplY3RNYWtlQ29uc3RydWN0b3IoSlNDb250ZXh0UmVmIGN0eCwg
SlNDbGFzc1JlZiBqc0NsYXNzLCBKU09iamVjdENhbGxBc0NvbnN0cnVjdG9yQ2FsbGJhY2sgY2Fs
bEFzQ29uc3RydWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pT
U2NyaXB0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQppbmRleCA4
NTAzNDdiN2NkNzEyNjBhMGJmNjU5MDc1MGE5YTQ1MGRjMzExYzFjLi4xZDk4YmUzOGMyNGI5MGZm
ZWI2ZDI5MThiMzg3NjQ3MzAwM2FlYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3Jp
cHQubW0KQEAgLTI4NywxMiArMjg3LDEyIEBAIC0gKEpTQzo6SlNTb3VyY2VDb2RlKilqc1NvdXJj
ZUNvZGUKIC0gKEJPT0wpd3JpdGVDYWNoZTooU3RyaW5nJillcnJvcgogewogICAgIGlmIChzZWxm
LmlzVXNpbmdCeXRlY29kZUNhY2hlKSB7Ci0gICAgICAgIGVycm9yID0gIkNhY2hlIGZvciBKU1Nj
cmlwdCBpcyBhbHJlYWR5IG5vbi1lbXB0eS4gQ2FuIG5vdCBvdmVycmlkZSBpdC4iX3M7CisgICAg
ICAgIGVycm9yID0gIkNhY2hlIGZvciBKU1NjcmlwdCBpcyBhbHJlYWR5IG5vbi1lbXB0eS4gQ2Fu
IG5vdCBvdmVycmlkZSBpdC4iX3N0cjsKICAgICAgICAgcmV0dXJuIE5POwogICAgIH0KIAogICAg
IGlmICghbV9jYWNoZVBhdGgpIHsKLSAgICAgICAgZXJyb3IgPSAiTm8gY2FjaGUgcGF0aCB3YXMg
cHJvdmlkZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiBvZiB0aGlzIEpTU2NyaXB0LiJfczsKKyAgICAg
ICAgZXJyb3IgPSAiTm8gY2FjaGUgcGF0aCB3YXMgcHJvdmlkZWQgZHVyaW5nIGNvbnN0cnVjdGlv
biBvZiB0aGlzIEpTU2NyaXB0LiJfc3RyOwogICAgICAgICByZXR1cm4gTk87CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKaW5kZXggYWJhNmRmNmUy
YTMxODM4ZTczODg0OWQyOGI3MjkyZTIxMzJhNGU5MS4uMmY3YjEwY2YxYTgxNDZmZWJlOTJlODY4
ZTM4MWIwOWU0M2YxMjkyZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U1R5cGVkQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBlZEFy
cmF5LmNwcApAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQqIEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJC
eXRlc1B0cihKU0NvbnRleHRSZWYgY3R4LCBKU09iamVjdFJlZiBvYmplY3RSZWYsIEpTCiAgICAg
aWYgKEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVy
Kj4odm0sIG9iamVjdCkpIHsKICAgICAgICAgQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzQnVmZmVy
LT5pbXBsKCk7CiAgICAgICAgIGlmIChidWZmZXItPmlzV2FzbU1lbW9yeSgpKSB7Ci0gICAgICAg
ICAgICBzZXRFeGNlcHRpb24oY3R4LCBleGNlcHRpb24sIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJDYW5ub3QgZ2V0IHRoZSBiYWNraW5nIGJ1ZmZlciBmb3IgYSBXZWJBc3NlbWJseS5N
ZW1vcnkiX3MpKTsKKyAgICAgICAgICAgIHNldEV4Y2VwdGlvbihjdHgsIGV4Y2VwdGlvbiwgY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkNhbm5vdCBnZXQgdGhlIGJhY2tpbmcgYnVmZmVy
IGZvciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSJfc3RyKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTVmFsdWUubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KaW5kZXgg
ZDNhZDA4MGUxZGRmNGZlNmVmYmE5MTM1YmEyNjg3NmM3N2RjYmMyNi4uZjgzZjU3NDNiM2NjNzA1
MTgwMjJiMTVjYjdiNjM1NDA1NDAxMjE0YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9KU1ZhbHVlLm1tCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1
ZS5tbQpAQCAtODE2LDcgKzgxNiw3IEBAIHN0YXRpYyBpZCBjb250YWluZXJWYWx1ZVRvT2JqZWN0
KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU0NvbnRhaW5lckNvbnZlcnRvCiAgICAgICAg
ICAgICBBU1NFUlQoW2N1cnJlbnQub2JqYyBpc0tpbmRPZkNsYXNzOltOU011dGFibGVBcnJheSBj
bGFzc11dKTsKICAgICAgICAgICAgIE5TTXV0YWJsZUFycmF5ICphcnJheSA9IChOU011dGFibGVB
cnJheSAqKWN1cnJlbnQub2JqYzsKICAgICAgICAgCi0gICAgICAgICAgICBhdXRvIGxlbmd0aFN0
cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoImxlbmd0aCJfcyk7CisgICAgICAgICAg
ICBhdXRvIGxlbmd0aFN0cmluZyA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoImxlbmd0aCJf
c3RyKTsKICAgICAgICAgICAgIHVuc2lnbmVkIGxlbmd0aCA9IEpTQzo6dG9VSW50MzIoSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIEpTT2JqZWN0R2V0UHJvcGVydHkoY29udGV4dCwganMsIGxlbmd0
aFN0cmluZy5nZXQoKSwgMCksIDApKTsKIAogICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CkBAIC05MTEsNyArOTExLDcgQEAgaWQgdmFsdWVUb0FycmF5
KEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVm
KiBleGNlcHQKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pTKGNvbnRleHQpKTsK
ICAgICBpZiAoIShKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZhbHVlKSB8fCBKU1ZhbHVlSXNVbmRl
ZmluZWQoY29udGV4dCwgdmFsdWUpKSkgewotICAgICAgICBKU0M6OkpTT2JqZWN0KiBleGNlcHRp
b25PYmplY3QgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCAiQ2Fubm90IGNv
bnZlcnQgcHJpbWl0aXZlIHRvIE5TQXJyYXkiX3MpOworICAgICAgICBKU0M6OkpTT2JqZWN0KiBl
eGNlcHRpb25PYmplY3QgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCAiQ2Fu
bm90IGNvbnZlcnQgcHJpbWl0aXZlIHRvIE5TQXJyYXkiX3N0cik7CiAgICAgICAgICpleGNlcHRp
b24gPSB0b1JlZihleGNlcHRpb25PYmplY3QpOwogI2lmIEVOQUJMRShSRU1PVEVfSU5TUEVDVE9S
KQogICAgICAgICByZXBvcnRFeGNlcHRpb25Ub0luc3BlY3Rvcihjb250ZXh0LCBleGNlcHRpb25P
YmplY3QpOwpAQCAtOTMzLDcgKzkzMyw3IEBAIGlkIHZhbHVlVG9EaWN0aW9uYXJ5KEpTR2xvYmFs
Q29udGV4dFJlZiBjb250ZXh0LCBKU1ZhbHVlUmVmIHZhbHVlLCBKU1ZhbHVlUmVmKiBlCiAKICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIodG9KUyhjb250ZXh0KSk7CiAgICAgaWYgKCEoSlNW
YWx1ZUlzTnVsbChjb250ZXh0LCB2YWx1ZSkgfHwgSlNWYWx1ZUlzVW5kZWZpbmVkKGNvbnRleHQs
IHZhbHVlKSkpIHsKLSAgICAgICAgSlNDOjpKU09iamVjdCogZXhjZXB0aW9uT2JqZWN0ID0gSlND
OjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0KSwgIkNhbm5vdCBjb252ZXJ0IHByaW1pdGl2
ZSB0byBOU0RpY3Rpb25hcnkiX3MpOworICAgICAgICBKU0M6OkpTT2JqZWN0KiBleGNlcHRpb25P
YmplY3QgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQpLCAiQ2Fubm90IGNvbnZl
cnQgcHJpbWl0aXZlIHRvIE5TRGljdGlvbmFyeSJfc3RyKTsKICAgICAgICAgKmV4Y2VwdGlvbiA9
IHRvUmVmKGV4Y2VwdGlvbk9iamVjdCk7CiAjaWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAg
ICAgICAgIHJlcG9ydEV4Y2VwdGlvblRvSW5zcGVjdG9yKGNvbnRleHQsIGV4Y2VwdGlvbk9iamVj
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1
bmN0aW9uLm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tGdW5jdGlv
bi5tbQppbmRleCBkZjc2MGM2Mjg2NjhhNGY0NmU4OWQ1MzM2MDkzZDFjYTVjMDI0NGRjLi40YTY3
YTZiNGQ1MzNiOTZkMGYxNmMzZjk5Zjc2NjE0NGMwNWIwZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0KQEAgLTEyOCw3ICsxMjgs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAg
KmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJlZiks
ICJBcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBPYmplY3RpdmUtQyBDbGFzcyJfcykpOworICAgICAg
ICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0UmVm
KSwgIkFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIE9iamVjdGl2ZS1DIENsYXNzIl9zdHIpKTsKICAg
ICB9CiAKICAgICBSZXRhaW5QdHI8Q2xhc3M+IG1fY2xhc3M7CkBAIC00ODMsNyArNDgzLDcgQEAg
c3RhdGljIEpTVmFsdWVSZWYgb2JqQ0NhbGxiYWNrRnVuY3Rpb25DYWxsQXNGdW5jdGlvbihKU0Nv
bnRleHRSZWYgY2FsbGVyQ29udGV4dCwKIAogICAgIGlmIChpbXBsLT50eXBlKCkgPT0gQ2FsbGJh
Y2tJbml0TWV0aG9kKSB7CiAgICAgICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVmID0g
W2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXTsKLSAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVm
KEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJlZiksICJDYW5ub3QgY2FsbCBhIGNs
YXNzIGNvbnN0cnVjdG9yIHdpdGhvdXQgfG5ld3wiX3MpKTsKKyAgICAgICAgKmV4Y2VwdGlvbiA9
IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJlZiksICJDYW5ub3QgY2Fs
bCBhIGNsYXNzIGNvbnN0cnVjdG9yIHdpdGhvdXQgfG5ld3wiX3N0cikpOwogICAgICAgICBpZiAo
KmV4Y2VwdGlvbikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4g
SlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dFJlZik7CkBAIC01MjYsNyArNTI2LDcgQEAgc3Rh
dGljIEpTT2JqZWN0UmVmIG9iakNDYWxsYmFja0Z1bmN0aW9uQ2FsbEFzQ29uc3RydWN0b3IoSlND
b250ZXh0UmVmIGNhbGxlckNvbnQKIAogICAgIEpTR2xvYmFsQ29udGV4dFJlZiBjb250ZXh0UmVm
ID0gW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXTsKICAgICBpZiAoIUpTVmFsdWVJc09iamVj
dChjb250ZXh0UmVmLCByZXN1bHQpKSB7Ci0gICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6
OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRSZWYpLCAiT2JqZWN0aXZlLUMgYmxvY2tzIGNh
bGxlZCBhcyBjb25zdHJ1Y3RvcnMgbXVzdCByZXR1cm4gYW4gb2JqZWN0LiJfcykpOworICAgICAg
ICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0UmVm
KSwgIk9iamVjdGl2ZS1DIGJsb2NrcyBjYWxsZWQgYXMgY29uc3RydWN0b3JzIG11c3QgcmV0dXJu
IGFuIG9iamVjdC4iX3N0cikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
QVNTRVJUKCEqZXhjZXB0aW9uKTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBKU1ZhbHVlUmVmIE9iakND
YWxsYmFja0Z1bmN0aW9uSW1wbDo6Y2FsbChKU0NvbnRleHQgKmNvbnRleHQsIEpTT2JqZWN0UmVm
IHRoaXNPYgogICAgICAgICBSRUxFQVNFX0FTU0VSVCghdGhpc09iamVjdCk7CiAgICAgICAgIHRh
cmdldCA9IFttX2luc3RhbmNlQ2xhc3MgYWxsb2NdOwogICAgICAgICBpZiAoIXRhcmdldCB8fCAh
W3RhcmdldCBpc0tpbmRPZkNsYXNzOm1faW5zdGFuY2VDbGFzcy5nZXQoKV0pIHsKLSAgICAgICAg
ICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRS
ZWYpLCAic2VsZiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgT2JqZWN0aXZlLUMgaW5zdGFuY2UgbWV0
aG9kIl9zKSk7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBl
RXJyb3IodG9KUyhjb250ZXh0UmVmKSwgInNlbGYgdHlwZSBjaGVjayBmYWlsZWQgZm9yIE9iamVj
dGl2ZS1DIGluc3RhbmNlIG1ldGhvZCJfc3RyKSk7CiAgICAgICAgICAgICBpZiAoKmV4Y2VwdGlv
bikKICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0UmVmKTsKQEAgLTYwNCw3ICs2MDQsNyBAQCBKU1Zh
bHVlUmVmIE9iakNDYWxsYmFja0Z1bmN0aW9uSW1wbDo6Y2FsbChKU0NvbnRleHQgKmNvbnRleHQs
IEpTT2JqZWN0UmVmIHRoaXNPYgogICAgIGNhc2UgQ2FsbGJhY2tJbnN0YW5jZU1ldGhvZDogewog
ICAgICAgICB0YXJnZXQgPSB0cnlVbndyYXBPYmpjT2JqZWN0KGNvbnRleHRSZWYsIHRoaXNPYmpl
Y3QpOwogICAgICAgICBpZiAoIXRhcmdldCB8fCAhW3RhcmdldCBpc0tpbmRPZkNsYXNzOm1faW5z
dGFuY2VDbGFzcy5nZXQoKV0pIHsKLSAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6
OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRSZWYpLCAic2VsZiB0eXBlIGNoZWNrIGZhaWxl
ZCBmb3IgT2JqZWN0aXZlLUMgaW5zdGFuY2UgbWV0aG9kIl9zKSk7CisgICAgICAgICAgICAqZXhj
ZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250ZXh0UmVmKSwgInNl
bGYgdHlwZSBjaGVjayBmYWlsZWQgZm9yIE9iamVjdGl2ZS1DIGluc3RhbmNlIG1ldGhvZCJfc3Ry
KSk7CiAgICAgICAgICAgICBpZiAoKmV4Y2VwdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
UmVmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxs
YmFja0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDYWxs
YmFja0Z1bmN0aW9uLmNwcAppbmRleCAwODEwNzdhNGMwNDNjY2I0OGFlYjI5YjAxZjhmZmMwZDhh
ZmJlMTNhLi41NzE0YTQ0ZTQ5ZmIwM2ZjODNkNDI0MzMwMTcyZmIwZTc5ZWYyNWQ4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rp
b24uY3BwCkBAIC05NSw3ICs5NSw3IEBAIEpTVmFsdWVSZWYgSlNDQ2FsbGJhY2tGdW5jdGlvbjo6
Y2FsbChKU0NvbnRleHRSZWYgY2FsbGVyQ29udGV4dCwgSlNPYmplY3RSZWYgdGhpCiAgICAgYXV0
byoganNDb250ZXh0ID0ganNjQ29udGV4dEdldEpTQ29udGV4dChjb250ZXh0LmdldCgpKTsKIAog
ICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6Q29uc3RydWN0b3IpIHsKLSAgICAgICAgKmV4Y2VwdGlv
biA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoanNDb250ZXh0KSwgImNhbm5vdCBj
YWxsIGEgY2xhc3MgY29uc3RydWN0b3Igd2l0aG91dCB8bmV3fCJfcykpOworICAgICAgICAqZXhj
ZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhqc0NvbnRleHQpLCAiY2Fu
bm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciB3aXRob3V0IHxuZXd8Il9zdHIpKTsKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGpzQ29udGV4dCk7CiAgICAgfQogCkBAIC0x
MDMsNyArMTAzLDcgQEAgSlNWYWx1ZVJlZiBKU0NDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKEpTQ29u
dGV4dFJlZiBjYWxsZXJDb250ZXh0LCBKU09iamVjdFJlZiB0aGkKICAgICBpZiAobV90eXBlID09
IFR5cGU6Ok1ldGhvZCkgewogICAgICAgICBpbnN0YW5jZSA9IGpzY0NvbnRleHRXcmFwcGVkT2Jq
ZWN0KGNvbnRleHQuZ2V0KCksIHRoaXNPYmplY3QpOwogICAgICAgICBpZiAoIWluc3RhbmNlKSB7
Ci0gICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9K
Uyhqc0NvbnRleHQpLCAiaW52YWxpZCBpbnN0YW5jZSB0eXBlIGluIG1ldGhvZCJfcykpOworICAg
ICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoanND
b250ZXh0KSwgImludmFsaWQgaW5zdGFuY2UgdHlwZSBpbiBtZXRob2QiX3N0cikpOwogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGpzQ29udGV4dCk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xNjksNyArMTY5LDcgQEAgSlNPYmplY3RSZWYgSlNDQ2FsbGJhY2tGdW5jdGlv
bjo6Y29uc3RydWN0KEpTQ29udGV4dFJlZiBjYWxsZXJDb250ZXh0LCBzaXplX3QgYXIKICAgICBh
dXRvKiBqc0NvbnRleHQgPSBqc2NDb250ZXh0R2V0SlNDb250ZXh0KGNvbnRleHQuZ2V0KCkpOwog
CiAgICAgaWYgKG1fcmV0dXJuVHlwZSA9PSBHX1RZUEVfTk9ORSkgewotICAgICAgICAqZXhjZXB0
aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhqc0NvbnRleHQpLCAiY29uc3Ry
dWN0b3JzIGNhbm5vdCBiZSB2b2lkIl9zKSk7CisgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihK
U0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGpzQ29udGV4dCksICJjb25zdHJ1Y3RvcnMgY2Fubm90
IGJlIHZvaWQiX3N0cikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTIy
Myw3ICsyMjMsNyBAQCBKU09iamVjdFJlZiBKU0NDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3Qo
SlNDb250ZXh0UmVmIGNhbGxlckNvbnRleHQsIHNpemVfdCBhcgogICAgIGNhc2UgR19UWVBFX09C
SkVDVDoKICAgICAgICAgaWYgKGF1dG8qIHB0ciA9IHJldHVyblZhbHVlLmRhdGFbMF0udl9wb2lu
dGVyKQogICAgICAgICAgICAgcmV0dXJuIHRvUmVmKGpzY0NsYXNzR2V0T3JDcmVhdGVKU1dyYXBw
ZXIobV9jbGFzcy5nZXQoKSwgY29udGV4dC5nZXQoKSwgcHRyKSk7Ci0gICAgICAgICpleGNlcHRp
b24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGpzQ29udGV4dCksICJjb25zdHJ1
Y3RvciByZXR1cm5lZCBudWxsIl9zKSk7CisgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6
OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGpzQ29udGV4dCksICJjb25zdHJ1Y3RvciByZXR1cm5lZCBu
dWxsIl9zdHIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgKmV4Y2Vw
dGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoanNDb250ZXh0KSwgbWFrZVN0
cmluZygiaW52YWxpZCB0eXBlICIsIGdfdHlwZV9uYW1lKEdfVkFMVUVfVFlQRSgmcmV0dXJuVmFs
dWUpKSwgIiByZXR1cm5lZCBieSBjb25zdHJ1Y3RvciIpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKaW5kZXggOWRjZWFmYzViODNjYTlhNWUzODE0
OTQxZGQwNGNkNzRkZWUyNWJiNS4uZmE1ZjFjMzMwNzAzNWYyZDg4NGUxYzhkNDVlYTIwY2Q5YzE1
MmJiMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNw
cApAQCAtNTQzLDcgKzU0Myw3IEBAIHZvaWQganNjQ29udGV4dEpTVmFsdWVUb0dWYWx1ZShKU0ND
b250ZXh0KiBjb250ZXh0LCBKU1ZhbHVlUmVmIGpzVmFsdWUsIEdUeXBlIHR5CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAqZXhjZXB0aW9uID0g
dG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiaW52YWxpZCBwb2ludGVy
IHR5cGUiX3MpKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsICJpbnZhbGlkIHBvaW50ZXIgdHlwZSJfc3RyKSk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNTU0LDcgKzU1NCw3IEBAIHZvaWQganNj
Q29udGV4dEpTVmFsdWVUb0dWYWx1ZShKU0NDb250ZXh0KiBjb250ZXh0LCBKU1ZhbHVlUmVmIGpz
VmFsdWUsIEdUeXBlIHR5CiAgICAgICAgIGVsc2UgaWYgKEdfSVNfT0JKRUNUKHdyYXBwZWRPYmpl
Y3QpKQogICAgICAgICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0KHZhbHVlLCB3cmFwcGVkT2JqZWN0
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIndyYXBwZWQgb2JqZWN0IGlzIG5vdCBhIEdPYmpl
Y3QiX3MpKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsICJ3cmFwcGVkIG9iamVjdCBpcyBub3QgYSBHT2JqZWN0Il9zdHIp
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgR19UWVBFX0xPTkc6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFsdWUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcAppbmRleCA0ZGM2OTZlYzg2ZGY5
MDFjM2U5MmM0MGRhZjkwNDQ4ZTJhYTY4NTgwLi40MmNhOTViMmY2MTZkODdlNmNiYjE4YzQ2MTBl
NWFjYWM3NjMxZmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIv
SlNDVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1
ZS5jcHAKQEAgLTExMDUsMTIgKzExMDUsMTIgQEAgc3RhdGljIHZvaWQganNjVmFsdWVPYmplY3RE
ZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKEpTQ1ZhbHVlKiB2YWx1ZSwgY29uc3QgY2hhciogcHIKICAg
ICAgICAgICAgIGNsb3N1cmUgPSBhZG9wdEdSZWYoZ19jY2xvc3VyZV9uZXdfc3dhcChnZXR0ZXIs
IHVzZXJEYXRhLCByZWludGVycHJldF9jYXN0PEdDbG9zdXJlTm90aWZ5PihyZWludGVycHJldF9j
YXN0PEdDYWxsYmFjaz4oZGVzdHJveU5vdGlmeSkpKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAg
ICAgIGNsb3N1cmUgPSBhZG9wdEdSZWYoZ19jY2xvc3VyZV9uZXcoZ2V0dGVyLCB1c2VyRGF0YSwg
cmVpbnRlcnByZXRfY2FzdDxHQ2xvc3VyZU5vdGlmeT4ocmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJh
Y2s+KGRlc3Ryb3lOb3RpZnkpKSkpOwotICAgICAgICBhdXRvIGZ1bmN0aW9uID0gSlNDOjpKU0ND
YWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgImdldCJfcywgZnVuY3Rp
b25UeXBlLCBudWxscHRyLCBXVEZNb3ZlKGNsb3N1cmUpLCBwcm9wZXJ0eVR5cGUsIFZlY3RvcjxH
VHlwZT4geyB9KTsKKyAgICAgICAgYXV0byBmdW5jdGlvbiA9IEpTQzo6SlNDQ2FsbGJhY2tGdW5j
dGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsICJnZXQiX3N0ciwgZnVuY3Rpb25UeXBlLCBu
dWxscHRyLCBXVEZNb3ZlKGNsb3N1cmUpLCBwcm9wZXJ0eVR5cGUsIFZlY3RvcjxHVHlwZT4geyB9
KTsKICAgICAgICAgZGVzY3JpcHRvci5zZXRHZXR0ZXIoZnVuY3Rpb24pOwogICAgIH0KICAgICBp
ZiAoc2V0dGVyKSB7CiAgICAgICAgIEdSZWZQdHI8R0Nsb3N1cmU+IGNsb3N1cmUgPSBhZG9wdEdS
ZWYoZ19jY2xvc3VyZV9uZXcoc2V0dGVyLCB1c2VyRGF0YSwgZ2V0dGVyID8gbnVsbHB0ciA6IHJl
aW50ZXJwcmV0X2Nhc3Q8R0Nsb3N1cmVOb3RpZnk+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNr
PihkZXN0cm95Tm90aWZ5KSkpKTsKLSAgICAgICAgYXV0byBmdW5jdGlvbiA9IEpTQzo6SlNDQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsICJzZXQiX3MsIGZ1bmN0aW9u
VHlwZSwgbnVsbHB0ciwgV1RGTW92ZShjbG9zdXJlKSwgR19UWVBFX05PTkUsIFZlY3RvcjxHVHlw
ZT4geyBwcm9wZXJ0eVR5cGUgfSk7CisgICAgICAgIGF1dG8gZnVuY3Rpb24gPSBKU0M6OkpTQ0Nh
bGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAic2V0Il9zdHIsIGZ1bmN0
aW9uVHlwZSwgbnVsbHB0ciwgV1RGTW92ZShjbG9zdXJlKSwgR19UWVBFX05PTkUsIFZlY3RvcjxH
VHlwZT4geyBwcm9wZXJ0eVR5cGUgfSk7CiAgICAgICAgIGRlc2NyaXB0b3Iuc2V0U2V0dGVyKGZ1
bmN0aW9uKTsKICAgICB9CiAgICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blBy
b3BlcnR5KG9iamVjdCwgZ2xvYmFsT2JqZWN0LCBuYW1lLT5pZGVudGlmaWVyKCZ2bSksIGRlc2Ny
aXB0b3IsIHRydWUpOwpAQCAtMTE3Miw3ICsxMTcyLDcgQEAgc3RhdGljIEdSZWZQdHI8SlNDVmFs
dWU+IGpzY1ZhbHVlRnVuY3Rpb25DcmVhdGUoSlNDQ29udGV4dCogY29udGV4dCwgY29uc3QgY2hh
cioKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0b0pTKGpzY0NvbnRl
eHRHZXRKU0NvbnRleHQoY29udGV4dCkpOwogICAgIEpTQzo6Vk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih2bSk7Ci0gICAgYXV0byogZnVu
Y3Rpb25PYmplY3QgPSB0b1JlZihKU0M6OkpTQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBuYW1lID8gU3RyaW5nOjpmcm9tVVRGOChuYW1lKSA6ICJhbm9ueW1vdXMi
X3MsCisgICAgYXV0byogZnVuY3Rpb25PYmplY3QgPSB0b1JlZihKU0M6OkpTQ0NhbGxiYWNrRnVu
Y3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBuYW1lID8gU3RyaW5nOjpmcm9tVVRGOChu
YW1lKSA6ICJhbm9ueW1vdXMiX3N0ciwKICAgICAgICAgSlNDOjpKU0NDYWxsYmFja0Z1bmN0aW9u
OjpUeXBlOjpGdW5jdGlvbiwgbnVsbHB0ciwgV1RGTW92ZShjbG9zdXJlKSwgcmV0dXJuVHlwZSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSkpOwogICAgIHJldHVybiBqc2NDb250ZXh0R2V0T3JDcmVhdGVW
YWx1ZShjb250ZXh0LCBmdW5jdGlvbk9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpblV0aWxzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgKaW5kZXggNDAxYzJmOTM3ZWI1NGExMjMyMDBiMzIw
NzcwMzIzNDFmNjc1MTU3ZS4uMjAxZmNkOTNkOTU3NDI2M2JhMDZlY2UxN2MyYzc4MWM0MjgyMjgz
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0aW5VdGls
cy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluVXRpbHMuaApA
QCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBJTklUSUFMSVpF
X0JVSUxUSU5fTkFNRVMobmFtZSkgLCBtXyMjbmFtZShKU0M6OklkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICNuYW1lKSksIG1fIyNuYW1lIyNQcml2YXRlTmFtZShKU0M6OklkZW50aWZpZXI6OmZy
b21VaWQoSlNDOjpQcml2YXRlTmFtZShKU0M6OlByaXZhdGVOYW1lOjpQcml2YXRlU3ltYm9sLCAj
bmFtZSAiIl9zKSkpCisjZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1f
IyNuYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKSwgbV8jI25hbWUj
I1ByaXZhdGVOYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVpZChKU0M6OlByaXZhdGVOYW1lKEpT
Qzo6UHJpdmF0ZU5hbWU6OlByaXZhdGVTeW1ib2wsICNuYW1lICIiX3N0cikpKQogI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fTkFNRVMobmFtZSkgY29uc3QgSlNDOjpJZGVudGlmaWVyIG1fIyNuYW1l
OyBjb25zdCBKU0M6OklkZW50aWZpZXIgbV8jI25hbWUjI1ByaXZhdGVOYW1lOwogI2RlZmluZSBE
RUNMQVJFX0JVSUxUSU5fSURFTlRJRklFUl9BQ0NFU1NPUihuYW1lKSBcCiAgICAgY29uc3QgSlND
OjpJZGVudGlmaWVyJiBuYW1lIyNQdWJsaWNOYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7
IH0gXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRl
eCAwOThhZWQ5MzVhNjhmN2Q2Njg3YmQzNTIzMjUzMDc3ZjMxZWQxOWYyLi42NDFmMzEyZTI1NzQ3
M2E4MTU5MGU1YmFhZjgwMDNjMGZkMzRjMjFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvZGUvQ29kZUJsb2NrLmNwcApAQCAtMzIwMCw3ICszMjAwLDcgQEAgU3RyaW5nIENvZGVC
bG9jazo6bmFtZUZvclJlZ2lzdGVyKFZpcnR1YWxSZWdpc3RlciB2aXJ0dWFsUmVnaXN0ZXIpCiAg
ICAgICAgIH0KICAgICB9CiAgICAgaWYgKHZpcnR1YWxSZWdpc3RlciA9PSB0aGlzUmVnaXN0ZXIo
KSkKLSAgICAgICAgcmV0dXJuICJ0aGlzIl9zOworICAgICAgICByZXR1cm4gInRoaXMiX3N0cjsK
ICAgICBpZiAodmlydHVhbFJlZ2lzdGVyLmlzQXJndW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoImFyZ3VtZW50c1siLCBwYWQoJyAnLCAzLCB2aXJ0dWFsUmVnaXN0ZXIudG9Bcmd1
bWVudCgpKSwgJ10nKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA3OTNlMDlmMjYzMDViMzc4ZmQw
ZWE0YjI5ODNjMjcwZWJmNDhhYjQ4Li4yMTA5ZTE5YjdkNmRmMWNhOTVmZDJmYzNhM2VkZTc0MDQ0
YjY1M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNDg3Myw3ICs0ODczLDcgQEAgUmVnaXN0ZXJJ
RCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJdGVyYXRvckdlbmVyaWNOZXh0KFJlZ2lzdGVySUQq
IGRzdCwgUmVnaXN0ZXIKICAgICB7CiAgICAgICAgIFJlZjxMYWJlbD4gdHlwZUlzT2JqZWN0ID0g
bmV3TGFiZWwoKTsKICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBv
cmFyeSgpLCBkc3QpLCB0eXBlSXNPYmplY3QuZ2V0KCkpOwotICAgICAgICBlbWl0VGhyb3dUeXBl
RXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOwor
ICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMg
bm90IGFuIG9iamVjdC4iX3N0cik7CiAgICAgICAgIGVtaXRMYWJlbCh0eXBlSXNPYmplY3QuZ2V0
KCkpOwogICAgIH0KICAgICByZXR1cm4gZHN0OwpAQCAtNDkwNiw3ICs0OTA2LDcgQEAgdm9pZCBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY0Nsb3NlKFJlZ2lzdGVySUQqIGl0
ZXJhdG9yLCBjb25zdCBUaHIKICAgICAgICAgZW1pdEF3YWl0KHZhbHVlLmdldCgpKTsKIAogICAg
IGVtaXRKdW1wSWZUcnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkp
LCBkb25lLmdldCgpKTsKLSAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBp
bnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
SXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfc3RyKTsKICAgICBl
bWl0TGFiZWwoZG9uZS5nZXQoKSk7CiB9CiAKQEAgLTQ5ODUsNyArNDk4NSw3IEBAIFJlZ2lzdGVy
SUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChSZWdpc3RlcklEKiBhcmd1
bWVudCwgVGhyb3dhYmxlCiAgICAgICAgICAgICAgICAgICAgIEVtaXRBd2FpdCBlbWl0QXdhaXRJ
bkl0ZXJhdG9yQ2xvc2UgPSBwYXJzZU1vZGUoKSA9PSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2Vu
ZXJhdG9yQm9keU1vZGUgPyBFbWl0QXdhaXQ6OlllcyA6IEVtaXRBd2FpdDo6Tm87CiAgICAgICAg
ICAgICAgICAgICAgIGVtaXRJdGVyYXRvckdlbmVyaWNDbG9zZShpdGVyYXRvci5nZXQoKSwgbm9k
ZSwgZW1pdEF3YWl0SW5JdGVyYXRvckNsb3NlKTsKIAotICAgICAgICAgICAgICAgICAgICBlbWl0
VGhyb3dUeXBlRXJyb3IoIkRlbGVnYXRlZCBnZW5lcmF0b3IgZG9lcyBub3QgaGF2ZSBhICd0aHJv
dycgbWV0aG9kLiJfcyk7CisgICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigi
RGVsZWdhdGVkIGdlbmVyYXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIl9zdHIp
OwogCiAgICAgICAgICAgICAgICAgICAgIGVtaXRMYWJlbCh0aHJvd01ldGhvZEZvdW5kLmdldCgp
KTsKICAgICAgICAgICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyB0aHJvd0FyZ3VtZW50cygqdGhp
cywgbnVsbHB0ciwgMSk7CkBAIC01MDIyLDcgKzUwMjIsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQsIFRocm93
YWJsZQogCiAgICAgICAgICAgICAgICAgICAgIFJlZjxMYWJlbD4gcmV0dXJuSXRlcmF0b3JSZXN1
bHRJc09iamVjdCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICAgICAgICAgIGVtaXRKdW1wSWZU
cnVlKGVtaXRJc09iamVjdChuZXdUZW1wb3JhcnkoKSwgdmFsdWUuZ2V0KCkpLCByZXR1cm5JdGVy
YXRvclJlc3VsdElzT2JqZWN0LmdldCgpKTsKLSAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93
VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
KTsKKyAgICAgICAgICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpOwogCiAgICAgICAgICAgICAgICAg
ICAgIGVtaXRMYWJlbChyZXR1cm5JdGVyYXRvclJlc3VsdElzT2JqZWN0LmdldCgpKTsKIApAQCAt
NTA1Niw3ICs1MDU2LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
Z2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKIAogICAgICAgICAgICAg
UmVmPExhYmVsPiBpdGVyYXRvclZhbHVlSXNPYmplY3QgPSBuZXdMYWJlbCgpOwogICAgICAgICAg
ICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQo
KSksIGl0ZXJhdG9yVmFsdWVJc09iamVjdC5nZXQoKSk7Ci0gICAgICAgICAgICBlbWl0VGhyb3dU
eXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3Mp
OworICAgICAgICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJm
YWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpOwogICAgICAgICAgICAgZW1pdExhYmVsKGl0ZXJh
dG9yVmFsdWVJc09iamVjdC5nZXQoKSk7CiAKICAgICAgICAgICAgIGVtaXRKdW1wSWZUcnVlKGVt
aXRHZXRCeUlkKG5ld1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSwgcHJvcGVydHlOYW1lcygpLmRv
bmUpLCBsb29wRG9uZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggZjZlNDNlYzhjYmJhOGYyNTU5MGM2Zjgw
OGEyNDQ3NWRjMmI2ZWFlMS4uMzcwNGYzZDcyNDEzYmZkOGU5Y2NiOGI1OWM4YzIyZWVmZDNmZjIz
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXND
b2RlZ2VuLmNwcApAQCAtMTIyOCw3ICsxMjI4LDcgQEAgUmVnaXN0ZXJJRCogRnVuY3Rpb25DYWxs
VmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmUK
ICAgICAgICAgCiAgICAgICAgIFJlZjxMYWJlbD4gdGhpc0lzRW1wdHlMYWJlbCA9IGdlbmVyYXRv
ci5uZXdMYWJlbCgpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEp1bXBJZlRydWUoZ2VuZXJhdG9y
LmVtaXRJc0VtcHR5KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2VuZXJhdG9yLnRoaXNSZWdp
c3RlcigpKSwgdGhpc0lzRW1wdHlMYWJlbC5nZXQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0
VGhyb3dSZWZlcmVuY2VFcnJvcigiJ3N1cGVyKCknIGNhbid0IGJlIGNhbGxlZCBtb3JlIHRoYW4g
b25jZSBpbiBhIGNvbnN0cnVjdG9yLiJfcyk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dS
ZWZlcmVuY2VFcnJvcigiJ3N1cGVyKCknIGNhbid0IGJlIGNhbGxlZCBtb3JlIHRoYW4gb25jZSBp
biBhIGNvbnN0cnVjdG9yLiJfc3RyKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRMYWJlbCh0aGlz
SXNFbXB0eUxhYmVsLmdldCgpKTsKIAogICAgICAgICBnZW5lcmF0b3IubW92ZShnZW5lcmF0b3Iu
dGhpc1JlZ2lzdGVyKCksIHJldCk7CkBAIC0yNTI0LDggKzI1MjQsOCBAQCBSZWdpc3RlcklEKiBQ
b3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqCiAKICAgICBBU1NFUlQobV9leHByLT5pc0Z1bmN0aW9uQ2FsbCgpKTsKICAgICBy
ZXR1cm4gZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCBtX29wZXJhdG9yID09IE9w
ZXJhdG9yOjpQbHVzUGx1cwotICAgICAgICA/ICJQb3N0Zml4ICsrIG9wZXJhdG9yIGFwcGxpZWQg
dG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIl9zCi0gICAgICAgIDogIlBvc3RmaXgg
LS0gb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3Ms
CisgICAgICAgID8gIlBvc3RmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlz
IG5vdCBhIHJlZmVyZW5jZS4iX3N0cgorICAgICAgICA6ICJQb3N0Zml4IC0tIG9wZXJhdG9yIGFw
cGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIl9zdHIsCiAgICAgICAgIGRz
dCk7CiB9CiAKQEAgLTI4MTEsOCArMjgxMSw4IEBAIFJlZ2lzdGVySUQqIFByZWZpeE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkCiAK
ICAgICBBU1NFUlQobV9leHByLT5pc0Z1bmN0aW9uQ2FsbCgpKTsKICAgICByZXR1cm4gZW1pdFRo
cm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCBtX29wZXJhdG9yID09IE9wZXJhdG9yOjpQbHVz
UGx1cwotICAgICAgICA/ICJQcmVmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0
IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3MKLSAgICAgICAgOiAiUHJlZml4IC0tIG9wZXJhdG9yIGFw
cGxpZWQgdG8gdmFsdWUgdGhhdCBpcyBub3QgYSByZWZlcmVuY2UuIl9zLAorICAgICAgICA/ICJQ
cmVmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5j
ZS4iX3N0cgorICAgICAgICA6ICJQcmVmaXggLS0gb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0
aGF0IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3N0ciwKICAgICAgICAgZHN0KTsKIH0KIApAQCAtMzY5
OCw3ICszNjk4LDcgQEAgUmVnaXN0ZXJJRCogU2hvcnRDaXJjdWl0UmVhZE1vZGlmeURvdE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXIKIAogUmVnaXN0ZXJJRCogQXNz
aWduRXJyb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewotICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihn
ZW5lcmF0b3IsICJMZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9z
LCBkc3QpOworICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsICJM
ZWZ0IHNpZGUgb2YgYXNzaWdubWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9zdHIsIGRzdCk7CiB9
CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBBc3NpZ25CcmFja2V0Tm9kZSAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDE4MCw3ICs0MTgwLDcgQEAg
dm9pZCBGb3JJbk5vZGU6OmVtaXRMb29wSGVhZGVyKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZ2lzdGVySUQqIHByb3BlcnQKIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmICgh
bV9sZXhwci0+aXNBc3NpZ25SZXNvbHZlTm9kZSgpICYmICFtX2xleHByLT5pc0Fzc2lnbm1lbnRM
b2NhdGlvbigpKSB7Ci0gICAgICAgIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwg
IkxlZnQgc2lkZSBvZiBmb3ItaW4gc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3MpOwor
ICAgICAgICBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsICJMZWZ0IHNpZGUgb2Yg
Zm9yLWluIHN0YXRlbWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9zdHIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC00MjUyLDcgKzQyNTIsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdEJ5
dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIHZv
aWQgRm9yT2ZOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZXJJRCogZHN0KQogewogICAgIGlmICghbV9sZXhwci0+aXNBc3NpZ25tZW50TG9jYXRp
b24oKSkgewotICAgICAgICBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsICJMZWZ0
IHNpZGUgb2YgZm9yLW9mIHN0YXRlbWVudCBpcyBub3QgYSByZWZlcmVuY2UuIl9zKTsKKyAgICAg
ICAgZW1pdFRocm93UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1v
ZiBzdGF0ZW1lbnQgaXMgbm90IGEgcmVmZXJlbmNlLiJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtNTE0MCw3ICs1MTQwLDcgQEAgUmVnaXN0ZXJJRCogQ2xhc3NFeHByTm9kZTo6
ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQKICAg
ICAgICAgUmVmPExhYmVsPiBzdXBlcmNsYXNzSXNDb25zdHJ1Y3RvckxhYmVsID0gZ2VuZXJhdG9y
Lm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3Iu
ZW1pdElzQ29uc3RydWN0b3IoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzdXBlcmNsYXNzLmdl
dCgpKSwgc3VwZXJjbGFzc0lzQ29uc3RydWN0b3JMYWJlbC5nZXQoKSk7CiAgICAgICAgIGdlbmVy
YXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVGhlIHN1cGVyY2xhc3Mg
aXMgbm90IGEgY29uc3RydWN0b3IuIl9zKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5
cGVFcnJvcigiVGhlIHN1cGVyY2xhc3MgaXMgbm90IGEgY29uc3RydWN0b3IuIl9zdHIpOwogICAg
ICAgICBnZW5lcmF0b3IuZW1pdExhYmVsKHN1cGVyY2xhc3NJc0NvbnN0cnVjdG9yTGFiZWwuZ2V0
KCkpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEJ5SWQocHJvdG9QYXJlbnQuZ2V0KCksIHN1
cGVyY2xhc3MuZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkucHJvdG90eXBlKTsKIApA
QCAtNTQ0Nyw3ICs1NDQ3LDcgQEAgdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6dG9TdHJpbmcoU3Ry
aW5nQnVpbGRlciYgYnVpbGRlcikgY29uc3QKICAgICAKIHZvaWQgT2JqZWN0UGF0dGVybk5vZGU6
OmJpbmRWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiByaHMp
IGNvbnN0CiB7Ci0gICAgZ2VuZXJhdG9yLmVtaXRSZXF1aXJlT2JqZWN0Q29lcmNpYmxlKHJocywg
IlJpZ2h0IHNpZGUgb2YgYXNzaWdubWVudCBjYW5ub3QgYmUgZGVzdHJ1Y3R1cmVkIl9zKTsKKyAg
ICBnZW5lcmF0b3IuZW1pdFJlcXVpcmVPYmplY3RDb2VyY2libGUocmhzLCAiUmlnaHQgc2lkZSBv
ZiBhc3NpZ25tZW50IGNhbm5vdCBiZSBkZXN0cnVjdHVyZWQiX3N0cik7CiAKICAgICBCeXRlY29k
ZUdlbmVyYXRvcjo6UHJlc2VydmVkVERaU3RhY2sgcHJlc2VydmVkVERaU3RhY2s7CiAgICAgZ2Vu
ZXJhdG9yLnByZXNlcnZlVERaU3RhY2socHJlc2VydmVkVERaU3RhY2spOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcAppbmRleCAyOGYxMjE1YjM2
OGUzZThhMDFmMGUxNmQ1MjE2ODYyZTBmMThjYjgzLi4zYmRjYzVmMjg4NDcyMTg2MjgyZWE5MzY2
OTQ2ZjdjOTk1NjYyZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0J5dGVDb2RlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcApAQCAtNzM2Myw3ICs3MzYzLDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNl
cjo6cGFyc2VCbG9jayh1bnNpZ25lZCBsaW1pdCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgICAgIG1fY3VycmVudEJsb2NrID0gbm90T2JqZWN0QmxvY2s7CiAgICAgICAgICAg
ICAgICAgICAgIGNsZWFyQ2FjaGVzKCk7Ci0gICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVl
IGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3Ig
cmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgICAgICAgICAg
ICAgIExhenlKU1ZhbHVlIGVycm9yU3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dy
YXBoLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfc3RyKTsK
ICAgICAgICAgICAgICAgICAgICAgT3BJbmZvIGluZm8gPSBPcEluZm8obV9ncmFwaC5tX2xhenlK
U1ZhbHVlcy5hZGQoZXJyb3JTdHJpbmcpKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogZXJy
b3JNZXNzYWdlID0gYWRkVG9HcmFwaChMYXp5SlNDb25zdGFudCwgaW5mbyk7CiAgICAgICAgICAg
ICAgICAgICAgIGFkZFRvR3JhcGgoVGhyb3dTdGF0aWNFcnJvciwgT3BJbmZvKEVycm9yVHlwZTo6
VHlwZUVycm9yKSwgZXJyb3JNZXNzYWdlKTsKQEAgLTc1NzQsNyArNzU3NCw3IEBAIHZvaWQgQnl0
ZUNvZGVQYXJzZXI6OnBhcnNlQmxvY2sodW5zaWduZWQgbGltaXQpCiAgICAgICAgICAgICAgICAg
ewogICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRCbG9jayA9IG5vdE9iamVjdEJsb2NrOwog
ICAgICAgICAgICAgICAgICAgICBjbGVhckNhY2hlcygpOwotICAgICAgICAgICAgICAgICAgICBM
YXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdTdHJpbmcobV9ncmFwaCwg
Ikl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAg
ICAgICAgICAgICAgICBMYXp5SlNWYWx1ZSBlcnJvclN0cmluZyA9IExhenlKU1ZhbHVlOjpuZXdT
dHJpbmcobV9ncmFwaCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3N0cik7CiAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyBpbmZvID0gT3BJbmZvKG1fZ3Jh
cGgubV9sYXp5SlNWYWx1ZXMuYWRkKGVycm9yU3RyaW5nKSk7CiAgICAgICAgICAgICAgICAgICAg
IE5vZGUqIGVycm9yTWVzc2FnZSA9IGFkZFRvR3JhcGgoTGF6eUpTQ29uc3RhbnQsIGluZm8pOwog
ICAgICAgICAgICAgICAgICAgICBhZGRUb0dyYXBoKFRocm93U3RhdGljRXJyb3IsIE9wSW5mbyhF
cnJvclR5cGU6OlR5cGVFcnJvciksIGVycm9yTWVzc2FnZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RyaXZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0RyaXZlci5jcHAKaW5kZXggNjUwNzlmY2YxZTU3MzUxNjk3YTk5ZjVkOWNiMzQ1Yjlm
NmUzYTZjOS4uNDg3MDA4ZWY5NjdhZjZmMTg0NzcxMGM5YWM0OGFlNmIzMjBmMDlkNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcApAQCAtNzksNyArNzksNyBAQCBzdGF0
aWMgQ29tcGlsYXRpb25SZXN1bHQgY29tcGlsZUltcGwoCiAgICAgICAgIGRhdGFMb2coIkRGRyhE
cml2ZXIpIGNvbXBpbGluZyAiLCAqY29kZUJsb2NrLCAiIHdpdGggIiwgbW9kZSwgIiwgaW5zdHJ1
Y3Rpb25zIHNpemUgPSAiLCBjb2RlQmxvY2stPmluc3RydWN0aW9uc1NpemUoKSwgIlxuIik7CiAg
ICAgCiAgICAgaWYgKHZtLnR5cGVQcm9maWxlcigpKQotICAgICAgICB2bS50eXBlUHJvZmlsZXJM
b2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlv
bi4iX3MpOworICAgICAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMo
dm0sICJQcmVwYXJpbmcgZm9yIERGRyBjb21waWxhdGlvbi4iX3N0cik7CiAgICAgCiAgICAgUmVm
PFBsYW4+IHBsYW4gPSBhZG9wdFJlZigKICAgICAgICAgKm5ldyBQbGFuKGNvZGVCbG9jaywgcHJv
ZmlsZWRERkdDb2RlQmxvY2ssIG1vZGUsIG9zckVudHJ5Qnl0ZWNvZGVJbmRleCwgbXVzdEhhbmRs
ZVZhbHVlcykpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVy
YXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAK
aW5kZXggZGM1MDMxNjQ3NWFmODkxYTVmZGJjZWRjODQ2ZmJhYTk0NGI4NjFkZC4uMjk3MjNmODkz
ZDhiMjllZGNjNGEwYTRjNmQ4YWI4ZGM1NGVlZTA1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCkBAIC0xNzksNyArMTc5LDcgQEAgY2hhciogbmV3VHlw
ZWRBcnJheVdpdGhTaXplKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHIKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAoc2l6ZSA8IDApIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3Ro
IGlzIG5lZ2F0aXZlIl9zKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwg
c2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiUmVxdWVzdGVkIGxlbmd0aCBp
cyBuZWdhdGl2ZSJfc3RyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
MjkwLDcgKzI5MCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25PYmplY3RD
cmVhdGUsIEpTQ2VsbCosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgSlNWYWx1ZSBwcm90
b3R5cGUgPSBKU1ZhbHVlOjpkZWNvZGUoZW5jb2RlZFByb3RvdHlwZSk7CiAKICAgICBpZiAoIXBy
b3RvdHlwZS5pc09iamVjdCgpICYmICFwcm90b3R5cGUuaXNOdWxsKCkpIHsKLSAgICAgICAgdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2JqZWN0IHByb3RvdHlwZSBtYXkg
b25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iX3MpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9i
amVjdCBvciBudWxsLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC0xNzg5LDcgKzE3ODksNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3
QXJyYXlXaXRoU2l6ZSwgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYgogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWShzaXplIDwg
MCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3Vn
aCBwb3NpdGl2ZSBpbnRlZ2VyLiJfcykpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkFycmF5IHNpemUg
aXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zdHIpKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0xODE0LDcgKzE4MTQsNyBAQCBKU0NfREVGSU5F
X0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uTmV3QXJyYXlXaXRoU2l6ZUFuZEhpbnQsIGNoYXIqLCAo
SlNHbG9iYWxPYmplYwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIGlmIChVTkxJS0VMWShzaXplIDwgMCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJBcnJh
eSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJfcykpOworICAg
ICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZl
IGludGVnZXIuIl9zdHIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0y
NTgyLDcgKzI1ODIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW50MzJU
b1N0cmluZywgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChyYWRpeCA8IDIgfHwgcmFkaXgg
PiAzNikgewotICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJ0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3Qg
YmUgYmV0d2VlbiAyIGFuZCAzNiJfcykpOworICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJ0b1N0cmluZygpIHJh
ZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNiJfc3RyKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMjU5OCw3ICsyNTk4LDcgQEAgSlNDX0RFRklORV9K
SVRfT1BFUkFUSU9OKG9wZXJhdGlvbkludDUyVG9TdHJpbmcsIGNoYXIqLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE8KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpIHsKLSAgICAgICAgdGhyb3dWTUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAidG9T
dHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiX3MpKTsKKyAg
ICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MiBhbmQgMzYiX3N0cikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTI2
MTQsNyArMjYxNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Eb3VibGVU
b1N0cmluZywgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+
IDM2KSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBi
ZSBiZXR3ZWVuIDIgYW5kIDM2Il9zKSk7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgInRvU3RyaW5nKCkgcmFk
aXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2Il9zdHIpKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0zMjY1LDcgKzMyNjUsNyBAQCBKU0NfREVGSU5FX0pJ
VF9PUEVSQVRJT04ob3BlcmF0aW9uUHJvY2Vzc1R5cGVQcm9maWxlckxvZ0RGRywgdm9pZCwgKFZN
KiB2bVBvaW50ZQogICAgIENhbGxGcmFtZSogY2FsbEZyYW1lID0gREVDTEFSRV9DQUxMX0ZSQU1F
KHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNhbGxGcmFtZVRyYWNlciB0cmFjZXIodm0s
IGNhbGxGcmFtZSk7CiAKLSAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJp
ZXModm0sICJMb2cgRnVsbCwgY2FsbGVkIGZyb20gaW5zaWRlIERGRy4iX3MpOworICAgIHZtLnR5
cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwgIkxvZyBGdWxsLCBjYWxsZWQg
ZnJvbSBpbnNpZGUgREZHLiJfc3RyKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9w
ZXJhdGlvblJlc29sdmVTY29wZUZvckhvaXN0aW5nRnVuY0RlY2xJbkV2YWwsIEVuY29kZWRKU1Zh
bHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNTY29wZSogc2NvcGUsIFVuaXF1
ZWRTdHJpbmdJbXBsKiBpbXBsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCmluZGV4IDkyNjA0NWY4ZTE3ZDg0YzJi
MTVmZjc5NmFhZDFlNWUxYjdhZTBhNGEuLjBiOThlOWY3N2IyZTNhZjFjYmI3OTlmNjVlNmQxNDM2
ZmFmZTUzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5n
dGhSZWR1Y3Rpb25QaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcApAQCAtMzU4LDExICszNTgsMTEgQEAgcHJpdmF0ZToK
ICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlzTnVtYmVyKCkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gU3RyaW5nOjpudW1iZXIodmFsdWUuYXNOdW1iZXIoKSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5pc0Jvb2xlYW4oKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB2YWx1ZS5hc0Jvb2xlYW4oKSA/ICJ0cnVlIl9zIDogImZhbHNlIl9zOwor
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFzQm9vbGVhbigpID8gInRydWUi
X3N0ciA6ICJmYWxzZSJfc3RyOwogICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNOdWxs
KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gIm51bGwiX3M7CisgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gIm51bGwiX3N0cjsKICAgICAgICAgICAgICAgICAgICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gInVu
ZGVmaW5lZCJfczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAidW5kZWZpbmVkIl9z
dHI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgICAgICAg
ICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAK
aW5kZXggYzQwN2IwMGM0ZGFiN2Q2NzZhMDVmOWUzZDUwZGRkMWE3MjEwMDJhYi4uYzM5YzZiMzk4
YzQzNTcxYmE4NjFiZmZjYzRiMjI0NjE2N2MyZGVlYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtNTcyLDcgKzU3Miw3IEBAIHByaXZhdGU6
CiAgICAgICAgIGlmICghbV9ncmFwaER1bXApIHsKICAgICAgICAgICAgIFN0cmluZ1ByaW50U3Ry
ZWFtIG91dDsKICAgICAgICAgICAgIG1fZ3JhcGguZHVtcChvdXQpOwotICAgICAgICAgICAgbV9n
cmFwaER1bXAgPSBvdXQudHJ5VG9TdHJpbmcoKS52YWx1ZV9vcigiPG91dCBvZiBtZW1vcnkgd2hp
bGUgZHVtcGluZyBncmFwaD4iX3MpOworICAgICAgICAgICAgbV9ncmFwaER1bXAgPSBvdXQudHJ5
VG9TdHJpbmcoKS52YWx1ZV9vcigiPG91dCBvZiBtZW1vcnkgd2hpbGUgZHVtcGluZyBncmFwaD4i
X3N0cik7CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKG5vZGUtPm9wKCkpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXBTbmFwc2hvdEJ1aWxkZXIuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKaW5k
ZXggYThjZGU4ODE1MTc1N2NkN2RkYTQ5MGQ0NDQ1ODI3OGVhM2FmOGUxOS4uMDE3MDZiOWFlOGY1
MDk5NmI3YmVjNGE3OWZkOTY4NWYwNTA4YmFlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2hlYXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCBT
dHJpbmcgSGVhcFNuYXBzaG90QnVpbGRlcjo6anNvbihGdW5jdGlvbjxib29sIChjb25zdCBIZWFw
U25hcHNob3ROb2RlJik+IGFsbG93TgogCiAgICAgLy8gQnVpbGQgYSBsaXN0IG9mIHVzZWQgY2xh
c3MgbmFtZXMuCiAgICAgSGFzaE1hcDxTdHJpbmcsIHVuc2lnbmVkPiBjbGFzc05hbWVJbmRleGVz
OwotICAgIGNsYXNzTmFtZUluZGV4ZXMuc2V0KCI8cm9vdD4iX3MsIDApOworICAgIGNsYXNzTmFt
ZUluZGV4ZXMuc2V0KCI8cm9vdD4iX3N0ciwgMCk7CiAgICAgdW5zaWduZWQgbmV4dENsYXNzTmFt
ZUluZGV4ID0gMTsKIAogICAgIC8vIEJ1aWxkIGEgbGlzdCBvZiBsYWJlbHMgKHRoaXMgaXMganVz
dCBhIHN0cmluZyB0YWJsZSkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0NvbnNvbGVNZXNzYWdlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvQ29uc29sZU1lc3NhZ2UuY3BwCmluZGV4IGVmODlhZWQ1ZGFmNTk0NWJiMTc0YTMzMGZlOWZj
NmQ0OWYyYTAxYzMuLjQzZTU2ZGEyYzFmYzc2ZGU3NjMxOWM3MWVjMDNlM2FlMmRiODk1N2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2Uu
Y3BwCkBAIC0yNjQsMTIgKzI2NCwxMiBAQCB2b2lkIENvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250
ZW5kKENvbnNvbGVGcm9udGVuZERpc3BhdGNoZXImIGNvbnNvbGVGcm9udGVuZERpcwogICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c09iamVjdC0+YWRk
SXRlbShpbnNwZWN0b3JWYWx1ZS5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgICAgICAg
ICAgaWYgKG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCkgPiAxKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoYXV0byBpbnNwZWN0b3JPYmplY3QgPSBpbmplY3RlZFNjcmlwdC53cmFw
T2JqZWN0KGNvbHVtbnMsICJjb25zb2xlIl9zLCB0cnVlKSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChhdXRvIGluc3BlY3Rvck9iamVjdCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qo
Y29sdW1ucywgImNvbnNvbGUiX3N0ciwgdHJ1ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJndW1lbnRzT2JqZWN0LT5hZGRJdGVtKGluc3BlY3Rvck9iamVjdC5yZWxlYXNlTm9uTnVs
bCgpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2FyZ3VtZW50cy0+
YXJndW1lbnRDb3VudCgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gaW5z
cGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KG1fYXJndW1lbnRzLT5hcmd1
bWVudEF0KGkpLCAiY29uc29sZSJfcywgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gaW5zcGVjdG9yVmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0
KG1fYXJndW1lbnRzLT5hcmd1bWVudEF0KGkpLCAiY29uc29sZSJfc3RyLCBnZW5lcmF0ZVByZXZp
ZXcpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTI4NywxMCArMjg3LDEwIEBAIHZvaWQgQ29u
c29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciYgY29u
c29sZUZyb250ZW5kRGlzCiAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxQcm90b2NvbDo6UnVu
dGltZTo6UmVtb3RlT2JqZWN0PiBpbnNwZWN0b3JWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAg
c3dpdGNoIChtZXNzYWdlLnR5cGUpIHsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBKU09OTG9n
VmFsdWU6OlR5cGU6OkpTT046Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0b3JWYWx1
ZSA9IGluamVjdGVkU2NyaXB0LndyYXBKU09OU3RyaW5nKG1lc3NhZ2UudmFsdWUsICJjb25zb2xl
Il9zLCBnZW5lcmF0ZVByZXZpZXcpOworICAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdG9y
VmFsdWUgPSBpbmplY3RlZFNjcmlwdC53cmFwSlNPTlN0cmluZyhtZXNzYWdlLnZhbHVlLCAiY29u
c29sZSJfc3RyLCBnZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgSlNPTkxvZ1ZhbHVlOjpUeXBlOjpTdHJpbmc6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0
LndyYXBPYmplY3QoSlNDOjpKU1ZhbHVlKEpTQzo6anNTdHJpbmcoZ2xvYmFsT2JqZWN0KCktPnZt
KCksIG1lc3NhZ2UudmFsdWUpKSwgImNvbnNvbGUiX3MsIGdlbmVyYXRlUHJldmlldyk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBP
YmplY3QoSlNDOjpKU1ZhbHVlKEpTQzo6anNTdHJpbmcoZ2xvYmFsT2JqZWN0KCktPnZtKCksIG1l
c3NhZ2UudmFsdWUpKSwgImNvbnNvbGUiX3N0ciwgZ2VuZXJhdGVQcmV2aWV3KTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghaW5zcGVjdG9yVmFsdWUpCkBAIC0zNjMsNyArMzYzLDcgQEAgYm9vbCBD
b25zb2xlTWVzc2FnZTo6aXNFcXVhbChDb25zb2xlTWVzc2FnZSogbXNnKSBjb25zdAogdm9pZCBD
b25zb2xlTWVzc2FnZTo6Y2xlYXIoKQogewogICAgIGlmICghbV9tZXNzYWdlKQotICAgICAgICBt
X21lc3NhZ2UgPSAiPG1lc3NhZ2UgY29sbGVjdGVkPiJfczsKKyAgICAgICAgbV9tZXNzYWdlID0g
IjxtZXNzYWdlIGNvbGxlY3RlZD4iX3N0cjsKIAogICAgIGlmIChtX2FyZ3VtZW50cykKICAgICAg
ICAgbV9hcmd1bWVudHMgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKaW5kZXggMTI1MTA0
MzhiMmZjOWI0Njg2YTZjNTg3YzVhODZkNGU4M2EzOTE0NS4uNjYzOTk5YTIyMTY4ODJmNTNhMTRk
ZWZlNmIyNjk1NmRkMjdhZjdkYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCkBAIC0yMDEsNyArMjAx
LDcgQEAgc3RhdGljIFN0cmluZyBmaW5kTWFnaWNDb21tZW50KGNvbnN0IFN0cmluZyYgY29udGVu
dCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuU3RyaW4KIFN0cmluZyBmaW5kU3R5bGVzaGVldFNvdXJj
ZU1hcFVSTChjb25zdCBTdHJpbmcmIGNvbnRlbnQpCiB7CiAgICAgLy8gIi8qIyA8bmFtZT49PHZh
bHVlPiAqLyIgYW5kIGRlcHJlY2F0ZWQgIi8qQCIKLSAgICByZXR1cm4gZmluZE1hZ2ljQ29tbWVu
dChjb250ZW50LCAiL1xcKlsjQF1bXDA0MFx0XXNvdXJjZU1hcHBpbmdVUkw9W1wwNDBcdF0qKFte
XFxzXCdcIl0qKVtcMDQwXHRdKlxcKi8iX3MpOworICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50
KGNvbnRlbnQsICIvXFwqWyNAXVtcMDQwXHRdc291cmNlTWFwcGluZ1VSTD1bXDA0MFx0XSooW15c
XHNcJ1wiXSopW1wwNDBcdF0qXFwqLyJfc3RyKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgQ29udGVu
dFNlYXJjaFV0aWxpdGllcwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0LmNwcAppbmRleCA4YjI5MGZhZWJjMTg2NTUxOWIwZTdjNTE0ZjQ5NzU4
NWRmYzBiYmRhLi41MzRjMmRlODUxOTgzYmZkMzY1MDkzNThkYzYwZTgyNjgwMmMzZTRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNw
cApAQCAtNDMsMTIgKzQzLDEyIEBACiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogSW5qZWN0ZWRT
Y3JpcHQ6OkluamVjdGVkU2NyaXB0KCkKLSAgICA6IEluamVjdGVkU2NyaXB0QmFzZSgiSW5qZWN0
ZWRTY3JpcHQiX3MpCisgICAgOiBJbmplY3RlZFNjcmlwdEJhc2UoIkluamVjdGVkU2NyaXB0Il9z
dHIpCiB7CiB9CiAKIEluamVjdGVkU2NyaXB0OjpJbmplY3RlZFNjcmlwdChEZXByZWNhdGVkOjpT
Y3JpcHRPYmplY3QgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIEluc3BlY3RvckVudmlyb25tZW50KiBl
bnZpcm9ubWVudCkKLSAgICA6IEluamVjdGVkU2NyaXB0QmFzZSgiSW5qZWN0ZWRTY3JpcHQiX3Ms
IGluamVjdGVkU2NyaXB0T2JqZWN0LCBlbnZpcm9ubWVudCkKKyAgICA6IEluamVjdGVkU2NyaXB0
QmFzZSgiSW5qZWN0ZWRTY3JpcHQiX3N0ciwgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIGVudmlyb25t
ZW50KQogewogfQogCkBAIC01OCw3ICs1OCw3IEBAIEluamVjdGVkU2NyaXB0Ojp+SW5qZWN0ZWRT
Y3JpcHQoKQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpleGVjdXRlKFByb3RvY29sOjpFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25TdHJpbmcsIEV4ZWN1dGVP
cHRpb25zJiYgb3B0aW9ucywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
JiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgc3RkOjpvcHRpb25hbDxp
bnQ+JiBzYXZlZFJlc3VsdEluZGV4KQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXhlY3V0ZSJfcywgaW5zcGVj
dG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV4
ZWN1dGUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmdW5jdGlvblN0cmluZyk7CiAgICAgZnVu
Y3Rpb24uYXBwZW5kQXJndW1lbnQob3B0aW9ucy5vYmplY3RHcm91cCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQob3B0aW9ucy5pbmNsdWRlQ29tbWFuZExpbmVBUEkpOwpAQCAtNzEsNyAr
NzEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpleGVjdXRlKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZgogCiB2b2lkIEluamVjdGVkU2NyaXB0Ojpl
dmFsdWF0ZShQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNvbW1h
bmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBib29s
IHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVz
dWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYg
c2F2ZWRSZXN1bHRJbmRleCkKIHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlIl9zLCBpbnNwZWN0b3JF
bnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXZhbHVh
dGUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChvYmplY3RHcm91cCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
aW5jbHVkZUNvbW1hbmRMaW5lQVBJKTsKQEAgLTgzLDcgKzgzLDcgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdDo6ZXZhbHVhdGUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJgogCiB2b2lkIEluamVjdGVkU2NyaXB0Ojphd2FpdFByb21pc2UoY29uc3QgU3RyaW5n
JiBwcm9taXNlT2JqZWN0SWQsIGJvb2wgcmV0dXJuQnlWYWx1ZSwgYm9vbCBnZW5lcmF0ZVByZXZp
ZXcsIGJvb2wgc2F2ZVJlc3VsdCwgQXN5bmNDYWxsQ2FsbGJhY2smJiBjYWxsYmFjaykKIHsKLSAg
ICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgImF3YWl0UHJvbWlzZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rp
b25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImF3YWl0UHJvbWlzZSJfc3RyLCBpbnNwZWN0
b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KHByb21pc2VPYmplY3RJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQocmV0dXJuQnlWYWx1ZSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2VuZXJhdGVQ
cmV2aWV3KTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6YXdhaXRQcm9t
aXNlKGNvbnN0IFN0cmluZyYgcHJvbWlzZU9iamVjdElkLCBib29sIHJldHVybkJ5VmEKIAogdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24oUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50cywgYm9vbCByZXR1cm5CeVZhbHVlLCBib29sIGdl
bmVyYXRlUHJldmlldywgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93bikKIHsKLSAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNh
bGxGdW5jdGlvbk9uIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5k
bGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmpl
Y3RlZFNjcmlwdE9iamVjdCgpLCAiY2FsbEZ1bmN0aW9uT24iX3N0ciwgaW5zcGVjdG9yRW52aXJv
bm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChvYmplY3RJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVzc2lvbik7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoYXJndW1lbnRzKTsKQEAgLTEwNyw3ICsxMDcs
NyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25PbihQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdAogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFs
dWF0ZU9uQ2FsbEZyYW1lKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6
SlNWYWx1ZSBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJp
bmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXAsIGJvb2wgaW5jbHVkZUNv
bW1hbmRMaW5lQVBJLCBib29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBi
b29sIHNhdmVSZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYg
cmVzdWx0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50
PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlT25DYWxsRnJhbWUi
X3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJldmFsdWF0ZU9uQ2FsbEZyYW1lIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCkt
PmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2Fs
bEZyYW1lcyk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lSWQpOwogICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4cHJlc3Npb24pOwpAQCAtMTIxLDE0ICsxMjEsMTQg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZShQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBKU0MKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVu
Y3Rpb25EZXRhaWxzKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRh
aWxzPiYgcmVzdWx0KQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0RnVuY3Rpb25EZXRhaWxzIl9zLCBpbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
Z2V0RnVuY3Rpb25EZXRhaWxzIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9u
Q2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZnVuY3Rpb25JZCk7
CiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdFZhbHVlID0gbWFrZUNhbGwoZnVuY3Rp
b24pOwogICAgIGlmICghcmVzdWx0VmFsdWUgfHwgcmVzdWx0VmFsdWUtPnR5cGUoKSAhPSBKU09O
OjpWYWx1ZTo6VHlwZTo6T2JqZWN0KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gcmVzdWx0VmFs
dWUtPmFzU3RyaW5nKCk7CiAgICAgICAgIGlmICghZXJyb3JTdHJpbmcpCi0gICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfczsKKyAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIkludGVybmFsIGVycm9yIl9zdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEz
NywxNCArMTM3LDE0IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhQ
cm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zCiAKIHZvaWQgSW5qZWN0ZWRT
Y3JpcHQ6OmZ1bmN0aW9uRGV0YWlscyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBKU0M6OkpTVmFsdWUgdmFsdWUsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkZ1bmN0aW9u
RGV0YWlscz4mIHJlc3VsdCkKIHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImZ1bmN0aW9uRGV0YWlscyJfcywgaW5z
cGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ImZ1bmN0aW9uRGV0YWlscyJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNh
bGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHZhbHVlKTsKIAogICAg
IFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0VmFsdWUgPSBtYWtlQ2FsbChmdW5jdGlvbik7CiAg
ICAgaWYgKCFyZXN1bHRWYWx1ZSB8fCByZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEpTT046OlZhbHVl
OjpUeXBlOjpPYmplY3QpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSByZXN1bHRWYWx1ZS0+YXNT
dHJpbmcoKTsKICAgICAgICAgaWYgKCFlcnJvclN0cmluZykKLSAgICAgICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yIl9zOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3IiX3N0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTUzLDE0ICsx
NTMsMTQgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKFByb3RvY29sOjpF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6SlMKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6
Z2V0UHJldmlldyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcmIG9iamVjdElkLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+JiBy
ZXN1bHQpCiB7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRQcmV2aWV3Il9zLCBpbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0UHJldmlldyJfc3Ry
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcmVzdWx0VmFsdWUgPSBtYWtlQ2FsbChmdW5jdGlvbik7CiAgICAgaWYgKCFyZXN1bHRWYWx1
ZSB8fCByZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEpTT046OlZhbHVlOjpUeXBlOjpPYmplY3QpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSByZXN1bHRWYWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAg
aWYgKCFlcnJvclN0cmluZykKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVy
cm9yIl9zOworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3N0cjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcyLDcgKzE3Miw3IEBAIHZvaWQgSW5qZWN0
ZWRTY3JpcHQ6OmdldFByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyCiAgICAgQVNTRVJUKGZldGNoU3RhcnQgPj0gMCk7CiAgICAgQVNTRVJUKGZl
dGNoQ291bnQgPj0gMCk7CiAKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldFByb3BlcnRpZXMiX3MsIGluc3BlY3Rv
ckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRQ
cm9wZXJ0aWVzIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRs
ZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KG93blByb3BlcnRpZXMpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KGZldGNoU3RhcnQpOwpAQCAtMTgxLDcgKzE4MSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3Jp
cHQ6OmdldFByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgU3RyCiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdCA9IG1ha2VDYWxsKGZ1bmN0
aW9uKTsKICAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQtPnR5cGUoKSAhPSBKU09OOjpWYWx1ZTo6
VHlwZTo6QXJyYXkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3M7
CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIl9zdHI7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE5Myw3ICsxOTMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojpn
ZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZwogICAgIEFTU0VSVChmZXRjaFN0YXJ0ID49IDApOwogICAgIEFTU0VSVChmZXRjaENvdW50ID49
IDApOwogCi0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMiX3MsIGluc3BlY3Rv
ckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRE
aXNwbGF5YWJsZVByb3BlcnRpZXMiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rp
b25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7
CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZmV0Y2hTdGFydCk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoZmV0Y2hDb3VudCk7CkBAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0ID0gbWFrZUNh
bGwoZnVuY3Rpb24pOwogICAgIGlmICghcmVzdWx0IHx8IHJlc3VsdC0+dHlwZSgpICE9IEpTT046
OlZhbHVlOjpUeXBlOjpBcnJheSkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBl
cnJvciJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3N0cjsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjEwLDEzICsyMTAsMTMgQEAgdm9pZCBJbmplY3Rl
ZFNjcmlwdDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVz
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcHJvcGVydGllcykKIHsKLSAg
ICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRP
YmplY3QoKSwgImdldEludGVybmFsUHJvcGVydGllcyJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldEludGVybmFsUHJvcGVy
dGllcyJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChnZW5lcmF0ZVByZXZpZXcpOwogCiAgICAgUmVmUHRyPEpTT046OlZhbHVl
PiByZXN1bHQgPSBtYWtlQ2FsbChmdW5jdGlvbik7CiAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0
LT50eXBlKCkgIT0gSlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5KSB7Ci0gICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yIl9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5h
bCBlcnJvciJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMzAsNyArMjMwLDcg
QEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY28KICAgICBBU1NFUlQoZmV0Y2hTdGFydCA+PSAwKTsK
ICAgICBBU1NFUlQoZmV0Y2hDb3VudCA+PSAwKTsKIAotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0Q29sbGVjdGlv
bkVudHJpZXMiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIo
KSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJnZXRDb2xsZWN0aW9uRW50cmllcyJfc3RyLCBpbnNwZWN0b3JFbnZp
cm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFy
Z3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RHcm91
cCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZmV0Y2hTdGFydCk7CkBAIC0yMzgsNyAr
MjM4LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoUHJvdG9j
b2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY28KIAogICAgIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcmVzdWx0ID0gbWFrZUNhbGwoZnVuY3Rpb24pOwogICAgIGlmICghcmVzdWx0IHx8IHJlc3Vs
dC0+dHlwZSgpICE9IEpTT046OlZhbHVlOjpUeXBlOjpBcnJheSkgewotICAgICAgICBlcnJvclN0
cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJu
YWwgZXJyb3IiX3N0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjQ3LDEyICsyNDcs
MTIgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0Q29sbGVjdGlvbkVudHJpZXMoUHJvdG9jb2w6
OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY28KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6c2F2
ZVJlc3VsdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGNhbGxBcmd1bWVudEpTT04sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkK
IHsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgInNhdmVSZXN1bHQiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1
bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJzYXZlUmVzdWx0Il9zdHIsIGluc3Bl
Y3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQoY2FsbEFyZ3VtZW50SlNPTik7CiAKICAgICBSZWZQdHI8SlNPTjo6VmFs
dWU+IHJlc3VsdCA9IG1ha2VDYWxsKGZ1bmN0aW9uKTsKICAgICBpZiAoIXJlc3VsdCB8fCByZXN1
bHQtPnR5cGUoKSAhPSBKU09OOjpWYWx1ZTo6VHlwZTo6SW50ZWdlcikgewotICAgICAgICBlcnJv
clN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3IiX3N0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMjYyLDcgKzI2
Miw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluamVjdGVkU2NyaXB0Ojp3cmFwQ2FsbEZyYW1lcyhK
U0M6OkpTVmFsdWUgY2FsbEZyYW1lcykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUo
KSk7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJ3cmFwQ2FsbEZyYW1lcyJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlv
bkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBDYWxsRnJhbWVzIl9z
dHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CiAKICAgICBhdXRvIGNhbGxSZXN1
bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwpAQCAtMjgwLDcgKzI4
MCw3IEBAIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4g
SW5qZWN0ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzCiBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBPYmplY3QoSlNDOjpKU1ZhbHVlIHZh
bHVlLCBjb25zdCBTdHJpbmcmIGdyb3VwTmFtZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcpIGNvbnN0
CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBPYmpl
Y3QiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5m
dW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2
YWx1ZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAg
d3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGhhc0FjY2Vzc1RvSW5zcGVjdGVkU2NyaXB0U3Rh
dGUoKSk7CkBAIC0zMDQsNyArMzA0LDcgQEAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwT2JqZWN0KEpTQzo6SlNWYWx1ZQogUmVmUHRy
PFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwSlNP
TlN0cmluZyhjb25zdCBTdHJpbmcmIGpzb24sIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBib29s
IGdlbmVyYXRlUHJldmlldykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0g
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAid3JhcEpTT05TdHJpbmciX3MsIGluc3BlY3RvckVudmlyb25tZW50KCkt
PmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25D
YWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcEpTT05TdHJpbmci
X3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAg
ICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoanNvbik7CiAgICAgd3JhcEZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGdyb3VwTmFtZSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGdlbmVyYXRlUHJldmlldyk7CkBAIC0zMzAsNyArMzMwLDcgQEAgUmVmUHRyPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmluZyhjb25z
dCBTdHIKIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNj
cmlwdDo6d3JhcFRhYmxlKEpTQzo6SlNWYWx1ZSB0YWJsZSwgSlNDOjpKU1ZhbHVlIGNvbHVtbnMp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6OlNj
cmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndy
YXBUYWJsZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwVGFibGUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQo
KS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQoaGFzQWNjZXNzVG9JbnNwZWN0ZWRTY3JpcHRTdGF0ZSgpKTsKICAgICB3cmFwRnVuY3Rpb24u
YXBwZW5kQXJndW1lbnQodGFibGUpOwogICAgIGlmICghY29sdW1ucykKQEAgLTM1Niw3ICszNTYs
NyBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3Jp
cHQ6OndyYXBUYWJsZShKU0M6OkpTVmFsdWUgdAogUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpP
YmplY3RQcmV2aWV3PiBJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVlKEpTQzo6SlNWYWx1ZSB2
YWx1ZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgRGVwcmVjYXRl
ZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAicHJldmlld1ZhbHVlIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxI
YW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCB3cmFwRnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInByZXZpZXdWYWx1ZSJfc3RyLCBpbnNwZWN0b3JF
bnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIHdyYXBGdW5jdGlvbi5h
cHBlbmRBcmd1bWVudCh2YWx1ZSk7CiAKICAgICBhdXRvIGNhbGxSZXN1bHQgPSBjYWxsRnVuY3Rp
b25XaXRoRXZhbEVuYWJsZWQod3JhcEZ1bmN0aW9uKTsKQEAgLTM3Nyw3ICszNzcsNyBAQCBSZWZQ
dHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+IEluamVjdGVkU2NyaXB0OjpwcmV2
aWV3VmFsdWUoSlNDOjpKU1ZhbAogdm9pZCBJbmplY3RlZFNjcmlwdDo6c2V0RXZlbnRWYWx1ZShK
U0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAic2V0RXZlbnRWYWx1ZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25D
YWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rp
b24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInNldEV2ZW50VmFsdWUiX3N0ciwgaW5zcGVjdG9y
RW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudCh2YWx1ZSk7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24pOwogfQpAQCAtMzg1LDE0
ICszODUsMTQgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6c2V0RXZlbnRWYWx1ZShKU0M6OkpTVmFs
dWUgdmFsdWUpCiB2b2lkIEluamVjdGVkU2NyaXB0OjpjbGVhckV2ZW50VmFsdWUoKQogewogICAg
IEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNsZWFyRXZlbnRWYWx1ZSJfcywg
aW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgImNsZWFyRXZlbnRWYWx1ZSJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlv
bkNhbGxIYW5kbGVyKCkpOwogICAgIG1ha2VDYWxsKGZ1bmN0aW9uKTsKIH0KIAogdm9pZCBJbmpl
Y3RlZFNjcmlwdDo6c2V0RXhjZXB0aW9uVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKQogewogICAg
IEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInNldEV4Y2VwdGlvblZhbHVlIl9z
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAic2V0RXhjZXB0aW9uVmFsdWUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVu
Y3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7
CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24pOwogfQpAQCAtNDAwLDE0ICs0MDAsMTQgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdDo6c2V0RXhjZXB0aW9uVmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKQogdm9p
ZCBJbmplY3RlZFNjcmlwdDo6Y2xlYXJFeGNlcHRpb25WYWx1ZSgpCiB7CiAgICAgQVNTRVJUKCFo
YXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY2xlYXJFeGNlcHRpb25WYWx1ZSJfcywgaW5zcGVj
dG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImNs
ZWFyRXhjZXB0aW9uVmFsdWUiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25D
YWxsSGFuZGxlcigpKTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbik7CiB9CiAKIEpTQzo6SlNWYWx1
ZSBJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkg
Y29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJmaW5kT2Jq
ZWN0QnlJZCJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigp
KTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgImZpbmRPYmplY3RCeUlkIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50
KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
b2JqZWN0SWQpOwogCiAgICAgYXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0aEV2YWxF
bmFibGVkKGZ1bmN0aW9uKTsKQEAgLTQyMCwxNCArNDIwLDE0IEBAIEpTQzo6SlNWYWx1ZSBJbmpl
Y3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkgY29uc3QK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6Omluc3BlY3RPYmplY3QoSlNDOjpKU1ZhbHVlIHZhbHVlKQog
ewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluc3BlY3RPYmplY3Qi
X3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJpbnNwZWN0T2JqZWN0Il9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodmFsdWUpOwog
ICAgIG1ha2VDYWxsKGZ1bmN0aW9uKTsKIH0KIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFz
ZU9iamVjdChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlw
dEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9i
amVjdCJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsK
KyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3QiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+
ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmpl
Y3RJZCk7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24pOwogfQpAQCAtNDM1LDcgKzQzNSw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3QoY29uc3QgU3RyaW5nJiBvYmplY3RJZCkK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cChjb25zdCBTdHJpbmcmIG9i
amVjdEdyb3VwKQogewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVk
OjpTY3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0
KCksICJyZWxlYXNlT2JqZWN0R3JvdXAiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHJl
bGVhc2VGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdEdyb3Vw
Il9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAg
ICAgcmVsZWFzZUZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKIAogICAgIGF1
dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZChyZWxlYXNlRnVuY3Rp
b24pOwpAQCAtNDQ1LDcgKzQ0NSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmpl
Y3RHcm91cChjb25zdCBTdHJpbmcmIG9iamVjdEdyb3VwKQogSlNDOjpKU09iamVjdCogSW5qZWN0
ZWRTY3JpcHQ6OmNyZWF0ZUNvbW1hbmRMaW5lQVBJT2JqZWN0KEpTQzo6SlNWYWx1ZSBjYWxsRnJh
bWUpIGNvbnN0CiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY3Jl
YXRlQ29tbWFuZExpbmVBUElPYmplY3QiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJjcmVhdGVDb21tYW5kTGluZUFQSU9iamVj
dCJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwog
ICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGNhbGxGcmFtZSk7CiAKICAgICBhdXRvIGNhbGxS
ZXN1bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEJhc2UuY3Bw
CmluZGV4IGRhN2UwOWNkNzkxOWIwYmJmNjIwNTZjNDdlYTE5NjU4ZDliODg1MDEuLmRmMTcyNTlh
ZTI5MWI3M2UzZDJlZmE5YTY0MzE3NmYzYjk0NWE4YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKQEAgLTEyMSw3
ICsxMjEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbChEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwmIGZ1bmN0aW9uLAogCiAgICAgICAgIGpzRnVuY3Rpb24g
PSBKU0M6OkpTTmF0aXZlU3RkRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCBT
dHJpbmcoKSwgWyYsIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6Q2FsbEZyYW1lKiBjYWxsRnJhbWUpIHsKICAgICAg
ICAgICAgIGlmICghY2FsbEZyYW1lKQotICAgICAgICAgICAgICAgIGNoZWNrQXN5bmNDYWxsUmVz
dWx0KEpTT046OlZhbHVlOjpjcmVhdGUobWFrZVN0cmluZygiRXhjZXB0aW9uIHdoaWxlIG1ha2lu
ZyBhIGNhbGwuIl9zKSksIGNhbGxiYWNrKTsKKyAgICAgICAgICAgICAgICBjaGVja0FzeW5jQ2Fs
bFJlc3VsdChKU09OOjpWYWx1ZTo6Y3JlYXRlKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2Fs
bC4iX3N0ciksIGNhbGxiYWNrKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGF1dG8gcmVzdWx0SlNP
TlZhbHVlID0gdG9JbnNwZWN0b3JWYWx1ZShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpKQogICAgICAgICAgICAgICAgIGNoZWNrQXN5bmNDYWxsUmVzdWx0KHJlc3VsdEpTT05W
YWx1ZSwgY2FsbGJhY2spOwogICAgICAgICAgICAgZWxzZQpAQCAtMTQ2LDcgKzE0Niw3IEBAIHZv
aWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjptYWtlQXN5bmNDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1
bmN0aW9uQ2FsbCYgZnVuY3Rpb24sCiB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxs
UmVzdWx0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOjpW
YWx1ZT4gcmVzdWx0LCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJl
c3VsdE9iamVjdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFs
PGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7CiAgICAgaWYgKCFyZXN1bHQpIHsKLSAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCB2YWx1ZSBpcyBlbXB0eSJfczsK
KyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCB2YWx1ZSBpcyBl
bXB0eSJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNTcsMjUgKzE1NywyNSBA
QCB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxsUmVzdWx0KFByb3RvY29sOjpFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZgogCiAgICAgYXV0byByZXN1bHRUdXBsZSA9IHJlc3Vs
dC0+YXNPYmplY3QoKTsKICAgICBpZiAoIXJlc3VsdFR1cGxlKSB7Ci0gICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGFuIE9iamVjdCJfczsKKyAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYW4gT2JqZWN0
Il9zdHI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHR5cGVsZXNzUmVzdWx0
T2JqZWN0ID0gcmVzdWx0VHVwbGUtPmdldE9iamVjdCgicmVzdWx0Il9zKTsKKyAgICBhdXRvIHR5
cGVsZXNzUmVzdWx0T2JqZWN0ID0gcmVzdWx0VHVwbGUtPmdldE9iamVjdCgicmVzdWx0Il9zdHIp
OwogICAgIGlmICghdHlwZWxlc3NSZXN1bHRPYmplY3QpIHsKICAgICAgICAgLy8gRklYTUU6IFdo
eSBkbyB3ZSBib3RoZXIgY2hlY2tpbmcgZm9yIG51bGwgaGVyZSwgYnV0IG5vdCBjaGVja2luZyB0
aGF0IHRoZSB0eXBlIGlzIFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q/IFN1cmVseSB0
aGUgdHdvIHBvc3NpYmxlIGVycm9ycyBnbyBoYW5kIGluIGhhbmQuCi0gICAgICAgIGVycm9yU3Ry
aW5nID0gIkludGVybmFsIGVycm9yOiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQg
d2FzVGhyb3duIGZsYWciX3M7CisgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9y
OiByZXN1bHQgaXMgbm90IGEgcGFpciBvZiB2YWx1ZSBhbmQgd2FzVGhyb3duIGZsYWciX3N0cjsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHdhc1Rocm93biA9IHJlc3VsdFR1cGxlLT5n
ZXRCb29sZWFuKCJ3YXNUaHJvd24iX3MpOworICAgIHdhc1Rocm93biA9IHJlc3VsdFR1cGxlLT5n
ZXRCb29sZWFuKCJ3YXNUaHJvd24iX3N0cik7CiAgICAgaWYgKCF3YXNUaHJvd24pIHsKLSAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9m
IHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9mIHZhbHVlIGFuZCB3YXNUaHJvd24g
ZmxhZyJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgcmVzdWx0T2JqZWN0ID0g
UHJvdG9jb2w6OkJpbmRpbmdUcmFpdHM8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD46
OnJ1bnRpbWVDYXN0KHR5cGVsZXNzUmVzdWx0T2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOwotICAg
IHNhdmVkUmVzdWx0SW5kZXggPSByZXN1bHRUdXBsZS0+Z2V0SW50ZWdlcigic2F2ZWRSZXN1bHRJ
bmRleCJfcyk7CisgICAgc2F2ZWRSZXN1bHRJbmRleCA9IHJlc3VsdFR1cGxlLT5nZXRJbnRlZ2Vy
KCJzYXZlZFJlc3VsdEluZGV4Il9zdHIpOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0QmFzZTo6
Y2hlY2tBc3luY0NhbGxSZXN1bHQoUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHQsIGNvbnN0IEFz
eW5jQ2FsbENhbGxiYWNrJiBjYWxsYmFjaykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcAppbmRleCBlMTNjYzcy
OWU4YmVkNDg0YjU3NTczOWEyMjFkMGM1NTdhNDFhN2M2Li4wNDBlN2RhODExOWIzNDE4Yjk4OGI2
OWM0N2MxYTI5NDQyNDc4MTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1hbmFnZXIuY3BwCkBAIC0xMTAsNyArMTEwLDcg
QEAgSW5qZWN0ZWRTY3JpcHQgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZv
ck9iamVjdElkKGNvbnN0IFN0cmluZyYgb2IKICAgICBpZiAoIXJlc3VsdE9iamVjdCkKICAgICAg
ICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKLSAgICBhdXRvIGluamVjdGVkU2NyaXB0SWQg
PSByZXN1bHRPYmplY3QtPmdldEludGVnZXIoImluamVjdGVkU2NyaXB0SWQiX3MpOworICAgIGF1
dG8gaW5qZWN0ZWRTY3JpcHRJZCA9IHJlc3VsdE9iamVjdC0+Z2V0SW50ZWdlcigiaW5qZWN0ZWRT
Y3JpcHRJZCJfc3RyKTsKICAgICBpZiAoIWluamVjdGVkU2NyaXB0SWQpCiAgICAgICAgIHJldHVy
biBJbmplY3RlZFNjcmlwdCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TW9kdWxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCmluZGV4IDQ4MjZlNDZmZGI2MWEy
ZWQ2ZmJlODZiODk3NDEyZjQ4ZmQ1ZTlhMTEuLjM5ZjlkOTYxZWQ0MzY4ZDdhOWJiMDRhY2Y5Zjlk
MjEyZmFhYTc1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNCiAKICAgICAvLyBGSVhNRTogTWFrZSB0aGUgSW5qZWN0ZWRTY3JpcHQg
YSBtb2R1bGUgaXRzZWxmLgogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihpbmplY3RlZFNj
cmlwdC5nbG9iYWxPYmplY3QoKSk7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxs
IGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJoYXNJbmpl
Y3RlZE1vZHVsZSJfcywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rp
b25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCksICJo
YXNJbmplY3RlZE1vZHVsZSJfc3RyLCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVu
dmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChuYW1lKCkpOwogICAgIGF1dG8gaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQgPSBpbmpl
Y3RlZFNjcmlwdC5jYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwogICAgIEFT
U0VSVChoYXNJbmplY3RlZE1vZHVsZVJlc3VsdCk7CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRNb2R1bGU6OmVuc3VyZUluamVjdGVkKEluamVjdGVkU2NyaXB0TWFuYWdlciog
aW5qZWN0ZWRTY3JpcHRNCiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgfQogICAgIGlmICghaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5pc0Jvb2xlYW4o
KSB8fCAhaGFzSW5qZWN0ZWRNb2R1bGVSZXN1bHQudmFsdWUoKS5hc0Jvb2xlYW4oKSkgewotICAg
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3Jp
cHQuaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluamVjdE1vZHVsZSJfcywgaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7
CisgICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5qZWN0TW9kdWxlIl9zdHIsIGluamVj
dGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5k
bGVyKCkpOwogICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuYW1lKCkpOwogICAgICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChzb3VyY2UoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KGhvc3QoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLCBpbmplY3RlZFNjcmlwdC5n
bG9iYWxPYmplY3QoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAppbmRleCAxMDg4YTZh
OGYyOTY1ZTE3ZTUyZDdiYTFkMTE0MmI5ZWQ2OTdhZDNmLi45MzM3MmM4NTA1Mzk0OTk3NTBkYWE3
N2Q4ZjhmNzY2NTkxN2Q5YjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyLmNwcApAQCAtMTE3
LDI4ICsxMTcsMjggQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogCiAgICAgICAgIGF1dG8gcGFyc2VkTWVzc2FnZSA9IEpTT046OlZhbHVl
OjpwYXJzZUpTT04obWVzc2FnZSk7CiAgICAgICAgIGlmICghcGFyc2VkTWVzc2FnZSkgewotICAg
ICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihQYXJzZUVycm9yLCAiTWVzc2FnZSBtdXN0IGJl
IGluIEpTT04gZm9ybWF0Il9zKTsKKyAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoUGFy
c2VFcnJvciwgIk1lc3NhZ2UgbXVzdCBiZSBpbiBKU09OIGZvcm1hdCJfc3RyKTsKICAgICAgICAg
ICAgIHNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAogICAgICAgICBtZXNzYWdlT2JqZWN0ID0gcGFyc2VkTWVzc2FnZS0+YXNPYmplY3QoKTsKICAg
ICAgICAgaWYgKCFtZXNzYWdlT2JqZWN0KSB7Ci0gICAgICAgICAgICByZXBvcnRQcm90b2NvbEVy
cm9yKEludmFsaWRSZXF1ZXN0LCAiTWVzc2FnZSBtdXN0IGJlIGEgSlNPTmlmaWVkIG9iamVjdCJf
cyk7CisgICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0LCAiTWVz
c2FnZSBtdXN0IGJlIGEgSlNPTmlmaWVkIG9iamVjdCJfc3RyKTsKICAgICAgICAgICAgIHNlbmRQ
ZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvIHJlcXVlc3RJZFZhbHVlID0gbWVzc2FnZU9iamVjdC0+Z2V0VmFsdWUoImlkIl9zKTsK
KyAgICAgICAgYXV0byByZXF1ZXN0SWRWYWx1ZSA9IG1lc3NhZ2VPYmplY3QtPmdldFZhbHVlKCJp
ZCJfc3RyKTsKICAgICAgICAgaWYgKCFyZXF1ZXN0SWRWYWx1ZSkgewotICAgICAgICAgICAgcmVw
b3J0UHJvdG9jb2xFcnJvcihJbnZhbGlkUmVxdWVzdCwgIidpZCcgcHJvcGVydHkgd2FzIG5vdCBm
b3VuZCJfcyk7CisgICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0
LCAiJ2lkJyBwcm9wZXJ0eSB3YXMgbm90IGZvdW5kIl9zdHIpOwogICAgICAgICAgICAgc2VuZFBl
bmRpbmdFcnJvcnMoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAg
IGF1dG8gcmVxdWVzdElkSW50ID0gcmVxdWVzdElkVmFsdWUtPmFzSW50ZWdlcigpOwogICAgICAg
ICBpZiAoIXJlcXVlc3RJZEludCkgewotICAgICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihJ
bnZhbGlkUmVxdWVzdCwgIlRoZSB0eXBlIG9mICdpZCcgcHJvcGVydHkgbXVzdCBiZSBpbnRlZ2Vy
Il9zKTsKKyAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJU
aGUgdHlwZSBvZiAnaWQnIHByb3BlcnR5IG11c3QgYmUgaW50ZWdlciJfc3RyKTsKICAgICAgICAg
ICAgIHNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
QEAgLTE1MCwyMyArMTUwLDIzIEBAIHZvaWQgQmFja2VuZERpc3BhdGNoZXI6OmRpc3BhdGNoKGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgLy8gV2UgY291bGQgYmUgY2FsbGVkIHJlLWVu
dHJhbnRseSBmcm9tIGEgbmVzdGVkIHJ1biBsb29wLCBzbyByZXN0b3JlIHRoZSBwcmV2aW91cyBp
ZC4KICAgICAgICAgU2V0Rm9yU2NvcGUgc2NvcGVkUmVxdWVzdElkKG1fY3VycmVudFJlcXVlc3RJ
ZCwgcmVxdWVzdElkKTsKIAotICAgICAgICBhdXRvIG1ldGhvZFZhbHVlID0gbWVzc2FnZU9iamVj
dC0+Z2V0VmFsdWUoIm1ldGhvZCJfcyk7CisgICAgICAgIGF1dG8gbWV0aG9kVmFsdWUgPSBtZXNz
YWdlT2JqZWN0LT5nZXRWYWx1ZSgibWV0aG9kIl9zdHIpOwogICAgICAgICBpZiAoIW1ldGhvZFZh
bHVlKSB7Ci0gICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0LCAi
J21ldGhvZCcgcHJvcGVydHkgd2Fzbid0IGZvdW5kIl9zKTsKKyAgICAgICAgICAgIHJlcG9ydFBy
b3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICInbWV0aG9kJyBwcm9wZXJ0eSB3YXNuJ3QgZm91
bmQiX3N0cik7CiAgICAgICAgICAgICBzZW5kUGVuZGluZ0Vycm9ycygpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byBtZXRob2RTdHJpbmcgPSBtZXRob2RW
YWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFtZXRob2RTdHJpbmcpIHsKLSAgICAgICAg
ICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJUaGUgdHlwZSBvZiAnbWV0
aG9kJyBwcm9wZXJ0eSBtdXN0IGJlIHN0cmluZyJfcyk7CisgICAgICAgICAgICByZXBvcnRQcm90
b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0LCAiVGhlIHR5cGUgb2YgJ21ldGhvZCcgcHJvcGVydHkg
bXVzdCBiZSBzdHJpbmciX3N0cik7CiAgICAgICAgICAgICBzZW5kUGVuZGluZ0Vycm9ycygpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgVmVjdG9yPFN0cmluZz4g
ZG9tYWluQW5kTWV0aG9kID0gbWV0aG9kU3RyaW5nLnNwbGl0QWxsb3dpbmdFbXB0eUVudHJpZXMo
Jy4nKTsKICAgICAgICAgaWYgKGRvbWFpbkFuZE1ldGhvZC5zaXplKCkgIT0gMiB8fCAhZG9tYWlu
QW5kTWV0aG9kWzBdLmxlbmd0aCgpIHx8ICFkb21haW5BbmRNZXRob2RbMV0ubGVuZ3RoKCkpIHsK
LSAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJUaGUgJ21l
dGhvZCcgcHJvcGVydHkgd2FzIGZvcm1hdHRlZCBpbmNvcnJlY3RseS4gSXQgc2hvdWxkIGJlICdE
b21haW4ubWV0aG9kJyJfcyk7CisgICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFs
aWRSZXF1ZXN0LCAiVGhlICdtZXRob2QnIHByb3BlcnR5IHdhcyBmb3JtYXR0ZWQgaW5jb3JyZWN0
bHkuIEl0IHNob3VsZCBiZSAnRG9tYWluLm1ldGhvZCciX3N0cik7CiAgICAgICAgICAgICBzZW5k
UGVuZGluZ0Vycm9ycygpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0yMTQs
OCArMjE0LDggQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFJlc3BvbnNlKGxvbmcgcmVx
dWVzdElkLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHJlc3VsdCwKICAgICAvLyBUaGUgSlNPTi1SUEMg
Mi4wIHNwZWNpZmljYXRpb24gcmVxdWlyZXMgdGhhdCB0aGUgImVycm9yIiBtZW1iZXIgaGF2ZSB0
aGUgdmFsdWUgJ251bGwnCiAgICAgLy8gaWYgbm8gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGFuIGlu
dm9jYXRpb24sIGJ1dCB3ZSBkbyBub3QgaW5jbHVkZSBpdCBhdCBhbGwuCiAgICAgUmVmPEpTT046
Ok9iamVjdD4gcmVzcG9uc2VNZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBy
ZXNwb25zZU1lc3NhZ2UtPnNldE9iamVjdCgicmVzdWx0Il9zLCBXVEZNb3ZlKHJlc3VsdCkpOwot
ICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0SW50ZWdlcigiaWQiX3MsIHJlcXVlc3RJZCk7CisgICAg
cmVzcG9uc2VNZXNzYWdlLT5zZXRPYmplY3QoInJlc3VsdCJfc3RyLCBXVEZNb3ZlKHJlc3VsdCkp
OworICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0SW50ZWdlcigiaWQiX3N0ciwgcmVxdWVzdElkKTsK
ICAgICBtX2Zyb250ZW5kUm91dGVyLT5zZW5kUmVzcG9uc2UocmVzcG9uc2VNZXNzYWdlLT50b0pT
T05TdHJpbmcoKSk7CiB9CiAKQEAgLTI0NiwyMyArMjQ2LDIzIEBAIHZvaWQgQmFja2VuZERpc3Bh
dGNoZXI6OnNlbmRQZW5kaW5nRXJyb3JzKCkKICAgICAgICAgQVNTRVJUX0FSRyhlcnJvckNvZGUs
IGVycm9yQ29kZXNbZXJyb3JDb2RlXSk7CiAKICAgICAgICAgUmVmPEpTT046Ok9iamVjdD4gZXJy
b3IgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgICAgICBlcnJvci0+c2V0SW50ZWdlcigi
Y29kZSJfcywgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKLSAgICAgICAgZXJyb3ItPnNldFN0cmlu
ZygibWVzc2FnZSJfcywgZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgZXJyb3ItPnNldEludGVnZXIo
ImNvZGUiX3N0ciwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKKyAgICAgICAgZXJyb3ItPnNldFN0
cmluZygibWVzc2FnZSJfc3RyLCBlcnJvck1lc3NhZ2UpOwogICAgICAgICBwYXlsb2FkLT5wdXNo
T2JqZWN0KFdURk1vdmUoZXJyb3IpKTsKICAgICB9CiAKICAgICBSZWY8SlNPTjo6T2JqZWN0PiB0
b3BMZXZlbEVycm9yID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICB0b3BMZXZlbEVycm9y
LT5zZXRJbnRlZ2VyKCJjb2RlIl9zLCBlcnJvckNvZGVzW2Vycm9yQ29kZV0pOwotICAgIHRvcExl
dmVsRXJyb3ItPnNldFN0cmluZygibWVzc2FnZSJfcywgZXJyb3JNZXNzYWdlKTsKLSAgICB0b3BM
ZXZlbEVycm9yLT5zZXRBcnJheSgiZGF0YSJfcywgV1RGTW92ZShwYXlsb2FkKSk7CisgICAgdG9w
TGV2ZWxFcnJvci0+c2V0SW50ZWdlcigiY29kZSJfc3RyLCBlcnJvckNvZGVzW2Vycm9yQ29kZV0p
OworICAgIHRvcExldmVsRXJyb3ItPnNldFN0cmluZygibWVzc2FnZSJfc3RyLCBlcnJvck1lc3Nh
Z2UpOworICAgIHRvcExldmVsRXJyb3ItPnNldEFycmF5KCJkYXRhIl9zdHIsIFdURk1vdmUocGF5
bG9hZCkpOwogCiAgICAgUmVmPEpTT046Ok9iamVjdD4gbWVzc2FnZSA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7Ci0gICAgbWVzc2FnZS0+c2V0T2JqZWN0KCJlcnJvciJfcywgV1RGTW92ZSh0b3BM
ZXZlbEVycm9yKSk7CisgICAgbWVzc2FnZS0+c2V0T2JqZWN0KCJlcnJvciJfc3RyLCBXVEZNb3Zl
KHRvcExldmVsRXJyb3IpKTsKICAgICBpZiAobV9jdXJyZW50UmVxdWVzdElkKQotICAgICAgICBt
ZXNzYWdlLT5zZXRJbnRlZ2VyKCJpZCJfcywgbV9jdXJyZW50UmVxdWVzdElkLnZhbHVlKCkpOwor
ICAgICAgICBtZXNzYWdlLT5zZXRJbnRlZ2VyKCJpZCJfc3RyLCBtX2N1cnJlbnRSZXF1ZXN0SWQu
dmFsdWUoKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFRoZSAnbnVsbCcgdmFsdWUgZm9yIGFu
IHVua25vd24gaWQgaXMgc3BlY2lmaWVkIGluIEpTT04tUlBDIDIuMCwgU2VjdGlvbiA1LgotICAg
ICAgICBtZXNzYWdlLT5zZXRWYWx1ZSgiaWQiX3MsIEpTT046OlZhbHVlOjpudWxsKCkpOworICAg
ICAgICBtZXNzYWdlLT5zZXRWYWx1ZSgiaWQiX3N0ciwgSlNPTjo6VmFsdWU6Om51bGwoKSk7CiAg
ICAgfQogCiAgICAgbV9mcm9udGVuZFJvdXRlci0+c2VuZFJlc3BvbnNlKG1lc3NhZ2UtPnRvSlNP
TlN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50LmNwcAppbmRleCBmMDZmZjAzYmUw
ZmUyNzJlMDhhNDZjODRiMGU4MTMyM2FjMDZmOTBiLi4yMjcwNjg4ZGZkNTFhZjU4OWFjNjIyMjg2
MjM5NjU5NDkzMzFiNTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3BwCkBAIC0xMDIs
NyArMTAyLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUoSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgdGkKICAgICAgICAgZm9yIChhdXRvJiBl
eGlzdGluZ1RpdGxlIDogbV9wcm9maWxlcykgewogICAgICAgICAgICAgaWYgKGV4aXN0aW5nVGl0
bGUgPT0gdGl0bGUpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRv
IHRoZSBmcm9udGVuZCBmb3IgbG9jYWxpemF0aW9uPwotICAgICAgICAgICAgICAgIFN0cmluZyB3
YXJuaW5nID0gdGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0
cyJfcyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCBTY3JpcHRBcmd1bWVudHM6OnRydW5jYXRl
U3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UodGl0bGUpLCAiXCIgYWxyZWFkeSBleGlzdHMiKTsKKyAg
ICAgICAgICAgICAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJVbm5hbWVk
IFByb2ZpbGUgYWxyZWFkeSBleGlzdHMiX3N0ciA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCBT
Y3JpcHRBcmd1bWVudHM6OnRydW5jYXRlU3RyaW5nRm9yQ29uc29sZU1lc3NhZ2UodGl0bGUpLCAi
XCIgYWxyZWFkeSBleGlzdHMiKTsKICAgICAgICAgICAgICAgICBtX2NvbnNvbGVBZ2VudC0+YWRk
TWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZSwgTWVzc2FnZUxldmVsOjpXYXJuaW5n
LCB3YXJuaW5nKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAt
MTMwLDcgKzEzMCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojpwcm9maWxl
RW5kKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmCiAgICAgfQogCiAgICAgLy8g
RklYTUU6IFNlbmQgYW4gZW51bSB0byB0aGUgZnJvbnRlbmQgZm9yIGxvY2FsaXphdGlvbj8KLSAg
ICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlzRW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJf
cyA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4aXN0Iik7
CisgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiTm8gcHJvZmlsZXMgZXhp
c3QiX3N0ciA6IG1ha2VTdHJpbmcoIlByb2ZpbGUgXCIiLCB0aXRsZSwgIlwiIGRvZXMgbm90IGV4
aXN0Iik7CiAgICAgbV9jb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUobWFrZVVuaXF1
ZTxDb25zb2xlTWVzc2FnZT4oTWVzc2FnZVNvdXJjZTo6Q29uc29sZUFQSSwgTWVzc2FnZVR5cGU6
OlByb2ZpbGVFbmQsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgd2FybmluZykpOwogfQogCkBAIC0x
OTEsNyArMTkxLDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnRpbWVTdGFt
cChKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHMKICAgICBpZiAoTElLRUxZKCFt
X2NvbnNvbGVBZ2VudC0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgd2FyblVuaW1wbGVtZW50ZWQoImNvbnNvbGUudGltZVN0YW1wIl9zKTsKKyAgICB3
YXJuVW5pbXBsZW1lbnRlZCgiY29uc29sZS50aW1lU3RhbXAiX3N0cik7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpyZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2Ny
aXB0QXJndW1lbnRzPiYmKQpAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RD
b25zb2xlQ2xpZW50OjpyZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRz
PiYmCiAgICAgaWYgKExJS0VMWSghbV9jb25zb2xlQWdlbnQtPmRldmVsb3BlckV4dHJhc0VuYWJs
ZWQoKSkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xl
LnJlY29yZCJfcyk7CisgICAgd2FyblVuaW1wbGVtZW50ZWQoImNvbnNvbGUucmVjb3JkIl9zdHIp
OwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTR2xv
YmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50cz4mJikKQEAgLTIwNyw3ICsyMDcsNyBAQCB2
b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkRW5kKEpTR2xvYmFsT2JqZWN0
KiwgUmVmPFNjcmlwdEFyZ3VtZW50cwogICAgIGlmIChMSUtFTFkoIW1fY29uc29sZUFnZW50LT5k
ZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICB3YXJuVW5p
bXBsZW1lbnRlZCgiY29uc29sZS5yZWNvcmRFbmQiX3MpOworICAgIHdhcm5VbmltcGxlbWVudGVk
KCJjb25zb2xlLnJlY29yZEVuZCJfc3RyKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNv
bGVDbGllbnQ6OnNjcmVlbnNob3QoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRz
PiYmKQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
OjpzY3JlZW5zaG90KEpTR2xvYmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFyZ3VtZW50CiAgICAgaWYg
KExJS0VMWSghbV9jb25zb2xlQWdlbnQtPmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xlLnNjcmVlbnNob3Qi
X3MpOworICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xlLnNjcmVlbnNob3QiX3N0cik7CiB9
CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50Ojp3YXJuVW5pbXBsZW1lbnRlZChj
b25zdCBTdHJpbmcmIG1ldGhvZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCA2YWUxNzkzOWY0ODg1OGQ2MDQ2Yzk1OTI5MmQzNmNmYmM2MzQ3MWYxLi5lYzRl
OGU5NzZmN2ZmN2UwOTY5YjVkZjQ0MDQ0MTUwYjExODUyN2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVj
dEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0xNjMsOSArMTYzLDkgQEAgdm9pZCBKU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFwcGVuZEFQSUJhY2t0cmFjZShTY3JpcHRDYWxs
U3RhY2smIGNhbGwKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7ICsraSkgewogICAgICAg
ICBhdXRvIGRlbWFuZ2xlZCA9IFN0YWNrVHJhY2U6OmRlbWFuZ2xlKHN0YWNrW2ldKTsKICAgICAg
ICAgaWYgKGRlbWFuZ2xlZCkKLSAgICAgICAgICAgIGNhbGxTdGFjay5hcHBlbmQoU2NyaXB0Q2Fs
bEZyYW1lKGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgpID8gZGVtYW5nbGVkLT5kZW1hbmdsZWRO
YW1lKCkgOiBkZW1hbmdsZWQtPm1hbmdsZWROYW1lKCksICJbbmF0aXZlIGNvZGVdIl9zLCBub1Nv
dXJjZUlELCAwLCAwKSk7CisgICAgICAgICAgICBjYWxsU3RhY2suYXBwZW5kKFNjcmlwdENhbGxG
cmFtZShkZW1hbmdsZWQtPmRlbWFuZ2xlZE5hbWUoKSA/IGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFt
ZSgpIDogZGVtYW5nbGVkLT5tYW5nbGVkTmFtZSgpLCAiW25hdGl2ZSBjb2RlXSJfc3RyLCBub1Nv
dXJjZUlELCAwLCAwKSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNhbGxTdGFjay5hcHBl
bmQoU2NyaXB0Q2FsbEZyYW1lKCI/Il9zLCAiW25hdGl2ZSBjb2RlXSJfcywgbm9Tb3VyY2VJRCwg
MCwgMCkpOworICAgICAgICAgICAgY2FsbFN0YWNrLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoIj8i
X3N0ciwgIltuYXRpdmUgY29kZV0iX3N0ciwgbm9Tb3VyY2VJRCwgMCwgMCkpOwogICAgIH0KIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVk
U2NyaXB0SG9zdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0LmNwcAppbmRleCA3OGU3NzM0ZTI2MzliN2U5ODhiZDk0NTliMDc2YmY3YmNl
NGMwNzFlLi44ZDhhMjAwYzEzMTVkZGFkOWJkYzljOTY1YjZhZDQxMTI1ZGQxYjFiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3Jp
cHRIb3N0LmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhv
c3Q6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAK
ICAgICBKU1ZhbHVlIHNjcmlwdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBp
ZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcuIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbmplY3RlZFNj
cmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBi
ZSBhIHN0cmluZy4iX3N0cik7CiAKICAgICBTdHJpbmcgcHJvZ3JhbSA9IGFzU3RyaW5nKHNjcmlw
dFZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBKU1ZhbHVlKCkpOwpAQCAtMTU4LDcgKzE1OCw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNj
cmlwdEhvc3Q6OmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcihKU0ds
b2JhCiAKICAgICBhdXRvKiBwcm9taXNlID0ganNEeW5hbWljQ2FzdDxKU1Byb21pc2UqPih2bSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFwcm9taXNlKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkluamVjdGVkU2NyaXB0SG9z
dC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IgZmlyc3QgYXJndW1l
bnQgbXVzdCBiZSBhIFByb21pc2UuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbmplY3RlZFNjcmlwdEhvc3QuaXNQcm9taXNlUmVqZWN0
ZWRXaXRoTmF0aXZlR2V0dGVyVHlwZUVycm9yIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBQcm9t
aXNlLiJfc3RyKTsKIAogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CiAgICAgaWYgKGF1dG8qIGVy
cm9ySW5zdGFuY2UgPSBqc0R5bmFtaWNDYXN0PEVycm9ySW5zdGFuY2UqPih2bSwgcHJvbWlzZS0+
cmVzdWx0KHZtKSkpCkBAIC0xODQsNDEgKzE4NCw0MSBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3Jp
cHRIb3N0OjpzdWJ0eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
YwogCiAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwg
dmFsdWUpKSB7CiAgICAgICAgIGlmIChvYmplY3QtPmlzRXJyb3JJbnN0YW5jZSgpKQotICAgICAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVycm9yIl9zKTsKKyAgICAgICAg
ICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJlcnJvciJfc3RyKTsKIAogICAgICAg
ICAvLyBDb25zaWRlciBjbGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlvbnMgY2xhc3Mgb2JqZWN0cy4K
ICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24q
Pih2bSwgdmFsdWUpOwogICAgICAgICBpZiAoZnVuY3Rpb24gJiYgZnVuY3Rpb24tPmlzQ2xhc3ND
b25zdHJ1Y3RvckZ1bmN0aW9uKCkpCi0gICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiY2xhc3MiX3MpOworICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImNsYXNzIl9zdHIpOwogCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTQXJy
YXk+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJhcnJh
eSJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXJyYXki
X3N0cik7CiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPERpcmVjdEFyZ3VtZW50cz4odm0p
IHx8IG9iamVjdC0+aW5oZXJpdHM8U2NvcGVkQXJndW1lbnRzPih2bSkpCi0gICAgICAgICAgICBy
ZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXJyYXkiX3MpOworICAgICAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImFycmF5Il9zdHIpOwogCiAgICAgICAgIGlmIChv
YmplY3QtPmluaGVyaXRzPERhdGVJbnN0YW5jZT4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgImRhdGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgImRhdGUiX3N0cik7CiAgICAgICAgIGlmIChvYmplY3QtPmluaGVy
aXRzPFJlZ0V4cE9iamVjdD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgInJlZ2V4cCJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAicmVnZXhwIl9zdHIpOwogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxQcm94
eU9iamVjdD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
InByb3h5Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJw
cm94eSJfc3RyKTsKIAogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU01hcD4odm0pKQot
ICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm1hcCJfcyk7CisgICAg
ICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAibWFwIl9zdHIpOwogICAgICAg
ICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1NldD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgInNldCJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250
cml2aWFsU3RyaW5nKHZtLCAic2V0Il9zdHIpOwogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0
czxKU1dlYWtNYXA+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJ3ZWFrbWFwIl9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJ3ZWFrbWFwIl9zdHIpOwogICAgICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxKU1dlYWtT
ZXQ+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJ3ZWFr
c2V0Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJ3ZWFr
c2V0Il9zdHIpOwogCiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTU3RyaW5nSXRlcmF0
b3I+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJpdGVy
YXRvciJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiaXRl
cmF0b3IiX3N0cik7CiAKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8SlNBcnJheUl0ZXJh
dG9yPih2bSkKICAgICAgICAgICAgIHx8IG9iamVjdC0+aW5oZXJpdHM8SlNNYXBJdGVyYXRvcj4o
dm0pCiAgICAgICAgICAgICB8fCBvYmplY3QtPmluaGVyaXRzPEpTU2V0SXRlcmF0b3I+KHZtKSkK
LSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJpdGVyYXRvciJfcyk7
CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiaXRlcmF0b3IiX3N0
cik7CiAKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8SlNJbnQ4QXJyYXk+KHZtKQogICAg
ICAgICAgICAgfHwgb2JqZWN0LT5pbmhlcml0czxKU0ludDE2QXJyYXk+KHZtKQpAQCAtMjMxLDcg
KzIzMSw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnN1YnR5cGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAgICAgICAgICAgICB8fCBvYmplY3Qt
PmluaGVyaXRzPEpTRmxvYXQ2NEFycmF5Pih2bSkKICAgICAgICAgICAgIHx8IG9iamVjdC0+aW5o
ZXJpdHM8SlNCaWdJbnQ2NEFycmF5Pih2bSkKICAgICAgICAgICAgIHx8IG9iamVjdC0+aW5oZXJp
dHM8SlNCaWdVaW50NjRBcnJheT4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgImFycmF5Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJhcnJheSJfc3RyKTsKICAgICB9CiAKICAgICByZXR1cm4gaW1wbCgpLnN1YnR5
cGUoZ2xvYmFsT2JqZWN0LCB2YWx1ZSk7CkBAIC0zMTMsMTkgKzMxMywxOSBAQCBKU1ZhbHVlIEpT
SW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgICAgICBzd2l0Y2ggKHByb21pc2UtPnN0YXR1cyh2bSkpIHsKICAg
ICAgICAgY2FzZSBKU1Byb21pc2U6OlN0YXR1czo6UGVuZGluZzoKICAgICAgICAgICAgIHNjb3Bl
LnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCAic3Rh
dHVzIl9zLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJwZW5kaW5nIl9zKSkpOworICAgICAgICAg
ICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgY29uc3RydWN0
SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJzdGF0dXMiX3N0ciwganNOb250cml2aWFs
U3RyaW5nKHZtLCAicGVuZGluZyJfc3RyKSkpOwogICAgICAgICAgICAgcmV0dXJuIGFycmF5Owog
ICAgICAgICBjYXNlIEpTUHJvbWlzZTo6U3RhdHVzOjpGdWxmaWxsZWQ6Ci0gICAgICAgICAgICBh
cnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRl
cm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInN0YXR1cyJfcywganNOb250cml2aWFsU3RyaW5n
KHZtLCAicmVzb2x2ZWQiX3MpKSk7CisgICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgo
Z2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9i
amVjdCwgInN0YXR1cyJfc3RyLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJyZXNvbHZlZCJfc3Ry
KSkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsK
ICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGFycmF5LT5wdXREaXJl
Y3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHko
Z2xvYmFsT2JqZWN0LCAicmVzdWx0Il9zLCBwcm9taXNlLT5yZXN1bHQodm0pKSk7CisgICAgICAg
ICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1
Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInJlc3VsdCJfc3RyLCBwcm9taXNlLT5y
ZXN1bHQodm0pKSk7CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIGNhc2UgSlNQ
cm9taXNlOjpTdGF0dXM6OlJlamVjdGVkOgotICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9i
YWxPYmplY3QsICJzdGF0dXMiX3MsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInJlamVjdGVkIl9z
KSkpOworICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5k
ZXgrKywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJzdGF0dXMiX3N0
ciwganNOb250cml2aWFsU3RyaW5nKHZtLCAicmVqZWN0ZWQiX3N0cikpKTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CiAgICAgICAgICAgICBzY29w
ZS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInJl
c3VsdCJfcywgcHJvbWlzZS0+cmVzdWx0KHZtKSkpOworICAgICAgICAgICAgYXJyYXktPnB1dERp
cmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0
eShnbG9iYWxPYmplY3QsICJyZXN1bHQiX3N0ciwgcHJvbWlzZS0+cmVzdWx0KHZtKSkpOwogICAg
ICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgICAgICB9CiAgICAgICAgIC8vIEZJWE1FOiA8aHR0
cHM6Ly93ZWJraXQub3JnL2IvMTQxNjY0PiBXZWIgSW5zcGVjdG9yOiBFUzY6IEltcHJvdmVkIFN1
cHBvcnQgZm9yIFByb21pc2VzIC0gUHJvbWlzZSBSZWFjdGlvbnMKQEAgLTM1MSw3ICszNTEsNyBA
QCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAg
ICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3Qs
IG51bGxwdHIsIDEpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVl
KCkpOwotICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsr
LCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInRhcmdldEZ1bmN0aW9u
Il9zLCByZW1vdGVGdW5jdGlvbi0+dGFyZ2V0RnVuY3Rpb24oKSkpOworICAgICAgICBhcnJheS0+
cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFBy
b3BlcnR5KGdsb2JhbE9iamVjdCwgInRhcmdldEZ1bmN0aW9uIl9zdHIsIHJlbW90ZUZ1bmN0aW9u
LT50YXJnZXRGdW5jdGlvbigpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWUoKSk7CiAKICAgICAgICAgcmV0dXJuIGFycmF5OwpAQCAtMzYxLDEwICszNjEsMTAg
QEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwog
ICAgICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0
LCBudWxscHRyLCAyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1
ZSgpKTsKLSAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgr
KywgY29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJ0YXJnZXQiX3MsIHBy
b3h5LT50YXJnZXQoKSkpOworICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2Jq
ZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInRh
cmdldCJfc3RyLCBwcm94eS0+dGFyZ2V0KCkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgSlNWYWx1ZSgpKTsKICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICBh
cnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRl
cm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgImhhbmRsZXIiX3MsIHByb3h5LT5oYW5kbGVyKCkp
KTsKKyAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywg
Y29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJoYW5kbGVyIl9zdHIsIHBy
b3h5LT5oYW5kbGVyKCkpKTsKICAgICAgICAgcmV0dXJuIGFycmF5OwogICAgIH0KIApAQCAtMzcy
LDEzICszNzIsMTMgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6Z2V0SW50ZXJuYWxQ
cm9wZXJ0aWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICAgICAgYXV0byB0b1N0
cmluZyA9IFsmXSAoSXRlcmF0aW9uS2luZCBraW5kKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGtp
bmQpIHsKICAgICAgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6S2V5czoKLSAgICAgICAgICAg
ICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAia2V5cyJfcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImtleXMiX3N0cik7CiAgICAgICAg
ICAgICBjYXNlIEl0ZXJhdGlvbktpbmQ6OlZhbHVlczoKLSAgICAgICAgICAgICAgICByZXR1cm4g
anNOb250cml2aWFsU3RyaW5nKHZtLCAidmFsdWVzIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1
cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAidmFsdWVzIl9zdHIpOwogICAgICAgICAgICAgY2Fz
ZSBJdGVyYXRpb25LaW5kOjpFbnRyaWVzOgotICAgICAgICAgICAgICAgIHJldHVybiBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJlbnRyaWVzIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKHZtLCAiZW50cmllcyJfc3RyKTsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICIiX3MpOworICAgICAgICAgICAg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIiJfc3RyKTsKICAgICAgICAgfTsKICAgICAg
ICAgCiAgICAgICAgIGlmIChhdXRvKiBhcnJheUl0ZXJhdG9yID0ganNEeW5hbWljQ2FzdDxKU0Fy
cmF5SXRlcmF0b3IqPih2bSwgaXRlcmF0b3JPYmplY3QpKSB7CkBAIC02NDksMTEgKzY0OSwxMSBA
QCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3RhbmNlcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRgogCiAgICAgSlNWYWx1ZSBwcm90b3R5cGVPckNvbnN0
cnVjdG9yID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBpZiAoIXByb3Rv
dHlwZU9yQ29uc3RydWN0b3IuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBmaXJzdCBhcmd1bWVudCBt
dXN0IGJlIGFuIG9iamVjdC4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2VzIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUg
YW4gb2JqZWN0LiJfc3RyKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdChwcm90
b3R5cGVPckNvbnN0cnVjdG9yKTsKICAgICBpZiAob2JqZWN0LT5pbmhlcml0czxQcm94eU9iamVj
dD4odm0pKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBhIFByb3h5LiJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJ
bnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIGEgUHJveHkuIl9zdHIpOwogCiAgICAgSlNW
YWx1ZSBwcm90b3R5cGUgPSBvYmplY3Q7CiAKQEAgLTY3MSwyMSArNjcxLDIxIEBAIEpTVmFsdWUg
SlNJbmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SW5zdGFuY2VzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGCiAgICAgcHJvdG90eXBlU2xvdC5kaXNhbGxvd1ZNRW50cnkucmVzZXQo
KTsKIAogICAgIGlmIChvYmplY3QtPmluaGVyaXRzPFByb3h5T2JqZWN0Pih2bSkgfHwgcHJvdG90
eXBlLmluaGVyaXRzPFByb3h5T2JqZWN0Pih2bSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxl
ZCB3aXRoIGEgUHJveHkuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYSBQ
cm94eS4iX3N0cik7CiAKICAgICAvLyBGSVhNRTogaW1wbGVtZW50IGEgd2F5IG9mIGRpc3Rpbmd1
aXNoaW5nIGJldHdlZW4gaW50ZXJuYWwgYW5kIHVzZXItY3JlYXRlZCBvYmplY3RzLgogICAgIGlm
IChjaGVja0ZvcmJpZGRlblByb3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRo
IE9iamVjdC4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBPYmplY3QuIl9z
dHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRlblByb3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVj
dCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3Qg
YmUgY2FsbGVkIHdpdGggRnVuY3Rpb24uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVk
IHdpdGggRnVuY3Rpb24uIl9zdHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRlblByb3RvdHlwZShn
bG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2JqZWN0LT5hcnJheVByb3RvdHlwZSgpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUlu
c3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggQXJyYXkuIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5u
b3QgYmUgY2FsbGVkIHdpdGggQXJyYXkuIl9zdHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRlblBy
b3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2JqZWN0LT5tYXBQcm90b3R5cGUo
KSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
cXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIE1hcC4iX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2Vz
IGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBNYXAuIl9zdHIpOwogICAgIGlmIChjaGVja0ZvcmJpZGRl
blByb3RvdHlwZShnbG9iYWxPYmplY3QsIG9iamVjdCwgZ2xvYmFsT2JqZWN0LT5qc1NldFByb3Rv
dHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggU2V0LiJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0
YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIFNldC4iX3N0cik7CiAgICAgaWYgKGNoZWNrRm9y
YmlkZGVuUHJvdG90eXBlKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBnbG9iYWxPYmplY3QtPnByb21p
c2VQcm90b3R5cGUoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIFByb21pc2Uu
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggUHJvbWlzZS4iX3N0cik7CiAK
ICAgICBzYW5pdGl6ZVN0YWNrRm9yVk0odm0pOwogICAgIHZtLmhlYXAuY29sbGVjdE5vdyhTeW5j
LCBDb2xsZWN0aW9uU2NvcGU6OkZ1bGwpOwpAQCAtODU3LDcgKzg1Nyw3IEBAIEpTVmFsdWUgSlNJ
bmplY3RlZFNjcmlwdEhvc3Q6OnF1ZXJ5SG9sZGVycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUhvbGRlcnMgZmlyc3Qg
YXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUhvbGRlcnMgZmlyc3QgYXJndW1lbnQg
bXVzdCBiZSBhbiBvYmplY3QuIl9zdHIpOwogCiAgICAgSlNBcnJheSogcmVzdWx0ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKaW5kZXggMjg5OGNkZmViOTllZWFh
YzkzZTI2ZWEwNjkyY2Q3MTIxZWM3ODYxMi4uYjhiMDliMGQ3ZDRhMzU0MzlhYmFmMWEyYTFjOGQy
Yzk2MzgxOGQ1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcApAQCAtNzgsNyArNzgsNyBAQCBKU1ZhbHVl
IEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbAogCiAgICAgSlNWYWx1ZSBzY3JpcHRWYWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKCFzY3JpcHRWYWx1ZS5pc1N0cmluZygpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkpTSmF2YVNjcmlwdENh
bGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJl
IGEgc3RyaW5nLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcuIl9zdHIpOwogCiAgICAgU3RyaW5n
IHNjcmlwdCA9IGFzU3RyaW5nKHNjcmlwdFZhbHVlKS0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwpAQCAtMjE5LDkgKzIxOSw5
IEBAIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0eXBlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpIGNvbnN0CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAg
IHN3aXRjaCAoaW1wbCgpLnR5cGUoKSkgewogICAgIGNhc2UgRGVidWdnZXJDYWxsRnJhbWU6OkZ1
bmN0aW9uVHlwZToKLSAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImZ1bmN0
aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImZ1bmN0aW9u
Il9zdHIpOwogICAgIGNhc2UgRGVidWdnZXJDYWxsRnJhbWU6OlByb2dyYW1UeXBlOgotICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAicHJvZ3JhbSJfcyk7CisgICAgICAgIHJl
dHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJwcm9ncmFtIl9zdHIpOwogICAgIH0KIAogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCmluZGV4IGMxNGVmOGEzMTJmYTJmNjM2NTc5MTFk
MzlmOWMzYjE5MmU1OThhODUuLjdmZWQyZGY4YzRjMTcwZWI1MjE0ZjBmZTRjZjhhMGZmMDVmMWU5
MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJn
dW1lbnRzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFy
Z3VtZW50cy5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgYm9vbCBTY3JpcHRBcmd1bWVudHM6OmdldEZp
cnN0QXJndW1lbnRBc1N0cmluZyhTdHJpbmcmIHJlc3VsdCkgY29uc3QKIAogICAgIGF1dG8gdmFs
dWUgPSBhcmd1bWVudEF0KDApOwogICAgIGlmIChKU0M6OmpzRHluYW1pY0Nhc3Q8SlNDOjpQcm94
eU9iamVjdCo+KGdsb2JhbE9iamVjdC0+dm0oKSwgdmFsdWUpKSB7Ci0gICAgICAgIHJlc3VsdCA9
ICJbb2JqZWN0IFByb3h5XSJfczsKKyAgICAgICAgcmVzdWx0ID0gIltvYmplY3QgUHJveHldIl9z
dHI7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKaW5k
ZXggNDFhY2M4NTdjNjc2OGM5ZjZiYTk4MzBhNzFhYTAyZmE5MzQ3NmY5YS4uNjkxMjIxMDlmZDUw
YzNjMTk1ZjhlYjM1NmU4NGNiNjExNDNhMzY4MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0x
NDQsNyArMTQ0LDcgQEAgc3RhdGljIGJvb2wgZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4
Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICB9CiAgICAgCiAgICAg
aWYgKHNvdXJjZVVSTC0+aXNFbXB0eSgpKQotICAgICAgICAqc291cmNlVVJMID0gInVuZGVmaW5l
ZCJfczsKKyAgICAgICAgKnNvdXJjZVVSTCA9ICJ1bmRlZmluZWQiX3N0cjsKICAgICAKICAgICBz
Y29wZS5jbGVhckV4Y2VwdGlvbigpOwogICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5j
cHAKaW5kZXggODY4NmQ2OTQxYjc4NDc5OTViMmRmZmRkNjc4YjY2ZDNiNDgxZGRiNS4uMTM0M2Iy
MWE4NzQ0ZjFhMGEzMzU3NWIzMmU4MmU0MjZkZTI3ZGY0YyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcApA
QCAtMzcsNyArMzcsNyBAQAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIEluc3BlY3RvckFnZW50
OjpJbnNwZWN0b3JBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCi0gICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoIkluc3BlY3RvciJfcykKKyAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSW5zcGVj
dG9yIl9zdHIpCiAgICAgLCBtX2Vudmlyb25tZW50KGNvbnRleHQuZW52aXJvbm1lbnQpCiAgICAg
LCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPEluc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikpCiAgICAgLCBtX2JhY2tlbmREaXNwYXRjaGVy
KEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcykpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCmluZGV4IDMwYWNhZjMzNDU4
MDUzNzRkODFkYmIwYjFjNWQ0OWZmN2FmMGE2ZTEuLjZlYmNkZTI2OTI4ZTYxZTdiOGEwMTgyOWZi
YjIwMzkxZmM1ZjRmYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwCkBAIC0zOSw3ICsz
OSw3IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogSW5z
cGVjdG9yQXVkaXRBZ2VudDo6SW5zcGVjdG9yQXVkaXRBZ2VudChBZ2VudENvbnRleHQmIGNvbnRl
eHQpCi0gICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkF1ZGl0Il9zKQorICAgIDogSW5zcGVjdG9y
QWdlbnRCYXNlKCJBdWRpdCJfc3RyKQogICAgICwgbV9iYWNrZW5kRGlzcGF0Y2hlcihBdWRpdEJh
Y2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoY29udGV4dC5iYWNrZW5kRGlzcGF0Y2hlciwgdGhpcykp
CiAgICAgLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlcihjb250ZXh0LmluamVjdGVkU2NyaXB0TWFu
YWdlcikKICAgICAsIG1fZGVidWdnZXIoY29udGV4dC5lbnZpcm9ubWVudC5kZWJ1Z2dlcigpKQpA
QCAtNjEsNyArNjEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JB
dWRpdEFnZW50OjpzZXR1cChzdGQ6Om9wdGlvbmFsPFByb3RvY29sOgogICAgIFByb3RvY29sOjpF
cnJvclN0cmluZyBlcnJvclN0cmluZzsKIAogICAgIGlmIChoYXNBY3RpdmVBdWRpdCgpKQotICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk11c3QgY2FsbCB0ZWFyZG93biBiZWZvcmUgY2Fs
bGluZyBzZXR1cCBhZ2FpbiJfcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTXVz
dCBjYWxsIHRlYXJkb3duIGJlZm9yZSBjYWxsaW5nIHNldHVwIGFnYWluIl9zdHIpOwogCiAgICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNjcmlwdEZvckV2YWwoZXJy
b3JTdHJpbmcsIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSk7CiAgICAgaWYgKGluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkKQEAgLTY5LDcgKzY5LDcgQEAgUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yQXVkaXRBZ2VudDo6c2V0dXAoc3RkOjpvcHRpb25hbDxQcm90
b2NvbDoKIAogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGluamVjdGVk
U2NyaXB0Lmdsb2JhbE9iamVjdCgpOwogICAgIGlmICghZ2xvYmFsT2JqZWN0KQotICAgICAgICBy
ZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgZXhlY3V0aW9uIHN0YXRlIG9mIGluamVjdGVk
IHNjcmlwdCBmb3IgZ2l2ZW4gZXhlY3V0aW9uQ29udGV4dElkIl9zKTsKKyAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKCJNaXNzaW5nIGV4ZWN1dGlvbiBzdGF0ZSBvZiBpbmplY3RlZCBzY3Jp
cHQgZm9yIGdpdmVuIGV4ZWN1dGlvbkNvbnRleHRJZCJfc3RyKTsKIAogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKIApAQCAtNzcsNyArNzcsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJp
bmdPcjx2b2lkPiBJbnNwZWN0b3JBdWRpdEFnZW50OjpzZXR1cChzdGQ6Om9wdGlvbmFsPFByb3Rv
Y29sOgogCiAgICAgbV9pbmplY3RlZFdlYkluc3BlY3RvckF1ZGl0VmFsdWUuc2V0KHZtLCBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpKTsKICAgICBpZiAoIW1faW5qZWN0ZWRXZWJJ
bnNwZWN0b3JBdWRpdFZhbHVlKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlVuYWJs
ZSB0byBjb25zdHJ1Y3QgaW5qZWN0ZWQgV2ViSW5zcGVjdG9yQXVkaXQgb2JqZWN0LiJfcyk7Cisg
ICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGNvbnN0cnVjdCBpbmplY3Rl
ZCBXZWJJbnNwZWN0b3JBdWRpdCBvYmplY3QuIl9zdHIpOwogCiAgICAgcG9wdWxhdGVBdWRpdE9i
amVjdChnbG9iYWxPYmplY3QsIG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlKTsKIApA
QCAtOTUsNyArOTUsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQ
cm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcAogICAgIGF1dG8gZnVuY3Rp
b25TdHJpbmcgPSBtYWtlU3RyaW5nKCIoZnVuY3Rpb24oV2ViSW5zcGVjdG9yQXVkaXQpIHsgXCJ1
c2Ugc3RyaWN0XCI7IHJldHVybiBldmFsKGAoIiwgU3RyaW5nIHsgdGVzdCB9LnJlcGxhY2UoJ2An
LCAiXFxgIiksICIpYCkoV2ViSW5zcGVjdG9yQXVkaXQpOyB9KSIpOwogCiAgICAgSW5qZWN0ZWRT
Y3JpcHQ6OkV4ZWN1dGVPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy5vYmplY3RHcm91cCA9
ICJhdWRpdCJfczsKKyAgICBvcHRpb25zLm9iamVjdEdyb3VwID0gImF1ZGl0Il9zdHI7CiAgICAg
aWYgKG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlKQogICAgICAgICBvcHRpb25zLmFy
Z3MgPSB7IG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlLmdldCgpIH07CiAKQEAgLTEy
MSw3ICsxMjEsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjxzdGQ6OnR1cGxlPFJlZjxQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Piwgc3RkOjpvcAogUHJvdG9jb2w6OkVycm9yU3Ry
aW5nT3I8dm9pZD4gSW5zcGVjdG9yQXVkaXRBZ2VudDo6dGVhcmRvd24oKQogewogICAgIGlmICgh
aGFzQWN0aXZlQXVkaXQoKSkKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJNdXN0IGNh
bGwgc2V0dXAgYmVmb3JlIGNhbGxpbmcgdGVhcmRvd24iX3MpOworICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIk11c3QgY2FsbCBzZXR1cCBiZWZvcmUgY2FsbGluZyB0ZWFyZG93biJfc3Ry
KTsKIAogICAgIG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlLmNsZWFyKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKaW5kZXgg
YTYxODNiMGQ3MjRmOWZjZGZlNTQyZDQyZTlmMWFkNjZjNzFjMTgzNi4uOWE0OTc4Yjc4MGQyYTYw
NGNjYzU5NzZhN2U5ZDQ0ZTFhNmY3ZTZkNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAKQEAgLTI4MCwxMSArMjgwLDExIEBAIFN0cmluZyBD
YWxsRnJhbWU6OmZyaWVuZGx5RnVuY3Rpb25OYW1lKCkKIAogICAgIHN3aXRjaCAoY29kZUJsb2Nr
LT5jb2RlVHlwZSgpKSB7CiAgICAgY2FzZSBFdmFsQ29kZToKLSAgICAgICAgcmV0dXJuICJldmFs
IGNvZGUiX3M7CisgICAgICAgIHJldHVybiAiZXZhbCBjb2RlIl9zdHI7CiAgICAgY2FzZSBNb2R1
bGVDb2RlOgotICAgICAgICByZXR1cm4gIm1vZHVsZSBjb2RlIl9zOworICAgICAgICByZXR1cm4g
Im1vZHVsZSBjb2RlIl9zdHI7CiAgICAgY2FzZSBHbG9iYWxDb2RlOgotICAgICAgICByZXR1cm4g
Imdsb2JhbCBjb2RlIl9zOworICAgICAgICByZXR1cm4gImdsb2JhbCBjb2RlIl9zdHI7CiAgICAg
Y2FzZSBGdW5jdGlvbkNvZGU6CiAgICAgICAgIGlmIChqc0NhbGxlZSgpKQogICAgICAgICAgICAg
cmV0dXJuIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShjb2RlQmxvY2stPnZtKCksIGpzQ2FsbGVl
KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRv
d0NoaWNrZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1NoYWRvd0No
aWNrZW4uY3BwCmluZGV4IDc2YjRjNjU4MDlmNDUxZGY3OTYwYzkzMzlmNmYyMGVhNGVhYmMwZmMu
LjM3Zjk2ZTkyYjU2NjNiY2U1YWUxYmU4NzE0Yjk5YjU0ZGUyMzc3YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TaGFkb3dDaGlja2VuLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKQEAgLTQ1
LDExICs0NSwxMSBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6ZHVtcChQcmludFN0cmVh
bSYgb3V0KSBjb25zdAogICAgIH0KICAgICAKICAgICBpZiAoaXNQcm9sb2d1ZSgpKSB7Ci0gICAg
ICAgIFN0cmluZyBuYW1lID0gIj8iX3M7CisgICAgICAgIFN0cmluZyBuYW1lID0gIj8iX3N0cjsK
ICAgICAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4o
Y2FsbGVlLT52bSgpLCBjYWxsZWUpKSB7CiAgICAgICAgICAgICBuYW1lID0gZnVuY3Rpb24tPm5h
bWUoY2FsbGVlLT52bSgpKTsKICAgICAgICAgICAgIGlmIChuYW1lLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgICAgICBuYW1lID0gIj8iX3M7CisgICAgICAgICAgICAgICAgbmFtZSA9ICI/Il9zdHI7
CiAgICAgICAgIH0KIAogICAgICAgICBvdXQucHJpbnQoCkBAIC02OSwxMSArNjksMTEgQEAgdm9p
ZCBTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIAog
dm9pZCBTaGFkb3dDaGlja2VuOjpGcmFtZTo6ZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdAog
ewotICAgIFN0cmluZyBuYW1lID0gIj8iX3M7CisgICAgU3RyaW5nIG5hbWUgPSAiPyJfc3RyOwog
ICAgIGlmIChhdXRvKiBmdW5jdGlvbiA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KGNhbGxl
ZS0+dm0oKSwgY2FsbGVlKSkgewogICAgICAgICBuYW1lID0gZnVuY3Rpb24tPm5hbWUoY2FsbGVl
LT52bSgpKTsKICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbmFtZSA9
ICI/Il9zOworICAgICAgICAgICAgbmFtZSA9ICI/Il9zdHI7CiAgICAgfQogCiAgICAgb3V0LnBy
aW50KApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNr
VmlzaXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNp
dG9yLmNwcAppbmRleCA4OTIxYmJiMTc3OTAzODc2MDA3ZmU3ODQ0MmRlOTE4NDc5ZDA5N2IxLi41
YjI5NGVlNjc1ZTg4ZjY4MDkyZmUxOGQ3ZDQzNTM2MDkxYWFmYzcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcApAQCAtMjg4LDEw
ICsyODgsMTAgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OmZ1bmN0aW9uTmFtZSgpIGNv
bnN0CiAgICAgICAgIHRyYWNlTGluZSA9IG1ha2VTdHJpbmcobV93YXNtRnVuY3Rpb25JbmRleE9y
TmFtZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZVR5cGU6OkV2YWw6Ci0gICAgICAg
IHRyYWNlTGluZSA9ICJldmFsIGNvZGUiX3M7CisgICAgICAgIHRyYWNlTGluZSA9ICJldmFsIGNv
ZGUiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlVHlwZTo6TW9kdWxlOgotICAg
ICAgICB0cmFjZUxpbmUgPSAibW9kdWxlIGNvZGUiX3M7CisgICAgICAgIHRyYWNlTGluZSA9ICJt
b2R1bGUgY29kZSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvZGVUeXBlOjpOYXRp
dmU6IHsKICAgICAgICAgSlNDZWxsKiBjYWxsZWUgPSB0aGlzLT5jYWxsZWUoKS5hc0NlbGwoKTsK
QEAgLTMwMyw3ICszMDMsNyBAQCBTdHJpbmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6ZnVuY3Rpb25O
YW1lKCkgY29uc3QKICAgICAgICAgdHJhY2VMaW5lID0gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1l
KGNhbGxGcmFtZSgpLT5kZXByZWNhdGVkVk0oKSwganNDYXN0PEpTT2JqZWN0Kj4odGhpcy0+Y2Fs
bGVlKCkuYXNDZWxsKCkpKS5pbXBsKCk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZVR5
cGU6Okdsb2JhbDoKLSAgICAgICAgdHJhY2VMaW5lID0gImdsb2JhbCBjb2RlIl9zOworICAgICAg
ICB0cmFjZUxpbmUgPSAiZ2xvYmFsIGNvZGUiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgfQog
ICAgIHJldHVybiB0cmFjZUxpbmUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogdHJhY2VMaW5l
OwpAQCAtMzI0LDEwICszMjQsMTAgQEAgU3RyaW5nIFN0YWNrVmlzaXRvcjo6RnJhbWU6OnNvdXJj
ZVVSTCgpIGNvbnN0CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIENvZGVUeXBlOjpO
YXRpdmU6Ci0gICAgICAgIHRyYWNlTGluZSA9ICJbbmF0aXZlIGNvZGVdIl9zOworICAgICAgICB0
cmFjZUxpbmUgPSAiW25hdGl2ZSBjb2RlXSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IENvZGVUeXBlOjpXYXNtOgotICAgICAgICB0cmFjZUxpbmUgPSAiW3dhc20gY29kZV0iX3M7Cisg
ICAgICAgIHRyYWNlTGluZSA9ICJbd2FzbSBjb2RlXSJfc3RyOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgcmV0dXJuIHRyYWNlTGluZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiB0cmFj
ZUxpbmU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKaW5kZXggZTljMGVjYzMwZWFjYzY4YzU1
OWY4YWM0NjNlMTA2MjIzMWRkZWI2YS4uNDlkOTQxZTBiNzdlMWI4YTc1MTdlNzc4MDk3NmMzMTA0
MDY0ODBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNwcApAQCAtMTAzNyw3ICsxMDM3LDcg
QEAgdm9pZCBKSVQ6OmRvTWFpblRocmVhZFByZXBhcmF0aW9uQmVmb3JlQ29tcGlsZSgpCiB7CiAg
ICAgLy8gVGhpcyBlbnN1cmVzIHRoYXQgd2UgaGF2ZSB0aGUgbW9zdCB1cCB0byBkYXRlIHR5cGUg
aW5mb3JtYXRpb24gd2hlbiBwZXJmb3JtaW5nIHR5cGVjaGVjayBvcHRpbWl6YXRpb25zIGZvciBv
cF9wcm9maWxlX3R5cGUuCiAgICAgaWYgKG1fdm0tPnR5cGVQcm9maWxlcigpKQotICAgICAgICBt
X3ZtLT50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoKm1fdm0sICJQcmVwYXJp
bmcgZm9yIEpJVCBjb21waWxhdGlvbi4iX3MpOworICAgICAgICBtX3ZtLT50eXBlUHJvZmlsZXJM
b2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoKm1fdm0sICJQcmVwYXJpbmcgZm9yIEpJVCBjb21waWxh
dGlvbi4iX3N0cik7CiB9CiAKIHVuc2lnbmVkIEpJVDo6ZnJhbWVSZWdpc3RlckNvdW50Rm9yKFVu
bGlua2VkQ29kZUJsb2NrKiBjb2RlQmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVRPcGVyYXRpb25zLmNwcAppbmRleCBlZmM5YTBlOGJiMDJlMjI1ODExODQ2MjNkMTA2MGE4OTM1
Y2RmMmExLi41MTliOTU4ZDRjNDkxOWQyNjBjZmVhMjUxZGZhMDBkYzJjYjc3NmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKQEAgLTIwMiw3ICsyMDIs
NyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uVGhyb3dJdGVyYXRvclJlc3Vs
dElzTm90T2JqZWN0LCB2b2lkLCAoSlNHbG9iYQogICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2Fs
bEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7
CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3Vs
dCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3N0cik7CiB9CiAKIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25DYWxsQXJpdHlDaGVjaywgaW50MzJfdCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpKQpAQCAtMzUyNSw3ICszNTI1LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvblByb2Nlc3NUeXBlUHJvZmlsZXJMb2csIHZvaWQsIChWTSogdm1Q
b2ludGVyKSkKICAgICBWTSYgdm0gPSAqdm1Qb2ludGVyOwogICAgIENhbGxGcmFtZSogY2FsbEZy
YW1lID0gREVDTEFSRV9DQUxMX0ZSQU1FKHZtKTsKICAgICBKSVRPcGVyYXRpb25Qcm9sb2d1ZUNh
bGxGcmFtZVRyYWNlciB0cmFjZXIodm0sIGNhbGxGcmFtZSk7Ci0gICAgdm0udHlwZVByb2ZpbGVy
TG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAiTG9nIEZ1bGwsIGNhbGxlZCBmcm9tIGluc2lk
ZSBiYXNlbGluZSBKSVQiX3MpOworICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9n
RW50cmllcyh2bSwgIkxvZyBGdWxsLCBjYWxsZWQgZnJvbSBpbnNpZGUgYmFzZWxpbmUgSklUIl9z
dHIpOwogfQogCiBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHJvY2Vzc1NoYWRv
d0NoaWNrZW5Mb2csIHZvaWQsIChWTSogdm1Qb2ludGVyKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5k
ZXggZTdkM2NlOTQyMWU1ZGMxMmUwOWJhZjAyYmU1NTA0MmFmYWQ2MDdkOC4uYjEyNjk4MzlmODJh
YTMyMDFjM2Q3ZDFkYWYzYjdkZjNiNDhiY2IxYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKQEAgLTQ5
Miw3ICs0OTIsNyBAQCBzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX1NFVFRFUih0ZXN0Q3VzdG9t
VmFsdWVTZXR0ZXIpOwogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGFjY2Vzc29yTWFrZU1hc3F1
ZXJhZGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSkpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0
TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiSXNIVE1MRERBIl9z
LCBmdW5jdGlvbkNhbGxNYXNxdWVyYWRlcikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
SW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5l
ZCh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiSXNIVE1MRERBIl9zdHIsIGZ1bmN0aW9uQ2FsbE1hc3F1
ZXJhZGVyKSk7CiB9CiAKIApAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uRGVzY3JpYmVBcnJheSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNPYmplY3QqIG9i
amVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSk7CiAgICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNO
b250cml2aWFsU3RyaW5nKHZtLCAiPG5vdCBvYmplY3Q+Il9zKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiPG5vdCBvYmplY3Q+Il9zdHIp
KTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgdG9T
dHJpbmcoIjxCdXR0ZXJmbHk6ICIsIFJhd1BvaW50ZXIob2JqZWN0LT5idXR0ZXJmbHkoKSksICI7
IHB1YmxpYyBsZW5ndGg6ICIsIG9iamVjdC0+Z2V0QXJyYXlMZW5ndGgoKSwgIjsgdmVjdG9yIGxl
bmd0aDogIiwgb2JqZWN0LT5nZXRWZWN0b3JMZW5ndGgoKSwgIj4iKSkpOwogfQogCkBAIC0xNTI4
LDcgKzE1MjgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25SdW4sIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqCiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsK
ICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0
KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDb3VsZCBub3Qgb3BlbiBm
aWxlLiJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDb3VsZCBu
b3Qgb3BlbiBmaWxlLiJfc3RyKSkpOwogCiAgICAgR2xvYmFsT2JqZWN0KiByZWFsbSA9IEdsb2Jh
bE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNO
dWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKIApAQCAtMTU5MSw3ICsxNTkxLDcgQEAgc3RhdGlj
IFVSTCBjb21wdXRlRmlsZVBhdGgoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGwKIHsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBib29sIGNhbGxlclJlbGF0aXZlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KS5nZXRTdHJpbmcoZ2xvYmFsT2JqZWN0KSA9PSAiY2FsbGVyIHJlbGF0aXZlIl9zOworICAgIGJv
b2wgY2FsbGVyUmVsYXRpdmUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmdldFN0cmluZyhnbG9i
YWxPYmplY3QpID09ICJjYWxsZXIgcmVsYXRpdmUiOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIFVSTCgpKTsKIAogICAgIFN0cmluZyBmaWxlTmFtZSA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKQEAgLTE2MTksNyArMTYxOSw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkxvYWQsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqCiAKICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlm
ICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKHBhdGguZmlsZVN5c3RlbVBhdGgoKSwg
c2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDb3VsZCBub3Qg
b3BlbiBmaWxlLiJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4
Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJD
b3VsZCBub3Qgb3BlbiBmaWxlLiJfc3RyKSkpOwogCiAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBl
dmFsdWF0aW9uRXhjZXB0aW9uOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gZXZhbHVhdGUoZ2xvYmFs
T2JqZWN0LCBqc2NTb3VyY2Uoc2NyaXB0LCBTb3VyY2VPcmlnaW4geyBwYXRoIH0sIHBhdGguZmls
ZVN5c3RlbVBhdGgoKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CkBAIC0xNjg5
LDcgKzE2ODksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25DaGVja1N5bnRh
eCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIFZlY3RvcjxjaGFyPiBzY3JpcHQ7
CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlw
dCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ291bGQgbm90IG9wZW4g
ZmlsZS4iX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ291bGQg
bm90IG9wZW4gZmlsZS4iX3N0cikpKTsKIAogICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2g7CiAgICAg
c3RvcFdhdGNoLnN0YXJ0KCk7CkBAIC0yMDQ3LDcgKzIwNDcsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJFdmFsU2NyaXB0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdAogICAgICAgICBnbG9iYWwgPSBqc0Nhc3Q8SlNQcm94eSo+KGdsb2JhbCktPnRhcmdl
dCgpOwogICAgIEdsb2JhbE9iamVjdCogcmVhbG0gPSBqc0R5bmFtaWNDYXN0PEdsb2JhbE9iamVj
dCo+KHZtLCBnbG9iYWwpOwogICAgIGlmICghcmVhbG0pCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQgZ2xvYmFsIHRvIHBvaW50IHRvIGEgZ2xvYmFsIG9iamVj
dCJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJFeHBlY3RlZCBn
bG9iYWwgdG8gcG9pbnQgdG8gYSBnbG9iYWwgb2JqZWN0Il9zdHIpKSk7CiAKICAgICBOYWtlZFB0
cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBl
dmFsdWF0ZShyZWFsbSwganNjU291cmNlKHNvdXJjZUNvZGUsIGNhbGxGcmFtZS0+Y2FsbGVyU291
cmNlT3JpZ2luKHZtKSksIEpTVmFsdWUoKSwgZXZhbHVhdGlvbkV4Y2VwdGlvbik7CkBAIC0yMDc5
LDcgKzIwNzksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJHbG9i
YWxPYmplY3RGb3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291
bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVub3Vn
aCBhcmd1bWVudHMiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
Tm90IGVub3VnaCBhcmd1bWVudHMiX3N0cikpKTsKICAgICBKU1ZhbHVlIGFyZyA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKGFyZy5pc09iamVjdCgpKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KGFyZyktPmdsb2JhbE9iamVjdCh2bSktPmdsb2JhbFRo
aXMoKSk7CkBAIC0yMDkzLDcgKzIwOTMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVu
Y3Rpb25Eb2xsYXJJc1JlbW90ZUZ1bmN0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChjYWxsRnJh
bWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3N0cikpKTsKIAogICAgIEpTVmFs
dWUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzQm9vbGVhbihpc1JlbW90ZUZ1bmN0aW9uKHZtLCBhcmcpKSk7CkBAIC0yMTIwLDkgKzIx
MjAsOSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Eb2xsYXJBZ2VudFN0YXJ0
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIH07CiAKICAgICBpZiAoaXNHaWdh
Y2FnZU1lbW9yeUV4aGF1c3RlZChHaWdhY2FnZTo6SlNWYWx1ZSkgfHwgaXNHaWdhY2FnZU1lbW9y
eUV4aGF1c3RlZChHaWdhY2FnZTo6UHJpbWl0aXZlKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkdpZ2Fj
YWdlIGlzIGV4aGF1c3RlZCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiR2lnYWNhZ2UgaXMgZXho
YXVzdGVkIl9zdHIpKTsKIAotICAgIFN0cmluZyB3b3JrZXJQYXRoID0gIndvcmtlciJfczsKKyAg
ICBTdHJpbmcgd29ya2VyUGF0aCA9ICJ3b3JrZXIiX3N0cjsKICAgICBpZiAoIWNhbGxGcmFtZS0+
YXJndW1lbnQoMSkuaXNVbmRlZmluZWQoKSkgewogICAgICAgICB3b3JrZXJQYXRoID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgxKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIxNzEsNyArMjE3
MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50UmVjZWl2
ZUJyb2FkY2FzdCwgKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgSlNWYWx1ZSBjYWxsYmFjayA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZt
LCBjYWxsYmFjayk7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQgY2FsbGJh
Y2siX3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24o
Z2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQg
Y2FsbGJhY2siX3N0cikpKTsKICAgICAKICAgICBSZWZQdHI8TWVzc2FnZT4gbWVzc2FnZTsKICAg
ICB7CkBAIC0yMjY5LDcgKzIyNjksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rp
b25Eb2xsYXJBZ2VudEJyb2FkY2FzdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIH0K
ICNlbmRpZgogCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3Qgc3VwcG9ydGVk
IG9iamVjdCJfcykpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBzdXBw
b3J0ZWQgb2JqZWN0Il9zdHIpKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkRvbGxhckFnZW50R2V0UmVwb3J0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikpCkBAIC0yMzk1LDExICsyMzk1LDExIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihmdW5jdGlvblRyYW5zZmVyQXJyYXlCdWZmZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYg
KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihn
bG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfcykpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfc3RyKSkpOwogICAg
IAogICAgIEpTQXJyYXlCdWZmZXIqIGJ1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZl
cio+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWJ1ZmZlcikKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIi
X3MpKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXhwZWN0ZWQgYW4g
YXJyYXkgYnVmZmVyIl9zdHIpKSk7CiAgICAgCiAgICAgQXJyYXlCdWZmZXJDb250ZW50cyBkdW1t
eUNvbnRlbnRzOwogICAgIGJ1ZmZlci0+aW1wbCgpLT50cmFuc2ZlclRvKHZtLCBkdW1teUNvbnRl
bnRzKTsKQEAgLTI0NzksNyArMjQ3OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkVmZmVjdGZ1bDQyLCAoSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUqKSkKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbk1ha2VNYXNxdWVyYWRlciwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEludGVybmFsRnVuY3Rpb246OmNy
ZWF0ZUZ1bmN0aW9uVGhhdE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQodm0sIGdsb2JhbE9iamVjdCwg
MCwgIklzSFRNTEREQSJfcywgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKEludGVybmFsRnVuY3Rpb246OmNyZWF0ZUZ1bmN0aW9uVGhhdE1hc3F1
ZXJhZGVzQXNVbmRlZmluZWQodm0sIGdsb2JhbE9iamVjdCwgMCwgIklzSFRNTEREQSJfc3RyLCBm
dW5jdGlvbkNhbGxNYXNxdWVyYWRlcikpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIsIChKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSopKQpA
QCAtMjUxNyw3ICsyNTE3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uU2V0
VGltZW91dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICAvLyBGSVhN
RTogVGhpcyBtZWFucyB3ZSBjYW4ndCBwYXNzIGFueSBpbnRlcm5hbCBmdW5jdGlvbiBidXQgSSBk
b24ndCB0aGluayB0aGF0J3MgY29tbW9uIGZvciB0ZXN0aW5nLgogICAgIGF1dG8gY2FsbGJhY2sg
PSBqc0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CiAgICAgaWYgKCFjYWxsYmFjaykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9zdHIpOwogCiAgICAgLy8gRklY
TUU6IFdlIGRvbid0IGxvb2sgYXQgdGhlIHRpbWVvdXQgcGFyYW1ldGVyIGJlY2F1c2Ugd2UgZG9u
J3QgaGF2ZSBhIHNjaGVkdWxlIHdvcmsgbGF0ZXIgQVBJLgogICAgIGF1dG8gdGlja2V0ID0gdm0u
ZGVmZXJyZWRXb3JrVGltZXItPmFkZFBlbmRpbmdXb3JrKHZtLCBjYWxsYmFjaywgeyB9KTsKQEAg
LTI1NDMsNyArMjU0Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkZpbmFs
aXphdGlvblJlZ2lzdHJ5TGl2ZUNvdW50LCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBm
aW5hbGl6YXRpb25SZWdpc3RyeSA9IGpzRHluYW1pY0Nhc3Q8SlNGaW5hbGl6YXRpb25SZWdpc3Ry
eSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWZpbmFsaXphdGlvblJl
Z2lzdHJ5KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmlyc3QgYXJndW1lbnQgaXMgbm90IGEgZmluYWxpemF0aW9uUmVnaXN0cnkiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmly
c3QgYXJndW1lbnQgaXMgbm90IGEgZmluYWxpemF0aW9uUmVnaXN0cnkiX3N0cik7CiAKICAgICBM
b2NrZXIgbG9ja2VyIHsgZmluYWxpemF0aW9uUmVnaXN0cnktPmNlbGxMb2NrKCkgfTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5saXZl
Q291bnQobG9ja2VyKSkpOwpAQCAtMjU1Niw3ICsyNTU2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlEZWFkQ291bnQsIChKU0dsb2JhbE9i
amVjdCoKIAogICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0ganNEeW5hbWljQ2FzdDxK
U0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAg
IGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6
YXRpb25SZWdpc3RyeSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRpb25SZWdp
c3RyeSJfc3RyKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBmaW5hbGl6YXRpb25SZWdpc3RyeS0+
Y2VsbExvY2soKSB9OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZmluYWxp
emF0aW9uUmVnaXN0cnktPmRlYWRDb3VudChsb2NrZXIpKSk7CkBAIC0yNjE5LDcgKzI2MTksNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25DcmVhdGVCaWdJbnQzMiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc0JpZ0ludDMyKHN0YXRpY19jYXN0PGludDMyX3Q+KGRpZ2l0KSkpOwogICAgICAg
ICB9CiAgICAgfQotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPdXQg
b2YgcmFuZ2Ugb2YgQmlnSW50MzIiX3MpOworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJPdXQgb2YgcmFuZ2Ugb2YgQmlnSW50MzIiX3N0cik7CiAgICAgcmV0dXJuIHsg
fTsKIH0KICNlbmRpZgpAQCAtMjc2OCw3ICsyNzY4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2VzLCAoSlNHbG9iYWxPYmplY3Qq
IGcKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAo
IXZtLnNhbXBsaW5nUHJvZmlsZXIoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmpl
Y3QsICJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIgc3RhcnRlZCJfcykpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJTYW1wbGluZyBwcm9maWxlciB3YXMgbmV2ZXIg
c3RhcnRlZCJfc3RyKSkpOwogCiAgICAgU3RyaW5nIGpzb25TdHJpbmcgPSB2bS5zYW1wbGluZ1By
b2ZpbGVyKCktPnN0YWNrVHJhY2VzQXNKU09OKCk7CiAgICAgRW5jb2RlZEpTVmFsdWUgcmVzdWx0
ID0gSlNWYWx1ZTo6ZW5jb2RlKEpTT05QYXJzZShnbG9iYWxPYmplY3QsIGpzb25TdHJpbmcpKTsK
QEAgLTI3ODksNyArMjc4OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkFz
eW5jVGVzdFN0YXJ0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogICAgIEpTVmFs
dWUgbnVtYmVyT2ZBc3luY1Bhc3NlcyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KCFudW1iZXJPZkFzeW5jUGFzc2VzLmlzVUludDMyKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJl
IGEgdWludDMyIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYSB1aW50MzIiX3N0cik7CiAK
ICAgICBhc3luY1Rlc3RFeHBlY3RlZFBhc3NlcyArPSBudW1iZXJPZkFzeW5jUGFzc2VzLmFzVUlu
dDMyKCk7CiAgICAgcmV0dXJuIGVuY29kZWRKU1VuZGVmaW5lZCgpOwpAQCAtMjgwOSw3ICsyODA5
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uV2ViQXNzZW1ibHlNZW1vcnlN
b2RlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgCiAgICAgaWYgKCFXYXNtOjppc1N1cHBvcnRlZCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2ViQXNz
ZW1ibHlNZW1vcnlNb2RlIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpZiB0aGUgdXNlV2ViQXNzZW1i
bHkgb3B0aW9uIGlzIHNldCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJXZWJBc3NlbWJseU1lbW9yeU1vZGUgc2hvdWxkIG9ubHkgYmUg
Y2FsbGVkIGlmIHRoZSB1c2VXZWJBc3NlbWJseSBvcHRpb24gaXMgc2V0Il9zdHIpOwogCiAgICAg
aWYgKEpTT2JqZWN0KiBvYmplY3QgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmdldE9iamVjdCgp
KSB7CiAgICAgICAgIGlmIChhdXRvKiBtZW1vcnkgPSBqc0R5bmFtaWNDYXN0PEpTV2ViQXNzZW1i
bHlNZW1vcnkqPih2bSwgb2JqZWN0KSkKQEAgLTI4MTgsNyArMjgxOCw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihmdW5jdGlvbldlYkFzc2VtYmx5TWVtb3J5TW9kZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KHZtLCBtYWtlU3RyaW5nKGluc3RhbmNlLT5tZW1vcnlNb2RlKCkpKSk7CiAgICAgfQogCi0gICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIldlYkFzc2VtYmx5
TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSBvciBXZWJBc3Nl
bWJseS5JbnN0YW5jZSJfcyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIldlYkFzc2VtYmx5TWVtb3J5TW9kZSBleHBlY3RzIGVpdGhlciBhIFdlYkFz
c2VtYmx5Lk1lbW9yeSBvciBXZWJBc3NlbWJseS5JbnN0YW5jZSJfc3RyKTsKIH0KIAogI2VuZGlm
IC8vIEVOQUJMRShXRUJBU1NFTUJMWSkKQEAgLTMyMDIsNyArMzIwMiw3IEBAIHN0YXRpYyB2b2lk
IHJ1bldpdGhPcHRpb25zKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDb21tYW5kTGluZSYg
b3B0aW9ucywgYm9vCiAgICAgICAgICAgICBzaXplX3QgY29tbWFuZExpbmVMZW5ndGggPSBzdHJs
ZW4oc2NyaXB0c1tpXS5hcmd1bWVudCk7CiAgICAgICAgICAgICBzY3JpcHRCdWZmZXIucmVzaXpl
KGNvbW1hbmRMaW5lTGVuZ3RoKTsKICAgICAgICAgICAgIHN0ZDo6Y29weShzY3JpcHRzW2ldLmFy
Z3VtZW50LCBzY3JpcHRzW2ldLmFyZ3VtZW50ICsgY29tbWFuZExpbmVMZW5ndGgsIHNjcmlwdEJ1
ZmZlci5iZWdpbigpKTsKLSAgICAgICAgICAgIGZpbGVOYW1lID0gIltDb21tYW5kIExpbmVdIl9z
OworICAgICAgICAgICAgZmlsZU5hbWUgPSAiW0NvbW1hbmQgTGluZV0iX3N0cjsKICAgICAgICAg
fQogCiAgICAgICAgIGJvb2wgaXNMYXN0RmlsZSA9IGkgPT0gc2NyaXB0cy5zaXplKCkgLSAxOwpA
QCAtMzI1NSw3ICszMjU1LDcgQEAgc3RhdGljIHZvaWQgcnVuSW50ZXJhY3RpdmUoR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVVJMIGRpcmVjdG9yeU5hbWUgPSBjdXJyZW50V29ya2lu
Z0RpcmVjdG9yeSgpOwogICAgIGlmICghZGlyZWN0b3J5TmFtZS5pc1ZhbGlkKCkpCiAgICAgICAg
IHJldHVybjsKLSAgICBTb3VyY2VPcmlnaW4gc291cmNlT3JpZ2luKFVSTChkaXJlY3RvcnlOYW1l
LCAiLi9pbnRlcnByZXRlciJfcykpOworICAgIFNvdXJjZU9yaWdpbiBzb3VyY2VPcmlnaW4oVVJM
KGRpcmVjdG9yeU5hbWUsICIuL2ludGVycHJldGVyIl9zdHIpKTsKICAgICAKICAgICBib29sIHNo
b3VsZFF1aXQgPSBmYWxzZTsKICAgICB3aGlsZSAoIXNob3VsZFF1aXQpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCmluZGV4IGRhNjAwZWEwMGYw
YzhkNjQzYTU3ZjY2ZmI1ZjliMGUzYTM1NjgzYTguLmZjNWNkYmU1ZjAwZjA5YWNmODNmYTIxNmNk
YmViY2VhMGI0NWJjMjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludFNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50
U2xvd1BhdGhzLmNwcApAQCAtODk5LDcgKzg5OSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNMKHNs
b3dfcGF0aF9pdGVyYXRvcl9vcGVuX2dldF9uZXh0KQogICAgIFJlZ2lzdGVyJiBuZXh0UmVnaXN0
ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9uZXh0KTsKIAogICAgIGlmICgh
aXRlcmF0b3IuaXNPYmplY3QoKSkKLSAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVj
dC4iX3MpKTsKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3N0cikpOwog
CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBjb2RlQmxvY2ss
IGdsb2JhbE9iamVjdCwgaXRlcmF0b3IsIHZtLnByb3BlcnR5TmFtZXMtPm5leHQsIG1ldGFkYXRh
Lm1fbW9kZU1ldGFkYXRhKTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKQEAgLTkxOSw3
ICs5MTksNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfaXRlcmF0b3JfbmV4dF9n
ZXRfZG9uZSkKICAgICBSZWdpc3RlciYgZG9uZVJlZ2lzdGVyID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRSKGJ5dGVjb2RlLm1fZG9uZSk7CiAKICAgICBpZiAoIWl0ZXJhdG9yUmV0dXJuLmlzT2JqZWN0
KCkpCi0gICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJ
dGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKSk7CisgICAgICAg
IExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpKTsKIAogICAgIEpTVmFsdWUgcmVz
dWx0ID0gcGVyZm9ybUxMSW50R2V0QnlJRChwYywgY29kZUJsb2NrLCBnbG9iYWxPYmplY3QsIGl0
ZXJhdG9yUmV0dXJuLCB2bS5wcm9wZXJ0eU5hbWVzLT5kb25lLCBtZXRhZGF0YS5tX2RvbmVNb2Rl
TWV0YWRhdGEpOwogICAgIExMSU5UX0NIRUNLX0VYQ0VQVElPTigpOwpAQCAtMjM0MSw3ICsyMzQx
LDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlSXRlcmF0b3JPcGVuQ2hlY2twb2ludChWTSYgdm0sIENh
bGxGcmFtZSogY2FsbEZyYW1lLCBKU0dsb2JhbE8KICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSBpdGVyYXRvciA9IGNhbGxGcmFtZS0+dW5jaGVj
a2VkUihieXRlY29kZS5tX2l0ZXJhdG9yKS5qc1ZhbHVlKCk7CiAgICAgaWYgKCFpdGVyYXRvci5p
c09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yMzYxLDcgKzIzNjEsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRvck5l
eHRDaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsTwogICAg
IFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShuZXh0LCAiV2Ugc2hvdWxkIG5vdCBPU1IgZXhp
dCB0byBhIGNoZWNrcG9pbnQgZm9yIGZhc3QgY2FzZXMuIik7CiAKICAgICBpZiAoIWl0ZXJhdG9y
UmVzdWx0T2JqZWN0LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2Jq
ZWN0LiJfcyk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Ikl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3N0cik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAK
aW5kZXggMTA5MzUxZDgzNTUwNjMxMWY5ZjljNTA1MGQ3Y2RiNmQ2Y2ZlNjM2OS4uNjBkZTQ5YWE0
YzQ5MGVmZGYyZjU3NTRlMGEwNWZkMjE3OTIwZjZjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9MZXhlci5jcHAKQEAgLTUxNCwxOSArNTE0LDE5IEBAIFN0cmluZyBMZXhlcjxUPjo6aW52
YWxpZENoYXJhY3Rlck1lc3NhZ2UoKSBjb25zdAogewogICAgIHN3aXRjaCAobV9jdXJyZW50KSB7
CiAgICAgY2FzZSAwOgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFwwJyJf
czsKKyAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcMCciX3N0cjsKICAgICBj
YXNlIDEwOgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFxuJyJfczsKKyAg
ICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcbiciX3N0cjsKICAgICBjYXNlIDEx
OgotICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFx2JyJfczsKKyAgICAgICAg
cmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcdiciX3N0cjsKICAgICBjYXNlIDEzOgotICAg
ICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFxyJyJfczsKKyAgICAgICAgcmV0dXJu
ICJJbnZhbGlkIGNoYXJhY3RlcjogJ1xcciciX3N0cjsKICAgICBjYXNlIDM1OgotICAgICAgICBy
ZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnIyciX3M7CisgICAgICAgIHJldHVybiAiSW52YWxp
ZCBjaGFyYWN0ZXI6ICcjJyJfc3RyOwogICAgIGNhc2UgNjQ6Ci0gICAgICAgIHJldHVybiAiSW52
YWxpZCBjaGFyYWN0ZXI6ICdAJyJfczsKKyAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3Rl
cjogJ0AnIl9zdHI7CiAgICAgY2FzZSA5NjoKLSAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJh
Y3RlcjogJ2AnIl9zOworICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnYCciX3N0
cjsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiSW52YWxpZCBjaGFy
YWN0ZXIgJ1xcdSIsIGhleChtX2N1cnJlbnQsIDQsIExvd2VyY2FzZSksICdcJycpOwogICAgIH0K
QEAgLTEyMTEsNyArMTIxMSw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4g
QUxXQVlTX0lOTElORSB0eXBlbmFtZSBMZXhlcjxUPjo6U3RyaW5nUGFyc2VSCiAgICAgICAgICAg
ICBlbHNlIGlmIChtX2N1cnJlbnQgPT0gJ3gnKSB7CiAgICAgICAgICAgICAgICAgc2hpZnQoKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpIHx8ICFpc0FT
Q0lJSGV4RGlnaXQocGVlaygxKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSAiXFx4IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBzZXF1
ZW5jZSJfczsKKyAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiXFx4IGNh
biBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBzZXF1ZW5jZSJfc3RyOwogICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gKGF0RW5kKCkgfHwgKGlzQVNDSUlIZXhEaWdpdChtX2N1
cnJlbnQpICYmIChtX2NvZGUgKyAxID09IG1fY29kZUVuZCkpKSA/IFN0cmluZ1VudGVybWluYXRl
ZCA6IFN0cmluZ0Nhbm5vdEJlUGFyc2VkOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICBUIHByZXYgPSBtX2N1cnJlbnQ7CkBAIC0xMjY1LDcgKzEyNjUsNyBAQCB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJTkUgYXV0byBMZXhlcjxUPjo6cGFy
c2VDb21wbGV4RXNjYQogICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAgICAgICAgICAgICBBU1NF
UlQoIWlzQVNDSUlIZXhEaWdpdChtX2N1cnJlbnQpKTsKIAotICAgICAgICAgICAgbV9sZXhFcnJv
ck1lc3NhZ2UgPSAiXFx4IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3RlciBz
ZXF1ZW5jZSJfczsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlxceCBjYW4gb25s
eSBiZSBmb2xsb3dlZCBieSBhIGhleCBjaGFyYWN0ZXIgc2VxdWVuY2UiX3N0cjsKICAgICAgICAg
ICAgIHJldHVybiBhdEVuZCgpID8gU3RyaW5nVW50ZXJtaW5hdGVkIDogU3RyaW5nQ2Fubm90QmVQ
YXJzZWQ7CiAgICAgICAgIH0KIApAQCAtMTI4OCw3ICsxMjg4LDcgQEAgdGVtcGxhdGUgPGJvb2wg
c2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQ29t
cGxleEVzY2EKICAgICAgICAgICAgIHJldHVybiBTdHJpbmdQYXJzZWRTdWNjZXNzZnVsbHk7CiAg
ICAgICAgIH0KIAotICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJcXHUgY2FuIG9ubHkgYmUg
Zm9sbG93ZWQgYnkgYSBVbmljb2RlIGNoYXJhY3RlciBzZXF1ZW5jZSJfczsKKyAgICAgICAgbV9s
ZXhFcnJvck1lc3NhZ2UgPSAiXFx1IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgVW5pY29kZSBj
aGFyYWN0ZXIgc2VxdWVuY2UiX3N0cjsKICAgICAgICAgcmV0dXJuIGF0RW5kKCkgPyBTdHJpbmdV
bnRlcm1pbmF0ZWQgOiBTdHJpbmdDYW5ub3RCZVBhcnNlZDsKICAgICB9CiAKQEAgLTEzMDYsNyAr
MTMwNiw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElO
RSBhdXRvIExleGVyPFQ+OjpwYXJzZUNvbXBsZXhFc2NhCiAgICAgICAgICAgICAgICAgaWYgKGNo
YXJhY3RlcjEgPT0gJzAnKQogICAgICAgICAgICAgICAgICAgICBzaGlmdCgpOwogCi0gICAgICAg
ICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVGhlIG9ubHkgdmFsaWQgbnVtZXJpYyBlc2Nh
cGUgaW4gc3RyaWN0IG1vZGUgaXMgJ1xcMCciX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJv
ck1lc3NhZ2UgPSAiVGhlIG9ubHkgdmFsaWQgbnVtZXJpYyBlc2NhcGUgaW4gc3RyaWN0IG1vZGUg
aXMgJ1xcMCciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4gYXRFbmQoKSA/IFN0cmluZ1Vu
dGVybWluYXRlZCA6IFN0cmluZ0Nhbm5vdEJlUGFyc2VkOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKHNob3VsZEJ1aWxkU3RyaW5ncykKQEAgLTEzNDUsNyArMTM0NSw3IEBAIHRlbXBs
YXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlTX0lOTElORSBhdXRvIExleGVyPFQ+
OjpwYXJzZUNvbXBsZXhFc2NhCiAgICAgICAgIHJldHVybiBTdHJpbmdQYXJzZWRTdWNjZXNzZnVs
bHk7CiAgICAgfQogCi0gICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmlu
ZyBjb25zdGFudCJfczsKKyAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3Ry
aW5nIGNvbnN0YW50Il9zdHI7CiAgICAgcmV0dXJuIFN0cmluZ1VudGVybWluYXRlZDsKIH0KIApA
QCAtMTM4Nyw3ICsxMzg3LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBh
dXRvIExleGVyPFQ+OjpwYXJzZVN0cmluZ1Nsb3dDYXNlKEpTVG9rZW5EYXQKICAgICAgICAgaWYg
KFVOTElLRUxZKG1fY3VycmVudCA8IDB4RSkpIHsKICAgICAgICAgICAgIC8vIE5ldy1saW5lIG9y
IGVuZCBvZiBpbnB1dCBpcyBub3QgYWxsb3dlZAogICAgICAgICAgICAgaWYgKGF0RW5kKCkgfHwg
bV9jdXJyZW50ID09ICdccicgfHwgbV9jdXJyZW50ID09ICdcbicpIHsKLSAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiJfczsKKyAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIEVPRiJfc3RyOwogICAgICAgICAgICAg
ICAgIHJldHVybiBhdEVuZCgpID8gU3RyaW5nVW50ZXJtaW5hdGVkIDogU3RyaW5nQ2Fubm90QmVQ
YXJzZWQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAvLyBBbnl0aGluZyBlbHNlIGlzIGp1
c3QgYSBub3JtYWwgY2hhcmFjdGVyCkBAIC0xNDY0LDcgKzE0NjQsNyBAQCB0eXBlbmFtZSBMZXhl
cjxUPjo6U3RyaW5nUGFyc2VSZXN1bHQgTGV4ZXI8VD46OnBhcnNlVGVtcGxhdGVMaXRlcmFsKEpT
VG9rZW5EYXRhKgogICAgICAgICAgICAgLy8gRW5kIG9mIGlucHV0IGlzIG5vdCBhbGxvd2VkLgog
ICAgICAgICAgICAgLy8gVW5saWtlIFN0cmluZywgbGluZSB0ZXJtaW5hdG9yIGlzIGFsbG93ZWQu
CiAgICAgICAgICAgICBpZiAoYXRFbmQoKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zOworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFN0
cmluZ1VudGVybWluYXRlZDsKICAgICAgICAgICAgIH0KIApAQCAtMjEwMSw3ICsyMTAxLDcgQEAg
c3RhcnQ6CiAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgaWYgKHBhcnNlTXVsdGls
aW5lQ29tbWVudCgpKQogICAgICAgICAgICAgICAgIGdvdG8gc3RhcnQ7Ci0gICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9ICJNdWx0aWxpbmUgY29tbWVudCB3YXMgbm90IGNsb3NlZCBwcm9w
ZXJseSJfczsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk11bHRpbGluZSBjb21t
ZW50IHdhcyBub3QgY2xvc2VkIHByb3Blcmx5Il9zdHI7CiAgICAgICAgICAgICB0b2tlbiA9IFVO
VEVSTUlOQVRFRF9NVUxUSUxJTkVfQ09NTUVOVF9FUlJPUlRPSzsKICAgICAgICAgICAgIGdvdG8g
cmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAgLTIyNTUsMTMgKzIyNTUsMTMgQEAgc3RhcnQ6CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAoVU5MSUtFTFkoIXBhcnNl
TnVtYmVyQWZ0ZXJEZWNpbWFsUG9pbnQoKSkpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZGVjaW1hbCBwb2ludCJfczsKKyAgICAgICAg
ICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZGVjaW1hbCBw
b2ludCJfc3RyOwogICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05V
TUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9L
OwogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQogICAgICAgICB0b2tl
biA9IERPVUJMRTsKICAgICAgICAgaWYgKFVOTElLRUxZKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1
YWwobV9jdXJyZW50LCAnZScpICYmICFwYXJzZU51bWJlckFmdGVyRXhwb25lbnRJbmRpY2F0b3Io
KSkpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vbi1udW1iZXIgZm91bmQg
YWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIl9zOworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3IiX3N0cjsKICAg
ICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVOVEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxf
RVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSzsKICAgICAgICAgICAg
IGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAgLTIyNzYsNyArMjI3Niw3IEBAIHN0YXJ0
OgogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChjdXJyZW50
Q29kZVBvaW50KCkpKSkgewotICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8gaWRl
bnRpZmllcnMgYWxsb3dlZCBkaXJlY3RseSBhZnRlciBudW1lcmljIGxpdGVyYWwiX3M7CisgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBpZGVudGlmaWVycyBhbGxvd2VkIGRpcmVj
dGx5IGFmdGVyIG51bWVyaWMgbGl0ZXJhbCJfc3RyOwogICAgICAgICAgICAgdG9rZW4gPSBhdEVu
ZCgpID8gVU5URVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVN
RVJJQ19MSVRFUkFMX0VSUk9SVE9LOwogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAg
ICAgICAgfQpAQCAtMjI4Niw3ICsyMjg2LDcgQEAgc3RhcnQ6CiAgICAgICAgIHNoaWZ0KCk7CiAg
ICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ3gnKSkgewog
ICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJSGV4RGlnaXQocGVlaygxKSkpKSB7Ci0g
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8gaGV4YWRlY2ltYWwgZGlnaXRz
IGFmdGVyICcweCciX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8g
aGV4YWRlY2ltYWwgZGlnaXRzIGFmdGVyICcweCciX3N0cjsKICAgICAgICAgICAgICAgICB0b2tl
biA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdv
dG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0yMzE0LDcgKzIzMTQsNyBAQCBzdGFy
dDoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFy
dChjdXJyZW50Q29kZVBvaW50KCkpKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIk5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2ltYWwgbGl0ZXJhbCBhbmQgaWRlbnRpZmll
ciJfczsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBzcGFjZSBiZXR3
ZWVuIGhleGFkZWNpbWFsIGxpdGVyYWwgYW5kIGlkZW50aWZpZXIiX3N0cjsKICAgICAgICAgICAg
ICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9IRVhfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAg
ICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0yMzI1LDcgKzIzMjUs
NyBAQCBzdGFydDoKICAgICAgICAgfQogICAgICAgICBpZiAoaXNBU0NJSUFscGhhQ2FzZWxlc3NF
cXVhbChtX2N1cnJlbnQsICdiJykpIHsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghaXNBU0NJ
SUJpbmFyeURpZ2l0KHBlZWsoMSkpKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIk5vIGJpbmFyeSBkaWdpdHMgYWZ0ZXIgJzBiJyJfczsKKyAgICAgICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9ICJObyBiaW5hcnkgZGlnaXRzIGFmdGVyICcwYiciX3N0cjsKICAg
ICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9CSU5BUllfTlVNQkVSX0VSUk9SVE9L
OwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0y
MzUzLDcgKzIzNTMsNyBAQCBzdGFydDoKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KFVOTElLRUxZKGlzSWRlbnRTdGFydChjdXJyZW50Q29kZVBvaW50KCkpKSkgewotICAgICAgICAg
ICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vIHNwYWNlIGJldHdlZW4gYmluYXJ5IGxpdGVy
YWwgYW5kIGlkZW50aWZpZXIiX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSAiTm8gc3BhY2UgYmV0d2VlbiBiaW5hcnkgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciJfc3RyOwog
ICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0JJTkFSWV9OVU1CRVJfRVJST1JU
T0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0KQEAg
LTIzNjUsNyArMjM2NSw3IEBAIHN0YXJ0OgogCiAgICAgICAgIGlmIChpc0FTQ0lJQWxwaGFDYXNl
bGVzc0VxdWFsKG1fY3VycmVudCwgJ28nKSkgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKCFp
c0FTQ0lJT2N0YWxEaWdpdChwZWVrKDEpKSkpIHsKLSAgICAgICAgICAgICAgICBtX2xleEVycm9y
TWVzc2FnZSA9ICJObyBvY3RhbCBkaWdpdHMgYWZ0ZXIgJzBvJyJfczsKKyAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBvY3RhbCBkaWdpdHMgYWZ0ZXIgJzBvJyJfc3RyOwog
ICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX09DVEFMX05VTUJFUl9FUlJPUlRP
SzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgfQpAQCAt
MjM5Myw3ICsyMzkzLDcgQEAgc3RhcnQ6CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
IChVTkxJS0VMWShpc0lkZW50U3RhcnQoY3VycmVudENvZGVQb2ludCgpKSkpIHsKLSAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBzcGFjZSBiZXR3ZWVuIG9jdGFsIGxpdGVy
YWwgYW5kIGlkZW50aWZpZXIiX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSAiTm8gc3BhY2UgYmV0d2VlbiBvY3RhbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIl9zdHI7CiAg
ICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1JTkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9L
OwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0y
NDA0LDE0ICsyNDA0LDE0IEBAIHN0YXJ0OgogICAgICAgICB9CiAKICAgICAgICAgaWYgKFVOTElL
RUxZKG1fY3VycmVudCA9PSAnXycpKSB7Ci0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
ICJOdW1lcmljIGxpdGVyYWxzIG1heSBub3QgYmVnaW4gd2l0aCAwXyJfczsKKyAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gIk51bWVyaWMgbGl0ZXJhbHMgbWF5IG5vdCBiZWdpbiB3aXRo
IDBfIl9zdHI7CiAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRFRF9PQ1RBTF9OVU1CRVJf
RVJST1JUT0s7CiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICB9CiAKICAg
ICAgICAgcmVjb3JkOCgnMCcpOwogICAgICAgICBpZiAoVU5MSUtFTFkoc3RyaWN0TW9kZSAmJiBp
c0FTQ0lJRGlnaXQobV9jdXJyZW50KSkpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdl
ID0gIkRlY2ltYWwgaW50ZWdlciBsaXRlcmFscyB3aXRoIGEgbGVhZGluZyB6ZXJvIGFyZSBmb3Ji
aWRkZW4gaW4gc3RyaWN0IG1vZGUiX3M7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9
ICJEZWNpbWFsIGludGVnZXIgbGl0ZXJhbHMgd2l0aCBhIGxlYWRpbmcgemVybyBhcmUgZm9yYmlk
ZGVuIGluIHN0cmljdCBtb2RlIl9zdHI7CiAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlOQVRF
RF9PQ1RBTF9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwog
ICAgICAgICB9CkBAIC0yNDQxLDE0ICsyNDQxLDE0IEBAIHN0YXJ0OgogICAgICAgICAgICAgICAg
IGlmIChtX2N1cnJlbnQgPT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgICAgIHNoaWZ0KCk7CiAg
ICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FTQ0lJRGlnaXQobV9jdXJyZW50KSAm
JiAhcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpKSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBkZWNpbWFs
IHBvaW50Il9zOworICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAi
Tm9uLW51bWJlciBmb3VuZCBhZnRlciBkZWNpbWFsIHBvaW50Il9zdHI7CiAgICAgICAgICAgICAg
ICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFM
X0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIHRva2VuID0gRE9VQkxFOwogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1
cnJlbnQsICdlJykgJiYgIXBhcnNlTnVtYmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSkgewot
ICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJOb24tbnVtYmVyIGZvdW5k
IGFmdGVyIGV4cG9uZW50IGluZGljYXRvciJfczsKKyAgICAgICAgICAgICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3Ii
X3N0cjsKICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVE
X05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9S
VE9LOwogICAgICAgICAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICAgICAg
ICAgIH0KQEAgLTI0NjUsNyArMjQ2NSw3IEBAIHN0YXJ0OgogICAgICAgICB9CiAKICAgICAgICAg
aWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChjdXJyZW50Q29kZVBvaW50KCkpKSkgewotICAgICAg
ICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8gaWRlbnRpZmllcnMgYWxsb3dlZCBkaXJlY3Rs
eSBhZnRlciBudW1lcmljIGxpdGVyYWwiX3M7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9ICJObyBpZGVudGlmaWVycyBhbGxvd2VkIGRpcmVjdGx5IGFmdGVyIG51bWVyaWMgbGl0ZXJh
bCJfc3RyOwogICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5URVJNSU5BVEVEX05VTUVS
SUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LOwog
ICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQpAQCAtMjUzMiw3ICsyNTMy
LDcgQEAgc3RhcnQ6CiAgICAgICAgIGdvdG8gaW52YWxpZENoYXJhY3RlcjsKICAgICBkZWZhdWx0
OgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICBtX2xleEVy
cm9yTWVzc2FnZSA9ICJJbnRlcm5hbCBFcnJvciJfczsKKyAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSAiSW50ZXJuYWwgRXJyb3IiX3N0cjsKICAgICAgICAgdG9rZW4gPSBFUlJPUlRPSzsKICAg
ICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAKaW5kZXggNTUyNmY1YzlhMTI1MDA4MTMzZTkxOGUyNmVmMzI0N2E4NWRlMjM4
OS4uZGU1ZDM1MzA0ZDk1MDEyYzM4OTkxOGE4ZDQ2MzdkNWVkZjc5ZmVmOCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjU3LDcgKzI1Nyw3IEBAIEV4cGVjdGVk
PHR5cGVuYW1lIFBhcnNlcjxMZXhlclR5cGU+OjpQYXJzZUlubmVyUmVzdWx0LCBTdHJpbmc+IFBh
cnNlcjxMZXhlclR5cGU+CiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxNjMzCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIW1hdGNoKEFS
Uk9XRlVOQ1RJT04pKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiUGFyc2VyIGVycm9yIl9zKTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIlBhcnNlciBlcnJvciJfc3Ry
KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIGlzQXJy
b3dGdW5jdGlvbkJvZHlFeHByZXNzaW9uID0gIW1hdGNoKE9QRU5CUkFDRSk7CkBAIC0yOTQsNyAr
Mjk0LDcgQEAgRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBhcnNlSW5uZXJS
ZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT4KIAogICAgIGJvb2wgdmFsaWRFbmRpbmcg
PSBjb25zdW1lKEVPRlRPSyk7CiAgICAgaWYgKCFzb3VyY2VFbGVtZW50cyB8fCAhdmFsaWRFbmRp
bmcpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZChoYXNFcnJvcigpID8gbV9lcnJvck1l
c3NhZ2UgOiAiUGFyc2VyIGVycm9yIl9zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVk
KGhhc0Vycm9yKCkgPyBtX2Vycm9yTWVzc2FnZSA6ICJQYXJzZXIgZXJyb3IiX3N0cik7CiAKICAg
ICBpZiAoIW1fbGV4ZXItPmlzUmVwYXJzaW5nRnVuY3Rpb24oKSAmJiBtX3NlZW5Qcml2YXRlTmFt
ZVVzZUluTm9uUmVwYXJzaW5nRnVuY3Rpb25Nb2RlKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1l
c3NhZ2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCAzMzhmYzBiMmE3
MWFlZDc2MmVlYjkxMTE0NmI3ZmRhZTQxMTYwZWI3Li5mMmI0YjRlNDZiN2UzYTkyYWM0Yzg4Yzc5
NDc0NGEyZjBkOGZlMzE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAg
LTE2MTUsNyArMTYxNSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
IW1lc3NhZ2UuaXNFbXB0eSgpLCAiQXR0ZW1wdGVkIHRvIHNldCB0aGUgZW1wdHkgc3RyaW5nIGFz
IGFuIGVycm9yIG1lc3NhZ2UuIExpa2VseSBjYXVzZWQgYnkgaW52YWxpZCBVVEY4IHVzZWQgd2hl
biBjcmVhdGluZyB0aGUgbWVzc2FnZS4iKTsKICAgICAgICAgbV9lcnJvck1lc3NhZ2UgPSBtZXNz
YWdlOwogICAgICAgICBpZiAobV9lcnJvck1lc3NhZ2UuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9lcnJvck1lc3NhZ2UgPSAiVW5wYXJzZWFibGUgc2NyaXB0Il9zOworICAgICAgICAgICAgbV9l
cnJvck1lc3NhZ2UgPSAiVW5wYXJzZWFibGUgc2NyaXB0Il9zdHI7CiAgICAgfQogICAgIAogICAg
IE5FVkVSX0lOTElORSB2b2lkIGxvZ0Vycm9yKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDQyNWI4
ZmFkMTM4MGU3M2M2OGU4MjE2ZGU0NWJlZDQ2ZGJhYWRlNTguLmNlYTA3ZDY1NGJjZjFjNGRkMzgy
NjU5MTg2MGEyZDJjYzc3MDY3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BYnN0cmFjdE1vZHVsZVJlY29yZC5jcHAKQEAgLTY1LDcgKzY1LDcgQEAgdm9p
ZCBBYnN0cmFjdE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVk0mIHZtKQogICAgIEpTTWFwKiBtYXAgPSBKU01hcDo6Y3JlYXRlKGdsb2Jh
bE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+bWFwU3RydWN0dXJlKCkpOwogICAgIHNjb3BlLnJl
bGVhc2VBc3NlcnROb0V4Y2VwdGlvbigpOwogICAgIG1fZGVwZW5kZW5jaWVzTWFwLnNldCh2bSwg
dGhpcywgbWFwKTsKLSAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJkZXBlbmRlbmNpZXNNYXAiX3MpLCBtX2RlcGVuZGVuY2llc01hcC5nZXQoKSk7CisgICAgcHV0
RGlyZWN0KHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAiZGVwZW5kZW5jaWVzTWFwIl9z
dHIpLCBtX2RlcGVuZGVuY2llc01hcC5nZXQoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFZp
c2l0b3I+CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IDA4ODZmOTNmNjVjZjVjNjExYzUzYjRkOGI1MmQ2NDVjM2Q1MzFlYmYu
LmQxZTA4MmUzODg0ZDMwM2QyMjZiMzdjMDkxMmZkMGY2Y2VkMGU3NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwCkBAIC03MCw3
ICs3MCw3IEBAIEpTQXJyYXkqIGNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWlyayhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBBcnJheUFsbG9jYXRpCiAgICAgCiAgICAgdWludDMyX3QgbiA9
IGxlbmd0aC50b1VJbnQzMihnbG9iYWxPYmplY3QpOwogICAgIGlmIChuICE9IGxlbmd0aC50b051
bWJlcihnbG9iYWxPYmplY3QpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQXJyYXkgc2l6ZSBpcyBu
b3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iX3MpKTsKKyAgICAgICAgdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJf
c3RyKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBwcm9maWxlLCBu
LCBuZXdUYXJnZXQpKTsKQEAgLTEwNSw3ICsxMDUsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBi
b29sIGlzQXJyYXlTbG93SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3h5
TwogCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgaWYgKHByb3h5LT5pc1Jldm9rZWQoKSkg
ewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFycmF5
LmlzQXJyYXkgY2Fubm90IGJlIGNhbGxlZCBvbiBhIFByb3h5IHRoYXQgaGFzIGJlZW4gcmV2b2tl
ZCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
QXJyYXkuaXNBcnJheSBjYW5ub3QgYmUgY2FsbGVkIG9uIGEgUHJveHkgdGhhdCBoYXMgYmVlbiBy
ZXZva2VkIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIEpTT2JqZWN0KiBhcmd1bWVudCA9IHByb3h5LT50YXJnZXQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAppbmRleCAxODE1ZTE0N2I5
NjVlY2M2MmEyZWUzYmU4OGQ5NDhhMGMwYjRmMGVkLi44ZjFmNjAyYjNjYzQ4YTMxNDU4MDJmOTJm
OTc2ZjkzYTViZWQ5YWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
QXJyYXlQcm90b3R5cGUuY3BwCkBAIC0xNzEsNyArMTcxLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRMZW5ndGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBK
U09iamUKICAgICBzdGF0aWMgY29uc3RleHByIGJvb2wgdGhyb3dFeGNlcHRpb24gPSB0cnVlOwog
ICAgIGlmIChMSUtFTFkoaXNKU0FycmF5KG9iaikpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWSh2
YWx1ZSA+IFVJTlQzMl9NQVgpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludmFsaWQgYXJyYXkgbGVuZ3RoIl9zKTsKKyAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcnJheSBsZW5ndGgi
X3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgc2NvcGUucmVs
ZWFzZSgpOwpAQCAtMjc0LDcgKzI3NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhcnJh
eVByb3RvRnVuY1NwZWNpZXNDcmVhdGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc3BlY2llc1Jlc3VsdC5zZWNvbmQpOwogCiAgICAg
aWYgKGxlbmd0aCA+IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSkgewotICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFycmF5IHNpemUgaXMg
bm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zKTsKKyAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxs
IGVub3VnaCBwb3NpdGl2ZSBpbnRlZ2VyLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKQEAgLTY4NSw3ICs2ODUsNyBAQCBzdGF0aWMgSlNTdHJpbmcqIHRvTG9jYWxlU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIEpTVgogCiAgICAg
YXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCB0b0xvY2FsZVN0cmluZ01ldGhvZCk7CiAg
ICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvTG9jYWxlU3RyaW5nIGlzIG5v
dCBjYWxsYWJsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJ0b0xvY2FsZVN0cmluZyBpcyBub3QgY2FsbGFibGUiX3N0cik7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogCkBAIC05NzEsNyArOTcxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGFycmF5UHJvdG9GdW5jUHVzaCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGwKICAgICB1bnNpZ25lZCBhcmdDb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpOwog
CiAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCArIGFyZ0NvdW50ID4gc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KG1heFNhZmVJbnRlZ2VyKCkpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInB1c2ggY2Fubm90IHByb2R1Y2UgYW4gYXJyYXkgb2YgbGVu
Z3RoIGxhcmdlciB0aGFuICgyICoqIDUzKSAtIDEiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicHVzaCBjYW5ub3QgcHJvZHVjZSBhbiBh
cnJheSBvZiBsZW5ndGggbGFyZ2VyIHRoYW4gKDIgKiogNTMpIC0gMSJfc3RyKTsKIAogICAgIGZv
ciAodW5zaWduZWQgbiA9IDA7IG4gPCBhcmdDb3VudDsgbisrKSB7CiAgICAgICAgIHRoaXNPYmot
PnB1dEJ5SW5kZXhJbmxpbmUoZ2xvYmFsT2JqZWN0LCBsZW5ndGggKyBuLCBjYWxsRnJhbWUtPnVu
Y2hlY2tlZEFyZ3VtZW50KG4pLCB0cnVlKTsKQEAgLTEyMjQsNyArMTIyNCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NwbGljZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhCiAgICAgfQogICAgIHVuc2lnbmVkIGl0ZW1Db3VudCA9IHN0ZDo6bWF4
PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgLSAyLCAwKTsKICAgICBpZiAoVU5MSUtF
TFkobGVuZ3RoIC0gYWN0dWFsRGVsZXRlQ291bnQgKyBpdGVtQ291bnQgPiBzdGF0aWNfY2FzdDx1
aW50NjRfdD4obWF4U2FmZUludGVnZXIoKSkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3BsaWNlIGNhbm5vdCBwcm9kdWNlIGFuIGFycmF5
IG9mIGxlbmd0aCBsYXJnZXIgdGhhbiAoMiAqKiA1MykgLSAxIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwbGljZSBjYW5ub3QgcHJv
ZHVjZSBhbiBhcnJheSBvZiBsZW5ndGggbGFyZ2VyIHRoYW4gKDIgKiogNTMpIC0gMSJfc3RyKTsK
IAogICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09iamVjdCo+IHNwZWNp
ZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXkoZ2xvYmFsT2JqZWN0LCB0aGlzT2JqLCBh
Y3R1YWxEZWxldGVDb3VudCk7CiAgICAgRVhDRVBUSU9OX0FTU0VSVCghIXNjb3BlLmV4Y2VwdGlv
bigpID09IChzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQ6OkV4
Y2VwdGlvbikpOwpAQCAtMTI5NCw3ICsxMjk0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGFycmF5UHJvdG9GdW5jVW5TaGlmdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMK
ICAgICB1bnNpZ25lZCBuckFyZ3MgPSBjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKTsKICAgICBp
ZiAobnJBcmdzKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShsZW5ndGggKyBuckFyZ3MgPiBzdGF0
aWNfY2FzdDx1aW50NjRfdD4obWF4U2FmZUludGVnZXIoKSkpKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVuc2hpZnQgY2Fubm90IHBy
b2R1Y2UgYW4gYXJyYXkgb2YgbGVuZ3RoIGxhcmdlciB0aGFuICgyICoqIDUzKSAtIDEiX3MpOwor
ICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InVuc2hpZnQgY2Fubm90IHByb2R1Y2UgYW4gYXJyYXkgb2YgbGVuZ3RoIGxhcmdlciB0aGFuICgy
ICoqIDUzKSAtIDEiX3N0cik7CiAgICAgICAgIHVuc2hpZnQ8SlNBcnJheTo6U2hpZnRDb3VudEZv
clNoaWZ0PihnbG9iYWxPYmplY3QsIHRoaXNPYmosIDAsIDAsIG5yQXJncywgbGVuZ3RoKTsKICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jRnVu
Y3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZjdmYWM1OGJjNDk4YmUwY2QyY2E0NGQ1ZTNmYTJi
ZDA2MTFjZjYwOS4uYzEwNmE2NjBjMjA4ZmY5M2ViY2E2Zjg5YWMxYzU2MDY5MGI2ODZhNSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0Z1bmN0
aW9uQ29uc3RydWN0b3IuY3BwCkBAIC01OCw3ICs1OCw3IEBAIEFzeW5jRnVuY3Rpb25Db25zdHJ1
Y3Rvcjo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUpCiAKIHZvaWQgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEFzeW5jRnVuY3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMSwgIkFzeW5jRnVuY3Rpb24iX3MsIFByb3BlcnR5QWRkaXRpb25Nb2Rl
OjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0sIDEsICJBc3luY0Z1bmN0aW9uIl9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0
U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDEyYzlhYmU0NTc2YzllYjllM2FiNDdiODgyYjJkYjY2YzZlMjFkNzUuLmFlMDQw
NDVmYWRmODJkODM2OTM4ZDFmZTkwNTgxNTc0MmI4NGUyZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtNTgsNyArNTgsNyBAQCBBc3luY0dlbmVyYXRvckZ1bmN0
aW9uQ29uc3RydWN0b3I6OkFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0s
IFN0cgogCiB2b2lkIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBBc3luY0dlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBwcm90b3R5cGUp
CiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsICJBc3luY0dlbmVyYXRvckZ1bmN0
aW9uIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiQXN5bmNHZW5lcmF0b3JGdW5jdGlv
biJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIHByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BdG9taWNzT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3Bw
CmluZGV4IDllZTQ1ZGY0NzNhNDkxNTc1ZDk1NWJjZjc5OTBlZmQwNWI4MGFkODYuLjcxYzA3MDg0
NTE0N2MwMTI0YjgwMjY0YjMwZmI0YWNjZWFjMmQyMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwCkBAIC0xMjIsNyArMTIyLDcgQEAgc3Rh
dGljIHVuc2lnbmVkIHZhbGlkYXRlQXRvbWljQWNjZXNzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFZNJiB2bSwgSlNBcnIKICAgICB9CiAKICAgICBpZiAoYWNjZXNzSW5kZXggPj0gdHlw
ZWRBcnJheVZpZXctPmxlbmd0aCgpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQWNjZXNzIGluZGV4IG91dCBvZiBib3VuZHMgZm9yIGF0b21pYyBhY2Nl
c3MuIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJB
Y2Nlc3MgaW5kZXggb3V0IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3N0cik7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KICAgICAKQEAgLTE0NSw3ICsxNDUsNyBAQCBpbmxpbmUgSlNB
cnJheUJ1ZmZlclZpZXcqIHZhbGlkYXRlSW50ZWdlclR5cGVkQXJyYXkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgICAgICBjYXNlIEJpZ0ludDY0QXJyYXlUeXBlOgogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVHlwZWQgYXJyYXkgYXJndW1lbnQgbXVzdCBiZSBhbiBJbnQz
MkFycmF5IG9yIEJpZ0ludDY0QXJyYXkuIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUeXBlZCBhcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIElu
dDMyQXJyYXkgb3IgQmlnSW50NjRBcnJheS4iX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTE2MCw3ICsxNjAsNyBAQCBpbmxpbmUgSlNB
cnJheUJ1ZmZlclZpZXcqIHZhbGlkYXRlSW50ZWdlclR5cGVkQXJyYXkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdAogICAgICAgICBjYXNlIEJpZ1VpbnQ2NEFycmF5VHlwZToKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkIGFycmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gSW50
OEFycmF5LCBJbnQxNkFycmF5LCBJbnQzMkFycmF5LCBVaW50OEFycmF5LCBVaW50MTZBcnJheSwg
VWludDMyQXJyYXksIEJpZ0ludDY0QXJyYXksIG9yIEJpZ1VpbnQ2NEFycmF5LiJfcyk7CisgICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVHlwZWQgYXJyYXkg
YXJndW1lbnQgbXVzdCBiZSBhbiBJbnQ4QXJyYXksIEludDE2QXJyYXksIEludDMyQXJyYXksIFVp
bnQ4QXJyYXksIFVpbnQxNkFycmF5LCBVaW50MzJBcnJheSwgQmlnSW50NjRBcnJheSwgb3IgQmln
VWludDY0QXJyYXkuIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQog
ICAgIH0KQEAgLTQ0Miw3ICs0NDIsNyBAQCBKU1ZhbHVlIGF0b21pY3NXYWl0SW1wbChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0FycmF5VHlwZSogdHlwZWRBcnJheSwgdQogICAgICAg
ICB0aW1lb3V0ID0gc3RkOjptYXgoU2Vjb25kczo6ZnJvbU1pbGxpc2Vjb25kcyh0aW1lb3V0SW5N
aWxsaXNlY29uZHMpLCAwX3MpOwogCiAgICAgaWYgKCF2bS5tX3R5cGVkQXJyYXlDb250cm9sbGVy
LT5pc0F0b21pY3NXYWl0QWxsb3dlZE9uQ3VycmVudFRocmVhZCgpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBdG9taWNzLndhaXQgY2Fubm90IGJlIGNh
bGxlZCBmcm9tIHRoZSBjdXJyZW50IHRocmVhZC4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQXRvbWljcy53YWl0IGNhbm5vdCBiZSBjYWxsZWQgZnJv
bSB0aGUgY3VycmVudCB0aHJlYWQuIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
IApAQCAtNDc1LDcgKzQ3NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihhdG9taWNzRnVu
Y1dhaXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghdHlwZWRBcnJheVZpZXctPmlz
U2hhcmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUeXBlZCBhcnJheSBmb3Igd2FpdC9ub3RpZnkgbXVzdCB3cmFwIGEgU2hhcmVkQXJy
YXlCdWZmZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L25vdGlmeSBtdXN0IHdyYXAgYSBTaGFy
ZWRBcnJheUJ1ZmZlci4iX3N0cik7CiAKICAgICB1bnNpZ25lZCBhY2Nlc3NJbmRleCA9IHZhbGlk
YXRlQXRvbWljQWNjZXNzKGdsb2JhbE9iamVjdCwgdm0sIHR5cGVkQXJyYXlWaWV3LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDEpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29uc3RydWN0b3Iu
Y3BwCmluZGV4IDViODVkOWIxYjc1NDVmNjRmZjVhMmJmYWExY2U4ZjU1MDY4MDdlOWQuLjdmYjE4
NGQxODdlNWJiYzhiZjNiZGFlZjI4ZWZiNGU3YjY4MGE4ZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTY0LDcgKzY0
LDcgQEAgQmlnSW50Q29uc3RydWN0b3I6OkJpZ0ludENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0
dXJlKiBzdHJ1Y3R1cmUpCiAKIHZvaWQgQmlnSW50Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9u
KFZNJiB2bSwgQmlnSW50UHJvdG90eXBlKiBiaWdJbnRQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDEsICJCaWdJbnQiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IDEsICJCaWdJbnQiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogCiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
YmlnSW50UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CkBAIC05
Miw3ICs5Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjYWxsQmlnSW50Q29uc3RydWN0
b3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgaWYgKHByaW1pdGl2ZS5p
c0RvdWJsZSgpKSB7CiAgICAgICAgIGRvdWJsZSBudW1iZXIgPSBwcmltaXRpdmUuYXNEb3VibGUo
KTsKICAgICAgICAgaWYgKCFpc0ludGVnZXIobnVtYmVyKSkKLSAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsICJOb3QgYW4gaW50ZWdlciJfcykpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
Ik5vdCBhbiBpbnRlZ2VyIl9zdHIpKTsKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoSlNCaWdJbnQ6Om1ha2VIZWFwQmlnSW50T3JCaWdJbnQzMihnbG9i
YWxPYmplY3QsIHByaW1pdGl2ZS5hc0RvdWJsZSgpKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKaW5kZXggOTUyMjA5
ZDM3MTY1NWM2MDk4ZGI2YmVlN2I1YjNlNzU2ZjZmOWJkZi4uOTgyZWM0MGJmYjBhMmExMGNmMWMz
OWFlMjNlZThjZTUxYjE5MDliMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvQmlnSW50UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCkBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyBBTFdBWVNf
SU5MSU5FIEpTQmlnSW50KiB0b1RoaXNCaWdJbnRWYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKCiAgICAgICAgIH0KICAgICB9CiAKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiJ3RoaXMnIHZhbHVlIG11c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50T2Jq
ZWN0Il9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3RoaXMn
IHZhbHVlIG11c3QgYmUgYSBCaWdJbnQgb3IgQmlnSW50T2JqZWN0Il9zdHIpOwogICAgIHJldHVy
biBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9Db21tb25TbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29t
bW9uU2xvd1BhdGhzLmNwcAppbmRleCAxZWVlZTJjYjllNDZjNDRmMTljOGQ0ZjAyYjY1MTA3YjMz
ZDRhNDE3Li5hNDk5MDM1NTQzM2JlYTI1NTZlOTM5YTQ0YzE3YzEwYWIzZTUxMGJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKQEAg
LTM3Niw3ICszNzYsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX2No
ZWNrX3RkeikKICAgICBCRUdJTigpOwogICAgIGF1dG8gYnl0ZWNvZGUgPSBwYy0+YXM8T3BDaGVj
a1Rkej4oKTsKICAgICBpZiAoYnl0ZWNvZGUubV90YXJnZXRWaXJ0dWFsUmVnaXN0ZXIgPT0gY29k
ZUJsb2NrLT50aGlzUmVnaXN0ZXIoKSkKLSAgICAgICAgVEhST1coY3JlYXRlUmVmZXJlbmNlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRlcml2ZWQgY29u
c3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5vbi1vYmplY3Qu
Il9zKSk7CisgICAgICAgIFRIUk9XKGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2JhbE9iamVjdCwg
IidzdXBlcigpJyBtdXN0IGJlIGNhbGxlZCBpbiBkZXJpdmVkIGNvbnN0cnVjdG9yIGJlZm9yZSBh
Y2Nlc3NpbmcgfHRoaXN8IG9yIHJldHVybmluZyBub24tb2JqZWN0LiJfc3RyKSk7CiAgICAgZWxz
ZQogICAgICAgICBUSFJPVyhjcmVhdGVURFpFcnJvcihnbG9iYWxPYmplY3QpKTsKIH0KQEAgLTEw
ODcsNyArMTA4Nyw3IEBAIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhfZW51
bWVyYXRvcl9oYXNfb3duX3Byb3BlcnR5KQogSlNDX0RFRklORV9DT01NT05fU0xPV19QQVRIKHNs
b3dfcGF0aF9wcm9maWxlX3R5cGVfY2xlYXJfbG9nKQogewogICAgIEJFR0lOKCk7Ci0gICAgdm0u
dHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAiTExJbnQgbG9nIGZ1bGwu
Il9zKTsKKyAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJM
TEludCBsb2cgZnVsbC4iX3N0cik7CiAgICAgRU5EKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVDbGllbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZUNsaWVudC5jcHAKaW5kZXggMTEzOTllYjA5YjJiY2M4
NTljN2VkMzZhOWNlZTRkMjMzYzljZDZkZC4uZThlMDZiMTExYjNlZmY3ZjRlMmRlZTkwODU3N2Nl
N2UzZGQ5ZjZiYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29u
c29sZUNsaWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29s
ZUNsaWVudC5jcHAKQEAgLTYzLDUyICs2Myw1MiBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNZXNzYWdl
UHJlZml4KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZQog
ICAgICAgICAvLyBEZWZhdWx0LCBubyBuZWVkIHRvIGJlIG1vcmUgc3BlY2lmaWMuCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6WE1MOgotICAgICAgICBzb3VyY2VTdHJp
bmcgPSAiWE1MIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiWE1MIl9zdHI7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6SlM6Ci0gICAgICAgIHNvdXJjZVN0cmlu
ZyA9ICJKUyJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIkpTIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TmV0d29yazoKLSAgICAgICAgc291cmNlU3Ry
aW5nID0gIk5FVFdPUksiX3M7CisgICAgICAgIHNvdXJjZVN0cmluZyA9ICJORVRXT1JLIl9zdHI7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6U3RvcmFnZToKLSAgICAg
ICAgc291cmNlU3RyaW5nID0gIlNUT1JBR0UiX3M7CisgICAgICAgIHNvdXJjZVN0cmluZyA9ICJT
VE9SQUdFIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6QXBw
Q2FjaGU6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJBUFBDQUNIRSJfczsKKyAgICAgICAgc291
cmNlU3RyaW5nID0gIkFQUENBQ0hFIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVz
c2FnZVNvdXJjZTo6UmVuZGVyaW5nOgotICAgICAgICBzb3VyY2VTdHJpbmcgPSAiUkVOREVSSU5H
Il9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiUkVOREVSSU5HIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6Q1NTOgotICAgICAgICBzb3VyY2VTdHJpbmcg
PSAiQ1NTIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiQ1NTIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHk6Ci0gICAgICAgIHNvdXJjZVN0
cmluZyA9ICJTRUNVUklUWSJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIlNFQ1VSSVRZIl9z
dHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6Q29udGVudEJsb2Nr
ZXI6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJDT05URU5UQkxPQ0tFUiJfczsKKyAgICAgICAg
c291cmNlU3RyaW5nID0gIkNPTlRFTlRCTE9DS0VSIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTWVzc2FnZVNvdXJjZTo6TWVkaWE6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJNRURJ
QSJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIk1FRElBIl9zdHI7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6TWVkaWFTb3VyY2U6Ci0gICAgICAgIHNvdXJjZVN0
cmluZyA9ICJNRURJQVNPVVJDRSJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIk1FRElBU09V
UkNFIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6V2ViUlRD
OgotICAgICAgICBzb3VyY2VTdHJpbmcgPSAiV0VCUlRDIl9zOworICAgICAgICBzb3VyY2VTdHJp
bmcgPSAiV0VCUlRDIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJj
ZTo6SVRQRGVidWc6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJJVFBERUJVRyJfczsKKyAgICAg
ICAgc291cmNlU3RyaW5nID0gIklUUERFQlVHIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNh
c2UgTWVzc2FnZVNvdXJjZTo6UHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQ6Ci0gICAgICAgIHNvdXJj
ZVN0cmluZyA9ICJQUklWQVRFQ0xJQ0tNRUFTVVJFTUVOVCJfczsKKyAgICAgICAgc291cmNlU3Ry
aW5nID0gIlBSSVZBVEVDTElDS01FQVNVUkVNRU5UIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTWVzc2FnZVNvdXJjZTo6UGF5bWVudFJlcXVlc3Q6Ci0gICAgICAgIHNvdXJjZVN0cmlu
ZyA9ICJQQVlNRU5UUkVRVUVTVCJfczsKKyAgICAgICAgc291cmNlU3RyaW5nID0gIlBBWU1FTlRS
RVFVRVNUIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVNvdXJjZTo6T3Ro
ZXI6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJPVEhFUiJfczsKKyAgICAgICAgc291cmNlU3Ry
aW5nID0gIk9USEVSIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAtMTE4LDQzICsx
MTgsNDMgQEAgc3RhdGljIHZvaWQgYXBwZW5kTWVzc2FnZVByZWZpeChTdHJpbmdCdWlsZGVyJiBi
dWlsZGVyLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWUKICAgICAgICAgLy8gRGVmYXVsdCwgbm8g
bmVlZCB0byBiZSBtb3JlIHNwZWNpZmljLgogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpDbGVhcjoKLSAgICAgICAgdHlwZVN0cmluZyA9ICJDTEVBUiJfczsKKyAgICAgICAg
dHlwZVN0cmluZyA9ICJDTEVBUiJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3Nh
Z2VUeXBlOjpEaXI6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiRElSIl9zOworICAgICAgICB0eXBl
U3RyaW5nID0gIkRJUiJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpEaXJYTUw6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiRElSWE1MIl9zOworICAgICAgICB0eXBl
U3RyaW5nID0gIkRJUlhNTCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpUYWJsZToKLSAgICAgICAgdHlwZVN0cmluZyA9ICJUQUJMRSJfczsKKyAgICAgICAgdHlw
ZVN0cmluZyA9ICJUQUJMRSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpUcmFjZToKLSAgICAgICAgdHlwZVN0cmluZyA9ICJUUkFDRSJfczsKKyAgICAgICAgdHlw
ZVN0cmluZyA9ICJUUkFDRSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpTdGFydEdyb3VwOgotICAgICAgICB0eXBlU3RyaW5nID0gIlNUQVJUR1JPVVAiX3M7Cisg
ICAgICAgIHR5cGVTdHJpbmcgPSAiU1RBUlRHUk9VUCJfc3RyOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpTdGFydEdyb3VwQ29sbGFwc2VkOgotICAgICAgICB0eXBlU3Ry
aW5nID0gIlNUQVJUR1JPVVBDT0xMQVBTRUQiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiU1RB
UlRHUk9VUENPTExBUFNFRCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpFbmRHcm91cDoKLSAgICAgICAgdHlwZVN0cmluZyA9ICJFTkRHUk9VUCJfczsKKyAgICAg
ICAgdHlwZVN0cmluZyA9ICJFTkRHUk9VUCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpBc3NlcnQ6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiQVNTRVJUIl9zOwor
ICAgICAgICB0eXBlU3RyaW5nID0gIkFTU0VSVCJfc3RyOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpUaW1pbmc6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiVElNSU5HIl9z
OworICAgICAgICB0eXBlU3RyaW5nID0gIlRJTUlORyJfc3RyOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlOgotICAgICAgICB0eXBlU3RyaW5nID0gIlBST0ZJ
TEUiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiUFJPRklMRSJfc3RyOwogICAgICAgICBicmVh
azsKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpQcm9maWxlRW5kOgotICAgICAgICB0eXBlU3RyaW5n
ID0gIlBST0ZJTEVFTkQiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiUFJPRklMRUVORCJfc3Ry
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpJbWFnZToKLSAgICAgICAg
dHlwZVN0cmluZyA9ICJJTUFHRSJfczsKKyAgICAgICAgdHlwZVN0cmluZyA9ICJJTUFHRSJfc3Ry
OwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTE2MywxOSArMTYzLDE5IEBAIHN0YXRpYyB2
b2lkIGFwcGVuZE1lc3NhZ2VQcmVmaXgoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwgTWVzc2FnZVNv
dXJjZSBzb3VyY2UsIE1lCiAgICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkxvZzoKICAgICAgICAgLy8g
RGVmYXVsdCwgbm8gbmVlZCB0byBiZSBtb3JlIHNwZWNpZmljLgogICAgICAgICBpZiAodHlwZSA9
PSBNZXNzYWdlVHlwZTo6TG9nKQotICAgICAgICAgICAgbGV2ZWxTdHJpbmcgPSAiTE9HIl9zOwor
ICAgICAgICAgICAgbGV2ZWxTdHJpbmcgPSAiTE9HIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTWVzc2FnZUxldmVsOjpEZWJ1ZzoKLSAgICAgICAgbGV2ZWxTdHJpbmcgPSAiREVCVUci
X3M7CisgICAgICAgIGxldmVsU3RyaW5nID0gIkRFQlVHIl9zdHI7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTWVzc2FnZUxldmVsOjpJbmZvOgotICAgICAgICBsZXZlbFN0cmluZyA9ICJJTkZP
Il9zOworICAgICAgICBsZXZlbFN0cmluZyA9ICJJTkZPIl9zdHI7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgTWVzc2FnZUxldmVsOjpXYXJuaW5nOgotICAgICAgICBsZXZlbFN0cmluZyA9ICJX
QVJOIl9zOworICAgICAgICBsZXZlbFN0cmluZyA9ICJXQVJOIl9zdHI7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTWVzc2FnZUxldmVsOjpFcnJvcjoKLSAgICAgICAgbGV2ZWxTdHJpbmcgPSAi
RVJST1IiX3M7CisgICAgICAgIGxldmVsU3RyaW5nID0gIkVSUk9SIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBAIHZvaWQgQ29uc29sZUNsaWVudDo6cHJp
bnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3Nh
CiAgICAgICAgICAgICBjb25zdCBTY3JpcHRDYWxsRnJhbWUmIGNhbGxGcmFtZSA9IGNhbGxTdGFj
ay0+YXQoaSk7CiAgICAgICAgICAgICBTdHJpbmcgZnVuY3Rpb25OYW1lID0gY2FsbEZyYW1lLmZ1
bmN0aW9uTmFtZSgpOwogICAgICAgICAgICAgaWYgKGZ1bmN0aW9uTmFtZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICAgICAgZnVuY3Rpb25OYW1lID0gIih1bmtub3duKSJfczsKKyAgICAgICAgICAg
ICAgICBmdW5jdGlvbk5hbWUgPSAiKHVua25vd24pIl9zdHI7CiAKICAgICAgICAgICAgIFN0cmlu
Z0J1aWxkZXIgY2FsbEZyYW1lQnVpbGRlcjsKICAgICAgICAgICAgIGNhbGxGcmFtZUJ1aWxkZXIu
YXBwZW5kKGksICI6ICIsIGZ1bmN0aW9uTmFtZSwgJygnKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbnNvbGVPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29uc29sZU9iamVjdC5jcHAKaW5kZXggMGRkZTk4NzcyNzY2NTU5ODQ2
OTY0NWY0Mzk2YzIzMmM1NjZlNDNhMS4uZWZhNzI5MmYzODUxMjFjY2FiN2JlMTNiYTk3Njg4N2Rh
ZjBjMjQxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29s
ZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9i
amVjdC5jcHAKQEAgLTM2LDExICszNiwxMSBAQCBuYW1lc3BhY2UgSlNDIHsKIHN0YXRpYyBTdHJp
bmcgdmFsdWVPckRlZmF1bHRMYWJlbFN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkKIHsKICAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENv
dW50KCkgPCAxKQotICAgICAgICByZXR1cm4gImRlZmF1bHQiX3M7CisgICAgICAgIHJldHVybiAi
ZGVmYXVsdCJfc3RyOwogCiAgICAgYXV0byB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiAiZGVmYXVsdCJf
czsKKyAgICAgICAgcmV0dXJuICJkZWZhdWx0Il9zdHI7CiAKICAgICByZXR1cm4gdmFsdWUudG9X
VEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggODU0NWE1NTlhNzMyOGI1NTM3ZGI4MTI4M2M5
OGE2MzlkNmM0YTgzYi4uZWYwY2M1OTE0NzQ2ZjdmMjlkYzkxZDE2ZWYwOWU0NDQ4NTU5MjkyMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAK
QEAgLTEwNCw3ICsxMDQsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgZm9ybWF0ZURhdGVJbnN0
YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbQogICAgICAgICA/IHRo
aXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZVVUQyhjYWNoZSkKICAgICAgICAgOiB0aGlzRGF0
ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWUoY2FjaGUpOwogICAgIGlmICghZ3JlZ29yaWFuRGF0ZVRp
bWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZt
LCBTdHJpbmcoIkludmFsaWQgRGF0ZSJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJJbnZhbGlkIERhdGUiX3N0cikpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIGZvcm1hdERhdGVU
aW1lKCpncmVnb3JpYW5EYXRlVGltZSwgZm9ybWF0LCBhc1VUQ1ZhcmlhbnQpKSk7CiB9CkBAIC0y
NzMsMTYgKzI3MywxNiBAQCB2b2lkIERhdGVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlv
bih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKIAotICAgIElkZW50aWZp
ZXIgdG9VVENTdHJpbmdOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRvVVRDU3Ry
aW5nIl9zKTsKKyAgICBJZGVudGlmaWVyIHRvVVRDU3RyaW5nTmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0b1VUQ1N0cmluZyJfc3RyKTsKICAgICBKU0Z1bmN0aW9uKiB0b1VUQ1N0
cmluZ0Z1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHRv
VVRDU3RyaW5nTmFtZS5zdHJpbmcoKSwgZGF0ZVByb3RvRnVuY1RvVVRDU3RyaW5nKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdG9VVENTdHJpbmdOYW1lLCB0b1VUQ1N0cmlu
Z0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKSk7Ci0gICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0b0dNVFN0cmluZyJfcyksIHRvVVRDU3RyaW5nRnVuY3Rpb24sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKKyAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRv
R01UU3RyaW5nIl9zdHIpLCB0b1VUQ1N0cmluZ0Z1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAKLSAgICBKU0Z1bmN0aW9uKiB0b1By
aW1pdGl2ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEs
ICJbU3ltYm9sLnRvUHJpbWl0aXZlXSJfcywgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9s
LCBOb0ludHJpbnNpYyk7CisgICAgSlNGdW5jdGlvbiogdG9QcmltaXRpdmVGdW5jdGlvbiA9IEpT
RnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAiW1N5bWJvbC50b1ByaW1pdGl2
ZV0iX3N0ciwgZGF0ZVByb3RvRnVuY1RvUHJpbWl0aXZlU3ltYm9sLCBOb0ludHJpbnNpYyk7CiAg
ICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvUHJp
bWl0aXZlU3ltYm9sLCB0b1ByaW1pdGl2ZUZ1bmN0aW9uLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogCiAgICAgaWYgKE9wdGlvbnM6
OnVzZVRlbXBvcmFsKCkpIHsKLSAgICAgICAgSWRlbnRpZmllciB0b1RlbXBvcmFsSW5zdGFudE5h
bWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidG9UZW1wb3JhbEluc3RhbnQiX3MpOwor
ICAgICAgICBJZGVudGlmaWVyIHRvVGVtcG9yYWxJbnN0YW50TmFtZSA9IElkZW50aWZpZXI6OmZy
b21TdHJpbmcodm0sICJ0b1RlbXBvcmFsSW5zdGFudCJfc3RyKTsKICAgICAgICAgSlNGdW5jdGlv
biogdG9UZW1wb3JhbEluc3RhbnRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCAwLCB0b1RlbXBvcmFsSW5zdGFudE5hbWUuc3RyaW5nKCksIGRhdGVQcm90b0Z1
bmNUb1RlbXBvcmFsSW5zdGFudCk7CiAgICAgICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB0b1RlbXBvcmFsSW5zdGFudE5hbWUsIHRvVGVtcG9yYWxJbnN0YW50RnVuY3Rpb24sIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICB9
CkBAIC0zMTQsMTEgKzMxNCwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3Rv
RnVuY1RvSVNPU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogCiAgICAgSW50
ZWdyaXR5OjphdWRpdFN0cnVjdHVyZUlEKHRoaXNEYXRlT2JqLT5zdHJ1Y3R1cmVJRCgpKTsKICAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUodGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCkpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBEYXRlIl9zKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsICJJbnZhbGlkIERhdGUiX3N0cikpOwogCiAgICAgY29uc3QgR3JlZ29yaWFuRGF0ZVRp
bWUqIGdyZWdvcmlhbkRhdGVUaW1lID0gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRD
KHZtLmRhdGVDYWNoZSk7CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZygiSW52YWxp
ZCBEYXRlIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIkludmFsaWQgRGF0ZSJfc3RyKSk7CiAgICAgLy8gTWF4aW11bSBhbW91bnQg
b2Ygc3BhY2Ugd2UgbmVlZCBpbiBidWZmZXI6IDcgKG1heC4gZGlnaXRzIGluIHllYXIpICsgMiAq
IDUgKDIgY2hhcmFjdGVycyBlYWNoIGZvciBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29u
ZCkgKyA0ICguICsgMyBkaWdpdHMgZm9yIG1pbGxpc2Vjb25kcykKICAgICAvLyA2IGZvciBmb3Jt
YXR0aW5nIGFuZCBvbmUgZm9yIG51bGwgdGVybWluYXRpb24gPSAyOC4gV2UgYWRkIG9uZSBleHRy
YSBjaGFyYWN0ZXIgdG8gYWxsb3cgdXMgdG8gZm9yY2UgbnVsbCB0ZXJtaW5hdGlvbi4KICAgICBj
aGFyIGJ1ZmZlclsyOF07CkBAIC05MTEsNyArOTExLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGRhdGVQcm90b0Z1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWwKIAogICAgIGF1dG8gY2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgdG9JU09WYWx1ZSk7CiAg
ICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b0lTT1N0cmluZyBp
cyBub3QgYSBmdW5jdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJ0b0lTT1N0cmluZyBpcyBub3QgYSBmdW5jdGlvbiJfc3RyKTsK
IAogICAgIEpTVmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHRvSVNP
VmFsdWUpLCBjYWxsRGF0YSwgb2JqZWN0LCAqdm0uZW1wdHlMaXN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTkyOSw3ICs5MjksNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY1RvVGVtcG9yYWxJbnN0YW50LCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbAogCiAgICAgZG91YmxlIGVwb2NoTWlsbGlzZWNvbmRzID0g
dGhpc0RhdGVPYmotPmludGVybmFsTnVtYmVyKCk7CiAgICAgaWYgKCFpc0ludGVnZXIoZXBvY2hN
aWxsaXNlY29uZHMpKSAKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgaW50ZWdlciBu
dW1iZXIgb2YgRXBvY2ggTWlsbHNlY29uZHMiX3MpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
IkludmFsaWQgaW50ZWdlciBudW1iZXIgb2YgRXBvY2ggTWlsbHNlY29uZHMiX3N0cikpOwogCiAg
ICAgQVNTRVJUKGVwb2NoTWlsbGlzZWNvbmRzID49IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50NjRf
dD46Om1pbigpICYmIGVwb2NoTWlsbGlzZWNvbmRzIDw9IHN0ZDo6bnVtZXJpY19saW1pdHM8aW50
NjRfdD46Om1heCgpKTsKICAgICBJU084NjAxOjpFeGFjdFRpbWUgZXhhY3RUaW1lID0gSVNPODYw
MTo6RXhhY3RUaW1lOjpmcm9tRXBvY2hNaWxsaXNlY29uZHMoZXBvY2hNaWxsaXNlY29uZHMpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4IGY2MzhiNjZkZWFlMDEw
ZmRmYjE1Y2IzMDJlZTliNDk0MDUzOWMwMTYuLjAzOTFjYTI0MWExY2Q3MTI2Nzk1M2E3NTA4MTJm
YjBlNjFmMGM5YzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vy
cm9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAg
LTcwLDcgKzcwLDcgQEAgSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEUKIAogSlNPYmplY3QqIGNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVy
cm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyKQogewotICAgIHJldHVybiBjcmVh
dGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGVub3VnaCBhcmd1bWVudHMiX3MsIGFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfc3RyLCBhcHBlbmRlciwgVHlwZU5vdGhpbmcpOwog
fQogCiBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VBcHBlbmRlciBh
cHBlbmRlcikKQEAgLTMyOSwxMiArMzI5LDEyIEBAIEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJv
cihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAK
IEpTT2JqZWN0KiBjcmVhdGVTeW50YXhFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewotICAgIHJldHVybiBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsICJTeW50YXgg
ZXJyb3IiX3MsIG51bGxwdHIpOworICAgIHJldHVybiBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxP
YmplY3QsICJTeW50YXggZXJyb3IiX3N0ciwgbnVsbHB0cik7CiB9CiAKIEpTT2JqZWN0KiBjcmVh
dGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4g
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIlR5cGUgZXJyb3IiX3MpOworICAgIHJldHVy
biBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiVHlwZSBlcnJvciJfc3RyKTsKIH0KIAog
SlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCkBAIC0zNTQsNyArMzU0LDcgQEAgSlNPYmplY3QqIGNyZWF0
ZVVSSUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKIAogSlNPYmplY3QqIGNyZWF0ZU91dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKLSAgICBhdXRvKiBlcnJvciA9IGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiT3V0IG9mIG1lbW9yeSJfcywgbnVsbHB0cik7CisgICAgYXV0byogZXJyb3Ig
PSBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk91dCBvZiBtZW1vcnkiX3N0ciwgbnVs
bHB0cik7CiAgICAganNDYXN0PEVycm9ySW5zdGFuY2UqPihlcnJvciktPnNldE91dE9mTWVtb3J5
RXJyb3IoKTsKICAgICByZXR1cm4gZXJyb3I7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FcnJvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
RXJyb3IuaAppbmRleCA1NGIxNDk0NThmZjIyODcwZmRkYjgzMWZlYTk5Njc0ZDIyZDFhNTIyLi4w
ZjEyMDYyNjQ4NzUzYmIzNDBiZWQzM2Q4ZWRjOWUxNDkyMjhhNDM4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmgKQEAgLTkzLDcgKzkzLDggQEAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNWYWx1ZSB0aHJvd0RPTUF0dHJpYnV0ZVNldHRlclR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCos
IFRocm8KIC8vIENvbnZlbmllbmNlIHdyYXBwZXJzLCB3cmFwIHJlc3VsdCBhcyBhbiBFbmNvZGVk
SlNWYWx1ZS4KIGlubGluZSB2b2lkIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgRXhjZXB0aW9uKiBleGNlcHRpb24pIHsgdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXhjZXB0aW9uKTsgfQogaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJv
d1Njb3BlJiBzY29wZSwgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yKSk7IH0KLWlubGluZSBFbmNv
ZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhy
b3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9y
KGdsb2JhbE9iamVjdCwgZXJyb3JNZXNzYWdlKSkpOyB9CitpbmxpbmUgRW5jb2RlZEpTVmFsdWUg
dGhyb3dWTUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNj
b3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBlcnJvck1lc3NhZ2UpKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNl
cHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBlcnJv
ck1lc3NhZ2UpKSk7IH0KIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSkpOyB9CiBp
bmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkg
eyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGVycm9yTWVzc2FnZSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTVR5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JJbnN0YW5jZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvckluc3RhbmNlLmNwcAppbmRleCA3MzhlN2Y0
ZTEyN2UxN2RlZjJmNDU5Yzk4YmEwYTc3MjUwNTY1OThiLi43Y2JkZTg1Njg4ZmQzZDI4NTZiZmRj
MjM2N2QxZmIzZTFhZTVmMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvckluc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcApAQCAtMTk2LDcgKzE5Niw3IEBAIFN0cmluZyBFcnJvckluc3Rh
bmNlOjpzYW5pdGl6ZWROYW1lU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghbmFtZVZhbHVl
IHx8ICFuYW1lVmFsdWUuaXNQcmltaXRpdmUoKSkKLSAgICAgICAgcmV0dXJuICJFcnJvciJfczsK
KyAgICAgICAgcmV0dXJuICJFcnJvciJfc3RyOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgbmFtZVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCkpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKaW5kZXggZWY0MzFm
Mzk1ZTM0MjVhMjYzNTRlOTMyMGFjYzRmOTI1MmIzODI5Yy4uMjBlMTJjNDhlNTkyY2FkNzE2MzE5
NzY3MjUyM2M1YWE1Y2NmOGIyZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Vycm9yUHJvdG90eXBlLmNwcApAQCAtOTQsNyArOTQsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oZXJyb3JQcm90b0Z1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgLy8gNC4gSWYgbmFtZSBpcyB1bmRlZmluZWQsIHRoZW4gbGV0IG5hbWUgYmUg
IkVycm9yIjsgZWxzZSBsZXQgbmFtZSBiZSBUb1N0cmluZyhuYW1lKS4KICAgICBTdHJpbmcgbmFt
ZVN0cmluZzsKICAgICBpZiAobmFtZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBuYW1lU3RyaW5n
ID0gIkVycm9yIl9zOworICAgICAgICBuYW1lU3RyaW5nID0gIkVycm9yIl9zdHI7CiAgICAgZWxz
ZSB7CiAgICAgICAgIG5hbWVTdHJpbmcgPSBuYW1lLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKaW5kZXgg
YjQwMjM2MmQwYTRlZTQ2ODNhMzdhY2IzNjlmYzZlMGJhOGEzM2JlZS4uMzJiODRkNTQxMjk4YmJi
NWIzYzJiZmIzYjg1NDkzZTc1MjM3ZDIyNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvclByb3RvdHlwZS5oCkBAIC01OCw3ICs1OCw3IEBAIHB1YmxpYzoKICAgICBz
dGF0aWMgRXJyb3JQcm90b3R5cGUqIGNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgewogICAgICAgICBFcnJvclByb3RvdHlwZSogcHJvdG90
eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8RXJyb3JQcm90b3R5cGU+KHZtKSkgRXJy
b3JQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7Ci0gICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3Jl
YXRpb24odm0sICJFcnJvciJfcyk7CisgICAgICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24o
dm0sICJFcnJvciJfc3RyKTsKICAgICAgICAgcmV0dXJuIHByb3RvdHlwZTsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkZ1enouY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAKaW5kZXgg
NzI2YTQ1NjljNTU4NmUwMDg3YzU3ZjFjY2FiODVhNTYxODJmYmQxNy4uOGZmNWQ4NjYzYjZlODg3
ZTc3ODY1ZTNjZWJhMmQzMDdhMmQ5ZTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBkb0V4Y2Vw
dGlvbkZ1enppbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2Nv
cGUsIGNvbnN0IGMKICAgICAgICAgLy8gdG8gcGxhY2F0ZSB0aGUgZXhjZXB0aW9uIGNoZWNrIHZl
cmlmaWVyIGhlcmUuCiAgICAgICAgIEVYQ0VQVElPTl9BU1NFUlQoc2NvcGUuZXhjZXB0aW9uKCkg
fHwgIXNjb3BlLmV4Y2VwdGlvbigpKTsKIAotICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJFeGNlcHRpb24gRnV6eiJf
cykpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVF
cnJvcihnbG9iYWxPYmplY3QsICJFeGNlcHRpb24gRnV6eiJfc3RyKSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CmluZGV4IDA5OWZmNzFjZDYyNjViOGQxY2E4YzkxZTM2MTEzNjFlZTBlZTdmYTMuLjJlOTg3MWU3
ZTVjMzQyOTJhYmFkNzA3NjBkY2IxMzU1Y2VhMDdhNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC00MSw3ICs0MSw3IEBA
IG5hbWVzcGFjZSBKU0MgewogCiBKU09iamVjdCogY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgYXV0byogZXJyb3IgPSBjcmVhdGVS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVk
LiJfcyk7CisgICAgYXV0byogZXJyb3IgPSBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
Ik1heGltdW0gY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkLiJfc3RyKTsKICAgICBqc0Nhc3Q8RXJy
b3JJbnN0YW5jZSo+KGVycm9yKS0+c2V0U3RhY2tPdmVyZmxvd0Vycm9yKCk7CiAgICAgcmV0dXJu
IGVycm9yOwogfQpAQCAtMTg0LDcgKzE4NCw3IEBAIHN0YXRpYyBTdHJpbmcgbm90QUZ1bmN0aW9u
U291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3NhZ2UsIGNvbnN0IFN0CiAg
ICAgYnVpbGRlci5hcHBlbmQoJyknKTsKIAogICAgIGlmIChidWlsZGVyLmhhc092ZXJmbG93ZWQo
KSkKLSAgICAgICAgcmV0dXJuICJvYmplY3QgaXMgbm90IGEgZnVuY3Rpb24uIl9zOworICAgICAg
ICByZXR1cm4gIm9iamVjdCBpcyBub3QgYSBmdW5jdGlvbi4iX3N0cjsKIAogICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7CiB9CkBAIC0yMzMsMTIgKzIzMywxMiBAQCBpbmxpbmUgU3RyaW5n
IGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBj
b250ZW50LCBjbwogCiBzdGF0aWMgU3RyaW5nIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mTm90
RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBSdW50aW1lVHlwZSBydW50aW1lVHlwZSwgRXJyb3JJbnN0
YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQogewotICAgIHJl
dHVybiBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZlNvdXJjZUFwcGVuZGVyKCIgaXMgbm90IGEg
ZnVuY3Rpb24iX3MsIG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCwgcnVudGltZVR5cGUsIG9j
Y3VycmVuY2UpOworICAgIHJldHVybiBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZlNvdXJjZUFw
cGVuZGVyKCIgaXMgbm90IGEgZnVuY3Rpb24iX3N0ciwgb3JpZ2luYWxNZXNzYWdlLCBzb3VyY2VU
ZXh0LCBydW50aW1lVHlwZSwgb2NjdXJyZW5jZSk7CiB9CiAKIHN0YXRpYyBTdHJpbmcgaW52YWxp
ZFBhcmFtZXRlckluc3RhbmNlb2ZoYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb25Tb3VyY2VBcHBl
bmRlcihjb25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VU
ZXh0LCBSdW50aW1lVHlwZSBydW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdo
ZXJlRXJyb3JPY2N1cnJlZCBvY2N1cnJlbmNlKQogewotICAgIHJldHVybiBpbnZhbGlkUGFyYW1l
dGVySW5zdGFuY2VvZlNvdXJjZUFwcGVuZGVyKCJbU3ltYm9sLmhhc0luc3RhbmNlXSBpcyBub3Qg
YSBmdW5jdGlvbiwgdW5kZWZpbmVkLCBvciBudWxsIl9zLCBvcmlnaW5hbE1lc3NhZ2UsIHNvdXJj
ZVRleHQsIHJ1bnRpbWVUeXBlLCBvY2N1cnJlbmNlKTsKKyAgICByZXR1cm4gaW52YWxpZFBhcmFt
ZXRlckluc3RhbmNlb2ZTb3VyY2VBcHBlbmRlcigiW1N5bWJvbC5oYXNJbnN0YW5jZV0gaXMgbm90
IGEgZnVuY3Rpb24sIHVuZGVmaW5lZCwgb3IgbnVsbCJfc3RyLCBvcmlnaW5hbE1lc3NhZ2UsIHNv
dXJjZVRleHQsIHJ1bnRpbWVUeXBlLCBvY2N1cnJlbmNlKTsKIH0KIAogc3RhdGljIFN0cmluZyBp
bnZhbGlkUHJvdG90eXBlU291cmNlQXBwZW5kZXIoY29uc3QgU3RyaW5nJiBvcmlnaW5hbE1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc291cmNlVGV4dCwgUnVudGltZVR5cGUsIEVycm9ySW5zdGFuY2U6
OlNvdXJjZVRleHRXaGVyZUVycm9yT2NjdXJyZWQgb2NjdXJyZW5jZSkKQEAgLTI1MCw3ICsyNTAs
NyBAQCBzdGF0aWMgU3RyaW5nIGludmFsaWRQcm90b3R5cGVTb3VyY2VBcHBlbmRlcihjb25zdCBT
dHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29ucwogICAgIGlmIChleHRlbmRzSW5kZXggPT0gbm90
Rm91bmQgfHwgc291cmNlVGV4dC5maW5kKCJleHRlbmRzIikgIT0gZXh0ZW5kc0luZGV4KQogICAg
ICAgICByZXR1cm4gbWFrZVN0cmluZyhvcmlnaW5hbE1lc3NhZ2UsICIgKGV2YWx1YXRpbmcgJyIs
IHNvdXJjZVRleHQsICInKSIpOwogCi0gICAgcmV0dXJuICJUaGUgdmFsdWUgb2YgdGhlIHN1cGVy
Y2xhc3MncyBwcm90b3R5cGUgcHJvcGVydHkgaXMgbm90IGFuIG9iamVjdCBvciBudWxsLiJfczsK
KyAgICByZXR1cm4gIlRoZSB2YWx1ZSBvZiB0aGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBwcm9w
ZXJ0eSBpcyBub3QgYW4gb2JqZWN0IG9yIG51bGwuIl9zdHI7CiB9CiAKIEpTT2JqZWN0KiBjcmVh
dGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlLCBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UsIEVycm9ySW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyIGFwcGVuZGVy
KQpAQCAtMjc5LDQyICsyNzksNDIgQEAgSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYKIAogSlNPYmpl
Y3QqIGNyZWF0ZUludmFsaWRGdW5jdGlvbkFwcGx5UGFyYW1ldGVyRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgInNlY29uZCBhcmd1bWVudCB0byBGdW5jdGlvbi5wcm90b3R5
cGUuYXBwbHkgbXVzdCBiZSBhbiBBcnJheS1saWtlIG9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFw
cGVuZGVyLCBydW50aW1lVHlwZUZvclZhbHVlKGdsb2JhbE9iamVjdC0+dm0oKSwgdmFsdWUpKTsK
KyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgInNlY29uZCBhcmd1bWVu
dCB0byBGdW5jdGlvbi5wcm90b3R5cGUuYXBwbHkgbXVzdCBiZSBhbiBBcnJheS1saWtlIG9iamVj
dCJfc3RyLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoZ2xvYmFs
T2JqZWN0LT52bSgpLCB2YWx1ZSkpOwogfQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZEluUGFy
YW1ldGVyRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkK
IHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImlzIG5vdCBh
biBPYmplY3QuIl9zLCBpbnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcik7CisgICAgcmV0
dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpcyBub3QgYW4gT2JqZWN0LiJf
c3RyLCBpbnZhbGlkUGFyYW1ldGVySW5Tb3VyY2VBcHBlbmRlcik7CiB9CiAKIEpTT2JqZWN0KiBj
cmVhdGVJbnZhbGlkSW5zdGFuY2VvZlBhcmFtZXRlckVycm9yTm90RnVuY3Rpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRl
RXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIiBpcyBub3QgYSBmdW5jdGlvbiJfcywgaW52YWxp
ZFBhcmFtZXRlckluc3RhbmNlb2ZOb3RGdW5jdGlvblNvdXJjZUFwcGVuZGVyKTsKKyAgICByZXR1
cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIiBpcyBub3QgYSBmdW5jdGlvbiJf
c3RyLCBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIp
OwogfQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvckhh
c0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKQogewotICAgIHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZh
bHVlLCAiW1N5bWJvbC5oYXNJbnN0YW5jZV0gaXMgbm90IGEgZnVuY3Rpb24sIHVuZGVmaW5lZCwg
b3IgbnVsbCJfcywgaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZoYXNJbnN0YW5jZVZhbHVlTm90
RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcik7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9i
amVjdCwgdmFsdWUsICJbU3ltYm9sLmhhc0luc3RhbmNlXSBpcyBub3QgYSBmdW5jdGlvbiwgdW5k
ZWZpbmVkLCBvciBudWxsIl9zdHIsIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9maGFzSW5zdGFu
Y2VWYWx1ZU5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOwogfQogCiBKU09iamVjdCogY3JlYXRl
Tm90QUNvbnN0cnVjdG9yRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwg
ImlzIG5vdCBhIGNvbnN0cnVjdG9yIl9zLCBkZWZhdWx0U291cmNlQXBwZW5kZXIpOworICAgIHJl
dHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGEgY29uc3RydWN0
b3IiX3N0ciwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZU5v
dEFGdW5jdGlvbkVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgdmFsdWUsICJpcyBu
b3QgYSBmdW5jdGlvbiJfcywgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOworICAgIHJldHVy
biBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGEgZnVuY3Rpb24iX3N0
ciwgbm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOwogfQogCiBKU09iamVjdCogY3JlYXRlTm90
QW5PYmplY3RFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewotICAgIHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90
IGFuIG9iamVjdCJfcywgZGVmYXVsdFNvdXJjZUFwcGVuZGVyKTsKKyAgICByZXR1cm4gY3JlYXRl
RXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgImlzIG5vdCBhbiBvYmplY3QiX3N0ciwgZGVmYXVs
dFNvdXJjZUFwcGVuZGVyKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZUludmFsaWRQcm90b3R5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewotICAg
IHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGFuIG9iamVj
dCBvciBudWxsIl9zLCBpbnZhbGlkUHJvdG90eXBlU291cmNlQXBwZW5kZXIpOworICAgIHJldHVy
biBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGFuIG9iamVjdCBvciBu
dWxsIl9zdHIsIGludmFsaWRQcm90b3R5cGVTb3VyY2VBcHBlbmRlcik7CiB9CiAKIEpTT2JqZWN0
KiBjcmVhdGVFcnJvckZvckludmFsaWRHbG9iYWxBc3NpZ25tZW50KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpAQCAtMzI0LDI3ICszMjQs
MjcgQEAgSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFzc2lnbm1lbnQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY28KIAogSlNPYmplY3QqIGNyZWF0ZVREWkVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVJlZmVy
ZW5jZUVycm9yKGdsb2JhbE9iamVjdCwgIkNhbm5vdCBhY2Nlc3MgdW5pbml0aWFsaXplZCB2YXJp
YWJsZS4iKTsKKyAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
Q2Fubm90IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiJfc3RyKTsKIH0KIAogSlNPYmpl
Y3QqIGNyZWF0ZUludmFsaWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VT
dHJpbmcoIkNhbm5vdCBhY2Nlc3MgaW52YWxpZCBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3Vy
Y2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHByaXZhdGUgZmllbGQiX3N0ciwgZGVm
YXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVS
ZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7
Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNh
bm5vdCByZWRlZmluZSBleGlzdGluZyBwcml2YXRlIGZpZWxkIiksIGRlZmF1bHRTb3VyY2VBcHBl
bmRlciwgVHlwZU5vdGhpbmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiQ2Fubm90IHJlZGVmaW5lIGV4aXN0aW5nIHByaXZhdGUgZmllbGQiX3N0ciwgZGVmYXVs
dFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVQcml2
YXRlTWV0aG9kQWNjZXNzRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90
IGFjY2VzcyBwcml2YXRlIG1ldGhvZCBvciBhY2Vzc29yIl9zKSwgZGVmYXVsdFNvdXJjZUFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsICJDYW5ub3QgYWNjZXNzIHByaXZhdGUgbWV0aG9kIG9yIGFjZXNzb3IiX3N0ciwgZGVmYXVs
dFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVSZWlu
c3RhbGxQcml2YXRlTWV0aG9kRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
LSAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fu
bm90IGluc3RhbGwgc2FtZSBwcml2YXRlIG1ldGhvZHMgb24gb2JqZWN0IG1vcmUgdGhhbiBvbmNl
Il9zKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNy
ZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgaW5zdGFsbCBzYW1lIHByaXZhdGUg
bWV0aG9kcyBvbiBvYmplY3QgbW9yZSB0aGFuIG9uY2UiX3N0ciwgZGVmYXVsdFNvdXJjZUFwcGVu
ZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEV4Y2VwdGlvbiogdGhyb3dPdXRPZk1lbW9yeUVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRp
b25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcAppbmRleCBmMzFkYjg2YTc5NjE2ZTQ1YThkYzExNWFh
MjY1NzBhYzNjN2U2NmY1Li5kMGQ3YmU1MTYxNGYyMmJmOGQxMGE5OWNiMmEzMGZhOWM2ZjNiYjkz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25S
ZWdpc3RyeUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcApAQCAtNDEsNyArNDEsNyBAQCBj
b25zdCBDbGFzc0luZm8gRmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiRnVuY3Rpb24iLCAmQmFzZTo6cwogCiB2b2lkIEZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5
cGUqIHByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgIkZpbmFs
aXphdGlvblJlZ2lzdHJ5Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVy
ZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiRmluYWxpemF0
aW9uUmVnaXN0cnkiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKIH0KIApAQCAtNjYsNyArNjYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
Y29uc3RydWN0RmluYWxpemF0aW9uUmVnaXN0cnksIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKS5pc0NhbGxhYmxlKHZtKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEZpbmFs
aXphdGlvblJlZ2lzdHJ5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRv
IEZpbmFsaXphdGlvblJlZ2lzdHJ5IHNob3VsZCBiZSBhIGZ1bmN0aW9uIl9zdHIpOwogCiAgICAg
SlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOwog
ICAgIFN0cnVjdHVyZSogZmluYWxpemF0aW9uUmVnaXN0cnlTdHJ1Y3R1cmUgPSBKU0NfR0VUX0RF
UklWRURfU1RSVUNUVVJFKHZtLCBmaW5hbGl6YXRpb25SZWdpc3RyeVN0cnVjdHVyZSwgbmV3VGFy
Z2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9uUmVnaXN0cnlQcm90b3R5cGUuY3Bw
CmluZGV4IDg1M2U0YWE4NzRjYjUxMDBhMzYzYjJjMDAxNDMzNTNjZmZhNWIwOWMuLjE0YzEwNzBj
MjMzZGY2Zjk5MjZiMmNjZDA4ZTk2OTgzNzBlNzY0M2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeVByb3Rv
dHlwZS5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaW5hbGl6
YXRpb25SZWdpc3RyeSogZ2V0RmluYWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBKU0cKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5MSUtFTFko
IXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJDYWxsZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gbm9uLW9i
amVjdCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJD
YWxsZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gbm9uLW9iamVjdCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC02MSw3ICs2MSw3IEBAIEFMV0FZ
U19JTkxJTkUgc3RhdGljIEpTRmluYWxpemF0aW9uUmVnaXN0cnkqIGdldEZpbmFsaXphdGlvblJl
Z2lzdHJ5KFZNJiB2bSwgSlNHCiAgICAgaWYgKExJS0VMWShncm91cCkpCiAgICAgICAgIHJldHVy
biBncm91cDsKIAotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxs
ZWQgRmluYWxpemF0aW9uUmVnaXN0cnkgZnVuY3Rpb24gb24gYSBub24tRmluYWxpemF0aW9uUmVn
aXN0cnkgb2JqZWN0Il9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQ2FsbGVkIEZpbmFsaXphdGlvblJlZ2lzdHJ5IGZ1bmN0aW9uIG9uIGEgbm9uLUZpbmFsaXph
dGlvblJlZ2lzdHJ5IG9iamVjdCJfc3RyKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAt
NzUsMTUgKzc1LDE1IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihwcm90b0Z1bmNGaW5hbGl6
YXRpb25SZWdpc3RyeVJlZ2lzdGVyLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBKU1ZhbHVlIHRh
cmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3Qo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InJlZ2lzdGVyIHJlcXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdGFyZ2V0Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJl
cXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdGFyZ2V0Il9zdHIpOwogCiAgICAgSlNWYWx1ZSBob2xk
aW5ncyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKHRhcmdldCA9PSBob2xkaW5n
cykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InJlZ2lzdGVyIGV4cGVjdHMgdGhlIHRhcmdldCBvYmplY3QgYW5kIHRoZSBob2xkaW5ncyBwYXJh
bWV0ZXIgYXJlIG5vdCB0aGUgc2FtZS4gT3RoZXJ3aXNlLCB0aGUgdGFyZ2V0IGNhbiBuZXZlciBi
ZSBjb2xsZWN0ZWQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgZXhwZWN0cyB0aGUgdGFyZ2V0IG9iamVjdCBhbmQgdGhl
IGhvbGRpbmdzIHBhcmFtZXRlciBhcmUgbm90IHRoZSBzYW1lLiBPdGhlcndpc2UsIHRoZSB0YXJn
ZXQgY2FuIG5ldmVyIGJlIGNvbGxlY3RlZCJfc3RyKTsKIAogICAgIEpTVmFsdWUgdW5yZWdpc3Rl
clRva2VuID0gY2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKICAgICBpZiAoIXVucmVnaXN0ZXJUb2tl
bi5pc1VuZGVmaW5lZCgpICYmICF1bnJlZ2lzdGVyVG9rZW4uaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lzdGVyIHJl
cXVpcmVzIGFuIG9iamVjdCBhcyB0aGUgdW5yZWdpc3RyYXRpb24gdG9rZW4iX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIg
cmVxdWlyZXMgYW4gb2JqZWN0IGFzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfc3RyKTsKIAog
ICAgIGdyb3VwLT5yZWdpc3RlclRhcmdldCh2bSwgdGFyZ2V0LmdldE9iamVjdCgpLCBob2xkaW5n
cywgdW5yZWdpc3RlclRva2VuKTsKICAgICByZXR1cm4gZW5jb2RlZEpTVW5kZWZpbmVkKCk7CkBA
IC0xMDIsNyArMTAyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHByb3RvRnVuY0ZpbmFs
aXphdGlvblJlZ2lzdHJ5VW5yZWdpc3RlciwgKEpTR2xvYmFsT2JqZWMKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVzdWx0KSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVucmVnaXN0ZXIgcmVxdWly
ZXMgYW4gb2JqZWN0IGlzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfcyk7CisgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVucmVnaXN0ZXIgcmVxdWly
ZXMgYW4gb2JqZWN0IGlzIHRoZSB1bnJlZ2lzdHJhdGlvbiB0b2tlbiJfc3RyKTsKIH0KIAogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJs
ZS5jcHAKaW5kZXggYTE3NjQ3YWM5YWEyM2U3NTQ3NTY3MmU0YzZlYjUyZmQwNTllNGI2Yy4uZWU5
ZWZhMzQ5NDYxODdhNzU4NThiZTcwNzRmNmRjOTFjMTRlZGQ5NiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwCkBAIC0xNDUs
NyArMTQ1LDcgQEAgSlNTdHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgc3dpdGNoIChwYXJzZU1vZGUoKSkgewog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpHZW5lcmF0b3JXcmFwcGVyTWV0aG9kTW9kZToKLSAg
ICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiZnVuY3Rpb24qICI7CisgICAgICAgIGZ1bmN0aW9uSGVh
ZGVyID0gImZ1bmN0aW9uKiAiX3N0cjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNvdXJj
ZVBhcnNlTW9kZTo6Tm9ybWFsRnVuY3Rpb25Nb2RlOgpAQCAtMTU5LDI2ICsxNTksMjYgQEAgSlNT
dHJpbmcqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6dG9TdHJpbmdTbG93KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yQm9k
eU1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Cb2R5TW9kZToK
ICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNBcnJvd0Z1bmN0aW9uQm9keU1vZGU6Ci0g
ICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0aW9uICI7CisgICAgICAgIGZ1bmN0aW9uSGVh
ZGVyID0gImZ1bmN0aW9uICJfc3RyOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiIjsK
KyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSBlbXB0eVN0cmluZygpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRl
ciA9ICJhc3luYyBmdW5jdGlvbiAiOworICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBm
dW5jdGlvbiAiX3N0cjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNBcnJvd0Z1bmN0aW9uTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5
bmMgIjsKKyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5bmMgIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jR2VuZXJhdG9yV3JhcHBlckZ1
bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFw
cGVyTWV0aG9kTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5bmMgZnVuY3Rpb24q
ICI7CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jIGZ1bmN0aW9uKiAiX3N0cjsKICAg
ICAgICAgYnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9HZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IDdm
YTNiMjExNjIzNjg3YzFhOTliMzU1MThkMmI0ZDA0MjdkNDc3NjAuLmJmYjlkM2JiYTY4ZmNjY2Ex
ZDBiOTc3ODJkNDE0ZTEwNTE2OWJhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBA
IC01OCw3ICs1OCw3IEBAIEdlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OkdlbmVyYXRvckZ1
bmN0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0CiAKIHZvaWQgR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBHZW5lcmF0b3JGdW5j
dGlvblByb3RvdHlwZSogZ2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDEsICJHZW5lcmF0b3JGdW5jdGlvbiJfcywgUHJvcGVydHlBZGRp
dGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgMSwgIkdlbmVyYXRvckZ1bmN0aW9uIl9zdHIsIFByb3BlcnR5QWRkaXRpb25N
b2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2VuZXJhdG9yRnVuY3Rp
b25Qcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50ZXJuYWxGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApp
bmRleCBkNWJjNDk0MDk1N2U1NTJiZjY0YTUwYTU5MDJjMTEwYzE1MjZkYjkxLi5mMmZiNzc5MzAx
OWVlMTJiOTE2ODU1YTFiYzViNzljMDQ2OGY4MGI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcApAQCAtMTk3LDcgKzE5Nyw3IEBA
IEpTR2xvYmFsT2JqZWN0KiBnZXRGdW5jdGlvblJlYWxtKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgICAgIGlmIChvYmplY3QtPnR5cGUoKSA9PSBQ
cm94eU9iamVjdFR5cGUpIHsKICAgICAgICAgICAgIGF1dG8qIHByb3h5ID0ganNDYXN0PFByb3h5
T2JqZWN0Kj4ob2JqZWN0KTsKICAgICAgICAgICAgIGlmIChwcm94eS0+aXNSZXZva2VkKCkpIHsK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fu
bm90IGdldCBmdW5jdGlvbiByZWFsbSBmcm9tIHJldm9rZWQgUHJveHkiX3MpOworICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgZ2V0IGZ1
bmN0aW9uIHJlYWxtIGZyb20gcmV2b2tlZCBQcm94eSJfc3RyKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG9iamVjdCA9IHByb3h5
LT50YXJnZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuY3BwCmluZGV4IGI2YmI3NTE1ODBkNzY4MmUxNjZhNDU5NjVmMzIzMjliZTJjNGM2NTUuLjM2
NTNjOTY0OWZhMzFlZGNiNGQyNjRlYzI5YTI1MGVkM2U3Y2NhYWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAtMTA3LDE0ICsxMDcsMTQg
QEAgVmVjdG9yPFN0cmluZz4gSW50bENvbGxhdG9yOjpzb3J0TG9jYWxlRGF0YShjb25zdCBTdHJp
bmcmIGxvY2FsZSwgUmVsZXZhbnRFeHRlbnMKICAgICB9CiAgICAgY2FzZSBSZWxldmFudEV4dGVu
c2lvbktleTo6S2Y6CiAgICAgICAgIGtleUxvY2FsZURhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eSgzKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImZhbHNlIl9zKTsK
LSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImxvd2VyIl9zKTsKLSAgICAg
ICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoInVwcGVyIl9zKTsKKyAgICAgICAga2V5
TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImZhbHNlIl9zdHIpOworICAgICAgICBrZXlMb2Nh
bGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgibG93ZXIiX3N0cik7CisgICAgICAgIGtleUxvY2FsZURh
dGEudW5jaGVja2VkQXBwZW5kKCJ1cHBlciJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBSZWxldmFudEV4dGVuc2lvbktleTo6S246CiAgICAgICAgIGtleUxvY2FsZURhdGEucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eSgyKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBl
bmQoImZhbHNlIl9zKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoInRy
dWUiX3MpOworICAgICAgICBrZXlMb2NhbGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgiZmFsc2UiX3N0
cik7CisgICAgICAgIGtleUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5kKCJ0cnVlIl9zdHIpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTEzNCwxNCArMTM0LDE0IEBAIFZlY3RvcjxTdHJpbmc+IEludGxDb2xsYXRvcjo6c2Vh
cmNoTG9jYWxlRGF0YShjb25zdCBTdHJpbmcmLCBSZWxldmFudEV4dGVuc2lvbktlCiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgUmVsZXZhbnRFeHRlbnNpb25LZXk6OktmOgogICAgICAgICBrZXlM
b2NhbGVEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMyk7Ci0gICAgICAgIGtleUxvY2FsZURh
dGEudW5jaGVja2VkQXBwZW5kKCJmYWxzZSJfcyk7Ci0gICAgICAgIGtleUxvY2FsZURhdGEudW5j
aGVja2VkQXBwZW5kKCJsb3dlciJfcyk7Ci0gICAgICAgIGtleUxvY2FsZURhdGEudW5jaGVja2Vk
QXBwZW5kKCJ1cHBlciJfcyk7CisgICAgICAgIGtleUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5k
KCJmYWxzZSJfc3RyKTsKKyAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImxv
d2VyIl9zdHIpOworICAgICAgICBrZXlMb2NhbGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgidXBwZXIi
X3N0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVsZXZhbnRFeHRlbnNpb25LZXk6Oktu
OgogICAgICAgICBrZXlMb2NhbGVEYXRhLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoMik7Ci0gICAg
ICAgIGtleUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5kKCJmYWxzZSJfcyk7Ci0gICAgICAgIGtl
eUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5kKCJ0cnVlIl9zKTsKKyAgICAgICAga2V5TG9jYWxl
RGF0YS51bmNoZWNrZWRBcHBlbmQoImZhbHNlIl9zdHIpOworICAgICAgICBrZXlMb2NhbGVEYXRh
LnVuY2hlY2tlZEFwcGVuZCgidHJ1ZSJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0xNzYsNyArMTc2LDcgQEAgdm9p
ZCBJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGxvY2EKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
dm9pZCgpKTsKICAgICAgICAgaWYgKCFjb2xsYXRpb24uaXNOdWxsKCkpIHsKICAgICAgICAgICAg
IGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoY29sbGF0aW9uKSkgewotICAgICAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiY29sbGF0aW9u
IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGNvbGxhdGlvbiB2YWx1ZSJfcyk7CisgICAgICAgICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjb2xsYXRpb24gaXMgbm90
IGEgd2VsbC1mb3JtZWQgY29sbGF0aW9uIHZhbHVlIl9zdHIpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxvY2FsZU9wdGlvbnNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpDbyldID0gV1RGTW92ZShjb2xsYXRp
b24pOwpAQCAtMTg2LDcgKzE4Niw3IEBAIHZvaWQgSW50bENvbGxhdG9yOjppbml0aWFsaXplQ29s
bGF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhCiAgICAgVHJp
U3RhdGUgbnVtZXJpYyA9IGludGxCb29sZWFuT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
dm0ucHJvcGVydHlOYW1lcy0+bnVtZXJpYyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICBpZiAobnVtZXJpYyAhPSBUcmlTdGF0ZTo6SW5kZXRlcm1pbmF0ZSkK
LSAgICAgICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRl
bnNpb25LZXk6OktuKV0gPSBTdHJpbmcobnVtZXJpYyA9PSBUcmlTdGF0ZTo6VHJ1ZSA/ICJ0cnVl
Il9zIDogImZhbHNlIl9zKTsKKyAgICAgICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUmVsZXZhbnRFeHRlbnNpb25LZXk6OktuKV0gPSBudW1lcmljID09IFRyaVN0YXRlOjpU
cnVlID8gInRydWUiX3N0ciA6ICJmYWxzZSJfc3RyOwogCiAgICAgU3RyaW5nIGNhc2VGaXJzdE9w
dGlvbiA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0
eU5hbWVzLT5jYXNlRmlyc3QsIHsgInVwcGVyIiwgImxvd2VyIiwgImZhbHNlIiB9LCAiY2FzZUZp
cnN0IG11c3QgYmUgZWl0aGVyIFwidXBwZXJcIiwgXCJsb3dlclwiLCBvciBcImZhbHNlXCIiLCBu
dWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwpAQCAtMTk4
LDEyICsxOTgsMTIgQEAgdm9pZCBJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2EKIAogICAgIG1fbG9jYWxlID0g
cmVzb2x2ZWQubG9jYWxlOwogICAgIGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXpl
IENvbGxhdG9yIGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBDb2xsYXRvciBk
dWUgdG8gaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBjb25zdCBTdHJpbmcmIGNvbGxhdGlvbiA9IHJlc29sdmVkLmV4dGVuc2lvbnNbc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpDbyldOwotICAgIG1fY29sbGF0aW9u
ID0gY29sbGF0aW9uLmlzTnVsbCgpID8gImRlZmF1bHQiX3MgOiBjb2xsYXRpb247CisgICAgbV9j
b2xsYXRpb24gPSBjb2xsYXRpb24uaXNOdWxsKCkgPyAiZGVmYXVsdCJfc3RyIDogY29sbGF0aW9u
OwogICAgIG1fbnVtZXJpYyA9IHJlc29sdmVkLmV4dGVuc2lvbnNbc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpLbildID09ICJ0cnVlIl9zOwogCiAgICAgY29uc3Qg
U3RyaW5nJiBjYXNlRmlyc3RTdHJpbmcgPSByZXNvbHZlZC5leHRlbnNpb25zW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6S2YpXTsKQEAgLTI0Myw3ICsyNDMsNyBA
QCB2b2lkIEludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOwogICAgIG1fY29sbGF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNvbGxhdG9yLCBVQ29s
bGF0b3JEZWxldGVyPih1Y29sX29wZW4oZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwg
JnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgQ29sbGF0
b3IiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgQ29sbGF0b3IiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTMxNyw3ICszMTcsNyBAQCBKU1ZhbHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmlu
Z3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RyaW5nVmlldyB4LAogICAgICAgICBy
ZXR1cm4gdWNvbF9zdHJjb2xsKG1fY29sbGF0b3IuZ2V0KCksIHgudXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzKCksIHgubGVuZ3RoKCksIHkudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCksIHkubGVuZ3RoKCkp
OwogICAgIH0oKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4iX3MpKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVj
dCwgIkZhaWxlZCB0byBjb21wYXJlIHN0cmluZ3MuIl9zdHIpKTsKICAgICByZXR1cm4ganNOdW1i
ZXIocmVzdWx0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDBiYzVhYTM3ZDdjZGUwMjAz
M2Q3M2U5Zjg1Y2IyZTEzMTczMTAzMjkuLmNlNmU4NzJlYmI3MDdmZDU0YTA1NzBmN2YwMDRhOTE5
NDgwOGE2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgSW50bENvbGxh
dG9yQ29uc3RydWN0b3I6OkludGxDb2xsYXRvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJl
KiBzdHJ1Y3R1cmUpCiAKIHZvaWQgSW50bENvbGxhdG9yQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSW50bENvbGxhdG9yUHJvdG90eXBlKiBjb2xsYXRvclByb3RvdHlwZSkKIHsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIkNvbGxhdG9yIl9zLCBQcm9wZXJ0eUFk
ZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCAwLCAiQ29sbGF0b3IiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBjb2xsYXRvclByb3RvdHlwZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIGNvbGxhdG9yUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
Q29sbGF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDA1OWMxOTVmYjAzNTVkNDU1MDcxNmFlYjg0YzU5
OTAxYzgyZDQ1MzEuLmQwNmM3Mzk2ZGVkZmFlOGRmYWEwOTFhOWMwM2VmNjczOWUwNzg3Y2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9y
UHJvdG90eXBlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
UihpbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGds
CiAgICAgLy8gMS4gTGV0IGNvbGxhdG9yIGJlIHRoaXMgQ29sbGF0b3Igb2JqZWN0LgogICAgIElu
dGxDb2xsYXRvciogY29sbGF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFjb2xsYXRvcikKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIENvbGxhdG9yIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuQ29sbGF0b3IucHJvdG90eXBl
LmNvbXBhcmUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBDb2xsYXRvciJfc3RyKSk7CiAK
ICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kQ29tcGFyZSA9IGNvbGxhdG9yLT5ib3VuZENvbXBh
cmUoKTsKICAgICAvLyAyLiBJZiBjb2xsYXRvci5bW2JvdW5kQ29tcGFyZV1dIGlzIHVuZGVmaW5l
ZCwKQEAgLTEyMiw3ICsxMjIsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bENvbGxh
dG9yUHJvdG90eXBlR2V0dGVyQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gY29sbGF0b3ItPmdsb2JhbE9iamVjdCh2bSk7
CiAgICAgICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBh
cyBkZWZpbmVkIGluIDExLjMuNC4KICAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxl
bmd0aCBwcm9wZXJ0eSBpcyAyLgotICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3QgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMiwgImNvbXBhcmUiX3MsIGludGxD
b2xsYXRvckZ1bmNDb21wYXJlLCBOb0ludHJpbnNpYyk7CisgICAgICAgIEpTRnVuY3Rpb24qIHRh
cmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAyLCAiY29t
cGFyZSJfc3RyLCBpbnRsQ29sbGF0b3JGdW5jQ29tcGFyZSwgTm9JbnRyaW5zaWMpOwogCiAgICAg
ICAgIC8vIGMuIExldCBiYyBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7
KS4KICAgICAgICAgYm91bmRDb21wYXJlID0gSlNCb3VuZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBjb2xsYXRvciwgbnVsbHB0ciwgMiwgbnVsbHB0cik7
CkBAIC0xNDIsNyArMTQyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxDb2xsYXRv
clByb3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbE9iamUKICAgICAvLyAxMC4z
LjUgSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgKEVDTUEtNDAyIDIu
MCkKICAgICBJbnRsQ29sbGF0b3IqIGNvbGxhdG9yID0ganNEeW5hbWljQ2FzdDxJbnRsQ29sbGF0
b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjb2xsYXRvcikKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgQ29sbGF0b3IiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Db2xs
YXRvci5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgQ29sbGF0b3IiX3N0cikpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoY29sbGF0b3ItPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVG
b3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9y
bWF0LmNwcAppbmRleCBjMmQ0OWRhOThhNjYwYmM2MmIwNGFmZTE5YzU3OGYyNTkyZmQ0YmI5Li4w
NGY1OTRlM2Q5MWFhNmY4NTg4YjQ3OWE0NzM1NGQzYjg2NTFjYTdkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTE0
NSw3ICsxNDUsNyBAQCBzdGF0aWMgU3RyaW5nIGNhbm9uaWNhbGl6ZVRpbWVab25lTmFtZShjb25z
dCBTdHJpbmcmIHRpbWVab25lTmFtZSkKIAogICAgIC8vIDMuIElmIGlhbmFUaW1lWm9uZSBpcyAi
RXRjL1VUQyIgb3IgIkV0Yy9HTVQiLCB0aGVuIHJldHVybiAiVVRDIi4KICAgICBpZiAoaXNVVENF
cXVpdmFsZW50KGNhbm9uaWNhbCkpCi0gICAgICAgIHJldHVybiAiVVRDIl9zOworICAgICAgICBy
ZXR1cm4gIlVUQyJfc3RyOwogCiAgICAgLy8gNC4gUmV0dXJuIGlhbmFUaW1lWm9uZS4KICAgICBy
ZXR1cm4gY2Fub25pY2FsOwpAQCAtMTY3LDcgKzE2Nyw3IEBAIFZlY3RvcjxTdHJpbmc+IEludGxE
YXRlVGltZUZvcm1hdDo6bG9jYWxlRGF0YShjb25zdCBTdHJpbmcmIGxvY2FsZSwgUmVsZXZhbnRF
eHRlCiAgICAgICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZChjYWxlbmRhcik7CiAgICAgICAg
ICAgICAvLyBBZGRpbmcgImlzbGFtaWNjIiBjYW5kaWRhdGUgZm9yIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHkuCiAgICAgICAgICAgICBpZiAoY2FsZW5kYXIgPT0gImlzbGFtaWMtY2l2aWwiX3MpCi0g
ICAgICAgICAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImlzbGFtaWNjIl9zKTsKKyAgICAg
ICAgICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZCgiaXNsYW1pY2MiX3N0cik7CiAgICAgICAg
ICAgICBpZiAoYXV0byBtYXBwZWQgPSBtYXBJQ1VDYWxlbmRhcktleXdvcmRUb0JDUDQ3KGNhbGVu
ZGFyKSkKICAgICAgICAgICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZChXVEZNb3ZlKG1hcHBl
ZC52YWx1ZSgpKSk7CiAgICAgICAgIH0KQEAgLTE3NywxMCArMTc3LDEwIEBAIFZlY3RvcjxTdHJp
bmc+IEludGxEYXRlVGltZUZvcm1hdDo6bG9jYWxlRGF0YShjb25zdCBTdHJpbmcmIGxvY2FsZSwg
UmVsZXZhbnRFeHRlCiAgICAgY2FzZSBSZWxldmFudEV4dGVuc2lvbktleTo6SGM6CiAgICAgICAg
IC8vIE51bGwgZGVmYXVsdCBzbyB3ZSBrbm93IHRvIHVzZSAnaicgaW4gcGF0dGVybi4KICAgICAg
ICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoU3RyaW5nKCkpOwotICAgICAgICBrZXlMb2NhbGVEYXRh
LmFwcGVuZCgiaDExIl9zKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgxMiJfcyk7
Ci0gICAgICAgIGtleUxvY2FsZURhdGEuYXBwZW5kKCJoMjMiX3MpOwotICAgICAgICBrZXlMb2Nh
bGVEYXRhLmFwcGVuZCgiaDI0Il9zKTsKKyAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgx
MSJfc3RyKTsKKyAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgxMiJfc3RyKTsKKyAgICAg
ICAga2V5TG9jYWxlRGF0YS5hcHBlbmQoImgyMyJfc3RyKTsKKyAgICAgICAga2V5TG9jYWxlRGF0
YS5hcHBlbmQoImgyNCJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWxldmFudEV4
dGVuc2lvbktleTo6TnU6CiAgICAgICAgIGtleUxvY2FsZURhdGEgPSBudW1iZXJpbmdTeXN0ZW1z
Rm9yTG9jYWxlKGxvY2FsZSk7CkBAIC0yODcsNyArMjg3LDcgQEAgc3RhdGljIEpTT2JqZWN0KiB0
b0RhdGVUaW1lT3B0aW9uc0FueURhdGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZQogICAgICAgICAvLyBhLiBGb3IgZWFjaCBvZiB0aGUgcHJvcGVydHkgbmFtZXMgInllYXIi
LCAibW9udGgiLCAiZGF5IjoKICAgICAgICAgLy8gaS4gTGV0IHN0YXR1cyBiZSBDcmVhdGVEYXRl
UHJvcGVydHlPclRocm93KG9wdGlvbnMsIHByb3AsICJudW1lcmljIikuCiAgICAgICAgIC8vIGlp
LiBSZXR1cm5JZkFicnVwdChzdGF0dXMpLgotICAgICAgICBKU1N0cmluZyogbnVtZXJpYyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIm51bWVyaWMiX3MpOworICAgICAgICBKU1N0cmluZyogbnVt
ZXJpYyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm51bWVyaWMiX3N0cik7CiAKICAgICAgICAg
b3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT55ZWFyLCBudW1lcmljKTsK
ICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTYwOCw3ICs2MDgs
NyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgdm9pZCgpKTsKICAgICBpZiAoIWNhbGVuZGFyLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICgh
aXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoY2FsZW5kYXIpKSB7Ci0gICAgICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNhbGVuZGFyIGlzIG5vdCBhIHdl
bGwtZm9ybWVkIGNhbGVuZGFyIHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiY2FsZW5kYXIgaXMgbm90IGEgd2VsbC1mb3JtZWQgY2Fs
ZW5kYXIgdmFsdWUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAg
ICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25L
ZXk6OkNhKV0gPSBjYWxlbmRhcjsKQEAgLTYxOCw3ICs2MTgsNyBAQCB2b2lkIEludGxEYXRlVGlt
ZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAo
IW51bWJlcmluZ1N5c3RlbS5pc051bGwoKSkgewogICAgICAgICBpZiAoIWlzVW5pY29kZUxvY2Fs
ZUlkZW50aWZpZXJUeXBlKG51bWJlcmluZ1N5c3RlbSkpIHsKLSAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdl
bGwtZm9ybWVkIG51bWJlcmluZyBzeXN0ZW0gdmFsdWUiX3MpOworICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXJpbmdTeXN0ZW0gaXMgbm90IGEg
d2VsbC1mb3JtZWQgbnVtYmVyaW5nIHN5c3RlbSB2YWx1ZSJfc3RyKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVPcHRpb25zW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6TnUpXSA9IG51bWJlcmluZ1N5c3RlbTsKQEAgLTY0
Myw3ICs2NDMsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1l
Rm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBtX2xvY2FsZSA9IHJl
c29sdmVkLmxvY2FsZTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBE
YXRlVGltZUZvcm1hdCBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRp
bWVGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC04OTgsNyArODk4LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRp
YWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAg
ICAvLyAgICAgaWlpLiBJZiBwIGlzIG5vdCB1bmRlZmluZWQsIHRoZW4KICAgICAgICAgLy8gICAg
ICAgICAxLiBUaHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmICh3ZWVrZGF5
ICE9IFdlZWtkYXk6Ok5vbmUgfHwgZXJhICE9IEVyYTo6Tm9uZSB8fCB5ZWFyICE9IFllYXI6Ok5v
bmUgfHwgbW9udGggIT0gTW9udGg6Ok5vbmUgfHwgZGF5ICE9IERheTo6Tm9uZSB8fCBkYXlQZXJp
b2QgIT0gRGF5UGVyaW9kOjpOb25lIHx8IGhvdXIgIT0gSG91cjo6Tm9uZSB8fCBtaW51dGUgIT0g
TWludXRlOjpOb25lIHx8IHNlY29uZCAhPSBTZWNvbmQ6Ok5vbmUgfHwgZnJhY3Rpb25hbFNlY29u
ZERpZ2l0cyAhPSAwIHx8IHRpbWVab25lTmFtZSAhPSBUaW1lWm9uZU5hbWU6Ok5vbmUpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJkYXRlU3R5bGUg
YW5kIHRpbWVTdHlsZSBtYXkgbm90IGJlIHVzZWQgd2l0aCBvdGhlciBEYXRlVGltZUZvcm1hdCBv
cHRpb25zIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJkYXRlU3R5bGUgYW5kIHRpbWVTdHlsZSBtYXkgbm90IGJlIHVzZWQgd2l0aCBvdGhlciBE
YXRlVGltZUZvcm1hdCBvcHRpb25zIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKQEAgLTkyNSwxMyArOTI1LDEzIEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0
aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAg
ICAgU3RyaW5nVmlldyB0aW1lWm9uZVZpZXcobV90aW1lWm9uZSk7CiAgICAgICAgIGF1dG8gZGF0
ZUZvcm1hdEZyb21TdHlsZSA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZUZvcm1hdCwgVURhdGVGb3Jt
YXREZWxldGVyPih1ZGF0X29wZW4ocGFyc2VVRGF0ZUZvcm1hdFN0eWxlKG1fdGltZVN0eWxlKSwg
cGFyc2VVRGF0ZUZvcm1hdFN0eWxlKG1fZGF0ZVN0eWxlKSwgZGF0YUxvY2FsZVdpdGhFeHRlbnNp
b25zLmRhdGEoKSwgdGltZVpvbmVWaWV3LnVwY29udmVydGVkQ2hhcmFjdGVycygpLCB0aW1lWm9u
ZVZpZXcubGVuZ3RoKCksIG51bGxwdHIsIC0xLCAmc3RhdHVzKSk7CiAgICAgICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5p
dGlhbGl6ZSBEYXRlVGltZUZvcm1hdCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBjb25zdGV4cHIgYm9vbCBsb2NhbGl6ZWQgPSBmYWxzZTsgLy8gQWxpZ25l
ZCB3aXRoIGhvdyBJQ1UgU2ltcGxlRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdCB3b3Jrcy4gV2UgZG8g
bm90IG5lZWQgdG8gdHJhbnNsYXRlIHRoaXMgdG8gbG9jYWxpemVkIHBhdHRlcm4uCiAgICAgICAg
IHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1ZGF0X3RvUGF0dGVybiwgZGF0
ZUZvcm1hdEZyb21TdHlsZS5nZXQoKSwgbG9jYWxpemVkLCBwYXR0ZXJuQnVmZmVyKTsKICAgICAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQi
X3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zdHIpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKQEAgLTk2MCw3ICs5NjAsNyBAQCB2b2lkIEludGxEYXRlVGltZUZv
cm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgICAgICAgICAgICAgVmVjdG9yPFVDaGFyLCAzMj4gc2tlbGV0b247CiAgICAgICAg
ICAgICAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWRhdHBn
X2dldFNrZWxldG9uLCBudWxscHRyLCBwYXR0ZXJuQnVmZmVyLmRhdGEoKSwgcGF0dGVybkJ1ZmZl
ci5zaXplKCksIHNrZWxldG9uKTsKICAgICAgICAgICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zKTsKKyAgICAgICAg
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zdHIpOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlcGxhY2VIb3VyQ3lj
bGVJblNrZWxldG9uKHNrZWxldG9uLCBzcGVjaWZpZWRIb3VyMTIpOwpAQCAtOTY4LDcgKzk2OCw3
IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogICAgICAgICAgICAgICAgIHBhdHRlcm5CdWZm
ZXIgPSB2bS5pbnRsQ2FjaGUoKS5nZXRCZXN0RGF0ZVRpbWVQYXR0ZXJuKGRhdGFMb2NhbGVXaXRo
RXh0ZW5zaW9ucywgc2tlbGV0b24uZGF0YSgpLCBza2VsZXRvbi5zaXplKCksIHN0YXR1cyk7CiAg
ICAgICAgICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlh
bGl6ZSBEYXRlVGltZUZvcm1hdCJfcyk7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZv
cm1hdCJfc3RyKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KQEAgLTk3OCw3ICs5NzgsNyBAQCB2b2lkIEludGxEYXRlVGltZUZv
cm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgICAgIFN0cmluZyBza2VsZXRvbiA9IHNrZWxldG9uQnVpbGRlci50b1N0cmluZygp
OwogICAgICAgICBwYXR0ZXJuQnVmZmVyID0gdm0uaW50bENhY2hlKCkuZ2V0QmVzdERhdGVUaW1l
UGF0dGVybihkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMsIFN0cmluZ1ZpZXcoc2tlbGV0b24pLnVw
Y29udmVydGVkQ2hhcmFjdGVycygpLmdldCgpLCBza2VsZXRvbi5sZW5ndGgoKSwgc3RhdHVzKTsK
ICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVG
b3JtYXQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zdHIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtOTk2LDcgKzk5Niw3IEBAIHZvaWQgSW50
bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBTdHJpbmdWaWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsK
ICAgICBtX2RhdGVGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VURhdGVGb3JtYXQsIFVEYXRlRm9y
bWF0RGVsZXRlcj4odWRhdF9vcGVuKFVEQVRfUEFUVEVSTiwgVURBVF9QQVRURVJOLCBkYXRhTG9j
YWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCB0aW1lWm9uZVZpZXcudXBjb252ZXJ0ZWRDaGFyYWN0
ZXJzKCksIHRpbWVab25lVmlldy5sZW5ndGgoKSwgcGF0dGVybi51cGNvbnZlcnRlZENoYXJhY3Rl
cnMoKSwgcGF0dGVybi5sZW5ndGgoKSwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVG
b3JtYXQiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyODMsMTIgKzEyODMs
MTIgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGMKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpKQotICAgICAg
ICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJkYXRlIHZhbHVl
IGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJkYXRlIHZhbHVlIGlz
IG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9ybWF0KCkiX3N0cik7CiAKICAgICBWZWN0
b3I8VUNoYXIsIDMyPiByZXN1bHQ7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVj
aW5nRnVuY3Rpb24odWRhdF9mb3JtYXQsIG1fZGF0ZUZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3Vs
dCwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgZGF0
ZSB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIl9zdHIpOwogCiAgICAgcmV0dXJu
IGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0KSk7CiB9CkBAIC0xMzY1LDI0ICsxMzY1LDI0IEBA
IEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAgICAgcmV0
dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZGF0ZSB2YWx1ZSBpcyBu
b3QgZmluaXRlIGluIERhdGVUaW1lRm9ybWF0IGZvcm1hdFRvUGFydHMoKSJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImRhdGUgdmFsdWUg
aXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdCBmb3JtYXRUb1BhcnRzKCkiX3N0cik7CiAK
ICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIGZpZWxkcyA9
IHN0ZDo6dW5pcXVlX3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlvbkl0
ZXJhdG9yRGVsZXRlcj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zdHIpOwogCiAgICAgVmVjdG9yPFVD
aGFyLCAzMj4gcmVzdWx0OwogICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlv
bih1ZGF0X2Zvcm1hdEZvckZpZWxkcywgbV9kYXRlRm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0
LCBmaWVsZHMuZ2V0KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0
IGRhdGUgdmFsdWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgZGF0ZSB2YWx1ZSJfc3RyKTsKIAogICAgIEpT
QXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5
U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1
b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAgcmV0dXJuIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAogICAgIGF1dG8gcmVzdWx0U3RyaW5nID0g
U3RyaW5nKHJlc3VsdCk7Ci0gICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAibGl0ZXJhbCJfcyk7CisgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2
aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfc3RyKTsKIAogICAgIGludDMyX3QgcmVzdWx0TGVuZ3Ro
ID0gcmVzdWx0LnNpemUoKTsKICAgICBpbnQzMl90IHByZXZpb3VzRW5kSW5kZXggPSAwOwpAQCAt
MTQzNSw3ICsxNDM1LDcgQEAgVURhdGVJbnRlcnZhbEZvcm1hdCogSW50bERhdGVUaW1lRm9ybWF0
OjpjcmVhdGVEYXRlSW50ZXJ2YWxGb3JtYXRJZk5lY2Vzc2FyeShKU0cKICAgICB7CiAgICAgICAg
IGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRfdG9QYXR0ZXJu
LCBtX2RhdGVGb3JtYXQuZ2V0KCksIGZhbHNlLCBwYXR0ZXJuKTsKICAgICAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZUludGVydmFsRm9ybWF0Il9zKTsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBEYXRlSW50ZXJ2YWxGb3JtYXQiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgfQogICAgIH0KQEAgLTE0NDQsNyArMTQ0NCw3IEBAIFVEYXRlSW50
ZXJ2YWxGb3JtYXQqIEludGxEYXRlVGltZUZvcm1hdDo6Y3JlYXRlRGF0ZUludGVydmFsRm9ybWF0
SWZOZWNlc3NhcnkoSlNHCiAgICAgewogICAgICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1ZGF0cGdfZ2V0U2tlbGV0b24sIG51bGxwdHIsIHBhdHRlcm4uZGF0
YSgpLCBwYXR0ZXJuLnNpemUoKSwgc2tlbGV0b24pOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlSW50ZXJ2YWxGb3JtYXQiX3MpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFs
aXplIERhdGVJbnRlcnZhbEZvcm1hdCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgICAgICB9CiAgICAgfQpAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgVURhdGVJbnRlcnZhbEZv
cm1hdCogSW50bERhdGVUaW1lRm9ybWF0OjpjcmVhdGVEYXRlSW50ZXJ2YWxGb3JtYXRJZk5lY2Vz
c2FyeShKU0cKICAgICBTdHJpbmdWaWV3IHRpbWVab25lVmlldyhtX3RpbWVab25lKTsKICAgICBt
X2RhdGVJbnRlcnZhbEZvcm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVRGF0ZUludGVydmFsRm9ybWF0
LCBVRGF0ZUludGVydmFsRm9ybWF0RGVsZXRlcj4odWR0aXR2Zm10X29wZW4oZGF0YUxvY2FsZVdp
dGhFeHRlbnNpb25zLmRhdGEoKSwgc2tlbGV0b24uZGF0YSgpLCBza2VsZXRvbi5zaXplKCksIHRp
bWVab25lVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdGltZVpvbmVWaWV3Lmxlbmd0aCgp
LCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRl
SW50ZXJ2YWxGb3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZUludGVydmFsRm9ybWF0Il9zdHIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgcmV0dXJuIG1fZGF0ZUludGVydmFs
Rm9ybWF0LmdldCgpOwpAQCAtMTU2Miw3ICsxNTYyLDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBz
dGEKICAgICBzdGFydERhdGUgPSB0aW1lQ2xpcChzdGFydERhdGUpOwogICAgIGVuZERhdGUgPSB0
aW1lQ2xpcChlbmREYXRlKTsKICAgICBpZiAoc3RkOjppc25hbihzdGFydERhdGUpIHx8IHN0ZDo6
aXNuYW4oZW5kRGF0ZSkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJQYXNzZWQgZGF0ZSBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBkYXRlIGlzIG91dCBvZiByYW5n
ZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTE1NzMsMTQgKzE1NzMs
MTQgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGEKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBhdXRvIHJlc3VsdCA9IGZvcm1hdHRlZFZhbHVlRnJvbURhdGVSYW5n
ZSgqZGF0ZUludGVydmFsRm9ybWF0LCAqbV9kYXRlRm9ybWF0LCBzdGFydERhdGUsIGVuZERhdGUs
IHN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2
YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KIAogICAgIC8vIFVGb3JtYXR0ZWRWYWx1ZSBpcyBvd25lZCBieSBVRm9ybWF0dGVkRGF0
ZUludGVydmFsLiBXZSBkbyBub3QgbmVlZCB0byBjbG9zZSBpdC4KICAgICBhdXRvIGZvcm1hdHRl
ZFZhbHVlID0gdWR0aXR2Zm10X3Jlc3VsdEFzVmFsdWUocmVzdWx0LmdldCgpLCAmc3RhdHVzKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBA
IC0xNTkwLDcgKzE1OTAsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFu
Z2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YQogICAgIC8vIGBzb3Vy
Y2U6ICJzaGFyZWQiYCBhZGRpdGlvbmFsIGZpZWxkcy4KICAgICBib29sIGVxdWFsID0gZGF0ZUZp
ZWxkc1ByYWN0aWNhbGx5RXF1YWwoZm9ybWF0dGVkVmFsdWUsIHN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGlu
dGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTYwMCw3ICsx
NjAwLDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGEKICAgICBpbnQzMl90IGZvcm1hdHRlZFN0
cmluZ0xlbmd0aCA9IDA7CiAgICAgY29uc3QgVUNoYXIqIGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIg
PSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmZvcm1hdHRlZFN0cmluZ0xlbmd0
aCwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50
ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIApAQCAtMTYwOSw3ICsxNjA5LDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3Jt
YXQ6OmZvcm1hdFJhbmdlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSBzdGEK
ICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVm
ZmVyUHJvZHVjaW5nRnVuY3Rpb24odWR0aXR2Zm10X2Zvcm1hdCwgZGF0ZUludGVydmFsRm9ybWF0
LCBzdGFydERhdGUsIGVuZERhdGUsIGJ1ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFs
Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTYyOSw3ICsxNjI5LDcg
QEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3UKICAgICBzdGFydERhdGUgPSB0aW1lQ2xpcChzdGFy
dERhdGUpOwogICAgIGVuZERhdGUgPSB0aW1lQ2xpcChlbmREYXRlKTsKICAgICBpZiAoc3RkOjpp
c25hbihzdGFydERhdGUpIHx8IHN0ZDo6aXNuYW4oZW5kRGF0ZSkpIHsKLSAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQYXNzZWQgZGF0ZSBpcyBvdXQgb2YgcmFu
Z2UiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBh
c3NlZCBkYXRlIGlzIG91dCBvZiByYW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKQEAgLTE2MzksMTggKzE2MzksMTggQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3UKICAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHJlc3VsdCA9IGZv
cm1hdHRlZFZhbHVlRnJvbURhdGVSYW5nZSgqZGF0ZUludGVydmFsRm9ybWF0LCAqbV9kYXRlRm9y
bWF0LCBzdGFydERhdGUsIGVuZERhdGUsIHN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIC8vIFVGb3JtYXR0ZWRWYWx1ZSBp
cyBvd25lZCBieSBVRm9ybWF0dGVkRGF0ZUludGVydmFsLiBXZSBkbyBub3QgbmVlZCB0byBjbG9z
ZSBpdC4KICAgICBhdXRvIGZvcm1hdHRlZFZhbHVlID0gdWR0aXR2Zm10X3Jlc3VsdEFzVmFsdWUo
cmVzdWx0LmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQogCi0gICAgYXV0byBzaGFyZWRTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJzaGFyZWQiX3MpOworICAgIGF1dG8gc2hhcmVkU3RyaW5nID0ganNOb250
cml2aWFsU3RyaW5nKHZtLCAic2hhcmVkIl9zdHIpOwogCiAgICAgLy8gSWYgdGhlIGZvcm1hdHRl
ZCBwYXJ0cyBvZiBzdGFydERhdGUgYW5kIGVuZERhdGUgYXJlIHRoZSBzYW1lLCBpdCBpcyBwb3Nz
aWJsZSB0aGF0IHRoZSByZXN1bHRlZCBzdHJpbmcgZG9lcyBub3QgbG9vayBsaWtlIHJhbmdlLgog
ICAgIC8vIEZvciBleGFtcGxlLCBpZiB0aGUgcmVxdWVzdGVkIGZvcm1hdCBvbmx5IGluY2x1ZGVz
ICJ5ZWFyIiBhbmQgc3RhcnREYXRlIGFuZCBlbmREYXRlIGFyZSB0aGUgc2FtZSB5ZWFyLCB0aGUg
cmVzdWx0IGp1c3QgY29udGFpbnMgb25lIHllYXIuCkBAIC0xNjU4LDcgKzE2NTgsNyBAQCBKU1Zh
bHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdQogICAgIC8vIGBzb3VyY2U6ICJzaGFyZWQiYCBhZGRpdGlvbmFs
IGZpZWxkcy4KICAgICBib29sIGVxdWFsID0gZGF0ZUZpZWxkc1ByYWN0aWNhbGx5RXF1YWwoZm9y
bWF0dGVkVmFsdWUsIHN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0
IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTcxMyw3ICsxNzEzLDcgQEAgSlNWYWx1ZSBJbnRsRGF0
ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBkb3UKICAgICBpbnQzMl90IGZvcm1hdHRlZFN0cmluZ0xlbmd0aCA9IDA7CiAgICAgY29u
c3QgVUNoYXIqIGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIgPSB1Zm10dmFsX2dldFN0cmluZyhmb3Jt
YXR0ZWRWYWx1ZSwgJmZvcm1hdHRlZFN0cmluZ0xlbmd0aCwgJnN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGlu
dGVydmFsIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBTdHJpbmcgcmVz
dWx0U3RyaW5nKGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIsIGZvcm1hdHRlZFN0cmluZ0xlbmd0aCk7
CkBAIC0xNzIyLDEzICsxNzIyLDEzIEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3Jt
YXRSYW5nZVRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91CiAgICAgLy8g
U28gd2UgZG8gbm90IGNvbnN0cmFpbnQgaXRlcmF0b3IuCiAgICAgYXV0byBpdGVyYXRvciA9IHN0
ZDo6dW5pcXVlX3B0cjxVQ29uc3RyYWluZWRGaWVsZFBvc2l0aW9uLCBJQ1VEZWxldGVyPHVjZnBv
c19jbG9zZT4+KHVjZnBvc19vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCi0gICAgYXV0byBzdGFydFJhbmdlU3RyaW5n
ID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAic3RhcnRSYW5nZSJfcyk7Ci0gICAgYXV0byBlbmRS
YW5nZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVuZFJhbmdlIl9zKTsKLSAgICBh
dXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsK
KyAgICBhdXRvIHN0YXJ0UmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJzdGFy
dFJhbmdlIl9zdHIpOworICAgIGF1dG8gZW5kUmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJlbmRSYW5nZSJfc3RyKTsKKyAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRy
aXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zdHIpOwogCiAgICAgV1RGOjpSYW5nZTxpbnQzMl90
PiBzdGFydFJhbmdlIHsgLTEsIC0xIH07CiAgICAgV1RGOjpSYW5nZTxpbnQzMl90PiBlbmRSYW5n
ZSB7IC0xLCAtMSB9OwpAQCAtMTc1NSw3ICsxNzU1LDcgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVG
b3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBk
b3UKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBib29sIG5leHQgPSB1Zm10dmFsX25leHRQ
b3NpdGlvbihmb3JtYXR0ZWRWYWx1ZSwgaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAgICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0
byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKCFuZXh0KQpAQCAtMTc2MywxMyArMTc2MywxMyBAQCBKU1Zh
bHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdQogCiAgICAgICAgIGludDMyX3QgY2F0ZWdvcnkgPSB1Y2Zwb3Nf
Z2V0Q2F0ZWdvcnkoaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0
ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIAog
ICAgICAgICBpbnQzMl90IGZpZWxkVHlwZSA9IHVjZnBvc19nZXRGaWVsZChpdGVyYXRvci5nZXQo
KSwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQg
ZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogCkBAIC0xNzc3LDcgKzE3NzcsNyBAQCBKU1Zh
bHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIGRvdQogICAgICAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKICAgICAg
ICAgdWNmcG9zX2dldEluZGV4ZXMoaXRlcmF0b3IuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5k
ZXgsICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0
IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KIApAQCAtMTgyOCw3ICsxODI4LDcgQEAgSlNW
YWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBkb3UKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKHN0YXJ0RGF0ZSk7
CiAgICAgVU5VU0VEX1BBUkFNKGVuZERhdGUpOwotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3MpOworICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUg
aW50ZXJ2YWwiX3N0cik7CiAgICAgcmV0dXJuIHsgfTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0
Q29uc3RydWN0b3IuY3BwCmluZGV4IGI0NTFlZTA5YjFkZGYxN2FmNTcyYWM5YTRlYmI5MTczZWU2
ZjJiNzMuLjNiODI2MDQ0NDE0YmRkYzMwMGIxZmNjMGZjZDlkZjU1YzMzYjBkNzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRp
bWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OkludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKgogCiB2b2lkIEludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZSogZGF0ZVRpbWVGb3JtYXRQ
cm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJEYXRlVGltZUZv
cm1hdCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIkRhdGVUaW1lRm9ybWF0Il9zdHIs
IFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgZGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggZTc0MTJjYzI4MjEyZmJh
OWZhMjE4OWRmNjQ0NjhhNGIzZmMzODEwYS4uNDNmMmQ0YjE3NDFkMWJhODAyMTkyMWJkODYyZWZm
OTliMzdkMDFlMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0xMzksNyArMTM5LDcg
QEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdl
dHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWMKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOwogICAgIC8vIDIuIFJldHVybklmQWJydXB0KGR0ZikuCiAgICAgaWYgKFVOTElLRUxZ
KCFkdGYpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfc3RyKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rp
b24qIGJvdW5kRm9ybWF0ID0gZHRmLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDMuIElmIHRoZSBb
W2JvdW5kRm9ybWF0XV0gaW50ZXJuYWwgc2xvdCBvZiB0aGlzIERhdGVUaW1lRm9ybWF0IG9iamVj
dCBpcyB1bmRlZmluZWQsCkBAIC0xNDcsNyArMTQ3LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2Jq
ZWMKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGR0Zi0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcgYnVpbHQtaW4gZnVuY3Rpb24g
b2JqZWN0IGFzIGRlZmluZWQgaW4gMTIuMy40LgogICAgICAgICAvLyBiLiBUaGUgdmFsdWUgb2Yg
RuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDEuIChOb3RlOiBG4oCZcyBsZW5ndGggcHJvcGVydHkg
d2FzIDAgaW4gRUNNQS00MDIgMS4wKQotICAgICAgICBKU0Z1bmN0aW9uKiB0YXJnZXRPYmplY3Qg
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgImZvcm1hdCJfcywgaW50
bERhdGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CisgICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCAiZm9ybWF0Il9zdHIsIGludGxEYXRlVGltZUZvcm1hdEZ1bmNGb3JtYXREYXRl
VGltZSwgTm9JbnRyaW5zaWMpOwogICAgICAgICAvLyBjLiBMZXQgYmYgYmUgQm91bmRGdW5jdGlv
bkNyZWF0ZShGLCDCq3RoaXMgdmFsdWXCuykuCiAgICAgICAgIGJvdW5kRm9ybWF0ID0gSlNCb3Vu
ZEZ1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdGFyZ2V0T2JqZWN0LCBkdGYsIG51
bGxwdHIsIDEsIG51bGxwdHIpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE2OSw3ICsxNjksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMsIChKU0ds
b2JhbAogICAgIC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rpb25zLgogICAgIGF1dG8q
IGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRpbWVGb3JtYXQqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFkYXRlVGltZUZvcm1h
dCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFy
dHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOworICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQiX3N0cikpOwogCiAgICAgSlNW
YWx1ZSBkYXRlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBkb3VibGUgdmFsdWUgPSBJ
bnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBkYXRl
KTsKQEAgLTE4NywyMCArMTg3LDIwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0
ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2UsIChKU0dsb2JhbE9iCiAgICAgLy8g
RG8gbm90IHVzZSB1bndyYXBGb3JPbGRGdW5jdGlvbnMuCiAgICAgYXV0byogZGF0ZVRpbWVGb3Jt
YXQgPSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRhdGVUaW1lRm9ybWF0KSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0UmFuZ2UgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBEYXRlVGltZUZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRSYW5nZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIERhdGVUaW1lRm9ybWF0Il9zdHIpKTsKIAogICAgIEpTVmFsdWUgc3RhcnREYXRlVmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgZW5kRGF0ZVZhbHVlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKIAogICAgIGlmIChzdGFydERhdGVWYWx1ZS5pc1VuZGVm
aW5lZCgpIHx8IGVuZERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUg
aXMgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfc3RyKTsK
IAogICAgIGRvdWJsZSBzdGFydERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVU
aW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBzdGFydERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZv
cm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4g
ZW5kRGF0ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIGlz
IGxhcmdlciB0aGFuIGVuZERhdGUiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0UmFuZ2UoZ2xvYmFsT2Jq
ZWN0LCBzdGFydERhdGUsIGVuZERhdGUpKSk7CiB9CkBAIC0yMTQsMjAgKzIxNCwyMCBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1h
dFJhbmdlVG9QYXJ0cywgKEpTRwogICAgIC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rp
b25zLgogICAgIGF1dG8qIGRhdGVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsRGF0ZVRp
bWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZ
KCFkYXRlVGltZUZvcm1hdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLmZvcm1hdFJhbmdlVG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVU
aW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LmZvcm1hdFJhbmdlVG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVUaW1l
Rm9ybWF0Il9zdHIpKTsKIAogICAgIEpTVmFsdWUgc3RhcnREYXRlVmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgZW5kRGF0ZVZhbHVlID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgxKTsKIAogICAgIGlmIChzdGFydERhdGVWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZERh
dGVWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUgaXMgdW5kZWZpbmVkIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InN0YXJ0RGF0ZSBvciBlbmREYXRlIGlzIHVuZGVmaW5lZCJfc3RyKTsKIAogICAgIGRvdWJsZSBz
dGFydERhdGUgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhhbmRsZURhdGVUaW1lVmFsdWUoZ2xvYmFs
T2JqZWN0LCBzdGFydERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKICAgICBkb3VibGUgZW5kRGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0
ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIGVuZERhdGVWYWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoc3RhcnREYXRlID4gZW5kRGF0ZSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERh
dGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIGlzIGxhcmdlciB0aGFuIGVu
ZERhdGUiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShkYXRlVGltZUZvcm1hdC0+Zm9ybWF0UmFuZ2VUb1BhcnRzKGdsb2JhbE9iamVjdCwgc3Rh
cnREYXRlLCBlbmREYXRlKSkpOwogfQpAQCAtMjQyLDcgKzI0Miw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25z
LCAoSlNHbG9iCiAgICAgYXV0byogZGF0ZVRpbWVGb3JtYXQgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElL
RUxZKCFkYXRlVGltZUZvcm1hdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVU
aW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBl
LnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVUaW1lRm9y
bWF0Il9zdHIpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGRhdGVUaW1lRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1l
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNw
cAppbmRleCBmYmU4NmU0YjdlYWEwNjNjYmI2NDYzYjlhMWZhOWY3MWIyOTE4N2U0Li5lZDExOWIw
MTA1Y2ZjYmVlMWIzYWY1ZTg5MmEyOTNhN2QzMmQ2ODkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcApAQCAtODksNyArODksNyBA
QCB2b2lkIEludGxEaXNwbGF5TmFtZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2Nh
bGU7CiAgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGlzcGxheU5hbWVz
IGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZXMgZHVlIHRv
IGludmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05OSw3
ICs5OSw3IEBAIHZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6ZURpc3BsYXlOYW1lcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgYXV0byB0eXBlID0gaW50bE9w
dGlvbjxzdGQ6Om9wdGlvbmFsPFR5cGU+PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3Bl
cnR5TmFtZXMtPnR5cGUsIHsgeyAibGFuZ3VhZ2UiX3MsIFR5cGU6Okxhbmd1YWdlIH0sIHsgInJl
Z2lvbiJfcywgVHlwZTo6UmVnaW9uIH0sIHsgInNjcmlwdCJfcywgVHlwZTo6U2NyaXB0IH0sIHsg
ImN1cnJlbmN5Il9zLCBUeXBlOjpDdXJyZW5jeSB9LCB7ICJjYWxlbmRhciJfcywgVHlwZTo6Q2Fs
ZW5kYXIgfSwgeyAiZGF0ZVRpbWVGaWVsZCJfcywgVHlwZTo6RGF0ZVRpbWVGaWVsZCB9IH0sICJ0
eXBlIG11c3QgYmUgZWl0aGVyIFwibGFuZ3VhZ2VcIiwgXCJyZWdpb25cIiwgXCJzY3JpcHRcIiwg
XCJjdXJyZW5jeVwiLCBcImNhbGVuZGFyXCIsIG9yIFwiZGF0ZVRpbWVGaWVsZFwiIl9zLCBzdGQ6
Om51bGxvcHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAg
aWYgKCF0eXBlKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJ0eXBlIG11c3Qgbm90IGJlIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0eXBlIG11c3Qgbm90IGJlIHVuZGVmaW5lZCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3R5cGUgPSB0eXBlLnZhbHVlKCk7CkBAIC0x
MzQsNyArMTM0LDcgQEAgdm9pZCBJbnRsRGlzcGxheU5hbWVzOjppbml0aWFsaXplRGlzcGxheU5h
bWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBtX2xvY2FsZUNTdHJp
bmcgPSBtX2xvY2FsZS51dGY4KCk7CiAgICAgbV9kaXNwbGF5TmFtZXMgPSBzdGQ6OnVuaXF1ZV9w
dHI8VUxvY2FsZURpc3BsYXlOYW1lcywgVUxvY2FsZURpc3BsYXlOYW1lc0RlbGV0ZXI+KHVsZG5f
b3BlbkZvckNvbnRleHQobV9sb2NhbGVDU3RyaW5nLmRhdGEoKSwgY29udGV4dHMsIFdURl9BUlJB
WV9MRU5HVEgoY29udGV4dHMpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGlzcGxheU5hbWVzIl9z
dHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtMTk5LDcgKzE5OSw3IEBAIEpTVmFs
dWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgc3dpdGNoIChtX3R5cGUpIHsKICAgICBjYXNlIFR5cGU6
Okxhbmd1YWdlOiB7CiAgICAgICAgIGlmICghaXNVbmljb2RlTGFuZ3VhZ2VJZChjb2RlKSkgewot
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVu
dCBpcyBub3QgYSBsYW5ndWFnZSBpZCJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkIl9zdHIp
OwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBjYW5vbmljYWxD
b2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIFdURk1vdmUoY29k
ZSkpOwpAQCAtMjA5LDcgKzIwOSw3IEBAIEpTVmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgfQog
ICAgIGNhc2UgVHlwZTo6UmVnaW9uOiB7CiAgICAgICAgIGlmICghaXNVbmljb2RlUmVnaW9uU3Vi
dGFnKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWciX3MpOworICAgICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBy
ZWdpb24gc3VidGFnIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQog
ICAgICAgICBjYW5vbmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyht
X3R5cGUsIFdURk1vdmUoY29kZSkpOwpAQCAtMjE4LDcgKzIxOCw3IEBAIEpTVmFsdWUgSW50bERp
c3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2Rl
VmFsdWUpIGNvCiAgICAgfQogICAgIGNhc2UgVHlwZTo6U2NyaXB0OiB7CiAgICAgICAgIGlmICgh
aXNVbmljb2RlU2NyaXB0U3VidGFnKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWci
X3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJh
cmd1bWVudCBpcyBub3QgYSBzY3JpcHQgc3VidGFnIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICAgICAgfQogICAgICAgICBjYW5vbmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29k
ZUZvckRpc3BsYXlOYW1lcyhtX3R5cGUsIFdURk1vdmUoY29kZSkpOwpAQCAtMjM0LDcgKzIzNCw3
IEBAIEpTVmFsdWUgSW50bERpc3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUpIGNvCiAgICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC1pbnRsLWRpc3BsYXluYW1lcy8jc2VjLWNhbm9uaWNhbGNvZGVmb3JkaXNwbGF5bmFt
ZXMKICAgICAgICAgLy8gNS4gSWYgISBJc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoY29kZSkgaXMg
ZmFsc2UsIHRocm93IGEgUmFuZ2VFcnJvciBleGNlcHRpb24uCiAgICAgICAgIGlmICghaXNXZWxs
Rm9ybWVkQ3VycmVuY3lDb2RlKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJl
bmN5IGNvZGUiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zdHIp
OwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoY29k
ZS5pc0FsbEFTQ0lJKCkpOwpAQCAtMjY0LDcgKzI2NCw3IEBAIEpTVmFsdWUgSW50bERpc3BsYXlO
YW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2RlVmFsdWUp
IGNvCiAgICAgICAgIFVCb29sIGlzQ2hvaWNlRm9ybWF0ID0gZmFsc2U7IC8vIFdlIG5lZWQgdG8g
cGFzcyB0aGlzLCBvdGhlcndpc2UsIHdlIHdpbGwgc2VlIGNyYXNoIGluIElDVSA2NC4KICAgICAg
ICAgY29uc3QgVUNoYXIqIHJlc3VsdCA9IHVjdXJyX2dldE5hbWUoY3VycmVuY3ksIG1fbG9jYWxl
Q1N0cmluZy5kYXRhKCksIHN0eWxlLCAmaXNDaG9pY2VGb3JtYXQsICZsZW5ndGgsICZzdGF0dXMp
OwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBxdWVyeSBhIGRpc3Bs
YXkgbmFtZS4iX3MpOworICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUuIl9zdHIpOwogICAg
ICAgICAvLyB1Y3Vycl9nZXROYW1lIHJldHVybnMgVV9VU0lOR19ERUZBVUxUX1dBUk5JTkcgaWYg
dGhlIGRpc3BsYXktbmFtZSBpcyBub3QgZm91bmQuIEJ1dCBVX1VTSU5HX0RFRkFVTFRfV0FSTklO
RyBpcyByZXR1cm5lZCBldmVuIGlmCiAgICAgICAgIC8vIG5hcnJvdyBhbmQgc2hvcnQgcmVzdWx0
cyBhcmUgdGhlIHNhbWU6IG5hcnJvdyAiVVNEIiBpcyAiJCIgd2l0aCBVX1VTSU5HX0RFRkFVTFRf
V0FSTklORyBzaW5jZSBzaG9ydCAiVVNEIiBpcyBhbHNvICIkIi4gV2UgbmVlZCB0byBjaGVjawog
ICAgICAgICAvLyByZXN1bHQgPT0gY3VycmVuY3kgdG8gY2hlY2sgd2hldGhlciBJQ1UgYWN0dWFs
bHkgZmFpbGVkIHRvIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgZGlzcGxheS1uYW1lLiBUaGlzIHBv
aW50ZXIgY29tcGFyaXNvbiBpcyBlbnN1cmVkIGJ5CkBAIC0yNzcsNyArMjc3LDcgQEAgSlNWYWx1
ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGNvZGVWYWx1ZSkgY28KICAgICBjYXNlIFR5cGU6OkNhbGVuZGFyOiB7CiAgICAgICAgIC8v
IGEuIElmIGNvZGUgZG9lcyBub3QgbWF0Y2ggdGhlIFVuaWNvZGUgTG9jYWxlIElkZW50aWZpZXIg
dHlwZSBub250ZXJtaW5hbCwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2VwdGlvbi4KICAgICAgICAg
aWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShjb2RlKSkgewotICAgICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBj
YWxlbmRhciBjb2RlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgY2FsZW5kYXIgY29kZSJfc3RyKTsKICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgY2Fub25pY2FsQ29kZSA9IGNh
bm9uaWNhbGl6ZUNvZGVGb3JEaXNwbGF5TmFtZXMobV90eXBlLCBXVEZNb3ZlKGNvZGUpKTsKQEAg
LTMxOSw3ICszMTksNyBAQCBKU1ZhbHVlIEludGxEaXNwbGF5TmFtZXM6Om9mKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY29kZVZhbHVlKSBjbwogCiAgICAgICAgIGF1dG8g
ZmllbGQgPSBpc1ZhbGlkRGF0ZVRpbWVGaWVsZENvZGUoY29kZSk7CiAgICAgICAgIGlmICghZmll
bGQpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
YXJndW1lbnQgaXMgbm90IGEgZGF0ZVRpbWVGaWVsZCBjb2RlIl9zKTsKKyAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgZGF0
ZVRpbWVGaWVsZCBjb2RlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAg
fQogCkBAIC0zNDcsNyArMzQ3LDcgQEAgSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY28KICAgICAgICAg
Ly8gV2Ugc2hvdWxkIHJldHVybiB1bmRlZmluZWQgaWYgZmFsbGJhY2sgaXMgIm5vbmUiLiBPdGhl
cndpc2UsIHdlIHNob3VsZCByZXR1cm4gaW5wdXQgdmFsdWUuCiAgICAgICAgIGlmIChzdGF0dXMg
PT0gVV9JTExFR0FMX0FSR1VNRU5UX0VSUk9SKQogICAgICAgICAgICAgcmV0dXJuIChtX2ZhbGxi
YWNrID09IEZhbGxiYWNrOjpOb25lKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgU3Ry
aW5nKGNhbm9uaWNhbENvZGUuZGF0YSgpLCBjYW5vbmljYWxDb2RlLmxlbmd0aCgpKSk7Ci0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJf
c3RyKTsKICAgICB9CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoYnVmZmVyKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcAppbmRleCBlYTA1MWJiMzRjNWUxZDkyMmQ3YmYwODRm
MTNhNWU0NmYxMGM0MzI0Li44NzUzMjEwNWRlOTY3Y2VlM2EzZmJjNGVkOWY0NmY1YzcwOTlmMjg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW50bERpc3Bs
YXlOYW1lc0NvbnN0cnVjdG9yOjpJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnUKIAogdm9pZCBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZSogZGlzcGxheU5hbWVz
UHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAyLCAiRGlzcGxheU5h
bWVzIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAyLCAiRGlzcGxheU5hbWVzIl9zdHIsIFBy
b3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
ZGlzcGxheU5hbWVzUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CiAgICAgZGlzcGxheU5hbWVzUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5j
cHAKaW5kZXggNDVhNjIwNWQxMmI4ZDhiMzZkMmY4YmFhOWU3NzNlZTQxMmMwMjU0Mi4uMzJhYjg2
MWZmNTliY2MxNDUwZjY4MjdiYjE0OGY1NWZkMjkxOGZkMSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5j
cHAKQEAgLTgxLDcgKzgxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxEaXNwbGF5
TmFtZXNQcm90b3R5cGVGdW5jT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGF1dG8q
IGRpc3BsYXlOYW1lcyA9IGpzRHluYW1pY0Nhc3Q8SW50bERpc3BsYXlOYW1lcyo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRpc3BsYXlOYW1lcykKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGlzcGxheU5h
bWVzLnByb3RvdHlwZS5vZiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERpc3BsYXlOYW1l
cyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUub2YgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBEaXNwbGF5TmFtZXMiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShkaXNwbGF5TmFtZXMtPm9mKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KQEAgLTk0LDcgKzk0LDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKGludGxEaXNwbGF5TmFtZXNQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAo
SlNHbG9iYWwKIAogICAgIGF1dG8qIGRpc3BsYXlOYW1lcyA9IGpzRHluYW1pY0Nhc3Q8SW50bERp
c3BsYXlOYW1lcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRpc3Bs
YXlOYW1lcykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkludGwuRGlzcGxheU5hbWVzLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBEaXNwbGF5TmFtZXMiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMu
cHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERp
c3BsYXlOYW1lcyJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGRpc3BsYXlOYW1lcy0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9iamVjdCkpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9y
bWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmNw
cAppbmRleCBmNWMzMDU3MDk4Yzk0OGYzMTRjZjFiY2ZkNjljZGU4OGQyNWU5MzNmLi44Mjc0NjJk
NThmZGM1ODhiMGQxNjljZjU5YmQzNTkyZGZlMzRjMGFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAg
dm9pZCBJbnRsTGlzdEZvcm1hdDo6aW5pdGlhbGl6ZUxpc3RGb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZQogCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2NhbGU7
CiAgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTGlzdEZvcm1hdCBkdWUg
dG8gaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTGlzdEZvcm1hdCBkdWUgdG8gaW52YWxp
ZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE0NiwxMSArMTQ2
LDExIEBAIHZvaWQgSW50bExpc3RGb3JtYXQ6OmluaXRpYWxpemVMaXN0Rm9ybWF0KEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVf
WkVST19FUlJPUjsKICAgICBtX2xpc3RGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VUxpc3RGb3Jt
YXR0ZXIsIFVMaXN0Rm9ybWF0dGVyRGVsZXRlcj4odWxpc3RmbXRfb3BlbkZvclR5cGUobV9sb2Nh
bGUudXRmOCgpLmRhdGEoKSwgdG9VTGlzdEZvcm1hdHRlclR5cGUobV90eXBlKSwgdG9VTGlzdEZv
cm1hdHRlcldpZHRoKG1fc3R5bGUpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIExpc3RGb3JtYXQiX3N0
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZWxzZQotICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBJbnRsLkxpc3RGb3JtYXQg
c2luY2UgdGhpcyBmZWF0dXJlIGlzIG5vdCBzdXBwb3J0ZWQgaW4gdGhlIGxpbmtlZCBJQ1UgdmVy
c2lvbiJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBpbml0aWFsaXplIEludGwuTGlzdEZvcm1hdCBzaW5jZSB0aGlzIGZlYXR1cmUgaXMgbm90
IHN1cHBvcnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9zdHIpOwogICAgIHJldHVybjsK
ICNlbmRpZgogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIHN0YXRpYyBWZWN0b3I8U3RyaW5nLCA0PiBz
dHJpbmdMaXN0RnJvbUl0ZXJhYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTCiAg
ICAgZm9yRWFjaEluSXRlcmFibGUoZ2xvYmFsT2JqZWN0LCBpdGVyYWJsZSwgWyZdKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkgewogICAgICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgICAgIGlmICghdmFsdWUu
aXNTdHJpbmcoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkl0ZXJhYmxlIHBhc3NlZCB0byBMaXN0Rm9ybWF0IGluY2x1ZGVzIG5vbiBTdHJpbmci
X3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkl0
ZXJhYmxlIHBhc3NlZCB0byBMaXN0Rm9ybWF0IGluY2x1ZGVzIG5vbiBTdHJpbmciX3N0cik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgU3RyaW5nIGl0ZW0gPSB2YWx1
ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwpAQCAtMjI0LDEyICsyMjQsMTIgQEAgSlNWYWx1
ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgbGlzdCkgY29uc3QKICAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQ7CiAgICAgYXV0
byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxpc3RmbXRfZm9ybWF0LCBt
X2xpc3RGb3JtYXQuZ2V0KCksIGlucHV0LnN0cmluZ1BvaW50ZXJzKCksIGlucHV0LnN0cmluZ0xl
bmd0aHMoKSwgaW5wdXQuc2l6ZSgpLCByZXN1bHQpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9m
IHN0cmluZ3MiX3N0cik7CiAKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQp
KTsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxpc3QpOwotICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmlu
Z3MiX3MpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7CiAjZW5kaWYKIH0KIApAQCAt
MjQ5LDE2ICsyNDksMTYgQEAgSlNWYWx1ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxpc3QKIAogICAgIGF1dG8gcmVz
dWx0ID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWRMaXN0LCBJQ1VEZWxldGVyPHVsaXN0Zm10
X2Nsb3NlUmVzdWx0Pj4odWxpc3RmbXRfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfc3RyKTsKIAogICAgIHVsaXN0Zm10X2Zvcm1hdFN0cmlu
Z3NUb1Jlc3VsdChtX2xpc3RGb3JtYXQuZ2V0KCksIGlucHV0LnN0cmluZ1BvaW50ZXJzKCksIGlu
cHV0LnN0cmluZ0xlbmd0aHMoKSwgaW5wdXQuc2l6ZSgpLCByZXN1bHQuZ2V0KCksICZzdGF0dXMp
OwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3RyaW5n
cyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7CiAKICAgICAvLyBVRm9y
bWF0dGVkVmFsdWUgaXMgb3duZWQgYnkgVUZvcm1hdHRlZExpc3QuIFdlIGRvIG5vdCBuZWVkIHRv
IGNsb3NlIGl0LgogICAgIGF1dG8gZm9ybWF0dGVkVmFsdWUgPSB1bGlzdGZtdF9yZXN1bHRBc1Zh
bHVlKHJlc3VsdC5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3Ry
aW5ncyJfc3RyKTsKIAogICAgIEpTQXJyYXkqIHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2Nh
dGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwgMCk7CiAgICAgaWYgKCFwYXJ0cykKQEAgLTI2Nywx
OSArMjY3LDE5IEBAIEpTVmFsdWUgSW50bExpc3RGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsaXN0CiAgICAgaW50MzJfdCBmb3JtYXR0
ZWRTdHJpbmdMZW5ndGggPSAwOwogICAgIGNvbnN0IFVDaGFyKiBmb3JtYXR0ZWRTdHJpbmdQb2lu
dGVyID0gdWZtdHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZmb3JtYXR0ZWRTdHJpbmdM
ZW5ndGgsICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0
IGxpc3Qgb2Ygc3RyaW5ncyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7
CiAgICAgU3RyaW5nIHJlc3VsdFN0cmluZyhmb3JtYXR0ZWRTdHJpbmdQb2ludGVyLCBmb3JtYXR0
ZWRTdHJpbmdMZW5ndGgpOwogCiAgICAgYXV0byBpdGVyYXRvciA9IHN0ZDo6dW5pcXVlX3B0cjxV
Q29uc3RyYWluZWRGaWVsZFBvc2l0aW9uLCBJQ1VEZWxldGVyPHVjZnBvc19jbG9zZT4+KHVjZnBv
c19vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1h
dCBsaXN0IG9mIHN0cmluZ3MiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zdHIp
OwogCiAgICAgdWNmcG9zX2NvbnN0cmFpbkZpZWxkKGl0ZXJhdG9yLmdldCgpLCBVRklFTERfQ0FU
RUdPUllfTElTVCwgVUxJU1RGTVRfRUxFTUVOVF9GSUVMRCwgJnN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfc3RyKTsKIAotICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOwotICAgIGF1dG8gZWxlbWVudFN0
cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVsZW1lbnQiX3MpOworICAgIGF1dG8gbGl0
ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3N0cik7CisgICAg
YXV0byBlbGVtZW50U3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiZWxlbWVudCJfc3Ry
KTsKIAogICAgIGF1dG8gY3JlYXRlUGFydCA9IFsmXSAoSlNTdHJpbmcqIHR5cGUsIEpTU3RyaW5n
KiB2YWx1ZSkgewogICAgICAgICBKU09iamVjdCogcGFydCA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CkBAIC0yOTMsNyArMjkzLDcgQEAgSlNWYWx1ZSBJbnRsTGlzdEZvcm1h
dDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxp
c3QKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgICBib29sIG5leHQgPSB1Zm10dmFsX25leHRQ
b3NpdGlvbihmb3JtYXR0ZWRWYWx1ZSwgaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAgICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdz
Il9zKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7CiAgICAgICAgIGlm
ICghbmV4dCkKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0zMDEsNyArMzAxLDcgQEAgSlNWYWx1
ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGxpc3QKICAgICAgICAgaW50MzJfdCBlbmRJbmRleCA9IDA7CiAgICAgICAg
IHVjZnBvc19nZXRJbmRleGVzKGl0ZXJhdG9yLmdldCgpLCAmYmVnaW5JbmRleCwgJmVuZEluZGV4
LCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9y
bWF0IGxpc3Qgb2Ygc3RyaW5ncyJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdz
Il9zdHIpOwogCiAgICAgICAgIGlmIChwcmV2aW91c0VuZEluZGV4IDwgYmVnaW5JbmRleCkgewog
ICAgICAgICAgICAgYXV0byB2YWx1ZSA9IGpzU3RyaW5nKHZtLCByZXN1bHRTdHJpbmcuc3Vic3Ry
aW5nKHByZXZpb3VzRW5kSW5kZXgsIGJlZ2luSW5kZXggLSBwcmV2aW91c0VuZEluZGV4KSk7CkBA
IC0zMjcsNyArMzI3LDcgQEAgSlNWYWx1ZSBJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxpc3QKICAgICByZXR1cm4gcGFy
dHM7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShsaXN0KTsKLSAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJp
bmdzIl9zKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zdHIpOwogI2VuZGlmCiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0Q29u
c3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNWQwMDg0NTNmZmY2ZmY3YWQ3M2JmNjk2OTZhNTI5NzQ1
MTAwZWZhNS4uNWUyMDFjMThiYTM2YzAxNDFmMzgyMzQyNzVjODcxMjRjOTNmMDcxZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3Jt
YXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW50bExpc3RGb3JtYXRDb25zdHJ1
Y3Rvcjo6SW50bExpc3RGb3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXIKIAogdm9pZCBJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIEludGxMaXN0Rm9ybWF0UHJvdG90eXBlKiBsaXN0Rm9ybWF0UHJvdG90eXBlKQogewotICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiTGlzdEZvcm1hdCJfcywgUHJvcGVydHlBZGRp
dGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgMCwgIkxpc3RGb3JtYXQiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBsaXN0Rm9ybWF0UHJvdG90eXBlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgbGlzdEZvcm1hdFByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTGlzdEZvcm1hdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5jcHAKaW5kZXggYmY3MzdhYzViYTRhYmUxMjFiZWM2
MTVmODMwZjJiYjNjNjA2YjBiZi4uZmUzZGM3ZTFmNmY4MjliNmQzYzhmN2NjNDIyOTMxM2ZiNjQw
NDdiMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RG
b3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcApAQCAtODMsNyArODMsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bExpc3RGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0LCAoSlNHbG9iYWxP
YmplY3QqIGdsbwogCiAgICAgYXV0byogbGlzdEZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bExp
c3RGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsaXN0Rm9y
bWF0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5MaXN0Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTGlzdEZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTGlzdEZvcm1hdCJfc3RyKTsKIAogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxpc3RGb3JtYXQtPmZvcm1hdChn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CkBAIC05Niw3ICs5Niw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTGlzdEZvcm1hdFByb3RvdHlwZUZ1bmNG
b3JtYXRUb1BhcnRzLCAoSlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBsaXN0Rm9ybWF0ID0ganNE
eW5hbWljQ2FzdDxJbnRsTGlzdEZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
ICAgICBpZiAoIWxpc3RGb3JtYXQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxpc3RGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFy
dHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTGlzdEZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IExpc3RGb3JtYXQiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShsaXN0Rm9ybWF0LT5mb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KQEAgLTEwOSw3ICsxMDksNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bExpc3RGb3JtYXRQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAo
SlNHbG9iYWxPYgogCiAgICAgYXV0byogbGlzdEZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bExp
c3RGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsaXN0Rm9y
bWF0KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5MaXN0Rm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBMaXN0Rm9ybWF0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTGlzdEZvcm1hdC5wcm90b3R5cGUu
cmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTGlzdEZvcm1hdCJf
c3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxp
c3RGb3JtYXQtPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuY3BwCmluZGV4IGZjY2FkMzExODlhOGFk
N2UwMDI0OWQ0OTIwYzlhYThiYzYwNDdkYTUuLjM4MGMwMmM5ZTk4NzQ4NTA1YmIzZWU2NzA2M2Qx
OGQ3NGQ2Mzk4YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxMb2NhbGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2Nh
bGUuY3BwCkBAIC0yNDcsMjggKzI0NywyOCBAQCB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxpemVM
b2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB0YQogCiAg
ICAgTG9jYWxlSURCdWlsZGVyIGxvY2FsZUlEOwogICAgIGlmICghbG9jYWxlSUQuaW5pdGlhbGl6
ZSh0YWcpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW52YWxpZCBsYW5ndWFnZSB0YWciX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImludmFsaWQgbGFuZ3VhZ2UgdGFnIl9zdHIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgU3RyaW5nIGxhbmd1YWdlID0gaW50bFN0cmluZ09wdGlvbihnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmxhbmd1YWdlLCB7IH0sIG51bGxw
dHIsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAg
ICAgaWYgKCFsYW5ndWFnZS5pc051bGwoKSAmJiAhaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcobGFu
Z3VhZ2UpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
bGFuZ3VhZ2UgaXMgbm90IGEgd2VsbC1mb3JtZWQgbGFuZ3VhZ2UgdmFsdWUiX3MpOworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImxhbmd1YWdlIGlzIG5vdCBh
IHdlbGwtZm9ybWVkIGxhbmd1YWdlIHZhbHVlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgU3RyaW5nIHNjcmlwdCA9IGludGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5zY3JpcHQsIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIXNjcmlw
dC5pc051bGwoKSAmJiAhaXNVbmljb2RlU2NyaXB0U3VidGFnKHNjcmlwdCkpIHsKLSAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzY3JpcHQgaXMgbm90IGEgd2Vs
bC1mb3JtZWQgc2NyaXB0IHZhbHVlIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzY3JpcHQgaXMgbm90IGEgd2VsbC1mb3JtZWQgc2NyaXB0IHZhbHVl
Il9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgU3RyaW5nIHJlZ2lvbiA9IGlu
dGxTdHJpbmdPcHRpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5y
ZWdpb24sIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKICAgICBpZiAoIXJlZ2lvbi5pc051bGwoKSAmJiAhaXNVbmljb2RlUmVn
aW9uU3VidGFnKHJlZ2lvbikpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJyZWdpb24gaXMgbm90IGEgd2VsbC1mb3JtZWQgcmVnaW9uIHZhbHVlIl9zKTsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpb24gaXMg
bm90IGEgd2VsbC1mb3JtZWQgcmVnaW9uIHZhbHVlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0yNzksNyArMjc5LDcgQEAgdm9pZCBJbnRsTG9jYWxlOjppbml0aWFsaXplTG9j
YWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdGEKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghY2FsZW5kYXIuaXNO
dWxsKCkpIHsKICAgICAgICAgaWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShjYWxl
bmRhcikpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiY2FsZW5kYXIgaXMgbm90IGEgd2VsbC1mb3JtZWQgY2FsZW5kYXIgdmFsdWUiX3MpOworICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRhciBp
cyBub3QgYSB3ZWxsLWZvcm1lZCBjYWxlbmRhciB2YWx1ZSJfc3RyKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVJRC5zZXRLZXl3b3JkVmFsdWUoImNhbGVu
ZGFyIl9zLCBjYWxlbmRhcik7CkBAIC0yODksNyArMjg5LDcgQEAgdm9pZCBJbnRsTG9jYWxlOjpp
bml0aWFsaXplTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmlu
ZyYgdGEKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICgh
Y29sbGF0aW9uLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRp
ZmllclR5cGUoY29sbGF0aW9uKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJjb2xsYXRpb24gaXMgbm90IGEgd2VsbC1mb3JtZWQgY29sbGF0aW9u
IHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiY29sbGF0aW9uIGlzIG5vdCBhIHdlbGwtZm9ybWVkIGNvbGxhdGlvbiB2YWx1ZSJfc3Ry
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVJRC5zZXRL
ZXl3b3JkVmFsdWUoImNvbGxhdGlvbiJfcywgY29sbGF0aW9uKTsKQEAgLTMxNCw3ICszMTQsNyBA
QCB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxpemVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RyaW5nJiB0YQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHZvaWQoKSk7CiAgICAgaWYgKCFudW1iZXJpbmdTeXN0ZW0uaXNOdWxsKCkpIHsKICAgICAgICAg
aWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShudW1iZXJpbmdTeXN0ZW0pKSB7Ci0g
ICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm51bWJlcmlu
Z1N5c3RlbSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBudW1iZXJpbmcgc3lzdGVtIHZhbHVlIl9zKTsK
KyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibnVtYmVy
aW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmluZyBzeXN0ZW0gdmFsdWUiX3N0
cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgbG9jYWxlSUQuc2V0
S2V5d29yZFZhbHVlKCJudW1iZXJzIl9zLCBudW1iZXJpbmdTeXN0ZW0pOwpAQCAtMzIyLDcgKzMy
Miw3IEBAIHZvaWQgSW50bExvY2FsZTo6aW5pdGlhbGl6ZUxvY2FsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHRhCiAKICAgICBtX2xvY2FsZUlEID0gbG9jYWxl
SUQudG9DYW5vbmljYWwoKTsKICAgICBpZiAobV9sb2NhbGVJRC5pc051bGwoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxp
emUgTG9jYWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIExvY2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIH0KQEAgLTU1OCw3ICs1NTgsNyBAQCBKU0FycmF5KiBJbnRsTG9jYWxlOjpjYWxlbmRh
cnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBjb25zdGV4cHIgYm9vbCBjb21t
b25seVVzZWQgPSB0cnVlOwogICAgIGF1dG8gY2FsZW5kYXJzID0gc3RkOjp1bmlxdWVfcHRyPFVF
bnVtZXJhdGlvbiwgSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjYWxfZ2V0S2V5d29yZFZhbHVl
c0ZvckxvY2FsZSgiY2FsZW5kYXIiLCBtX2xvY2FsZUlELmRhdGEoKSwgY29tbW9ubHlVc2VkLCAm
c3RhdHVzKSk7CiAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0
cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNTcyLDcgKzU3Miw3IEBA
IEpTQXJyYXkqIEludGxMb2NhbGU6OmNhbGVuZGFycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKFdURk1vdmUoY2FsZW5kYXIpKTsKICAg
ICB9CiAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0cik7CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNTk2LDcgKzU5Niw3IEBAIEpTQXJy
YXkqIEludGxMb2NhbGU6OmNvbGxhdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBjb25zdGV4cHIgYm9vbCBjb21tb25seVVzZWQgPSB0cnVlOwogICAgIGF1dG8gZW51bWVy
YXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVlbnVtX2Ns
b3NlPj4odWNvbF9nZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlKCJjb2xsYXRpb24iLCBtX2xvY2Fs
ZUlELmRhdGEoKSwgY29tbW9ubHlVc2VkLCAmc3RhdHVzKSk7CiAgICAgaWYgKCFVX1NVQ0NFU1Mo
c3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIApAQCAtNjEzLDcgKzYxMyw3IEBAIEpTQXJyYXkqIEludGxMb2NhbGU6OmNvbGxhdGlv
bnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAgICAgICAgIGVsZW1lbnRzLmFw
cGVuZChXVEZNb3ZlKGNvbGxhdGlvbikpOwogICAgIH0KICAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0
dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZh
bGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC02NDMsNyArNjQzLDcgQEAgSlNBcnJheSogSW50bExvY2FsZTo6aG91ckN5Y2xlcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHBhdHRl
cm47CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRwZ19nZXRC
ZXN0UGF0dGVybldpdGhPcHRpb25zLCBnZW5lcmF0b3IuZ2V0KCksIHNrZWxldG9uLCAxLCBVREFU
UEdfTUFUQ0hfSE9VUl9GSUVMRF9MRU5HVEgsIHBhdHRlcm4pOwogICAgIGlmICghVV9TVUNDRVNT
KHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
ICAgICB9CiAKQEAgLTY1MywxOSArNjUzLDE5IEBAIEpTQXJyYXkqIEludGxMb2NhbGU6OmhvdXJD
eWNsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBjYXNlIEludGxEYXRlVGlt
ZUZvcm1hdDo6SG91ckN5Y2xlOjpOb25lOgogICAgICAgICBicmVhazsKICAgICBjYXNlIEludGxE
YXRlVGltZUZvcm1hdDo6SG91ckN5Y2xlOjpIMTE6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5k
KCJoMTEiX3MpOworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgxMSJfc3RyKTsKICAgICAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xv
YmFsT2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICBjYXNlIEludGxEYXRl
VGltZUZvcm1hdDo6SG91ckN5Y2xlOjpIMTI6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJo
MTIiX3MpOworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgxMiJfc3RyKTsKICAgICAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICBjYXNlIEludGxEYXRlVGlt
ZUZvcm1hdDo6SG91ckN5Y2xlOjpIMjM6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJoMjMi
X3MpOworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgyMyJfc3RyKTsKICAgICAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2Jq
ZWN0LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICBjYXNlIEludGxEYXRlVGltZUZv
cm1hdDo6SG91ckN5Y2xlOjpIMjQ6IHsKLSAgICAgICAgZWxlbWVudHMuYXBwZW5kKCJoMjQiX3Mp
OworICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgyNCJfc3RyKTsKICAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBjcmVhdGVBcnJheUZyb21TdHJpbmdWZWN0b3IoZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGVsZW1lbnRzKSkpOwogICAgIH0KICAgICB9CkBAIC02ODgsNyArNjg4LDcgQEAg
SlNBcnJheSogSW50bExvY2FsZTo6bnVtYmVyaW5nU3lzdGVtcyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1
dG8gbnVtYmVyaW5nU3lzdGVtID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJpbmdTeXN0ZW0sIElD
VURlbGV0ZXI8dW51bXN5c19jbG9zZT4+KHVudW1zeXNfb3BlbihtX2xvY2FsZUlELmRhdGEoKSwg
JnN0YXR1cykpOwogICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9z
dHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgZWxlbWVudHMuYXBwZW5k
KHVudW1zeXNfZ2V0TmFtZShudW1iZXJpbmdTeXN0ZW0uZ2V0KCkpKTsKQEAgLTcxMSw3ICs3MTEs
NyBAQCBKU1ZhbHVlIEludGxMb2NhbGU6OnRpbWVab25lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8g
ZW51bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVl
bnVtX2Nsb3NlPj4odWNhbF9vcGVuVGltZVpvbmVJREVudW1lcmF0aW9uKFVDQUxfWk9ORV9UWVBF
X0NBTk9OSUNBTCwgcmVnaW9uLnV0ZjgoKS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAg
ICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTcyMCw3ICs3MjAsNyBAQCBKU1ZhbHVlIEludGxMb2Nh
bGU6OnRpbWVab25lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHdoaWxlICgo
Y29sbGF0aW9uID0gdWVudW1fbmV4dChlbnVtZXJhdGlvbi5nZXQoKSwgJmxlbmd0aCwgJnN0YXR1
cykpICYmIFVfU1VDQ0VTUyhzdGF0dXMpKQogICAgICAgICBlbGVtZW50cy5jb25zdHJ1Y3RBbmRB
cHBlbmQoY29sbGF0aW9uLCBsZW5ndGgpOwogICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9j
YWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImlu
dmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNzM1
LDcgKzczNSw3IEBAIEpTT2JqZWN0KiBJbnRsTG9jYWxlOjp0ZXh0SW5mbyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwog
ICAgIFVMYXlvdXRUeXBlIGxheW91dCA9IHVsb2NfZ2V0Q2hhcmFjdGVyT3JpZW50YXRpb24obV9s
b2NhbGVJRC5kYXRhKCksICZzdGF0dXMpOwogICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9j
YWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImlu
dmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAg
LTc0MywxNiArNzQzLDE2IEBAIEpTT2JqZWN0KiBJbnRsTG9jYWxlOjp0ZXh0SW5mbyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHN3aXRjaCAobGF5b3V0KSB7CiAgICAgZGVmYXVs
dDoKICAgICBjYXNlIFVMT0NfTEFZT1VUX0xUUjoKLSAgICAgICAgbGF5b3V0U3RyaW5nID0ganNT
dHJpbmcodm0sICJsdHIiX3MpOworICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwg
Imx0ciJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVTE9DX0xBWU9VVF9SVEw6Ci0g
ICAgICAgIGxheW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAicnRsIl9zKTsKKyAgICAgICAgbGF5
b3V0U3RyaW5nID0ganNTdHJpbmcodm0sICJydGwiX3N0cik7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgVUxPQ19MQVlPVVRfVFRCOgotICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2
bSwgInR0YiJfcyk7CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAidHRiIl9z
dHIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFVMT0NfTEFZT1VUX0JUVDoKLSAgICAgICAg
bGF5b3V0U3RyaW5nID0ganNTdHJpbmcodm0sICJidHQiX3MpOworICAgICAgICBsYXlvdXRTdHJp
bmcgPSBqc1N0cmluZyh2bSwgImJ0dCJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBA
IC03NjksNyArNzY5LDcgQEAgSlNPYmplY3QqIEludGxMb2NhbGU6OndlZWtJbmZvKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJS
T1I7CiAgICAgYXV0byBjYWxlbmRhciA9IHN0ZDo6dW5pcXVlX3B0cjxVQ2FsZW5kYXIsIElDVURl
bGV0ZXI8dWNhbF9jbG9zZT4+KHVjYWxfb3BlbihudWxscHRyLCAwLCBtX2xvY2FsZUlELmRhdGEo
KSwgVUNBTF9ERUZBVUxULCAmc3RhdHVzKSk7CiAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBs
b2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApA
QCAtODIxLDcgKzgyMSw3IEBAIEpTT2JqZWN0KiBJbnRsTG9jYWxlOjp3ZWVrSW5mbyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGZvciAoaW50MzJfdCBkYXkgPSAxOyBkYXkgPD0g
NzsgKytkYXkpIHsKICAgICAgICAgVUNhbGVuZGFyV2Vla2RheVR5cGUgdHlwZSA9IGNhbm9uaWNh
bGl6ZURheU9mV2Vla1R5cGUodWNhbF9nZXREYXlPZldlZWtUeXBlKGNhbGVuZGFyLmdldCgpLCBj
b252ZXJ0TW9uZGF5QmFzZWREYXlUb1VDYWxlbmRhckRheXNPZldlZWsoZGF5KSwgJnN0YXR1cykp
OwogICAgICAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxl
Il9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAg
c3dpdGNoICh0eXBlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcAppbmRleCAzNzY1M2JiMzcxMzk1NzcyMjY1ZWFl
ZWMzZTExNWRiMGYxOGViYmJjLi5lMjUyNWYxNDkyNzQ1NWE5YjgxNWVjYTZkZWMwYTgzOGQ4ZTIz
ZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
b2NhbGVDb25zdHJ1Y3Rvci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgSW50bExvY2FsZUNvbnN0cnVj
dG9yOjpJbnRsTG9jYWxlQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkK
IAogdm9pZCBJbnRsTG9jYWxlQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50
bExvY2FsZVByb3RvdHlwZSogbG9jYWxlUHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCAxLCAiTG9jYWxlIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0
cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiTG9j
YWxlIl9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlv
bik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgbG9jYWxlUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CiAgICAgbG9jYWxlUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KQEAgLTc5LDcgKzc5LDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdEludGxMb2NhbGUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYWwKIAogICAgIEpTVmFsdWUgdGFnID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKICAgICBpZiAoIXRhZy5pc1N0cmluZygpICYmICF0YWcuaXNPYmplY3QoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZp
cnN0IGFyZ3VtZW50IHRvIEludGwuTG9jYWxlIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gb2JqZWN0
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZpcnN0IGFyZ3VtZW50IHRvIEludGwuTG9jYWxlIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4g
b2JqZWN0Il9zdHIpOwogCiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIGxvY2FsZS0+aW5pdGlh
bGl6ZUxvY2FsZShnbG9iYWxPYmplY3QsIHRhZywgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90
eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5
cGUuY3BwCmluZGV4IDA5MGM5MjUzMjMxZDYyMzlmOTQ5ZDM4MjZiMGRmNjQ2NDI2MDkyOGYuLjg5
MDRhMWVmZTdkMWQ0NmFiYTRkMGIwN2EyOTA4YjgxNjE0OWI3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCkBAIC0x
MTgsNyArMTE4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxMb2NhbGVQcm90b3R5
cGVGdW5jTWF4aW1pemUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGF1dG8qIGxvY2Fs
ZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5tYXhpbWl6ZSBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubWF4
aW1pemUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBJ
bnRsTG9jYWxlKiBuZXdMb2NhbGUgPSBJbnRsTG9jYWxlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dC0+bG9jYWxlU3RydWN0dXJlKCkpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKQEAgLTEzNCw3ICsx
MzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bExvY2FsZVByb3RvdHlwZUZ1bmNN
aW5pbWl6ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAg
IGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm1pbmltaXplIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5taW5pbWl6ZSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIEludGxMb2Nh
bGUqIG5ld0xvY2FsZSA9IEludGxMb2NhbGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5sb2Nh
bGVTdHJ1Y3R1cmUoKSk7CiAgICAgc2NvcGUucmVsZWFzZSgpOwpAQCAtMTUwLDcgKzE1MCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTG9jYWxlUHJvdG90eXBlRnVuY1RvU3RyaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWND
YXN0PEludGxMb2NhbGUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFs
b2NhbGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgY29uc3QgU3RyaW5nJiBm
dWxsU3RyaW5nID0gbG9jYWxlLT50b1N0cmluZygpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGZ1bGxTdHJpbmcuaXNFbXB0eSgpID8ganNVbmRlZmluZWQo
KSA6IGpzU3RyaW5nKHZtLCBmdWxsU3RyaW5nKSkpOwpAQCAtMTY0LDcgKzE2NCw3IEBAIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQmFzZU5hbWUsIChK
U0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PElu
dGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9j
YWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmJhc2VOYW1lIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5iYXNlTmFtZSBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIGNvbnN0IFN0cmluZyYgYmFz
ZU5hbWUgPSBsb2NhbGUtPmJhc2VOYW1lKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoYmFzZU5hbWUuaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpz
U3RyaW5nKHZtLCBiYXNlTmFtZSkpKTsKQEAgLTE3OCw3ICsxNzgsNyBAQCBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxP
YmplY3QqIGdsbwogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxl
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
TG9jYWxlLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FsZW5kYXIgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBjb25zdCBTdHJpbmcmIGNhbGVuZGFyID0g
bG9jYWxlLT5jYWxlbmRhcigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNhbGVuZGFyLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZt
LCBjYWxlbmRhcikpKTsKQEAgLTE5Miw3ICsxOTIsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckNhbGVuZGFycywgKEpTR2xvYmFsT2JqZWN0KiBn
bAogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnBy
b3RvdHlwZS5jYWxlbmRhcnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFycyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIExvY2FsZSJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGxvY2FsZS0+Y2FsZW5kYXJzKGdsb2JhbE9iamVjdCkpKTsKIH0KQEAgLTIwNSw3
ICsyMDUsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckNhc2VGaXJzdCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0byogbG9jYWxlID0g
anNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUp
KTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNh
c2VGaXJzdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAg
IGNvbnN0IFN0cmluZyYgY2FzZUZpcnN0ID0gbG9jYWxlLT5jYXNlRmlyc3QoKTsKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYXNlRmlyc3QuaXNOdWxsKCkg
PyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNhc2VGaXJzdCkpKTsKQEAgLTIxOSw3ICsy
MTksNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRl
ckNvbGxhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0byogbG9jYWxlID0ganNE
eW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
ICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24gY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxh
dGlvbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIGNv
bnN0IFN0cmluZyYgY29sbGF0aW9uID0gbG9jYWxlLT5jb2xsYXRpb24oKTsKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRpb24uaXNOdWxsKCkgPyBq
c1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNvbGxhdGlvbikpKTsKQEAgLTIzMyw3ICsyMzMs
NyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckNv
bGxhdGlvbnMsIChKU0dsb2JhbE9iamVjdCogZwogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5h
bWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb25zIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRp
b25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT5jb2xsYXRpb25z
KGdsb2JhbE9iamVjdCkpKTsKIH0KQEAgLTI0Niw3ICsyNDYsNyBAQCBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbAogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9j
YWxlLnByb3RvdHlwZS5ob3VyQ3ljbGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2Nh
bGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZSBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIGNvbnN0IFN0cmluZyYgaG91ckN5Y2xlID0g
bG9jYWxlLT5ob3VyQ3ljbGUoKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShob3VyQ3ljbGUuaXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmco
dm0sIGhvdXJDeWNsZSkpKTsKQEAgLTI2MCw3ICsyNjAsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIoaW50bExvY2FsZVByb3RvdHlwZUdldHRlckhvdXJDeWNsZXMsIChKU0dsb2JhbE9iamVj
dCogZwogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0s
IEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxl
LnByb3RvdHlwZS5ob3VyQ3ljbGVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxl
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5ob3VyQ3ljbGVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUobG9jYWxlLT5ob3VyQ3ljbGVzKGdsb2JhbE9iamVjdCkpKTsKIH0KQEAg
LTI3Myw3ICsyNzMsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExvY2FsZVByb3Rv
dHlwZUdldHRlck51bWVyaWMsIChKU0dsb2JhbE9iamVjdCogZ2xvYgogCiAgICAgYXV0byogbG9j
YWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlz
VmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmljIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlw
ZS5udW1lcmljIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGxv
Y2FsZS0+bnVtZXJpYygpID09IFRyaVN0YXRlOjpUcnVlKSkpOwogfQpAQCAtMjg2LDcgKzI4Niw3
IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVt
YmVyaW5nU3lzdGVtLCAoSlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFt
aWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbSBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubnVt
YmVyaW5nU3lzdGVtIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwog
CiAgICAgY29uc3QgU3RyaW5nJiBudW1iZXJpbmdTeXN0ZW0gPSBsb2NhbGUtPm51bWJlcmluZ1N5
c3RlbSgpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51
bWJlcmluZ1N5c3RlbS5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgbnVt
YmVyaW5nU3lzdGVtKSkpOwpAQCAtMzAwLDcgKzMwMCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVyaW5nU3lzdGVtcywgKEpTR2xvYmFs
T2JqCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUu
cHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbXMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBM
b2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbXMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUtPm51bWJlcmluZ1N5c3RlbXMoZ2xvYmFs
T2JqZWN0KSkpOwogfQpAQCAtMzEzLDcgKzMxMyw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
UihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTGFuZ3VhZ2UsIChKU0dsb2JhbE9iamVjdCogZ2xv
CiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJv
dG90eXBlLmxhbmd1YWdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuTG9jYWxlLnByb3RvdHlwZS5sYW5ndWFnZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IExvY2FsZSJfc3RyKTsKIAogICAgIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UgPSBsb2NhbGUtPmxh
bmd1YWdlKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
bGFuZ3VhZ2UuaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBsYW5ndWFn
ZSkpKTsKQEAgLTMyNyw3ICszMjcsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bExv
Y2FsZVByb3RvdHlwZUdldHRlclNjcmlwdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAg
YXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5z
Y3JpcHQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUu
cHJvdG90eXBlLnNjcmlwdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3Ry
KTsKIAogICAgIGNvbnN0IFN0cmluZyYgc2NyaXB0ID0gbG9jYWxlLT5zY3JpcHQoKTsKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShzY3JpcHQuaXNFbXB0eSgp
ID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBzY3JpcHQpKSk7CkBAIC0zNDEsNyArMzQx
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJS
ZWdpb24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAgIGF1dG8qIGxvY2FsZSA9IGpzRHlu
YW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCFsb2NhbGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUucmVnaW9uIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5yZWdpb24gY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBjb25zdCBTdHJp
bmcmIHJlZ2lvbiA9IGxvY2FsZS0+cmVnaW9uKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNj
b3BlLCBKU1ZhbHVlOjplbmNvZGUocmVnaW9uLmlzRW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBq
c1N0cmluZyh2bSwgcmVnaW9uKSkpOwpAQCAtMzU1LDcgKzM1NSw3IEBAIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyVGltZVpvbmVzLCAoSlNHbG9iYWxP
YmplY3QqIGdsCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLnRpbWVab25lcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExv
Y2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUudGltZVpvbmVzIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT50aW1lWm9uZXMoZ2xvYmFsT2JqZWN0KSkpOwogfQpA
QCAtMzY4LDcgKzM2OCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJv
dG90eXBlR2V0dGVyVGV4dEluZm8sIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBs
b2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnRleHRJbmZv
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3Rv
dHlwZS50ZXh0SW5mbyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsK
IAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZS0+
dGV4dEluZm8oZ2xvYmFsT2JqZWN0KSkpOwogfQpAQCAtMzgxLDcgKzM4MSw3IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyV2Vla0luZm8sIChKU0ds
b2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxM
b2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxl
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW50bC5Mb2NhbGUucHJvdG90eXBlLndlZWtJbmZvIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS53ZWVrSW5mbyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2FsZS0+d2Vla0luZm8oZ2xvYmFsT2JqZWN0KSkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
LmNwcAppbmRleCA5NTNjMzlmZTY0YTllODRkMGJiNmMxMGMwNDJiMDczYWY2OWUzNTY5Li5mN2Y0
YjllMTIyNmI5MGQ5ZWU4ZDk4ZmNjZjJjNTI4NTMwNGI5M2I1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcApAQCAtMzA4LDcgKzMw
OCw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgdm9pZCgpKTsKICAgICBpZiAoIW51bWJlcmluZ1N5c3RlbS5pc051bGwoKSkgewogICAg
ICAgICBpZiAoIWlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKG51bWJlcmluZ1N5c3RlbSkp
IHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibnVt
YmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmluZyBzeXN0ZW0gdmFsdWUi
X3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJu
dW1iZXJpbmdTeXN0ZW0gaXMgbm90IGEgd2VsbC1mb3JtZWQgbnVtYmVyaW5nIHN5c3RlbSB2YWx1
ZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVP
cHRpb25zW3N0YXRpY19jYXN0PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6TnUpXSA9
IG51bWJlcmluZ1N5c3RlbTsKQEAgLTMxOSw3ICszMTksNyBAQCB2b2lkIEludGxOdW1iZXJGb3Jt
YXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYQogCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2NhbGU7CiAgICAgaWYgKG1fbG9jYWxl
LmlzRW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxvY2Fs
ZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zdHIp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBJbnRs
TnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmEKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwog
ICAgIGlmICghY3VycmVuY3kuaXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFpc1dlbGxGb3JtZWRD
dXJyZW5jeUNvZGUoY3VycmVuY3kpKSB7Ci0gICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgImN1cnJlbmN5
IGlzIG5vdCBhIHdlbGwtZm9ybWVkIGN1cnJlbmN5IGNvZGUiX3MpKTsKKyAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSJfc3Ry
KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0zNDAsNyArMzQw
LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICB1bnNpZ25lZCBjdXJyZW5jeURpZ2l0
cyA9IDA7CiAgICAgaWYgKG1fc3R5bGUgPT0gU3R5bGU6OkN1cnJlbmN5KSB7CiAgICAgICAgIGlm
IChjdXJyZW5jeS5pc051bGwoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImN1cnJlbmN5IG11c3QgYmUgYSBzdHJpbmciX3MpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImN1cnJlbmN5IG11c3QgYmUg
YSBzdHJpbmciX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMzYx
LDEyICszNjEsMTIgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9y
bWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICBpZiAoIXVuaXQuaXNO
dWxsKCkpIHsKICAgICAgICAgd2VsbEZvcm1lZFVuaXQgPSB3ZWxsRm9ybWVkVW5pdElkZW50aWZp
ZXIodW5pdCk7CiAgICAgICAgIGlmICghd2VsbEZvcm1lZFVuaXQpIHsKLSAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBpcyBub3QgYSB3ZWxsLWZv
cm1lZCB1bml0IGlkZW50aWZpZXIiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIG5vdCBhIHdlbGwtZm9ybWVkIHVuaXQgaWRlbnRp
ZmllciJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBtX3Vu
aXQgPSB1bml0OwogICAgIH0gZWxzZSBpZiAobV9zdHlsZSA9PSBTdHlsZTo6VW5pdCkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBtdXN0IGJlIGEg
c3RyaW5nIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InVuaXQgbXVzdCBiZSBhIHN0cmluZyJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMzkxLDExICszOTEsMTEgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVt
YmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEKICAgICAgICAgWyZd
KHVuc2lnbmVkIGNhbmRpZGF0ZSkgewogICAgICAgICAgICAgcmV0dXJuIGNhbmRpZGF0ZSA9PSBt
X3JvdW5kaW5nSW5jcmVtZW50OwogICAgICAgICB9KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5kaW5nSW5jcmVtZW50IG11c3QgYmUgb25lIG9m
IDEsIDIsIDUsIDEwLCAyMCwgMjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAs
IDI1MDAsIDUwMDAiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInJvdW5kaW5nSW5jcmVtZW50IG11c3QgYmUgb25lIG9mIDEsIDIsIDUsIDEwLCAyMCwg
MjUsIDUwLCAxMDAsIDIwMCwgMjUwLCA1MDAsIDEwMDAsIDIwMDAsIDI1MDAsIDUwMDAiX3N0cik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG1fcm91bmRpbmdJbmNyZW1lbnQgIT0g
MSAmJiBtX3JvdW5kaW5nVHlwZSAhPSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0cykg
ewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJvdW5kaW5n
IHR5cGUgaXMgbm90IGZyYWN0aW9uLWRpZ2l0cyB3aGlsZSByb3VuZGluZ0luY3JlbWVudCBpcyBz
cGVjaWZpZWQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInJvdW5kaW5nIHR5cGUgaXMgbm90IGZyYWN0aW9uLWRpZ2l0cyB3aGlsZSByb3VuZGluZ0lu
Y3JlbWVudCBpcyBzcGVjaWZpZWQiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTYzNSwxNCArNjM1LDE0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJl
ckZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXR0ZXIgPSBzdGQ6OnVu
aXF1ZV9wdHI8VU51bWJlckZvcm1hdHRlciwgVU51bWJlckZvcm1hdHRlckRlbGV0ZXI+KHVudW1m
X29wZW5Gb3JTa2VsZXRvbkFuZExvY2FsZSh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3
Lmxlbmd0aCgpLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCAmc3RhdHVzKSk7CiAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGlu
aXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQogICAgIG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVy
UmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxhcHNl
QW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0
aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX0FVVE8sIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tfQVBQ
Uk9YSU1BVEVMWSwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwgbnVsbHB0ciwgJnN0
YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9y
bWF0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICNlbmRpZgpAQCAtNzA3LDE0ICs3MDcsMTQgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0
Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmEKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBtX251bWJlckZv
cm1hdCA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBJQ1VEZWxldGVyPHVudW1fY2xv
c2U+Pih1bnVtX29wZW4oc3R5bGUsIG51bGxwdHIsIDAsIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9u
cy5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3N0
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAobV9zdHlsZSA9PSBTdHlsZTo6
Q3VycmVuY3kpIHsKICAgICAgICAgdW51bV9zZXRUZXh0QXR0cmlidXRlKG1fbnVtYmVyRm9ybWF0
LmdldCgpLCBVTlVNX0NVUlJFTkNZX0NPREUsIFN0cmluZ1ZpZXcobV9jdXJyZW5jeSkudXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKCksIG1fY3VycmVuY3kubGVuZ3RoKCksICZzdGF0dXMpOwogICAgICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3Mp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQogICAgIH0KQEAgLTc2NywxOCArNzY3LDE4IEBAIEpTVmFsdWUgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1
ZSkgY29uCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBm
b3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVs
ZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAgICAgdW51bWZfZm9ybWF0RG91YmxlKG1fbnVtYmVy
Rm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxl
ZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zdHIpOwogICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9k
dWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0dGVkTnVtYmVyLmdldCgp
LCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVt
YmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAjZWxzZQogICAgIEFTU0VS
VChtX251bWJlckZvcm1hdCk7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5n
RnVuY3Rpb24odW51bV9mb3JtYXREb3VibGUsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCB2YWx1ZSwg
YnVmZmVyLCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIG51bWJlci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zdHIpOwogI2VuZGlmCiAg
ICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92ZShidWZmZXIpKSk7CiB9CkBAIC03
OTgsMTggKzc5OCwxOCBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTWF0aGVtYXRpY2FsVgogICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1
bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+
Pih1bnVtZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zdHIp
OwogICAgIHVudW1mX2Zvcm1hdERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHN0cmlu
Zy5kYXRhKCksIHN0cmluZy5sZW5ndGgoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVz
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zdHIpOwogICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQ
cm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywgZm9ybWF0dGVkTnVtYmVyLmdl
dCgpLCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEg
QmlnSW50LiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3N0cik7CiAjZWxzZQogICAgIEFT
U0VSVChtX251bWJlckZvcm1hdCk7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVj
aW5nRnVuY3Rpb24odW51bV9mb3JtYXREZWNpbWFsLCBtX251bWJlckZvcm1hdC5nZXQoKSwgc3Ry
aW5nLmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIEJpZ0ludC4iX3N0cik7CiAjZW5kaWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmlu
ZyhXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KQEAgLTgyMywzMSArODIzLDMxIEBAIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YmxlIHN0YXJ0CiAgICAgQVNTRVJUKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIpOwogCiAgICAg
aWYgKHN0ZDo6aXNuYW4oc3RhcnQpIHx8IHN0ZDo6aXNuYW4oZW5kKSkKLSAgICAgICAgcmV0dXJu
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJlcnMgYXJl
IG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3N0cik7CiAK
ICAgICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxh
cmdlciB0aGFuIGVuZCJfc3RyKTsKIAogICAgIGlmIChpc05lZ2F0aXZlWmVybyhlbmQpICYmIHN0
YXJ0ID49IDApCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVu
ZCJfc3RyKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1
dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdlLCBJQ1VEZWxl
dGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0dXMpKTsKICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGEgcmFuZ2UiX3N0cik7CiAKICAgICB1bnVtcmZfZm9ybWF0RG91YmxlUmFuZ2UobV9u
dW1iZXJSYW5nZUZvcm1hdHRlci5nZXQoKSwgc3RhcnQsIGVuZCwgcmFuZ2UuZ2V0KCksICZzdGF0
dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIGF1dG8qIGZvcm1hdHRlZFZhbHVl
ID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUocmFuZ2UuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQg
YSByYW5nZSJfc3RyKTsKIAogICAgIGludDMyX3QgbGVuZ3RoID0gMDsKICAgICBjb25zdCBVQ2hh
ciogc3RyaW5nID0gdWZtdHZhbF9nZXRTdHJpbmcoZm9ybWF0dGVkVmFsdWUsICZsZW5ndGgsICZz
dGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2Ui
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIHJldHVybiBqc1N0cmluZyh2
bSwgU3RyaW5nKHN0cmluZywgbGVuZ3RoKSk7CiB9CkBAIC04NjAsNyArODYwLDcgQEAgSlNWYWx1
ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBJbnRsTWF0aGVtYXQKICAgICBBU1NFUlQobV9udW1iZXJSYW5nZUZvcm1hdHRlcik7CiAK
ICAgICBpZiAoc3RhcnQubnVtYmVyVHlwZSgpID09IEludGxNYXRoZW1hdGljYWxWYWx1ZTo6TnVt
YmVyVHlwZTo6TmFOIHx8IGVuZC5udW1iZXJUeXBlKCkgPT0gSW50bE1hdGhlbWF0aWNhbFZhbHVl
OjpOdW1iZXJUeXBlOjpOYU4pCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQYXNzZWQg
bnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zdHIpOwogCiAgICAgc3RhcnQuZW5zdXJlTm9uRG91
YmxlKCk7CiAgICAgY29uc3QgYXV0byYgc3RhcnRTdHJpbmcgPSBzdGFydC5nZXRTdHJpbmcoKTsK
QEAgLTg3MSwyMCArODcxLDIwIEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFu
Z2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bE1hdGhlbWF0CiAgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byByYW5nZSA9IHN0ZDo6dW5pcXVl
X3B0cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0
Pj4odW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsK
IAogICAgIHVudW1yZl9mb3JtYXREZWNpbWFsUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1hdHRlci5n
ZXQoKSwgc3RhcnRTdHJpbmcuZGF0YSgpLCBzdGFydFN0cmluZy5sZW5ndGgoKSwgZW5kU3RyaW5n
LmRhdGEoKSwgZW5kU3RyaW5nLmxlbmd0aCgpLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CiAgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZv
cm1hdCBhIHJhbmdlIl9zdHIpOwogCiAgICAgYXV0byogZm9ybWF0dGVkVmFsdWUgPSB1bnVtcmZf
cmVzdWx0QXNWYWx1ZShyYW5nZS5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9z
dHIpOwogCiAgICAgaW50MzJfdCBsZW5ndGggPSAwOwogICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcg
PSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0ZWRWYWx1ZSwgJmxlbmd0aCwgJnN0YXR1cyk7CiAg
ICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRv
IGZvcm1hdCBhIHJhbmdlIl9zdHIpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmco
c3RyaW5nLCBsZW5ndGgpKTsKIH0KQEAgLTEwMzAsNyArMTAzMCw3IEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKICAgICBpbnQzMl90IGZvcm1hdHRlZFN0cmluZ0xlbmd0aCA9IDA7CiAgICAgY29u
c3QgVUNoYXIqIGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIgPSB1Zm10dmFsX2dldFN0cmluZyhmb3Jt
YXR0ZWRWYWx1ZSwgJmZvcm1hdHRlZFN0cmluZ0xlbmd0aCwgJnN0YXR1cyk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciByYW5nZSJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciBy
YW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgcmVzdWx0U3Ry
aW5nKGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIsIGZvcm1hdHRlZFN0cmluZ0xlbmd0aCk7CkBAIC0x
MDM5LDE0ICsxMDM5LDE0IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1Bh
cnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAvLyBTbyB3ZSBk
byBub3QgY29uc3RyYWludCBpdGVyYXRvci4KICAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjp1bmlx
dWVfcHRyPFVDb25zdHJhaW5lZEZpZWxkUG9zaXRpb24sIElDVURlbGV0ZXI8dWNmcG9zX2Nsb3Nl
Pj4odWNmcG9zX29wZW4oJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZv
cm1hdCBudW1iZXIgcmFuZ2UiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3N0cik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvIHNoYXJlZFN0cmluZyA9IGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgInNoYXJlZCJfcyk7Ci0gICAgYXV0byBzdGFydFJhbmdlU3RyaW5nID0ganNOb250
cml2aWFsU3RyaW5nKHZtLCAic3RhcnRSYW5nZSJfcyk7Ci0gICAgYXV0byBlbmRSYW5nZVN0cmlu
ZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVuZFJhbmdlIl9zKTsKLSAgICBhdXRvIGxpdGVy
YWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsKKyAgICBhdXRv
IHNoYXJlZFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInNoYXJlZCJfc3RyKTsKKyAg
ICBhdXRvIHN0YXJ0UmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJzdGFydFJh
bmdlIl9zdHIpOworICAgIGF1dG8gZW5kUmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJlbmRSYW5nZSJfc3RyKTsKKyAgICBhdXRvIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJsaXRlcmFsIl9zdHIpOwogCiAgICAgV1RGOjpSYW5nZTxpbnQzMl90PiBz
dGFydFJhbmdlIHsgLTEsIC0xIH07CiAgICAgV1RGOjpSYW5nZTxpbnQzMl90PiBlbmRSYW5nZSB7
IC0xLCAtMSB9OwpAQCAtMTA1NSw3ICsxMDU1LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpm
b3JtYXRSYW5nZVRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgIGJvb2wgbmV4dCA9IHVmbXR2YWxfbmV4dFBvc2l0
aW9uKGZvcm1hdHRlZFZhbHVlLCBpdGVyYXRvci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9zKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IG51bWJlciByYW5nZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIW5leHQpCkBAIC0xMDYzLDEzICsxMDYzLDEzIEBAIHZvaWQgSW50bE51bWJl
ckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzSW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKIAogICAgICAgICBpbnQzMl90IGNhdGVnb3J5ID0gdWNmcG9zX2dldENhdGVnb3J5
KGl0ZXJhdG9yLmdldCgpLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFp
bGVkIHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9z
dHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaW50MzJfdCBm
aWVsZFR5cGUgPSB1Y2Zwb3NfZ2V0RmllbGQoaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAg
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciByYW5nZSJfcyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTA3Nyw3ICsxMDc3LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3Jt
YXRSYW5nZVRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAg
ICAgICBpbnQzMl90IGVuZEluZGV4ID0gMDsKICAgICAgICAgdWNmcG9zX2dldEluZGV4ZXMoaXRl
cmF0b3IuZ2V0KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgsICZzdGF0dXMpOwogICAgICAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciBpbnRlcnZhbCJfcyk7Cisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBudW1iZXIgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMTE1MiwzNSArMTE1MiwzNSBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6
OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibAog
ICAgIEFTU0VSVChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKIAogICAgIGlmIChzdGQ6OmlzbmFu
KHN0YXJ0KSB8fCBzdGQ6OmlzbmFuKGVuZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2Ui
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJQYXNzZWQgbnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zdHIpOwogCiAgICAgaWYgKGVuZCA8
IHN0YXJ0KQotICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQi
X3N0cik7CiAKICAgICBpZiAoaXNOZWdhdGl2ZVplcm8oZW5kKSAmJiBzdGFydCA+PSAwKQotICAg
ICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBp
cyBsYXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3N0cik7CiAKICAg
ICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHJhbmdlID0gc3Rk
Ojp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xv
c2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zdHIpOwogCiAgICAgdW51bXJmX2Zvcm1hdERvdWJsZVJhbmdlKG1fbnVtYmVyUmFuZ2VGb3Jt
YXR0ZXIuZ2V0KCksIHN0YXJ0LCBlbmQsIHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0
IGEgcmFuZ2UiX3N0cik7CiAKICAgICBhdXRvKiBmb3JtYXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1
bHRBc1ZhbHVlKHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3N0cik7
CiAKICAgICBib29sIGVxdWFsID0gbnVtYmVyRmllbGRzUHJhY3RpY2FsbHlFcXVhbChmb3JtYXR0
ZWRWYWx1ZSwgc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVt
YmVyIHJhbmdlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAogICAgIGlmIChlcXVhbCkKLSAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBmb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgc3RhcnQsIGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgInNoYXJlZCJfcykpKTsKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBmb3JtYXRUb1BhcnRzKGdsb2JhbE9iamVjdCwgc3RhcnQsIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgInNoYXJlZCJfc3RyKSkpOwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlD
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJp
bmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKSB7
CkBAIC0xMjAyLDcgKzEyMDIsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJh
bmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTQogICAgIEFTU0VS
VChtX251bWJlclJhbmdlRm9ybWF0dGVyKTsKIAogICAgIGlmIChzdGFydC5udW1iZXJUeXBlKCkg
PT0gSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpOYU4gfHwgZW5kLm51bWJlclR5
cGUoKSA9PSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6Ok5hTikKLSAgICAgICAg
cmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJl
cnMgYXJlIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3N0
cik7CiAKICAgICBzdGFydC5lbnN1cmVOb25Eb3VibGUoKTsKICAgICBjb25zdCBhdXRvJiBzdGFy
dFN0cmluZyA9IHN0YXJ0LmdldFN0cmluZygpOwpAQCAtMTIxMywyNCArMTIxMywyNCBAQCBKU1Zh
bHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBJbnRsTQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdl
LCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0
dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3N0cik7CiAKICAgICB1bnVtcmZfZm9ybWF0RGVjaW1h
bFJhbmdlKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIuZ2V0KCksIHN0YXJ0U3RyaW5nLmRhdGEoKSwg
c3RhcnRTdHJpbmcubGVuZ3RoKCksIGVuZFN0cmluZy5kYXRhKCksIGVuZFN0cmluZy5sZW5ndGgo
KSwgcmFuZ2UuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAg
IGF1dG8qIGZvcm1hdHRlZFZhbHVlID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUocmFuZ2UuZ2V0KCks
ICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFu
Z2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIGJvb2wgZXF1YWwgPSBu
dW1iZXJGaWVsZHNQcmFjdGljYWxseUVxdWFsKGZvcm1hdHRlZFZhbHVlLCBzdGF0dXMpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3MpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBu
dW1iZXIgcmFuZ2UiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaWYg
KGVxdWFsKQotICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZvcm1hdFRvUGFydHMo
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN0YXJ0KSwganNOb250cml2aWFsU3RyaW5nKHZtLCAic2hh
cmVkIl9zKSkpOworICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZvcm1hdFRvUGFy
dHMoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN0YXJ0KSwganNOb250cml2aWFsU3RyaW5nKHZtLCAi
c2hhcmVkIl9zdHIpKSk7CiAKICAgICBKU0FycmF5KiBwYXJ0cyA9IEpTQXJyYXk6OnRyeUNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0Fs
bG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91cyksIDApOwogICAgIGlmICghcGFydHMpIHsKQEAg
LTE0MDgsMTEgKzE0MDgsMTEgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGlu
Z1ZhbHVlKFZNJiB2bSwgVXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCiAgICAgY2FzZSBVc2VHcm91
cGluZzo6RmFsc2U6CiAgICAgICAgIHJldHVybiBqc0Jvb2xlYW4oZmFsc2UpOwogICAgIGNhc2Ug
VXNlR3JvdXBpbmc6Ok1pbjI6Ci0gICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJtaW4yIl9zKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm1pbjIi
X3N0cik7CiAgICAgY2FzZSBVc2VHcm91cGluZzo6QXV0bzoKLSAgICAgICAgcmV0dXJuIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgImF1dG8iX3MpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFs
U3RyaW5nKHZtLCAiYXV0byJfc3RyKTsKICAgICBjYXNlIFVzZUdyb3VwaW5nOjpBbHdheXM6Ci0g
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJhbHdheXMiX3MpOworICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYWx3YXlzIl9zdHIpOwogICAgIH0KICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTE0ODksNyArMTQ4OSw3IEBAIHZvaWQgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0eWxlCiAgICAgICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgICAgICBpbnQzMl90IGZpZWxkVHlwZSA9IGl0ZXJhdG9yLm5leHQoYmVnaW5JbmRleCwg
ZW5kSW5kZXgsIHN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBp
dGVyYXRlIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaXRlcmF0ZSBmaWVsZCBwb3Np
dGlvbiBpdGVyYXRvciJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAg
ICAgICBpZiAoZmllbGRUeXBlIDwgMCkKQEAgLTE1MDAsNyArMTUwMCw3IEBAIHZvaWQgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0c0ludGVybmFsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFN0eWxlCiAKICAgICBhdXRvIGZsYXR0ZW4gPSBmbGF0dGVuRmllbGRzKFdURk1vdmUo
ZmllbGRzKSwgc3RyaW5nTGVuZ3RoKTsKIAotICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOworICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3N0cik7CiAgICAgSWRlbnRpZmllciB1
bml0TmFtZTsKICAgICBpZiAodW5pdCkKICAgICAgICAgdW5pdE5hbWUgPSBJZGVudGlmaWVyOjpm
cm9tU3RyaW5nKHZtLCAidW5pdCIpOwpAQCAtMTUzMCwyOSArMTUzMCwyOSBAQCBKU1ZhbHVlIElu
dGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YmxlIHZhbAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAg
IGF1dG8gZmllbGRJdHIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZpZWxkUG9zaXRpb25JdGVyYXRvciwg
VUZpZWxkUG9zaXRpb25JdGVyYXRvckRlbGV0ZXI+KHVmaWVsZHBvc2l0ZXJfb3Blbigmc3RhdHVz
KSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVuIGZpZWxkIHBvc2l0aW9u
IGl0ZXJhdG9yIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBpdGVyYXRvciJfc3RyKTsK
IAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKICNpZiBIQVZFKElDVV9VX05VTUJFUl9G
T1JNQVRURVIpCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0dGVyKTsKICAgICBhdXRvIGZvcm1h
dHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVy
PHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9y
bWF0IGEgbnVtYmVyLiJfc3RyKTsKICAgICB1bnVtZl9mb3JtYXREb3VibGUobV9udW1iZXJGb3Jt
YXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwogICAg
IGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRv
IGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2lu
Z0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIHJl
c3VsdCk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfc3RyKTsKICAgICB1bnVtZl9yZXN1bHRHZXRB
bGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGZpZWxkSXRyLmdldCgpLCAm
c3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJl
ci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zdHIpOwogICAgIEludGxGaWVsZEl0ZXJh
dG9yIGl0ZXJhdG9yKCpmaWVsZEl0ci5nZXQoKSk7CiAjZWxzZQogICAgIEFTU0VSVChtX251bWJl
ckZvcm1hdCk7CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1f
Zm9ybWF0RG91YmxlRm9yRmllbGRzLCBtX251bWJlckZvcm1hdC5nZXQoKSwgdmFsdWUsIHJlc3Vs
dCwgZmllbGRJdHIuZ2V0KCkpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9y
bWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAgICAgSW50
bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdldCgpKTsKICNlbmRpZgogCkBAIC0x
NTgwLDI1ICsxNTgwLDI1IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTWF0aGVtCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBmaWVsZEl0ciA9IHN0ZDo6dW5pcXVl
X3B0cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRl
cj4odWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVuIGZp
ZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zdHIpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVz
dWx0OwogICAgIEFTU0VSVChtX251bWJlckZvcm1hdHRlcik7CiAgICAgYXV0byBmb3JtYXR0ZWRO
dW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNVRGVsZXRlcjx1bnVt
Zl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBh
IG51bWJlci4iX3N0cik7CiAKICAgICB1bnVtZl9mb3JtYXREZWNpbWFsKG1fbnVtYmVyRm9ybWF0
dGVyLmdldCgpLCBzdHJpbmcuZGF0YSgpLCBzdHJpbmcubGVuZ3RoKCksIGZvcm1hdHRlZE51bWJl
ci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfc3RyKTsKIAogICAgIHN0
YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtZl9yZXN1bHRUb1N0cmluZywg
Zm9ybWF0dGVkTnVtYmVyLmdldCgpLCByZXN1bHQpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
YWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3N0
cik7CiAKICAgICB1bnVtZl9yZXN1bHRHZXRBbGxGaWVsZFBvc2l0aW9ucyhmb3JtYXR0ZWROdW1i
ZXIuZ2V0KCksIGZpZWxkSXRyLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIu
Il9zdHIpOwogCiAgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdldCgp
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDE2NDA4OTk3YzE4ZjdjNzYyOGY3
NzViOGQ0MWRmNzcyNDJhNGQxNi4uM2MxMjE0MDNhOGEyMmNmY2E4ZDY0MjNhZTIxNDAyOTdmOWI1
MDU3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJl
ckZvcm1hdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCkBAIC03NCw3ICs3NCw3IEBAIEludGxO
dW1iZXJGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yKFZNJiB2
bSwgU3RydWN0dXJlKiBzdHJ1CiAKIHZvaWQgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUqIG51bWJlckZv
cm1hdFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIk51bWJl
ckZvcm1hdCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0
aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIk51bWJlckZvcm1hdCJfc3Ry
LCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIG51bWJlckZvcm1hdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdElubGluZXMuaAppbmRleCAxYWY0MWVhMjEyM2I1ZDZmYTI5MWNhZmQzZjJl
ZjYyZGVhYjc4Mzk0Li4zOTc3ZDkwMjI5NTBkZGFmZjM2YTQzMjMyY2FkMWY5MDlkMmQ1OThmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXRJbmxpbmVzLmgKQEAgLTk3LDcgKzk3LDcgQEAgdm9pZCBzZXROdW1iZXJGb3JtYXREaWdp
dE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSW50bFR5cGUqIGludGxJbnMK
ICAgICAgICAgICAgIGVsc2UgaWYgKG1heGltdW1GcmFjdGlvbkRpZ2l0cyA9PSB1bmRlZmluZWRW
YWx1ZSkKICAgICAgICAgICAgICAgICBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBzdGQ6Om1heCht
YXhpbXVtRnJhY3Rpb25EaWdpdHNEZWZhdWx0LCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMpOwogICAg
ICAgICAgICAgZWxzZSBpZiAobWluaW11bUZyYWN0aW9uRGlnaXRzID4gbWF4aW11bUZyYWN0aW9u
RGlnaXRzKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDb21wdXRlZCBtaW5pbXVtRnJhY3Rpb25EaWdpdHMgaXMgbGFyZ2VyIHRoYW4gbWF4
aW11bUZyYWN0aW9uRGlnaXRzIl9zKTsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyBpcyBs
YXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3N0cik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IDhkYjI5
NDA4YWRmYWJjYTE4MzZkMTkwZDhjZDFiOGU1NTg1OWZhZWIuLjliM2E0MjJkYTk5ZjRlNjcyZmJm
NGJiNGVhYTlmMjA4YmM1ZTQwNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC0xMjAsNyAr
MTIwLDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5
cGVHZXR0ZXJGb3JtYXQsIChKU0dsb2JhbE9iamVjdCoKICAgICBhdXRvKiBuZiA9IEludGxOdW1i
ZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwog
ICAgIGlmIChVTkxJS0VMWSghbmYpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1hdC5wcm90
b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTnVtYmVyRm9ybWF0Il9z
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3N0cikpOwogCiAgICAgSlNCb3Vu
ZEZ1bmN0aW9uKiBib3VuZEZvcm1hdCA9IG5mLT5ib3VuZEZvcm1hdCgpOwogICAgIC8vIDIuIElm
IG5mLltbYm91bmRGb3JtYXRdXSBpcyB1bmRlZmluZWQsCkBAIC0xMjgsNyArMTI4LDcgQEAgSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKGludGxOdW1iZXJGb3JtYXRQcm90b3R5cGVHZXR0ZXJGb3Jt
YXQsIChKU0dsb2JhbE9iamVjdCoKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCA9IG5mLT5nbG9iYWxPYmplY3Qodm0pOwogICAgICAgICAvLyBhLiBMZXQgRiBiZSBhIG5ldyBi
dWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBpbiAxMS4zLjQuCiAgICAgICAgIC8v
IGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4KLSAgICAgICAgYXV0
byogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEs
ICJmb3JtYXQiX3MsIGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0LCBOb0ludHJpbnNpYyk7Cisg
ICAgICAgIGF1dG8qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCAiZm9ybWF0Il9zdHIsIGludGxOdW1iZXJGb3JtYXRGdW5jRm9ybWF0LCBOb0lu
dHJpbnNpYyk7CiAgICAgICAgIC8vIGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYs
IMKrdGhpcyB2YWx1ZcK7KS4KICAgICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIG5mLCBudWxscHRyLCAxLCBu
dWxscHRyKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CkBAIC0xNDgsMTMgKzE0OCwxMyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50
bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5nZSwgKEpTR2xvYmFsT2JqZQogICAg
IC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rpb25zLgogICAgIGF1dG8qIG51bWJlckZv
cm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW51bWJlckZvcm1hdCkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRSYW5nZSBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBO
dW1iZXJGb3JtYXQiX3N0cikpOwogCiAgICAgSlNWYWx1ZSBzdGFydFZhbHVlID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgwKTsKICAgICBKU1ZhbHVlIGVuZFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKTsKIAogICAgIGlmIChzdGFydFZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgZW5kVmFsdWUuaXNV
bmRlZmluZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInN0YXJ0IG9yIGVuZCBpcyB1bmRlZmluZWQiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgb3IgZW5kIGlzIHVu
ZGVmaW5lZCJfc3RyKTsKIAogICAgIGF1dG8gc3RhcnQgPSB0b0ludGxNYXRoZW1hdGljYWxWYWx1
ZShnbG9iYWxPYmplY3QsIHN0YXJ0VmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CkBAIC0xODIsNyArMTgyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGlu
dGxOdW1iZXJGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cywgKEpTR2xvYmFsT2IKICAg
ICAvLyBEbyBub3QgdXNlIHVud3JhcEZvck9sZEZ1bmN0aW9ucy4KICAgICBhdXRvKiBudW1iZXJG
b3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxOdW1iZXJGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50
aGlzVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJl
ckZvcm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIE51bWJlckZvcm1hdCJfc3RyKSk7CiAKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRU
RVIpCiAgICAgYXV0byB2YWx1ZSA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVj
dCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CkBAIC0yMDksMTMgKzIwOSwxMyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRSYW5n
ZVRvUGFydHMsIChKU0dsbwogICAgIC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVuY3Rpb25z
LgogICAgIGF1dG8qIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJlckZvcm1h
dCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIW51bWJl
ckZvcm1hdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRS
YW5nZVRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3Mp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFJhbmdlVG9Q
YXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfc3RyKSk7CiAK
ICAgICBKU1ZhbHVlIHN0YXJ0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpT
VmFsdWUgZW5kVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgaWYgKHN0YXJ0
VmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgb3IgZW5k
IGlzIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zdHIpOwogCiAgICAg
YXV0byBzdGFydCA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnRW
YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTI0Miw3ICsy
NDIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbAogICAgIGF1dG8qIG51bWJlckZvcm1hdCA9
IEludGxOdW1iZXJGb3JtYXQ6OnVud3JhcEZvck9sZEZ1bmN0aW9ucyhnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAgICAgaWYgKFVOTElLRUxZKCFudW1iZXJGb3JtYXQpKQotICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51
bWJlckZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgTnVtYmVyRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBO
dW1iZXJGb3JtYXQiX3N0cikpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUobnVtYmVyRm9ybWF0LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRl
eCAwNDliYzM5NDY4MjU2ZGUzNmZiY2RkYThmYTI3MjIxOWJiMzE4ZWY0Li40YzQyY2E0YjM3NjM2
NjYzMWYyMTU0ZjBhMWJhZGNlMzllOGQyOWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtNzM0LDcgKzczNCw3IEBAIFZlY3RvcjxTdHJpbmc+
IGNhbm9uaWNhbGl6ZUxvY2FsZUxpc3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBsb2NhCiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBWZWN0b3I8
U3RyaW5nPigpKTsKIAogICAgICAgICAgICAgaWYgKCFrVmFsdWUuaXNTdHJpbmcoKSAmJiAha1Zh
bHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAibG9jYWxlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3Igb2JqZWN0Il9z
KTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
bG9jYWxlIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3Igb2JqZWN0Il9zdHIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICB9CiAKQEAgLTgxMSw3ICs4MTEsNyBAQCBT
dHJpbmcgZGVmYXVsdExvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGlm
ICghaWN1RGVmYXVsdExvY2FsU3RyaW5nLT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBpY3VE
ZWZhdWx0TG9jYWxTdHJpbmcuZ2V0KCk7CiAKLSAgICByZXR1cm4gImVuIl9zOworICAgIHJldHVy
biAiZW4iX3N0cjsKIH0KIAogU3RyaW5nIHJlbW92ZVVuaWNvZGVMb2NhbGVFeHRlbnNpb24oY29u
c3QgU3RyaW5nJiBsb2NhbGUpCkBAIC05MTcsNyArOTE3LDcgQEAgUmVzb2x2ZWRMb2NhbGUgcmVz
b2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBMb2NhbGVTZXQm
IGF2YWkKICAgICBSZXNvbHZlZExvY2FsZSByZXNvbHZlZDsKICAgICByZXNvbHZlZC5kYXRhTG9j
YWxlID0gZm91bmRMb2NhbGU7CiAKLSAgICBTdHJpbmcgc3VwcG9ydGVkRXh0ZW5zaW9uID0gIi11
Il9zOworICAgIFN0cmluZyBzdXBwb3J0ZWRFeHRlbnNpb24gPSAiLXUiX3N0cjsKICAgICBmb3Ig
KFJlbGV2YW50RXh0ZW5zaW9uS2V5IGtleSA6IHJlbGV2YW50RXh0ZW5zaW9uS2V5cykgewogICAg
ICAgICBBU0NJSUxpdGVyYWwga2V5U3RyaW5nID0gcmVsZXZhbnRFeHRlbnNpb25LZXlTdHJpbmco
a2V5KTsKICAgICAgICAgVmVjdG9yPFN0cmluZz4ga2V5TG9jYWxlRGF0YSA9IGxvY2FsZURhdGEo
Zm91bmRMb2NhbGUsIGtleSk7CkBAIC05MzcsNyArOTM3LDcgQEAgUmVzb2x2ZWRMb2NhbGUgcmVz
b2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBMb2NhbGVTZXQm
IGF2YWkKICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZEV4dGVuc2lvbkFkZGl0aW9u
ID0gbWFrZVN0cmluZygnLScsIGtleVN0cmluZywgJy0nLCB2YWx1ZSk7CiAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUxvY2FsZURhdGEuY29udGFp
bnMoInRydWUiX3MpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gInRydWUiX3M7Cisg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gInRydWUiX3N0cjsKICAgICAgICAgICAgICAgICAg
ICAgc3VwcG9ydGVkRXh0ZW5zaW9uQWRkaXRpb24gPSBtYWtlU3RyaW5nKCctJywga2V5U3RyaW5n
KTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0xNTEwLDM1ICsxNTEwLDM1
IEBAIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPGNoYXIsIDMyPj4gY2Fub25pY2FsaXplTG9jYWxlSURX
aXRob3V0TnVsbFRlcm1pbmF0b3IoY29uc3QKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBJQ1VD
YWxlbmRhcktleXdvcmRUb0JDUDQ3KGNvbnN0IFN0cmluZyYgY2FsZW5kYXIpCiB7CiAgICAgaWYg
KGNhbGVuZGFyID09ICJncmVnb3JpYW4iX3MpCi0gICAgICAgIHJldHVybiAiZ3JlZ29yeSJfczsK
KyAgICAgICAgcmV0dXJuICJncmVnb3J5Il9zdHI7CiAgICAgLy8gaXNsYW1pY2MgaXMgZGVwcmVj
YXRlZCBpbiBCQ1A0NywgYW5kIGlzbGFtaWMtY2l2aWwgaXMgcHJlZmVycmVkLgogICAgIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9jbGRyL2Jsb2IvbWFzdGVyL2NvbW1vbi9iY3A0
Ny9jYWxlbmRhci54bWwKICAgICBpZiAoY2FsZW5kYXIgPT0gImV0aGlvcGljLWFtZXRlLWFsZW0i
X3MpCi0gICAgICAgIHJldHVybiAiZXRoaW9hYSJfczsKKyAgICAgICAgcmV0dXJuICJldGhpb2Fh
Il9zdHI7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RkOjpvcHRpb25hbDxTdHJp
bmc+IG1hcEJDUDQ3VG9JQ1VDYWxlbmRhcktleXdvcmQoY29uc3QgU3RyaW5nJiBjYWxlbmRhcikK
IHsKICAgICBpZiAoY2FsZW5kYXIgPT0gImdyZWdvcnkiX3MpCi0gICAgICAgIHJldHVybiAiZ3Jl
Z29yaWFuIl9zOworICAgICAgICByZXR1cm4gImdyZWdvcmlhbiJfc3RyOwogICAgIGlmIChjYWxl
bmRhciA9PSAiaXNsYW1pY2MiX3MpCi0gICAgICAgIHJldHVybiAiaXNsYW1pYy1jaXZpbCJfczsK
KyAgICAgICAgcmV0dXJuICJpc2xhbWljLWNpdmlsIl9zdHI7CiAgICAgaWYgKGNhbGVuZGFyID09
ICJldGhpb2FhIl9zKQotICAgICAgICByZXR1cm4gImV0aGlvcGljLWFtZXRlLWFsZW0iX3M7Cisg
ICAgICAgIHJldHVybiAiZXRoaW9waWMtYW1ldGUtYWxlbSJfc3RyOwogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtYXBJQ1VDb2xsYXRpb25LZXl3
b3JkVG9CQ1A0Nyhjb25zdCBTdHJpbmcmIGNvbGxhdGlvbikKIHsKICAgICBpZiAoY29sbGF0aW9u
ID09ICJkaWN0aW9uYXJ5Il9zKQotICAgICAgICByZXR1cm4gImRpY3QiX3M7CisgICAgICAgIHJl
dHVybiAiZGljdCJfc3RyOwogICAgIGlmIChjb2xsYXRpb24gPT0gImdiMjMxMmhhbiJfcykKLSAg
ICAgICAgcmV0dXJuICJnYjIzMTIiX3M7CisgICAgICAgIHJldHVybiAiZ2IyMzEyIl9zdHI7CiAg
ICAgaWYgKGNvbGxhdGlvbiA9PSAicGhvbmVib29rIl9zKQotICAgICAgICByZXR1cm4gInBob25l
YmsiX3M7CisgICAgICAgIHJldHVybiAicGhvbmViayJfc3RyOwogICAgIGlmIChjb2xsYXRpb24g
PT0gInRyYWRpdGlvbmFsIl9zKQotICAgICAgICByZXR1cm4gInRyYWQiX3M7CisgICAgICAgIHJl
dHVybiAidHJhZCJfc3RyOwogICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiB9CiAKQEAgLTE2NDIs
MTMgKzE2NDIsMTMgQEAgc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZUNvbGxhdGlvbnMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19F
UlJPUjsKICAgICBhdXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFVFbnVtZXJhdGlv
biwgSUNVRGVsZXRlcjx1ZW51bV9jbG9zZT4+KHVjb2xfZ2V0S2V5d29yZFZhbHVlcygiY29sbGF0
aW9uIiwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBh
dmFpbGFibGUgY29sbGF0aW9ucyJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjb2xsYXRpb25zIl9z
dHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGludDMyX3QgY291bnQgPSB1
ZW51bV9jb3VudChlbnVtZXJhdGlvbi5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjb2xsYXRpb25zIl9zKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUg
YXZhaWxhYmxlIGNvbGxhdGlvbnMiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CkBAIC0xNjU2LDEzICsxNjU2LDEzIEBAIHN0YXRpYyBKU0FycmF5KiBhdmFpbGFibGVDb2xsYXRp
b25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgZWxlbWVudHMucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShjb3VudCArIDIpOwogICAgIC8vIElDVSB+NjkgaGFzIGEgYnVnIHRoYXQg
ZG9lcyBub3QgcmVwb3J0ICJlbW9qaSIgYW5kICJlb3IiIGZvciBjb2xsYXRpb24gd2hlbiB1c2lu
ZyB1Y29sX2dldEtleXdvcmRWYWx1ZXMuCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNv
ZGUtb3JnL2ljdS9jb21taXQvMjQ3NzhkZmM5YmY2N2Y0MzE1MDkzNjFhMTczYTMzYTFhYjg2MGI1
ZAotICAgIGVsZW1lbnRzLmFwcGVuZCgiZW1vamkiX3MpOwotICAgIGVsZW1lbnRzLmFwcGVuZCgi
ZW9yIl9zKTsKKyAgICBlbGVtZW50cy5hcHBlbmQoImVtb2ppIl9zdHIpOworICAgIGVsZW1lbnRz
LmFwcGVuZCgiZW9yIl9zdHIpOwogICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwg
Y291bnQ7ICsraW5kZXgpIHsKICAgICAgICAgaW50MzJfdCBsZW5ndGggPSAwOwogICAgICAgICBj
b25zdCBjaGFyKiBwb2ludGVyID0gdWVudW1fbmV4dChlbnVtZXJhdGlvbi5nZXQoKSwgJmxlbmd0
aCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJh
dGUgYXZhaWxhYmxlIGNvbGxhdGlvbnMiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIGNvbGxh
dGlvbnMiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAg
IFN0cmluZyBjb2xsYXRpb24ocG9pbnRlciwgbGVuZ3RoKTsKQEAgLTE2OTUsMTMgKzE2OTUsMTMg
QEAgc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZUN1cnJlbmNpZXMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBh
dXRvIGVudW1lcmF0aW9uID0gc3RkOjp1bmlxdWVfcHRyPFVFbnVtZXJhdGlvbiwgSUNVRGVsZXRl
cjx1ZW51bV9jbG9zZT4+KHVjdXJyX29wZW5JU09DdXJyZW5jaWVzKFVDVVJSX0FMTCwgJnN0YXR1
cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY3Vy
cmVuY2llcyJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjdXJyZW5jaWVzIl9zdHIpOwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KIAogICAgIGludDMyX3QgY291bnQgPSB1ZW51bV9jb3VudChl
bnVtZXJhdGlvbi5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
ZW51bWVyYXRlIGF2YWlsYWJsZSBjdXJyZW5jaWVzIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIGN1
cnJlbmNpZXMiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xNzEzLDEz
ICsxNzEzLDEzIEBAIHN0YXRpYyBKU0FycmF5KiBhdmFpbGFibGVDdXJyZW5jaWVzKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgLy8gICAgIDIuIERvIG5vdCBhZGQgRVFFIGFuZCBM
U00KICAgICAvLyBodHRwczovL3VuaWNvZGUtb3JnLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0lDVS0y
MTY4NQogICAgIGVsZW1lbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoY291bnQgKyAyKTsKLSAg
ICBlbGVtZW50cy5hcHBlbmQoIlZFUyJfcyk7Ci0gICAgZWxlbWVudHMuYXBwZW5kKCJVWVciX3Mp
OworICAgIGVsZW1lbnRzLmFwcGVuZCgiVkVTIl9zdHIpOworICAgIGVsZW1lbnRzLmFwcGVuZCgi
VVlXIl9zdHIpOwogICAgIGZvciAoaW50MzJfdCBpbmRleCA9IDA7IGluZGV4IDwgY291bnQ7ICsr
aW5kZXgpIHsKICAgICAgICAgaW50MzJfdCBsZW5ndGggPSAwOwogICAgICAgICBjb25zdCBjaGFy
KiBwb2ludGVyID0gdWVudW1fbmV4dChlbnVtZXJhdGlvbi5nZXQoKSwgJmxlbmd0aCwgJnN0YXR1
cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxh
YmxlIGN1cnJlbmNpZXMiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIGN1cnJlbmNpZXMiX3N0
cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIFN0cmluZyBj
dXJyZW5jeShwb2ludGVyLCBsZW5ndGgpOwpAQCAtMTc1MSwxMyArMTc1MSwxMyBAQCBzdGF0aWMg
SlNBcnJheSogYXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8g
ZW51bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVl
bnVtX2Nsb3NlPj4odW51bXN5c19vcGVuQXZhaWxhYmxlTmFtZXMoJnN0YXR1cykpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3Rl
bXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3RlbXMiX3N0cik7CiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaW50MzJfdCBjb3VudCA9IHVlbnVtX2NvdW50
KGVudW1lcmF0aW9uLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBlbnVtZXJhdGUgYXZhaWxhYmxlIG51bWJlcmluZyBzeXN0ZW1zIl9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZh
aWxhYmxlIG51bWJlcmluZyBzeXN0ZW1zIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAg
IH0KIApAQCAtMTc2NywxMiArMTc2NywxMiBAQCBzdGF0aWMgSlNBcnJheSogYXZhaWxhYmxlTnVt
YmVyaW5nU3lzdGVtcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBpbnQz
Ml90IGxlbmd0aCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUgPSB1ZW51bV9uZXh0KGVu
dW1lcmF0aW9uLmdldCgpLCAmbGVuZ3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3RlbXMiX3Mp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIG51bWJlcmluZyBzeXN0ZW1zIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBhdXRvIG51bWJlcmluZ1N5c3Rl
bSA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyaW5nU3lzdGVtLCBJQ1VEZWxldGVyPHVudW1zeXNf
Y2xvc2U+Pih1bnVtc3lzX29wZW5CeU5hbWUobmFtZSwgJnN0YXR1cykpOwogICAgICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBudW1iZXJpbmcgc3lz
dGVtcyJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3RlbXMiX3N0cik7
CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIGlmICh1bnVtc3lz
X2lzQWxnb3JpdGhtaWMobnVtYmVyaW5nU3lzdGVtLmdldCgpKSkKQEAgLTE4MDksNyArMTgwOSw3
IEBAIHN0YXRpYyBib29sIGlzVmFsaWRUaW1lWm9uZU5hbWVGcm9tSUNVVGltZVpvbmUoU3RyaW5n
VmlldyB0aW1lWm9uZU5hbWUpCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdHJpbmc+IGNhbm9uaWNh
bGl6ZVRpbWVab25lTmFtZUZyb21JQ1VUaW1lWm9uZShTdHJpbmcmJiB0aW1lWm9uZU5hbWUpCiB7
CiAgICAgaWYgKGlzVVRDRXF1aXZhbGVudCh0aW1lWm9uZU5hbWUpKQotICAgICAgICByZXR1cm4g
IlVUQyJfczsKKyAgICAgICAgcmV0dXJuICJVVEMiX3N0cjsKICAgICByZXR1cm4gc3RkOjptYWtl
X29wdGlvbmFsKFdURk1vdmUodGltZVpvbmVOYW1lKSk7CiB9CiAKQEAgLTE5MzEsNyArMTkzMSw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsT2JqZWN0RnVuY1N1cHBvcnRlZFZhbHVl
c09mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgaWYgKGtleSA9PSAidW5pdCJfcykKICAg
ICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoYXZhaWxhYmxl
VW5pdHMoZ2xvYmFsT2JqZWN0KSkpOwogCi0gICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJVbmtub3duIGtleSBmb3IgSW50bC5zdXBwb3J0ZWRWYWx1ZXNPZiJfcyk7Cisg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmtub3duIGtleSBmb3Ig
SW50bC5zdXBwb3J0ZWRWYWx1ZXNPZiJfc3RyKTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRl
eCA0MWMyYmZkZjZlZTUxNWMyMzRkY2JjZTYwY2RiMzMwM2VhYjMwYWZlLi45YTlmOTBlZDJkMGY5
ZjkxNmU0MTMwY2VjODhkY2M4MzY4MDY4MTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTI0OCw3ICsyNDgsNyBAQCBpbmxp
bmUgSlNPYmplY3QqIGludGxHZXRPcHRpb25zT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgb3B0aQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBpZiAoTElL
RUxZKG9wdGlvbnMuaXNPYmplY3QoKSkpCiAgICAgICAgIHJldHVybiBhc09iamVjdChvcHRpb25z
KTsKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAib3B0aW9ucyBhcmd1
bWVudCBpcyBub3QgYW4gb2JqZWN0IG9yIHVuZGVmaW5lZCJfcyk7CisgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm9wdGlvbnMgYXJndW1lbnQgaXMgbm90IGFuIG9iamVj
dCBvciB1bmRlZmluZWQiX3N0cik7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCmluZGV4IGE4
NTEzMTFjNzQ0YjVlYWIxNjVhYzdmNGQ1NjcxMDA2ZDg2Njc4M2UuLjY0ZmYwZjE5ZTI2MDRmODgy
OTlmMGZlZmRiOWM1ZTBiNGU5MzBkNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcApAQCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgSW50
bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1CiAgICAgYXV0byByZXNvbHZlZCA9IHJlc29sdmVMb2NhbGUoZ2xvYmFs
T2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBsb2NhbGVNYXRjaGVy
LCBsb2NhbGVPcHRpb25zLCB7IH0sIGxvY2FsZURhdGEpOwogICAgIG1fbG9jYWxlID0gcmVzb2x2
ZWQubG9jYWxlOwogICAgIGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJh
bFJ1bGVzIGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyBk
dWUgdG8gaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTE0MCwyMSArMTQwLDIxIEBAIHZvaWQgSW50bFBsdXJhbFJ1bGVzOjppbml0aWFsaXplUGx1cmFs
UnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1CiAKICAgICBtX251bWJl
ckZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVtYmVyRm9y
bWF0dGVyRGVsZXRlcj4odW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29udmVydGVk
LmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGxvY2FsZS5kYXRhKCksICZzdGF0dXMpKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBp
bml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAj
aWYgSEFWRShJQ1VfVV9OVU1CRVJfUkFOR0VfRk9STUFUVEVSKQogICAgIG1fbnVtYmVyUmFuZ2VG
b3JtYXR0ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlclJhbmdlRm9ybWF0dGVyLCBVTnVtYmVy
UmFuZ2VGb3JtYXR0ZXJEZWxldGVyPih1bnVtcmZfb3BlbkZvclNrZWxldG9uV2l0aENvbGxhcHNl
QW5kSWRlbnRpdHlGYWxsYmFjayh1cGNvbnZlcnRlZC5nZXQoKSwgc2tlbGV0b25WaWV3Lmxlbmd0
aCgpLCBVTlVNX1JBTkdFX0NPTExBUFNFX05PTkUsIFVOVU1fSURFTlRJVFlfRkFMTEJBQ0tfUkFO
R0UsIGxvY2FsZS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1
bGVzIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAjZWxzZQogICAgIG1f
bnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3Jt
YXREZWxldGVyPih1bnVtX29wZW4oVU5VTV9ERUNJTUFMLCBudWxscHRyLCAwLCBsb2NhbGUuZGF0
YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0g
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5p
dGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfc3RyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTc3LDcgKzE3Nyw3IEBAIHZvaWQgSW50bFBsdXJh
bFJ1bGVzOjppbml0aWFsaXplUGx1cmFsUnVsZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1CiAKICAgICBtX3BsdXJhbFJ1bGVzID0gc3RkOjp1bmlxdWVfcHRyPFVQbHVyYWxS
dWxlcywgVVBsdXJhbFJ1bGVzRGVsZXRlcj4odXBscnVsZXNfb3BlbkZvclR5cGUobG9jYWxlLmRh
dGEoKSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyBVUExVUkFMX1RZUEVfT1JESU5BTCA6IFVQ
TFVSQUxfVFlQRV9DQVJESU5BTCwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3N0
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CkBAIC0xOTIsNyArMTkyLDcgQEAgSlNPYmpl
Y3QqIEludGxQbHVyYWxSdWxlczo6cmVzb2x2ZWRPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpIGNvbnN0CiAKICAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sb2NhbGUsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9sb2NhbGUpKTsKLSAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnR5cGUsIGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgbV90eXBlID09IFR5cGU6Ok9yZGluYWwgPyAib3JkaW5hbCJfcyA6ICJj
YXJkaW5hbCJfcykpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+dHlwZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/
ICJvcmRpbmFsIl9zdHIgOiAiY2FyZGluYWwiX3N0cikpOwogICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bWluaW11bUludGVnZXJEaWdpdHMsIGpzTnVtYmVyKG1f
bWluaW11bUludGVnZXJEaWdpdHMpKTsKICAgICBzd2l0Y2ggKG1fcm91bmRpbmdUeXBlKSB7CiAg
ICAgY2FzZSBJbnRsUm91bmRpbmdUeXBlOjpGcmFjdGlvbkRpZ2l0czoKQEAgLTI0NSwyNyArMjQ1
LDI3IEBAIEpTVmFsdWUgSW50bFBsdXJhbFJ1bGVzOjpzZWxlY3QoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb25zCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkKLSAgICAg
ICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zKTsKKyAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm90aGVyIl9zdHIpOwogCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAKICNpZiBIQVZFKElDVV9VX05VTUJFUl9GT1JNQVRU
RVIpCiAgICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRl
ZE51bWJlciwgSUNVRGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQo
JnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJh
bCB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3N0cik7CiAgICAgdW51bWZf
Zm9ybWF0RG91YmxlKG1fbnVtYmVyRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgZm9ybWF0dGVkTnVt
YmVyLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNl
bGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zdHIpOwog
ICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJv
ZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0Rm9ybWF0dGVkLCBtX3BsdXJhbFJ1bGVzLmdl
dCgpLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJh
bCB2YWx1ZSJfc3RyKTsKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhXVEZNb3ZlKGJ1
ZmZlcikpKTsKICNlbHNlCiAgICAgVmVjdG9yPFVDaGFyLCA4PiByZXN1bHQoOCk7CiAgICAgYXV0
byBsZW5ndGggPSB1cGxydWxlc19zZWxlY3RXaXRoRm9ybWF0KG1fcGx1cmFsUnVsZXMuZ2V0KCks
IHZhbHVlLCBtX251bWJlckZvcm1hdC5nZXQoKSwgcmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUo
KSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1
cmFsIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfc3RyKTsKIAogICAgIHJl
dHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKHJlc3VsdC5kYXRhKCksIGxlbmd0aCkpOwogI2VuZGlm
CkBAIC0yODAsMjcgKzI4MCwyNyBAQCBKU1ZhbHVlIEludGxQbHVyYWxSdWxlczo6c2VsZWN0UmFu
Z2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YXJ0LAogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChzdGQ6OmlzbmFuKHN0
YXJ0KSB8fCBzdGQ6OmlzbmFuKGVuZCkpCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQ
YXNzZWQgbnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zdHIpOwogCiAgICAgaWYgKGVuZCA8IHN0
YXJ0KQotICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3N0
cik7CiAKICAgICBpZiAoaXNOZWdhdGl2ZVplcm8oZW5kKSAmJiBzdGFydCA+PSAwKQotICAgICAg
ICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBs
YXJnZXIgdGhhbiBlbmQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzdGFydCBpcyBsYXJnZXIgdGhhbiBlbmQiX3N0cik7CiAKICAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHJhbmdlID0gc3RkOjp1
bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNVRGVsZXRlcjx1bnVtcmZfY2xvc2VS
ZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2Vs
ZWN0IHJhbmdlIG9mIHBsdXJhbCB2YWx1ZSJfc3RyKTsKIAogICAgIHVudW1yZl9mb3JtYXREb3Vi
bGVSYW5nZShtX251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydCwgZW5kLCByYW5nZS5n
ZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3Qg
cmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHJhbmdlIG9mIHBsdXJhbCB2
YWx1ZSJfc3RyKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsKICAgICBzdGF0dXMg
PSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odXBscnVsZXNfc2VsZWN0Rm9yUmFuZ2UsIG1f
cGx1cmFsUnVsZXMuZ2V0KCksIHJhbmdlLmdldCgpLCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxV
UkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBw
bHVyYWwgdmFsdWUiX3N0cik7CiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoV1RGTW92
ZShidWZmZXIpKSk7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNwcAppbmRleCA4MTJh
YWEyMDAwZTMwYjllNmI5Y2Y3MzA1N2JlZDQ0NDAyMjc4ODE2Li4zYmNlN2RmYzQxOGIyMzlkOGU2
N2EzMTk0MDU5MzhiYzZkN2VkZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3IuY3BwCkBAIC03NCw3
ICs3NCw3IEBAIEludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yOjpJbnRsUGx1cmFsUnVsZXNDb25z
dHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0CiAKIHZvaWQgSW50bFBsdXJhbFJ1bGVz
Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bFBsdXJhbFJ1bGVzUHJvdG90
eXBlKiBwbHVyYWxSdWxlc1Byb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgMCwgIlBsdXJhbFJ1bGVzIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVj
dHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiUGx1cmFs
UnVsZXMiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0
aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBwbHVyYWxSdWxlc1Byb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkpOwogICAgIHBsdXJhbFJ1bGVzUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXNQ
cm90b3R5cGUuY3BwCmluZGV4IDYyYzA4YmY5NTdhMTMyZjEyZDZkNGJmYjJkODFjZGIwOThkM2E1
OTEuLjZhYWJiZTkwNTcwZDc3N2Q5MGI2NTBmODVmYmFhOGNhN2I5MDJlNmEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJv
dG90eXBlLmNwcApAQCAtOTEsNyArOTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50
bFBsdXJhbFJ1bGVzUHJvdG90eXBlRnVuY1NlbGVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAg
IEludGxQbHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQbHVyYWxS
dWxlcyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIGlmICghcGx1cmFsUnVs
ZXMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdCBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIFBsdXJhbFJ1bGVzIl9zKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
UGx1cmFsUnVsZXMucHJvdG90eXBlLnNlbGVjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IFBsdXJhbFJ1bGVzIl9zdHIpKTsKIAogICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTEwOCwxMyArMTA4LDEzIEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0UmFuZ2Us
IChKU0dsb2JhbE9iamVjCiAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVt
YmVyZm9ybWF0LXYzL291dC9wbHVyYWxydWxlcy9kaWZmLmh0bWwjc2VjLWludGwucGx1cmFscnVs
ZXMucHJvdG90eXBlLnNlbGVjdHJhbmdlCiAgICAgSW50bFBsdXJhbFJ1bGVzKiBwbHVyYWxSdWxl
cyA9IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJhbFJ1bGVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghcGx1cmFsUnVsZXMpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUGx1cmFsUnVs
ZXMucHJvdG90eXBlLnNlbGVjdFJhbmdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgUGx1
cmFsUnVsZXMiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2Vs
ZWN0UmFuZ2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxlcyJfc3RyKSk7
CiAKICAgICBKU1ZhbHVlIHN0YXJ0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAg
IEpTVmFsdWUgZW5kVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgaWYgKHN0
YXJ0VmFsdWUuaXNVbmRlZmluZWQoKSB8fCBlbmRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgb3Ig
ZW5kIGlzIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zdHIpOwogCiAg
ICAgZG91YmxlIHN0YXJ0ID0gc3RhcnRWYWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0xMzYsNyArMTM2LDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxlc1Byb3RvdHlwZUZ1bmNSZXNvbHZl
ZE9wdGlvbnMsIChKU0dsb2JhbE8KICAgICBJbnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0g
anNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVsZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAKICAgICBpZiAoIXBsdXJhbFJ1bGVzKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVz
LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQ
bHVyYWxSdWxlcyJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxlcyJf
c3RyKSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShw
bHVyYWxSdWxlcy0+cmVzb2x2ZWRPcHRpb25zKGdsb2JhbE9iamVjdCkpKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1h
dC5jcHAKaW5kZXggZTMyOGExYzFmNDBjNDllNjk1NDUxYTUzZDI5OWU1MjMxN2I5ZDc1Ni4uMzBj
NmM3MDU2NjYxOTkxMDFjMjRiYTY1OGIyYmMxN2QxNTgzMzc0YSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAK
QEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmluaXRpYWxp
emVSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKCFudW1iZXJpbmdTeXN0ZW0uaXNO
dWxsKCkpIHsKICAgICAgICAgaWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShudW1i
ZXJpbmdTeXN0ZW0pKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIm51bWJlcmluZ1N5c3RlbSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBudW1iZXJpbmcg
c3lzdGVtIHZhbHVlIl9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51bWJlcmlu
ZyBzeXN0ZW0gdmFsdWUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAg
ICAgICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNp
b25LZXk6Ok51KV0gPSBudW1iZXJpbmdTeXN0ZW07CkBAIC0xMTAsNyArMTEwLDcgQEAgdm9pZCBJ
bnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojppbml0aWFsaXplUmVsYXRpdmVUaW1lRm9ybWF0KEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWwKICAgICBhdXRvIHJlc29sdmVkID0gcmVzb2x2ZUxvY2FsZShnbG9i
YWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGxvY2FsZU1hdGNo
ZXIsIGxvY2FsZU9wdGlvbnMsIHsgUmVsZXZhbnRFeHRlbnNpb25LZXk6Ok51IH0sIGxvY2FsZURh
dGEpOwogICAgIG1fbG9jYWxlID0gcmVzb2x2ZWQubG9jYWxlOwogICAgIGlmIChtX2xvY2FsZS5p
c0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZlVGltZUZvcm1hdCBkdWUgdG8gaW52YWxpZCBs
b2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxv
Y2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM4LDcgKzEzOCw3IEBA
IHZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1h
dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9f
RVJST1I7CiAgICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8VU51bWJlckZvcm1h
dCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lNQUwsIG51bGxwdHIs
IDAsIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsK
ICAgICBpZiAoVU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1cykpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxhdGl2
ZVRpbWVGb3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zdHIpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjMsMTMgKzE2MywxMyBAQCB2b2lkIEludGxSZWxh
dGl2ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbAogCiAgICAgVU51bWJlckZvcm1hdCogY2xvbmVkTnVtYmVyRm9ybWF0ID0gdW51
bV9jbG9uZShtX251bWJlckZvcm1hdC5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVOTElLRUxZ
KFVfRkFJTFVSRShzdGF0dXMpKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBp
bml0aWFsaXplIFJlbGF0aXZlVGltZUZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIG1fcmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxV
UmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciwgVVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXJEZWxl
dGVyPih1cmVsZGF0ZWZtdF9vcGVuKGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIGNs
b25lZE51bWJlckZvcm1hdCwgaWN1U3R5bGUsIFVESVNQQ1RYX0NBUElUQUxJWkFUSU9OX0ZPUl9T
VEFOREFMT05FLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVOTElLRUxZKFVfRkFJTFVSRShzdGF0dXMp
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZl
VGltZUZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0KQEAgLTE5NSw3ICsx
OTUsNyBAQCBKU09iamVjdCogSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6cmVzb2x2ZWRPcHRpb25z
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBj
b25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIG9wdGlvbnMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bG9jYWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1f
bG9jYWxlKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5z
dHlsZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBzdHlsZVN0cmluZyhtX3N0eWxlKSkpOwotICAg
IG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bnVtZXJpYywganNOb250
cml2aWFsU3RyaW5nKHZtLCBtX251bWVyaWMgPyAiYWx3YXlzIl9zIDogImF1dG8iX3MpKTsKKyAg
ICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm51bWVyaWMsIGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgbV9udW1lcmljID8gImFsd2F5cyJfc3RyIDogImF1dG8iX3N0cikp
OwogICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bnVtYmVyaW5n
U3lzdGVtLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbnVtYmVyaW5nU3lzdGVtKSk7CiAgICAg
cmV0dXJuIG9wdGlvbnM7CiB9CkBAIC0yMzksMTMgKzIzOSwxMyBAQCBTdHJpbmcgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6Zm9ybWF0SW50ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgZG91YgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAg
IGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXIgYXJndW1lbnQgbXVzdCBiZSBmaW5pdGUiX3MpOwor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm51bWJlciBhcmd1
bWVudCBtdXN0IGJlIGZpbml0ZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IH0KIAogICAgIGF1dG8gdW5pdFR5cGUgPSByZWxhdGl2ZVRpbWVVbml0VHlwZSh1bml0KTsKICAg
ICBpZiAoIXVuaXRUeXBlKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAidW5pdCBhcmd1bWVudCBpcyBub3QgYSByZWNvZ25pemVkIHVuaXQgdHlwZSJfcyk7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBhcmd1
bWVudCBpcyBub3QgYSByZWNvZ25pemVkIHVuaXQgdHlwZSJfc3RyKTsKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIH0KIApAQCAtMjU0LDcgKzI1NCw3IEBAIFN0cmluZyBJbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Ojpmb3JtYXRJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3ViCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0OwogICAgIGF1dG8gc3RhdHVzID0g
Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKGZvcm1hdFJlbGF0aXZlVGltZSwgbV9yZWxhdGl2
ZURhdGVUaW1lRm9ybWF0dGVyLmdldCgpLCB2YWx1ZSwgdW5pdFR5cGUudmFsdWUoKSwgcmVzdWx0
KTsKICAgICBpZiAoVU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1cykpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZl
IHRpbWUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGZvcm1hdCByZWxhdGl2ZSB0aW1lIl9zdHIpOwogICAgICAgICByZXR1cm4gU3Ry
aW5nKCk7CiAgICAgfQogCkBAIC0yOTEsNyArMjkxLDcgQEAgSlNWYWx1ZSBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRv
dWIKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBidWZmZXI7CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZl
clByb2R1Y2luZ0Z1bmN0aW9uKHVudW1fZm9ybWF0RG91YmxlRm9yRmllbGRzLCBtX251bWJlckZv
cm1hdC5nZXQoKSwgYWJzVmFsdWUsIGJ1ZmZlciwgaXRlcmF0b3IuZ2V0KCkpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRpbWUiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBm
b3JtYXQgcmVsYXRpdmUgdGltZSJfc3RyKTsKIAogICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0g
U3RyaW5nKGJ1ZmZlcik7CiAKQEAgLTI5OSw3ICsyOTksNyBAQCBKU1ZhbHVlIEludGxSZWxhdGl2
ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
ZG91YgogICAgIGlmICghcGFydHMpCiAgICAgICAgIHJldHVybiB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7CiAKLSAgICBKU1N0cmluZyogbGl0ZXJhbFN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOworICAgIEpTU3RyaW5nKiBsaXRl
cmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfc3RyKTsKIAogICAg
IC8vIFdlIG9ubHkgaGF2ZSBvbmUgaW5wdXQgbnVtYmVyLCBzbyBvdXIgcmVsYXRpdmUgdGltZSB3
aWxsIGhhdmUgYXQgbW9zdCBvbmUgbnVtZXJpYyBzdWJzdHJpbmcsCiAgICAgLy8gYnV0IHdlIG5l
ZWQgdG8gbGlzdCBhbGwgb2YgdGhlIG51bWVyaWMgcGFydHMgc2VwYXJhdGVseS4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCmluZGV4IGE4MjVjMzY2NzEzYzE0NDkwY2I2ZGRl
YjQ1NzZkYmQ1NTZjZjM2NjQuLjU1NjZjNTBmNzViYTAyMWE0Y2U2YjJhMjlhNzljYWQ4NTdiMzAz
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtNzQsNyArNzQs
NyBAQCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OkludGxSZWxhdGl2ZVRpbWVG
b3JtYXRDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cgogCiB2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsUmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlKiByZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDAsICJSZWxhdGl2ZVRpbWVGb3JtYXQiX3MsIFByb3BlcnR5QWRk
aXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sIDAsICJSZWxhdGl2ZVRpbWVGb3JtYXQiX3N0ciwgUHJvcGVydHlBZGRpdGlv
bk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCByZWxhdGl2ZVRpbWVG
b3JtYXRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBy
ZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0
UHJvdG90eXBlLmNwcAppbmRleCBkNDc5NDVhZDZhOTcyYWZmZjVlNjM4YmFkOTRlNDJlMDlmOTll
MzIxLi4wNDM1ZjI4ODJlNDU1MTJjOTgxMGNjZTY1NzNjNGM2ZjVjOGY0OGU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcApAQCAtODQsNyArODQsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oaW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXQsIChK
U0dsb2JhbE9iagogCiAgICAgYXV0byogcmVsYXRpdmVUaW1lRm9ybWF0ID0ganNEeW5hbWljQ2Fz
dDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghcmVsYXRpdmVUaW1lRm9ybWF0KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlJlbGF0aXZlVGlt
ZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgUmVs
YXRpdmVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0
LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBSZWxhdGl2ZVRp
bWVGb3JtYXQiX3N0cikpOwogCiAgICAgZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTAzLDcgKzEwMyw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihpbnRsUmVsYXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFy
dHMsIChKU0dsCiAKICAgICBhdXRvKiByZWxhdGl2ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0
PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCFyZWxhdGl2ZVRpbWVGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1l
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgUmVsYXRpdmVUaW1lRm9ybWF0Il9zdHIpKTsKIAogICAgIGRvdWJsZSB2YWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTEyMiw3ICsxMjIsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZUZ1
bmNSZXNvbHZlZE9wdGlvbnMsIChKUwogCiAgICAgYXV0byogcmVsYXRpdmVUaW1lRm9ybWF0ID0g
anNEeW5hbWljQ2FzdDxJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwogICAgIGlmICghcmVsYXRpdmVUaW1lRm9ybWF0KQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRs
LlJlbGF0aXZlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgUmVsYXRpdmVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3N0cikpOwogCiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUocmVsYXRpdmVUaW1lRm9ybWF0
LT5yZXNvbHZlZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90
eXBlLmNwcAppbmRleCAwN2MwNWNiYzBiY2FlOWMyNWEzZjNjYjAxMWVjMzJhZDhjNTYzMzI1Li4w
ZDE4NDM1MzIxYjA0N2MxMGJhMWFiNGRiZjBkNjVhNWY4NTEzMGJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudEl0ZXJhdG9y
UHJvdG90eXBlLmNwcApAQCAtNzksNyArNzksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
aW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZUZ1bmNOZXh0LCAoSlNHbG9iYWxPYmplY3QqCiAK
ICAgICBhdXRvKiBzZWdtZW50SXRlcmF0b3IgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdtZW50SXRl
cmF0b3IqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFzZWdtZW50SXRl
cmF0b3IpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnRsLlNlZ21lbnRJdGVyYXRvci5wcm90b3R5cGUubmV4dCBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIFNlZ21lbnRJdGVyYXRvciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRJdGVyYXRvci5wcm90
b3R5cGUubmV4dCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFNlZ21lbnRJdGVyYXRvciJf
c3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNl
Z21lbnRJdGVyYXRvci0+bmV4dChnbG9iYWxPYmplY3QpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCmluZGV4IDhkODVmZTdjOWNjMmU2
MGNmZTZiMjIzODMzNDk3ZGRmOWI0ZjdjYjMuLmFjMTkyNjk4MTA1MGM1YWY4YjgzNzIwNjQ0YTY2
MmNkNzc5OTkxNTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxTZWdtZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxT
ZWdtZW50ZXIuY3BwCkBAIC04NSw3ICs4NSw3IEBAIHZvaWQgSW50bFNlZ21lbnRlcjo6aW5pdGlh
bGl6ZVNlZ21lbnRlcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvCiAK
ICAgICBtX2xvY2FsZSA9IHJlc29sdmVkLmxvY2FsZTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50ZXIgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0
aWFsaXplIFNlZ21lbnRlciBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEludGxTZWdtZW50ZXI6Omlu
aXRpYWxpemVTZWdtZW50ZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBs
bwogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIG1fc2VnbWVudGVy
ID0gc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+
KHVicmtfb3Blbih0eXBlLCBtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCBudWxscHRyLCAwLCAmc3Rh
dHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50ZXIi
X3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGluaXRpYWxpemUgU2VnbWVudGVyIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
fQpAQCAtMTI4LDEyICsxMjgsMTIgQEAgSlNWYWx1ZSBJbnRsU2VnbWVudGVyOjpzZWdtZW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgc3RyaW5nVmFsdWUKICAgICBVRXJy
b3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIHNlZ21lbnRlciA9IHN0ZDo6
dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFrSXRlcmF0b3JEZWxldGVyPihjbG9uZVVC
cmVha0l0ZXJhdG9yKG1fc2VnbWVudGVyLmdldCgpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50cyJfcyk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50
cyJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgdWJya19zZXRUZXh0KHNl
Z21lbnRlci5nZXQoKSwgdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLT5kYXRhKCksIHVwY29udmVydGVk
Q2hhcmFjdGVycy0+c2l6ZSgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIFNlZ21lbnRzIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRzIl9zdHIpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMjU5MDYx
MDUwY2VjYmJhZWQ5Y2E0MTJjNDYwNzExNzkwOTVlOWQwNC4uYTZkODkxMzRmYjIyNmFmYmRiYjIx
ZGVjNzJiOGI0ZWNkMjg3ODNkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3IuY3BwCkBAIC03Miw3ICs3Miw3
IEBAIEludGxTZWdtZW50ZXJDb25zdHJ1Y3Rvcjo6SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yKFZN
JiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAKIHZvaWQgSW50bFNlZ21lbnRlckNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEludGxTZWdtZW50ZXJQcm90b3R5cGUqIHNlZ21l
bnRlclByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlNlZ21l
bnRlciJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlNlZ21lbnRlciJfc3RyLCBQcm9w
ZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERp
cmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHNl
Z21lbnRlclByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAg
IHNlZ21lbnRlclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCmluZGV4IDY2YTVj
YzNhOTdlZGY2OThiYmI5YTFlMjMxNmUwYzFmYzk5YTllNWEuLmEyNDY3MzBjOGUwYzM3ZjkxNDJk
NmYzMTU4OTBhNzNkMjk0NGI4YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQcm90b3R5cGUuY3BwCkBAIC04MSw3ICs4MSw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsU2VnbWVudGVyUHJvdG90eXBlRnVuY1NlZ21l
bnQsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBzZWdtZW50ZXIgPSBqc0R5bmFt
aWNDYXN0PEludGxTZWdtZW50ZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKCFzZWdtZW50ZXIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRlci5wcm90b3R5cGUuc2VnbWVudCBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIFNlZ21lbnRlciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRlci5wcm90b3R5cGUu
c2VnbWVudCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFNlZ21lbnRlciJfc3RyKTsKIAog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRlci0+
c2VnbWVudChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSk7CiB9CkBAIC05
NCw3ICs5NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsU2VnbWVudGVyUHJvdG90
eXBlRnVuY1Jlc29sdmVkT3B0aW9ucywgKEpTR2xvYmFsT2JqCiAKICAgICBhdXRvKiBzZWdtZW50
ZXIgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdtZW50ZXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCFzZWdtZW50ZXIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLlNlZ21lbnRlci5wcm90b3R5cGUucmVzb2x2
ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgU2VnbWVudGVyIl9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
U2VnbWVudGVyLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBTZWdtZW50ZXIiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShzZWdtZW50ZXItPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3Qp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzLmNw
cAppbmRleCA4ZGUzNGEzMDRlZGUwM2UwYjg0YjIwYzI4MDExMzQ0MTk5NmFiNGY4Li40MWM5OWM3
Y2I1YTA2MDc1NDRlNDliMjEzMWI5Y2YyNTBiZTk3MTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCBKU09i
amVjdCogSW50bFNlZ21lbnRzOjpjcmVhdGVTZWdtZW50SXRlcmF0b3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAg
ICBhdXRvIHNlZ21lbnRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVQnJlYWtJdGVyYXRvciwgVUJyZWFr
SXRlcmF0b3JEZWxldGVyPihjbG9uZVVCcmVha0l0ZXJhdG9yKG1fc2VnbWVudGVyLmdldCgpLCAm
c3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50
SXRlcmF0b3IiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVudEl0ZXJhdG9yIl9zdHIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCmluZGV4IDUzZTNlY2YwMmZmODRh
MjkzNjljNTQ5YTY2ZDA3ODk2ZTVlZjZkZDcuLjkwZjIwOTRlZjg0NjliNDhjY2FjNTQ4MDliZjdm
NjI0N2Y0OTlkNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxTZWdtZW50c1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcApAQCAtODAsNyArODAsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bFNlZ21lbnRzUHJvdG90eXBlRnVuY0NvbnRhaW5pbmcsIChKU0ds
b2JhbE9iamVjdCogZwogCiAgICAgYXV0byogc2VnbWVudHMgPSBqc0R5bmFtaWNDYXN0PEludGxT
ZWdtZW50cyo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNlZ21lbnRz
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
JVNlZ21lbnRzLnByb3RvdHlwZSUuY29udGFpbmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIFNlZ21lbnRzIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIiVTZWdtZW50cy5wcm90b3R5cGUlLmNvbnRhaW5pbmcgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBTZWdtZW50cyJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRzLT5jb250YWluaW5nKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKTsKIH0KQEAgLTkzLDcgKzkzLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxTZWdtZW50c1Byb3RvdHlwZUZ1bmNJdGVyYXRvciwg
KEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogICAgIGF1dG8qIHNlZ21lbnRzID0ganNEeW5hbWljQ2Fz
dDxJbnRsU2VnbWVudHMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFz
ZWdtZW50cykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIiVTZWdtZW50cy5wcm90b3R5cGUlW0BAaXRlcmF0b3JdIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgU2VnbWVudHMiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJVNlZ21lbnRzLnByb3RvdHlwZSVbQEBpdGVyYXRvcl0g
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBTZWdtZW50cyJfc3RyKTsKIAogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRzLT5jcmVhdGVTZWdt
ZW50SXRlcmF0b3IoZ2xvYmFsT2JqZWN0KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKaW5kZXggYzMxNjlhMmNlNTk3
ZDc0MGZmMDJkZjcyNzNkZjJlNmVhMGM3MzMwNy4uMzdhMWU4MzBlZGJhYTRlOWJlMzNiNTIxMTkz
N2EyZTMyNWQ5Mzk5YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SXRlcmF0b3JPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCkBAIC01Miw3ICs1Miw3IEBAIEpTVmFsdWUgaXRlcmF0
b3JOZXh0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEl0ZXJhdGlvblJlY29yZCBpdGVy
YXRpb25SZWNvCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKIAog
ICAgIGlmICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3Qg
YW4gb2JqZWN0LiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJf
c3RyKTsKIAogICAgIHJldHVybiByZXN1bHQ7CiB9CkBAIC0xMjIsNyArMTIyLDcgQEAgdm9pZCBp
dGVyYXRvckNsb3NlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlcmF0
b3IpCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCB2b2lkKCkpOwogCiAgICAg
aWYgKCFpbm5lclJlc3VsdC5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9z
dHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtMTYwLDcgKzE2MCw3IEBAIGJvb2wg
aGFzSXRlcmF0b3JNZXRob2QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2
YWx1ZSkKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh2YWx1ZSk7CiAgICAgQ2Fs
bERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IG9iamVjdC0+Z2V0TWV0
aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3lt
Ym9sLCAiU3ltYm9sLml0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7Cisg
ICAgSlNWYWx1ZSBhcHBseU1ldGhvZCA9IG9iamVjdC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwg
Y2FsbERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPml0ZXJhdG9yU3ltYm9sLCAiU3ltYm9sLml0ZXJh
dG9yIHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICByZXR1cm4gIWFwcGx5TWV0aG9kLmlzVW5kZWZp
bmVkKCk7CkBAIC0xNzIsNyArMTcyLDcgQEAgSlNWYWx1ZSBpdGVyYXRvck1ldGhvZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0KQogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IEpTVmFsdWUgbWV0aG9kID0gb2JqZWN0LT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0
YSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsICJTeW1ib2wuaXRlcmF0b3IgcHJv
cGVydHkgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIG1ldGhvZCA9IG9iamVj
dC0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPml0
ZXJhdG9yU3ltYm9sLCAiU3ltYm9sLml0ZXJhdG9yIHByb3BlcnR5IHNob3VsZCBiZSBjYWxsYWJs
ZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBqc1VuZGVmaW5lZCgpKTsK
IAogICAgIHJldHVybiBtZXRob2Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJy
YXkuY3BwCmluZGV4IDMxNzk4NWZmZWQ2YWViM2U4ODU5Mzg0MzAyMDNlYzliYTQzZDBjYzAuLmNl
MWM2ZjQyMzQ4NTNiMjI5Y2M4ZDZlZDhmOGRkMTZkZGU4YjhmNDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC0xNjAsNyArMTYwLDcgQEAgYm9vbCBKU0Fy
cmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogICAgICAgICAgICAgZG91YmxlIHZhbHVlQXNOdW1iZXIgPSBkZXNjcmlw
dG9yLnZhbHVlKCkudG9OdW1iZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgICAgIGlmICh2YWx1ZUFzTnVtYmVy
ICE9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewotICAgICAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcnJheSBsZW5ndGgi
X3MpOworICAgICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW52YWxpZCBhcnJheSBsZW5ndGgiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0yMDgsNyArMjA4LDcgQEAgYm9vbCBK
U0FycmF5OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgICAgICB1aW50MzJfdCBpbmRleCA9IG9wdGlvbmFsSW5kZXgu
dmFsdWUoKTsKICAgICAgICAgLy8gRklYTUU6IE5vdGhpbmcgcHJldmVudHMgdGhpcyBmcm9tIGJl
aW5nIGNhbGxlZCBvbiBhIFJ1bnRpbWVBcnJheSwgYW5kIHRoZSBsZW5ndGggZnVuY3Rpb24gd2ls
bCBhbHdheXMgcmV0dXJuIDAgaW4gdGhhdCBjYXNlLgogICAgICAgICBpZiAoaW5kZXggPj0gYXJy
YXktPmxlbmd0aCgpICYmICFhcnJheS0+aXNMZW5ndGhXcml0YWJsZSgpKQotICAgICAgICAgICAg
cmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgIkF0
dGVtcHRpbmcgdG8gZGVmaW5lIG51bWVyaWMgcHJvcGVydHkgb24gYXJyYXkgd2l0aCBub24td3Jp
dGFibGUgbGVuZ3RoIHByb3BlcnR5LiJfcyk7CisgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBkZWZp
bmUgbnVtZXJpYyBwcm9wZXJ0eSBvbiBhcnJheSB3aXRoIG5vbi13cml0YWJsZSBsZW5ndGggcHJv
cGVydHkuIl9zdHIpOwogICAgICAgICAvLyBjLiBMZXQgc3VjY2VlZGVkIGJlIHRoZSByZXN1bHQg
b2YgY2FsbGluZyB0aGUgZGVmYXVsdCBbW0RlZmluZU93blByb3BlcnR5XV0gaW50ZXJuYWwgbWV0
aG9kICg4LjEyLjkpIG9uIEEgcGFzc2luZyBQLCBEZXNjLCBhbmQgZmFsc2UgYXMgYXJndW1lbnRz
LgogICAgICAgICAvLyBkLiBSZWplY3QgaWYgc3VjY2VlZGVkIGlzIGZhbHNlLgogICAgICAgICAv
LyBlLiBJZiBpbmRleCA+PSBvbGRMZW4KQEAgLTI0Niw3ICsyNDYsNyBAQCBib29sIEpTQXJyYXk6
OnB1dChKU0NlbGwqIGNlbGwsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5
TmFtZSBwcm9wZQogICAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoKSB7CiAgICAgICAgIGlmICghdGhpc09iamVjdC0+aXNMZW5ndGhXcml0YWJsZSgpKSB7CiAg
ICAgICAgICAgICBpZiAoc2xvdC5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQXJyYXkgbGVuZ3RoIGlzIG5vdCB3cml0
YWJsZSJfcyk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkFycmF5IGxlbmd0aCBpcyBub3Qgd3JpdGFibGUiX3N0cik7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtMjU4LDcgKzI1OCw3IEBAIGJvb2wgSlNBcnJh
eTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVy
dHlOYW1lIHByb3BlCiAgICAgICAgIGRvdWJsZSB2YWx1ZUFzTnVtYmVyID0gdmFsdWUudG9OdW1i
ZXIoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgICAgICBpZiAodmFsdWVBc051bWJlciAhPSBzdGF0aWNfY2FzdDxkb3VibGU+KG5l
d0xlbmd0aCkpIHsKLSAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBhcnJheSBsZW5ndGgi
X3MpKTsKKyAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBhcnJheSBsZW5ndGgiX3N0cikp
OwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgdGhpc09iamVjdC0+c2V0TGVuZ3RoKGdsb2JhbE9iamVjdCwgbmV3
TGVuZ3RoLCBzbG90LmlzU3RyaWN0TW9kZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCmluZGV4IGNmYTA4
Y2JlZjUxZjExNTgxOTY5NTVkMDUyNzFmNjc2MjFlYmU4YzUuLjI1YTIwNmE5MjZkMGY5YTdiZmM3
NDBhYjU3MDZjYTU0NWEzZDYwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3BwCkBAIC02MSw3ICs2MSw3IEBA
IHN0ZDo6b3B0aW9uYWw8SlNWYWx1ZT4gYXJyYXlCdWZmZXJTcGVjaWVzQ29uc3RydWN0b3JTbG93
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoIWNvbnN0cnVjdG9yLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNvbnN0cnVjdG9yIHByb3BlcnR5IHNob3VsZCBub3Qg
YmUgbnVsbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJjb25zdHJ1Y3RvciBwcm9wZXJ0eSBzaG91bGQgbm90IGJlIG51bGwiX3N0cik7CiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCkBAIC0xMDQsMTQgKzEwNCwxNCBAQCBzdGF0
aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNBcnJh
eUJ1ZmZlcio+IHNwZWNpZXNDbwogICAgIC8vIDE3LiBQZXJmb3JtID8gUmVxdWlyZUludGVybmFs
U2xvdChuZXcsIFtbQXJyYXlCdWZmZXJEYXRhXV0pLgogICAgIEpTQXJyYXlCdWZmZXIqIHJlc3Vs
dCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBuZXdPYmplY3QpOwogICAgIGlm
IChVTkxJS0VMWSghcmVzdWx0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gZG9lcyBub3QgY3JlYXRlIEFycmF5QnVm
ZmVyIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNw
ZWNpZXMgY29uc3RydWN0aW9uIGRvZXMgbm90IGNyZWF0ZSBBcnJheUJ1ZmZlciJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIGVycm9yUmVzdWx0OwogICAgIH0KIAogICAgIGlmIChtb2RlID09IEFycmF5
QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQpIHsKICAgICAgICAgLy8gMTguIElmIElzU2hhcmVk
QXJyYXlCdWZmZXIobmV3KSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAg
ICAgICAgIGlmIChyZXN1bHQtPmlzU2hhcmVkKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcnJheUJ1ZmZlci5wcm90b3R5cGUuc2xpY2UgY3Jl
YXRlcyBTaGFyZWRBcnJheUJ1ZmZlciJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiQXJyYXlCdWZmZXIucHJvdG90eXBlLnNsaWNlIGNyZWF0ZXMg
U2hhcmVkQXJyYXlCdWZmZXIiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3JSZXN1bHQ7
CiAgICAgICAgIH0KICAgICAgICAgLy8gMTkuIElmIElzRGV0YWNoZWRCdWZmZXIobmV3KSBpcyB0
cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCkBAIC0xMjIsMjAgKzEyMiwyMCBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNB
cnJheUJ1ZmZlcio+IHNwZWNpZXNDbwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIDE3LiBJZiBJ
c1NoYXJlZEFycmF5QnVmZmVyKG5ldykgaXMgZmFsc2UsIHRocm93IGEgVHlwZUVycm9yIGV4Y2Vw
dGlvbi4KICAgICAgICAgaWYgKCFyZXN1bHQtPmlzU2hhcmVkKCkpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTaGFyZWRBcnJheUJ1ZmZlci5wcm90
b3R5cGUuc2xpY2UgY3JlYXRlcyBub24tc2hhcmVkIEFycmF5QnVmZmVyIl9zKTsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTaGFyZWRBcnJheUJ1ZmZl
ci5wcm90b3R5cGUuc2xpY2UgY3JlYXRlcyBub24tc2hhcmVkIEFycmF5QnVmZmVyIl9zdHIpOwog
ICAgICAgICAgICAgcmV0dXJuIGVycm9yUmVzdWx0OwogICAgICAgICB9CiAgICAgfQogCiAgICAg
Ly8gMjAuIElmIFNhbWVWYWx1ZShuZXcsIE8pIGlzIHRydWUsIHRocm93IGEgVHlwZUVycm9yIGV4
Y2VwdGlvbi4KICAgICBpZiAocmVzdWx0ID09IHRoaXNPYmplY3QpIHsKLSAgICAgICAgdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gcmV0
dXJucyBzYW1lIEFycmF5QnVmZmVyIHRvIGEgcmVjZWl2ZXIiX3MpOworICAgICAgICB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTcGVjaWVzIGNvbnN0cnVjdGlvbiByZXR1
cm5zIHNhbWUgQXJyYXlCdWZmZXIgdG8gYSByZWNlaXZlciJfc3RyKTsKICAgICAgICAgcmV0dXJu
IGVycm9yUmVzdWx0OwogICAgIH0KIAogICAgIC8vIDIxLiBJZiBuZXcuW1tBcnJheUJ1ZmZlckJ5
dGVMZW5ndGhdXSA8IG5ld0xlbiwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlm
IChyZXN1bHQtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpIDwgbGVuZ3RoKSB7Ci0gICAgICAgIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNwZWNpZXMgY29uc3RydWN0aW9uIHJl
dHVybnMgQXJyYXlCdWZmZXIgd2hpY2ggYnl0ZUxlbmd0aCBpcyBsZXNzIHRoYW4gcmVxdWVzdGVk
Il9zKTsKKyAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3Bl
Y2llcyBjb25zdHJ1Y3Rpb24gcmV0dXJucyBBcnJheUJ1ZmZlciB3aGljaCBieXRlTGVuZ3RoIGlz
IGxlc3MgdGhhbiByZXF1ZXN0ZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBlcnJvclJlc3VsdDsK
ICAgICB9CiAKQEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgYXJyYXlC
dWZmZXJTbGljZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGFycgogCiAg
ICAgLy8gNC4gSWYgSXNEZXRhY2hlZEJ1ZmZlcihPKSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJv
ciBleGNlcHRpb24uCiAgICAgaWYgKG1vZGUgPT0gQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVm
YXVsdCAmJiB0aGlzT2JqZWN0LT5pbXBsKCktPmlzRGV0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIGlzIGRldGFj
aGVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlJlY2VpdmVyIGlzIGRldGFjaGVkIl9zdHIpOwogCiAgICAgLy8gNS4gTGV0IGxlbiBi
ZSBPLltbQXJyYXlCdWZmZXJCeXRlTGVuZ3RoXV0uCiAgICAgdW5zaWduZWQgYnl0ZUxlbmd0aCA9
IHRoaXNPYmplY3QtPmltcGwoKS0+Ynl0ZUxlbmd0aCgpOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBhcnJheUJ1ZmZlclNsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgYXJyCiAKICAgICAvLyAyMy4gSWYgSXNEZXRhY2hlZEJ1ZmZlcihP
KSBpcyB0cnVlLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKG1vZGUgPT0g
QXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCAmJiB0aGlzT2JqZWN0LT5pbXBsKCktPmlz
RGV0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIGlzIGRldGFjaGVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIGlzIGRldGFjaGVkIl9z
dHIpOwogCiAgICAgaWYgKExJS0VMWShzcGVjaWVzUmVzdWx0LmZpcnN0ID09IFNwZWNpZXNDb25z
dHJ1Y3RSZXN1bHQ6OkZhc3RQYXRoKSkgewogICAgICAgICBBU1NFUlQoIXRoaXNPYmplY3QtPmlt
cGwoKS0+aXNEZXRhY2hlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAppbmRleCA5MTliMzE1OWNjMzc2MDQ1ZDlhYjk2YTNi
ZTYyZTBhYWQyMjZiZTYyLi4yNzQxZTNkZjE5Y2U4NWZjZjlhNjIzN2U5MTUwNjYxYTNkOGU4MGM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVy
Vmlldy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clZpZXcuY3BwCkBAIC0zNDQsMTMgKzM0NCwxMyBAQCBKU0FycmF5QnVmZmVyVmlldyogdmFsaWRh
dGVUeXBlZEFycmF5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdHlwZQog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghdHlw
ZWRBcnJheVZhbHVlLmlzQ2VsbCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJBcmd1bWVudCBuZWVkcyB0byBiZSBhIHR5cGVkIGFycmF5LiJfcyk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcmd1bWVudCBuZWVk
cyB0byBiZSBhIHR5cGVkIGFycmF5LiJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCiAgICAgSlNDZWxsKiB0eXBlZEFycmF5Q2VsbCA9IHR5cGVkQXJyYXlWYWx1ZS5hc0Nl
bGwoKTsKICAgICBpZiAoIWlzVHlwZWRWaWV3KHR5cGVkQXJyYXlDZWxsLT5jbGFzc0luZm8odm0p
LT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJBcmd1bWVudCBuZWVkcyB0byBiZSBhIHR5cGVkIGFycmF5LiJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcmd1bWVudCBu
ZWVkcyB0byBiZSBhIHR5cGVkIGFycmF5LiJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Jp
Z0ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKaW5k
ZXggMDNkOTQ0MGJhNWQwZTc4YmQzMTcxZGY3M2M2MjI5YzMyNWYxNDMyZC4uZmQzZDhjYzUyYmU1
MTUxYWRmMTllOWExMmEyZmY3ZGY3Mzk2Njg3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQmlnSW50LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGlubGluZSBKU0JpZ0ludCog
SlNCaWdJbnQ6OmNyZWF0ZVdpdGhMZW5ndGgoSlNHbG9iYWxPYmplY3QqIG51bGxPckdsb2JhbE9i
amVjdEZvCiAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IG1heExlbmd0aCkpIHsKICAgICAgICAg
aWYgKG51bGxPckdsb2JhbE9iamVjdEZvck9PTSkgewogICAgICAgICAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwotICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKG51bGxPckdsb2JhbE9iamVjdEZvck9PTSwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZy
b20gdGhpcyBvcGVyYXRpb24gaXMgdG9vIGJpZyJfcyk7CisgICAgICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IobnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NLCBzY29wZSwgIkJpZ0ludCBnZW5l
cmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KQEAgLTUyMyw3ICs1MjMsNyBAQCBKU0JpZ0lu
dDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlSW1wbChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBCaQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKIAogICAgIGlmIChleHBvbmVudC5zaWduKCkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJOZWdhdGl2ZSBleHBvbmVudCBpcyBub3QgYWxsb3dlZCJf
cyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiTmVnYXRp
dmUgZXhwb25lbnQgaXMgbm90IGFsbG93ZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApAQCAtNTQ5LDcgKzU0OSw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmln
SW50OjpleHBvbmVudGlhdGVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEJpCiAg
ICAgLy8gcmVzdWx0cy4KICAgICBzdGF0aWNfYXNzZXJ0KG1heExlbmd0aEJpdHMgPCBzdGQ6Om51
bWVyaWNfbGltaXRzPERpZ2l0Pjo6bWF4KCksICJtYXhMZW5ndGhCaXRzIG5lZWRzIHRvIGJlIGxl
c3MgdGhhbiBkaWdpdDo6bWF4KCkiKTsKICAgICBpZiAoZXhwb25lbnQubGVuZ3RoKCkgPiAxKSB7
Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQmln
SW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3BlcmF0aW9uIGlzIHRvbyBiaWciX3MpOworICAgICAg
ICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBnZW5l
cmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTU1Nyw3ICs1NTcsNyBAQCBKU0JpZ0ludDo6SW1wbFJl
c3VsdCBKU0JpZ0ludDo6ZXhwb25lbnRpYXRlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBCaQogICAgIGlmIChleHBWYWx1ZSA9PSAxKQogICAgICAgICByZXR1cm4gYmFzZTsKICAg
ICBpZiAoZXhwVmFsdWUgPj0gbWF4TGVuZ3RoQml0cykgewotICAgICAgICB0aHJvd091dE9mTWVt
b3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlz
IG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRp
b24gaXMgdG9vIGJpZyJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBA
IC02ODMsNyArNjgzLDcgQEAgSlNCaWdJbnQ6OkltcGxSZXN1bHQgSlNCaWdJbnQ6OmRpdmlkZUlt
cGwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQmlnSW50SW0KICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoeS5pc1plcm8oKSkgewotICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxp
ZCBkaXZpc29yIHZhbHVlLiJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZhbGlkIGRpdmlzb3IgdmFsdWUuIl9zdHIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc3OCw3ICs3NzgsNyBAQCBKU0JpZ0ludDo6
SW1wbFJlc3VsdCBKU0JpZ0ludDo6cmVtYWluZGVySW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBCaWdJbgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICAKICAgICBpZiAoeS5pc1plcm8oKSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxpZCBkaXZpc29yIHZhbHVlLiJfcyk7Cisg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZh
bGlkIGRpdmlzb3IgdmFsdWUuIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKQEAgLTIwMTEsNyArMjAxMSw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojps
ZWZ0U2hpZnRCeUFic29sdXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBh
dXRvIG9wdGlvbmFsU2hpZnQgPSB0b1NoaWZ0QW1vdW50KHkpOwogICAgIGlmICghb3B0aW9uYWxT
aGlmdCkgewotICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zKTsK
KyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJ
bnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRpb24gaXMgdG9vIGJpZyJfc3RyKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yMDIyLDcgKzIwMjIsNyBAQCBKU0JpZ0lu
dDo6SW1wbFJlc3VsdCBKU0JpZ0ludDo6bGVmdFNoaWZ0QnlBYnNvbHV0ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgIGJvb2wgZ3JvdyA9IGJpdHNTaGlmdCAmJiAoeC5kaWdpdChs
ZW5ndGggLSAxKSA+PiAoZGlnaXRCaXRzIC0gYml0c1NoaWZ0KSk7CiAgICAgaW50IHJlc3VsdExl
bmd0aCA9IGxlbmd0aCArIGRpZ2l0U2hpZnQgKyBncm93OwogICAgIGlmIChzdGF0aWNfY2FzdDx1
bnNpZ25lZD4ocmVzdWx0TGVuZ3RoKSA+IG1heExlbmd0aCkgewotICAgICAgICB0aHJvd091dE9m
TWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0
aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zKTsKKyAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVy
YXRpb24gaXMgdG9vIGJpZyJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC0yMzk4LDcgKzIzOTgsNyBAQCBKU0JpZ0ludCogSlNCaWdJbnQ6OmFsbG9jYXRlRm9yKEpT
R2xvYmFsT2JqZWN0KiBudWxsT3JHbG9iYWxPYmplY3RGb3JPT00sIFZNJiB2bQogCiAgICAgaWYg
KG51bGxPckdsb2JhbE9iamVjdEZvck9PTSkgewogICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihudWxsT3JH
bG9iYWxPYmplY3RGb3JPT00sIHNjb3BlLCAiQmlnSW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3Bl
cmF0aW9uIGlzIHRvbyBiaWciX3MpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IobnVs
bE9yR2xvYmFsT2JqZWN0Rm9yT09NLCBzY29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlz
IG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgIH0KIAogICAgIHJldHVybiBudWxscHRy
OwpAQCAtMjQxMyw3ICsyNDEzLDcgQEAgZG91YmxlIEpTQmlnSW50Ojp0b051bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24gZnJvbSAnQmln
SW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJl
cicgaXMgbm90IGFsbG93ZWQuIl9zdHIpOwogICAgIHJldHVybiAwLjA7CiB9CiAKQEAgLTI5NTks
NyArMjk1OSw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50Ojphc1VpbnROSW1wbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCB1aW50NjRfCiAgICAgLy8gSWYgYmlnSW50IGlz
IG5lZ2F0aXZlLCBzaW11bGF0ZSB0d28ncyBjb21wbGVtZW50IHJlcHJlc2VudGF0aW9uLgogICAg
IGlmIChiaWdJbnQuc2lnbigpKSB7CiAgICAgICAgIGlmIChuID4gbWF4TGVuZ3RoQml0cykgewot
ICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJC
aWdJbnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRpb24gaXMgdG9vIGJpZyJfcyk7CisgICAg
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0lu
dCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCB0cnVuY2F0ZUFuZFN1YkZyb21Qb3dlck9mVHdvKGdsb2JhbE9iamVjdCwgc3Rh
dGljX2Nhc3Q8aW50MzJfdD4obiksIGJpZ0ludCwgZmFsc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0JpZ0ludC5oCmluZGV4IGUwYjViY2ZhMTA3NTc5NGQ1Yzc2NzdlNDFiYmI5
MjBkMWRlMDdmZjIuLmM5MjAzZDZjZDVjMGMwYTU2MzgyMGZjZDgyYzY3MjBmMWFmMjMzMTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuaApAQCAtMzA2LDcgKzMwNiw3
IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGlmICgheSkgewogICAgICAgICAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUoZ2V0Vk0oZ2xvYmFsT2JqZWN0KSk7Ci0gICAgICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxp
ZCBkaXZpc29yIHZhbHVlLiJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIjAgaXMgYW4gaW52YWxpZCBkaXZpc29yIHZhbHVlLiJfc3RyKTsKICAg
ICAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGFz
SW50MzJPckhlYXBDZWxsKGdsb2JhbE9iamVjdCwgc3RhdGljX2Nhc3Q8aW50NjRfdD4oeCkgLyBz
dGF0aWNfY2FzdDxpbnQ2NF90Pih5KSk7CkBAIC0zMjEsNyArMzIxLDcgQEAgcHVibGljOgogICAg
IHsKICAgICAgICAgaWYgKCF5KSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRShnZXRWTShnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZhbGlkIGRpdmlzb3IgdmFsdWUu
Il9zKTsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
MCBpcyBhbiBpbnZhbGlkIGRpdmlzb3IgdmFsdWUuIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWUoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gYXNJbnQzMk9ySGVhcENlbGwo
Z2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxpbnQ2NF90Pih4KSAlIHN0YXRpY19jYXN0PGludDY0
X3Q+KHkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pT
VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAK
aW5kZXggMTg1YWNlNzI3ZDE1NDdmOTZkOGZmNjczOWQ1MzYzNGJhMGVjZWI0NS4uNmVlOWZmN2Qx
NzI0ZTIzOTY0MTg2MjU3ZGZhY2JkMjA2NzYwMTQyMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgZG91YmxlIEpTVmFs
dWU6OnRvTnVtYmVyU2xvd0Nhc2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QK
ICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBhc0NlbGwoKS0+dG9OdW1iZXIoZ2xv
YmFsT2JqZWN0KSk7CiAjaWYgVVNFKEJJR0lOVDMyKQogICAgIGlmIChpc0JpZ0ludDMyKCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNpb24g
ZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3MpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udmVyc2lvbiBmcm9tICdCaWdJ
bnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxvd2VkLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIDAu
MDsKICAgICB9CiAjZW5kaWYKQEAgLTExOCw3ICsxMTgsNyBAQCBKU1ZhbHVlIEpTVmFsdWU6OnRv
QmlnSW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgfQogCiAgICAg
QVNTRVJUKHByaW1pdGl2ZS5pc1VuZGVmaW5lZE9yTnVsbCgpIHx8IHByaW1pdGl2ZS5pc051bWJl
cigpIHx8IHByaW1pdGl2ZS5pc1N5bWJvbCgpKTsKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJhdGlv
biJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQg
YXJndW1lbnQgdHlwZSBpbiBUb0JpZ0ludCBvcGVyYXRpb24iX3N0cik7CiAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0NKU1ZhbHVlSW5saW5lcy5oCmluZGV4IDc5MjY3NjNjZDU2NWRlYmIxYTBiMWM5Y2YxN2ZkMzA5
MjE0NDg2NmEuLmQ0YmUzNjVkNDBhYWM2YTY2MGQ0ZmExZmE5ODEyNGU2ZmM0OWU4ZmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaApA
QCAtODM1LDcgKzgzNSw3IEBAIGlubGluZSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHRvUHJlZmVy
cmVkUHJpbWl0aXZlVHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcmltaXRp
dmUgaGludCBpcyBub3QgYSBzdHJpbmcuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByaW1pdGl2ZSBoaW50IGlzIG5vdCBhIHN0cmluZy4iX3N0cik7
CiAgICAgICAgIHJldHVybiBOb1ByZWZlcmVuY2U7CiAgICAgfQogCkBAIC04NDksNyArODQ5LDcg
QEAgaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUgdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBpZiAoV1RGOjplcXVhbChoaW50U3RyaW5n
LCAic3RyaW5nIikpCiAgICAgICAgIHJldHVybiBQcmVmZXJTdHJpbmc7CiAKLSAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQgcHJpbWl0aXZlIGhpbnQgdG8g
bWF0Y2ggb25lIG9mICdkZWZhdWx0JywgJ251bWJlcicsICdzdHJpbmcnLiJfcyk7CisgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIHByaW1pdGl2ZSBoaW50
IHRvIG1hdGNoIG9uZSBvZiAnZGVmYXVsdCcsICdudW1iZXInLCAnc3RyaW5nJy4iX3N0cik7CiAg
ICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlldy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0RhdGFWaWV3LmNwcAppbmRleCBhYmE2ODhkZTQ4NzFmODRjNjI1MWI3OGYwYjgzY2Q2
Mjg2NjcxZDIzLi43OWNkMzc4YTk3ZDBlYmU0MTMwYTA5Y2RmN2NhNWNhZTY4Mjc1MzE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcApAQCAtNDksMTUg
KzQ5LDE1IEBAIEpTRGF0YVZpZXcqIEpTRGF0YVZpZXc6OmNyZWF0ZSgKIAogICAgIEFTU0VSVChi
dWZmZXIpOwogICAgIGlmIChidWZmZXItPmlzRGV0YWNoZWQoKSkgewotICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQnVmZmVyIGlzIGFscmVhZHkgZGV0YWNoZWQi
X3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQnVmZmVy
IGlzIGFscmVhZHkgZGV0YWNoZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IH0KICAgICBpZiAoIUFycmF5QnVmZmVyVmlldzo6dmVyaWZ5U3ViUmFuZ2VMZW5ndGgoKmJ1ZmZl
ciwgYnl0ZU9mZnNldCwgYnl0ZUxlbmd0aCwgc2l6ZW9mKHVpbnQ4X3QpKSkgewotICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ug
b2YgYnVmZmVyIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJMZW5ndGggb3V0IG9mIHJhbmdlIG9mIGJ1ZmZlciJfc3RyKTsKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2ZXJpZnlCeXRlT2Zm
c2V0QWxpZ25tZW50KGJ5dGVPZmZzZXQsIHNpemVvZih1aW50OF90KSkpIHsKLSAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCeXRlIG9mZnNldCBpcyBub3QgYWxp
Z25lZCJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
Qnl0ZSBvZmZzZXQgaXMgbm90IGFsaWduZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRy
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNE
YXRhVmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Rh
dGFWaWV3UHJvdG90eXBlLmNwcAppbmRleCBlOThjNzhhYmFiZjk4MzFjZmYwNjVjMWJlOTAyYmZh
YzgwYTA2ZDJhLi4yZGMxNzY0YjgxYzU5ZWZkZmExNzI5MmU3OTE5M2NiM2MwMzgwMjViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90
eXBlLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAKICAgICBKU0Rh
dGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRhdGFWaWV3KQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcg
bWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2Qg
bXVzdCBiZSBhIERhdGFWaWV3Il9zdHIpOwogICAgIAogICAgIHNpemVfdCBieXRlT2Zmc2V0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwgImJ5dGVPZmZzZXQi
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAg
LTE0NywxMSArMTQ3LDExIEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgfQogCiAgICAgaWYgKGRh
dGFWaWV3LT5pc0RldGFjaGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRh
Y2hlZCBmcm9tIHRoZSB2aWV3Il9zdHIpOwogCiAgICAgc2l6ZV90IGJ5dGVMZW5ndGggPSBkYXRh
Vmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxlbmd0aCB8fCBieXRl
T2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfc3RyKTsKIAogICAgIGNvbnN0IHVuc2lnbmVkIGRhdGFT
aXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUpOwogICAgIHVuaW9uIHsKQEAgLTE4
MCw3ICsxODAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogCiAgICAgSlNEYXRhVmlldyogZGF0YVZp
ZXcgPSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAgICAgaWYgKCFkYXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJl
IGEgRGF0YVZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgb2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRh
VmlldyJfc3RyKTsKICAgICAKICAgICBzaXplX3QgYnl0ZU9mZnNldCA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkudG9JbmRleChnbG9iYWxPYmplY3QsICJieXRlT2Zmc2V0Iik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0yMDIsMTEgKzIwMiwx
MSBAQCBFbmNvZGVkSlNWYWx1ZSBzZXREYXRhKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIH0KIAogICAgIGlmIChkYXRhVmlldy0+aXNEZXRh
Y2hlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2
aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUg
dmlldyJfc3RyKTsKIAogICAgIHNpemVfdCBieXRlTGVuZ3RoID0gZGF0YVZpZXctPmxlbmd0aCgp
OwogICAgIGlmIChlbGVtZW50U2l6ZSA+IGJ5dGVMZW5ndGggfHwgYnl0ZU9mZnNldCA+IGJ5dGVM
ZW5ndGggLSBlbGVtZW50U2l6ZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT3V0IG9mIGJvdW5k
cyBhY2Nlc3MiX3N0cik7CiAKICAgICB1aW50OF90KiBkYXRhUHRyID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGRhdGFWaWV3LT52ZWN0b3IoKSkgKyBieXRlT2Zmc2V0OwogCkBAIC0yNDQsNyArMjQ0
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGRhdGFWaWV3UHJvdG9HZXR0ZXJCeXRlTGVu
Z3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRhVmlldy5wcm90
b3R5cGUuYnl0ZUxlbmd0aCBleHBlY3RzIHx0aGlzfCB0byBiZSBhIERhdGFWaWV3IG9iamVjdCIp
OwogICAgIGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBi
ZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMg
YmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc051bWJlcih2aWV3LT5sZW5ndGgoKSkpOwogfQpAQCAtMjU4LDcgKzI1OCw3IEBA
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkYXRhVmlld1Byb3RvR2V0dGVyQnl0ZU9mZnNldCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcucHJvdG90eXBl
LmJ5dGVPZmZzZXQgZXhwZWN0cyB8dGhpc3wgdG8gYmUgYSBEYXRhVmlldyBvYmplY3QiKTsKICAg
ICBpZiAodmlldy0+aXNEZXRhY2hlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBk
ZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4g
ZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIodmlldy0+Ynl0ZU9mZnNldCgpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGVNYXRoLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCmluZGV4IGZjNmZkMzhlY2IzOTJlOWQ1ZWE1NGQ1
NzAyNTc4NTYyMjg5NDM0ZmIuLjFhOTA0MzE4N2Y3ZGIzNDc5ZTIxYWMyMTk0YWYxNjZkMmE0MWE4
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGgu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1hdGguY3BwCkBA
IC0zNDQsMTEgKzM0NCwxMSBAQCBTdHJpbmcgRGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUoKQog
ICAgIFVCb29sIGlzU3lzdGVtID0gZmFsc2U7CiAgICAgaWN1OjpUaW1lWm9uZTo6Z2V0Q2Fub25p
Y2FsSUQodGltZVpvbmVJRCwgY2Fub25pY2FsVGltZVpvbmVJRCwgaXNTeXN0ZW0sIHN0YXR1cyk7
CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gIlVUQyJfczsKKyAg
ICAgICAgcmV0dXJuICJVVEMiX3N0cjsKIAogICAgIFN0cmluZyBjYW5vbmljYWwgPSBTdHJpbmco
Y2Fub25pY2FsVGltZVpvbmVJRC5nZXRCdWZmZXIoKSwgY2Fub25pY2FsVGltZVpvbmVJRC5sZW5n
dGgoKSk7CiAgICAgaWYgKGlzVVRDRXF1aXZhbGVudChjYW5vbmljYWwpKQotICAgICAgICByZXR1
cm4gIlVUQyJfczsKKyAgICAgICAgcmV0dXJuICJVVEMiX3N0cjsKIAogICAgIHJldHVybiBjYW5v
bmljYWw7CiAjZW5kaWYKQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIERhdGVDYWNoZTo6dGltZVpv
bmVDYWNoZVNsb3coKQogICAgICAgICAgICAgY2Fub25pY2FsID0gU3RyaW5nKGNhbm9uaWNhbEJ1
ZmZlcik7CiAgICAgfQogICAgIGlmIChjYW5vbmljYWwuaXNOdWxsKCkgfHwgaXNVVENFcXVpdmFs
ZW50KGNhbm9uaWNhbCkpCi0gICAgICAgIGNhbm9uaWNhbCA9ICJVVEMiX3M7CisgICAgICAgIGNh
bm9uaWNhbCA9ICJVVEMiX3N0cjsKICAgICBjYWNoZS0+bV9jYW5vbmljYWxUaW1lWm9uZUlEID0g
V1RGTW92ZShjYW5vbmljYWwpOwogCiAgICAgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBkOTM3YjM2YjMw
NDU3NDQwY2VhOGJlYTUxOGQxOTgxOWE2NGE5ZDVjLi5mNTA5NzJhZDk1MjlmZGQzNWYyZjYzZDFh
OGU2N2Y4NDhmYzU3YjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1
bmN0aW9uLmNwcApAQCAtNTEyLDcgKzUxMiw3IEBAIFN0cmluZyBnZXRDYWxjdWxhdGVkRGlzcGxh
eU5hbWUoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogI2lmIEVOQUJMRShXRUJBU1NFTUJM
WSkKICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1RvV2FzbUlDQ2FsbGVlKj4odm0sIG9iamVjdCkp
Ci0gICAgICAgIHJldHVybiAid2FzbS1zdHViIl9zOworICAgICAgICByZXR1cm4gIndhc20tc3R1
YiJfc3RyOwogI2VuZGlmCiAKICAgICBpZiAoIWpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZt
LCBvYmplY3QpICYmICFqc0R5bmFtaWNDYXN0PEludGVybmFsRnVuY3Rpb24qPih2bSwgb2JqZWN0
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5
cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCmluZGV4
IDZmZmVjMzEwY2VlOGU2MWE0NWM0ZjQyNzU0YmI5MDBhZjMwODhkNDEuLjg2YTgyMDcyNmJhNmM1
ZjZmNjY4MDc4YmFiNjVhY2U3NmZlMGE4OTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZp
ZXdDb25zdHJ1Y3RvcklubGluZXMuaApAQCAtMTIxLDcgKzEyMSw3IEBAIGlubGluZSBKU0FycmF5
QnVmZmVyKiBjb25zdHJ1Y3RDdXN0b21BcnJheUJ1ZmZlcklmTmVlZGVkKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgaWYgKCFzcGVjaWVzLT5p
c0NvbnN0cnVjdG9yKHZtKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAic3BlY2llcyBpcyBub3QgYSBjb25zdHJ1Y3RvciJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzcGVjaWVzIGlzIG5vdCBhIGNvbnN0cnVj
dG9yIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE1Myw3ICsx
NTMsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dp
dGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIGlmIChKU0FycmF5QnVmZmVyKiBq
c0J1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlcio+KHZtLCBmaXJzdFZhbHVlKSkg
ewogICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGJ1ZmZlciA9IGpzQnVmZmVyLT5pbXBsKCk7
CiAgICAgICAgIGlmIChidWZmZXItPmlzRGV0YWNoZWQoKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJ1ZmZlciBpcyBhbHJlYWR5IGRldGFjaGVk
Il9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJC
dWZmZXIgaXMgYWxyZWFkeSBkZXRhY2hlZCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBpbmxpbmUgSlNPYmplY3QqIGNv
bnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3Qq
IGdsbwogICAgICAgICAgICAgbGVuZ3RoID0gbGVuZ3RoT3B0LnZhbHVlKCk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgaWYgKFVOTElLRUxZKChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9m
ZnNldCkgJSBWaWV3Q2xhc3M6OmVsZW1lbnRTaXplKSkgewotICAgICAgICAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVz
IHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxlIG9mIHRoZSBlbGVtZW50IHNpemUiX3Mp
OworICAgICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
QXJyYXlCdWZmZXIgbGVuZ3RoIG1pbnVzIHRoZSBieXRlT2Zmc2V0IGlzIG5vdCBhIG11bHRpcGxl
IG9mIHRoZSBlbGVtZW50IHNpemUiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBsZW5ndGggPSAoYnVmZmVyLT5ieXRlTGVu
Z3RoKCkgLSBvZmZzZXQpIC8gVmlld0NsYXNzOjplbGVtZW50U2l6ZTsKQEAgLTE3Myw3ICsxNzMs
NyBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhB
cmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgIEFTU0VSVCghb2Zmc2V0ICYmICFsZW5n
dGhPcHQpOwogICAgIAogICAgIGlmIChVTkxJS0VMWShWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9y
YWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJFeHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3Vt
ZW50LiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJF
eHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFyZ3VtZW50LiJfc3RyKTsKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIApAQCAtMTkxLDEyICsxOTEsMTIgQEAgaW5s
aW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRz
KEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICAgICAgICAgIGN1c3RvbUJ1ZmZlciA9IGNvbnN0cnVj
dEN1c3RvbUFycmF5QnVmZmVySWZOZWVkZWQoZ2xvYmFsT2JqZWN0LCB2aWV3KTsKICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogICAgICAgICAgICAgaWYg
KHZpZXctPmlzRGV0YWNoZWQoKSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFj
aGVkIGZyb20gdGhlIHZpZXciX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChjb250ZW50VHlwZShvYmplY3QtPmNs
YXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgIT0gVmlld0NsYXNzOjpjb250ZW50
VHlwZSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDb250ZW50IHR5cGVzIG9mIHNvdXJjZSBhbmQgbmV3IHR5cGVkIGFycmF5IGFyZSBkaWZm
ZXJlbnQiX3MpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDb250ZW50IHR5cGVzIG9mIHNvdXJjZSBhbmQgbmV3IHR5cGVkIGFycmF5IGFyZSBk
aWZmZXJlbnQiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAg
ICAgICB9CiAKQEAgLTI2OSw3ICsyNjksNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld0ltcGwoSlNHbG9iYWxPYmplY3QqCiAKICAg
ICBpZiAoIWFyZ0NvdW50KSB7CiAgICAgICAgIGlmIChWaWV3Q2xhc3M6OlR5cGVkQXJyYXlTdG9y
YWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVxdWlyZXMg
YXQgbGVhc3Qgb25lIGFyZ3VtZW50LiJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRGF0YVZpZXcgY29uc3RydWN0b3IgcmVxdWly
ZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiJfc3RyKTsKIAogICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShWaWV3Q2xhc3M6OmNyZWF0ZShnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgMCkpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCmlu
ZGV4IGQzMmEyYjBjMGMwM2IzYzI5YmI4ZTVmZTk0YzNjMDdlZmJkOGI1NzAuLjNmM2QxMzFjODAw
MjYxOTg5ODRjY2U3NWEwOTZlYmE3ZWU3NDcwNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5l
cy5oCkBAIC0xODAsNyArMTgwLDcgQEAgYm9vbCBKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFw
dG9yPjo6c2V0V2l0aFNwZWNpZmljVHlwZSgKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
aWYgY29uc3RleHByIChBZGFwdG9yOjpjb250ZW50VHlwZSAhPSBPdGhlckFkYXB0b3I6OmNvbnRl
bnRUeXBlKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJD
b250ZW50IHR5cGVzIG9mIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gdHlwZWQgYXJyYXlzIGFyZSBk
aWZmZXJlbnQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQ29udGVudCB0eXBlcyBvZiBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIHR5cGVkIGFycmF5cyBh
cmUgZGlmZmVyZW50Il9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIApA
QCAtNDU3LDcgKzQ1Nyw3IEBAIGJvb2wgSlNHZW5lcmljVHlwZWRBcnJheVZpZXc8QWRhcHRvcj46
OmRlZmluZU93blByb3BlcnR5KAogICAgIH0KIAogICAgIGlmIChpc0Nhbm9uaWNhbE51bWVyaWNJ
bmRleFN0cmluZyhwcm9wZXJ0eU5hbWUpKQotICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHNob3VsZFRocm93LCAiQXR0ZW1wdGluZyB0byBzdG9yZSBjYW5vbmlj
YWwgbnVtZXJpYyBzdHJpbmcgcHJvcGVydHkgb24gYSB0eXBlZCBhcnJheSJfcyk7CisgICAgICAg
IHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2hvdWxkVGhyb3csICJBdHRl
bXB0aW5nIHRvIHN0b3JlIGNhbm9uaWNhbCBudW1lcmljIHN0cmluZyBwcm9wZXJ0eSBvbiBhIHR5
cGVkIGFycmF5Il9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBCYXNlOjpk
ZWZpbmVPd25Qcm9wZXJ0eSh0aGlzT2JqZWN0LCBnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSwg
ZGVzY3JpcHRvciwgc2hvdWxkVGhyb3cpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25z
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZUZ1bmN0aW9ucy5oCmluZGV4IGRmMDQzNWY2ZTM3OTgwNjFkOWY2Y2NjNmQ3NTlk
ZmU2NmJkNmQ5ZmEuLmYzNjE3NmUxOGM1NTA1MGRmZThhMjhiYmMwNGYyYTU2MTlkNTg3MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaApAQCAtNTUs
NyArNTUsNyBAQCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXNDb25zdHJ1Y3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplYwogICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIGRlZmF1bHRDb25zdHJ1Y3RvcigpKTsKIAogICAgIGlmICghY29uc3RydWN0
b3IuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiY29uc3RydWN0b3IgUHJvcGVydHkgc2hvdWxkIG5vdCBiZSBudWxsIl9zKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNvbnN0cnVjdG9yIFByb3Bl
cnR5IHNob3VsZCBub3QgYmUgbnVsbCJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC03MSw3ICs3MSw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2ll
c0NvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjCiAKICAgICBp
ZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJW
aWV3Kj4odm0sIHJlc3VsdCkpIHsKICAgICAgICAgaWYgKHZpZXctPnR5cGUoKSA9PSBEYXRhVmll
d1R5cGUpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJzcGVjaWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3Il9z
KTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzcGVj
aWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRBcnJheSBWaWV3Il9zdHIpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIApAQCAtODIsNyArODIsNyBA
QCBpbmxpbmUgSlNBcnJheUJ1ZmZlclZpZXcqIHNwZWNpZXNDb25zdHJ1Y3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYmplYwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3BlY2llcyBjb25z
dHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyJfcyk7CisgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5v
dCByZXR1cm4gYSBUeXBlZEFycmF5IFZpZXciX3N0cik7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKQEAgLTEwOCw3ICsxMDgsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVlIGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChWTSYgdm0sIEpTR2xvYmFsTwogICAgIFZpZXdD
bGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKIAogICAgIGlmIChVTkxJS0VMWSghY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhw
ZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1
bWVudCJfc3RyKTsKIAogICAgIHNpemVfdCBvZmZzZXQ7CiAgICAgaWYgKGNhbGxGcmFtZS0+YXJn
dW1lbnRDb3VudCgpID49IDIpIHsKQEAgLTUwMiw3ICs1MDIsNyBAQCBBTFdBWVNfSU5MSU5FIEVu
Y29kZWRKU1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKFZNJiB2bSwg
SlNHbG9iYQogICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyN0eXBlZGFycmF5LXNwZWNp
ZXMtY3JlYXRlCiAgICAgLy8gSWYgcmVzdWx0LltbQ29udGVudFR5cGVdXSDiiaAgZXhlbXBsYXIu
W1tDb250ZW50VHlwZV1dLCB0aHJvdyBhIFR5cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKGNv
bnRlbnRUeXBlKHJlc3VsdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSAh
PSBWaWV3Q2xhc3M6OmNvbnRlbnRUeXBlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udGVudCB0eXBlcyBvZiBzb3VyY2UgYW5kIGNyZWF0
ZWQgdHlwZWQgYXJyYXlzIGFyZSBkaWZmZXJlbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29udGVudCB0eXBlcyBvZiBzb3VyY2Ug
YW5kIGNyZWF0ZWQgdHlwZWQgYXJyYXlzIGFyZSBkaWZmZXJlbnQiX3N0cik7CiAKICAgICAvLyBX
ZSByZXR1cm4gZWFybHkgaGVyZSBzaW5jZSB3ZSBkb24ndCBhbGxvY2F0ZSBhIGJhY2tpbmcgc3Rv
cmUgaWYgbGVuZ3RoIGlzIDAgYW5kIG1lbW1vdmUgZG9lcyBub3QgbGlrZSBudWxscHRycwogICAg
IGlmICghbGVuZ3RoKQpAQCAtNTEzLDcgKzUxMyw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpT
VmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoVk0mIHZtLCBKU0dsb2Jh
CiAKICAgICAvLyBUaGUgc3BlY2llcyBjb25zdHJ1Y3RvciBtYXkgcmV0dXJuIGFuIGFycmF5IHdp
dGggYW55IGFyYml0cmFyeSBsZW5ndGguCiAgICAgaWYgKHJlc3VsdC0+bGVuZ3RoKCkgPCBsZW5n
dGgpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUeXBlZEFycmF5LnByb3RvdHlwZS5zbGljZSBjb25zdHJ1Y3RlZCB0eXBlZCBhcnJheSBvZiBp
bnN1ZmZpY2llbnQgbGVuZ3RoIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkQXJyYXkucHJvdG90eXBlLnNsaWNlIGNvbnN0cnVj
dGVkIHR5cGVkIGFycmF5IG9mIGluc3VmZmljaWVudCBsZW5ndGgiX3N0cik7CiAKICAgICBzd2l0
Y2ggKHJlc3VsdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VUeXBlKSB7CiAgICAg
Y2FzZSBUeXBlSW50ODoKQEAgLTYzMSw3ICs2MzEsNyBAQCBBTFdBWVNfSU5MSU5FIEVuY29kZWRK
U1ZhbHVlIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUoVk0m
CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHZhbGlkYXRlZCA9IHZhbGlkYXRlVHlwZWRBcnJheShn
bG9iYWxPYmplY3QsIHJlc3VsdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICBpZiAoY29udGVudFR5cGUodmFsaWRhdGVkLT5jbGFzc0luZm8odm0pLT50eXBlZEFy
cmF5U3RvcmFnZVR5cGUpICE9IFZpZXdDbGFzczo6Y29udGVudFR5cGUpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUeXBlZEFycmF5LnByb3Rv
dHlwZS5zdWJhcnJheSBjb25zdHJ1Y3RlZCB0eXBlZCBhcnJheSBvZiBkaWZmZXJlbnQgY29udGVu
dCB0eXBlIGZyb20gfHRoaXN8Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5IGNvbnN0
cnVjdGVkIHR5cGVkIGFycmF5IG9mIGRpZmZlcmVudCBjb250ZW50IHR5cGUgZnJvbSB8dGhpc3wi
X3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZhbGlkYXRlZCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXgg
ZmE2MjNlMDkwNzRjMzhmYmUzMjM0MTY3ZGNkNTkyMDJmOGYxNTFiNi4uNzA3MmY5M2I0YTU4YzEw
NmExYTM4NDViOWI4ODFmZTIwNjViNzZkYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtODU0LDcgKzg1NCw3IEBAIHZvaWQgSlNH
bG9iYWxPYmplY3Q6OmluaXQoVk0mIHZtKQogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJl
OjpJbml0aWFsaXplciYgaW5pdCkgeyBcCiAgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShK
UyAjIyB0eXBlICMjIEFycmF5UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgaW5pdC5nbG9iYWws
IEpTICMjIHR5cGUgIyMgQXJyYXlQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBp
bml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJheVByb3RvLmdldChpbml0Lmdsb2Jh
bCkpKSk7IFwKICAgICAgICAgICAgIGluaXQuc2V0U3RydWN0dXJlKEpTICMjIHR5cGUgIyMgQXJy
YXk6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5wcm90b3R5cGUp
KTsgXAotICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihKUyAjIyB0eXBlICMjIEFycmF5
Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlwZSAjIyBB
cnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGlu
aXQuZ2xvYmFsLT5tX3R5cGVkQXJyYXlTdXBlckNvbnN0cnVjdG9yLmdldChpbml0Lmdsb2JhbCkp
LCBpbml0LnByb3RvdHlwZSwgI3R5cGUgIkFycmF5Il9zKSk7IFwKKyAgICAgICAgICAgIGluaXQu
c2V0Q29uc3RydWN0b3IoSlMgIyMgdHlwZSAjIyBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGUoaW5p
dC52bSwgaW5pdC5nbG9iYWwsIEpTICMjIHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRl
U3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV90eXBlZEFycmF5
U3VwZXJDb25zdHJ1Y3Rvci5nZXQoaW5pdC5nbG9iYWwpKSwgaW5pdC5wcm90b3R5cGUsICN0eXBl
ICJBcnJheSJfc3RyKSk7IFwKICAgICAgICAgICAgIGluaXQuZ2xvYmFsLT5wdXREaXJlY3QoaW5p
dC52bSwgaW5pdC52bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS50eXBlICMjIEFycmF5
UHJpdmF0ZU5hbWUoKSwgaW5pdC5jb25zdHJ1Y3Rvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOyBcCiAgICAgICAgIH0pOwogICAgIEZPUl9FQUNI
X1RZUEVEX0FSUkFZX1RZUEVfRVhDTFVESU5HX0RBVEFfVklFVyhJTklUX1RZUEVEX0FSUkFZX0xB
VEVSKQpAQCAtODY0LDcgKzg2NCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OmluaXQoVk0mIHZt
KQogICAgICAgICBbXSAoTGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkgewog
ICAgICAgICAgICAgaW5pdC5zZXRQcm90b3R5cGUoSlNEYXRhVmlld1Byb3RvdHlwZTo6Y3JlYXRl
KGluaXQudm0sIEpTRGF0YVZpZXdQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBp
bml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fb2JqZWN0UHJvdG90eXBlLmdldCgpKSkpOwogICAg
ICAgICAgICAgaW5pdC5zZXRTdHJ1Y3R1cmUoSlNEYXRhVmlldzo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGluaXQuZ2xvYmFsLCBpbml0LnByb3RvdHlwZSkpOwotICAgICAgICAgICAgaW5pdC5z
ZXRDb25zdHJ1Y3RvcihKU0RhdGFWaWV3Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0
Lmdsb2JhbCwgSlNEYXRhVmlld0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
aW5pdC5nbG9iYWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgaW5p
dC5wcm90b3R5cGUsICJEYXRhVmlldyJfcykpOworICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1
Y3RvcihKU0RhdGFWaWV3Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwg
SlNEYXRhVmlld0NvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9i
YWwsIGluaXQuZ2xvYmFsLT5tX2Z1bmN0aW9uUHJvdG90eXBlLmdldCgpKSwgaW5pdC5wcm90b3R5
cGUsICJEYXRhVmlldyJfc3RyKSk7CiAgICAgICAgIH0pOwogICAgIAogICAgIG1fbGV4aWNhbEVu
dmlyb25tZW50U3RydWN0dXJlLnNldCh2bSwgdGhpcywgSlNMZXhpY2FsRW52aXJvbm1lbnQ6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgdGhpcykpOwpAQCAtMTM5Nyw3ICsxMzk3LDcgQEAgY2FwaXRhbE5h
bWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFn
ID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgIGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShp
bml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKSwgMiwgU3RyaW5nKCks
IGdsb2JhbEZ1bmNDb3B5RGF0YVByb3BlcnRpZXMpKTsKICAgICAgICAgfSk7CiAgICAgbV9saW5r
VGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25zdGFudDo6ZW5x
dWV1ZUpvYildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlNDZWxsPiYgaW5pdCkg
ewotICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5xdWV1
ZUpvYikpOworICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0s
IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCAiZW5xdWV1ZUpvYiJfc3Ry
LCBlbnF1ZXVlSm9iKSk7CiAgICAgICAgIH0pOwogICAgIG1fbGlua1RpbWVDb25zdGFudHNbc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KExpbmtUaW1lQ29uc3RhbnQ6Om1ha2VUeXBlRXJyb3IpXS5pbml0
TGF0ZXIoW10gKGNvbnN0IEluaXRpYWxpemVyPEpTQ2VsbD4mIGluaXQpIHsKICAgICAgICAgICAg
IGluaXQuc2V0KEpTRnVuY3Rpb246OmNyZWF0ZShpbml0LnZtLCBqc0Nhc3Q8SlNHbG9iYWxPYmpl
Y3QqPihpbml0Lm93bmVyKSwgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNNYWtlVHlwZUVycm9yKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dERlYnVnZ2FibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3REZWJ1Z2dhYmxlLmNwcAppbmRleCBkZTVlMzdkMGZhMzQwMmU3NzZmMWZmZjgyY2QxZTU0
NjhlNjZmZjFiLi4yNzVkYjY1NGEzNGI0ZjM3OGRkYzM4NDFjM2E0M2VkNTFhM2ViNWZiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVn
Z2FibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RGVidWdnYWJsZS5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlOjpKU0dsb2JhbE9iamVjdERlYnVnZ2FibGUoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIFN0cmluZyBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6Om5hbWUoKSBjb25zdAogewogICAg
IFN0cmluZyBuYW1lID0gbV9nbG9iYWxPYmplY3QubmFtZSgpOwotICAgIHJldHVybiBuYW1lLmlz
RW1wdHkoKSA/ICJKU0NvbnRleHQiX3MgOiBuYW1lOworICAgIHJldHVybiBuYW1lLmlzRW1wdHko
KSA/ICJKU0NvbnRleHQiX3N0ciA6IG5hbWU7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3REZWJ1
Z2dhYmxlOjpjb25uZWN0KEZyb250ZW5kQ2hhbm5lbCYgZnJvbnRlbmRDaGFubmVsLCBib29sIGF1
dG9tYXRpY0luc3BlY3Rpb24sIGJvb2wgaW1tZWRpYXRlbHlQYXVzZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cAppbmRleCAwOTRmNzZiZjJkN2JiNzAyY2IxNDUzMDA4ZTRkYzc5MzVkOTljMTVkLi44OTM0NGI0
NDAyODUzYzlhMmY1ODE1NmU5MjJhMTM1YzQ2YzdmYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCkBA
IC03MSw3ICs3MSw3IEBAIHN0YXRpYyBKU1ZhbHVlIGVuY29kZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBCaXRtYXA8MjU2PiYgZG9Ob3RFc2NhCiAgICAgLy8gaHR0cHM6Ly90
YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtZW5jb2RlCiAKICAgICBhdXRvIHRocm93RXhjZXB0
aW9uID0gWyZzY29wZSwgZ2xvYmFsT2JqZWN0XSB7Ci0gICAgICAgIHJldHVybiBKU0M6OnRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVj
dCwgIlN0cmluZyBjb250YWluZWQgYW4gaWxsZWdhbCBVVEYtMTYgc2VxdWVuY2UuIl9zKSk7Cisg
ICAgICAgIHJldHVybiBKU0M6OnRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVjdCwgIlN0cmluZyBjb250YWluZWQgYW4gaWxsZWdhbCBV
VEYtMTYgc2VxdWVuY2UuIl9zdHIpKTsKICAgICB9OwogCiAgICAgU3RyaW5nQnVpbGRlciBidWls
ZGVyKFN0cmluZ0J1aWxkZXI6Ok92ZXJmbG93SGFuZGxlcjo6UmVjb3JkT3ZlcmZsb3cpOwpAQCAt
MjAzLDcgKzIwMyw3IEBAIHN0YXRpYyBKU1ZhbHVlIGRlY29kZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBDaGFyVHlwZSogY2hhcmFjdGVycywKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIGlmIChjaGFyTGVuID09IDApIHsKICAgICAgICAgICAgICAgICBpZiAoc3RyaWN0
KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlVVJJRXJyb3IoZ2xvYmFsT2JqZWN0LCAiVVJJIGVycm9yIl9zKSk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVVUklFcnJvcihnbG9iYWxPYmplY3QsICJVUkkgZXJyb3IiX3N0cikpOwogICAg
ICAgICAgICAgICAgIC8vIFRoZSBvbmx5IGNhc2Ugd2hlcmUgd2UgZG9uJ3QgdXNlICJzdHJpY3Qi
IG1vZGUgaXMgdGhlICJ1bmVzY2FwZSIgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgLy8gRm9y
IHRoYXQsIGl0J3MgZ29vZCB0byBzdXBwb3J0IHRoZSB3b25reSAiJXUiIHN5bnRheCBmb3IgY29t
cGF0aWJpbGl0eSB3aXRoIFdpbklFLgogICAgICAgICAgICAgICAgIGlmIChrIDw9IGxlbmd0aCAt
IDYgJiYgcFsxXSA9PSAndScKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAppbmRleCA5NmEwZjdkYTQzZDNjZTgz
MTFmZWM5NmQ5NjM4MzlhYWM5ODZlOTE0Li5kOWY5YWJlNDY5Mzc5N2NlZjZmNjYyYTQwMTEwNDFm
ODE2MjNjOWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01v
ZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3BwCkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSlNN
b2R1bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEFic3RyCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJNb2R1bGUiX3MpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJvbCwganNOb250cml2
aWFsU3RyaW5nKHZtLCAiTW9kdWxlIl9zdHIpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CiAKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0y
NjIvNi4wLyNzZWMtbW9kdWxlLW5hbWVzcGFjZS1leG90aWMtb2JqZWN0cy1nZXRwcm90b3R5cGVv
ZgogICAgIC8vIGh0dHA6Ly93d3cuZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAv
I3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4b3RpYy1vYmplY3RzLXNldHByb3RvdHlwZW9mLXYKQEAg
LTI3OSwyOCArMjc5LDI4IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93
blByb3BlcnR5KEpTT2JqZWN0KiBjZWxsLCBKU0dsb2JhbE9iamVjdCoKICAgICAvLyA0LiBJZiBJ
c0FjY2Vzc29yRGVzY3JpcHRvcihEZXNjKSBpcyB0cnVlLCByZXR1cm4gZmFsc2UuCiAgICAgaWYg
KGRlc2NyaXB0b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAoc2hvdWxk
VGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
Q2Fubm90IGNoYW5nZSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcgdG8gYWNjZXNz
b3IiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkNhbm5vdCBjaGFuZ2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QncyBiaW5kaW5nIHRvIGFjY2Vz
c29yIl9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gNS4gSWYg
RGVzYy5bW1dyaXRhYmxlXV0gaXMgcHJlc2VudCBhbmQgaGFzIHZhbHVlIGZhbHNlLCByZXR1cm4g
ZmFsc2UuCiAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgIWRlc2NyaXB0
b3Iud3JpdGFibGUoKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNoYW5nZSBtb2R1bGUg
bmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcgdG8gbm9uLXdyaXRhYmxlIGF0dHJpYnV0ZSJfcyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90
IGNoYW5nZSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcgdG8gbm9uLXdyaXRhYmxl
IGF0dHJpYnV0ZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8v
IDYuIElmIERlc2MuW1tFbnVtZXJhYmxlXV0gaXMgcHJlc2VudCBhbmQgaGFzIHZhbHVlIGZhbHNl
LCByZXR1cm4gZmFsc2UuCiAgICAgaWYgKGRlc2NyaXB0b3IuZW51bWVyYWJsZVByZXNlbnQoKSAm
JiAhZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpIHsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQot
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBy
ZXBsYWNlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0J3MgYmluZGluZyB3aXRoIG5vbi1lbnVtZXJh
YmxlIGF0dHJpYnV0ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiQ2Fubm90IHJlcGxhY2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QncyBiaW5k
aW5nIHdpdGggbm9uLWVudW1lcmFibGUgYXR0cmlidXRlIl9zdHIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgLy8gNy4gSWYgRGVzYy5bW0NvbmZpZ3VyYWJsZV1dIGlzIHBy
ZXNlbnQgYW5kIGhhcyB2YWx1ZSB0cnVlLCByZXR1cm4gZmFsc2UuCiAgICAgaWYgKGRlc2NyaXB0
b3IuY29uZmlndXJhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsK
ICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByZXBsYWNlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0
J3MgYmluZGluZyB3aXRoIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUiX3MpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByZXBsYWNlIG1vZHVs
ZSBuYW1lc3BhY2Ugb2JqZWN0J3MgYmluZGluZyB3aXRoIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUi
X3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTMxMCw3ICszMTAsNyBA
QCBib29sIEpTTW9kdWxlTmFtZXNwYWNlT2JqZWN0OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVj
dCogY2VsbCwgSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICAgIGlmIChzaG91
bGRUaHJvdykKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2Fubm90IHJlcGxhY2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QncyBiaW5kaW5nJ3Mg
dmFsdWUiX3MpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJDYW5ub3QgcmVwbGFjZSBtb2R1bGUgbmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcn
cyB2YWx1ZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5kZXgg
NmI3YzU4ODFhZDliZmZkY2E1YTI0OWE0MzcxMDI1YTJjZjQ3ZjgwYi4uMDNlNzZmNmQ3N2QxY2I4
YTViOTdhMzlhMjk5ZGVkYzAxYjcyYWExMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTM5MSw3ICszOTEsNyBAQCBTdHJpbmdpZmllcjo6U3Ry
aW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmluZ0J1
aWxkZXImCiAgICAgfQogCiAgICAgaWYgKHZhbHVlLmlzQmlnSW50KCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IobV9nbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90
IHNlcmlhbGl6ZSBCaWdJbnQuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9nbG9iYWxP
YmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6ZSBCaWdJbnQuIl9z
dHIpOwogICAgICAgICByZXR1cm4gU3RyaW5naWZ5RmFpbGVkOwogICAgIH0KIApAQCAtNDEzLDcg
KzQxMyw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVu
ZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKICAgICAvLyBIYW5kbGUgY3ljbGUgZGV0
ZWN0aW9uLCBhbmQgcHV0IHRoZSBob2xkZXIgb24gdGhlIHN0YWNrLgogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtX2hvbGRlclN0YWNrLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIGlmICht
X2hvbGRlclN0YWNrW2ldLm9iamVjdCgpID09IG9iamVjdCkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IobV9nbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNl
cmlhbGl6ZSBjeWNsaWMgc3RydWN0dXJlcy4iX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IobV9nbG9iYWxPYmplY3QsIHNjb3BlLCAiSlNPTi5zdHJpbmdpZnkgY2Fubm90IHNlcmlhbGl6
ZSBjeWNsaWMgc3RydWN0dXJlcy4iX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gU3RyaW5naWZ5
RmFpbGVkOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCmluZGV4IGQ1NDRhNDNiYTE5ZWEzMjdmYmQyODE1YWRjN2FmMzQxNmM1NjFh
NjYuLjU5OTA0OGZmY2U1ZWM5ZWFlYTA0OWM1OWVkZWQzY2U5OTczNDVjMDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKQEAgLTU1Nyw3ICs1NTcsNyBAQCBT
dHJpbmcgSlNPYmplY3Q6OmNhbGN1bGF0ZWRDbGFzc05hbWUoSlNPYmplY3QqIG9iamVjdCkKICAg
ICAgICAgICAgIHJldHVybiBjbGFzc0luZm9OYW1lOwogCiAgICAgICAgIGlmIChjb25zdHJ1Y3Rv
ckZ1bmN0aW9uTmFtZS5pc051bGwoKSkKLSAgICAgICAgICAgIHJldHVybiAiT2JqZWN0Il9zOwor
ICAgICAgICAgICAgcmV0dXJuICJPYmplY3QiX3N0cjsKICAgICB9CiAKICAgICByZXR1cm4gY29u
c3RydWN0b3JGdW5jdGlvbk5hbWU7CkBAIC0xOTEyLDcgKzE5MTIsNyBAQCBib29sIEpTT2JqZWN0
OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgICAgIGlmICh0aGlzLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCkgPT0gcHJvdG90eXBlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgcmV0
dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2FudFNldCwg
IkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUgb2JqZWN0Il9zKTsK
KyAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJv
d0lmQ2FudFNldCwgIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIGltbXV0YWJsZSBwcm90b3R5cGUg
b2JqZWN0Il9zdHIpOwogICAgIH0KIAogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhp
cyh0aGlzLCBnbG9iYWxPYmplY3QsIEVDTUFNb2RlOjpzbG9wcHkoKSkgPT0gdGhpcyk7CkBAIC0x
OTI5LDcgKzE5MjksNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVj
ayhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgSlNWYWx1ZSBuZXh0
UHJvdG90eXBlID0gcHJvdG90eXBlOwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlICYmIG5leHRQ
cm90b3R5cGUuaXNPYmplY3QoKSkgewogICAgICAgICBpZiAobmV4dFByb3RvdHlwZSA9PSB0aGlz
KQotICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91
bGRUaHJvd0lmQ2FudFNldCwgImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiX3MpOworICAgICAgICAg
ICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBzaG91bGRUaHJvd0lmQ2Fu
dFNldCwgImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiX3N0cik7CiAgICAgICAgIC8vIEZJWE1FOiBU
aGUgc3BlY2lmaWNhdGlvbiBjdXJyZW50bHkgc2F5cyB3ZSBzaG91bGQgY2hlY2sgaWYgdGhlIFtb
R2V0UHJvdG90eXBlT2ZdXSBpbnRlcm5hbCBtZXRob2Qgb2YgbmV4dFByb3RvdHlwZQogICAgICAg
ICAvLyBpcyBub3QgdGhlIG9yZGluYXJ5IG9iamVjdCBpbnRlcm5hbCBtZXRob2QuIEhvd2V2ZXIs
IHdlIGN1cnJlbnRseSByZXN0cmljdCB0aGlzIHRvIFByb3h5IG9iamVjdHMgYXMgaXQgd291bGQg
YWxsb3cKICAgICAgICAgLy8gZm9yIGN5Y2xlcyB3aXRoIGNlcnRhaW4gSFRNTCBvYmplY3RzIChX
aW5kb3dQcm94eSwgTG9jYXRpb24pIG90aGVyd2lzZS4KQEAgLTIyNzMsNyArMjI3Myw3IEBAIHN0
YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2FsbFRvUHJpbWl0aXZlRnVuY3Rpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENhbGxEYXRhKHZt
LCBmdW5jdGlvbik7CiAgICAgaWYgKGNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5v
bmUpIHsKICAgICAgICAgaWYgY29uc3RleHByIChrZXkgPT0gQ2FjaGVkU3BlY2lhbFByb3BlcnR5
S2V5OjpUb1ByaW1pdGl2ZSkKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJTeW1ib2wudG9QcmltaXRpdmUgaXMgbm90IGEgZnVuY3Rpb24sIHVuZGVmaW5l
ZCwgb3IgbnVsbCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiU3ltYm9sLnRvUHJpbWl0aXZlIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmluZWQs
IG9yIG51bGwiX3N0cik7CiAgICAgICAgIHJldHVybiBzY29wZS5leGNlcHRpb24oKTsKICAgICB9
CiAKQEAgLTIzMDIsNyArMjMwMiw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgY2Fs
bFRvUHJpbWl0aXZlRnVuY3Rpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgQVNT
RVJUKCFyZXN1bHQuaXNHZXR0ZXJTZXR0ZXIoKSk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgp
KSB7CiAgICAgICAgIGlmIGNvbnN0ZXhwciAoa2V5ID09IENhY2hlZFNwZWNpYWxQcm9wZXJ0eUtl
eTo6VG9QcmltaXRpdmUpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlN5bWJvbC50b1ByaW1pdGl2ZSByZXR1cm5lZCBhbiBvYmplY3QiX3Mp
OworICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJTeW1ib2wudG9QcmltaXRpdmUgcmV0dXJuZWQgYW4gb2JqZWN0Il9zdHIpOwogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZSgpOwogICAgIH0KICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjM0NCw3ICsy
MzQ0LDcgQEAgSlNWYWx1ZSBKU09iamVjdDo6b3JkaW5hcnlUb1ByaW1pdGl2ZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcmVmZXJyZWRQcmkKIAogICAgIHNjb3BlLmFzc2VydE5vRXhj
ZXB0aW9uRXhjZXB0VGVybWluYXRpb24oKTsKIAotICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiTm8gZGVmYXVsdCB2YWx1ZSJfcyk7CisgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJObyBkZWZhdWx0IHZhbHVlIl9zdHIp
OwogfQogCiBKU1ZhbHVlIEpTT2JqZWN0Ojp0b1ByaW1pdGl2ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHByZWZlcnJlZFR5cGUpIGNvbnN0CkBA
IC0yNDMzLDcgKzI0MzMsNyBAQCBib29sIEpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2UoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSwgSgogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9i
amVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiJfcyk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnN0YW5jZW9mIGNhbGxlZCBvbiBh
biBvYmplY3Qgd2l0aCBhbiBpbnZhbGlkIHByb3RvdHlwZSBwcm9wZXJ0eS4iX3N0cik7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTI4NjMsMTAgKzI4NjMsMTAgQEAgYm9vbCBK
U09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIHVuc2lnbmVkIGkKICAgICAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUo
KSkgewogICAgICAgICAgICAgICAgIC8vIDExLmkuIFJlamVjdCwgaWYgdGhlIFtbU2V0XV0gZmll
bGQgb2YgRGVzYyBpcyBwcmVzZW50IGFuZCBTYW1lVmFsdWUoRGVzYy5bW1NldF1dLCBjdXJyZW50
LltbU2V0XV0pIGlzIGZhbHNlLgogICAgICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNldHRl
clByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLnNldHRlcigpICE9IGN1cnJlbnQuc2V0dGVyKCkpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
dGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVu
Y29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5n
IHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfc3Ry
KTsKICAgICAgICAgICAgICAgICAvLyAxMS5paS4gUmVqZWN0LCBpZiB0aGUgW1tHZXRdXSBmaWVs
ZCBvZiBEZXNjIGlzIHByZXNlbnQgYW5kIFNhbWVWYWx1ZShEZXNjLltbR2V0XV0sIGN1cnJlbnQu
W1tHZXRdXSkgaXMgZmFsc2UuCiAgICAgICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3IuZ2V0dGVy
UHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZ2V0dGVyKCkgIT0gY3VycmVudC5nZXR0ZXIoKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5j
b25maWd1cmFibGUgcHJvcGVydHkuIl9zKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcg
dG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9zdHIp
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMzc3MSw5ICszNzcxLDkgQEAg
Ym9vbCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KgogICAgICAgICBBU1NFUlQoZGVzY3JpcHRvci5pc0FjY2Vz
c29yRGVzY3JpcHRvcigpKTsKICAgICAgICAgaWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7
CiAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5zZXR0ZXJQcmVzZW50KCkgJiYgZGVzY3JpcHRv
ci5zZXR0ZXIoKSAhPSBjdXJyZW50LnNldHRlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiB0
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5n
IHRvIGNoYW5nZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyk7
CisgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5j
b25maWd1cmFibGUgcHJvcGVydHkuIl9zdHIpOwogICAgICAgICAgICAgaWYgKGRlc2NyaXB0b3Iu
Z2V0dGVyUHJlc2VudCgpICYmIGRlc2NyaXB0b3IuZ2V0dGVyKCkgIT0gY3VycmVudC5nZXR0ZXIo
KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
IHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1
bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iX3MpOworICAgICAgICAgICAgICAgIHJldHVybiB0eXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRv
IGNoYW5nZSB0aGUgZ2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfc3RyKTsK
IAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3IuY3BwCmluZGV4IGZhMzMzODJlZmM4M2MwNWYxOTVkNTRiZTZmNDUwODQzYzEwYWY1MjEuLjgx
ODgzMjlhOWU5MTllMGVkZTc1NmVlYjE3YmViNTZmNzU2NDUzOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0
cnVjdG9yLmNwcApAQCAtNDMsNyArNDMsNyBAQCBjb25zdCBDbGFzc0luZm8gSlNUeXBlZEFycmF5
Vmlld0NvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZgogCiB2
b2lkIEpTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlKiBw
cm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKIHsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMCwgIlR5cGVkQXJyYXkiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IDAsICJUeXBlZEFycmF5Il9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0
dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3NvcldpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sLCBzcGVjaWVzU3ltYm9sLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogCkBAIC02MSw3ICs2MSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUeXBlZEFycmF5VmlldywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJVR5cGVkQXJyYXklIHNob3VsZCBu
b3QgYmUgY2FsbGVkIGRpcmVjdGx5Il9zKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiJVR5cGVkQXJyYXklIHNob3VsZCBub3QgYmUgY2FsbGVkIGRp
cmVjdGx5Il9zdHIpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5j
cHAKaW5kZXggODgyN2IzZGU5OGZlMDVmZTU4YjkxNzA0MjllMzg2NDk5NWUxOWY1OC4uOTcxY2Vl
OTI0NTBlY2QxZDFmYjljNWIwZTRhMWFkMDQyM2ZlN2I5MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5j
cHAKQEAgLTgxLDcgKzgxLDcgQEAgc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odHlw
ZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNUb1N0cmluZ1RhZyk7CiAgICAgY2FzZSBOb3RUeXBl
ZEFycmF5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgY2FzZSBUeXBlRGF0YVZpZXc6ICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAg
ICAgICAgICAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfcyk7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAiUmVjZWl2
ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfc3RyKTsgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiB9IHdoaWxl
IChmYWxzZSkKQEAgLTE2NywxMiArMTY3LDEyIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0
eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVuZ3RoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgYXJn
dW1lbnQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghYXJndW1lbnQuaXNDZWxs
KCkgfHwgIWlzVHlwZWRWaWV3KGFyZ3VtZW50LmFzQ2VsbCgpLT5jbGFzc0luZm8odm0pLT50eXBl
ZEFycmF5U3RvcmFnZVR5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zdHIpOwogCiAgICAgSlNB
cnJheUJ1ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihh
cmd1bWVudCk7CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBB
cnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcg
QXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfc3RyKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+bGVuZ3RoKCkpKTsK
IH0KQEAgLTE4Myw3ICsxODMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJh
eVZpZXdQcml2YXRlRnVuY0NvbnRlbnRUeXBlLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgYXJndW1lbnQgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghYXJndW1lbnQuaXNDZWxsKCkgfHwgIWlz
VHlwZWRWaWV3KGFyZ3VtZW50LmFzQ2VsbCgpLT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3Rv
cmFnZVR5cGUpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zdHIpOwogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoc3RhdGljX2Nhc3Q8aW50MzJfdD4oY29udGVudFR5cGUoYXJndW1l
bnQuYXNDZWxsKCktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpKSk7CiB9
CiAKQEAgLTIwMSwxMiArMjAxLDEyIEBAIGlubGluZSBFbmNvZGVkSlNWYWx1ZSBjcmVhdGVUeXBl
ZEFycmF5SXRlcmF0b3JPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpLmlzQ2VsbCgpIHx8ICFpc1R5cGVkQXJyYXlUeXBlKGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkuYXNDZWxsKCktPnR5cGUoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJh
eSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciX3N0cik7CiAK
ICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVy
Vmlldyo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgaWYgKHRoaXNPYmplY3QtPmlz
RGV0YWNoZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0
aGUgdmlldyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20g
dGhlIHZpZXciX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJyYXlJdGVy
YXRvcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwg
dGhpc09iamVjdCwganNOdW1iZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGtpbmQpKSkpOwogfQpA
QCAtMjQxLDcgKzI0MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5Vmll
d1Byb3RvRnVuY1NldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoVU5MSUtFTFkoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4g
b2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVS
SUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jU2V0KTsKIH0KQEAgLTI1Miw3ICsyNTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluLCAoSlNHbG9iYWxPYmplY3QqIGds
bwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVl
IHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUu
aXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0
IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxM
X0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jQ29weVdpdGhpbik7CiB9CkBAIC0yNzQsNyArMjc0LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YsIChKU0ds
b2JhbE9iamVjdCogZ2wKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2
aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBh
cnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfc3RyKTsKICAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKTsKIH0KQEAgLTI4NSw3ICsyODUs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRl
eE9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAg
IHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVf
RlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZik7CiB9CkBAIC0y
OTYsNyArMjk2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jSm9pbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
c3RyKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlf
UFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0pvaW4pOwog
fQpAQCAtMzA3LDcgKzMwNyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5
Vmlld1Byb3RvRnVuY0ZpbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0g
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVj
ZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3Qi
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiX3N0cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBF
REFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNG
aWxsKTsKIH0KQEAgLTMxOCw3ICszMTgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlw
ZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIsIChKU0dsb2JhbE9iamVjdCogZwogICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4g
b2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVS
SUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9HZXR0ZXJGdW5jQnVmZmVyKTsKIH0KQEAgLTMyOSw3ICszMjksNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgsIChKU0dsb2Jh
bE9iamVjdCogZwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0
aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsK
ICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3RoKTsKIH0KQEAgLTM0MCw3ICszNDAsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNC
eXRlTGVuZ3RoLCAoSlNHbG9iYWxPYmplYwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5
cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBi
ZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNj
b3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVO
Q1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aCk7CiB9
CkBAIC0zNTEsNyArMzUxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlW
aWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldCwgKEpTR2xvYmFsT2JqZWMKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNl
aXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9i
amVjdCJfc3RyKTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVE
QVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY0J5dGVPZmZzZXQpOwogfQpAQCAtMzYyLDcgKzM2Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpT
VmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3N0cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAg
IENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b0Z1bmNSZXZlcnNlKTsKIH0KQEAgLTM3Myw3ICszNzMsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRl
LCAoSlNHbG9iYWxPYmplYwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAg
aWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5
IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVk
IGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVh
c2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZSk7CiB9CkBAIC0zODQs
NyArMzg0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jU2xpY2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91
bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZl
ciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfc3Ry
KTsKICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJP
VE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKTsKIH0K
QEAgLTM5OCwyNyArMzk4LDI3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5
Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3RyaW5nVGFnLCAoSlNHbG9iYWxPYmplCiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIHN3aXRjaCAodGhpc1ZhbHVlLmdldE9iamVjdCgp
LT5jbGFzc0luZm8odm0pLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpIHsKICAgICBjYXNlIFR5cGVV
aW50OENsYW1wZWQ6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFs
U3RyaW5nKHZtLCAiVWludDhDbGFtcGVkQXJyYXkiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50OENsYW1wZWRBcnJheSJfc3Ry
KSk7CiAgICAgY2FzZSBUeXBlSW50MzI6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50MzJBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkludDMyQXJyYXkiX3N0cikp
OwogICAgIGNhc2UgVHlwZVVpbnQzMjoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50MzJBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlVpbnQzMkFycmF5Il9zdHIp
KTsKICAgICBjYXNlIFR5cGVGbG9hdDY0OgotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkZsb2F0NjRBcnJheSJfcykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkZsb2F0NjRBcnJheSJf
c3RyKSk7CiAgICAgY2FzZSBUeXBlRmxvYXQzMjoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJGbG9hdDMyQXJyYXkiX3MpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJGbG9hdDMyQXJy
YXkiX3N0cikpOwogICAgIGNhc2UgVHlwZUludDg6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50OEFycmF5Il9zKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50OEFycmF5Il9z
dHIpKTsKICAgICBjYXNlIFR5cGVVaW50ODoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50OEFycmF5Il9zKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiVWludDhBcnJheSJfc3Ry
KSk7CiAgICAgY2FzZSBUeXBlSW50MTY6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCAiSW50MTZBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkludDE2QXJyYXkiX3N0cikp
OwogICAgIGNhc2UgVHlwZVVpbnQxNjoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50MTZBcnJheSJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlVpbnQxNkFycmF5Il9zdHIp
KTsKICAgICBjYXNlIFR5cGVCaWdJbnQ2NDoKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJCaWdJbnQ2NEFycmF5Il9zKSk7CisgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiQmlnSW50NjRBcnJh
eSJfc3RyKSk7CiAgICAgY2FzZSBUeXBlQmlnVWludDY0OgotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkJpZ1VpbnQ2NEFycmF5Il9zKSk7Cisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiQmln
VWludDY0QXJyYXkiX3N0cikpOwogICAgIGNhc2UgTm90VHlwZWRBcnJheToKICAgICBjYXNlIFR5
cGVEYXRhVmlldzoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgp
KTsKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIEpTVHlwZWRBcnJheVZpZXdQcm90b3R5cGU6OmZp
bmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGlmIChP
cHRpb25zOjp1c2VBdE1ldGhvZCgpKQogICAgICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRI
T1VUX1RSQU5TSVRJT04odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXRQdWJsaWNO
YW1lKCksIHR5cGVkQXJyYXlQcm90b3R5cGVBdENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgIEpTRnVuY3Rpb24q
IHRvU3RyaW5nVGFnRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgMCwgImdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSJfcywgdHlwZWRBcnJheVZpZXdQcm90b0dl
dHRlckZ1bmNUb1N0cmluZ1RhZywgTm9JbnRyaW5zaWMpOworICAgIEpTRnVuY3Rpb24qIHRvU3Ry
aW5nVGFnRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwg
ImdldCBbU3ltYm9sLnRvU3RyaW5nVGFnXSJfc3RyLCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVy
RnVuY1RvU3RyaW5nVGFnLCBOb0ludHJpbnNpYyk7CiAgICAgR2V0dGVyU2V0dGVyKiB0b1N0cmlu
Z1RhZ0FjY2Vzc29yID0gR2V0dGVyU2V0dGVyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgdG9T
dHJpbmdUYWdGdW5jdGlvbiwgbnVsbHB0cik7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhBY2Nlc3Nv
cldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50b1N0cmluZ1RhZ1N5bWJv
bCwgdG9TdHJpbmdUYWdBY2Nlc3NvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkFjY2Vzc29yKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNl
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApp
bmRleCA0MTJlMjU4YWIwOTU5ZjE4YjMyZGE5OTFkYjNmOTYwNGYyOThiN2Y0Li41MzczMWY3ZTM1
MmY1NjJkZTM0YjFmYTU1M2Y2MzM2NTE1YzViNTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcApAQCAtNzI4LDcgKzcyOCw3IEBAIEFMV0FZ
U19JTkxJTkUgVG9rZW5UeXBlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4KExp
dGVyYWxQYXJzZXJUb2tlbjxDCiAgICAgICAgIHN3aXRjaCAodG9rZW5UeXBlKSB7CiAgICAgICAg
IGNhc2UgVG9rU3RyaW5nOgogICAgICAgICAgICAgaWYgKFVOTElLRUxZKGNoYXJhY3RlciA9PSAn
XCcnICYmIG1fbW9kZSA9PSBTdHJpY3RKU09OKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIlNpbmdsZSBxdW90ZXMgKFwnKSBhcmUgbm90IGFsbG93ZWQgaW4gSlNPTiJf
czsKKyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJTaW5nbGUgcXVvdGVzIChc
JykgYXJlIG5vdCBhbGxvd2VkIGluIEpTT04iX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4g
VG9rRXJyb3I7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbGV4U3RyaW5nKHRv
a2VuLCBjaGFyYWN0ZXIpOwpAQCAtOTEwLDcgKzkxMCw3IEBAIHNsb3dQYXRoQmVnaW46CiAgICAg
ICAgICAgICAgICAgbV9idWlsZGVyLmFwcGVuZENoYXJhY3RlcnMocnVuU3RhcnQsIG1fcHRyIC0g
cnVuU3RhcnQpOwogICAgICAgICAgICAgKyttX3B0cjsKICAgICAgICAgICAgIGlmIChtX3B0ciA+
PSBtX2VuZCkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlVudGVybWlu
YXRlZCBzdHJpbmciX3M7CisgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW50
ZXJtaW5hdGVkIHN0cmluZyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHN3aXRjaCAoKm1fcHRyKSB7CkBAIC05NDksNyAr
OTQ5LDcgQEAgc2xvd1BhdGhCZWdpbjoKIAogICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgogICAg
ICAgICAgICAgICAgICAgICBpZiAoKG1fZW5kIC0gbV9wdHIpIDwgNSkgeyAKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlxcdSBtdXN0IGJlIGZvbGxvd2VkIGJ5
IDQgaGV4IGRpZ2l0cyJfczsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNz
YWdlID0gIlxcdSBtdXN0IGJlIGZvbGxvd2VkIGJ5IDQgaGV4IGRpZ2l0cyJfc3RyOwogICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICAgICAgICAgICAgICB9
IC8vIHVOTk5OID09IDUgY2hhcmFjdGVycwogICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBp
ID0gMTsgaSA8IDU7IGkrKykgewpAQCAtOTc1LDcgKzk3NSw3IEBAIHNsb3dQYXRoQmVnaW46CiAg
ICAgfSB3aGlsZSAoKG1fbW9kZSAhPSBOb25TdHJpY3RKU09OKSAmJiBtX3B0ciAhPSBydW5TdGFy
dCAmJiAobV9wdHIgPCBtX2VuZCkgJiYgKm1fcHRyICE9IHRlcm1pbmF0b3IpOwogCiAgICAgaWYg
KG1fcHRyID49IG1fZW5kIHx8ICptX3B0ciAhPSB0ZXJtaW5hdG9yKSB7Ci0gICAgICAgIG1fbGV4
RXJyb3JNZXNzYWdlID0gIlVudGVybWluYXRlZCBzdHJpbmciX3M7CisgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIlVudGVybWluYXRlZCBzdHJpbmciX3N0cjsKICAgICAgICAgcmV0dXJuIFRv
a0Vycm9yOwogICAgIH0KIApAQCAtMTAyNiw3ICsxMDI2LDcgQEAgVG9rZW5UeXBlIExpdGVyYWxQ
YXJzZXI8Q2hhclR5cGU+OjpMZXhlcjo6bGV4TnVtYmVyKExpdGVyYWxQYXJzZXJUb2tlbjxDaGFy
VHlwZT4KICAgICAgICAgd2hpbGUgKG1fcHRyIDwgbV9lbmQgJiYgaXNBU0NJSURpZ2l0KCptX3B0
cikpCiAgICAgICAgICAgICArK21fcHRyOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIkludmFsaWQgbnVtYmVyIl9zOworICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9ICJJbnZhbGlkIG51bWJlciJfc3RyOwogICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAg
fQogCkBAIC0xMDM2LDcgKzEwMzYsNyBAQCBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlw
ZT46OkxleGVyOjpsZXhOdW1iZXIoTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPgogICAgICAg
ICArK21fcHRyOwogICAgICAgICAvLyBbMC05XSsKICAgICAgICAgaWYgKG1fcHRyID49IG1fZW5k
IHx8ICFpc0FTQ0lJRGlnaXQoKm1fcHRyKSkgewotICAgICAgICAgICAgbV9sZXhFcnJvck1lc3Nh
Z2UgPSAiSW52YWxpZCBkaWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludCJfczsKKyAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gIkludmFsaWQgZGlnaXRzIGFmdGVyIGRlY2ltYWwgcG9pbnQi
X3N0cjsKICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICAgICAgfQogCkBAIC0xMDc5
LDcgKzEwNzksNyBAQCBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjps
ZXhOdW1iZXIoTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPgogCiAgICAgICAgIC8vIFswLTld
KwogICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7
Ci0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJFeHBvbmVudCBzeW1ib2xzIHNob3Vs
ZCBiZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3IgJy0nIGFuZCB0aGVuIGJ5IGF0IGxl
YXN0IG9uZSBudW1iZXIiX3M7CisgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJFeHBv
bmVudCBzeW1ib2xzIHNob3VsZCBiZSBmb2xsb3dlZCBieSBhbiBvcHRpb25hbCAnKycgb3IgJy0n
IGFuZCB0aGVuIGJ5IGF0IGxlYXN0IG9uZSBudW1iZXIiX3N0cjsKICAgICAgICAgICAgIHJldHVy
biBUb2tFcnJvcjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTExMDAsMTMgKzExMDAsMTMgQEAg
dm9pZCBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6c2V0RXJyb3JNZXNzYWdlRm9yVG9rZW4oVG9r
ZW5UeXBlIHRva2VuVHlwZSkKIHsKICAgICBzd2l0Y2ggKHRva2VuVHlwZSkgewogICAgIGNhc2Ug
VG9rUkJyYWNlOgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICd9JyJf
czsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnfSciX3N0cjsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBUb2tSQnJhY2tldDoKLSAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJFeHBlY3RlZCAnXSciX3M7CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiRXhwZWN0ZWQgJ10nIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVG9rQ29sb246
Ci0gICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJzonIGJlZm9yZSB2YWx1
ZSBpbiBvYmplY3QgcHJvcGVydHkgZGVmaW5pdGlvbiJfczsKKyAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJFeHBlY3RlZCAnOicgYmVmb3JlIHZhbHVlIGluIG9iamVjdCBwcm9wZXJ0eSBk
ZWZpbml0aW9uIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6IHsKICAgICAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTExMzgsMTAgKzExMzgsMTAgQEAgQUxX
QVlTX0lOTElORSBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZVByaW1pdGl2
ZVZhbHVlKFZNJiB2bSkKICAgICAgICAgbV9sZXhlci5uZXh0KCk7CiAgICAgICAgIHJldHVybiBq
c0Jvb2xlYW4oZmFsc2UpOwogICAgIGNhc2UgVG9rUkJyYWNrZXQ6Ci0gICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3M7CisgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3N0cjsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICBjYXNlIFRva1JCcmFjZToKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJVbmV4cGVjdGVkIHRva2VuICd9JyJfczsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJVbmV4cGVjdGVkIHRva2VuICd9JyJfc3RyOwogICAgICAgICByZXR1cm4geyB9OwogICAgIGNh
c2UgVG9rSWRlbnRpZmllcjogewogICAgICAgICBhdXRvIHRva2VuID0gbV9sZXhlci5jdXJyZW50
VG9rZW4oKTsKQEAgLTExNjgsMzMgKzExNjgsMzMgQEAgQUxXQVlTX0lOTElORSBKU1ZhbHVlIExp
dGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZVByaW1pdGl2ZVZhbHVlKFZNJiB2bSkKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgY2FzZSBUb2tDb2xvbjoKLSAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyJfczsKKyAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyJfc3RyOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIGNhc2UgVG9rTFBhcmVuOgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJygnIl9zOworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJygnIl9zdHI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
Y2FzZSBUb2tSUGFyZW46Ci0gICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3Rl
ZCB0b2tlbiAnKSciX3M7CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3Rl
ZCB0b2tlbiAnKSciX3N0cjsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBjYXNlIFRva0NvbW1h
OgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIl9z
OworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIl9z
dHI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgY2FzZSBUb2tEb3Q6Ci0gICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciX3M7CisgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLiciX3N0cjsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICBjYXNlIFRva0Fzc2lnbjoKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyJfczsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICc9JyJfc3RyOwogICAgICAgICByZXR1cm4geyB9OwogICAg
IGNhc2UgVG9rU2VtaToKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc7JyJfczsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc7JyJfc3RyOwogICAgICAgICByZXR1cm4geyB9OwogICAgIGNhc2UgVG9rRW5kOgot
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zOworICAgICAg
ICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zdHI7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgY2FzZSBUb2tFcnJvcjoKICAgICBkZWZhdWx0OgogICAgICAgICAvLyBF
cnJvcgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkNvdWxkIG5vdCBwYXJzZSB2YWx1
ZSBleHByZXNzaW9uIl9zOworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkNvdWxkIG5v
dCBwYXJzZSB2YWx1ZSBleHByZXNzaW9uIl9zdHI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogfQpAQCAtMTIyNCw3ICsxMjI0LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBl
Pjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgVG9rZW5UeXBl
IGxhc3RUb2tlbiA9IG1fbGV4ZXIuY3VycmVudFRva2VuKCktPnR5cGU7CiAgICAgICAgICAgICBp
ZiAobV9sZXhlci5uZXh0KCkgPT0gVG9rUkJyYWNrZXQpIHsKICAgICAgICAgICAgICAgICBpZiAo
VU5MSUtFTFkobGFzdFRva2VuID09IFRva0NvbW1hKSkgewotICAgICAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJh
eSBleHByZXNzaW9uIl9zOworICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgY29tbWEgYXQgdGhlIGVuZCBvZiBhcnJheSBleHByZXNzaW9uIl9zdHI7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIG1fbGV4ZXIubmV4dCgpOwpAQCAtMTI4NCw3ICsxMjg0LDcgQEAgSlNWYWx1
ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRl
KQogCiAgICAgICAgICAgICAgICAgICAgIGlmIChtX21vZGUgIT0gU3RyaWN0SlNPTiAmJiBpZGVu
dCA9PSB2bS5wcm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChVTkxJS0VMWSghdmlzaXRlZFVuZGVyc2NvcmVQcm90by5hZGQob2JqZWN0
KS5pc05ld0VudHJ5KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiQXR0ZW1wdGVkIHRvIHJlZGVmaW5lIF9fcHJvdG9fXyBwcm9wZXJ0eSJfczsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkF0dGVt
cHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHkiX3N0cjsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBtX251bGxP
ckNvZGVCbG9jayA/IG1fbnVsbE9yQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0
cmljdENvbnRleHQoKSA6IGZhbHNlKTsKQEAgLTEzMDMsNyArMTMwMyw3IEBAIEpTVmFsdWUgTGl0
ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkKIAog
ICAgICAgICAgICAgICAgICAgICBuZXh0VHlwZSA9IG1fbGV4ZXIubmV4dCgpOwogICAgICAgICAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkobmV4dFR5cGUgIT0gVG9rU3RyaW5nICYmIChtX21vZGUg
PT0gU3RyaWN0SlNPTiB8fCBuZXh0VHlwZSAhPSBUb2tJZGVudGlmaWVyKSkpIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiUHJvcGVydHkgbmFtZSBtdXN0
IGJlIGEgc3RyaW5nIGxpdGVyYWwiX3M7CisgICAgICAgICAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmluZyBsaXRlcmFsIl9z
dHI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMTMzMCw3ICsxMzMwLDcgQEAgSlNWYWx1ZSBM
aXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQog
ICAgICAgICBjYXNlIERvUGFyc2VPYmplY3RTdGFydEV4cHJlc3Npb246IHsKICAgICAgICAgICAg
IFRva2VuVHlwZSB0eXBlID0gbV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICBpZiAoVU5MSUtF
TFkodHlwZSAhPSBUb2tTdHJpbmcgJiYgKG1fbW9kZSA9PSBTdHJpY3RKU09OIHx8IHR5cGUgIT0g
VG9rSWRlbnRpZmllcikpKSB7Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJQcm9wZXJ0eSBuYW1lIG11c3QgYmUgYSBzdHJpbmcgbGl0ZXJhbCJfczsKKyAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmlu
ZyBsaXRlcmFsIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIGlkZW50aWZpZXJTdGFjay5hcHBlbmQobWFrZUlkZW50aWZpZXIodm0s
IG1fbGV4ZXIuY3VycmVudFRva2VuKCkpKTsKQEAgLTEzNTEsNyArMTM1MSw3IEBAIEpTVmFsdWUg
TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKFBhcnNlclN0YXRlIGluaXRpYWxTdGF0ZSkK
ICAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnQgPSBpZGVudGlmaWVyU3RhY2sudGFrZUxhc3Qo
KTsKICAgICAgICAgICAgIGlmIChtX21vZGUgIT0gU3RyaWN0SlNPTiAmJiBpZGVudCA9PSB2bS5w
cm9wZXJ0eU5hbWVzLT51bmRlcnNjb3JlUHJvdG8pIHsKICAgICAgICAgICAgICAgICBpZiAoVU5M
SUtFTFkoIXZpc2l0ZWRVbmRlcnNjb3JlUHJvdG8uYWRkKG9iamVjdCkuaXNOZXdFbnRyeSkpIHsK
LSAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJBdHRlbXB0ZWQgdG8g
cmVkZWZpbmUgX19wcm90b19fIHByb3BlcnR5Il9zOworICAgICAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIkF0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVy
dHkiX3N0cjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNsb3Qob2JqZWN0LCBtX251bGxP
ckNvZGVCbG9jayA/IG1fbnVsbE9yQ29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJblN0
cmljdENvbnRleHQoKSA6IGZhbHNlKTsKQEAgLTE0MDMsNTAgKzE0MDMsNTAgQEAgSlNWYWx1ZSBM
aXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQog
ICAgICAgICAgICAgICAgIGdvdG8gc3RhcnRQYXJzZUV4cHJlc3Npb247CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBjYXNlIFRva1JCcmFja2V0OgotICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnXSciX3M7CisgICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICddJyJfc3RyOwogICAgICAg
ICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICBjYXNlIFRva0xCcmFjZToKLSAgICAg
ICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ3snIl9z
OworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tl
biAneyciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2Fz
ZSBUb2tSQnJhY2U6Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICd9JyJfczsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgICAgIGNhc2UgVG9rSWRlbnRpZmllcjoKLSAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgaWRlbnRpZmllciJfczsKKyAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgaWRlbnRpZmllciJfc3RyOwog
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICBjYXNlIFRva0NvbG9uOgot
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
OiciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICc6JyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAg
ICBjYXNlIFRva1JQYXJlbjoKLSAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0g
IlVuZXhwZWN0ZWQgdG9rZW4gJyknIl9zOworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1l
c3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKSciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1
cm4geyB9OwogICAgICAgICAgICAgY2FzZSBUb2tDb21tYToKLSAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJywnIl9zOworICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnLCciX3N0cjsKICAg
ICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2FzZSBUb2tUcnVlOgotICAg
ICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAndHJ1
ZSciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVk
IHRva2VuICd0cnVlJyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
ICAgICBjYXNlIFRva0ZhbHNlOgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIl9zOworICAgICAgICAgICAgICAgIG1fcGFyc2VF
cnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnZmFsc2UnIl9zdHI7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIGNhc2UgVG9rTnVsbDoKLSAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ251bGwnIl9zOwor
ICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAn
bnVsbCciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2Fz
ZSBUb2tFbmQ6Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVj
dGVkIEVPRiJfczsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhw
ZWN0ZWQgRU9GIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAg
IGNhc2UgVG9rRG90OgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5l
eHBlY3RlZCB0b2tlbiAnLiciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgICAgICAgICBjYXNlIFRva0Fzc2lnbjoKLSAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIl9zOworICAgICAgICAgICAgICAg
IG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnPSciX3N0cjsKICAgICAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2FzZSBUb2tTZW1pOgotICAgICAg
ICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnOyciX3M7
CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICc7JyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICBjYXNl
IFRva0Vycm9yOgogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIkNvdWxkIG5vdCBwYXJzZSBzdGF0ZW1lbnQiX3M7CisgICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJDb3VsZCBub3QgcGFyc2Ugc3RhdGVtZW50Il9z
dHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMTQ1Nyw3ICsxNDU3LDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENo
YXJUeXBlPjo6cGFyc2UoUGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgICAg
IHJldHVybiB7IH07CiAgICAgICAgICAgICBpZiAobV9sZXhlci5uZXh0KCkgPT0gVG9rRW5kKQog
ICAgICAgICAgICAgICAgIHJldHVybiBsYXN0VmFsdWU7Ci0gICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgY29udGVudCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIl9z
OworICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIGNvbnRlbnQg
YXQgZW5kIG9mIEpTT04gbGl0ZXJhbCJfc3RyOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgfQogICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvTGl0ZXJhbFBhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTGl0ZXJhbFBhcnNlci5oCmluZGV4IDJlMmFiMDI1ZGJkMWI5MzZiMzMwZTU2N2ZlYjgyNTEx
MjU1MTE5ZTguLjFhM2RlNGM3ZjcxODgwNTYxZTMwYTlmOTY5OTUzZDRhYjNkYTViYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKQEAgLTEwOSw3
ICsxMDksNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICByZXR1cm4gIkpTT04gUGFyc2UgZXJyb3I6
ICIgKyBtX2xleGVyLmdldEVycm9yTWVzc2FnZSgpOwogICAgICAgICBpZiAoIW1fcGFyc2VFcnJv
ck1lc3NhZ2UuaXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0dXJuICJKU09OIFBhcnNlIGVycm9y
OiAiICsgbV9wYXJzZUVycm9yTWVzc2FnZTsKLSAgICAgICAgcmV0dXJuICJKU09OIFBhcnNlIGVy
cm9yOiBVbmFibGUgdG8gcGFyc2UgSlNPTiBzdHJpbmciX3M7CisgICAgICAgIHJldHVybiAiSlNP
TiBQYXJzZSBlcnJvcjogVW5hYmxlIHRvIHBhcnNlIEpTT04gc3RyaW5nIl9zdHI7CiAgICAgfQog
ICAgIAogICAgIEpTVmFsdWUgdHJ5TGl0ZXJhbFBhcnNlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAppbmRleCBlNWEyODk4Njc1ODQ4Mjlm
ZWEyMTQxZjk2ODgyNDk1MDYwOGNiNzhiLi5iZWJkM2FkYTJiZmNkNTE0ZjFkZTNjOGRlYWExN2Qx
OGRlNjI2MjM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29u
c3RydWN0b3IuY3BwCkBAIC0zNyw3ICszNyw3IEBAIGNvbnN0IENsYXNzSW5mbyBNYXBDb25zdHJ1
Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBuCiAK
IHZvaWQgTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTWFwUHJvdG90eXBl
KiBtYXBQcm90b3R5cGUsIEdldHRlclNldHRlciogc3BlY2llc1N5bWJvbCkKIHsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIk1hcCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
MCwgIk1hcCJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5z
aXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIG1hcFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpOwogICAgIHB1dERpcmVjdE5vbkluZGV4QWNjZXNzb3JXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+c3BlY2llc1N5bWJvbCwgc3BlY2llc1N5bWJvbCwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkFjY2Vzc29yIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKIH0KQEAgLTg3LDcgKzg3LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdE1hcCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSoKIAogICAgICAgICBhZGRlckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxs
RGF0YSh2bSwgYWRkZXJGdW5jdGlvbik7CiAgICAgICAgIGlmIChVTkxJS0VMWShhZGRlckZ1bmN0
aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3NldCcgcHJvcGVy
dHkgb2YgYSBNYXAgc2hvdWxkIGJlIGNhbGxhYmxlLiJfcyk7CisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3NldCcgcHJvcGVydHkgb2Yg
YSBNYXAgc2hvdWxkIGJlIGNhbGxhYmxlLiJfc3RyKTsKICAgICB9CiAKICAgICBzY29wZS5yZWxl
YXNlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNw
cAppbmRleCA5M2ViZTAwM2M0NzJiYzg5NDNhODU4ZGE4MzUzNGYyYmI3YTE4MDZlLi40NGExMTYz
ZTRmODVmYzAwMjllNGU4NjJmZDZiOGQ4ZTcwM2Q1MzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgQUxXQVlT
X0lOTElORSBzdGF0aWMgSlNNYXAqIGdldE1hcChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIHRoaXNWYWwKICAgICBhdXRvKiBtYXAgPSBqc0R5bmFtaWNDYXN0PEpTTWFwKj4o
dm0sIHRoaXNWYWx1ZS5hc0NlbGwoKSk7CiAgICAgaWYgKExJS0VMWShtYXApKQogICAgICAgICBy
ZXR1cm4gbWFwOwotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJNYXAg
b3BlcmF0aW9uIGNhbGxlZCBvbiBub24tTWFwIG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAg
b2JqZWN0Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcAppbmRleCA4ODg1OTFkZGMw
NmZmYWNhZDJmMGEwOTczYmYwMjU1NGQ2NTE4MGI2Li5mNmMwNWM0NTVjMTViYjA1Mjg0ZThkODYz
YjEzYmFmMmI5NDlkOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bWJlclByb3RvdHlwZS5jcHAKQEAgLTQwMSw3ICs0MDEsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04obnVtYmVyUHJvdG9GdW5jVG9FeHBvbmVudGlhbCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYgogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgU3RyaW5nOjpudW1iZXIoeCkpKTsKIAogICAgIGlmIChkZWNpbWFsUGxhY2VzIDwgMCB8
fCBkZWNpbWFsUGxhY2VzID4gMTAwKQotICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInRvRXhwb25lbnRpYWwoKSBhcmd1bWVudCBtdXN0IGJlIGJl
dHdlZW4gMCBhbmQgMTAwIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJ0b0V4cG9uZW50aWFsKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3
ZWVuIDAgYW5kIDEwMCJfc3RyKTsKIAogICAgIC8vIFJvdW5kIGlmIHRoZSBhcmd1bWVudCBpcyBu
b3QgdW5kZWZpbmVkLCBhbHdheXMgZm9ybWF0IGFzIGV4cG9uZW50aWFsLgogICAgIE51bWJlclRv
U3RyaW5nQnVmZmVyIGJ1ZmZlcjsKQEAgLTQzMSw3ICs0MzEsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04obnVtYmVyUHJvdG9GdW5jVG9GaXhlZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAgICAgaW50IGRlY2ltYWxQbGFjZXMgPSBzdGF0aWNfY2FzdDxpbnQ+KGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChkZWNpbWFsUGxhY2VzIDwg
MCB8fCBkZWNpbWFsUGxhY2VzID4gMTAwKQotICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvRml4ZWQoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdl
ZW4gMCBhbmQgMTAwIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJ0b0ZpeGVkKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDAgYW5k
IDEwMCJfc3RyKTsKIAogICAgIC8vIDE1LjcuNC41Ljcgc3RhdGVzICJJZiB4ID49IDEwXjIxLCB0
aGVuIGxldCBtID0gVG9TdHJpbmcoeCkiCiAgICAgLy8gVGhpcyBhbHNvIGNvdmVycyBJbmluaXR5
LCBhbmQgc3RydWN0dXJlIHRoZSBjaGVjayBzbyB0aGF0IE5hTgpAQCAtNDc2LDcgKzQ3Niw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihudW1iZXJQcm90b0Z1bmNUb1ByZWNpc2lvbiwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlcih4KSkpOwogCiAgICAgaWYgKHNp
Z25pZmljYW50RmlndXJlcyA8IDEgfHwgc2lnbmlmaWNhbnRGaWd1cmVzID4gMTAwKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvUHJlY2lz
aW9uKCkgYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEwMCJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidG9QcmVjaXNpb24o
KSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAwIl9zdHIpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgU3RyaW5nOjpudW1iZXJUb1N0cmluZ0ZpeGVk
UHJlY2lzaW9uKHgsIHNpZ25pZmljYW50RmlndXJlcywgS2VlcFRyYWlsaW5nWmVyb3MpKSk7CiB9
CkBAIC02MDcsNyArNjA3LDcgQEAgaW50MzJfdCBleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcmFkaXgKICAgICAgICAgICAg
IHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90PihyYWRpeERvdWJsZSk7ICAgCiAgICAgfQogCi0g
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgInRvU3RyaW5nKCkg
cmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2Il9zKTsKKyAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAidG9TdHJpbmcoKSByYWRpeCBhcmd1
bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiX3N0cik7CiAgICAgcmV0dXJuIDA7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9y
LmNwcAppbmRleCA1ODQwNmVhNzMxYzk0YWViNzQ5MTE5MmViZTZkMTRjOTNhMjM4Yzc3Li4yMDZi
OWFiMGJjNjZlYjg4YjNmYjc5NjUyYWQyMmI1OWVlOWI5MmVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCkBAIC0xNTYsMTEg
KzE1NiwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29uc3RydWN0b3JTZXRQ
cm90b3R5cGVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgSlNWYWx1ZSBvYmplY3RW
YWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKG9iamVjdFZhbHVlLmlzVW5k
ZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiB1bmRlZmluZWQgb3IgbnVsbCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJDYW5ub3Qgc2V0IHByb3RvdHlwZSBvZiB1bmRlZmluZWQgb3IgbnVsbCJfc3RyKTsKIAogICAg
IEpTVmFsdWUgcHJvdG9WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFw
cm90b1ZhbHVlLmlzT2JqZWN0KCkgJiYgIXByb3RvVmFsdWUuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm90b3R5cGUgdmFs
dWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJvdG90eXBlIHZhbHVlIGNhbiBv
bmx5IGJlIGFuIG9iamVjdCBvciBudWxsIl9zdHIpOwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9
IG9iamVjdFZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0zMTAsNyArMzEwLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yQXNzaWduLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKIAogICAgIEpTVmFsdWUgdGFyZ2V0VmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmICh0YXJnZXRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2Jq
ZWN0LmFzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBvciB1
bmRlZmluZWQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiT2JqZWN0LmFzc2lnbiByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBu
b3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3N0cik7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRh
cmdldFZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIApAQCAtMzU0LDcgKzM1NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihvYmplY3RDb25zdHJ1Y3RvckVudHJpZXMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0CiAKICAgICBKU1ZhbHVlIHRhcmdldFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICBpZiAodGFyZ2V0VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdC5lbnRyaWVzIHJl
cXVpcmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJP
YmplY3QuZW50cmllcyByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBv
ciB1bmRlZmluZWQiX3N0cik7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRhcmdldFZhbHVlLnRv
T2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIApAQCAtNDEzLDcgKzQxMyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RD
b25zdHJ1Y3RvclZhbHVlcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBK
U1ZhbHVlIHRhcmdldFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAodGFy
Z2V0VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdC52YWx1ZXMgcmVxdWlyZXMgdGhhdCBp
bnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdC52YWx1ZXMg
cmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9z
dHIpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0YXJnZXRWYWx1ZS50b09iamVjdChnbG9iYWxP
YmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKQEAgLTQ2MCw3
ICs0NjAsNyBAQCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzYwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghaW4uaXNPYmplY3QoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJvcGVydHkgZGVzY3JpcHRp
b24gbXVzdCBiZSBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0LiJf
c3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBKU09iamVjdCogZGVzY3Jp
cHRpb24gPSBhc09iamVjdChpbik7CkBAIC01MDgsNyArNTA4LDcgQEAgYm9vbCB0b1Byb3BlcnR5
RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGluLCBQcm9w
ZXJ0eURlc2MKICAgICAgICAgSlNWYWx1ZSBnZXQgPSBkZXNjcmlwdGlvbi0+Z2V0KGdsb2JhbE9i
amVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Z2V0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoIWdldC5pc1VuZGVmaW5lZCgpICYmICFnZXQu
aXNDYWxsYWJsZSh2bSkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJHZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiJfcyk7CisgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiR2V0dGVyIG11c3QgYmUgYSBmdW5j
dGlvbi4iX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAg
ICAgZGVzYy5zZXRHZXR0ZXIoZ2V0KTsKQEAgLTUyMSw3ICs1MjEsNyBAQCBib29sIHRvUHJvcGVy
dHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW4sIFBy
b3BlcnR5RGVzYwogICAgICAgICBKU1ZhbHVlIHNldCA9IGRlc2NyaXB0aW9uLT5nZXQoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICghc2V0LmlzVW5kZWZpbmVkKCkgJiYgIXNl
dC5pc0NhbGxhYmxlKHZtKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlNldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIl9zKTsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTZXR0ZXIgbXVzdCBiZSBhIGZ1
bmN0aW9uLiJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAg
ICAgICBkZXNjLnNldFNldHRlcihzZXQpOwpAQCAtNTMyLDEyICs1MzIsMTIgQEAgYm9vbCB0b1By
b3BlcnR5RGVzY3JpcHRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGlu
LCBQcm9wZXJ0eURlc2MKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoZGVzYy52YWx1
ZSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZh
bGlkIHByb3BlcnR5LiAgJ3ZhbHVlJyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9y
IHNldHRlci4iX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW52YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdl
dHRlciBvciBzZXR0ZXIuIl9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAg
ICAgaWYgKGRlc2Mud3JpdGFibGVQcmVzZW50KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHByZXNl
bnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRh
YmxlJyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iX3N0cik7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CkBAIC01NDksNyAr
NTQ5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yRGVmaW5l
UHJvcGVydHksIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJndW1lbnQoMCkuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm9w
ZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3N0cik7CiAgICAgSlNPYmpl
Y3QqIG9iaiA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGF1dG8gcHJv
cGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9i
amVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CkBAIC02MTYsNyArNjE2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0
cnVjdG9yRGVmaW5lUHJvcGVydGllcywgKEpTR2xvYmFsT2JqZWN0KiBnbG8KICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIWNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmpl
Y3RzLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iX3N0cik7
CiAgICAgSlNPYmplY3QqIHRhcmdldE9iaiA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+YXJndW1lbnQo
MCkpOwogICAgIEpTT2JqZWN0KiBwcm9wcyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSkudG9PYmpl
Y3QoZ2xvYmFsT2JqZWN0KTsKICAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9u
KCkgPT0gIXByb3BzKTsKQEAgLTYzMiw3ICs2MzIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04ob2JqZWN0Q29uc3RydWN0b3JDcmVhdGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogCiAgICAgSlNWYWx1ZSBwcm90byA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KCFwcm90by5pc09iamVjdCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdCBwcm90b3R5cGUgbWF5
IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGwuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdCBwcm90b3R5cGUgbWF5IG9ubHkg
YmUgYW4gT2JqZWN0IG9yIG51bGwuIl9zdHIpOwogICAgIEpTT2JqZWN0KiBuZXdPYmplY3QgPSBw
cm90by5pc09iamVjdCgpCiAgICAgICAgID8gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2Jq
ZWN0LCBhc09iamVjdChwcm90bykpCiAgICAgICAgIDogY29uc3RydWN0RW1wdHlPYmplY3Qodm0s
IGdsb2JhbE9iamVjdC0+bnVsbFByb3RvdHlwZU9iamVjdFN0cnVjdHVyZSgpKTsKQEAgLTc1Myw3
ICs3NTMsNyBAQCBKU09iamVjdCogb2JqZWN0Q29uc3RydWN0b3JTZWFsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvYmplY3QpCiAgICAgYm9vbCBzdWNjZXNzID0gc2V0
SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OlNlYWxlZD4oZ2xvYmFsT2JqZWN0LCB2bSwg
b2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJVbmFibGUgdG8gcHJldmVudCBleHRlbnNpb24gaW4gT2JqZWN0LnNlYWwi
X3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxl
IHRvIHByZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5zZWFsIl9zdHIpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTc4Niw3ICs3ODYsNyBAQCBKU09iamVjdCogb2JqZWN0
Q29uc3RydWN0b3JGcmVlemUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IG9iamVjdAogICAgIGJvb2wgc3VjY2VzcyA9IHNldEludGVncml0eUxldmVsPEludGVncml0eUxl
dmVsOjpGcm96ZW4+KGdsb2JhbE9iamVjdCwgdm0sIG9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAgICAgaWYgKFVOTElLRUxZKCFzdWNjZXNzKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxlIHRvIHBy
ZXZlbnQgZXh0ZW5zaW9uIGluIE9iamVjdC5mcmVlemUiX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxlIHRvIHByZXZlbnQgZXh0ZW5zaW9uIGlu
IE9iamVjdC5mcmVlemUiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KICAg
ICByZXR1cm4gb2JqZWN0OwpAQCAtODE3LDcgKzgxNyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihvYmplY3RDb25zdHJ1Y3RvclByZXZlbnRFeHRlbnNpb25zLCAoSlNHbG9iYWxPYmplY3Qq
IGdsCiAgICAgYm9vbCBzdGF0dXMgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+cHJldmVudEV4
dGVuc2lvbnMob2JqZWN0LCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElLRUxZKCFzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5hYmxlIHRvIHByZXZlbnQg
ZXh0ZW5zaW9uIGluIE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucyJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmFibGUgdG8gcHJldmVu
dCBleHRlbnNpb24gaW4gT2JqZWN0LnByZXZlbnRFeHRlbnNpb25zIl9zdHIpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUob2JqZWN0KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKaW5kZXggOTViYmEzY2IzMjBlYTVjNzBm
OTgwNDNmZTBkMjY3MDE3NzNhMGUyYy4uYzA4ZmM0YjdjMDdhNTY2MjI1MGMxOGFjMjlhNTI1NmZj
ODFiMTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0
UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQ
cm90b3R5cGUuY3BwCkBAIC0xNTksNyArMTU5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KG9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoK
IAogICAgIEpTVmFsdWUgZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBpZiAoIWdl
dC5pc0NhbGxhYmxlKHZtKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImludmFsaWQgZ2V0dGVyIHVzYWdlIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgZ2V0dGVyIHVz
YWdlIl9zdHIpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE4Niw3ICsxODYsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iagogCiAgICAgSlNWYWx1ZSBzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEp
OwogICAgIGlmICghc2V0LmlzQ2FsbGFibGUodm0pKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBzZXR0ZXIgdXNhZ2UiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52
YWxpZCBzZXR0ZXIgdXNhZ2UiX3N0cik7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCmluZGV4IDA5MTllNzIxODZkMzlkNmQ1NmVkZDcx
OGE5Y2ZiOGEzMDRmNTkxNzEuLmI3NDQ4OTliM2I5YTI3YmI0OTY0YjU1N2Q1ODQzNDA0NzgwYjQ0
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKQEAgLTgw
Nyw3ICs4MDcsNyBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUganNVUlNoaWZ0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbGVmdCwgSlNWYQogICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoVU5MSUtFTFkoIWxlZnRVaW50MzIgfHwgIXJp
Z2h0VWludDMyKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQmlnSW50IGRvZXMgbm90IHN1cHBvcnQgPj4+IG9wZXJhdG9yIl9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBkb2VzIG5vdCBzdXBwb3J0
ID4+PiBvcGVyYXRvciJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRhYmxlLmNwcApp
bmRleCBlYWJmYTg1YWNhMzdlZjBhYTdjN2RmODk1ZWFlNDE3MzlkMTU0OTBlLi44MzczM2E1YmYx
NGIzMWY1ZWEzOWQ2M2E4ZDUzMmJhYTA5MDYwZmVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCkBAIC04OCw3ICs4OCw3IEBA
IEpTT2JqZWN0KiBQcm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMo
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCoKICAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBnbG9i
YWxPYmplY3QtPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgd2hpbGUgKG5leHRQcm90b3R5
cGUgJiYgbmV4dFByb3RvdHlwZS5pc09iamVjdCgpKSB7CiAgICAgICAgIGlmIChVTkxJS0VMWShh
c09iamVjdChuZXh0UHJvdG90eXBlKS0+dHlwZSgpID09IFByb3h5T2JqZWN0VHlwZSkpCi0gICAg
ICAgICAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIlByb3h5IGlzIG5v
dCBhbGxvd2VkIGluIHRoZSBnbG9iYWwgcHJvdG90eXBlIGNoYWluLiJfcyk7CisgICAgICAgICAg
ICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIlByb3h5IGlzIG5vdCBhbGxv
d2VkIGluIHRoZSBnbG9iYWwgcHJvdG90eXBlIGNoYWluLiJfc3RyKTsKICAgICAgICAgbmV4dFBy
b3RvdHlwZSA9IGFzT2JqZWN0KG5leHRQcm90b3R5cGUpLT5nZXRQcm90b3R5cGVEaXJlY3Qodm0p
OwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Byb3h5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJv
eHlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZjcyZjhmN2FlZTUzMDkwNzE4NjM5NmMyMzE0NWNiYWJk
ZmJiMWYzYy4uOTFkNDhkZjA5ZmMxMmFkZWU2OTg3OTdlZTM0YzFmZDVmM2MzYTczMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAK
QEAgLTU4LDcgKzU4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG1ha2VSZXZvY2FibGVQ
cm94eSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGwKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOwogICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDIpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eS5yZXZvY2Fi
bGUgbmVlZHMgdG8gYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQg
dGhlIGhhbmRsZXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUHJveHkucmV2b2NhYmxlIG5lZWRzIHRvIGJlIGNhbGxlZCB3aXRoIHR3
byBhcmd1bWVudHM6IHRoZSB0YXJnZXQgYW5kIHRoZSBoYW5kbGVyIl9zdHIpOwogCiAgICAgSlNW
YWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgaGFuZGxl
ciA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Qcm94eU9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eU9iamVjdC5jcHAKaW5kZXggNDVmNThkOTlkMzVkNWExM2RkYjk5ZTBhNjRjZjkx
ZmI2NmQ5MzhkZi4uOGU1ODliZmFmMDk0MTllZjY4YmM1OTY4NWUzNDU4YTY1YjBkZWIxMSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcApAQCAtNjAs
MTEgKzYwLDExIEBAIHZvaWQgUHJveHlPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOwogICAgIEFTU0VSVCh0eXBlKCkgPT0gUHJveHlPYmplY3RUeXBlKTsKICAgICBp
ZiAoIXRhcmdldC5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJBIFByb3h5J3MgJ3RhcmdldCcgc2hvdWxkIGJlIGFuIE9iamVjdCJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBIFByb3h5J3Mg
J3RhcmdldCcgc2hvdWxkIGJlIGFuIE9iamVjdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBpZiAoIWhhbmRsZXIuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQgYmUgYW4g
T2JqZWN0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkEgUHJveHkncyAnaGFuZGxlcicgc2hvdWxkIGJlIGFuIE9iamVjdCJfc3RyKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTE3LDcgKzExNyw3IEBAIHN0YXRpYyBKU1ZhbHVlIHBlcmZv
cm1Qcm94eUdldChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm94eU9iamVjdCogcHJv
eHlPCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJW
YWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBnZXRIYW5kbGVyID0g
aGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnByb3BlcnR5TmFt
ZXMtPmdldCwgIidnZXQnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIG9iamVjdCBzaG91
bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgZ2V0SGFuZGxlciA9IGhhbmRsZXItPmdl
dE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXQsICIn
Z2V0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBvYmplY3Qgc2hvdWxkIGJlIGNhbGxh
YmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBp
ZiAoZ2V0SGFuZGxlci5pc1VuZGVmaW5lZCgpKQpAQCAtMTM5LDEwICsxMzksMTAgQEAgc3RhdGlj
IEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFBy
b3h5T2JqZWN0KiBwcm94eU8KICAgICAgICAgICAgIGJvb2wgaXNTYW1lID0gc2FtZVZhbHVlKGds
b2JhbE9iamVjdCwgZGVzY3JpcHRvci52YWx1ZSgpLCB0cmFwUmVzdWx0KTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgICAgICBpZiAoIWlzU2Ft
ZSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxl
IGFuZCBub24td3JpdGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFzIHRo
ZSB0YXJnZXQncyBwcm9wZXJ0eSJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ2dldCcgcmVzdWx0
IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHByb3BlcnR5IHNob3VsZCBi
ZSB0aGUgc2FtZSB2YWx1ZSBhcyB0aGUgdGFyZ2V0J3MgcHJvcGVydHkiX3N0cik7CiAgICAgICAg
IH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYmICFkZXNjcmlw
dG9yLmNvbmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3IuZ2V0dGVyKCkuaXNVbmRlZmluZWQoKSkg
ewogICAgICAgICAgICAgaWYgKCF0cmFwUmVzdWx0LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBo
YW5kbGVyJ3MgJ2dldCcgcmVzdWx0IG9mIGEgbm9uLWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9w
ZXJ0eSB3aXRob3V0IGEgZ2V0dGVyIHNob3VsZCBiZSB1bmRlZmluZWQiX3MpOworICAgICAgICAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkg
aGFuZGxlcidzICdnZXQnIHJlc3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNzb3IgcHJv
cGVydHkgd2l0aG91dCBhIGdldHRlciBzaG91bGQgYmUgdW5kZWZpbmVkIl9zdHIpOwogICAgICAg
ICB9CiAgICAgfQogCkBAIC0yMTEsNyArMjExLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9y
bUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUK
IAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVl
KTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGdldE93blByb3BlcnR5RGVz
Y3JpcHRvck1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRh
LCBtYWtlSWRlbnRpZmllcih2bSwgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpLCAiJ2dldE93
blByb3BlcnR5RGVzY3JpcHRvcicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxk
IGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGdldE93blByb3BlcnR5RGVzY3JpcHRvck1l
dGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRl
bnRpZmllcih2bSwgImdldE93blByb3BlcnR5RGVzY3JpcHRvciIpLCAiJ2dldE93blByb3BlcnR5
RGVzY3JpcHRvcicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxh
YmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBp
ZiAoZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kLmlzVW5kZWZpbmVkKCkpCiAgICAgICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcGVyZm9ybURlZmF1bHRHZXRPd25Qcm9wZXJ0eSgp
KTsKQEAgLTIyNCw3ICsyMjQsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxN
ZXRob2RHZXRPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc1Vu
ZGVmaW5lZCgpICYmICF0cmFwUmVzdWx0LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJyBjYWxsIHNob3VsZCBlaXRoZXIgYmUgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZXN1bHQgb2Yg
J2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FsbCBzaG91bGQgZWl0aGVyIGJlIGFuIE9iamVj
dCBvciB1bmRlZmluZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAg
LTIzNiwxMyArMjM2LDEzIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhv
ZEdldE93blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIGlmICgh
aXNUYXJnZXRQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICBpZiAoIXRhcmdldFByb3BlcnR5RGVzY3JpcHRvci5jb25maWd1cmFibGUo
KSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIldo
ZW4gdGhlIHJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBpcyB1bmRlZmluZWQg
dGhlIHRhcmdldCBtdXN0IGJlIGNvbmZpZ3VyYWJsZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2hlbiB0aGUgcmVzdWx0IG9mICdnZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0aGUgdGFyZ2V0IG11c3QgYmUgY29uZmln
dXJhYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gdGFyZ2V0LT5pc0V4dGVuc2libGUoZ2xvYmFsT2JqZWN0
KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBp
ZiAoIWlzRXh0ZW5zaWJsZSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIldoZW4gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgcmV0dXJucyB1bmRl
ZmluZWQsIHRoZSAndGFyZ2V0JyBvZiBhIFByb3h5IHNob3VsZCBiZSBleHRlbnNpYmxlIl9zKTsK
KyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJXaGVuICdn
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIHJldHVybnMgdW5kZWZpbmVkLCB0aGUgJ3RhcmdldCcg
b2YgYSBQcm94eSBzaG91bGQgYmUgZXh0ZW5zaWJsZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogCkBAIC0yNjAsMTcgKzI2MCwxNyBAQCBib29sIFByb3h5T2Jq
ZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZQogICAgICAgICB0cmFwUmVzdWx0QXNEZXNjcmlwdG9yLCBpc1RhcmdldFByb3Bl
cnR5RGVzY3JpcHRvckRlZmluZWQsIHRhcmdldFByb3BlcnR5RGVzY3JpcHRvciwgdGhyb3dFeGNl
cHRpb24pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAo
IXZhbGlkKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZXN1bHQgZnJvbSAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBmYWlscyB0aGUgSXNDb21wYXRp
YmxlUHJvcGVydHlEZXNjcmlwdG9yIHRlc3QiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRv
cicgZmFpbHMgdGhlIElzQ29tcGF0aWJsZVByb3BlcnR5RGVzY3JpcHRvciB0ZXN0Il9zdHIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCiAgICAgaWYgKCF0cmFwUmVzdWx0QXNEZXNj
cmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgIGlmICghaXNUYXJnZXRQcm9wZXJ0eURl
c2NyaXB0b3JEZWZpbmVkIHx8IHRhcmdldFByb3BlcnR5RGVzY3JpcHRvci5jb25maWd1cmFibGUo
KSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJl
c3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1
cmFibGUgd2hlbiB0aGUgJ3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0
eSBvciBpZiBpdCBpcyBhIGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciX3Mp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlc3Vs
dCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFi
bGUgd2hlbiB0aGUgJ3RhcmdldCcgZG9lc24ndCBoYXZlIGl0IGFzIGFuIG93biBwcm9wZXJ0eSBv
ciBpZiBpdCBpcyBhIGNvbmZpZ3VyYWJsZSBvd24gcHJvcGVydHkgb24gJ3RhcmdldCciX3N0cik7
CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHRyYXBS
ZXN1bHRBc0Rlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgIXRyYXBSZXN1bHRBc0Rlc2Ny
aXB0b3Iud3JpdGFibGUoKSAmJiB0YXJnZXRQcm9wZXJ0eURlc2NyaXB0b3Iud3JpdGFibGUoKSkg
ewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlc3Vs
dCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbid0IGJlIG5vbi1jb25maWd1cmFi
bGUgYW5kIG5vbi13cml0YWJsZSB3aGVuIHRoZSB0YXJnZXQncyBwcm9wZXJ0eSBpcyB3cml0YWJs
ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgY2FuJ3QgYmUgbm9uLWNvbmZp
Z3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIHdy
aXRhYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
fQpAQCAtMzE1LDcgKzMxNSw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0
eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUKIAogICAgIEpTT2Jq
ZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGhhc01ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhv
ZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5oYXMsICInaGFzJyBw
cm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAg
IEpTVmFsdWUgaGFzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2Fs
bERhdGEsIHZtLnByb3BlcnR5TmFtZXMtPmhhcywgIidoYXMnIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKGhhc01ldGhvZC5pc1VuZGVmaW5lZCgpKQogICAg
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHBlcmZvcm1EZWZhdWx0SGFzUHJvcGVydHko
KSk7CkBAIC0zMzYsMTMgKzMzNiwxMyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSGFzUHJv
cGVydHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lCiAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKGlzUHJvcGVy
dHlEZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmNvbmZp
Z3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlByb3h5ICdoYXMnIG11c3QgcmV0dXJuICd0cnVlJyBmb3Igbm9uLWNvbmZpZ3Vy
YWJsZSBwcm9wZXJ0aWVzIl9zKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUHJveHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUnIGZvciBub24t
Y29uZmlndXJhYmxlIHByb3BlcnRpZXMiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0YXJn
ZXQtPmlzRXh0ZW5zaWJsZShnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgaWYgKCFpc0V4dGVuc2libGUpIHsK
LSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJv
eHkgJ2hhcycgbXVzdCByZXR1cm4gJ3RydWUnIGZvciBhIG5vbi1leHRlbnNpYmxlICd0YXJnZXQn
IG9iamVjdCB3aXRoIGEgY29uZmlndXJhYmxlIHByb3BlcnR5Il9zKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgJ2hhcycgbXVzdCBy
ZXR1cm4gJ3RydWUnIGZvciBhIG5vbi1leHRlbnNpYmxlICd0YXJnZXQnIG9iamVjdCB3aXRoIGEg
Y29uZmlndXJhYmxlIHByb3BlcnR5Il9zdHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDE5LDcgKzQxOSw3IEBAIGJvb2wgUHJv
eHlPYmplY3Q6OnBlcmZvcm1QdXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSBwdXRWYWx1ZSwgSlNWCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVj
dCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBz
ZXRNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgdm0u
cHJvcGVydHlOYW1lcy0+c2V0LCAiJ3NldCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIg
c2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIHNldE1ldGhvZCA9IGhhbmRsZXIt
PmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQs
ICInc2V0JyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUi
X3N0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIEpTT2Jq
ZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKICAgICBpZiAoc2V0TWV0aG9kLmlzVW5kZWZp
bmVkKCkpCkBAIC00NDksMTEgKzQ0OSwxMSBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtUHV0
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHV0VmFsdWUsIEpTVgogICAg
ICAgICAgICAgYm9vbCBpc1NhbWUgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBkZXNjcmlwdG9y
LnZhbHVlKCksIHB1dFZhbHVlKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKICAgICAgICAgICAgIGlmICghaXNTYW1lKSB7Ci0gICAgICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnc2V0
JyBvbiBhIG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFy
Z2V0JyBzaG91bGQgZWl0aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJl
YWR5IG9uIHRoZSAndGFyZ2V0JyJfcyk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnc2V0JyBvbiBhIG5vbi1jb25m
aWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBvbiAndGFyZ2V0JyBzaG91bGQgZWl0
aGVyIHJldHVybiBmYWxzZSBvciBiZSB0aGUgc2FtZSB2YWx1ZSBhbHJlYWR5IG9uIHRoZSAndGFy
Z2V0JyJfc3RyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRvcigpICYm
ICFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpICYmIGRlc2NyaXB0b3Iuc2V0dGVyKCkuaXNVbmRl
ZmluZWQoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlByb3h5IGhhbmRsZXIncyAnc2V0JyBtZXRob2Qgb24gYSBub24tY29uZmlndXJhYmxlIGFj
Y2Vzc29yIHByb3BlcnR5IHdpdGhvdXQgYSBzZXR0ZXIgc2hvdWxkIHJldHVybiBmYWxzZSJfcyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkg
aGFuZGxlcidzICdzZXQnIG1ldGhvZCBvbiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNzb3IgcHJv
cGVydHkgd2l0aG91dCBhIHNldHRlciBzaG91bGQgcmV0dXJuIGZhbHNlIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtNTEyLDcgKzUxMiw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihwZXJmb3JtUHJveHlDYWxsLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2Fz
dDxKU09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAg
SlNWYWx1ZSBhcHBseU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNh
bGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9m
IGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBh
cHBseU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBt
YWtlSWRlbnRpZmllcih2bSwgImFwcGx5IiksICInYXBwbHknIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICBKU09iamVjdCogdGFyZ2V0ID0gcHJv
eHktPnRhcmdldCgpOwogICAgIGlmIChhcHBseU1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CkBAIC01
NTksNyArNTU5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHBlcmZvcm1Qcm94eUNvbnN0
cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKIAogICAgIEpTT2JqZWN0KiBo
YW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICBKU1ZhbHVlIGNvbnN0cnVjdE1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhv
ZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImNvbnN0cnVjdCIp
LCAiJ2NvbnN0cnVjdCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNh
bGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGNvbnN0cnVjdE1ldGhvZCA9IGhhbmRsZXItPmdldE1l
dGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImNvbnN0cnVj
dCIpLCAiJ2NvbnN0cnVjdCcgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJl
IGNhbGxhYmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBwcm94eS0+dGFyZ2V0KCk7CiAgICAg
aWYgKGNvbnN0cnVjdE1ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CkBAIC01NzgsNyArNTc4LDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHBlcmZvcm1Qcm94eUNvbnN0cnVjdCwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEMKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNhbGwoZ2xvYmFs
T2JqZWN0LCBjb25zdHJ1Y3RNZXRob2QsIGNhbGxEYXRhLCBoYW5kbGVyLCBhcmd1bWVudHMpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlm
ICghcmVzdWx0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVj
dCcgbWV0aG9kIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVzdWx0IGZyb20gUHJveHkgaGFuZGxl
cidzICdjb25zdHJ1Y3QnIG1ldGhvZCBzaG91bGQgYmUgYW4gb2JqZWN0Il9zdHIpOwogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocmVzdWx0KTsKIH0KIApAQCAtNjE2LDcgKzYxNiw3IEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWxldGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgUHJvcGVydHlOYW1lIHByb3BlCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxK
U09iamVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNW
YWx1ZSBkZWxldGVQcm9wZXJ0eU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmpl
Y3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImRlbGV0ZVByb3BlcnR5IiksICInZGVs
ZXRlUHJvcGVydHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxs
YWJsZSJfcyk7CisgICAgSlNWYWx1ZSBkZWxldGVQcm9wZXJ0eU1ldGhvZCA9IGhhbmRsZXItPmdl
dE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImRlbGV0
ZVByb3BlcnR5IiksICInZGVsZXRlUHJvcGVydHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5k
bGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwogICAg
IGlmIChkZWxldGVQcm9wZXJ0eU1ldGhvZC5pc1VuZGVmaW5lZCgpKQpAQCAtNjQwLDEzICs2NDAs
MTMgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICBFWENFUFRJT05fQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSB8fCAhcmVzdWx0KTsKICAgICBpZiAocmVzdWx0KSB7CiAgICAgICAgIGlm
ICghZGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHkn
IG1ldGhvZCBzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlz
IG5vdCBjb25maWd1cmFibGUiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1ldGhvZCBz
aG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vdCBjb25m
aWd1cmFibGUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAg
ICAgICAgYm9vbCB0YXJnZXRJc0V4dGVuc2libGUgPSB0YXJnZXQtPmlzRXh0ZW5zaWJsZShnbG9i
YWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAg
ICAgICAgIGlmICghdGFyZ2V0SXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidzICdkZWxldGVQcm9wZXJ0
eScgbWV0aG9kIHNob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgdGFyZ2V0IGhhcyBwcm9wZXJ0
eSBhbmQgaXMgbm90IGV4dGVuc2libGUiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZGVsZXRlUHJvcGVydHknIG1l
dGhvZCBzaG91bGQgcmV0dXJuIGZhbHNlIHdoZW4gdGhlIHRhcmdldCBoYXMgcHJvcGVydHkgYW5k
IGlzIG5vdCBleHRlbnNpYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICB9CiAgICAgfQpAQCAtNjk3LDcgKzY5Nyw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZv
cm1QcmV2ZW50RXh0ZW5zaW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAg
SlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTVmFsdWUgcHJldmVudEV4dGVuc2lvbnNNZXRob2Qg
PSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZp
ZXIodm0sICJwcmV2ZW50RXh0ZW5zaW9ucyIpLCAiJ3ByZXZlbnRFeHRlbnNpb25zJyBwcm9wZXJ0
eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFs
dWUgcHJldmVudEV4dGVuc2lvbnNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJwcmV2ZW50RXh0ZW5zaW9ucyIpLCAi
J3ByZXZlbnRFeHRlbnNpb25zJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQg
YmUgY2FsbGFibGUiX3N0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2Up
OwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKICAgICBpZiAocHJldmVu
dEV4dGVuc2lvbnNNZXRob2QuaXNVbmRlZmluZWQoKSkKQEAgLTcxNiw3ICs3MTYsNyBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtUHJldmVudEV4dGVuc2lvbnMoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKICAgICAgICAgYm9vbCB0YXJnZXRJc0V4dGVuc2libGUgPSB0YXJnZXQtPmlz
RXh0ZW5zaWJsZShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICh0YXJnZXRJc0V4dGVuc2libGUpIHsKLSAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdwcmV2ZW50
RXh0ZW5zaW9ucycgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGl0cyB0YXJnZXQgaXMg
ZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiX3MpOworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ3ByZXZlbnRF
eHRlbnNpb25zJyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91Z2ggaXRzIHRhcmdldCBpcyBl
eHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSJfc3RyKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KQEAgLTc0OCw3ICs3NDgsNyBAQCBi
b29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhh
bmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBpc0V4dGVu
c2libGVNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwg
bWFrZUlkZW50aWZpZXIodm0sICJpc0V4dGVuc2libGUiKSwgIidpc0V4dGVuc2libGUnIHByb3Bl
cnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNW
YWx1ZSBpc0V4dGVuc2libGVNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0
LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJpc0V4dGVuc2libGUiKSwgIidpc0V4dGVu
c2libGUnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJf
c3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBKU09i
amVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CkBAIC03NzAsMTEgKzc3MCwxMSBAQCBib29s
IFByb3h5T2JqZWN0OjpwZXJmb3JtSXNFeHRlbnNpYmxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAgICAgaWYgKHRyYXBSZXN1bHRBc0Jvb2wgIT0gaXNUYXJnZXRFeHRlbnNpYmxlKSB7
CiAgICAgICAgIGlmIChpc1RhcmdldEV4dGVuc2libGUpIHsKICAgICAgICAgICAgIEFTU0VSVCgh
dHJhcFJlc3VsdEFzQm9vbCk7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCBm
YWxzZSB3aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJu
ZWQgdHJ1ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUHJveHkgb2JqZWN0J3MgJ2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCBmYWxzZSB3
aGVuIHRoZSB0YXJnZXQgaXMgZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgdHJ1
ZSJfc3RyKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVCghaXNUYXJnZXRF
eHRlbnNpYmxlKTsKICAgICAgICAgICAgIEFTU0VSVCh0cmFwUmVzdWx0QXNCb29sKTsKLSAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBvYmplY3Qn
cyAnaXNFeHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIHRydWUgd2hlbiB0aGUgdGFyZ2V0IGlzIG5v
bi1leHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSJfcyk7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgb2JqZWN0J3Mg
J2lzRXh0ZW5zaWJsZScgdHJhcCByZXR1cm5lZCB0cnVlIHdoZW4gdGhlIHRhcmdldCBpcyBub24t
ZXh0ZW5zaWJsZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiX3N0cik7CiAgICAgICAg
IH0KICAgICB9CiAgICAgCkBAIC04MTMsNyArODEzLDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVy
Zm9ybURlZmluZU93blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
cnQKIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZh
bHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGRlZmluZVByb3BlcnR5
TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnBy
b3BlcnR5TmFtZXMtPmRlZmluZVByb3BlcnR5LCAiJ2RlZmluZVByb3BlcnR5JyBwcm9wZXJ0eSBv
ZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUg
ZGVmaW5lUHJvcGVydHlNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBj
YWxsRGF0YSwgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksICInZGVmaW5lUHJvcGVy
dHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3Ry
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBpZiAoZGVm
aW5lUHJvcGVydHlNZXRob2QuaXNVbmRlZmluZWQoKSkKQEAgLTg1MCwxMSArODUwLDExIEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBQcm9wZXJ0CiAKICAgICBpZiAoIWlzVGFyZ2V0RGVzY3JpcHRvckRlZmlu
ZWQpIHsKICAgICAgICAgaWYgKCF0YXJnZXRJc0V4dGVuc2libGUpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0
eScgdHJhcCByZXR1cm5lZCB0cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRv
ciBvZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0
IGlzIG5vbi1leHRlbnNpYmxlIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0
cnVlIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBvZiB0aGUgUHJveHkncyB0
YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIGFuZCB0aGUgdGFyZ2V0IGlzIG5vbi1leHRlbnNpYmxl
Il9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGlm
IChzZXR0aW5nQ29uZmlndXJhYmxlVG9GYWxzZSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIHJl
dHVybmVkIHRydWUgZm9yIGEgbm9uLWNvbmZpZ3VyYWJsZSBmaWVsZCBldmVuIHRob3VnaCBnZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3Igb2YgdGhlIFByb3h5J3MgdGFyZ2V0IHJldHVybmVkIHVuZGVm
aW5lZCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBub24t
Y29uZmlndXJhYmxlIGZpZWxkIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBv
ZiB0aGUgUHJveHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIl9zdHIpOwogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTg2OCwxNiArODY4LDE2IEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1EZWZpbmVPd25Qcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBQcm9wZXJ0CiAgICAgYm9vbCBpc0NvbXBhdGlibGVEZXNjcmlwdG9yID0gdmFs
aWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcihnbG9iYWxPYmplY3QsIG51bGxwdHIsIHBy
b3BlcnR5TmFtZSwgdGFyZ2V0SXNFeHRlbnNpYmxlLCBkZXNjcmlwdG9yLCBpc0N1cnJlbnREZWZp
bmVkLCBjdXJyZW50LCB0aHJvd0V4Y2VwdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZmFsc2UpOyAgICAKICAgICBpZiAoIWlzQ29tcGF0aWJsZURlc2NyaXB0b3IpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ2RlZmlu
ZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5lIGEgcHJvcGVydHkgb24gaXRzIHRhcmdldCB0
aGF0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdHJhcCdzIGlucHV0IGRlc2NyaXB0b3IiX3MpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkncyAnZGVm
aW5lUHJvcGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0
IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB0cmFwJ3MgaW5wdXQgZGVzY3JpcHRvciJfc3Ry
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAoc2V0dGluZ0NvbmZpZ3Vy
YWJsZVRvRmFsc2UgJiYgdGFyZ2V0RGVzY3JpcHRvci5jb25maWd1cmFibGUoKSkgewotICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkncyAnZGVmaW5lUHJv
cGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IG9u
IGl0cyB0YXJnZXQgZXZlbiB0aG91Z2ggdGhlIGlucHV0IGRlc2NyaXB0b3IgdG8gdGhlIHRyYXAg
c2FpZCBpdCBtdXN0IGRvIHNvIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIGRpZCBub3QgZGVmaW5l
IGEgbm9uLWNvbmZpZ3VyYWJsZSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IGV2ZW4gdGhvdWdoIHRo
ZSBpbnB1dCBkZXNjcmlwdG9yIHRvIHRoZSB0cmFwIHNhaWQgaXQgbXVzdCBkbyBzbyJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICBpZiAodGFyZ2V0RGVzY3JpcHRvci5p
c0RhdGFEZXNjcmlwdG9yKCkgJiYgIXRhcmdldERlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYg
dGFyZ2V0RGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgIGlmIChkZXNjcmlwdG9yLndy
aXRhYmxlUHJlc2VudCgpICYmICFkZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsKLSAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9w
ZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZvciBhIG5vbi13cml0YWJsZSBpbnB1dCBkZXNjcmlw
dG9yIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlzIG5vbi1jb25maWd1cmFibGUgYW5kIHdy
aXRhYmxlIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCByZXR1cm5lZCB0cnVlIGZvciBhIG5v
bi13cml0YWJsZSBpbnB1dCBkZXNjcmlwdG9yIHdoZW4gdGhlIHRhcmdldCdzIHByb3BlcnR5IGlz
IG5vbi1jb25maWd1cmFibGUgYW5kIHdyaXRhYmxlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAgICAgfQpAQCAtOTA5LDcgKzkwOSw3IEBAIHZvaWQgUHJveHlP
YmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFByb3BlCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+
KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBvd25L
ZXlzTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1h
a2VJZGVudGlmaWVyKHZtLCAib3duS2V5cyIpLCAiJ293bktleXMnIHByb3BlcnR5IG9mIGEgUHJv
eHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBvd25LZXlz
TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJ
ZGVudGlmaWVyKHZtLCAib3duS2V5cyIpLCAiJ293bktleXMnIHByb3BlcnR5IG9mIGEgUHJveHkn
cyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQo
KTsKICAgICBpZiAob3duS2V5c01ldGhvZC5pc1VuZGVmaW5lZCgpKSB7CkBAIC05MjUsMTQgKzky
NSwxNCBAQCB2b2lkIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0T3duUHJvcGVydHlOYW1lcyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAKICAgICBpZiAoIXRyYXBSZXN1bHQuaXNPYmplY3QoKSkgewotICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidz
ICdvd25LZXlzJyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5
cycgbWV0aG9kIG11c3QgcmV0dXJuIGFuIG9iamVjdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIEhhc2hTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqPiB1bmNoZWNrZWRSZXN1bHRL
ZXlzOwogICAgIGZvckVhY2hJbkFycmF5TGlrZShnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHRyYXBS
ZXN1bHQpLCBbJl0gKEpTVmFsdWUgdmFsdWUpIC0+IGJvb2wgewogICAgICAgICBpZiAoIXZhbHVl
LmlzU3RyaW5nKCkgJiYgIXZhbHVlLmlzU3ltYm9sKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1l
dGhvZCBtdXN0IHJldHVybiBhbiBhcnJheS1saWtlIG9iamVjdCBjb250YWluaW5nIG9ubHkgU3Ry
aW5ncyBhbmQgU3ltYm9scyJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidzICdvd25LZXlzJyBtZXRob2QgbXVzdCByZXR1
cm4gYW4gYXJyYXktbGlrZSBvYmplY3QgY29udGFpbmluZyBvbmx5IFN0cmluZ3MgYW5kIFN5bWJv
bHMiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApAQCAtOTQw
LDcgKzk0MCw3IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRPd25Qcm9wZXJ0eU5hbWVz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlCiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgICAgICBpZiAoIXVuY2hlY2tlZFJlc3VsdEtl
eXMuYWRkKGlkZW50LmltcGwoKSkuaXNOZXdFbnRyeSkgewotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycgdHJh
cCByZXN1bHQgbXVzdCBub3QgY29udGFpbiBhbnkgZHVwbGljYXRlIG5hbWVzIl9zKTsKKyAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVy
J3MgJ293bktleXMnIHRyYXAgcmVzdWx0IG11c3Qgbm90IGNvbnRhaW4gYW55IGR1cGxpY2F0ZSBu
YW1lcyJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC05
ODMsNyArOTgzLDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFt
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGUKICAgICAgICAgfQogCiAgICAg
ICAgIGlmICh1bmNoZWNrZWRSZXN1bHRLZXlzLnNpemUoKSkgewotICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycg
bWV0aG9kIHJldHVybmVkIGEga2V5IHRoYXQgd2FzIG5vdCBwcmVzZW50IGluIGl0cyBub24tZXh0
ZW5zaWJsZSB0YXJnZXQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycgbWV0aG9kIHJldHVybmVkIGEg
a2V5IHRoYXQgd2FzIG5vdCBwcmVzZW50IGluIGl0cyBub24tZXh0ZW5zaWJsZSB0YXJnZXQiX3N0
cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBAIC0xMDQwLDcgKzEw
NDAsNyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdAogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIg
PSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRh
OwotICAgIEpTVmFsdWUgc2V0UHJvdG90eXBlT2ZNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2Qo
Z2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJzZXRQcm90b3R5cGVP
ZiIpLCAiJ3NldFByb3RvdHlwZU9mJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91
bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgc2V0UHJvdG90eXBlT2ZNZXRob2QgPSBo
YW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIo
dm0sICJzZXRQcm90b3R5cGVPZiIpLCAiJ3NldFByb3RvdHlwZU9mJyBwcm9wZXJ0eSBvZiBhIFBy
b3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3N0cik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRh
cmdldCgpOwpAQCAtMTA1OSw3ICsxMDU5LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVNl
dFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3QKICAg
ICAKICAgICBpZiAoIXRyYXBSZXN1bHRBc0Jvb2wpIHsKICAgICAgICAgaWYgKHNob3VsZFRocm93
SWZDYW50U2V0KQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlByb3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNhdGluZyBpdCBj
b3VsZCBub3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24gd2FzIGV4cGVj
dGVkIHRvIHN1Y2NlZWQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5ICdzZXRQcm90b3R5cGVPZicgcmV0dXJuZWQgZmFsc2UgaW5kaWNh
dGluZyBpdCBjb3VsZCBub3Qgc2V0IHRoZSBwcm90b3R5cGUgdmFsdWUuIFRoZSBvcGVyYXRpb24g
d2FzIGV4cGVjdGVkIHRvIHN1Y2NlZWQiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKQEAgLTEwNzMsNyArMTA3Myw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1TZXRQ
cm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90CiAgICAg
Ym9vbCBpc1NhbWUgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIHRhcmdldFBy
b3RvdHlwZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgIGlm
ICghaXNTYW1lKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJQcm94eSAnc2V0UHJvdG90eXBlT2YnIHRyYXAgcmV0dXJuZWQgdHJ1ZSB3aGVuIGl0cyB0YXJn
ZXQgaXMgbm9uLWV4dGVuc2libGUgYW5kIHRoZSBuZXcgcHJvdG90eXBlIHZhbHVlIGlzIG5vdCB0
aGUgc2FtZSBhcyB0aGUgY3VycmVudCBwcm90b3R5cGUgdmFsdWUuIEl0IHNob3VsZCBoYXZlIHJl
dHVybmVkIGZhbHNlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlByb3h5ICdzZXRQcm90b3R5cGVPZicgdHJhcCByZXR1cm5lZCB0cnVlIHdoZW4gaXRz
IHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSBhbmQgdGhlIG5ldyBwcm90b3R5cGUgdmFsdWUgaXMg
bm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHByb3RvdHlwZSB2YWx1ZS4gSXQgc2hvdWxkIGhh
dmUgcmV0dXJuZWQgZmFsc2UiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
QEAgLTExMDQsNyArMTEwNCw3IEBAIEpTVmFsdWUgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90
b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTT2JqZWN0KiBoYW5k
bGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBKU1ZhbHVlIGdldFByb3RvdHlwZU9mTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0
aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAiZ2V0UHJvdG90
eXBlT2YiKSwgIidnZXRQcm90b3R5cGVPZicgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIg
c2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGdldFByb3RvdHlwZU9mTWV0aG9k
ID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlm
aWVyKHZtLCAiZ2V0UHJvdG90eXBlT2YiKSwgIidnZXRQcm90b3R5cGVPZicgcHJvcGVydHkgb2Yg
YSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zdHIpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGhpcy0+
dGFyZ2V0KCk7CkBAIC0xMTE4LDcgKzExMTgsNyBAQCBKU1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJm
b3JtR2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghdHJhcFJlc3VsdC5pc09iamVj
dCgpICYmICF0cmFwUmVzdWx0LmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ2dldFByb3RvdHlwZU9mJyB0cmFw
IHNob3VsZCBlaXRoZXIgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsIl9zKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZ2V0UHJv
dG90eXBlT2YnIHRyYXAgc2hvdWxkIGVpdGhlciByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwiX3N0
cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xMTMyLDcgKzExMzIsNyBAQCBK
U1ZhbHVlIFByb3h5T2JqZWN0OjpwZXJmb3JtR2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgYm9vbCBpc1NhbWUgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCB0
YXJnZXRQcm90b3R5cGUsIHRyYXBSZXN1bHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CiAgICAgaWYgKCFpc1NhbWUpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ2dldFByb3RvdHlwZU9mJyB0cmFwIGZvciBhIG5v
bi1leHRlbnNpYmxlIHRhcmdldCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0
YXJnZXQncyBwcm90b3R5cGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiUHJveHkncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgZm9yIGEgbm9uLWV4dGVu
c2libGUgdGFyZ2V0IHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHRhcmdldCdz
IHByb3RvdHlwZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKaW5kZXggMDg3Mzdk
YWE3NTYyMzdmNmNhMmUwOWRjOGMxYWQ3NWQxZGI4YzUxNi4uYmE4MDM1MjI3OTcyMmM0NzgyOWQ5
Y2FlMDZmNjcyODVlYjVkZWUyYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAKQEAgLTkyLDIzICs5MiwyMyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04ocmVmbGVjdE9iamVjdENvbnN0cnVjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAg
ICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3Qg
cmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IiX3MpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGEg
Y29uc3RydWN0b3IiX3N0cikpOwogCiAgICAgYXV0byBjb25zdHJ1Y3REYXRhID0gZ2V0Q29uc3Ry
dWN0RGF0YSh2bSwgdGFyZ2V0KTsKICAgICBpZiAoY29uc3RydWN0RGF0YS50eXBlID09IENhbGxE
YXRhOjpUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0
aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZs
ZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3Rv
ciJfc3RyKSk7CiAKICAgICBKU1ZhbHVlIG5ld1RhcmdldCA9IHRhcmdldDsKICAgICBpZiAoY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMykgewogICAgICAgICBuZXdUYXJnZXQgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDIpOwogICAgICAgICBpZiAoIW5ld1RhcmdldC5pc0NvbnN0cnVjdG9y
KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSB0aGly
ZCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIGlmIHByZXNlbnQiX3MpKTsKKyAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSB0aGlyZCBhcmd1bWVudCBiZSBhIGNv
bnN0cnVjdG9yIGlmIHByZXNlbnQiX3N0cikpOwogICAgIH0KIAogICAgIE1hcmtlZEFyZ3VtZW50
QnVmZmVyIGFyZ3VtZW50czsKICAgICBKU09iamVjdCogYXJndW1lbnRzT2JqZWN0ID0ganNEeW5h
bWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKICAgICBpZiAo
IWFyZ3VtZW50c09iamVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMg
dGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVj
dC5jb25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHNlY29uZCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3N0
cikpOwogCiAgICAgZm9yRWFjaEluQXJyYXlMaWtlKGdsb2JhbE9iamVjdCwgYXJndW1lbnRzT2Jq
ZWN0LCBbJl0gKEpTVmFsdWUgdmFsdWUpIC0+IGJvb2wgewogICAgICAgICBhcmd1bWVudHMuYXBw
ZW5kKHZhbHVlKTsKQEAgLTEzMSw3ICsxMzEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
cmVmbGVjdE9iamVjdERlZmluZVByb3BlcnR5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagog
CiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICgh
dGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3QuZGVmaW5lUHJvcGVydHkgcmVx
dWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZWZsZWN0LmRlZmluZVByb3BlcnR5IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBv
YmplY3QiX3N0cikpOwogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04ocmVmbGVjdE9iamVjdEdldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcgogCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3Qu
Z2V0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUmVmbGVjdC5nZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVj
dCJfc3RyKSk7CiAKICAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTc4LDcgKzE3OCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2JqZWN0R2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVmbGVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3Vt
ZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zdHIp
KTsKIAogICAgIGF1dG8ga2V5ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkBAIC0xOTQsNyArMTk0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJl
ZmxlY3RPYmplY3RHZXRQcm90b3R5cGVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKIAog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRh
cmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVp
cmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVm
bGVjdC5nZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2Jq
ZWN0Il9zdHIpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShhc09iamVjdCh0YXJnZXQpLT5nZXRQcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCkpKTsKIH0K
IApAQCAtMjA2LDcgKzIwNiw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2Jq
ZWN0SXNFeHRlbnNpYmxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKICAgICBKU1Zh
bHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5pc0V4dGVuc2libGUgcmVxdWlyZXMgdGhlIGZp
cnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmlzRXh0
ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zdHIpKTsK
IAogICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gYXNPYmplY3QodGFyZ2V0KS0+aXNFeHRlbnNpYmxl
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CkBAIC0yMjEsNyArMjIxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJl
ZmxlY3RPYmplY3RPd25LZXlzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKIAog
ICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRh
cmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0Lm93bktleXMgcmVxdWlyZXMgdGhl
IGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0Lm93
bktleXMgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfc3RyKSk7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUob3duUHJvcGVydHlL
ZXlzKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0Kj4odGFyZ2V0KSwgUHJvcGVydHlOYW1l
TW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMsIERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUs
IHN0ZDo6bnVsbG9wdCkpKTsKIH0KIApAQCAtMjMzLDcgKzIzMyw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihyZWZsZWN0T2JqZWN0UHJldmVudEV4dGVuc2lvbnMsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5wcmV2ZW50
RXh0ZW5zaW9ucyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlJlZmxlY3QucHJldmVudEV4dGVuc2lvbnMgcmVxdWlyZXMgdGhlIGZpcnN0
IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfc3RyKSk7CiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFz
T2JqZWN0KHRhcmdldCk7CiAgICAgYm9vbCByZXN1bHQgPSBvYmplY3QtPm1ldGhvZFRhYmxlKHZt
KS0+cHJldmVudEV4dGVuc2lvbnMob2JqZWN0LCBnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMjQ4LDcgKzI0OCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2JqZWN0U2V0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVmbGVjdC5zZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfcykp
OworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUg
YW4gb2JqZWN0Il9zdHIpKTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqZWN0ID0gYXNPYmplY3Qo
dGFyZ2V0KTsKIAogICAgIGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgx
KS50b1Byb3BlcnR5S2V5KGdsb2JhbE9iamVjdCk7CkBAIC0yNzIsMTAgKzI3MiwxMCBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04ocmVmbGVjdE9iamVjdFNldFByb3RvdHlwZU9mLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxl
Y3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVj
dCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LnNldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBm
aXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3N0cikpOwogICAgIEpTVmFsdWUgcHJvdG8gPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSAmJiAhcHJv
dG8uaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3Quc2V0UHJvdG90eXBlT2YgcmVxdWlyZXMg
dGhlIHNlY29uZCBhcmd1bWVudCBiZSBlaXRoZXIgYW4gb2JqZWN0IG9yIG51bGwiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3Vt
ZW50IGJlIGVpdGhlciBhbiBvYmplY3Qgb3IgbnVsbCJfc3RyKSk7CiAKICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1JlZ0V4cC5jcHAKaW5kZXggNDQ5MDlkMTY5NGJjNTVjNzViMjc3Y2M1MTYwMDAwMjg0YjRhZDMy
Zi4uYzk0MTAxNzY1MzIwNDRlZmVlMTk4ZDZlOTljNzA3N2M3NmY4YWY1YyAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwCkBAIC01MTQsNyArNTE0LDcgQEAgc3RhdGlj
IGlubGluZSBTdHJpbmcgZXNjYXBlUGF0dGVybihjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGNvbnN0
IENoYXJhY3RlclR5cGUqIGMKICAgICAvLyBzb3VyY2UgY2Fubm90IGV2ZXIgdmFsaWRseSBiZSAi
Ii4gSWYgdGhlIHNvdXJjZSBpcyBlbXB0eSwgcmV0dXJuIGEgZGlmZmVyZW50IFBhdHRlcm4KICAg
ICAvLyB0aGF0IHdvdWxkIG1hdGNoIHRoZSBzYW1lIHRoaW5nLgogICAgIGlmICghbGVuZ3RoKQot
ICAgICAgICByZXR1cm4gIig/OikiX3M7CisgICAgICAgIHJldHVybiAiKD86KSJfc3RyOwogCiAg
ICAgLy8gZWFybHkgcmV0dXJuIGZvciBzdHJpbmdzIHRoYXQgZG9uJ3QgY29udGFpbiBhIGZvcndh
cmRzIHNsYXNoIGFuZCBMaW5lVGVybWluYXRvcgogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBsZW5ndGg7ICsraSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVnRXhwQ29uc3RydWN0b3IuY3BwCmluZGV4IGZkNGM5MmIzNDExYzU5ZGViYWE2ZmI4MGJmOTAy
YzE5M2Y4Yzg4Y2EuLmVhNWE2MWU3MjBhMmJkZjA3NGMxMTBiNDk0ODQ1ZWFiNDU0MmVjN2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTk3LDcgKzk3LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHJlZ0V4cENv
bnN0cnVjdG9yRG9sbGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSAhPSBnbG9iYWxP
YmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAuJE4gZ2V0dGVycyByZXF1aXJlIFJlZ0V4
cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLiROIGdldHRlcnMgcmVxdWlyZSBSZWdF
eHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9zdHIpOwogICAgIHVuc2lnbmVkIE4gPSBwcm9wZXJ0
eU5hbWUudWlkKCktPmF0KDEpIC0gJzAnOwogICAgIEFTU0VSVChOID49IDEgJiYgTiA8PSA5KTsK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmpl
Y3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRCYWNrcmVmKGdsb2JhbE9iamVjdCwgTikpKTsKQEAg
LTEwOCw3ICsxMDgsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIocmVnRXhwQ29uc3RydWN0
b3JJbnB1dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKICAgICBpZiAoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkgIT0gZ2xvYmFsT2JqZWN0LT5y
ZWdFeHBDb25zdHJ1Y3RvcigpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLmlucHV0IGdldHRlciByZXF1aXJlcyBSZWdFeHAgY29u
c3RydWN0b3IgYXMgfHRoaXN8Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5pbnB1dCBnZXR0ZXIgcmVxdWlyZXMgUmVnRXhw
IGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfc3RyKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmlucHV0KCkpOwogfQogCkBAIC0xMTcs
NyArMTE3LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHJlZ0V4cENvbnN0cnVjdG9yTXVs
dGlsaW5lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSAhPSBnbG9iYWxPYmplY3QtPnJlZ0V4
cENvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJSZWdFeHAubXVsdGlsaW5lIGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25z
dHJ1Y3RvciBhcyB8dGhpc3wiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLm11bHRpbGluZSBnZXR0ZXIgcmVxdWlyZSBSZWdF
eHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9zdHIpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNCb29sZWFuKGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLm11bHRpbGluZSgp
KSk7CiB9CiAKQEAgLTEyNiw3ICsxMjYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIocmVn
RXhwQ29uc3RydWN0b3JMYXN0TWF0Y2gsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpICE9IGds
b2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5sYXN0TWF0Y2ggZ2V0dGVyIHJl
cXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAubGFzdE1hdGNoIGdl
dHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3N0cik7CiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdF
eHBHbG9iYWxEYXRhKCkuZ2V0QmFja3JlZihnbG9iYWxPYmplY3QsIDApKSk7CiB9CiAKQEAgLTEz
NSw3ICsxMzUsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIocmVnRXhwQ29uc3RydWN0b3JM
YXN0UGFyZW4sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgaWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpICE9IGdsb2JhbE9iamVjdC0+cmVn
RXhwQ29uc3RydWN0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5sYXN0UGFyZW4gZ2V0dGVyIHJlcXVpcmUgUmVnRXhwIGNv
bnN0cnVjdG9yIGFzIHx0aGlzfCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAubGFzdFBhcmVuIGdldHRlciByZXF1aXJlIFJl
Z0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3N0cik7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCku
Z2V0TGFzdFBhcmVuKGdsb2JhbE9iamVjdCkpKTsKIH0KIApAQCAtMTQ0LDcgKzE0NCw3IEBAIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihyZWdFeHBDb25zdHJ1Y3RvckxlZnRDb250ZXh0LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkgIT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25zdHJ1Y3Rvcigp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVnRXhwLmxlZnRDb250ZXh0IGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8
dGhpc3wiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVnRXhwLmxlZnRDb250ZXh0IGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1
Y3RvciBhcyB8dGhpc3wiX3N0cik7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRhKCkuZ2V0TGVmdENvbnRl
eHQoZ2xvYmFsT2JqZWN0KSkpOwogfQogCkBAIC0xNTMsNyArMTUzLDcgQEAgSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKHJlZ0V4cENvbnN0cnVjdG9yUmlnaHRDb250ZXh0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSAhPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAucmln
aHRDb250ZXh0IGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVnRXhwLnJpZ2h0Q29udGV4dCBnZXR0ZXIgcmVxdWlyZSBSZWdFeHAgY29uc3RydWN0b3IgYXMg
fHRoaXN8Il9zdHIpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmdldFJpZ2h0Q29udGV4dChnbG9i
YWxPYmplY3QpKSk7CiB9CiAKQEAgLTE2Miw3ICsxNjIsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9T
RVRURVIoc2V0UmVnRXhwQ29uc3RydWN0b3JJbnB1dCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpICE9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKSkgewotICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLmlucHV0IHNldHRlcnMgcmVx
dWlyZSBSZWdFeHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5pbnB1dCBzZXR0ZXJzIHJlcXVpcmUg
UmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfc3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KICAgICBhdXRvKiBzdHJpbmcgPSBKU1ZhbHVlOjpkZWNvZGUodmFsdWUpLnRvU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CkBAIC0xNzcsNyArMTc3LDcgQEAgSlNDX0RFRklORV9DVVNUT01f
U0VUVEVSKHNldFJlZ0V4cENvbnN0cnVjdG9yTXVsdGlsaW5lLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE8KICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSAhPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5tdWx0aWxpbmUgc2V0dGVy
cyByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLm11bHRpbGluZSBzZXR0ZXJz
IHJlcXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfc3RyKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICBib29sIG11bHRpbGluZSA9IEpTVmFsdWU6OmRlY29kZSh2
YWx1ZSkudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CkBAIC0yMTMsNyArMjEzLDcgQEAgaW5saW5l
IE9wdGlvblNldDxZYXJyOjpGbGFncz4gdG9GbGFncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGZsYWcKICAgICBhdXRvIHJlc3VsdCA9IFlhcnI6OnBhcnNlRmxhZ3MoZmxh
Z3MudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKICAgICBpZiAoIXJlc3VsdCkgewotICAgICAgICB0aHJvd1N5bnRheEVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBj
b25zdHJ1Y3Rvci4iX3MpOworICAgICAgICB0aHJvd1N5bnRheEVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iX3N0
cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAppbmRleCA1ODI0YTQyYzNiNmExNTcz
ZjAwMTY1NWE2OTJkNjc5ZmRmYTAwOWY0Li5kMDE0MGNkMWRjMDA2ODVlZjFjNDFlOWE5YmNkNjQz
NTllZDVjMjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdF
eHBQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5jcHAKQEAgLTEzMywxMCArMTMzLDEwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihyZWdFeHBQcm90b0Z1bmNDb21waWxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSk7
CiAKICAgICBpZiAodGhpc1JlZ0V4cC0+Z2xvYmFsT2JqZWN0KHZtKSAhPSBnbG9iYWxPYmplY3Qp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZWdFeHAucHJvdG90eXBlLmNvbXBpbGUgZnVuY3Rpb24ncyBSZWFsbSBtdXN0IGJlIHRoZSBzYW1l
IHRvIHx0aGlzfCBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5wcm90b3R5cGUuY29tcGlsZSBmdW5j
dGlvbidzIFJlYWxtIG11c3QgYmUgdGhlIHNhbWUgdG8gfHRoaXN8IFJlZ0V4cCBvYmplY3QiX3N0
cik7CiAKICAgICBpZiAoIXRoaXNSZWdFeHAtPmFyZUxlZ2FjeUZlYXR1cmVzRW5hYmxlZCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAifHRo
aXN8IFJlZ0V4cCBvYmplY3QncyBsZWdhY3kgZmVhdHVyZXMgYXJlIG5vdCBlbmFibGVkIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInx0
aGlzfCBSZWdFeHAgb2JqZWN0J3MgbGVnYWN5IGZlYXR1cmVzIGFyZSBub3QgZW5hYmxlZCJfc3Ry
KTsKIAogICAgIFJlZ0V4cCogcmVnRXhwOwogICAgIEpTVmFsdWUgYXJnMCA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CkBAIC0xNDQsNyArMTQ0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIAogICAgIGlmIChhdXRvKiByZWdFeHBPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFJlZ0V4cE9i
amVjdCo+KHZtLCBhcmcwKSkgewogICAgICAgICBpZiAoIWFyZzEuaXNVbmRlZmluZWQoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJD
YW5ub3Qgc3VwcGx5IGZsYWdzIHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90
aGVyLiJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGluZyBvbmUgUmVn
RXhwIGZyb20gYW5vdGhlci4iX3N0cik7CiAgICAgICAgIHJlZ0V4cCA9IHJlZ0V4cE9iamVjdC0+
cmVnRXhwKCk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgU3RyaW5nIHBhdHRlcm4gPSBhcmcwLmlz
VW5kZWZpbmVkKCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1dURlN0cmluZyhnbG9iYWxPYmpl
Y3QpOwpAQCAtMTUzLDcgKzE1Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQ
cm90b0Z1bmNDb21waWxlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAg
YXV0byBmbGFncyA9IGFyZzEuaXNVbmRlZmluZWQoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChPcHRp
b25TZXQ8WWFycjo6RmxhZ3M+IHsgfSkgOiBZYXJyOjpwYXJzZUZsYWdzKGFyZzEudG9XVEZTdHJp
bmcoZ2xvYmFsT2JqZWN0KSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOwogICAgICAgICBpZiAoIWZsYWdzKQotICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9i
YWxPYmplY3QsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4i
X3MpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBmbGFncyBzdXBwbGll
ZCB0byBSZWdFeHAgY29uc3RydWN0b3IuIl9zdHIpKTsKIAogICAgICAgICByZWdFeHAgPSBSZWdF
eHA6OmNyZWF0ZSh2bSwgcGF0dGVybiwgZmxhZ3MudmFsdWUoKSk7CiAgICAgfQpAQCAtMjI5LDcg
KzIyOSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQcm90b0dldHRlckdsb2Jh
bCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgaWYgKFVOTElLRUxZKCFyZWdl
eHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUgPT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBQcm90
b3R5cGUoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUaGUgUmVnRXhwLnByb3RvdHlwZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBv
biBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zdHIpOwogICAgIH0KIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPmdsb2Jh
bCgpKSk7CkBAIC0yNDUsNyArMjQ1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4
cFByb3RvR2V0dGVySGFzSW5kaWNlcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBp
ZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZSA9PSBnbG9iYWxP
YmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmhhc0luZGljZXMgZ2V0dGVy
IGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90
b3R5cGUuaGFzSW5kaWNlcyBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCJfc3RyKTsKICAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihyZWdleHAtPnJlZ0V4cCgpLT5oYXNJbmRpY2VzKCkpKTsKQEAgLTI2MSw3ICsyNjEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVDYXNlLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgewogICAg
ICAgICBpZiAodGhpc1ZhbHVlID09IGdsb2JhbE9iamVjdC0+cmVnRXhwUHJvdG90eXBlKCkpCiAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4
cC5wcm90b3R5cGUuaWdub3JlQ2FzZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVn
RXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBjYW4g
b25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zdHIpOwogICAgIH0KIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPmlnbm9yZUNh
c2UoKSkpOwpAQCAtMjc3LDcgKzI3Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdF
eHBQcm90b0dldHRlck11bHRpbGluZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAg
aWYgKFVOTElLRUxZKCFyZWdleHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUgPT0gZ2xvYmFs
T2JqZWN0LT5yZWdFeHBQcm90b3R5cGUoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVy
IGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90
b3R5cGUubXVsdGlsaW5lIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2Jq
ZWN0Il9zdHIpOwogICAgIH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KHJlZ2V4cC0+cmVnRXhwKCktPm11bHRpbGluZSgpKSk7CkBAIC0yOTMsNyArMjkzLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyRG90QWxsLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAg
ICAgaWYgKHRoaXNWYWx1ZSA9PSBnbG9iYWxPYmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAu
cHJvdG90eXBlLmRvdEFsbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9i
amVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5kb3RBbGwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNh
bGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3N0cik7CiAgICAgfQogICAgIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPmRvdEFsbCgpKSk7CkBA
IC0zMDksNyArMzA5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0
dGVyU3RpY2t5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBpZiAoVU5MSUtF
TFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZSA9PSBnbG9iYWxPYmplY3QtPnJl
Z0V4cFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnN0aWNreSBnZXR0ZXIgY2FuIG9ubHkgYmUg
Y2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3N0cik7CiAgICAg
fQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVn
RXhwKCktPnN0aWNreSgpKSk7CkBAIC0zMjUsNyArMzI1LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyVW5pY29kZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1
ZSA9PSBnbG9iYWxPYmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnVuaWNv
ZGUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJl
Z0V4cC5wcm90b3R5cGUudW5pY29kZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVn
RXhwIG9iamVjdCJfc3RyKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+dW5pY29kZSgpKSk7CkBAIC0zMzgsNyArMzM4
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyRmxhZ3MsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChVTkxJS0VMWSghdGhpc1ZhbHVlLmlzT2Jq
ZWN0KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxl
ZCBvbiBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBv
bmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QiX3N0cik7CiAKICAgICBhdXRvIGZsYWdzID0gZmxh
Z3NTdHJpbmcoZ2xvYmFsT2JqZWN0LCBhc09iamVjdCh0aGlzVmFsdWUpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTM1NSw4ICszNTUsOCBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2UsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGF1dG8qIHJlZ2V4cCA9IGpzRHluYW1pY0Nh
c3Q8UmVnRXhwT2JqZWN0Kj4odm0sIHRoaXNWYWx1ZSk7CiAgICAgaWYgKFVOTElLRUxZKCFyZWdl
eHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUgPT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBQcm90
b3R5cGUoKSkKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFs
U3RyaW5nKHZtLCAiKD86KSJfcykpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiKD86KSJfc3RyKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
aGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBh
IFJlZ0V4cCBvYmplY3QiX3N0cik7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1N0cmluZyh2bSwgcmVnZXhwLT5yZWdFeHAoKS0+ZXNjYXBlZFBhdHRlcm4oKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZVR5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZVR5cGUuY3BwCmluZGV4IDM3MTk0
NzNiNDNiYTdlNDZjZjhiMDFhMjBjZGI4Zjk3MTFkMjI0MmMuLjhiYTYyZTVkNjRkNzg3MjdkZTM4
OWE1OWQ4ODlhYTVjMzY0Y2ZkYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1J1bnRpbWVUeXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9SdW50aW1lVHlwZS5jcHAKQEAgLTY0LDI3ICs2NCwyNyBAQCBSdW50aW1lVHlwZSBydW50aW1l
VHlwZUZvclZhbHVlKFZNJiB2bSwgSlNWYWx1ZSB2YWx1ZSkKIFN0cmluZyBydW50aW1lVHlwZUFz
U3RyaW5nKFJ1bnRpbWVUeXBlIHR5cGUpCiB7CiAgICAgaWYgKHR5cGUgPT0gVHlwZVVuZGVmaW5l
ZCkKLSAgICAgICAgcmV0dXJuICJVbmRlZmluZWQiX3M7CisgICAgICAgIHJldHVybiAiVW5kZWZp
bmVkIl9zdHI7CiAgICAgaWYgKHR5cGUgPT0gVHlwZU51bGwpCi0gICAgICAgIHJldHVybiAiTnVs
bCJfczsKKyAgICAgICAgcmV0dXJuICJOdWxsIl9zdHI7CiAgICAgaWYgKHR5cGUgPT0gVHlwZUFu
eUludCkKLSAgICAgICAgcmV0dXJuICJJbnRlZ2VyIl9zOworICAgICAgICByZXR1cm4gIkludGVn
ZXIiX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlTnVtYmVyKQotICAgICAgICByZXR1cm4gIk51
bWJlciJfczsKKyAgICAgICAgcmV0dXJuICJOdW1iZXIiX3N0cjsKICAgICBpZiAodHlwZSA9PSBU
eXBlU3RyaW5nKQotICAgICAgICByZXR1cm4gIlN0cmluZyJfczsKKyAgICAgICAgcmV0dXJuICJT
dHJpbmciX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlT2JqZWN0KQotICAgICAgICByZXR1cm4g
Ik9iamVjdCJfczsKKyAgICAgICAgcmV0dXJuICJPYmplY3QiX3N0cjsKICAgICBpZiAodHlwZSA9
PSBUeXBlQm9vbGVhbikKLSAgICAgICAgcmV0dXJuICJCb29sZWFuIl9zOworICAgICAgICByZXR1
cm4gIkJvb2xlYW4iX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlRnVuY3Rpb24pCi0gICAgICAg
IHJldHVybiAiRnVuY3Rpb24iX3M7CisgICAgICAgIHJldHVybiAiRnVuY3Rpb24iX3N0cjsKICAg
ICBpZiAodHlwZSA9PSBUeXBlU3ltYm9sKQotICAgICAgICByZXR1cm4gIlN5bWJvbCJfczsKKyAg
ICAgICAgcmV0dXJuICJTeW1ib2wiX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBlQmlnSW50KQot
ICAgICAgICByZXR1cm4gIkJpZ0ludCJfczsKKyAgICAgICAgcmV0dXJuICJCaWdJbnQiX3N0cjsK
ICAgICBpZiAodHlwZSA9PSBUeXBlTm90aGluZykKLSAgICAgICAgcmV0dXJuICIoTm90aGluZyki
X3M7CisgICAgICAgIHJldHVybiAiKE5vdGhpbmcpIl9zdHI7CiAKICAgICBSRUxFQVNFX0FTU0VS
VF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2FtcGxpbmdQcm9maWxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAppbmRleCBkOTMx
MWMyZmM2MjU0NzJmZTZmNmUyNmVkODIyMzhlN2Q0ZDFmODYwLi5iNTNiZjI2MTM3MDIyMWQ1Mzk4
YTU1ZmUyY2RhYTg2NTFiYmEyNmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TYW1wbGluZ1Byb2ZpbGVyLmNwcApAQCAtODIwLDIzICs4MjAsMjMgQEAgU3RyaW5n
IFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6OmRpc3BsYXlOYW1lKFZNJiB2bSkKICAgICAg
ICAgICAgIFdURjo6ZGF0YUxvZygiY291bGRuJ3QgZ2V0IGEgbmFtZSIpOwogICAgICAgICB9CiAj
ZW5kaWYKLSAgICAgICAgcmV0dXJuICIodW5rbm93biBDIFBDKSJfczsKKyAgICAgICAgcmV0dXJu
ICIodW5rbm93biBDIFBDKSJfc3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6OlVua25vd246Ci0g
ICAgICAgIHJldHVybiAiKHVua25vd24pIl9zOworICAgICAgICByZXR1cm4gIih1bmtub3duKSJf
c3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6Okhvc3Q6Ci0gICAgICAgIHJldHVybiAiKGhvc3Qp
Il9zOworICAgICAgICByZXR1cm4gIihob3N0KSJfc3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6
OlJlZ0V4cDoKLSAgICAgICAgcmV0dXJuICIocmVnZXhwKSJfczsKKyAgICAgICAgcmV0dXJuICIo
cmVnZXhwKSJfc3RyOwogCiAgICAgY2FzZSBGcmFtZVR5cGU6Oldhc206CiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgICAgICBpZiAod2FzbUluZGV4T3JOYW1lKQogICAgICAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcod2FzbUluZGV4T3JOYW1lLnZhbHVlKCkpOwogI2VuZGlmCi0gICAgICAg
IHJldHVybiAiKHdhc20pIl9zOworICAgICAgICByZXR1cm4gIih3YXNtKSJfc3RyOwogCiAgICAg
Y2FzZSBGcmFtZVR5cGU6OkV4ZWN1dGFibGU6CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5pc0hv
c3RGdW5jdGlvbigpKQpAQCAtODQ1LDkgKzg0NSw5IEBAIFN0cmluZyBTYW1wbGluZ1Byb2ZpbGVy
OjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZShWTSYgdm0pCiAgICAgICAgIGlmIChleGVjdXRhYmxl
LT5pc0Z1bmN0aW9uRXhlY3V0YWJsZSgpKQogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpLT5lY21hTmFtZSgpLnN0cmluZygpOwog
ICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNQcm9ncmFtRXhlY3V0YWJsZSgpIHx8IGV4ZWN1dGFi
bGUtPmlzRXZhbEV4ZWN1dGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiAiKHByb2dyYW0pIl9z
OworICAgICAgICAgICAgcmV0dXJuICIocHJvZ3JhbSkiX3N0cjsKICAgICAgICAgaWYgKGV4ZWN1
dGFibGUtPmlzTW9kdWxlUHJvZ3JhbUV4ZWN1dGFibGUoKSkKLSAgICAgICAgICAgIHJldHVybiAi
KG1vZHVsZSkiX3M7CisgICAgICAgICAgICByZXR1cm4gIihtb2R1bGUpIl9zdHI7CiAKICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwpAQCAtMTE1OCwxNyArMTE1OCwxNyBAQCB2b2lkIFNhbXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRv
cEJ5dGVjb2RlcyhQcmludFN0cmVhbSYgb3V0KQogICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+
IGJ5dGVjb2RlQ291bnRzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBzaXplX3Q+IHRpZXJDb3VudHM7
CiAKLSAgICBTdHJpbmcgbGxpbnQgPSAiTExJbnQiX3M7Ci0gICAgU3RyaW5nIGJhc2VsaW5lID0g
IkJhc2VsaW5lIl9zOwotICAgIFN0cmluZyBkZmcgPSAiREZHIl9zOwotICAgIFN0cmluZyBmdGwg
PSAiRlRMIl9zOwotICAgIFN0cmluZyBidWlsdGluID0gImpzIGJ1aWx0aW4iX3M7Ci0gICAgU3Ry
aW5nIHdhc20gPSAiV2FzbSJfczsKLSAgICBTdHJpbmcgaG9zdCA9ICJIb3N0Il9zOwotICAgIFN0
cmluZyByZWdleHAgPSAiUmVnRXhwIl9zOwotICAgIFN0cmluZyBjcHAgPSAiQy9DKysiX3M7Ci0g
ICAgU3RyaW5nIHVua25vd25GcmFtZSA9ICJVbmtub3duIEZyYW1lIl9zOwotICAgIFN0cmluZyB1
bmtub3duRXhlY3V0YWJsZSA9ICJVbmtub3duIEV4ZWN1dGFibGUiX3M7CisgICAgU3RyaW5nIGxs
aW50ID0gIkxMSW50Il9zdHI7CisgICAgU3RyaW5nIGJhc2VsaW5lID0gIkJhc2VsaW5lIl9zdHI7
CisgICAgU3RyaW5nIGRmZyA9ICJERkciX3N0cjsKKyAgICBTdHJpbmcgZnRsID0gIkZUTCJfc3Ry
OworICAgIFN0cmluZyBidWlsdGluID0gImpzIGJ1aWx0aW4iX3N0cjsKKyAgICBTdHJpbmcgd2Fz
bSA9ICJXYXNtIl9zdHI7CisgICAgU3RyaW5nIGhvc3QgPSAiSG9zdCJfc3RyOworICAgIFN0cmlu
ZyByZWdleHAgPSAiUmVnRXhwIl9zdHI7CisgICAgU3RyaW5nIGNwcCA9ICJDL0MrKyJfc3RyOwor
ICAgIFN0cmluZyB1bmtub3duRnJhbWUgPSAiVW5rbm93biBGcmFtZSJfc3RyOworICAgIFN0cmlu
ZyB1bmtub3duRXhlY3V0YWJsZSA9ICJVbmtub3duIEV4ZWN1dGFibGUiX3N0cjsKIAogICAgIGF1
dG8gZm9yRWFjaFRpZXIgPSBbJl0gKGF1dG8gZnVuYykgewogICAgICAgICBmdW5jKGxsaW50KTsK
QEAgLTEyMDgsMTcgKzEyMDgsMTcgQEAgdm9pZCBTYW1wbGluZ1Byb2ZpbGVyOjpyZXBvcnRUb3BC
eXRlY29kZXMoUHJpbnRTdHJlYW0mIG91dCkKICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5oYXNC
eXRlY29kZUluZGV4KCkpCiAgICAgICAgICAgICAgICAgYnl0ZWNvZGVJbmRleCA9IHRvU3RyaW5n
KGxvY2F0aW9uLmJ5dGVjb2RlSW5kZXgpOwogICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIGJ5dGVjb2RlSW5kZXggPSAiPG5pbD4iX3M7CisgICAgICAgICAgICAgICAgYnl0ZWNvZGVJ
bmRleCA9ICI8bmlsPiJfc3RyOwogCiAgICAgICAgICAgICBpZiAobG9jYXRpb24uaGFzQ29kZUJs
b2NrSGFzaCgpKSB7CiAgICAgICAgICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gc3RyZWFtOwog
ICAgICAgICAgICAgICAgIGxvY2F0aW9uLmNvZGVCbG9ja0hhc2guZHVtcChzdHJlYW0pOwogICAg
ICAgICAgICAgICAgIGNvZGVCbG9ja0hhc2ggPSBzdHJlYW0udG9TdHJpbmcoKTsKICAgICAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGNvZGVCbG9ja0hhc2ggPSAiPG5pbD4iX3M7Cisg
ICAgICAgICAgICAgICAgY29kZUJsb2NrSGFzaCA9ICI8bmlsPiJfc3RyOwogCiAgICAgICAgICAg
ICBpZiAobG9jYXRpb24uaXNSZWdFeHApCi0gICAgICAgICAgICAgICAgaml0VHlwZSA9ICJSZWdF
eHAiX3M7CisgICAgICAgICAgICAgICAgaml0VHlwZSA9ICJSZWdFeHAiX3N0cjsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBqaXRUeXBlID0gSklUQ29kZTo6dHlwZU5hbWUobG9j
YXRpb24uaml0VHlwZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NjcmlwdEV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U2NyaXB0RXhlY3V0YWJsZS5jcHAKaW5kZXggNDIxZDcwMGU0NmFmYjgwOGU3ZDVhNTcwZGNhZjVm
NWM3YmE5YjQxZi4uMGNiZDlmMzFjNDUxNjhkMWViYjY5ODNjZGQwMzBmMTUyNDJmZDVmYiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5j
cHAKQEAgLTM4NSw3ICszODUsNyBAQCB2b2lkIFNjcmlwdEV4ZWN1dGFibGU6OnByZXBhcmVGb3JF
eGVjdXRpb25JbXBsKFZNJiB2bSwgSlNGdW5jdGlvbiogZnVuY3Rpb24sIEpTUwogCiAgICAgaWYg
KFVOTElLRUxZKHZtLmdldEFuZENsZWFyRmFpbE5leHROZXdDb2RlQmxvY2soKSkpIHsKICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHNjb3BlLT5nbG9iYWxPYmplY3Qodm0p
OwotICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGNyZWF0
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkZvcmNlZCBGYWlsdXJlIl9zKSk7CisgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCAiRm9yY2VkIEZhaWx1cmUiX3N0cikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggZDU0NDMzYmZlZTRmZGRkYTVmNDcwNjc3YWY0NTdmOWJmNGY3NGU0NS4uMDhjNGVlODcyODQ0
OTE0ZmZkNWRiNWI4OTQzMGJkYjFiZGVmZmM4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcApAQCAtODcsNyArODcsNyBAQCBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0U2V0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyYW1lKgogCiAgICAgICAgIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSA9IGdldENh
bGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uKTsKICAgICAgICAgaWYgKFVOTElLRUxZKGFkZGVyRnVu
Y3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25lKSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICInYWRkJyBwcm9w
ZXJ0eSBvZiBhIFNldCBzaG91bGQgYmUgY2FsbGFibGUuIl9zKTsKKyAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICInYWRkJyBwcm9wZXJ0eSBv
ZiBhIFNldCBzaG91bGQgYmUgY2FsbGFibGUuIl9zdHIpOwogICAgIH0KIAogICAgIHNjb3BlLnJl
bGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFBy
b3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwCmluZGV4IGE2ZWZjMmZiYjMxNDQ2ZTgyYTQ2MzQyMTJmMjdiNmQwZDRkNTkyY2UuLmZmMjA1
YTJjNzhjZDk3MTVhYmFiMDMyM2YzNTU3NmM0MWMxNjdmY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcApAQCAtODksNyArODksNyBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBKU1NldCogZ2V0U2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdGhpc1ZhbAogICAgIGF1dG8qIHNldCA9IGpzRHluYW1pY0Nhc3Q8SlNTZXQq
Pih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKTsKICAgICBpZiAoTElLRUxZKHNldCkpCiAgICAgICAg
IHJldHVybiBzZXQ7Ci0gICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlNl
dCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1TZXQgb2JqZWN0Il9zKTsKKyAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLVNl
dCBvYmplY3QiX3N0cik7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcAppbmRl
eCA4ZTg4NjY2Mzk4M2FmM2E1N2M2MzExZTdhMDg4ZmM2NWU3ZGEzYTUyLi4xY2JiYTlmY2NhNWRi
Mzk1MjQyM2Q0N2Q0NGYyOWZiMzI0ZDczN2YwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU2hhZG93UmVhbG1Qcm90b3R5cGUuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGV2YWxJblJlYWxtLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKgogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmplY3QsIHN5bnRheEVycm9yTWVzc2Fn
ZSkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXJyb3IgZW5jb3VudGVy
ZWQgZHVyaW5nIGV2YWx1YXRpb24iX3MpKTsKKyAgICAgICAgICAgIHRocm93Vk1FcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRXJyb3IgZW5j
b3VudGVyZWQgZHVyaW5nIGV2YWx1YXRpb24iX3N0cikpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIH0KICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwpAQCAtMTE5LDcgKzExOSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihldmFsSW5SZWFsbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSoK
ICAgICBKU1ZhbHVlIHJlc3VsdCA9IHZtLmludGVycHJldGVyLT5leGVjdXRlKGV2YWwsIHJlYWxt
R2xvYmFsT2JqZWN0LCByZWFsbUdsb2JhbE9iamVjdC0+Z2xvYmFsVGhpcygpLCByZWFsbUdsb2Jh
bE9iamVjdC0+Z2xvYmFsU2NvcGUoKSk7CiAgICAgaWYgKFVOTElLRUxZKHNjb3BlLmV4Y2VwdGlv
bigpKSkgewogICAgICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfc3Ry
KSk7CiAgICAgfQogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUocmVzdWx0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dGFja0ZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUu
Y3BwCmluZGV4IDZiOGYzZGY2MzM1MDQ1ZDVhYzIxZWY1YTA4MmQ0ODY4MDRmYTNlNmIuLmM5NGEx
Yjk0Nzk4ZDJkMWRlN2U0OGMxYWI2MjcyY2ZmZjM4YmI5MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwCkBAIC02MSwxMCArNjEsMTAgQEAgU291cmNl
SUQgU3RhY2tGcmFtZTo6c291cmNlSUQoKSBjb25zdAogU3RyaW5nIFN0YWNrRnJhbWU6OnNvdXJj
ZVVSTCgpIGNvbnN0CiB7CiAgICAgaWYgKG1faXNXYXNtRnJhbWUpCi0gICAgICAgIHJldHVybiAi
W3dhc20gY29kZV0iX3M7CisgICAgICAgIHJldHVybiAiW3dhc20gY29kZV0iX3N0cjsKIAogICAg
IGlmICghbV9jb2RlQmxvY2spIHsKLSAgICAgICAgcmV0dXJuICJbbmF0aXZlIGNvZGVdIl9zOwor
ICAgICAgICByZXR1cm4gIltuYXRpdmUgY29kZV0iX3N0cjsKICAgICB9CiAKICAgICBTdHJpbmcg
c291cmNlVVJMID0gbV9jb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsK
QEAgLTgxLDEzICs4MSwxMyBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6ZnVuY3Rpb25OYW1lKFZNJiB2
bSkgY29uc3QKICAgICBpZiAobV9jb2RlQmxvY2spIHsKICAgICAgICAgc3dpdGNoIChtX2NvZGVC
bG9jay0+Y29kZVR5cGUoKSkgewogICAgICAgICBjYXNlIEV2YWxDb2RlOgotICAgICAgICAgICAg
cmV0dXJuICJldmFsIGNvZGUiX3M7CisgICAgICAgICAgICByZXR1cm4gImV2YWwgY29kZSJfc3Ry
OwogICAgICAgICBjYXNlIE1vZHVsZUNvZGU6Ci0gICAgICAgICAgICByZXR1cm4gIm1vZHVsZSBj
b2RlIl9zOworICAgICAgICAgICAgcmV0dXJuICJtb2R1bGUgY29kZSJfc3RyOwogICAgICAgICBj
YXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEdsb2Jh
bENvZGU6Ci0gICAgICAgICAgICByZXR1cm4gImdsb2JhbCBjb2RlIl9zOworICAgICAgICAgICAg
cmV0dXJuICJnbG9iYWwgY29kZSJfc3RyOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAppbmRleCA5MmRjOTQ2OWQyYTg0
YzU0OTIyMGUyMWY1ZjE2Zjc3YTAwNTVmZDg1Li40ZDdhMWI5YjNiZTg5MWQzNjYzYzA4ZDQ4ZGNj
ZGFkOTRiOTJkY2Q5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHN0cmluZ0Zyb21Db2RlUG9pbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWwKICAgICAgICAgdWludDMyX3QgY29kZVBvaW50ID0gc3RhdGljX2Nhc3Q8dWludDMy
X3Q+KGNvZGVQb2ludEFzRG91YmxlKTsKIAogICAgICAgICBpZiAoY29kZVBvaW50ICE9IGNvZGVQ
b2ludEFzRG91YmxlIHx8IGNvZGVQb2ludCA+IFVDSEFSX01BWF9WQUxVRSkKLSAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsICJBcmd1bWVudHMgY29udGFpbiBhIHZhbHVlIHRoYXQgaXMgb3V0IG9m
IHJhbmdlIG9mIGNvZGUgcG9pbnRzIl9zKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
QXJndW1lbnRzIGNvbnRhaW4gYSB2YWx1ZSB0aGF0IGlzIG91dCBvZiByYW5nZSBvZiBjb2RlIHBv
aW50cyJfc3RyKSk7CiAKICAgICAgICAgaWYgKFVfSVNfQk1QKGNvZGVQb2ludCkpCiAgICAgICAg
ICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4oY29kZVBvaW50KSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRl
eCBmM2IzODNkY2JhNDI1M2E0YWM5MjU1ODRkMTliYzgwNzZiOTRhNTRhLi43ODQyZjlhMDIwMmM1
NzdlMmEzNGI5YjAzZWM2NjI5ZWIyYjg3NmI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTE1NCwxNCArMTU0LDE0IEBAIHZv
aWQgU3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QpCiAgICAgaWYgKE9wdGlvbnM6OnVzZUF0TWV0aG9kKCkpCiAgICAgICAg
IEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5hdFB1YmxpY05hbWUoKSwgc3RyaW5nUHJvdG90eXBlQXRDb2RlR2Vu
ZXJhdG9yLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiAKLSAgICBKU0Z1bmN0aW9uKiB0cmltU3RhcnRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAidHJpbVN0YXJ0Il9zLCBzdHJpbmdQcm90b0Z1bmNU
cmltU3RhcnQsIE5vSW50cmluc2ljKTsKLSAgICBKU0Z1bmN0aW9uKiB0cmltRW5kRnVuY3Rpb24g
PSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMCwgInRyaW1FbmQiX3MsIHN0
cmluZ1Byb3RvRnVuY1RyaW1FbmQsIE5vSW50cmluc2ljKTsKKyAgICBKU0Z1bmN0aW9uKiB0cmlt
U3RhcnRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAi
dHJpbVN0YXJ0Il9zdHIsIHN0cmluZ1Byb3RvRnVuY1RyaW1TdGFydCwgTm9JbnRyaW5zaWMpOwor
ICAgIEpTRnVuY3Rpb24qIHRyaW1FbmRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCAwLCAidHJpbUVuZCJfc3RyLCBzdHJpbmdQcm90b0Z1bmNUcmltRW5kLCBO
b0ludHJpbnNpYyk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcodm0sICJ0cmltU3RhcnQiKSwgdHJpbVN0YXJ0RnVuY3Rpb24sIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRy
aW1MZWZ0IiksIHRyaW1TdGFydEZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0cmltRW5kIiksIHRyaW1FbmRGdW5jdGlv
biwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KHZtLCAidHJpbVJpZ2h0IiksIHRyaW1FbmRGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogCi0gICAgSlNGdW5jdGlvbiogaXRlcmF0
b3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5
bWJvbC5pdGVyYXRvcl0iX3MsIHN0cmluZ1Byb3RvRnVuY0l0ZXJhdG9yLCBOb0ludHJpbnNpYyk7
CisgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCAwLCAiW1N5bWJvbC5pdGVyYXRvcl0iX3N0ciwgc3RyaW5nUHJvdG9G
dW5jSXRlcmF0b3IsIE5vSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsIGl0ZXJhdG9yRnVuY3Rpb24s
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAog
ICAgIC8vIFRoZSBjb25zdHJ1Y3RvciB3aWxsIGJlIGFkZGVkIGxhdGVyLCBhZnRlciBTdHJpbmdD
b25zdHJ1Y3RvciBoYXMgYmVlbiBidWlsdApAQCAtMTUxNiw3ICsxNTE2LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2IKICAgICAvLyAxLiBMZXQgTyBiZSBSZXF1aXJlT2JqZWN0Q29lcmNpYmxl
KHRoaXMgdmFsdWUpLgogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1ZSkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTdHJpbmcucHJv
dG90eXBlLmxvY2FsZUNvbXBhcmUgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3Ig
dW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlN0cmluZy5wcm90b3R5cGUubG9jYWxlQ29tcGFyZSByZXF1aXJlcyB0aGF0
IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3N0cik7CiAKICAgICAvLyAyLiBMZXQg
UyBiZSBUb1N0cmluZyhPKS4KICAgICAvLyAzLiBSZXR1cm5JZkFicnVwdChTKS4KQEAgLTE2MDYs
NyArMTYwNiw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0b0xvY2FsZUNhc2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsCiAKICAgICAvLyAxMi4gSWYgbG9j
YWxlIGlzIHVuZGVmaW5lZCwgbGV0IGxvY2FsZSBiZSAidW5kIi4KICAgICBpZiAobG9jYWxlLmlz
TnVsbCgpKQotICAgICAgICBsb2NhbGUgPSAidW5kIl9zOworICAgICAgICBsb2NhbGUgPSAidW5k
Il9zdHI7CiAKICAgICAvLyBEZWxlZ2F0ZSB0aGUgZm9sbG93aW5nIHN0ZXBzIHRvIGljdSB1X3N0
clRvTG93ZXIgb3IgdV9zdHJUb1VwcGVyLgogICAgIC8vIDEzLiBMZXQgY3BMaXN0IGJlIGEgTGlz
dCBjb250YWluaW5nIGluIG9yZGVyIHRoZSBjb2RlIHBvaW50cyBvZiBTIGFzIGRlZmluZWQgaW4g
RVMyMDE1LCA2LjEuNCwgc3RhcnRpbmcgYXQgdGhlIGZpcnN0IGVsZW1lbnQgb2YgUy4KQEAgLTE5
NTIsNyArMTk1Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihzdHJpbmdQcm90b0Z1bmNO
b3JtYWxpemUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgICAgIGVsc2UgaWYg
KGZvcm1TdHJpbmcgPT0gIk5GS0QiKQogICAgICAgICAgICAgZm9ybSA9IE5vcm1hbGl6YXRpb25G
b3JtOjpORktEOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIGFueSBu
b3JtYWxpemF0aW9uIGZvcm0iX3MpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBkb2VzIG5vdCBtYXRjaCBhbnkgbm9y
bWFsaXphdGlvbiBmb3JtIl9zdHIpOwogICAgIH0KIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG5vcm1hbGl6ZShnbG9iYWxPYmplY3QsIHN0cmluZywgZm9y
bSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJvbC5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCmluZGV4IGMzZGIx
OTZmYjkzNDZlMDZlMGM1YzFmMGZlNDliNDFiZjBhM2Y3ZWIuLjVmOWEyNDdlMTVhYWI4OWFjNDk5
MmJkNGE4NjIyODM2ZjQ1ZjlmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N5bWJvbC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sLmNwcApAQCAtODEsNyArODEsNyBAQCBkb3VibGUgU3ltYm9sOjp0b051bWJlcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb252ZXJ0IGEgc3lt
Ym9sIHRvIGEgbnVtYmVyIl9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBudW1iZXIiX3N0cik7CiAgICAgcmV0
dXJuIDAuMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3ltYm9sUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N5bWJv
bFByb3RvdHlwZS5jcHAKaW5kZXggYmNmMTYzNTE2OWMwMjQ3NzI0YzcxMDM5MTU1MzFjMTIwZDg5
YzM4OC4uZWQ2ZmNjZGNiYjFhNDE0YzgzMjY4NjQwYmVkZjMzMDFlYzY5NGI3NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwCkBAIC02
Myw3ICs2Myw3IEBAIHZvaWQgU3ltYm9sUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0s
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24o
dm0pOwogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiAKLSAgICBKU0Z1bmN0aW9u
KiB0b1ByaW1pdGl2ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDEsICJbU3ltYm9sLnRvUHJpbWl0aXZlXSJfcywgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZiwg
Tm9JbnRyaW5zaWMpOworICAgIEpTRnVuY3Rpb24qIHRvUHJpbWl0aXZlRnVuY3Rpb24gPSBKU0Z1
bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRpdmVd
Il9zdHIsIHN5bWJvbFByb3RvRnVuY1ZhbHVlT2YsIE5vSW50cmluc2ljKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1i
b2wsIHRvUHJpbWl0aXZlRnVuY3Rpb24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9V
VF9UUkFOU0lUSU9OKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbENhbGVuZGFyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXIuY3BwCmluZGV4IDA2ZGYyNTViOTk4N2JlZmIzZjQxZTU5MTE1NmFh
NTJhMWZjYmJkZDIuLjZhY2NiMjYwYWZlNDU4NmZkMDkyZTEzZjU0YjNjYTQ5YzhlZDlhNGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIu
Y3BwCkBAIC03MSw3ICs3MSw3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPENhbGVuZGFySUQ+IHBh
cnNlVGVtcG9yYWxDYWxlbmRhclN0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgLy8gRklY
TUU6IEltcGxlbWVudCBwYXJzaW5nIHRlbXBvcmFsIGNhbGVuZGFyIHN0cmluZywgd2hpY2ggcmVx
dWlyZXMgZnVsbCBJU08gODYwMSBwYXJzZXIuCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgY2FsZW5kYXIgSUQiX3Mp
OworICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxl
bmRhciBJRCJfc3RyKTsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0
b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNv
bnN0cnVjdG9yLmNwcAppbmRleCBkOTc5OTMxNTY0NmQ4NzQ3NTBjYjA0YmY1ZWZkMzU4Mzc3NzFh
YTcxLi4wNmMwNDYwZTc3ZDRlZmU1YmMyOWZjNzdkMDVhZTJjM2YxNDhjODhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5k
YXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgVGVtcG9yYWxDYWxlbmRhckNvbnN0
cnVjdG9yOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnUKIAogdm9pZCBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSogdGVtcG9yYWxDYWxlbmRhclByb3RvdHlw
ZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIkNhbGVuZGFyIl9zLCBQcm9w
ZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6
OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiQ2FsZW5kYXIiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1v
ZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCB0ZW1wb3JhbENhbGVuZGFy
UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgdGVtcG9y
YWxDYWxlbmRhclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CkBAIC05MCw3ICs5MCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbENhbGVuZGFyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjCiAKICAgICBzdGQ6Om9wdGlvbmFsPENhbGVuZGFySUQ+IGlkZW50aWZp
ZXIgPSBUZW1wb3JhbENhbGVuZGFyOjppc0J1aWx0aW5DYWxlbmRhcihjYWxlbmRhclN0cmluZyk7
CiAgICAgaWYgKCFpZGVudGlmaWVyKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxlbmRhciBJRCJfcyk7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBjYWxlbmRhciBJRCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKaW5kZXgg
OGZiM2E1MzRjZGU0OGEzMzQzZjgxMjk3NjRmNTJlYmM4YzdhYjkzNS4uMjEwYWU5YzgzOGUxZDFl
YWQ3ODAzM2EzMzU5ZGFiOTgzZTU2ZThiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS5jcHAKQEAgLTk2
LDcgKzk2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5cGVGdW5jRmllbGRzLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8qIGNhbGVuZGFy
ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbENhbGVuZGFyKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghY2FsZW5kYXIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5DYWxlbmRhci5wcm90b3R5cGUuZmll
bGRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgQ2FsZW5kYXIiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuQ2Fs
ZW5kYXIucHJvdG90eXBlLmZpZWxkcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIENhbGVu
ZGFyIl9zdHIpOwogCiAgICAgYm9vbCBpc0lTTzg2MDEgPSBjYWxlbmRhci0+aXNJU084NjAxKCk7
CiAgICAgYm9vbCBzaG91bGRBZGRFcmFBbmRFcmFZZWFyID0gZmFsc2U7CkBAIC0xMDQsNyArMTA0
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGVG
dW5jRmllbGRzLCAoSlNHbG9iYWxPYmplY3QqIGcKICAgICBmb3JFYWNoSW5JdGVyYWJsZShnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIFtpc0lTTzg2MDEsICZzaG91bGRBZGRF
cmFBbmRFcmFZZWFyLCAmZmllbGROYW1lc10oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHZhbHVlKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKICAgICAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmllbGRzIGluY2x1ZGUg
bm9uIHN0cmluZyB2YWx1ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmllbGRzIGluY2x1ZGUgbm9uIHN0cmluZyB2YWx1ZSJfc3RyKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWlzSVNPODYwMSAmJiAh
c2hvdWxkQWRkRXJhQW5kRXJhWWVhcikgewpAQCAtMjAyLDcgKzIwMiw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVuY01lcmdlRmllbGRzLCAo
SlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBjYWxlbmRhciA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxDYWxlbmRhcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWNhbGVu
ZGFyKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLm1lcmdlRmllbGRzIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgQ2FsZW5kYXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLm1l
cmdlRmllbGRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgQ2FsZW5kYXIiX3N0cik7CiAK
ICAgICBhdXRvKiBmaWVsZHMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvT2JqZWN0KGdsb2Jh
bE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTMxNyw3
ICszMTcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxDYWxlbmRhclByb3Rv
dHlwZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogY2FsZW5kYXIg
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsQ2FsZW5kYXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCFjYWxlbmRhcikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkNhbGVuZGFyLnByb3RvdHlwZS50b1N0
cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIENhbGVuZGFyIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkNh
bGVuZGFyLnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIENh
bGVuZGFyIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwg
aW50bEF2YWlsYWJsZUNhbGVuZGFycygpW2NhbGVuZGFyLT5pZGVudGlmaWVyKCldKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3Bw
CmluZGV4IDc3ZDk5YWEzZDBjN2ZkODM5Mzk0MTY2MmQxMjVhMWJiN2JkMTlhMGMuLjJhZjE2YjMz
NWNhMWI2MmU0ZmYzMmU5NmQ0ZDlmMDdiZjJjNzc5ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCkBAIC03MSw3ICs3MSw3IEBA
IFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgaWYgKCFJU084NjAxOjppc1ZhbGlkRHVyYXRpb24oZHVyYXRpb24p
KSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2YgY29uc2lzdGVudCBz
aWduIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBvZiBjb25zaXN0
ZW50IHNpZ24iX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xMDQsMTMg
KzEwNCwxMyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9uOjpmcm9tRHVyYXRp
b25MaWtlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlmICghaXNJbnRlZ2VyKHJlc3VsdFt1bml0
XSkpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGludGVnZXJzIl9zKTsKKyAgICAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVy
YXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGludGVnZXJzIl9zdHIpOwogICAgICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghaGFzUmVsZXZhbnRQcm9wZXJ0
eSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2JqZWN0
IG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydHkiX3Mp
OworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2JqZWN0IG11
c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydHkiX3N0cik7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xNDMsNyArMTQzLDcgQEAgSVNPODYw
MTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6dG9JU084NjAxRHVyYXRpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamUKICAgICB9CiAKICAgICBpZiAoIUlTTzg2MDE6OmlzVmFsaWREdXJh
dGlvbihkdXJhdGlvbikpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBv
ZiBjb25zaXN0ZW50IHNpZ24iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUg
YW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKQEAgLTE3Nyw3ICsxNzcsNyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9u
Ojp0b0xpbWl0ZWREdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoIWlzVmFsaWREdXJhdGlvbihk
dXJhdGlvbikpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBvZiBjb25z
aXN0ZW50IHNpZ24iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9m
IGNvbnNpc3RlbnQgc2lnbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAg
LTIyOCw3ICsyMjgsNyBAQCBKU1ZhbHVlIFRlbXBvcmFsRHVyYXRpb246OmNvbXBhcmUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZU9uZQogCiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCByZWxhdGl2ZVRvIHBhcmFtZXRlciBhZnRlciBQbGFpbkRhdGVUaW1lIC8gWm9u
ZWREYXRlVGltZS4KICAgICBpZiAob25lLT55ZWFycygpIHx8IHR3by0+eWVhcnMoKSB8fCBvbmUt
Pm1vbnRocygpIHx8IHR3by0+bW9udGhzKCkgfHwgb25lLT53ZWVrcygpIHx8IHR3by0+d2Vla3Mo
KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5v
dCBjb21wYXJlIGEgZHVyYXRpb24gb2YgeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgd2l0aG91dCBh
IHJlbGF0aXZlVG8gb3B0aW9uIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJDYW5ub3QgY29tcGFyZSBhIGR1cmF0aW9uIG9mIHllYXJzLCBtb250aHMs
IG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAKQEAgLTI3MSwxMyArMjcxLDEzIEBAIElTTzg2MDE6OkR1cmF0aW9u
IFRlbXBvcmFsRHVyYXRpb246OndpdGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAg
ICAgaWYgKCFpc0ludGVnZXIocmVzdWx0W3VuaXRdKSkgewotICAgICAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVz
IG11c3QgYmUgaW50ZWdlcnMiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgaW50
ZWdlcnMiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgfQog
CiAgICAgaWYgKCFoYXNSZWxldmFudFByb3BlcnR5KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBU
ZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0eSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBUZW1w
b3JhbC5EdXJhdGlvbiBwcm9wZXJ0eSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKQEAgLTM2Myw3ICszNjMsNyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9u
OjphZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvdAogICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgcmVsYXRpdmVUbyBwYXJhbWV0ZXIgYWZ0ZXIgUGxhaW5EYXRlVGltZSAv
IFpvbmVkRGF0ZVRpbWUuCiAgICAgYXV0byBsYXJnZXN0VW5pdCA9IHN0ZDo6bWluKGxhcmdlc3RT
dWJkdXJhdGlvbihtX2R1cmF0aW9uKSwgbGFyZ2VzdFN1YmR1cmF0aW9uKG90aGVyKSk7CiAgICAg
aWYgKGxhcmdlc3RVbml0IDw9IFRlbXBvcmFsVW5pdDo6V2VlaykgewotICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBhZGQgYSBkdXJhdGlvbiBvZiB5
ZWFycywgbW9udGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRpdmVUbyBvcHRpb24iX3MpOwor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBhZGQg
YSBkdXJhdGlvbiBvZiB5ZWFycywgbW9udGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRpdmVU
byBvcHRpb24iX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0zODgsNyAr
Mzg4LDcgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6c3VidHJhY3QoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWwKICAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHJlbGF0aXZlVG8gcGFyYW1ldGVyIGFmdGVyIFBsYWluRGF0ZVRpbWUgLyBab25lZERhdGVUaW1l
LgogICAgIGF1dG8gbGFyZ2VzdFVuaXQgPSBzdGQ6Om1pbihsYXJnZXN0U3ViZHVyYXRpb24obV9k
dXJhdGlvbiksIGxhcmdlc3RTdWJkdXJhdGlvbihvdGhlcikpOwogICAgIGlmIChsYXJnZXN0VW5p
dCA8PSBUZW1wb3JhbFVuaXQ6OldlZWspIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJDYW5ub3Qgc3VidHJhY3QgYSBkdXJhdGlvbiBvZiB5ZWFycywgbW9u
dGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRpdmVUbyBvcHRpb24iX3MpOworICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBzdWJ0cmFjdCBhIGR1
cmF0aW9uIG9mIHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9w
dGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTQ3MywxMiArNDcz
LDEyIEBAIElTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OnJvdW5kKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwogCiAgICAgaWYgKCFzbWFsbGVzdCAmJiAhbGFyZ2VzdCkgewotICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0
IGEgc21hbGxlc3RVbml0IG9yIGxhcmdlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHJvdW5kIHdpdGhvdXQgYSBz
bWFsbGVzdFVuaXQgb3IgbGFyZ2VzdFVuaXQgb3B0aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4g
eyB9OwogICAgIH0KIAogICAgIGlmIChzbWFsbGVzdCAmJiBsYXJnZXN0ICYmIHNtYWxsZXN0LnZh
bHVlKCkgPCBsYXJnZXN0LnZhbHVlKCkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2Vz
dFVuaXQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InNtYWxsZXN0VW5pdCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTQ5MywxMSArNDkzLDExIEBAIElTTzg2MDE6
OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OnJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUKIAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVsYXRpdmVUbyBwYXJh
bWV0ZXIgYWZ0ZXIgUGxhaW5EYXRlVGltZSAvIFpvbmVkRGF0ZVRpbWUuCiAgICAgaWYgKGxhcmdl
c3RVbml0ID4gVGVtcG9yYWxVbml0OjpZZWFyICYmICh5ZWFycygpIHx8IG1vbnRocygpIHx8IHdl
ZWtzKCkgfHwgKGRheXMoKSAmJiBsYXJnZXN0VW5pdCA8IFRlbXBvcmFsVW5pdDo6RGF5KSkpIHsK
LSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qgcm91
bmQgYSBkdXJhdGlvbiBvZiB5ZWFycywgbW9udGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRp
dmVUbyBvcHRpb24iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkNhbm5vdCByb3VuZCBhIGR1cmF0aW9uIG9mIHllYXJzLCBtb250aHMsIG9yIHdlZWtz
IHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAgICAgaWYgKGxhcmdlc3RVbml0IDw9IFRlbXBvcmFsVW5pdDo6V2VlaykgewotICAg
ICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZJWE1FOiB5ZWFycywgbW9u
dGhzLCBvciB3ZWVrcyByb3VuZGluZyB3aXRoIHJlbGF0aXZlVG8gbm90IGltcGxlbWVudGVkIHll
dCJfcyk7CisgICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRklYTUU6
IHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHJvdW5kaW5nIHdpdGggcmVsYXRpdmVUbyBub3QgaW1w
bGVtZW50ZWQgeWV0Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNTIw
LDE0ICs1MjAsMTQgQEAgZG91YmxlIFRlbXBvcmFsRHVyYXRpb246OnRvdGFsKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHUKIAogICAgIGF1dG8gdW5pdFR5
cGUgPSB0ZW1wb3JhbFVuaXRUeXBlKHVuaXRTdHJpbmcpOwogICAgIGlmICghdW5pdFR5cGUpIHsK
LSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIGFu
IGludmFsaWQgVGVtcG9yYWwgdW5pdCJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAidW5pdCBpcyBhbiBpbnZhbGlkIFRlbXBvcmFsIHVuaXQiX3N0cik7
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICBUZW1wb3JhbFVuaXQgdW5pdCA9IHVuaXRU
eXBlLnZhbHVlKCk7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbGF0aXZlVG8gcGFyYW1l
dGVyIGFmdGVyIFBsYWluRGF0ZVRpbWUgLyBab25lZERhdGVUaW1lLgogICAgIGlmICh1bml0ID4g
VGVtcG9yYWxVbml0OjpZZWFyICYmICh5ZWFycygpIHx8IG1vbnRocygpIHx8IHdlZWtzKCkgfHwg
KGRheXMoKSAmJiB1bml0IDwgVGVtcG9yYWxVbml0OjpEYXkpKSkgewotICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCB0b3RhbCBhIGR1cmF0aW9uIG9m
IHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfcyk7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHRv
dGFsIGEgZHVyYXRpb24gb2YgeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgd2l0aG91dCBhIHJlbGF0
aXZlVG8gb3B0aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNTUx
LDcgKzU1MSw3IEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAgICAgUHJlY2lzaW9uRGF0YSBk
YXRhID0gc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMpOwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKGRhdGEudW5pdCA8IFRl
bXBvcmFsVW5pdDo6U2Vjb25kKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3Qgbm90IGJlIFwibWludXRlXCIiX3MpOworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBt
dXN0IG5vdCBiZSBcIm1pbnV0ZVwiIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggZGQzY2VmMTA1NjYzYjczODNmYzkzOGE4
ZDQ2OGI5Nzk2YTU4YzYwYy4uYTZhY2MzNjgzYjI4Zjc0MTc5NGE0MDMwM2QwNTQ0NWU1ODM1MWZj
NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFRlbXBvcmFs
RHVyYXRpb25Db25zdHJ1Y3Rvcjo6VGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1CiAKIHZvaWQgVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUqIGR1cmF0aW9uUHJv
dG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiRHVyYXRpb24iX3Ms
IFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAg
QmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJEdXJhdGlvbiJfc3RyLCBQcm9wZXJ0eUFkZGl0
aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGR1cmF0aW9uUHJv
dG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgZHVyYXRpb25Q
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogfQpAQCAtOTYsNyArOTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oY29uc3RydWN0VGVtcG9yYWxEdXJhdGlvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplYwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAg
IGlmICghc3RkOjppc2Zpbml0ZShyZXN1bHRbaV0pKQotICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9w
ZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGll
cyBtdXN0IGJlIGZpbml0ZSJfc3RyKTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlk
KGdsb2JhbE9iamVjdCwgV1RGTW92ZShyZXN1bHQpLCBzdHJ1Y3R1cmUpKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuY3BwCmluZGV4IDBjYjQ0MmUyOTBiZjhmYTFhMmQ2ZGU4OGY5NjE5ZDc2YjJiYWYzYzQu
LjE0ZDJmNGM5MjYzZTc3OGY0MTNjNDY0YWM2OThmOWUwOTA5N2NhODIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUuY3BwCkBAIC0xMjMsMTEgKzEyMywxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNXaXRoLCAoSlNHbG9iYWxPYmplY3QqIGdsbwog
CiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2
bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1
cmF0aW9uLnByb3RvdHlwZS53aXRoIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRp
b24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLndpdGggY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKICAgICAKICAgICBKU1ZhbHVlIGR1cmF0aW9uTGlr
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFkdXJhdGlvbkxpa2UuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS53aXRoIG11
c3QgYmUgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS53aXRoIG11c3QgYmUgYW4gb2JqZWN0Il9zdHIpOwogCiAgICAgYXV0byByZXN1bHQg
PSBkdXJhdGlvbi0+d2l0aChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGR1cmF0aW9uTGlrZSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0xNDIsNyArMTQyLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVGdW5jTmVn
YXRlZCwgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAg
aWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5uZWdhdGVkIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90
eXBlLm5lZ2F0ZWQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsK
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCksIGR1cmF0aW9uLT5uZWdhdGVkKCkp
KTsKIH0KQEAgLTE1NCw3ICsxNTQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZUZ1bmNBYnMsIChKU0dsb2JhbE9iamVjdCogZ2xvYgogCiAgICAg
YXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9u
LnByb3RvdHlwZS5hYnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuYWJzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFs
RHVyYXRpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLCBk
dXJhdGlvbi0+YWJzKCkpKTsKIH0KQEAgLTE2Niw3ICsxNjYsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNBZGQsIChKU0dsb2JhbE9iamVj
dCogZ2xvYgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVy
YXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5hZGQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICBhdXRvIHJlc3VsdCA9IGR1
cmF0aW9uLT5hZGQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMTgxLDcgKzE4MSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY1N1YnRyYWN0
LCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8
VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAo
IWR1cmF0aW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLnN1YnRyYWN0IGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBl
LnN1YnRyYWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAK
ICAgICBhdXRvIHJlc3VsdCA9IGR1cmF0aW9uLT5zdWJ0cmFjdChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CkBAIC0xOTYsMTEgKzE5NiwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0
byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIER1cmF0aW9uIl9zdHIpOwogCiAgICAgYXV0byBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBpZiAob3B0aW9ucy5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24u
cHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwu
RHVyYXRpb24ucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3N0
cik7CiAKICAgICBhdXRvIHJlc3VsdCA9IGR1cmF0aW9uLT5yb3VuZChnbG9iYWxPYmplY3QsIG9w
dGlvbnMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0yMTUsMTEg
KzIxNSwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3Rv
dHlwZUZ1bmNUb3RhbCwgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgYXV0byogZHVyYXRpb24g
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS50b3Rh
bCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0
aW9uLnByb3RvdHlwZS50b3RhbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9u
Il9zdHIpOwogCiAgICAgYXV0byBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAob3B0aW9ucy5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLnRv
dGFsIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJv
dG90eXBlLnRvdGFsIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3N0cik7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkdXJhdGlv
bi0+dG90YWwoZ2xvYmFsT2JqZWN0LCBvcHRpb25zKSkpKTsKIH0KQEAgLTIzMSw3ICsyMzEsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNU
b1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS50b1N0cmluZyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9z
dHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNT
dHJpbmcodm0sIGR1cmF0aW9uLT50b1N0cmluZyhnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpKSkpOwogfQpAQCAtMjQzLDcgKzI0Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY1RvSlNPTiwgKEpTR2xvYmFsT2JqZWN0
KiBnCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlv
bio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24ucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS50b0pTT04gY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcodm0sIGR1cmF0aW9uLT50b1N0cmluZygpKSk7CiB9CkBAIC0yNTYs
NyArMjU2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2JhbE8KIAogICAgIGF1dG8qIGR1cmF0aW9u
ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUudG9M
b2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5EdXJhdGlvbi5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNTdHJpbmcodm0sIGR1cmF0aW9uLT50b1N0cmluZygpKSk7CiB9CkBAIC0yNjYsNyArMjY2LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVGdW5j
VmFsdWVPZiwgKEpTR2xvYmFsT2JqZWN0KgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRp
b24ucHJvdG90eXBlLnZhbHVlT2YgbXVzdCBub3QgYmUgY2FsbGVkLiBUbyBjb21wYXJlIER1cmF0
aW9uIHZhbHVlcywgdXNlIFRlbXBvcmFsLkR1cmF0aW9uLmNvbXBhcmUiX3MpOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlv
bi5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBiZSBjYWxsZWQuIFRvIGNvbXBhcmUgRHVyYXRp
b24gdmFsdWVzLCB1c2UgVGVtcG9yYWwuRHVyYXRpb24uY29tcGFyZSJfc3RyKTsKIH0KIAogSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVHZXR0ZXJZZWFy
cywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTI3Niw3ICsyNzYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlclllYXJzLCAoSlNHbG9iYWxPYmpl
Y3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlv
bio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkdXJhdGlvbikK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS55ZWFycyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS55ZWFycyBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihkdXJhdGlvbi0+eWVhcnMoKSkpOwogfQpAQCAtMjg4LDcgKzI4
OCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
R2V0dGVyTW9udGhzLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5tb250
aHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJh
dGlvbi5wcm90b3R5cGUubW9udGhzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRp
b24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9u
LT5tb250aHMoKSkpOwogfQpAQCAtMzAwLDcgKzMwMCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlR2V0dGVyV2Vla3MsIChKU0dsb2JhbE9iamVj
dCoKIAogICAgIGF1dG8qIGR1cmF0aW9uID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9u
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWR1cmF0aW9uKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLndlZWtzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLndlZWtzIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT53ZWVrcygpKSk7CiB9CkBAIC0zMTIsNyArMzEy
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVH
ZXR0ZXJEYXlzLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8qIGR1cmF0aW9uID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLmRheXMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlv
bi5wcm90b3R5cGUuZGF5cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9z
dHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkdXJhdGlvbi0+ZGF5
cygpKSk7CiB9CkBAIC0zMjQsNyArMzI0LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsRHVyYXRpb25Qcm90b3R5cGVHZXR0ZXJIb3VycywgKEpTR2xvYmFsT2JqZWN0KgogCiAg
ICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5E
dXJhdGlvbi5wcm90b3R5cGUuaG91cnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJh
dGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuaG91cnMgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoZHVyYXRpb24tPmhvdXJzKCkpKTsKIH0KQEAgLTMzNiw3ICszMzYsNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlck1p
bnV0ZXMsIChKU0dsb2JhbE9iamVjdAogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubWludXRlcyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS5taW51dGVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0
cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5taW51
dGVzKCkpKTsKIH0KQEAgLTM0OCw3ICszNDgsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
dGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlclNlY29uZHMsIChKU0dsb2JhbE9iamVjdAog
CiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5EdXJhdGlvbi5wcm90b3R5cGUuc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5zZWNvbmRzIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5zZWNvbmRzKCkpKTsKIH0KQEAgLTM2MCw3ICsz
NjAsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlw
ZUdldHRlck1pbGxpc2Vjb25kcywgKEpTR2xvYmFsTwogCiAgICAgYXV0byogZHVyYXRpb24gPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubWls
bGlzZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24ucHJvdG90eXBlLm1pbGxpc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIER1cmF0aW9uIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihkdXJhdGlvbi0+bWlsbGlzZWNvbmRzKCkpKTsKIH0KQEAgLTM3Miw3ICszNzIsNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlck1p
Y3Jvc2Vjb25kcywgKEpTR2xvYmFsTwogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubWljcm9zZWNvbmRz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRp
b24ucHJvdG90eXBlLm1pY3Jvc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1
cmF0aW9uIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkdXJh
dGlvbi0+bWljcm9zZWNvbmRzKCkpKTsKIH0KQEAgLTM4NCw3ICszODQsNyBAQCBKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlck5hbm9zZWNvbmRz
LCAoSlNHbG9iYWxPYgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBv
cmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICgh
ZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubmFub3NlY29uZHMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5
cGUubmFub3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3Ry
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZHVyYXRpb24tPm5hbm9z
ZWNvbmRzKCkpKTsKIH0KQEAgLTM5Niw3ICszOTYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlclNpZ24sIChKU0dsb2JhbE9iamVjdCog
ZwogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24q
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuc2lnbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5zaWduIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5zaWduKCkpKTsKIH0KQEAgLTQwOCw3ICs0MDgsNyBA
QCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRl
ckJsYW5rLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5ibGFuayBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnBy
b3RvdHlwZS5ibGFuayBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zdHIp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oIWR1cmF0aW9uLT5zaWdu
KCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsSW5zdGFudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbElu
c3RhbnQuY3BwCmluZGV4IDZmNjhjZjBmZjNjZDJjODU3MTM3NGFiYjNlMDJjNzEzYzIwNWZmNTAu
LjkxOGZmNDcxZmZiZTdiZTQxN2MyZGIzMmNmNDM5OTNjYTY1MTcxNjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcApAQCAtMTI0LDcg
KzEyNCw3IEBAIFRlbXBvcmFsSW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZh
bGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIFN0cmluZyBhcmdBc1N0
cmluZyA9IGJpZ2ludC0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCk7CiAgICAgICAgIGlmIChz
Y29wZS5leGNlcHRpb24oKSkgewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsK
LSAgICAgICAgICAgIGFyZ0FzU3RyaW5nID0gIlRoZSBnaXZlbiBudW1iZXIgb2YiX3M7CisgICAg
ICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVyIG9mIl9zdHI7CiAgICAgICAg
IH0KIAogICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0
cmluZyhlbGxpcHNpemVBdCgxMDAsIGFyZ0FzU3RyaW5nKSwgIiBlcG9jaCBuYW5vc2Vjb25kcyBp
cyBvdXRzaWRlIG9mIHRoZSBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3Mp
KTsKQEAgLTI1Niw3ICsyNTYsNyBAQCBUZW1wb3JhbEluc3RhbnQqIFRlbXBvcmFsSW5zdGFudDo6
ZnJvbUVwb2NoTWljcm9zZWNvbmRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgICAgICBT
dHJpbmcgYXJnQXNTdHJpbmcgPSBiaWdpbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgMTApOwog
ICAgICAgICBpZiAoc2NvcGUuZXhjZXB0aW9uKCkpIHsKICAgICAgICAgICAgIHNjb3BlLmNsZWFy
RXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBhcmdBc1N0cmluZyA9ICJUaGUgZ2l2ZW4gbnVtYmVy
IG9mIl9zOworICAgICAgICAgICAgYXJnQXNTdHJpbmcgPSAiVGhlIGdpdmVuIG51bWJlciBvZiJf
c3RyOwogICAgICAgICB9CiAKICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIG1ha2VTdHJpbmcoZWxsaXBzaXplQXQoMTAwLCBhcmdBc1N0cmluZyksICIgZXBvY2gg
bWljcm9zZWNvbmRzIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5J
bnN0YW50Il9zKSk7CkBAIC0zMTEsNyArMzExLDcgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9y
YWxJbnN0YW50OjpkaWZmZXJlbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlbXAK
ICAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQgPSBsYXJnZXN0LnZhbHVlX29yKGRlZmF1bHRM
YXJnZXN0VW5pdCk7CiAKICAgICBpZiAoc21hbGxlc3QgJiYgbGFyZ2VzdCAmJiBzbWFsbGVzdCA8
IGxhcmdlc3QpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJzbWFsbGVzdFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2VzdFVuaXQiX3MpOworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBt
dXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAKQEAgLTM2Nyw3ICszNjcsNyBAQCBJU084NjAxOjpFeGFjdFRpbWUgVGVtcG9y
YWxJbnN0YW50Ojpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghc21hbGxlc3Qp
IHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qg
cm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24iX3MpOworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0IGEgc21h
bGxlc3RVbml0IG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAg
VGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5p
dDo6TmFub3NlY29uZCk7CkBAIC00MjMsNyArNDIzLDcgQEAgU3RyaW5nIFRlbXBvcmFsSW5zdGFu
dDo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25z
VmEKICAgICAvLyAxLiBMZXQgX2RhdGVUaW1lXyBiZSA/IEJ1aWx0aW5UaW1lWm9uZUdldFBsYWlu
RGF0ZVRpbWVGb3IoX291dHB1dFRpbWVab25lXywgX2luc3RhbnRfLCBfaXNvQ2FsZW5kYXJfKS4K
ICAgICBKU09iamVjdCogb3V0cHV0VGltZVpvbmUgPSB0aW1lWm9uZTsKICAgICBpZiAob3V0cHV0
VGltZVpvbmUpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
SVhNRTogVGVtcG9yYWwuSW5zdGFudC50b1N0cmluZyh7dGltZVpvbmV9KSBub3QgaW1wbGVtZW50
ZWQgeWV0Il9zKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
SVhNRTogVGVtcG9yYWwuSW5zdGFudC50b1N0cmluZyh7dGltZVpvbmV9KSBub3QgaW1wbGVtZW50
ZWQgeWV0Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50Q29uc3Ry
dWN0b3IuY3BwCmluZGV4IDg2MWQ4MGMxODg3ZTI2NTBmMGNkNzcyYTczNzVmOTljZDY0YWU1M2Yu
LjFmZTBkMWY5NDIyZWM4MDcwYzc4ZDlhNjE1NGMwZTBjMzJkZDBiYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRDb25z
dHJ1Y3Rvci5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgVGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3I6
OlRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3QKIAog
dm9pZCBUZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBU
ZW1wb3JhbEluc3RhbnRQcm90b3R5cGUqIGluc3RhbnRQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDEsICJJbnN0YW50Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6
V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCAxLCAiSW5zdGFudCJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVy
ZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGluc3RhbnRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKICAgICBpbnN0YW50UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0
VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KQEAgLTk4
LDcgKzk4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsSW5z
dGFudCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwg
MSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Ik1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vjb25kcyBhcmd1bWVudCB0byBUZW1wb3JhbC5J
bnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIk1pc3NpbmcgcmVxdWlyZWQgZXBvY2hOYW5vc2Vjb25kcyBhcmd1bWVudCB0byBU
ZW1wb3JhbC5JbnN0YW50Il9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxJbnN0YW50Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKSwgc3RydWN0dXJlKSkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5z
dGFudFByb3RvdHlwZS5jcHAKaW5kZXggYTQyNmJlMDZmZmQzOTQxMDYzYzFmZjJiNTE4N2I5OWM2
MTU2NWMzMy4uOGMwNWYxZGM4YWE1MTVlMzY0ZTU5N2YzOGEzZGIzZTU0NDI3MjNlOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGUuY3BwCkBAIC0xMTQsMTQgKzExNCwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYQogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1w
b3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0
YW50KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5hZGQgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgSVNPODYwMTo6RHVyYXRp
b24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVuaXRzKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgc3RkOjpvcHRpb25h
bDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0VGltZSgp
LmFkZChkdXJhdGlvbik7CiAgICAgaWYgKCFuZXdFeGFjdFRpbWUpIHsKLSAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBZGRpdGlvbiBpcyBvdXRzaWRlIG9mIHN1
cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcyk7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQWRkaXRpb24gaXMgb3V0c2lkZSBvZiBzdXBw
b3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3N0cik7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCkBAIC0xMzUsMTQgKzEzNSwxNCBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1N1YnRyYWN0LCAoSlNHbG9iYWxPYmplY3Qq
CiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFs
SW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWluc3RhbnQp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5zdWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc3VidHJhY3QgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgSVNPODYwMTo6
RHVyYXRpb24gZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbihn
bG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIGRpc2FsbG93ZWRBZGRpdGlvblVu
aXRzKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgc3RkOjpv
cHRpb25hbDxJU084NjAxOjpFeGFjdFRpbWU+IG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPmV4YWN0
VGltZSgpLmFkZCgtZHVyYXRpb24pOwogICAgIGlmICghbmV3RXhhY3RUaW1lKSB7Ci0gICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3VidHJhY3Rpb24gaXMgb3V0
c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpOworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN1YnRyYWN0aW9uIGlzIG91
dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0YW50Il9zdHIpOwogICAg
ICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTU2LDcgKzE1Niw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVW50aWwsIChKU0dsb2Jh
bE9iamVjdCogZ2xvCiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIWluc3RhbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudW50
aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgVGVt
cG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0YW50KGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKQEAgLTE3NSw3ICsxNzUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1NpbmNlLCAoSlNHbG9iYWxPYmplY3QqIGdsbwog
CiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbElu
c3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0YW50KQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuSW5zdGFudC5wcm90b3R5cGUuc2luY2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIFRlbXBvcmFsSW5zdGFudCog
b3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBA
IC0xOTQsMTEgKzE5NCwxMSBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlRnVuY1JvdW5kLCAoSlNHbG9iYWxPYmplY3QqIGdsbwogCiAgICAgVGVtcG9y
YWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFu
dC5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnJvdW5kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIEpTVmFsdWUgb3B0aW9ucyA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgaWYgKG9wdGlvbnMuaXNVbmRlZmluZWQoKSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgcmVxdWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJf
c3RyKTsKIAogICAgIElTTzg2MDE6OkV4YWN0VGltZSBuZXdFeGFjdFRpbWUgPSBpbnN0YW50LT5y
b3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CkBAIC0yMTMsNyArMjEzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsSW5zdGFudFByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0dsb2JhbE9iamVjdCogZ2wKIAog
ICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0
YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaW5zdGFudCkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLkluc3RhbnQucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXF1YWxzIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIFRlbXBvcmFsSW5zdGFudCog
b3RoZXIgPSBUZW1wb3JhbEluc3RhbnQ6OnRvSW5zdGFudChnbG9iYWxPYmplY3QsIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBA
IC0yMzAsNyArMjMwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFu
dFByb3RvdHlwZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgVGVtcG9yYWxJ
bnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5w
cm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBpbnN0YW50LT50b1N0cmluZyhnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSkpOwogfQpAQCAtMjQyLDcgKzI0Miw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVG9KU09O
LCAoSlNHbG9iYWxPYmplY3QqIGdsCiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKICAgICBpZiAoIWluc3RhbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b0pTT04gY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJv
dG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3N0cik7
CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmlu
Zyh2bSwgaW5zdGFudC0+dG9TdHJpbmcoKSkpKTsKIH0KQEAgLTI1NSw3ICsyNTUsNyBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvTG9jYWxl
U3RyaW5nLCAoSlNHbG9iYWxPYgogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9Mb2NhbGVTdHJp
bmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
SW5zdGFudCJfc3RyKTsKIAogICAgIEludGxEYXRlVGltZUZvcm1hdCogZm9ybWF0dGVyID0gSW50
bERhdGVUaW1lRm9ybWF0OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZGF0ZVRpbWVGb3JtYXRT
dHJ1Y3R1cmUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTI3
Miw3ICsyNzIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJv
dG90eXBlRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuSW5zdGFudC5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBiZSBjYWxsZWQuIFRvIGNv
bXBhcmUgSW5zdGFudCB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5JbnN0YW50LmNvbXBhcmUiX3MpOwor
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5JbnN0YW50LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFy
ZSBJbnN0YW50IHZhbHVlcywgdXNlIFRlbXBvcmFsLkluc3RhbnQuY29tcGFyZSJfc3RyKTsKIH0K
IAogSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsSW5zdGFudFByb3RvdHlwZUdldHRl
ckVwb2NoU2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTI4Miw3ICsyODIsNyBAQCBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNv
bmRzLCAoSlNHbG9iYWxPYgogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5h
bWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoU2Vjb25k
cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFu
dC5wcm90b3R5cGUuZXBvY2hTZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5z
dGFudCJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5zdGFu
dC0+ZXhhY3RUaW1lKCkuZXBvY2hTZWNvbmRzKCkpKTsKIH0KQEAgLTI5NCw3ICsyOTQsNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBv
Y2hNaWxsaXNlY29uZHMsIChKU0dsbwogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkpOwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2No
TWlsbGlzZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pbGxpc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIEluc3RhbnQiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTWlsbGlzZWNvbmRzKCkpKTsKIH0K
QEAgLTMwNiw3ICszMDYsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxJbnN0
YW50UHJvdG90eXBlR2V0dGVyRXBvY2hNaWNyb3NlY29uZHMsIChKU0dsbwogCiAgICAgVGVtcG9y
YWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLklu
c3RhbnQucHJvdG90eXBlLmVwb2NoTWljcm9zZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaE1pY3Jvc2Vj
b25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3N0cik7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6bWFrZUhl
YXBCaWdJbnRPckJpZ0ludDMyKGdsb2JhbE9iamVjdCwgaW5zdGFudC0+ZXhhY3RUaW1lKCkuZXBv
Y2hNaWNyb3NlY29uZHMoKSkpKTsKIH0KQEAgLTMxOCw3ICszMTgsNyBAQCBKU0NfREVGSU5FX0NV
U1RPTV9HRVRURVIodGVtcG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hOYW5vc2Vjb25k
cywgKEpTR2xvYgogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0ganNEeW5hbWljQ2Fz
dDxUZW1wb3JhbEluc3RhbnQqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmICghaW5zdGFudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoTmFub3NlY29uZHMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQu
cHJvdG90eXBlLmVwb2NoTmFub3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJ
bnN0YW50Il9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoSlNCaWdJbnQ6OmNyZWF0ZUZyb20oZ2xvYmFsT2JqZWN0LCBpbnN0YW50LT5leGFjdFRp
bWUoKS5lcG9jaE5hbm9zZWNvbmRzKCkpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKaW5kZXggM2NkMmZhMzczM2JhNzAwZmI2YWU3
MmRiMDk5MjA0ZTE5Mzg3YmEyMC4uOGNkZmU5YTIzMDk2ZDJlNzMyNzM4N2RmMjE4YWYxYzc5OWZl
ODVlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxP
YmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcApAQCAtMjQxLDEyICsyNDEsMTIgQEAgc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+
IHRlbXBvcmFsTGFyZ2VzdFVuaXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlMKIAog
ICAgIGF1dG8gdW5pdFR5cGUgPSB0ZW1wb3JhbFVuaXRUeXBlKGxhcmdlc3RVbml0KTsKICAgICBp
ZiAoIXVuaXRUeXBlKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAibGFyZ2VzdFVuaXQgaXMgYW4gaW52YWxpZCBUZW1wb3JhbCB1bml0Il9zKTsKKyAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJsYXJnZXN0VW5pdCBpcyBh
biBpbnZhbGlkIFRlbXBvcmFsIHVuaXQiX3N0cik7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAgICAgfQogCiAgICAgaWYgKGRpc2FsbG93ZWRVbml0cy5zaXplKCkgJiYgc3RkOjpmaW5k
KGRpc2FsbG93ZWRVbml0cy5iZWdpbigpLCBkaXNhbGxvd2VkVW5pdHMuZW5kKCksIHVuaXRUeXBl
LnZhbHVlKCkpICE9IGRpc2FsbG93ZWRVbml0cy5lbmQoKSkgewotICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImxhcmdlc3RVbml0IGlzIGEgZGlzYWxsb3dlZCB1
bml0Il9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJs
YXJnZXN0VW5pdCBpcyBhIGRpc2FsbG93ZWQgdW5pdCJfc3RyKTsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKICAgICB9CiAKQEAgLTI2OCwxMiArMjY4LDEyIEBAIHN0ZDo6b3B0aW9uYWw8
VGVtcG9yYWxVbml0PiB0ZW1wb3JhbFNtYWxsZXN0VW5pdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKCiAKICAgICBhdXRvIHVuaXRUeXBlID0gdGVtcG9yYWxVbml0VHlwZShzbWFsbGVz
dFVuaXQpOwogICAgIGlmICghdW5pdFR5cGUpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgaXMgYW4gaW52YWxpZCBUZW1wb3JhbCB1
bml0Il9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJz
bWFsbGVzdFVuaXQgaXMgYW4gaW52YWxpZCBUZW1wb3JhbCB1bml0Il9zdHIpOwogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAogICAgIGlmIChkaXNhbGxvd2VkVW5pdHMuc2l6
ZSgpICYmIHN0ZDo6ZmluZChkaXNhbGxvd2VkVW5pdHMuYmVnaW4oKSwgZGlzYWxsb3dlZFVuaXRz
LmVuZCgpLCB1bml0VHlwZS52YWx1ZSgpKSAhPSBkaXNhbGxvd2VkVW5pdHMuZW5kKCkpIHsKLSAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQg
aXMgYSBkaXNhbGxvd2VkIHVuaXQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBpcyBhIGRpc2FsbG93ZWQgdW5pdCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcAppbmRleCBmMzNmNmFm
ZmI5MDgwZjYwMDg4ZGMxMDRhOTQ1NGYyMjNiZWI5NmU1Li4zNTJiMjJjZWM0ZTIyMjhiNjVkZjU5
YjU0YTYwYTY2NzdiODNkOGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwCkBAIC05NiwyNyArOTYsMjcgQEAgc3RhdGljIElT
Tzg2MDE6OlBsYWluVGltZSB0b1BsYWluVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBJU084NjAxOjpEdXIKICAgICBkb3VibGUgbWljcm9zZWNvbmQgPSBkdXJhdGlvbi5taWNyb3Nl
Y29uZHMoKTsKICAgICBkb3VibGUgbmFub3NlY29uZCA9IGR1cmF0aW9uLm5hbm9zZWNvbmRzKCk7
CiAgICAgaWYgKCEoaG91ciA+PSAwICYmIGhvdXIgPD0gMjMpKSB7Ci0gICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaG91ciBpcyBvdXQgb2YgcmFuZ2UiX3MpOwor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImhvdXIgaXMgb3V0
IG9mIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBpZiAoISht
aW51dGUgPj0gMCAmJiBtaW51dGUgPD0gNTkpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAibWludXRlIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibWludXRlIGlzIG91dCBvZiBy
YW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgaWYgKCEoc2Vjb25k
ID49IDAgJiYgc2Vjb25kIDw9IDU5KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNlY29uZCBpcyBvdXQgb2YgcmFuZ2Ui
X3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogICAgIGlmICghKG1pbGxpc2Vjb25k
ID49IDAgJiYgbWlsbGlzZWNvbmQgPD0gOTk5KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pbGxpc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7Cisg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibWlsbGlzZWNvbmQg
aXMgb3V0IG9mIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBp
ZiAoIShtaWNyb3NlY29uZCA+PSAwICYmIG1pY3Jvc2Vjb25kIDw9IDk5OSkpIHsKLSAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaWNyb3NlY29uZCBpcyBvdXQg
b2YgcmFuZ2UiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIm1pY3Jvc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICB9CiAgICAgaWYgKCEobmFub3NlY29uZCA+PSAwICYmIG5hbm9zZWNvbmQgPD0gOTk5
KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm5hbm9z
ZWNvbmQgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJuYW5vc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfc3RyKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgcmV0dXJuIElTTzg2MDE6OlBsYWluVGltZSB7CkBA
IC0yMzQsNyArMjM0LDcgQEAgSVNPODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpy
b3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBhdXRvIHNtYWxs
ZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IFRlbXBv
cmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpXZWVrLCBU
ZW1wb3JhbFVuaXQ6OkRheSB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwogICAgIGlmICghc21hbGxlc3QpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24i
X3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5v
dCByb3VuZCB3aXRob3V0IGEgc21hbGxlc3RVbml0IG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAgICAgVGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0
LnZhbHVlKCk7CkBAIC0zMDAsNyArMzAwLDcgQEAgc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHRv
VGVtcG9yYWxUaW1lUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2IKICAg
ICAgICAgZG91YmxlIGludGVnZXIgPSB2YWx1ZS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9i
amVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAg
IGlmICghc3RkOjppc2Zpbml0ZShpbnRlZ2VyKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUgcHJvcGVydGllcyBt
dXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRl
Il9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBkdXJh
dGlvblt1bml0XSA9IGludGVnZXI7CkBAIC0zMjcsMTQgKzMyNywxNCBAQCBzdGF0aWMgc3RkOjph
cnJheTxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0
cz4gdG9QYXJ0aQogICAgICAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gdmFsdWUudG9JbnRl
Z2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICAgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShkb3VibGVW
YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInRvUGFydGlhbFRpbWUgcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAg
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b1BhcnRp
YWxUaW1lIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3N0cik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBhcnRpYWxUaW1lW3N0YXRp
Y19jYXN0PHVuc2lnbmVkPih1bml0KSAtIHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZW1wb3JhbFVu
aXQ6OkhvdXIpXSA9IGRvdWJsZVZhbHVlOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICghaGFz
QW55RmllbGRzKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJ0b1BhcnRpYWxUaW1lIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSJfcyk7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b1BhcnRpYWxUaW1lIHJl
cXVpcmVzIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsK
ICAgICB9CiAgICAgcmV0dXJuIHBhcnRpYWxUaW1lOwpAQCAtNDA1LDcgKzQwNSw3IEBAIFRlbXBv
cmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlCiAgICAgICAgIFN0cmluZyBjYWxlbmRhcldURlN0cmluZyA9IGNh
bGVuZGFyU3RyaW5nLT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICBpZiAoY2FsZW5kYXJXVEZTdHJpbmcgIT0gImlz
bzg2MDEiX3MpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiY2FsZW5kYXIgaXMgbm90IGlzbzg2MDEiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRhciBpcyBub3QgaXNvODYwMSJfc3Ry
KTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICAgICAgYXV0byBkdXJh
dGlvbiA9IHRvVGVtcG9yYWxUaW1lUmVjb3JkKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0
Kj4oaXRlbVZhbHVlKSk7CkBAIC00MzksNyArNDM5LDcgQEAgVGVtcG9yYWxQbGFpblRpbWUqIFRl
bXBvcmFsUGxhaW5UaW1lOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUKICAgICAgICAgfQogICAgIH0KIAotICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaW52YWxpZCB0aW1lIHN0cmluZyJfcyk7CisgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIHRpbWUgc3RyaW5nIl9zdHIpOwogICAgIHJldHVy
biB7IH07CiB9CiAKQEAgLTUxNCwyMSArNTE0LDIxIEBAIElTTzg2MDE6OlBsYWluVGltZSBUZW1w
b3JhbFBsYWluVGltZTo6d2l0aChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKHRl
bXBvcmFsVGltZUxpa2UtPmluaGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1lPih2bSkpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBt
dXN0IG5vdCBjYXJyeSBjYWxlbmRhciJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBvYmplY3QgbXVzdCBub3QgY2FycnkgY2FsZW5kYXIi
X3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgSlNWYWx1ZSBjYWxlbmRh
clByb3BlcnR5ID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVy
dHlOYW1lcy0+Y2FsZW5kYXIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgaWYgKCFjYWxlbmRhclByb3BlcnR5LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0IG5v
dCBjYXJyeSBjYWxlbmRhciJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJhcmd1bWVudCBvYmplY3QgbXVzdCBub3QgY2FycnkgY2FsZW5kYXIiX3N0cik7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgSlNWYWx1ZSB0aW1lWm9uZVByb3Bl
cnR5ID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+dGltZVpvbmUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAg
aWYgKCF0aW1lWm9uZVByb3BlcnR5LmlzVW5kZWZpbmVkKCkpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0IG5vdCBjYXJy
eSB0aW1lIHpvbmUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiYXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNhcnJ5IHRpbWUgem9uZSJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTU4Niw3ICs1ODYsNyBAQCBzdGF0aWMgc3Rk
Ojp0dXBsZTxUZW1wb3JhbFVuaXQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlLCBkb3VibGU+
IGV4dHJhY3REaWZmZQogICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0VW5pdCA9IGxhcmdlc3QudmFs
dWVfb3IoVGVtcG9yYWxVbml0OjpIb3VyKTsKIAogICAgIGlmIChzbWFsbGVzdFVuaXQgPCBsYXJn
ZXN0VW5pdCkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InNtYWxsZXN0VW5pdCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfcyk7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11
c3QgYmUgc21hbGxlciB0aGFuIGxhcmdlc3RVbml0Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAppbmRleCBkNjdjZmM5YTUwYTZm
YmZmOTgyZjI4MDY2Y2VhNzcyYTE4YzEzMWE4Li5lYjRkMjk4ZjY5MGQ5NTMzMzlmZDJjZjRiNDM0
ODhiMDcxYjM5ZTViIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcApAQCAtNzUsNyArNzUs
NyBAQCBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdAogCiB2b2lkIFRlbXBvcmFsUGxhaW5UaW1lQ29u
c3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGUqIHBsYWluVGltZVByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
MCwgIlBsYWluVGltZSJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlBsYWluVGltZSJf
c3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwog
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIHBsYWluVGltZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOwogICAgIHBsYWluVGltZVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CkBAIC05Niw3ICs5Niw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhd
ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b0ludGVnZXJPckluZmluaXR5KGds
b2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAg
ICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShkdXJhdGlvbltkdXJhdGlvbkluZGV4XSkpCi0gICAg
ICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuUGxhaW5UaW1lIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3N0cik7CiAgICAgfQogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5U
aW1lOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBXVEZNb3ZlKGR1
cmF0aW9uKSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAppbmRleCBlNDk2N2Q0Zjk0OTU4
ZDNjYzNhMmI3NTdjNzAzYzFiODQ4NGRkNTQ4Li4zNWU4MzA2YmZhMjA1ODYxMDBkNjllMDViYjEy
MWU5ZDZkM2UwMGFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCkBAIC0xMTcsNyArMTE3LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVu
Y0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmFkZCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3Ry
KTsKIAogICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT5hZGQoZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OwpAQCAtMTMzLDcgKzEzMyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0CiAKICAgICBhdXRv
KiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1l
LnByb3RvdHlwZS5zdWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGlt
ZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnN1YnRyYWN0IGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgYXV0byByZXN1bHQgPSBwbGFp
blRpbWUtPnN1YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTE0OSwxMSArMTQ5LDExIEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNX
aXRoLCAoSlNHbG9iYWxPYmplY3QqIGdsCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS53aXRoIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5w
cm90b3R5cGUud2l0aCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3Ry
KTsKIAogICAgIEpTVmFsdWUgdGVtcG9yYWxUaW1lTGlrZSAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGlmICghdGVtcG9yYWxUaW1lTGlrZS5pc09iamVjdCgpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQg
dG8gVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS53aXRoIG11c3QgYmUgYW4gb2JqZWN0Il9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUud2l0aCBtdXN0
IGJlIGFuIG9iamVjdCJfc3RyKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT53aXRo
KGdsb2JhbE9iamVjdCwgYXNPYmplY3QodGVtcG9yYWxUaW1lTGlrZSksIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0xNjks
NyArMTY5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8qIHBsYWluVGlt
ZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlz
VmFsdWUoKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBl
LnVudGlsIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFs
LlBsYWluVGltZS5wcm90b3R5cGUudW50aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBw
bGFpblRpbWUiX3N0cik7CiAKICAgICBhdXRvKiBvdGhlciA9IFRlbXBvcmFsUGxhaW5UaW1lOjpm
cm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc3RkOjpudWxsb3B0KTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMTg4LDcgKzE4OCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNT
aW5jZSwgKEpTR2xvYmFsT2JqZWN0KiBnCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zaW5jZSBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9z
dHIpOwogCiAgICAgYXV0byogb3RoZXIgPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTIwNywxMSArMjA3LDExIEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNSb3VuZCwgKEpT
R2xvYmFsT2JqZWN0KiBnCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICgh
cGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBl
LnJvdW5kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAg
ICAgYXV0byBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAob3B0aW9u
cy5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5yb3VuZCByZXF1aXJl
cyBhbiBvcHRpb25zIGFyZ3VtZW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUucm91
bmQgcmVxdWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJfc3RyKTsKIAogICAgIGF1dG8gcm91bmRl
ZCA9IHBsYWluVGltZS0+cm91bmQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMjI3LDcgKzIyNyw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0ds
b2JhbE9iamVjdCoKIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFwbGFp
blRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVx
dWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAg
IGF1dG8qIG90aGVyID0gVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CkBAIC0yNDMsNyArMjQzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0dldElTT0ZpZWxkcywgKEpTR2xvYmFs
T2IKIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRp
bWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAgIEpTT2JqZWN0
KiBmaWVsZHMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOwogICAgIGZpZWxk
cy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhciwgcGxhaW5UaW1lLT5j
YWxlbmRhcigpKTsKQEAgLTI2NCw3ICsyNjQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdAog
CiAgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFs
LlBsYWluVGltZS5wcm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b1N0cmluZyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAgIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUt
PnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKSk7CiB9CkBA
IC0yNzcsNyArMjc3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1RvSlNPTiwgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogcGxh
aW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90
b3R5cGUudG9KU09OIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudG9KU09OIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyh2bSwgcGxhaW5UaW1lLT50b1N0cmluZygpKSk7CiB9CkBAIC0yOTAsNyArMjkwLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1Rv
TG9jYWxlU3RyaW5nLCAoSlNHbG9iYWwKIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAg
ICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvTG9jYWxlU3Ry
aW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBs
YWluVGltZS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3Ry
aW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkpKTsKIH0KQEAgLTMwMSw3ICszMDEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVmFs
dWVPZiwgKEpTR2xvYmFsT2JqZWN0KgogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1l
LnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFyZSBQbGFpblRp
bWUgdmFsdWVzLCB1c2UgVGVtcG9yYWwuUGxhaW5UaW1lLmNvbXBhcmUiX3MpOworICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRp
bWUucHJvdG90eXBlLnZhbHVlT2YgbXVzdCBub3QgYmUgY2FsbGVkLiBUbyBjb21wYXJlIFBsYWlu
VGltZSB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5QbGFpblRpbWUuY29tcGFyZSJfc3RyKTsKIH0KIAog
SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVy
SG91ciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKQEAgLTMxMSw3ICszMTEsNyBAQCBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyLCAoSlNHbG9iYWxP
YmplY3QqCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxh
aW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXBsYWlu
VGltZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuaG91ciBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmhvdXIg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+aG91cigpKSk7CiB9CkBAIC0z
MjMsNyArMzIzLDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlR2V0dGVyTWludXRlLCAoSlNHbG9iYWxPYmplY3QKIAogICAgIGF1dG8qIHBsYWlu
VGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5taW51dGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taW51dGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHBsYWluVGltZS0+bWludXRlKCkpKTsKIH0KQEAgLTMzNSw3ICszMzUsNyBAQCBKU0Nf
REVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJTZWNv
bmQsIChKU0dsb2JhbE9iamVjdAogCiAgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2Fz
dDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnNlY29uZCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLnNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJf
c3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5z
ZWNvbmQoKSkpOwogfQpAQCAtMzQ3LDcgKzM0Nyw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbGxpc2Vjb25kLCAoSlNHbG9iYWxP
CiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1l
Kj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXBsYWluVGltZSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUubWlsbGlzZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWxs
aXNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5taWxsaXNlY29u
ZCgpKSk7CiB9CkBAIC0zNTksNyArMzU5LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQsIChKU0dsb2JhbE8KIAog
ICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghcGxhaW5UaW1lKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWNyb3NlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pY3Jvc2Vj
b25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm1pY3Jvc2Vjb25kKCkp
KTsKIH0KQEAgLTM3MSw3ICszNzEsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25kLCAoSlNHbG9iYWxPYgogCiAgICAg
YXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5Q
bGFpblRpbWUucHJvdG90eXBlLm5hbm9zZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5uYW5vc2Vjb25kIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm5hbm9zZWNvbmQoKSkpOwogfQpA
QCAtMzgzLDcgKzM4Myw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxPYmplCiAKICAgICBhdXRvKiBw
bGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGlt
ZS5wcm90b3R5cGUuY2FsZW5kYXIgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRp
bWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocGxhaW5UaW1lLT5jYWxlbmRhcigpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKaW5kZXggMTAxYWQ3NmU3NjY2NDA3
NjY5NTkwNjVhYTVjNzRkZTY5NmFjODFlNC4uYzk3NDVjMmIxNjViZGM5MzRlNzY5YjEzMDM5YTBm
YTYzZTE2YWY2ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZS5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCBKU09iamVjdCogVGVtcG9yYWxU
aW1lWm9uZTo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRpbWVa
b25lTAogICAgIGlmICh1dGNPZmZzZXRGcm9tSW5zdGFudCkKICAgICAgICAgcmV0dXJuIFRlbXBv
cmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZzZXQodm0sIGdsb2JhbE9iamVjdC0+dGltZVpv
bmVTdHJ1Y3R1cmUoKSwgdXRjT2Zmc2V0RnJvbUluc3RhbnQudmFsdWUoKSk7CiAKLSAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVU
QyBvZmZzZXQgc3RyaW5nLCBUaW1lWm9uZSBpZGVudGlmaWVyLCBvciB0ZW1wb3JhbCBJbnN0YW50
IHN0cmluZyJfcyk7CisgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJh
cmd1bWVudCBuZWVkcyB0byBiZSBVVEMgb2Zmc2V0IHN0cmluZywgVGltZVpvbmUgaWRlbnRpZmll
ciwgb3IgdGVtcG9yYWwgSW5zdGFudCBzdHJpbmciX3N0cik7CiAgICAgcmV0dXJuIHsgfTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1l
Wm9uZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZGQ3NTNjMDMxZTFjZGI3ZGEyMDMyY2U4
ODA4MGEzMzllYzRiNDBhZi4uZjg4MGI3NjMyZDlhOGJmZmFhNTNiZGI4ZTAyODZiNTlkYWMxYzNl
YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1l
Wm9uZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCkBAIC03Miw3ICs3Miw3IEBAIFRlbXBvcmFs
VGltZVpvbmVDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1CiAKIHZvaWQgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUqIHRlbXBvcmFsVGlt
ZVpvbmVQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJUaW1l
Wm9uZSJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
KTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlRpbWVab25lIl9zdHIsIFByb3Bl
cnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgdGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OwogICAgIHRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQpAQCAtOTUsNyArOTUs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxUaW1lWm9uZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogCiAgICAgc3RkOjpvcHRpb25hbDxUaW1lWm9u
ZUlEPiBpZGVudGlmaWVyID0gSVNPODYwMTo6cGFyc2VUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJp
bmcpOwogICAgIGlmICghaWRlbnRpZmllcikgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVUQyBvZmZzZXQgc3RyaW5n
IG9yIFRpbWVab25lIGlkZW50aWZpZXIiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVUQyBvZmZzZXQgc3RyaW5n
IG9yIFRpbWVab25lIGlkZW50aWZpZXIiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJv
bUlEKHZtLCBzdHJ1Y3R1cmUsIGlkZW50aWZpZXIudmFsdWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBl
LmNwcAppbmRleCA2ZjU3NTU3OWUzZWFmYjYxMzkzZjE1MWM2YmZiYjRhM2NhY2Y3YTgxLi5lZTVh
MDQyYTI0ZDk0N2NhZThkZjljZjVlNDBjYWQ1MjI2N2ZjZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBl
LmNwcApAQCAtOTEsNyArOTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxU
aW1lWm9uZVByb3RvdHlwZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0
byogdGltZVpvbmUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsVGltZVpvbmUqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCF0aW1lWm9uZSkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlRpbWVab25lLnBy
b3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFRpbWVab25lIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLlRpbWVab25lLnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIFRpbWVab25lIl9zdHIpOwogCiAgICAgYXV0byB2YXJpYW50ID0gdGltZVpvbmUt
PnRpbWVab25lKCk7CiAgICAgYXV0byBzdHJpbmcgPSBXVEY6OnN3aXRjaE9uKHZhcmlhbnQsCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuY3BwCmluZGV4IGQ4OGJhMjhjM2Yz
MDkyNzJlM2RhMmVjNDI2YjkzOWVkMWU5OTUxY2YuLjVkYmQ5Nzg1NjcyYmM3OWI5ZWRiMTc2MDkz
MWE2NzNjOTMzNjdjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVTZXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQu
Y3BwCkBAIC05MCw3ICs5MCw3IEBAIHZvaWQgVHlwZVNldDo6aW52YWxpZGF0ZUNhY2hlKFZNJiB2
bSkKIFN0cmluZyBUeXBlU2V0OjpkdW1wVHlwZXMoKSBjb25zdAogewogICAgIGlmIChtX3NlZW5U
eXBlcyA9PSBUeXBlTm90aGluZykKLSAgICAgICAgcmV0dXJuICIoVW5yZWFjaGVkIFN0YXRlbWVu
dCkiX3M7CisgICAgICAgIHJldHVybiAiKFVucmVhY2hlZCBTdGF0ZW1lbnQpIl9zdHI7CiAKICAg
ICBTdHJpbmdCdWlsZGVyIHNlZW47CiAKQEAgLTE2Nyw0OCArMTY3LDQ4IEBAIFN0cmluZyBUeXBl
U2V0OjpkaXNwbGF5TmFtZSgpIGNvbnN0CiAgICAgLy8gVGhlcmVmb3JlLCBtb3JlIHNwZWNpZmlj
IHR5cGVzIG11c3QgYmUgY2hlY2tlZCBmaXJzdC4KIAogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1U
byhUeXBlRnVuY3Rpb24pKQotICAgICAgICByZXR1cm4gIkZ1bmN0aW9uIl9zOworICAgICAgICBy
ZXR1cm4gIkZ1bmN0aW9uIl9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVVbmRl
ZmluZWQpKQotICAgICAgICByZXR1cm4gIlVuZGVmaW5lZCJfczsKKyAgICAgICAgcmV0dXJuICJV
bmRlZmluZWQiX3N0cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bGwpKQotICAg
ICAgICByZXR1cm4gIk51bGwiX3M7CisgICAgICAgIHJldHVybiAiTnVsbCJfc3RyOwogICAgIGlm
IChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlQm9vbGVhbikpCi0gICAgICAgIHJldHVybiAiQm9vbGVh
biJfczsKKyAgICAgICAgcmV0dXJuICJCb29sZWFuIl9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29u
Zm9ybVRvKFR5cGVBbnlJbnQpKQotICAgICAgICByZXR1cm4gIkludGVnZXIiX3M7CisgICAgICAg
IHJldHVybiAiSW50ZWdlciJfc3RyOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlTnVt
YmVyIHwgVHlwZUFueUludCkpCi0gICAgICAgIHJldHVybiAiTnVtYmVyIl9zOworICAgICAgICBy
ZXR1cm4gIk51bWJlciJfc3RyOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlU3RyaW5n
KSkKLSAgICAgICAgcmV0dXJuICJTdHJpbmciX3M7CisgICAgICAgIHJldHVybiAiU3RyaW5nIl9z
dHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVTeW1ib2wpKQotICAgICAgICByZXR1
cm4gIlN5bWJvbCJfczsKKyAgICAgICAgcmV0dXJuICJTeW1ib2wiX3N0cjsKICAgICBpZiAoZG9l
c1R5cGVDb25mb3JtVG8oVHlwZUJpZ0ludCkpCi0gICAgICAgIHJldHVybiAiQmlnSW50Il9zOwor
ICAgICAgICByZXR1cm4gIkJpZ0ludCJfc3RyOwogCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRv
KFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiKD8pIl9zOworICAg
ICAgICByZXR1cm4gIig/KSJfc3RyOwogCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVG
dW5jdGlvbiB8IFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiRnVu
Y3Rpb24/Il9zOworICAgICAgICByZXR1cm4gIkZ1bmN0aW9uPyJfc3RyOwogICAgIGlmIChkb2Vz
VHlwZUNvbmZvcm1UbyhUeXBlQm9vbGVhbiB8IFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0g
ICAgICAgIHJldHVybiAiQm9vbGVhbj8iX3M7CisgICAgICAgIHJldHVybiAiQm9vbGVhbj8iX3N0
cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZUFueUludCB8IFR5cGVOdWxsIHwgVHlw
ZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiSW50ZWdlcj8iX3M7CisgICAgICAgIHJldHVy
biAiSW50ZWdlcj8iX3N0cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bWJlciB8
IFR5cGVBbnlJbnQgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4g
Ik51bWJlcj8iX3M7CisgICAgICAgIHJldHVybiAiTnVtYmVyPyJfc3RyOwogICAgIGlmIChkb2Vz
VHlwZUNvbmZvcm1UbyhUeXBlU3RyaW5nIHwgVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAg
ICAgICAgcmV0dXJuICJTdHJpbmc/Il9zOworICAgICAgICByZXR1cm4gIlN0cmluZz8iX3N0cjsK
ICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZVN5bWJvbCB8IFR5cGVOdWxsIHwgVHlwZVVu
ZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiU3ltYm9sPyJfczsKKyAgICAgICAgcmV0dXJuICJT
eW1ib2w/Il9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVCaWdJbnQgfCBUeXBl
TnVsbCB8IFR5cGVVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gIkJpZ0ludD8iX3M7CisgICAg
ICAgIHJldHVybiAiQmlnSW50PyJfc3RyOwogICAgCiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRv
KFR5cGVPYmplY3QgfCBUeXBlRnVuY3Rpb24gfCBUeXBlU3RyaW5nKSkKLSAgICAgICAgcmV0dXJu
ICJPYmplY3QiX3M7CisgICAgICAgIHJldHVybiAiT2JqZWN0Il9zdHI7CiAgICAgaWYgKGRvZXNU
eXBlQ29uZm9ybVRvKFR5cGVPYmplY3QgfCBUeXBlRnVuY3Rpb24gfCBUeXBlU3RyaW5nIHwgVHlw
ZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuICJPYmplY3Q/Il9zOworICAg
ICAgICByZXR1cm4gIk9iamVjdD8iX3N0cjsKIAotICAgIHJldHVybiAiKG1hbnkpIl9zOworICAg
IHJldHVybiAiKG1hbnkpIl9zdHI7CiB9CiAKIFN0cmluZyBUeXBlU2V0OjpsZWFzdENvbW1vbkFu
Y2VzdG9yKCkgY29uc3QKQEAgLTM4MSw3ICszODEsNyBAQCBTdHJpbmcgU3RydWN0dXJlU2hhcGU6
OmxlYXN0Q29tbW9uQW5jZXN0b3IoY29uc3QgVmVjdG9yPFJlZjxTdHJ1Y3R1cmVTaGFwZT4+JiBz
aAogICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdW5saWtlbHkgdG8gaGFwcGVuLCBiZWNhdXNl
IHdlIHVzdWFsbHkgYm90dG9tIG91dCBhdCAiT2JqZWN0IiwgYnV0IHRoZXJlIGFyZSBzb21lIHNl
dHMgb2YgT2JqZWN0cwogICAgICAgICAgICAgICAgIC8vIHRoYXQgbWF5IGNhdXNlIHRoaXMgYmVo
YXZpb3IuIFdlIGZhbGwgYmFjayB0byAiT2JqZWN0IiBiZWNhdXNlIGl0J3Mgb3VyIHZlcnNpb24g
b2YgVG9wLgogICAgICAgICAgICAgICAgIGlmICghb3JpZ2luLT5tX3Byb3RvKQotICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gIk9iamVjdCJfczsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
ICJPYmplY3QiX3N0cjsKICAgICAgICAgICAgICAgICBvcmlnaW4gPSBvcmlnaW4tPm1fcHJvdG8u
Z2V0KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1R5cGVTZXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1R5cGVTZXQuaAppbmRleCA4MGJiNDA3ZWYxZDI2Yjg0OGQwNmM1ZTcxMGM2MGEwOWI1OGFm
YjI2Li5hY2JjZTM3YmU1ZDI3MTEzYzkwZTBlMjJlMDdlYTU3Y2VlYmJiYjMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcgc3RyaW5nUmVwcmVzZW50YXRpb24oKTsKICAgICBTdHJpbmcgdG9KU09OU3Ry
aW5nKCkgY29uc3Q7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN0cnVj
dHVyZURlc2NyaXB0aW9uPiBpbnNwZWN0b3JSZXByZXNlbnRhdGlvbigpOwotICAgIHZvaWQgc2V0
Q29uc3RydWN0b3JOYW1lKFN0cmluZyBuYW1lKSB7IG1fY29uc3RydWN0b3JOYW1lID0gKG5hbWUu
aXNFbXB0eSgpID8gIk9iamVjdCJfcyA6IG5hbWUpOyB9CisgICAgdm9pZCBzZXRDb25zdHJ1Y3Rv
ck5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKSB7IG1fY29uc3RydWN0b3JOYW1lID0gKG5hbWUuaXNF
bXB0eSgpID8gIk9iamVjdCJfc3RyIDogbmFtZSk7IH0KICAgICBTdHJpbmcgY29uc3RydWN0b3JO
YW1lKCkgeyByZXR1cm4gbV9jb25zdHJ1Y3Rvck5hbWU7IH0KICAgICB2b2lkIHNldFByb3RvKFJl
ZjxTdHJ1Y3R1cmVTaGFwZT4mJiBzaGFwZSkgeyBtX3Byb3RvID0gV1RGTW92ZShzaGFwZSk7IH0K
ICAgICB2b2lkIGVudGVyRGljdGlvbmFyeU1vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAppbmRleCBlMzJkY2IwYWQzNGIyM2JjZGEyNDcxYTAzZWU5MmNiNTIzMzM4MjM4Li5m
NjQyZjkyZGQyOGIzZDU4NGU1N2Q0MDVhMGI0MGY3NmUwNDcwNjU1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xMjE5LDcgKzEyMTksNyBAQCB2b2lkIFZNOjpkdW1wVHlw
ZVByb2ZpbGVyRGF0YSgpCiAgICAgaWYgKCF0eXBlUHJvZmlsZXIoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgdHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKCp0aGlzLCAiVk0g
RHVtcCBUeXBlcyJfcyk7CisgICAgdHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVz
KCp0aGlzLCAiVk0gRHVtcCBUeXBlcyJfc3RyKTsKICAgICB0eXBlUHJvZmlsZXIoKS0+ZHVtcFR5
cGVQcm9maWxlckRhdGEoKnRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcAppbmRleCA3ZWIwZmU0NTU0MTc5YTUx
NGIzMzI4ZjNkMmQ3NjI0NGRiYTRlZTRmLi5mNWZiNjllOWE2N2U3NDc4Yzc4ZmYwMWI3NmRmNDEw
MGE2NzdiZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFr
TWFwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtNYXBDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdl
YWtNYXBDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCBu
dWxscHQKIAogdm9pZCBXZWFrTWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwg
V2Vha01hcFByb3RvdHlwZSogcHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCAwLCAiV2Vha01hcCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1
cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIldlYWtNYXAi
X3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0K
IApAQCAtNzUsNyArNzUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0V2Vh
a01hcCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgogCiAgICAgYXV0byBh
ZGRlckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJGdW5jdGlvbik7CiAg
ICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpUeXBlOjpOb25l
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
J3NldCcgcHJvcGVydHkgb2YgYSBXZWFrTWFwIHNob3VsZCBiZSBjYWxsYWJsZS4iX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJ3NldCcg
cHJvcGVydHkgb2YgYSBXZWFrTWFwIHNob3VsZCBiZSBjYWxsYWJsZS4iX3N0cik7CiAKICAgICBi
b29sIGNhblBlcmZvcm1GYXN0U2V0ID0gYWRkZXJGdW5jdGlvbkNhbGxEYXRhLnR5cGUgPT0gQ2Fs
bERhdGE6OlR5cGU6Ok5hdGl2ZSAmJiBhZGRlckZ1bmN0aW9uQ2FsbERhdGEubmF0aXZlLmZ1bmN0
aW9uID09IHByb3RvRnVuY1dlYWtNYXBTZXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1dlYWtNYXBQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlwZS5jcHAKaW5kZXggYjg1NmQ3NjEzNWJmNjFiZmEz
ZDM4MzRiNmNlMDUzZDdiYzRmNmY4My4uMWM4MGE2ZDc1OTI2MDdiMjJhN2ZiMzYyYzBhNjFjMzYw
NTc5MjYzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01h
cFByb3RvdHlwZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNX
ZWFrTWFwKiBnZXRXZWFrTWFwKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoVU5M
SUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBub24tb2JqZWN0Il9z
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBX
ZWFrTWFwIGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtNjYsNyArNjYsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dl
YWtNYXAqIGdldFdlYWtNYXAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZQog
ICAgIGlmIChMSUtFTFkobWFwKSkKICAgICAgICAgcmV0dXJuIG1hcDsKIAotICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha01hcCBmdW5jdGlvbiBvbiBh
IG5vbi1XZWFrTWFwIG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNhbGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtNYXAgb2JqZWN0
Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yLmNwcAppbmRl
eCBmYmZhZjM1Yzc4YmY2ZTk2ODcxY2MwZDc0MTAxZmNmYmIwN2RlOTg2Li5iNjdlZWFhYzFjNTZk
ZmJkMWFlOTA4ZTQwNWU1ZjYzOGRlZjFiYmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvci5jcHAKQEAgLTM2
LDcgKzM2LDcgQEAgY29uc3QgQ2xhc3NJbmZvIFdlYWtPYmplY3RSZWZDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLAogCiB2b2lkIFdlYWtPYmplY3RSZWZD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWFrT2JqZWN0UmVmUHJvdG90eXBl
KiBwcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsICJXZWFrUmVm
Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiV2Vha1JlZiJfc3RyLCBQcm9wZXJ0eUFk
ZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdp
dGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlw
ZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCkBAIC02MSw3ICs2MSw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXZWFrUmVmLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzT2JqZWN0
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGaXJzdCBhcmd1bWVudCB0byBXZWFrUmVmIHNob3VsZCBiZSBhbiBvYmplY3QiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3Qg
YXJndW1lbnQgdG8gV2Vha1JlZiBzaG91bGQgYmUgYW4gb2JqZWN0Il9zdHIpOwogCiAgICAgSlNP
YmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOwogICAg
IFN0cnVjdHVyZSogd2Vha09iamVjdFJlZlN0cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJV
Q1RVUkUodm0sIHdlYWtPYmplY3RSZWZTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5q
c0NhbGxlZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dl
YWtPYmplY3RSZWZQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
V2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHAKaW5kZXggODNhMjA0NjA5ZDlhZDdiYWU4YWE4OGIx
MjI4YzFjYjc2NDllZjgwOC4uYTZhZmRiNGFkYzRiOGEyNjEwMDFkZjdmNjZmNTUxZjM1MDliYzU1
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJl
ZlByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09i
amVjdFJlZlByb3RvdHlwZS5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0
aWMgSlNXZWFrT2JqZWN0UmVmKiBnZXRXZWFrUmVmKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBp
ZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1JlZiBmdW5jdGlvbiBvbiBub24tb2Jq
ZWN0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNh
bGxlZCBXZWFrUmVmIGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3N0cik7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtNjAsNyArNjAsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRp
YyBKU1dlYWtPYmplY3RSZWYqIGdldFdlYWtSZWYoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSgogICAgIGlmIChMSUtFTFkocmVmKSkKICAgICAgICAgcmV0dXJuIHJlZjsKIAotICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1JlZiBmdW5jdGlv
biBvbiBhIG5vbi1XZWFrUmVmIG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkNhbGxlZCBXZWFrUmVmIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtSZWYg
b2JqZWN0Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBjOGRh
YWI0NmIwM2RiMDNlMGU3YWFhZjcxMGY5MTM0ODQxNWY2YWIwLi4zM2Q3MGEwMTgzODE3ZDU3NWE2
ZmNiMGUyMmY5MmJiODY2NmU0OThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9XZWFrU2V0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAKQEAgLTM4LDcgKzM4LDcgQEAgY29uc3Qg
Q2xhc3NJbmZvIFdlYWtTZXRDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFz
ZTo6c19pbmZvLCBudWxscHQKIAogdm9pZCBXZWFrU2V0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgV2Vha1NldFByb3RvdHlwZSogcHJvdG90eXBlKQogewotICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCAwLCAiV2Vha1NldCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
MCwgIldlYWtTZXQiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5KTsKIH0KIApAQCAtNzYsNyArNzYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
Y29uc3RydWN0V2Vha1NldCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcgog
CiAgICAgYXV0byBhZGRlckZ1bmN0aW9uQ2FsbERhdGEgPSBnZXRDYWxsRGF0YSh2bSwgYWRkZXJG
dW5jdGlvbik7CiAgICAgaWYgKGFkZGVyRnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRh
OjpUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiJ2FkZCcgcHJvcGVydHkgb2YgYSBXZWFrU2V0IHNob3VsZCBiZSBjYWxsYWJs
ZS4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiJ2FkZCcgcHJvcGVydHkgb2YgYSBXZWFrU2V0IHNob3VsZCBiZSBjYWxsYWJsZS4iX3N0
cik7CiAKICAgICBib29sIGNhblBlcmZvcm1GYXN0QWRkID0gYWRkZXJGdW5jdGlvbkNhbGxEYXRh
LnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5hdGl2ZSAmJiBhZGRlckZ1bmN0aW9uQ2FsbERhdGEu
bmF0aXZlLmZ1bmN0aW9uID09IHByb3RvRnVuY1dlYWtTZXRBZGQ7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKaW5kZXggYzE3ZmZj
ZjA3YjY4MWVjOGFhZGZjOGExOWZmMzc1MDAwMDhjZTBkNy4uMGVhYjkzYTkyY2ZhNTI1MTRiZGYx
MjY2ZDcxYWFmNmUzY2UzNDk5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvV2Vha1NldFByb3RvdHlwZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgQUxXQVlTX0lOTElO
RSBzdGF0aWMgSlNXZWFrU2V0KiBnZXRXZWFrU2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAoVU5MSUtFTFkoIXZhbHVlLmlzT2JqZWN0KCkpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1NldCBmdW5jdGlvbiBvbiBu
b24tb2JqZWN0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3N0cik7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNjYsNyArNjYsNyBAQCBBTFdBWVNfSU5MSU5F
IHN0YXRpYyBKU1dlYWtTZXQqIGdldFdlYWtTZXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZQogICAgIGlmIChMSUtFTFkoc2V0KSkKICAgICAgICAgcmV0dXJuIHNldDsKIAot
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgV2Vha1NldCBm
dW5jdGlvbiBvbiBhIG5vbi1XZWFrU2V0IG9iamVjdCJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIGEgbm9uLVdl
YWtTZXQgb2JqZWN0Il9zdHIpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcAppbmRleCA3YTNi
Mzc5MjRiZTU2MDU0N2ZjMmRmZmUzMzJkM2U2NmJmOGE5NWY2Li5mODUxZDdjNGQxODRlZWViNDYz
ZjdkOTYzNzM5ZjM2NTZlMzEzZDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
dG9vbHMvRnVuY3Rpb25PdmVycmlkZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBzdGF0aWMgdm9p
ZCBpbml0aWFsaXplT3ZlcnJpZGVJbmZvKGNvbnN0IFNvdXJjZUNvZGUmIG9yaWdDb2RlLCBjb25z
dCBTdHJpbmcmIG5ldwogICAgIG5ld1Byb3ZpZGVyU3RyLmFwcGVuZChvcmlnSGVhZGVyKTsKICAg
ICBuZXdQcm92aWRlclN0ci5hcHBlbmQobmV3Qm9keSk7CiAKLSAgICBhdXRvIG92ZXJyaWRkZW4g
PSAiPG92ZXJyaWRkZW4+Il9zOworICAgIGF1dG8gb3ZlcnJpZGRlbiA9ICI8b3ZlcnJpZGRlbj4i
X3N0cjsKICAgICBVUkwgdXJsKHsgfSwgb3ZlcnJpZGRlbik7CiAgICAgUmVmPFNvdXJjZVByb3Zp
ZGVyPiBuZXdQcm92aWRlciA9IFN0cmluZ1NvdXJjZVByb3ZpZGVyOjpjcmVhdGUobmV3UHJvdmlk
ZXJTdHIsIFNvdXJjZU9yaWdpbiB7IHVybCB9LCBvdmVycmlkZGVuKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCmluZGV4IDNmYzcxMTg2YmUyM2M0Nzg2MTlm
Mzc4NTA2ZGU0MTJiYmQ1N2FjNjYuLjRkM2QxNmEzMmE2YjgxYmY0OGRkYmRjNjQ1NmRkZTI4NzQw
Y2ZkZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9KU0RvbGxhclZN
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAKQEAg
LTEyODcsNyArMTI4Nyw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihkb21KSVRHZXR0ZXJD
b21wbGV4Q3VzdG9tR2V0dGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAgICAgaWYgKCF0aGlz
T2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlKTsKICAgICBpZiAodGhpc09iamVjdC0+bV9lbmFibGVFeGNlcHRpb24pCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRE9NSklUR2V0dGVyQ29tcGxleCBzbG93IGNhbGwg
ZXhjZXB0aW9uIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIkRP
TUpJVEdldHRlckNvbXBsZXggc2xvdyBjYWxsIGV4Y2VwdGlvbiJfc3RyKSkpOwogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIodGhpc09iamVjdC0+dmFsdWUoKSkpOwogfQogCkBA
IC0xMzAyLDcgKzEzMDIsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04oZG9tSklUR2V0dGVy
Q29tcGxleFNsb3dDYWxsLCBFbmNvZGVkSlNWYWx1ZSwgKEpTR2xvYmFsTwogICAgIGF1dG8qIGRv
bWppdEdldHRlckNvbXBsZXggPSBqc0R5bmFtaWNDYXN0PERPTUpJVEdldHRlckNvbXBsZXgqPih2
bSwgb2JqZWN0KTsKICAgICBpZiAoZG9taml0R2V0dGVyQ29tcGxleCkgewogICAgICAgICBpZiAo
ZG9taml0R2V0dGVyQ29tcGxleC0+bV9lbmFibGVFeGNlcHRpb24pCi0gICAgICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIkRPTUpJVEdldHRlckNvbXBsZXggc2xvdyBjYWxsIGV4
Y2VwdGlvbiJfcykpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
RE9NSklUR2V0dGVyQ29tcGxleCBzbG93IGNhbGwgZXhjZXB0aW9uIl9zdHIpKSk7CiAgICAgfQog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIob2JqZWN0LT52YWx1ZSgpKSk7CiB9
CkBAIC0zMDMwLDcgKzMwMzAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25D
cmVhdGVXYXNtU3RyZWFtaW5nQ29tcGlsZXJGb3JDb21waWxlLCAoSlNHbG9iYQogCiAgICAgYXV0
byBjYWxsYmFjayA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICBpZiAoIWNhbGxiYWNrKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgSlMg
ZnVuY3Rpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgSlMgZnVuY3Rpb24iX3N0cik7CiAK
ICAgICBhdXRvIGNvbXBpbGVyID0gV2FzbVN0cmVhbWluZ0NvbXBpbGVyOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdCwgV2FzbTo6Q29tcGlsZXJNb2RlOjpWYWxpZGF0aW9uLCBudWxscHRyKTsKICAg
ICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwpAQCAtMzA1Miw3ICszMDUyLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uQ3JlYXRlV2FzbVN0cmVhbWluZ0NvbXBpbGVyRm9y
SW5zdGFudGlhdGUsIChKU0cKIAogICAgIGF1dG8gY2FsbGJhY2sgPSBqc0R5bmFtaWNDYXN0PEpT
RnVuY3Rpb24qPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFjYWxsYmFj
aykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZpcnN0IGFyZ3VtZW50IGlzIG5vdCBhIEpTIGZ1bmN0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IGlz
IG5vdCBhIEpTIGZ1bmN0aW9uIl9zdHIpOwogCiAgICAgSlNWYWx1ZSBpbXBvcnRBcmd1bWVudCA9
IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgSlNPYmplY3QqIGltcG9ydE9iamVjdCA9IGlt
cG9ydEFyZ3VtZW50LmdldE9iamVjdCgpOwpAQCAtMzEzMSw3ICszMTMxLDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uU2V0SW1wdXJlR2V0dGVyRGVsZWdhdGUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmEKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKICAgICBJbXB1cmVHZXR0ZXIqIGltcHVyZUdldHRlciA9IGpzRHluYW1pY0Nhc3Q8SW1w
dXJlR2V0dGVyKj4odm0sIGFzT2JqZWN0KGJhc2UuYXNDZWxsKCkpKTsKICAgICBpZiAoVU5MSUtF
TFkoIWltcHVyZUdldHRlcikpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhbiBJbXB1cmVHZXR0ZXIiX3MpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGFuIElt
cHVyZUdldHRlciJfc3RyKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAgICAg
fQogICAgIGltcHVyZUdldHRlci0+c2V0RGVsZWdhdGUodm0sIGFzT2JqZWN0KGRlbGVnYXRlLmFz
Q2VsbCgpKSk7CkBAIC0zMTkyLDcgKzMxOTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25DcmVhdGVFbGVtZW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwog
CiAgICAgUm9vdCogcm9vdCA9IGpzRHluYW1pY0Nhc3Q8Um9vdCo+KHZtLCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApKTsKICAgICBpZiAoIXJvb3QpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiQ2Fubm90IGNyZWF0ZSBFbGVtZW50IHdpdGhvdXQgYSBSb290LiJfcykpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgY3JlYXRlIEVsZW1lbnQg
d2l0aG91dCBhIFJvb3QuIl9zdHIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShFbGVt
ZW50OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcm9vdCkpOwogfQogCkBAIC0zMjI1LDcgKzMy
MjUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25HZXRIaWRkZW5WYWx1ZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBTaW1wbGVPYmplY3QqIHNpbXBs
ZU9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8U2ltcGxlT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCkpOwogICAgIGlmIChVTkxJS0VMWSghc2ltcGxlT2JqZWN0KSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2YgZ2V0SGlk
ZGVuVmFsdWUgdGVzdCBmdW5jdGlvbiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIHVzZSBvZiBnZXRIaWRkZW5WYWx1ZSB0ZXN0IGZ1bmN0
aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShzaW1wbGVPYmplY3QtPmhpZGRlblZhbHVlKCkpOwpAQCAt
MzI0MCw3ICszMjQwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uU2V0SGlk
ZGVuVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgU2ltcGxlT2Jq
ZWN0KiBzaW1wbGVPYmplY3QgPSBqc0R5bmFtaWNDYXN0PFNpbXBsZU9iamVjdCo+KHZtLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoVU5MSUtFTFkoIXNpbXBsZU9iamVjdCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgdXNl
IG9mIHNldEhpZGRlblZhbHVlIHRlc3QgZnVuY3Rpb24iX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2Ygc2V0SGlkZGVuVmFsdWUg
dGVzdCBmdW5jdGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJuIGVuY29kZWRKU1ZhbHVlKCk7CiAg
ICAgfQogICAgIEpTVmFsdWUgdmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwpAQCAtMzI4
OCw3ICszMjg4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRmluZFR5cGVG
b3JFeHByZXNzaW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBEb2xsYXJWTUFzc2Vy
dFNjb3BlIGFzc2VydFNjb3BlOwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBSRUxFQVNFX0FTU0VSVCh2bS50eXBlUHJvZmlsZXIoKSk7Ci0gICAgdm0udHlwZVByb2ZpbGVy
TG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvbkZp
bmRUeXBlRm9yRXhwcmVzc2lvbiJfcyk7CisgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nl
c3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvbkZpbmRUeXBlRm9yRXhw
cmVzc2lvbiJfc3RyKTsKIAogICAgIEpTVmFsdWUgZnVuY3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQoZnVuY3Rpb25WYWx1ZS5pc0NhbGxhYmxl
KHZtKSk7CkBAIC0zMzA4LDcgKzMzMDgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVu
Y3Rpb25SZXR1cm5UeXBlRm9yLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAg
IERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLnR5cGVQcm9maWxlcigpKTsKLSAgICB2
bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJqc2MgVGVzdGluZyBB
UEk6IGZ1bmN0aW9uUmV0dXJuVHlwZUZvciJfcyk7CisgICAgdm0udHlwZVByb2ZpbGVyTG9nKCkt
PnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAianNjIFRlc3RpbmcgQVBJOiBmdW5jdGlvblJldHVyblR5
cGVGb3IiX3N0cik7CiAKICAgICBKU1ZhbHVlIGZ1bmN0aW9uVmFsdWUgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIFJFTEVBU0VfQVNTRVJUKGZ1bmN0aW9uVmFsdWUuaXNDYWxsYWJsZSh2
bSkpOwpAQCAtMzQ5OCw3ICszNDk4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0
aW9uTG9hZEdldHRlckZyb21HZXR0ZXJTZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2wKIAogICAg
IEdldHRlclNldHRlciogZ2V0dGVyU2V0dGVyID0ganNEeW5hbWljQ2FzdDxHZXR0ZXJTZXR0ZXIq
Pih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFnZXR0ZXJT
ZXR0ZXIpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJ
bnZhbGlkIHVzZSBvZiBsb2FkR2V0dGVyRnJvbUdldHRlclNldHRlciB0ZXN0IGZ1bmN0aW9uOiBh
cmd1bWVudCBpcyBub3QgYSBHZXR0ZXJTZXR0ZXIiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2YgbG9hZEdldHRlckZyb21HZXR0
ZXJTZXR0ZXIgdGVzdCBmdW5jdGlvbjogYXJndW1lbnQgaXMgbm90IGEgR2V0dGVyU2V0dGVyIl9z
dHIpOwogICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAKQEAgLTM2NTks
NyArMzY1OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblNldFVzZXJQcmVm
ZXJyZWRMYW5ndWFnZXMsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBKU0FycmF5KiBhcnJh
eSA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoIWFycmF5KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gYXJyYXkiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gYXJyYXkiX3N0cik7CiAKICAgICBWZWN0
b3I8U3RyaW5nPiBsYW5ndWFnZXM7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXJyYXktPmxlbmd0
aCgpOwpAQCAtMzczNyw3ICszNzM3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0
aW9uVG9DYWNoZWFibGVEaWN0aW9uYXJ5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIAogICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQgZmlyc3QgYXJndW1lbnQg
dG8gYmUgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRvIGJlIGFuIG9iamVj
dCJfc3RyKTsKICAgICBpZiAoIW9iamVjdC0+c3RydWN0dXJlKHZtKS0+aXNVbmNhY2hlYWJsZURp
Y3Rpb25hcnkoKSkKICAgICAgICAgb2JqZWN0LT5jb252ZXJ0VG9EaWN0aW9uYXJ5KHZtKTsKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdCk7CkBAIC0zNzUxLDcgKzM3NTEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Ub1VuY2FjaGVhYmxlRGljdGlvbmFyeSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1p
Y0Nhc3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFv
YmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJFeHBlY3RlZCBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQg
Zmlyc3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zdHIpOwogICAgIG9iamVjdC0+Y29udmVy
dFRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5KHZtKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KG9iamVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9JbmRlbnRlci5oIGIvU291
cmNlL1dURi93dGYvSW5kZW50ZXIuaAppbmRleCBjZGVkN2MyNjE1ZmFkODk3ZmZjNmViYzY2MmI4
OGZhM2I0NTUyZGIyLi4xNjI1NjE5NjVhMTY4YjhiMTkwYjg5ZTFkMTYyNmRhMjljYzVlZWQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9JbmRlbnRlci5oCisrKyBiL1NvdXJjZS9XVEYvd3Rm
L0luZGVudGVyLmgKQEAgLTMzLDcgKzMzLDcgQEAgbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBJbmRl
bnRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgSW5kZW50
ZXIodW5zaWduZWQgY291bnQgPSAwLCBTdHJpbmcgc3RyaW5nID0gIiAgIl9zKQorICAgIEluZGVu
dGVyKHVuc2lnbmVkIGNvdW50ID0gMCwgU3RyaW5nIHN0cmluZyA9ICIgICJfc3RyKQogICAgICAg
ICA6IG1fY291bnQoY291bnQpCiAgICAgICAgICwgbV9zdHJpbmcoc3RyaW5nKQogICAgIHsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTG9nZ2VyLmggYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dn
ZXIuaAppbmRleCBlNzQ0YTc4Nzc3ZWQzNGUzMTkyZGNlYzNlYzVjY2VkYjE5OWUzNGYxLi4xMWYx
OTkyZmY2NmE0NTU5YzMwMjg2NzU0Zjc2ZGNmYTk0ZTdkZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V1RGL3d0Zi9Mb2dnZXIuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9Mb2dnZXIuaApAQCAtMzksNyAr
MzksNyBAQCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHN0cnVjdCBM
b2dBcmd1bWVudCB7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFt
ZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8VSwgYm9vbD46OnZhbHVlLCBTdHJpbmc+Ojp0
eXBlIHRvU3RyaW5nKGJvb2wgYXJndW1lbnQpIHsgcmV0dXJuIGFyZ3VtZW50ID8gInRydWUiX3Mg
OiAiZmFsc2UiX3M7IH0KKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGljIHR5cGVu
YW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBib29sPjo6dmFsdWUsIFN0cmluZz46
OnR5cGUgdG9TdHJpbmcoYm9vbCBhcmd1bWVudCkgeyByZXR1cm4gYXJndW1lbnQgPyAidHJ1ZSJf
c3RyIDogImZhbHNlIl9zdHI7IH0KICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVID0gVD4gc3RhdGlj
IHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxVLCBpbnQ+Ojp2YWx1ZSwgU3Ry
aW5nPjo6dHlwZSB0b1N0cmluZyhpbnQgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVy
KGFyZ3VtZW50KTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5h
bWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIHVuc2lnbmVkPjo6dmFsdWUsIFN0cmlu
Zz46OnR5cGUgdG9TdHJpbmcodW5zaWduZWQgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVt
YmVyKGFyZ3VtZW50KTsgfQogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlw
ZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1lPFUsIHVuc2lnbmVkIGxvbmc+Ojp2YWx1
ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyh1bnNpZ25lZCBsb25nIGFyZ3VtZW50KSB7IHJldHVy
biBTdHJpbmc6Om51bWJlcihhcmd1bWVudCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRpYVRpbWUuY3BwCmluZGV4IDRiODI4
YTZmNmZlODBiODY0MTA5N2I5Yjk0ZjcwMmQ4YjlmMTA3NTIuLmNiNTQ3MWRjNzM1NjZlYjVjNDY4
OWE1MzA4YjNiNTIyODMwYTI1N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL01lZGlhVGlt
ZS5jcHAKKysrIGIvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcApAQCAtNTY0LDI0ICs1NjQs
MjQgQEAgUmVmPEpTT046Ok9iamVjdD4gTWVkaWFUaW1lOjp0b0pTT05PYmplY3QoKSBjb25zdAog
ICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKIAogICAgIGlmIChoYXNE
b3VibGVWYWx1ZSgpKSB7Ci0gICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2YWx1ZSJfcywgdG9E
b3VibGUoKSk7CisgICAgICAgIG9iamVjdC0+c2V0RG91YmxlKCJ2YWx1ZSJfc3RyLCB0b0RvdWJs
ZSgpKTsKICAgICAgICAgcmV0dXJuIG9iamVjdDsKICAgICB9CiAKICAgICBpZiAoaXNJbnZhbGlk
KCkpCi0gICAgICAgIG9iamVjdC0+c2V0Qm9vbGVhbigiaW52YWxpZCJfcywgdHJ1ZSk7CisgICAg
ICAgIG9iamVjdC0+c2V0Qm9vbGVhbigiaW52YWxpZCJfc3RyLCB0cnVlKTsKICAgICBlbHNlIGlm
IChpc0luZGVmaW5pdGUoKSkKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCAi
TmFOIl9zKTsKKyAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zdHIsICJOYU4iX3N0
cik7CiAgICAgZWxzZSBpZiAoaXNQb3NpdGl2ZUluZmluaXRlKCkpCi0gICAgICAgIG9iamVjdC0+
c2V0U3RyaW5nKCJ2YWx1ZSJfcywgIlBPU0lUSVZFX0lORklOSVRZIl9zKTsKKyAgICAgICAgb2Jq
ZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zdHIsICJQT1NJVElWRV9JTkZJTklUWSJfc3RyKTsKICAg
ICBlbHNlIGlmIChpc05lZ2F0aXZlSW5maW5pdGUoKSkKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJp
bmcoInZhbHVlIl9zLCAiTkVHQVRJVkVfSU5GSU5JVFkiX3MpOworICAgICAgICBvYmplY3QtPnNl
dFN0cmluZygidmFsdWUiX3N0ciwgIk5FR0FUSVZFX0lORklOSVRZIl9zdHIpOwogICAgIGVsc2UK
LSAgICAgICAgb2JqZWN0LT5zZXREb3VibGUoInZhbHVlIl9zLCB0b0RvdWJsZSgpKTsKKyAgICAg
ICAgb2JqZWN0LT5zZXREb3VibGUoInZhbHVlIl9zdHIsIHRvRG91YmxlKCkpOwogCi0gICAgb2Jq
ZWN0LT5zZXREb3VibGUoIm51bWVyYXRvciJfcywgc3RhdGljX2Nhc3Q8ZG91YmxlPihtX3RpbWVW
YWx1ZSkpOwotICAgIG9iamVjdC0+c2V0SW50ZWdlcigiZGVub21pbmF0b3IiX3MsIG1fdGltZVNj
YWxlKTsKLSAgICBvYmplY3QtPnNldEludGVnZXIoImZsYWdzIl9zLCBtX3RpbWVGbGFncyk7Cisg
ICAgb2JqZWN0LT5zZXREb3VibGUoIm51bWVyYXRvciJfc3RyLCBzdGF0aWNfY2FzdDxkb3VibGU+
KG1fdGltZVZhbHVlKSk7CisgICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJkZW5vbWluYXRvciJfc3Ry
LCBtX3RpbWVTY2FsZSk7CisgICAgb2JqZWN0LT5zZXRJbnRlZ2VyKCJmbGFncyJfc3RyLCBtX3Rp
bWVGbGFncyk7CiAKICAgICByZXR1cm4gb2JqZWN0OwogfQpAQCAtNjA5LDggKzYwOSw4IEBAIFN0
cmluZyBNZWRpYVRpbWVSYW5nZTo6dG9KU09OU3RyaW5nKCkgY29uc3QKIHsKICAgICBhdXRvIG9i
amVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CiAKLSAgICBvYmplY3QtPnNldE9iamVjdCgi
c3RhcnQiX3MsIHN0YXJ0LnRvSlNPTk9iamVjdCgpKTsKLSAgICBvYmplY3QtPnNldE9iamVjdCgi
ZW5kIl9zLCBlbmQudG9KU09OT2JqZWN0KCkpOworICAgIG9iamVjdC0+c2V0T2JqZWN0KCJzdGFy
dCJfc3RyLCBzdGFydC50b0pTT05PYmplY3QoKSk7CisgICAgb2JqZWN0LT5zZXRPYmplY3QoImVu
ZCJfc3RyLCBlbmQudG9KU09OT2JqZWN0KCkpOwogCiAgICAgcmV0dXJuIG9iamVjdC0+dG9KU09O
U3RyaW5nKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwIGIvU291cmNl
L1dURi93dGYvVVJMLmNwcAppbmRleCA0ODBmZWM2NDQyNmIwODZhODVmYzBkMThjMjllNzgxOTdl
NGZkNDdiLi5kOTdmNzI3ZjMyODYzY2E4Y2NjMzg0NmQ5MWJhY2U2NWQ5M2I1YjY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAK
QEAgLTEwNDQsNyArMTA0NCw3IEBAIFN0cmluZyBtaW1lVHlwZUZyb21EYXRhVVJMKFN0cmluZ1Zp
ZXcgZGF0YVVSTCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7CiAgICAgfQogICAgIGlm
IChpbmRleCA9PSA1KQotICAgICAgICByZXR1cm4gInRleHQvcGxhaW4iX3M7CisgICAgICAgIHJl
dHVybiAidGV4dC9wbGFpbiJfc3RyOwogICAgIEFTU0VSVChpbmRleCA+PSA1KTsKICAgICByZXR1
cm4gZGF0YVVSTC5zdWJzdHJpbmcoNSwgaW5kZXggLSA1KS5jb252ZXJ0VG9BU0NJSUxvd2VyY2Fz
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvY2YvTGFuZ3VhZ2VDRi5jcHAgYi9T
b3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcAppbmRleCBjMDRjNTViYzYwM2QyODFkMGNh
Mzg5MjBlYmE4Yzc5ZTVlNjkyOTgxLi5lNWRlZGUyNzZjODg1MmVmMWNlOTZhYzIyMWZiZTdjOGE1
ZjBkZjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi9jZi9MYW5ndWFnZUNGLmNwcApAQCAtOTksNyArOTksNyBAQCBWZWN0
b3I8U3RyaW5nPiBwbGF0Zm9ybVVzZXJQcmVmZXJyZWRMYW5ndWFnZXMoU2hvdWxkTWluaW1pemVM
YW5ndWFnZXMgc2hvdWxkTWluaQogCiAgICAgQ0ZJbmRleCBwbGF0Zm9ybUxhbmd1YWdlc0NvdW50
ID0gQ0ZBcnJheUdldENvdW50KHBsYXRmb3JtTGFuZ3VhZ2VzLmdldCgpKTsKICAgICBpZiAoIXBs
YXRmb3JtTGFuZ3VhZ2VzQ291bnQpCi0gICAgICAgIHJldHVybiB7ICJlbiJfcyB9OworICAgICAg
ICByZXR1cm4geyAiZW4iX3N0ciB9OwogCiAgICAgVmVjdG9yPFN0cmluZz4gbGFuZ3VhZ2VzOwog
ICAgIGxhbmd1YWdlcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KHBsYXRmb3JtTGFuZ3VhZ2VzQ291
bnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwIGIvU291
cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IDNhOTFhNjc3ZDVjMDM4ZTAzYjdj
NWViMzJmMzczM2JlZmMwOGNhNTUuLjM0ODVlOGZlYWNiZGZkZmVhMzE1NWM4YzMxNmE2NjhjYjNj
OTJhNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTkwNiw3ICs5MDYsNyBAQCBT
dHJpbmcqIHN0cmluZyhjb25zdCBjaGFyKiBzKQogVmVjdG9yPGNoYXI+IGFzY2lpRGVidWcoU3Ry
aW5nSW1wbCogaW1wbCkKIHsKICAgICBpZiAoIWltcGwpCi0gICAgICAgIHJldHVybiBhc2NpaURl
YnVnKFN0cmluZygiW251bGxdIl9zKS5pbXBsKCkpOworICAgICAgICByZXR1cm4gYXNjaWlEZWJ1
ZygiW251bGxdIl9zdHIuaW1wbCgpKTsKIAogICAgIFN0cmluZ0J1aWxkZXIgYnVmZmVyOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBpbXBsLT5sZW5ndGgoKTsgKytpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAppbmRleCA1MTFiOWMxNjRhMWE1OGMxMWQ0Y2ZkNTMyMWUzMmY1MjdiNGM5
ZWQ2Li4yZTY1MGU3YWUwNzdhZTMxMWY3OTg0M2EwOWVmMDdmZjNjZTQ4ZDFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvV1RGU3RyaW5nLmgKQEAgLTk5LDEwICs5OSw5IEBAIHB1YmxpYzoKICAgICAvLyBDb25zdHJ1
Y3QgYSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgogICAgIFdURl9FWFBP
UlRfUFJJVkFURSBTdHJpbmcoQVNDSUlMaXRlcmFsKTsKIAotICAgIC8vIENvbnN0cnVjdCBhIHN0
cmluZyBmcm9tIGEgY29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCi0gICAgLy8gVGhpcyBpcyB0aGUg
ImJpZyIgdmVyc2lvbjogcHV0cyB0aGUgbGVuZ3RoIGluIHRoZSBmdW5jdGlvbiBjYWxsIGFuZCBn
ZW5lcmF0ZXMgYmlnZ2VyIGNvZGUuCi0gICAgZW51bSBDb25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZyB7
IENvbnN0cnVjdEZyb21MaXRlcmFsIH07Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVy
Q291bnQ+IFN0cmluZyhjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyQ291bnRdLCBD
b25zdHJ1Y3RGcm9tTGl0ZXJhbFRhZykgOiBtX2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxp
dGVyYWw8Y2hhcmFjdGVyQ291bnQ+KGNoYXJhY3RlcnMpKSB7IH0KKyAgICAvLyBDb25zdHJ1Y3Qg
YSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLCB1c2UgInN0cmluZyJfc3Ry
IGluc3RlYWQgb2YgY2FsbGluZyB0aGlzIGNvbnN0cnVjdG9yIGRpcmVjdGx5LgorICAgIGVudW0g
Y2xhc3MgQ29uc3RydWN0RnJvbUxpdGVyYWwgeyBZZXMgfTsKKyAgICBTdHJpbmcoY29uc3QgY2hh
ciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkgOiBt
X2ltcGwoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoY2hhcmFjdGVycywgbGVuZ3RoKSkg
eyB9CiAKICAgICBTdHJpbmcoY29uc3QgU3RyaW5nJikgPSBkZWZhdWx0OwogICAgIFN0cmluZyhT
dHJpbmcmJikgPSBkZWZhdWx0OwpAQCAtNjI4LDkgKzYyNyw5IEBAIHRlbXBsYXRlPHVuc2lnbmVk
IGxlbmd0aD4gaW5saW5lIGJvb2wgc3RhcnRzV2l0aExldHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShj
b25zdCBTCiAKIGlubGluZSBuYW1lc3BhY2UgU3RyaW5nTGl0ZXJhbHMgewogCi1pbmxpbmUgU3Ry
aW5nIG9wZXJhdG9yIiIgX3N0cihjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QpCitpbmxp
bmUgU3RyaW5nIG9wZXJhdG9yIiIgX3N0cihjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3Qg
bGVuZ3RoKQogewotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6OmZyb21MaXRlcmFsVW5zYWZlKGNo
YXJhY3RlcnMpOworICAgIHJldHVybiBTdHJpbmcoY2hhcmFjdGVycywgbGVuZ3RoLCBTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsOjpZZXMpOwogfQogCiB9IC8vIGlubGluZSBTdHJpbmdMaXRl
cmFscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdW5peC9MYW5ndWFnZVVuaXguY3BwIGIv
U291cmNlL1dURi93dGYvdW5peC9MYW5ndWFnZVVuaXguY3BwCmluZGV4IGFmOTRiYjA2Y2MzOGRk
MmE4NTk1YmZiYjc3MTY5MGY5MmRiNDhhZTIuLmQ2OThlMDc4MTU3NzdlMGFhZTk3MzlmODc2ODMx
Nzk3YzQ5MTUyMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3VuaXgvTGFuZ3VhZ2VVbml4
LmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi91bml4L0xhbmd1YWdlVW5peC5jcHAKQEAgLTM0LDcg
KzM0LDcgQEAgc3RhdGljIFN0cmluZyBwbGF0Zm9ybUxhbmd1YWdlKCkKIHsKICAgICBTdHJpbmcg
bG9jYWxlRGVmYXVsdChzZXRsb2NhbGUoTENfQ1RZUEUsIG51bGxwdHIpKTsKICAgICBpZiAobG9j
YWxlRGVmYXVsdC5pc0VtcHR5KCkgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShsb2NhbGVEZWZh
dWx0LCAiQyIpIHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobG9jYWxlRGVmYXVsdCwgIlBPU0lY
IikpCi0gICAgICAgIHJldHVybiAiZW4tVVMiX3M7CisgICAgICAgIHJldHVybiAiZW4tVVMiX3N0
cjsKIAogICAgIFN0cmluZyBub3JtYWxpemVkRGVmYXVsdCA9IGxvY2FsZURlZmF1bHQ7CiAgICAg
bm9ybWFsaXplZERlZmF1bHQucmVwbGFjZSgnXycsICctJyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGVhMDZlY2U3YmM1
NjAyODAyOTU4NjQyYjM1ZWNiOWM5MTU1ODQ3NjIuLmNiNWFlYWFlNjY3NjcxYjU0MWVlZDQ2MWNj
ZjZkY2QxZTQ4M2MzMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yNTM1LDcgKzI1MzUsNyBAQCBzdWIgR2VuZXJhdGVE
ZWZhdWx0VmFsdWUKICAgICAgICAgICAgIGlmICgkZGVmYXVsdFZhbHVlIGVxICJcIlwiIikgewog
ICAgICAgICAgICAgICAgIHJldHVybiAkdXNlQXRvbVN0cmluZyA/ICJlbXB0eUF0b20oKSIgOiAi
ZW1wdHlTdHJpbmcoKSI7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJl
dHVybiAkdXNlQXRvbVN0cmluZyA/ICJBdG9tU3RyaW5nKCR7ZGVmYXVsdFZhbHVlfSwgQXRvbVN0
cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpIiA6ICIke2RlZmF1bHRWYWx1ZX1fcyI7CisgICAg
ICAgICAgICAgICAgcmV0dXJuICR1c2VBdG9tU3RyaW5nID8gIkF0b21TdHJpbmcoJHtkZWZhdWx0
VmFsdWV9LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkiIDogIiR7ZGVmYXVsdFZh
bHVlfV9zdHIiOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTc3MTUsNyArNzcxNSw3
IEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9yRGVmaW5pdGlvbgogICAgICAgICAgICAgIGlmICgk
b3BlcmF0aW9uLT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSkgewogICAg
ICAgICAgICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nID0gR2VuZXJh
dGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGludGVyZmFjZSwgJG9wZXJhdGlvbiwg
ImxleGljYWxHbG9iYWxPYmplY3QiKTsKICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGlmICghJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KSB7XG4iKTsK
LSAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICB0aHJvd1R5cGVF
cnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBcIklsbGVnYWwgY29uc3RydWN0
b3JcIl9zKTtcbiIpOworICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIHRocm93VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFwiSWxs
ZWdhbCBjb25zdHJ1Y3RvclwiX3N0cik7XG4iKTsKICAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTtcbiIp
OwogICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgfVxuIik7CiAgICAg
ICAgICAgICAgfQpAQCAtNzg3NCw3ICs3ODc0LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JI
ZWxwZXJNZXRob2RzCiAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKCR7bGVhc3RDb25zdHJ1
Y3Rvckxlbmd0aH0pLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTtcbiIpOwogICAgICAgICB9CiAKLSAgICAgICAgcHVz
aChAJG91dHB1dEFycmF5LCAiICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFs
U3RyaW5nKHZtLCBcIiR2aXNpYmxlSW50ZXJmYWNlTmFtZVwiX3MpO1xuIik7CisgICAgICAgIHB1
c2goQCRvdXRwdXRBcnJheSwgIiAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgXCIkdmlzaWJsZUludGVyZmFjZU5hbWVcIl9zdHIpO1xuIik7CiAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5h
bWVTdHJpbmcpO1xuIik7CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xu
Iik7CiAKQEAgLTgwOTgsNyArODA5OCw3IEBAIHN1YiBHZW5lcmF0ZUNhbGxUcmFjZXIoKQogICAg
IEFkZFRvSW1wbEluY2x1ZGVzKCRjYWxsVHJhY2VyIC4gIi5oIik7CiAKICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICRpbmRlbnQgLiAiaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlIiAuICRjYWxs
VHJhY2VyIC4gIigpKSlcbiIpOwotICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICIg
ICAgIiAuICRjYWxsVHJhY2VyIC4gIjo6cmVjb3JkQWN0aW9uKGltcGwsIFwiIiAuICRuYW1lIC4g
IlwiX3MiKTsKKyAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiICAgICIgLiAkY2Fs
bFRyYWNlciAuICI6OnJlY29yZEFjdGlvbihpbXBsLCBcIiIgLiAkbmFtZSAuICJcIl9zdHIiKTsK
ICAgICBpZiAoc2NhbGFyKEAkYXJndW1lbnRzKSkgewogICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIsIHsgIiAuIGpvaW4oIiwgIiwgbWFwIHsgJGNhbGxUcmFjZXIgLiAiOjpwcm9jZXNzQXJn
dW1lbnQoaW1wbCwgIiAuICRfIC4gIikiIH0gQCRhcmd1bWVudHMpIC4gIiB9Iik7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcAppbmRleCBkZTQ1OWRkODk2MGM3ODY1
NDQ2NzAzOTM3YThlODYxYzBmZGY2NjliLi41ZThmMzcyYTBiMTNiNTRkZmE2MTA5MzEyOTc2ODc4
MGFhY2FmZGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udEZhY2VSdWxlLmNwcApAQCAtNTIs
NyArNTIsNyBAQCBTdHJpbmcgQ1NTRm9udEZhY2VSdWxlOjpjc3NUZXh0KCkgY29uc3QKIHsKICAg
ICBTdHJpbmcgZGVjbGFyYXRpb25zID0gbV9mb250RmFjZVJ1bGUtPnByb3BlcnRpZXMoKS5hc1Rl
eHQoKTsKICAgICBpZiAoZGVjbGFyYXRpb25zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuICJA
Zm9udC1mYWNlIHsgfSJfczsKKyAgICAgICAgcmV0dXJuICJAZm9udC1mYWNlIHsgfSJfc3RyOwog
ICAgIHJldHVybiBtYWtlU3RyaW5nKCJAZm9udC1mYWNlIHsgIiwgZGVjbGFyYXRpb25zLCAiIH0i
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFs
dWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxl
LmNwcAppbmRleCBlNGMyYTBkOWE2MjI3NTg4NTYxYzNlYTgzZDZjZWZkYTIwNzViMWEzLi40OWEz
NGFlOTlkYmYwYmJlM2QzNTE5ZGZhMTIzM2JjYzhiYjA3ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlLmNwcApAQCAtNjMsOSArNjMsOSBAQCBT
dHJpbmcgQ1NTRm9udFBhbGV0dGVWYWx1ZXNSdWxlOjpiYXNlUGFsZXR0ZSgpIGNvbnN0CiAKICAg
ICBzd2l0Y2ggKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxlLT5iYXNlUGFsZXR0ZSgpLT50eXBlKSB7
CiAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpMaWdodDoKLSAgICAgICAgcmV0dXJu
ICJsaWdodCJfczsKKyAgICAgICAgcmV0dXJuICJsaWdodCJfc3RyOwogICAgIGNhc2UgRm9udFBh
bGV0dGVJbmRleDo6VHlwZTo6RGFyazoKLSAgICAgICAgcmV0dXJuICJkYXJrIl9zOworICAgICAg
ICByZXR1cm4gImRhcmsiX3N0cjsKICAgICBjYXNlIEZvbnRQYWxldHRlSW5kZXg6OlR5cGU6Oklu
dGVnZXI6CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG1fZm9udFBhbGV0dGVWYWx1ZXNSdWxl
LT5iYXNlUGFsZXR0ZSgpLT5pbnRlZ2VyKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTS2V5
ZnJhbWVzUnVsZS5jcHAKaW5kZXggYTE2ZTZjY2RiNzVlZmY4Y2FlNjk3Mzg4NWUzYWExNGFiODU1
NTQ3MC4uMGJkMTc0MGJhNWNjM2M2MzY2ZjgxZGY4YTY4NDZjYmM0ODk1NDMzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQg
Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZShjb25zdCBTdHJpbmcmIHJ1bGVUZXh0KQogewog
ICAgIGlmIChDU1NTdHlsZVNoZWV0KiBwYXJlbnQgPSBwYXJlbnRTdHlsZVNoZWV0KCkpIHsKICAg
ICAgICAgaWYgKERvY3VtZW50KiBvd25lckRvY3VtZW50ID0gcGFyZW50LT5vd25lckRvY3VtZW50
KCkpCi0gICAgICAgICAgICBvd25lckRvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCAiQ1NTS2V5ZnJhbWVzUnVsZSAnaW5z
ZXJ0UnVsZScgZnVuY3Rpb24gaXMgZGVwcmVjYXRlZC4gIFVzZSAnYXBwZW5kUnVsZScgaW5zdGVh
ZC4iX3MpOworICAgICAgICAgICAgb3duZXJEb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIkNTU0tleWZyYW1lc1J1bGUg
J2luc2VydFJ1bGUnIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuICBVc2UgJ2FwcGVuZFJ1bGUnIGlu
c3RlYWQuIl9zdHIpOwogICAgIH0KICAgICBhcHBlbmRSdWxlKHJ1bGVUZXh0KTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCmluZGV4IGQxZjZkMGE1MTVhNWRiOWRiNzUwY2JmMWUyZjc5
ZDRhOWYwZjJmNTQuLmQ5NGNmYThhNWIzMTlkZWU2NjEyZTc4MjFjYzkyOWJhMmVjN2E5NmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhZ2VSdWxlLmNwcApAQCAtNTgsNyArNTgsNyBAQCBTdHJpbmcgQ1NT
UGFnZVJ1bGU6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAgICAgIGlmICghcGFnZVNwZWNpZmlj
YXRpb24uaXNFbXB0eSgpICYmIHBhZ2VTcGVjaWZpY2F0aW9uICE9IHN0YXJBdG9tKCkpCiAgICAg
ICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiQHBhZ2UgIiwgcGFnZVNwZWNpZmljYXRpb24pOwog
ICAgIH0KLSAgICByZXR1cm4gIkBwYWdlIl9zOworICAgIHJldHVybiAiQHBhZ2UiX3N0cjsKIH0K
IAogdm9pZCBDU1NQYWdlUnVsZTo6c2V0U2VsZWN0b3JUZXh0KGNvbnN0IFN0cmluZyYgc2VsZWN0
b3JUZXh0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCmluZGV4IGI0YmY5ZjM0YTg5
NTc3YThjMDc5MGNlODhmYThhNDRiOWM4MDZiOWYuLjFjOTdlZWFiNjQ2MjFlMTQ1ODgyZTFhZWVk
ODgzNWRkNDIwMGUzNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNo
ZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5jcHAKQEAgLTMx
Niw3ICszMTYsNyBAQCBFeGNlcHRpb25PcjxSZWY8Q1NTUnVsZUxpc3Q+PiBDU1NTdHlsZVNoZWV0
Ojpjc3NSdWxlc0ZvckJpbmRpbmdzKCkKIHsKICAgICBhdXRvIGNzc1J1bGVzID0gdGhpcy0+Y3Nz
UnVsZXMoKTsKICAgICBpZiAoIWNzc1J1bGVzKQotICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
U2VjdXJpdHlFcnJvciwgIk5vdCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmlnaW4gc3R5bGVz
aGVldCJfcyB9OworICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIk5v
dCBhbGxvd2VkIHRvIGFjY2VzcyBjcm9zcy1vcmlnaW4gc3R5bGVzaGVldCJfc3RyIH07CiAgICAg
cmV0dXJuIGNzc1J1bGVzLnJlbGVhc2VOb25OdWxsKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmggYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTaGVldC5oCmluZGV4IGI0ZjNkODc4ZDc1YWFlN2MxM2M2YzViMzdmMTFjYTM3OTlmNjFkMzAu
LmZhYzA2NjEzNzY4NzhmOTljMGE5YTI4NWFlZmRiMjhlODVlNzM1NWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2hlZXQuaApAQCAtMTM4LDcgKzEzOCw3IEBAIHByaXZhdGU6CiAgICAgQ1NTU3R5
bGVTaGVldChSZWY8U3R5bGVTaGVldENvbnRlbnRzPiYmLCBOb2RlJiBvd25lck5vZGUsIGNvbnN0
IFRleHRQb3NpdGlvbiYgc3RhcnRQb3NpdGlvbiwgYm9vbCBpc0lubGluZVN0eWxlc2hlZXQsIGNv
bnN0IHN0ZDo6b3B0aW9uYWw8Ym9vbD4mKTsKIAogICAgIGJvb2wgaXNDU1NTdHlsZVNoZWV0KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotICAgIFN0cmluZyB0eXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gInRleHQvY3NzIl9zOyB9CisgICAgU3RyaW5nIHR5cGUoKSBjb25zdCBmaW5h
bCB7IHJldHVybiAidGV4dC9jc3MiX3N0cjsgfQogCiAgICAgUmVmPFN0eWxlU2hlZXRDb250ZW50
cz4gbV9jb250ZW50czsKICAgICBib29sIG1faXNJbmxpbmVTdHlsZXNoZWV0IHsgZmFsc2UgfTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKaW5kZXggMmIyNDMzZjcyNjEyMDNiNjZhOTVk
Yjc1YjI0OTUwYzdlMGZkOGFmMS4uMDNlMWNkNDM3ZjhlNDUzNGY3MWFjYjVjOGI1ODhjMzcwMmJj
ZWFjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlTGlzdC5jcHAKQEAgLTg4LDcgKzg4LDcgQEAg
U3RyaW5nIENTU1ZhbHVlTGlzdDo6Y3VzdG9tQ1NTVGV4dCgpIGNvbnN0CiAgICAgU3RyaW5nQnVp
bGRlciByZXN1bHQ7CiAgICAgYXV0byBzZXBhcmF0b3IgPSBzZXBhcmF0b3JDU1NUZXh0KCk7CiAg
ICAgZm9yIChhdXRvJiB2YWx1ZSA6IG1fdmFsdWVzKQotICAgICAgICByZXN1bHQuYXBwZW5kKHJl
c3VsdC5pc0VtcHR5KCkgPyAiIl9zIDogc2VwYXJhdG9yLCB2YWx1ZS5nZXQoKS5jc3NUZXh0KCkp
OworICAgICAgICByZXN1bHQuYXBwZW5kKHJlc3VsdC5pc0VtcHR5KCkgPyBlbXB0eVN0cmluZygp
IDogc2VwYXJhdG9yLCB2YWx1ZS5nZXQoKS5jc3NUZXh0KCkpOwogICAgIHJldHVybiByZXN1bHQu
dG9TdHJpbmcoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5jcHAKaW5kZXggZWZmZDYwN2MzNDZm
OWJjZmJjOWMyODg5YmY4MzE2OTRkYTM0MDMwNS4uYzIwMzQ5YjA1NDU0MTI0MDc4NzNjM2VmMWM3
Mzg4MjQ5OThkNzY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCkBAIC0xMDIsMzIgKzEwMiwz
MiBAQCBSZWY8Rm9udEZhY2U+IEZvbnRGYWNlOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBmYQogICAgIH0KIAogICAgIC8vIFRoZXNlIHRlcm5h
cmllcyBtYXRjaCB0aGUgZGVmYXVsdCBzdHJpbmdzIGluc2lkZSB0aGUgRm9udEZhY2VEZXNjcmlw
dG9ycyBkaWN0aW9uYXJ5IGluc2lkZSBGb250RmFjZS5pZGwuCi0gICAgYXV0byBzZXRTdHlsZVJl
c3VsdCA9IHJlc3VsdC0+c2V0U3R5bGUoY29udGV4dCwgZGVzY3JpcHRvcnMuc3R5bGUuaXNFbXB0
eSgpID8gIm5vcm1hbCJfcyA6IGRlc2NyaXB0b3JzLnN0eWxlKTsKKyAgICBhdXRvIHNldFN0eWxl
UmVzdWx0ID0gcmVzdWx0LT5zZXRTdHlsZShjb250ZXh0LCBkZXNjcmlwdG9ycy5zdHlsZS5pc0Vt
cHR5KCkgPyAibm9ybWFsIl9zdHIgOiBkZXNjcmlwdG9ycy5zdHlsZSk7CiAgICAgaWYgKHNldFN0
eWxlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0RXJyb3JTdGF0
ZSgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBhdXRvIHNldFdlaWdodFJl
c3VsdCA9IHJlc3VsdC0+c2V0V2VpZ2h0KGNvbnRleHQsIGRlc2NyaXB0b3JzLndlaWdodC5pc0Vt
cHR5KCkgPyAibm9ybWFsIl9zIDogZGVzY3JpcHRvcnMud2VpZ2h0KTsKKyAgICBhdXRvIHNldFdl
aWdodFJlc3VsdCA9IHJlc3VsdC0+c2V0V2VpZ2h0KGNvbnRleHQsIGRlc2NyaXB0b3JzLndlaWdo
dC5pc0VtcHR5KCkgPyAibm9ybWFsIl9zdHIgOiBkZXNjcmlwdG9ycy53ZWlnaHQpOwogICAgIGlm
IChzZXRXZWlnaHRSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVzdWx0LT5zZXRF
cnJvclN0YXRlKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIGF1dG8gc2V0
U3RyZXRjaFJlc3VsdCA9IHJlc3VsdC0+c2V0U3RyZXRjaChjb250ZXh0LCBkZXNjcmlwdG9ycy5z
dHJldGNoLmlzRW1wdHkoKSA/ICJub3JtYWwiX3MgOiBkZXNjcmlwdG9ycy5zdHJldGNoKTsKKyAg
ICBhdXRvIHNldFN0cmV0Y2hSZXN1bHQgPSByZXN1bHQtPnNldFN0cmV0Y2goY29udGV4dCwgZGVz
Y3JpcHRvcnMuc3RyZXRjaC5pc0VtcHR5KCkgPyAibm9ybWFsIl9zdHIgOiBkZXNjcmlwdG9ycy5z
dHJldGNoKTsKICAgICBpZiAoc2V0U3RyZXRjaFJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAg
ICAgICByZXN1bHQtPnNldEVycm9yU3RhdGUoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAg
ICB9Ci0gICAgYXV0byBzZXRVbmljb2RlUmFuZ2VSZXN1bHQgPSByZXN1bHQtPnNldFVuaWNvZGVS
YW5nZShjb250ZXh0LCBkZXNjcmlwdG9ycy51bmljb2RlUmFuZ2UuaXNFbXB0eSgpID8gIlUrMC0x
MEZGRkYiX3MgOiBkZXNjcmlwdG9ycy51bmljb2RlUmFuZ2UpOworICAgIGF1dG8gc2V0VW5pY29k
ZVJhbmdlUmVzdWx0ID0gcmVzdWx0LT5zZXRVbmljb2RlUmFuZ2UoY29udGV4dCwgZGVzY3JpcHRv
cnMudW5pY29kZVJhbmdlLmlzRW1wdHkoKSA/ICJVKzAtMTBGRkZGIl9zdHIgOiBkZXNjcmlwdG9y
cy51bmljb2RlUmFuZ2UpOwogICAgIGlmIChzZXRVbmljb2RlUmFuZ2VSZXN1bHQuaGFzRXhjZXB0
aW9uKCkpIHsKICAgICAgICAgcmVzdWx0LT5zZXRFcnJvclN0YXRlKCk7CiAgICAgICAgIHJldHVy
biByZXN1bHQ7CiAgICAgfQotICAgIGF1dG8gc2V0RmVhdHVyZVNldHRpbmdzUmVzdWx0ID0gcmVz
dWx0LT5zZXRGZWF0dXJlU2V0dGluZ3MoY29udGV4dCwgZGVzY3JpcHRvcnMuZmVhdHVyZVNldHRp
bmdzLmlzRW1wdHkoKSA/ICJub3JtYWwiX3MgOiBkZXNjcmlwdG9ycy5mZWF0dXJlU2V0dGluZ3Mp
OworICAgIGF1dG8gc2V0RmVhdHVyZVNldHRpbmdzUmVzdWx0ID0gcmVzdWx0LT5zZXRGZWF0dXJl
U2V0dGluZ3MoY29udGV4dCwgZGVzY3JpcHRvcnMuZmVhdHVyZVNldHRpbmdzLmlzRW1wdHkoKSA/
ICJub3JtYWwiX3N0ciA6IGRlc2NyaXB0b3JzLmZlYXR1cmVTZXR0aW5ncyk7CiAgICAgaWYgKHNl
dEZlYXR1cmVTZXR0aW5nc1Jlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICByZXN1bHQt
PnNldEVycm9yU3RhdGUoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgYXV0
byBzZXREaXNwbGF5UmVzdWx0ID0gcmVzdWx0LT5zZXREaXNwbGF5KGNvbnRleHQsIGRlc2NyaXB0
b3JzLmRpc3BsYXkuaXNFbXB0eSgpID8gImF1dG8iX3MgOiBkZXNjcmlwdG9ycy5kaXNwbGF5KTsK
KyAgICBhdXRvIHNldERpc3BsYXlSZXN1bHQgPSByZXN1bHQtPnNldERpc3BsYXkoY29udGV4dCwg
ZGVzY3JpcHRvcnMuZGlzcGxheS5pc0VtcHR5KCkgPyAiYXV0byJfc3RyIDogZGVzY3JpcHRvcnMu
ZGlzcGxheSk7CiAgICAgaWYgKHNldERpc3BsYXlSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgcmVzdWx0LT5zZXRFcnJvclN0YXRlKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CkBA
IC0yNzEsNyArMjcxLDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpmYW1pbHkoKSBjb25zdAogCiAgICAg
Y29uc3QgYXV0byYgZmFtaWxpZXMgPSBtX2JhY2tpbmctPmZhbWlsaWVzKCk7CiAgICAgaWYgKCFm
YW1pbGllcykKLSAgICAgICAgcmV0dXJuICJub3JtYWwiX3M7CisgICAgICAgIHJldHVybiAibm9y
bWFsIl9zdHI7CiAgICAgYXV0byBmYW1pbGllc1VucndhcHBlZCA9IGZhbWlsaWVzLnZhbHVlKCk7
CiAgICAgLy8gRklYTUU6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
OTYzODEgVGhpcyBpcyBvbmx5IGhlcmUgYmVjYXVzZSBDU1NGb250RmFjZSBlcnJvbmVvdXNseSB1
c2VzIGEgbGlzdCBvZiB2YWx1ZXMgaW5zdGVhZCBvZiBhIHNpbmdsZSB2YWx1ZS4KICAgICAvLyBT
ZWUgY29uc3VtZUZvbnRGYW1pbHlEZXNjcmlwdG9yKCkgaW4gQ1NTUHJvcGVydHlQYXJzZXIuY3Bw
LgpAQCAtMjk2LDcgKzI5Niw3IEBAIFN0cmluZyBGb250RmFjZTo6c3R5bGUoKSBjb25zdAogICAg
IGNvbnN0IGF1dG8mIHN0eWxlV3JhcHBlZCA9IG1fYmFja2luZy0+aXRhbGljKCk7CiAgICAgCiAg
ICAgaWYgKCFzdHlsZVdyYXBwZWQpCi0gICAgICAgIHJldHVybiAibm9ybWFsIl9zOworICAgICAg
ICByZXR1cm4gIm5vcm1hbCJfc3RyOwogICAgIGF1dG8gc3R5bGUgPSBzdHlsZVdyYXBwZWQudmFs
dWUoKTsKICAgICBhdXRvIG1pbmltdW0gPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250U3R5
bGVGcm9tU3R5bGVWYWx1ZShzdHlsZS5taW5pbXVtLCBGb250U3R5bGVBeGlzOjppdGFsKTsKICAg
ICBhdXRvIG1heGltdW0gPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250U3R5bGVGcm9tU3R5
bGVWYWx1ZShzdHlsZS5tYXhpbXVtLCBGb250U3R5bGVBeGlzOjppdGFsKTsKQEAgLTMyOSw3ICsz
MjksNyBAQCBTdHJpbmcgRm9udEZhY2U6OndlaWdodCgpIGNvbnN0CiAgICAgbV9iYWNraW5nLT51
cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgY29uc3QgYXV0byYgd2VpZ2h0V3JhcHBlZCA9IG1f
YmFja2luZy0+d2VpZ2h0KCk7CiAgICAgaWYgKCF3ZWlnaHRXcmFwcGVkKQotICAgICAgICByZXR1
cm4gIm5vcm1hbCJfczsKKyAgICAgICAgcmV0dXJuICJub3JtYWwiX3N0cjsKICAgICBhdXRvIHdl
aWdodCA9IHdlaWdodFdyYXBwZWQudmFsdWUoKTsKICAgICBhdXRvIG1pbmltdW0gPSBDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjpmb250V2VpZ2h0RnJvbVN0eWxlVmFsdWUod2VpZ2h0Lm1pbmltdW0p
OwogICAgIGF1dG8gbWF4aW11bSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmZvbnRXZWlnaHRG
cm9tU3R5bGVWYWx1ZSh3ZWlnaHQubWF4aW11bSk7CkBAIC0zNTIsNyArMzUyLDcgQEAgU3RyaW5n
IEZvbnRGYWNlOjpzdHJldGNoKCkgY29uc3QKICAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKICAgICBjb25zdCBhdXRvJiBzdHJldGNoV3JhcHBlZCA9IG1fYmFja2luZy0+c3Ry
ZXRjaCgpOwogICAgIGlmICghc3RyZXRjaFdyYXBwZWQpCi0gICAgICAgIHJldHVybiAibm9ybWFs
Il9zOworICAgICAgICByZXR1cm4gIm5vcm1hbCJfc3RyOwogICAgIGF1dG8gc3RyZXRjaCA9IHN0
cmV0Y2hXcmFwcGVkLnZhbHVlKCk7CiAgICAgYXV0byBtaW5pbXVtID0gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6Zm9udFN0cmV0Y2hGcm9tU3R5bGVWYWx1ZShzdHJldGNoLm1pbmltdW0pOwogICAg
IGF1dG8gbWF4aW11bSA9IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmZvbnRTdHJldGNoRnJvbVN0
eWxlVmFsdWUoc3RyZXRjaC5tYXhpbXVtKTsKQEAgLTM3OCw3ICszNzgsNyBAQCBTdHJpbmcgRm9u
dEZhY2U6OnVuaWNvZGVSYW5nZSgpIGNvbnN0CiAgICAgICAgIHJldHVybiAiVSswLTEwRkZGRiI7
CiAgICAgYXV0byByYW5nZXMgPSByYW5nZXNXcmFwcGVkLnZhbHVlKCk7CiAgICAgaWYgKCFyYW5n
ZXMuc2l6ZSgpKQotICAgICAgICByZXR1cm4gIlUrMC0xMEZGRkYiX3M7CisgICAgICAgIHJldHVy
biAiVSswLTEwRkZGRiJfc3RyOwogICAgIGF1dG8gdmFsdWVzID0gQ1NTVmFsdWVMaXN0OjpjcmVh
dGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgcmFuZ2UgOiByYW5nZXMpCiAgICAg
ICAgIHZhbHVlcy0+YXBwZW5kKENTU1VuaWNvZGVSYW5nZVZhbHVlOjpjcmVhdGUocmFuZ2UuZnJv
bSwgcmFuZ2UudG8pKTsKQEAgLTM5MCwxMCArMzkwLDEwIEBAIFN0cmluZyBGb250RmFjZTo6ZmVh
dHVyZVNldHRpbmdzKCkgY29uc3QKICAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVkZWQo
KTsKICAgICBjb25zdCBhdXRvJiBmZWF0dXJlU2V0dGluZ3NXcmFwcGVkID0gbV9iYWNraW5nLT5m
ZWF0dXJlU2V0dGluZ3MoKTsKICAgICBpZiAoIWZlYXR1cmVTZXR0aW5nc1dyYXBwZWQpCi0gICAg
ICAgIHJldHVybiAibm9ybWFsIl9zOworICAgICAgICByZXR1cm4gIm5vcm1hbCJfc3RyOwogICAg
IGF1dG8gZmVhdHVyZVNldHRpbmdzID0gZmVhdHVyZVNldHRpbmdzV3JhcHBlZC52YWx1ZSgpOwog
ICAgIGlmICghZmVhdHVyZVNldHRpbmdzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuICJub3JtYWwi
X3M7CisgICAgICAgIHJldHVybiAibm9ybWFsIl9zdHI7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFs
dWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgpOwogICAgIGZvciAoYXV0byYgZmVhdHVyZSA6
IGZlYXR1cmVTZXR0aW5ncykKICAgICAgICAgbGlzdC0+YXBwZW5kKENTU0ZvbnRGZWF0dXJlVmFs
dWU6OmNyZWF0ZShGb250VGFnKGZlYXR1cmUudGFnKCkpLCBmZWF0dXJlLnZhbHVlKCkpKTsKQEAg
LTQwNSw3ICs0MDUsNyBAQCBTdHJpbmcgRm9udEZhY2U6OmRpc3BsYXkoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBtX2JhY2tpbmctPnVwZGF0ZVN0eWxlSWZOZWVk
ZWQoKTsKICAgICBjb25zdCBhdXRvJiBsb2FkaW5nQmVoYXZpb3JXcmFwcGVkID0gbV9iYWNraW5n
LT5sb2FkaW5nQmVoYXZpb3IoKTsKICAgICBpZiAoIWxvYWRpbmdCZWhhdmlvcldyYXBwZWQpCi0g
ICAgICAgIHJldHVybiAiYXV0byJfczsKKyAgICAgICAgcmV0dXJuICJhdXRvIl9zdHI7CiAgICAg
cmV0dXJuIGNvbnRleHQuY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUobG9hZGluZ0JlaGF2aW9y
V3JhcHBlZC52YWx1ZSgpKS0+Y3NzVGV4dCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9jc3MvTWVkaWFRdWVyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5j
cHAKaW5kZXggNDk3OTBkMzZhMWVhMGQ2ZDNjNzZhMGI2YjM2NmJlYjJiYThhYWNhYy4uMGEwNGUx
NGU5ZThkOTRhMDU1ZTBjZGFkZjdhMGQ5NDE2ZDc3MzhmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5LmNwcApAQCAtMzksNyArMzksNyBAQCBTdHJpbmcgTWVkaWFRdWVyeTo6c2VyaWFsaXplKCkg
Y29uc3QKIHsKICAgICBpZiAobV9pZ25vcmVkKSB7CiAgICAgICAgIC8vIElmIHF1ZXJ5IGlzIGlu
dmFsaWQsIHNlcmlhbGl6ZWQgdGV4dCBzaG91bGQgdHVybiBpbnRvICJub3QgYWxsIi4KLSAgICAg
ICAgcmV0dXJuICJub3QgYWxsIl9zOworICAgICAgICByZXR1cm4gIm5vdCBhbGwiX3N0cjsKICAg
ICB9CiAKICAgICBib29sIHNob3VsZE9taXRNZWRpYVR5cGUgPSBmYWxzZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKaW5k
ZXggMTU3Y2JiMDdkNjBiNmZkZWJkNzFkM2Y5OTlhNTA4M2YxYzM0NjRkMy4uOTU1ZjY4Y2ZjYzc5
NjMwZGIxZmQ5ZTQ2Mzc5Mjg2MGI0OGY5ZTkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTIwNSwxMiArMjA1
LDEyIEBAIFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5
VmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wZXJ0eU5hCiBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHls
ZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlO
YW1lKQogewogICAgIGlmIChpc0N1c3RvbVByb3BlcnR5TmFtZShwcm9wZXJ0eU5hbWUpKQotICAg
ICAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+Y3VzdG9tUHJvcGVydHlJc0ltcG9ydGFudChwcm9w
ZXJ0eU5hbWUpID8gImltcG9ydGFudCJfcyA6IGVtcHR5U3RyaW5nKCk7CisgICAgICAgIHJldHVy
biBtX3Byb3BlcnR5U2V0LT5jdXN0b21Qcm9wZXJ0eUlzSW1wb3J0YW50KHByb3BlcnR5TmFtZSkg
PyAiaW1wb3J0YW50Il9zdHIgOiBlbXB0eVN0cmluZygpOwogCiAgICAgQ1NTUHJvcGVydHlJRCBw
cm9wZXJ0eUlEID0gY3NzUHJvcGVydHlJRChwcm9wZXJ0eU5hbWUpOwogICAgIGlmICghcHJvcGVy
dHlJRCkKICAgICAgICAgcmV0dXJuIGVtcHR5U3RyaW5nKCk7Ci0gICAgcmV0dXJuIG1fcHJvcGVy
dHlTZXQtPnByb3BlcnR5SXNJbXBvcnRhbnQocHJvcGVydHlJRCkgPyAiaW1wb3J0YW50Il9zIDog
ZW1wdHlTdHJpbmcoKTsKKyAgICByZXR1cm4gbV9wcm9wZXJ0eVNldC0+cHJvcGVydHlJc0ltcG9y
dGFudChwcm9wZXJ0eUlEKSA/ICJpbXBvcnRhbnQiX3N0ciA6IGVtcHR5U3RyaW5nKCk7CiB9CiAK
IFN0cmluZyBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5U2hvcnRo
YW5kKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcAppbmRleCBmMDQxM2MxN2ZmZmEyODM4MTFmZTI1MTdmZGZkNjFiY2RjZjhiMjU5
Li4xNjExZWIyZjA1N2VjZjI3MThjMmRjOTk3ZTkzMjhkNjI3ZGEwOGQ3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApAQCAtMTAwMCw3ICsxMDAwLDcgQEAgU3RyaW5nIFN0
eWxlUHJvcGVydGllczo6cGFnZUJyZWFrUHJvcGVydHlWYWx1ZShjb25zdCBTdHlsZVByb3BlcnR5
U2hvcnRoYW5kJiBzaG8KICAgICBDU1NWYWx1ZUlEIHZhbHVlSWQgPSBkb3duY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZT4oKnZhbHVlKS52YWx1ZUlEKCk7CiAgICAgc3dpdGNoICh2YWx1ZUlkKSB7CiAg
ICAgY2FzZSBDU1NWYWx1ZVBhZ2U6Ci0gICAgICAgIHJldHVybiAiYWx3YXlzIl9zOworICAgICAg
ICByZXR1cm4gImFsd2F5cyJfc3RyOwogICAgIGNhc2UgQ1NTVmFsdWVBdXRvOgogICAgIGNhc2Ug
Q1NTVmFsdWVBdm9pZDoKICAgICBjYXNlIENTU1ZhbHVlTGVmdDoKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9w
YXJzZXIvQ1NTUGFyc2VyLmNwcAppbmRleCA5ZGRlYzE0NzZiOTdiMzc5MTcwODk5MDBjMzIyZjNm
YzdiNGEzZjgzLi5mNzI5MjRlMTQ2ZTRiOTliYWE5OTQxZjlmYzc3NWVlMjNmZWUyMDYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCkBAIC0yMzMsNyArMjMzLDcgQEAg
UmVmUHRyPENTU1ZhbHVlPiBDU1NQYXJzZXI6OnBhcnNlVmFsdWVXaXRoVmFyaWFibGVSZWZlcmVu
Y2VzKENTU1Byb3BlcnR5SUQgcHJvcEkKIAogICAgIGF1dG8mIG5hbWUgPSBkb3duY2FzdDxDU1ND
dXN0b21Qcm9wZXJ0eVZhbHVlPih2YWx1ZSkubmFtZSgpOwogICAgIGF1dG8qIHJlZ2lzdGVyZWQg
PSBidWlsZGVyU3RhdGUuZG9jdW1lbnQoKS5nZXRDU1NSZWdpc3RlcmVkQ3VzdG9tUHJvcGVydHlT
ZXQoKS5nZXQobmFtZSk7Ci0gICAgYXV0byYgc3ludGF4ID0gcmVnaXN0ZXJlZCA/IHJlZ2lzdGVy
ZWQtPnN5bnRheCA6ICIqIl9zOworICAgIGF1dG8mIHN5bnRheCA9IHJlZ2lzdGVyZWQgPyByZWdp
c3RlcmVkLT5zeW50YXggOiAiKiJfc3RyOwogICAgIGF1dG8gcmVzb2x2ZWREYXRhID0gdmFsdWVX
aXRoUmVmZXJlbmNlcy5yZXNvbHZlVmFyaWFibGVSZWZlcmVuY2VzKGJ1aWxkZXJTdGF0ZSk7CiAg
ICAgaWYgKCFyZXNvbHZlZERhdGEpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAKaW5kZXggY2I1YTA4YWEz
ZWI3ZDZiOGM4MjU3ZGM4NDhkY2VjMTEzNDE5YzljZC4uZWRjZjczNzFhM2E5MTE5YzFiNmQ3NzI4
NjM0OGE2OTNiMzk0ZTEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9N
ZWRpYVF1ZXJ5UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlh
UXVlcnlQYXJzZXIuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdm9pZCBNZWRpYVF1ZXJ5UGFyc2Vy
Ojpjb21taXRNZWRpYVF1ZXJ5KCkKIHsKICAgICAvLyBGSVhNRS1ORVdQQVJTRVI6IENvbnZvbHV0
ZWQgYW5kIGF3ZnVsLCBidXQgd2UgY2FuJ3QgY2hhbmdlIHRoZSBNZWRpYVF1ZXJ5U2V0IHlldCBi
ZWNhdXNlIG9mIHRoZQogICAgIC8vIG9sZCBwYXJzZXIuCi0gICAgc3RhdGljIGNvbnN0IE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gZGVmYXVsdE1lZGlhVHlwZSB7ICJhbGwiX3MgfTsKKyAgICBzdGF0
aWMgY29uc3QgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBkZWZhdWx0TWVkaWFUeXBlIHsgImFsbCJf
c3RyIH07CiAgICAgTWVkaWFRdWVyeSBtZWRpYVF1ZXJ5IHsgbV9tZWRpYVF1ZXJ5RGF0YS5yZXN0
cmljdG9yKCksIG1fbWVkaWFRdWVyeURhdGEubWVkaWFUeXBlKCkudmFsdWVfb3IoZGVmYXVsdE1l
ZGlhVHlwZSksIFdURk1vdmUobV9tZWRpYVF1ZXJ5RGF0YS5leHByZXNzaW9ucygpKSB9OwogICAg
IG1fbWVkaWFRdWVyeURhdGEuY2xlYXIoKTsKICAgICBtX3F1ZXJ5U2V0LT5hZGRNZWRpYVF1ZXJ5
KFdURk1vdmUobWVkaWFRdWVyeSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0NE
QVRBU2VjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9uLmNwcAppbmRl
eCA3NTRmNDgyODhmZTE5NmEzZDI4MmEyOTZkODc4ZDIzMzRkMzk3ODRiLi45M2RiNWNlZjIwNzk1
NTFiMDg5ZDAyN2NhM2E3ZTJlNWFkYjgzZmYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vQ0RBVEFTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ0RBVEFTZWN0aW9u
LmNwcApAQCAtNDEsNyArNDEsNyBAQCBSZWY8Q0RBVEFTZWN0aW9uPiBDREFUQVNlY3Rpb246OmNy
ZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgZGF0YSkKIAogU3RyaW5nIENE
QVRBU2VjdGlvbjo6bm9kZU5hbWUoKSBjb25zdAogewotICAgIHJldHVybiAiI2NkYXRhLXNlY3Rp
b24iX3M7CisgICAgcmV0dXJuICIjY2RhdGEtc2VjdGlvbiJfc3RyOwogfQogCiBOb2RlOjpOb2Rl
VHlwZSBDREFUQVNlY3Rpb246Om5vZGVUeXBlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db21tZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcApp
bmRleCA4YTNlMzJmNzczOTM0OTFmMjUzMjIzMDdkZDE2NDhmZWMxNmViZjliLi4yMTIzOWQwZmQ3
MTlmMzNmYmMyNjExZjgzMTVlMDY0YjJkZWExYmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29tbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbW1lbnQuY3BwCkBA
IC00MSw3ICs0MSw3IEBAIFJlZjxDb21tZW50PiBDb21tZW50OjpjcmVhdGUoRG9jdW1lbnQmIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQpCiAKIFN0cmluZyBDb21tZW50Ojpub2RlTmFtZSgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuICIjY29tbWVudCJfczsKKyAgICByZXR1cm4gIiNjb21tZW50
Il9zdHI7CiB9CiAKIE5vZGU6Ok5vZGVUeXBlIENvbW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwCmluZGV4IDU4NDM1YmMzZmNhZDNj
ZGE3ODk3MGEyMTFlNzYyYmZjY2YwMTJmNzUuLjZlMGFhNTMzNWRlMDA5N2NjOWM0NTVjZDhkMzUx
MzBjNzliMjQ4YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRh
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcApA
QCAtMTI3LDcgKzEyNyw3IEBAIFJlZjxIVE1MRG9jdW1lbnQ+IERPTUltcGxlbWVudGF0aW9uOjpj
cmVhdGVIVE1MRG9jdW1lbnQoY29uc3QgU3RyaW5nJiB0aXRsZSkKIHsKICAgICBhdXRvIGRvY3Vt
ZW50ID0gSFRNTERvY3VtZW50OjpjcmVhdGUobnVsbHB0ciwgbV9kb2N1bWVudC5zZXR0aW5ncygp
LCBVUkwoKSwgeyB9KTsKICAgICBkb2N1bWVudC0+b3BlbigpOwotICAgIGRvY3VtZW50LT53cml0
ZShudWxscHRyLCB7ICI8IWRvY3R5cGUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PC9i
b2R5PjwvaHRtbD4iX3MgfSk7CisgICAgZG9jdW1lbnQtPndyaXRlKG51bGxwdHIsIHsgIjwhZG9j
dHlwZSBodG1sPjxodG1sPjxoZWFkPjwvaGVhZD48Ym9keT48L2JvZHk+PC9odG1sPiJfc3RyIH0p
OwogICAgIGlmICghdGl0bGUuaXNOdWxsKCkpIHsKICAgICAgICAgYXV0byB0aXRsZUVsZW1lbnQg
PSBIVE1MVGl0bGVFbGVtZW50OjpjcmVhdGUodGl0bGVUYWcsIGRvY3VtZW50KTsKICAgICAgICAg
dGl0bGVFbGVtZW50LT5hcHBlbmRDaGlsZChkb2N1bWVudC0+Y3JlYXRlVGV4dE5vZGUodGl0bGUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDk1OGEwODU0Y2M0OGFlZTA0ODI1NDZlNzcz
OWI1NTA1ZjhjMGYyODEuLjc4YzZlOTMxOTc3MzJlOWNlNWUwZDcwNDgyN2YwMjc5YjQ2NDM4OGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtNTc2LDcgKzU3Niw3IEBAIERvY3VtZW50OjpE
b2N1bWVudChGcmFtZSogZnJhbWUsIGNvbnN0IFNldHRpbmdzJiBzZXR0aW5ncywgY29uc3QgVVJM
JiB1cmwsIERvY3VtCiAjaWYgRU5BQkxFKFhTTFQpCiAgICAgLCBtX2FwcGx5UGVuZGluZ1hTTFRy
YW5zZm9ybXNUaW1lcigqdGhpcywgJkRvY3VtZW50OjphcHBseVBlbmRpbmdYU0xUcmFuc2Zvcm1z
VGltZXJGaXJlZCkKICNlbmRpZgotICAgICwgbV94bWxWZXJzaW9uKCIxLjAiX3MpCisgICAgLCBt
X3htbFZlcnNpb24oIjEuMCJfc3RyKQogICAgICwgbV9jb25zdGFudFByb3BlcnR5TWFwKG1ha2VV
bmlxdWU8Q29uc3RhbnRQcm9wZXJ0eU1hcD4oKnRoaXMpKQogICAgICwgbV9kb2N1bWVudENsYXNz
ZXMoZG9jdW1lbnRDbGFzc2VzKQogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKQEAgLTE1NTAs
MTMgKzE1NTAsMTMgQEAgdm9pZCBEb2N1bWVudDo6c2V0Q29udGVudChjb25zdCBTdHJpbmcmIGNv
bnRlbnQpCiBTdHJpbmcgRG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlKCkgY29uc3QKIHsKICAg
ICBpZiAoaXNYSFRNTERvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAiYXBwbGljYXRpb24veGh0
bWwreG1sIl9zOworICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3hodG1sK3htbCJfc3RyOwog
ICAgIGlmIChpc1NWR0RvY3VtZW50KCkpCi0gICAgICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCJf
czsKKyAgICAgICAgcmV0dXJuICJpbWFnZS9zdmcreG1sIl9zdHI7CiAgICAgaWYgKHhtbFN0YW5k
YWxvbmUoKSkKLSAgICAgICAgcmV0dXJuICJ0ZXh0L3htbCJfczsKKyAgICAgICAgcmV0dXJuICJ0
ZXh0L3htbCJfc3RyOwogICAgIGlmIChpc0hUTUxEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4g
InRleHQvaHRtbCJfczsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L2h0bWwiX3N0cjsKICAgICBpZiAo
RG9jdW1lbnRMb2FkZXIqIGxvYWRlciA9IHRoaXMtPmxvYWRlcigpKQogICAgICAgICByZXR1cm4g
bG9hZGVyLT5yZXNwb25zZU1JTUVUeXBlKCk7CiAgICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMTU3
OSw3ICsxNTc5LDcgQEAgU3RyaW5nIERvY3VtZW50Ojpjb250ZW50VHlwZSgpIGNvbnN0CiAgICAg
aWYgKCFtaW1lVHlwZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG1pbWVUeXBlOwogCi0gICAg
cmV0dXJuICJhcHBsaWNhdGlvbi94bWwiX3M7CisgICAgcmV0dXJuICJhcHBsaWNhdGlvbi94bWwi
X3N0cjsKIH0KIAogUmVmUHRyPFJhbmdlPiBEb2N1bWVudDo6Y2FyZXRSYW5nZUZyb21Qb2ludChp
bnQgeCwgaW50IHkpCkBAIC0xOTA1LDcgKzE5MDUsNyBAQCB2b2lkIERvY3VtZW50Ojpmb3JFYWNo
TWVkaWFFbGVtZW50KGNvbnN0IEZ1bmN0aW9uPHZvaWQoSFRNTE1lZGlhRWxlbWVudCYpPiYgZnVu
YwogCiBTdHJpbmcgRG9jdW1lbnQ6Om5vZGVOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiNk
b2N1bWVudCJfczsKKyAgICByZXR1cm4gIiNkb2N1bWVudCJfc3RyOwogfQogCiBOb2RlOjpOb2Rl
VHlwZSBEb2N1bWVudDo6bm9kZVR5cGUoKSBjb25zdApAQCAtMzM4OCw3ICszMzg4LDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6OndyaXRlbG4oRG9jdW1lbnQqIGVudHJ5RG9jdW1lbnQs
IEZpeGVkVmVjdG9yPFN0cmluZz4KICAgICBmb3IgKGF1dG8mIHN0cmluZyA6IHN0cmluZ3MpCiAg
ICAgICAgIHRleHQuYXBwZW5kKFdURk1vdmUoc3RyaW5nKSk7CiAKLSAgICB0ZXh0LmFwcGVuZCgi
XG4iX3MpOworICAgIHRleHQuYXBwZW5kKCJcbiJfc3RyKTsKICAgICByZXR1cm4gd3JpdGUoZW50
cnlEb2N1bWVudCwgV1RGTW92ZSh0ZXh0KSk7CiB9CiAKQEAgLTYwMDAsNyArNjAwMCw3IEBAIHZv
aWQgRG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoSW5oZXJpdGVkQm9vbCB2YWx1ZSkKIAogU3RyaW5n
IERvY3VtZW50OjpkZXNpZ25Nb2RlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gaW5EZXNpZ25Nb2Rl
KCkgPyAib24iX3MgOiAib2ZmIl9zOworICAgIHJldHVybiBpbkRlc2lnbk1vZGUoKSA/ICJvbiJf
c3RyIDogIm9mZiJfc3RyOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXREZXNpZ25Nb2RlKGNvbnN0
IFN0cmluZyYgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRG
cmFnbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVudC5jcHAKaW5k
ZXggOWNlMWViZDFhZWVkY2IzMzI2ZWM0MDZlMjRjZmQ2NGFjYjVlZDc3Zi4uY2Q1NTA5MjIyYmVm
MGFiYzVmZTM5ZDQzOTA0YmIwOTNiYjIyYWJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEZyYWdtZW50LmNwcApAQCAtNDYsNyArNDYsNyBAQCBSZWY8RG9jdW1lbnRGcmFnbWVudD4gRG9j
dW1lbnRGcmFnbWVudDo6Y3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIAogU3RyaW5nIERvY3Vt
ZW50RnJhZ21lbnQ6Om5vZGVOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiNkb2N1bWVudC1m
cmFnbWVudCJfczsKKyAgICByZXR1cm4gIiNkb2N1bWVudC1mcmFnbWVudCJfc3RyOwogfQogCiBO
b2RlOjpOb2RlVHlwZSBEb2N1bWVudEZyYWdtZW50Ojpub2RlVHlwZSgpIGNvbnN0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnREaXJlY3RpdmVQYXJzZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0ZyYWdtZW50RGlyZWN0aXZlUGFyc2VyLmNwcAppbmRleCAyYTQ0NDJh
Y2RjZDhmYTdlZTFjOTQyZjI4ZTBjZjM0NGE3ZjdkYWMzLi42MDNlNjRkYTZkZGUwYmZhY2Q5Y2M3
ZWMwZjQ1YWFkNTMwMGFkYmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21l
bnREaXJlY3RpdmVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudERp
cmVjdGl2ZVBhcnNlci5jcHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBGcmFnbWVudERpcmVjdGl2
ZVBhcnNlcjo6cGFyc2VGcmFnbWVudERpcmVjdGl2ZShTdHJpbmdWaWV3IGZyYWdtZW50RGlyZWN0
aXYKICAgICBMT0dfV0lUSF9TVFJFQU0oVGV4dEZyYWdtZW50LCBzdHJlYW0gPDwgIiBwYXJzZUZy
YWdtZW50RGlyZWN0aXZlOiAiKTsKICAgICAKICAgICBWZWN0b3I8UGFyc2VkVGV4dERpcmVjdGl2
ZT4gcGFyc2VkVGV4dERpcmVjdGl2ZXM7Ci0gICAgU3RyaW5nIHRleHREaXJlY3RpdmVQcmVmaXgg
PSAidGV4dD0iX3M7CisgICAgU3RyaW5nIHRleHREaXJlY3RpdmVQcmVmaXggPSAidGV4dD0iX3N0
cjsKIAogICAgIGF1dG8gZGlyZWN0aXZlcyA9IGZyYWdtZW50RGlyZWN0aXZlLnNwbGl0KCcmJyk7
CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dC5jcHAKaW5kZXggNjhhNmZiYjM1ODQ0MTQ0MWEyYjExYjU4ZmM2ZjE5
NDI5ZjFmMGVlYS4uY2RmOTgyYzMzZDViZDM2MmRjZGZkMGE1MTE4Y2JhMThjNzQ3NGU1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0LmNwcApAQCAtMTUzLDcgKzE1Myw3IEBAIFJlZlB0cjxUZXh0PiBUZXh0OjpyZXBs
YWNlV2hvbGVUZXh0KGNvbnN0IFN0cmluZyYgbmV3VGV4dCkKIAogU3RyaW5nIFRleHQ6Om5vZGVO
YW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiN0ZXh0Il9zOworICAgIHJldHVybiAiI3RleHQi
X3N0cjsKIH0KIAogTm9kZTo6Tm9kZVR5cGUgVGV4dDo6bm9kZVR5cGUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9UZXh0RW5jb2Rlci5jcHAKaW5kZXggYWUyMzQ3NTI3OTI3MjM3YzEzZTBkZjYwN2MwNTE1
NmQ1OTlkYzE5Mi4uZjc3NGM2MmRjZWM5MTNkNWY1ZGFkYjAwZmIwYWYwZjFiOTZjOWYyYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vVGV4dEVuY29kZXIuY3BwCkBAIC0zMyw3ICszMyw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogU3RyaW5nIFRleHRFbmNvZGVyOjplbmNvZGluZygpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuICJ1dGYtOCJfczsKKyAgICByZXR1cm4gInV0Zi04Il9zdHI7CiB9CiAKIFJlZlB0cjxV
aW50OEFycmF5PiBUZXh0RW5jb2Rlcjo6ZW5jb2RlKFN0cmluZyYmIGlucHV0KSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAKaW5kZXggOGE1
NGNhMDUzNTRhOTMwMjc1OWFiNzViYTNhMTc1NWY3YjlmNDU1ZC4uMmFkZDU2Zjc5ZTg1MzhjNjA1
OWFkZmJmYWMwYTI4NTViODgzODlkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9C
YXNlQ2hlY2thYmxlSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VD
aGVja2FibGVJbnB1dFR5cGUuY3BwCkBAIC00Niw3ICs0Niw3IEBAIHVzaW5nIG5hbWVzcGFjZSBI
VE1MTmFtZXM7CiBGb3JtQ29udHJvbFN0YXRlIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnNhdmVG
b3JtQ29udHJvbFN0YXRlKCkgY29uc3QKIHsKICAgICBBU1NFUlQoZWxlbWVudCgpKTsKLSAgICBy
ZXR1cm4geyBlbGVtZW50KCktPmNoZWNrZWQoKSA/ICJvbiJfcyA6ICJvZmYiX3MgfTsKKyAgICBy
ZXR1cm4geyBlbGVtZW50KCktPmNoZWNrZWQoKSA/ICJvbiJfc3RyIDogIm9mZiJfc3RyIH07CiB9
CiAKIHZvaWQgQmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6cmVzdG9yZUZvcm1Db250cm9sU3RhdGUo
Y29uc3QgRm9ybUNvbnRyb2xTdGF0ZSYgc3RhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0Jhc2VEYXRlQW5kVGltZUlucHV0VHlwZS5jcHAKaW5kZXggMzc1NTI4MWQxODJlM2FhYmUxOGM3
OWQ5ZDM1MTM2OWFjNzM1NGU4Mi4uMWUxNGJlZmI0YjQ5MDE4YzA2NzcwMzNmNzg4YmVhZjgzM2Y2
ZjQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1
dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRU
eXBlLmNwcApAQCAtMzQ0LDcgKzM0NCw3IEBAIHZvaWQgQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBl
Ojp1cGRhdGVJbm5lclRleHRWYWx1ZSgpCiAgICAgICAgIGF1dG8gZGlzcGxheVZhbHVlID0gdmlz
aWJsZVZhbHVlKCk7CiAgICAgICAgIGlmIChkaXNwbGF5VmFsdWUuaXNFbXB0eSgpKSB7CiAgICAg
ICAgICAgICAvLyBOZWVkIHRvIHB1dCBzb21ldGhpbmcgdG8ga2VlcCB0ZXh0IGJhc2VsaW5lLgot
ICAgICAgICAgICAgZGlzcGxheVZhbHVlID0gIiAiX3M7CisgICAgICAgICAgICBkaXNwbGF5VmFs
dWUgPSAiICJfc3RyOwogICAgICAgICB9CiAgICAgICAgIGRvd25jYXN0PEhUTUxFbGVtZW50Pigq
bm9kZSkuc2V0SW5uZXJUZXh0KGRpc3BsYXlWYWx1ZSk7CiAgICAgICAgIHJldHVybjsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKaW5kZXggMTcwZmJjNTE0MDE2YTQ0MTQ4ODQw
OTYwNWM5OGQ3MjRlNWI1NmZmZC4uNmY5NzZlODgyMDUzNGQ2ODQ1OTI2YWM5YWE0MGUzNjc3ZTNj
M2YyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Db2xvcklucHV0VHlwZS5jcHAKQEAgLTExOSw3ICsx
MTksNyBAQCBib29sIENvbG9ySW5wdXRUeXBlOjpzdXBwb3J0c1JlcXVpcmVkKCkgY29uc3QKIAog
U3RyaW5nIENvbG9ySW5wdXRUeXBlOjpmYWxsYmFja1ZhbHVlKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gIiMwMDAwMDAiX3M7CisgICAgcmV0dXJuICIjMDAwMDAwIl9zdHI7CiB9CiAKIFN0cmluZyBD
b2xvcklucHV0VHlwZTo6c2FuaXRpemVWYWx1ZShjb25zdCBTdHJpbmcmIHByb3Bvc2VkVmFsdWUp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCmluZGV4IDZmNDVlMWNjNGZiYjI2
Y2Q5YzdjMmRmMTYzMmI2NTJiZjE2NjVmODEuLmQzNWM1YTFlNjc1ODQwNzMwMTUxM2JmMDdmNzVj
OGZiZGU3MWQ2ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRE9NRm9ybURhdGEuY3BwCkBAIC04NCw3ICs4
NCw3IEBAIHN0YXRpYyBhdXRvIGNyZWF0ZUZpbGVFbnRyeShjb25zdCBTdHJpbmcmIG5hbWUsIEJs
b2ImIGJsb2IsIGNvbnN0IFN0cmluZyYgZmlsZW5hCiAgICAgYXV0byB1c3ZOYW1lID0gcmVwbGFj
ZVVucGFpcmVkU3Vycm9nYXRlc1dpdGhSZXBsYWNlbWVudENoYXJhY3RlcihTdHJpbmcobmFtZSkp
OwogCiAgICAgaWYgKCFibG9iLmlzRmlsZSgpKQotICAgICAgICByZXR1cm4geyB1c3ZOYW1lLCBG
aWxlOjpjcmVhdGUoYmxvYi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGJsb2IsIGZpbGVuYW1l
LmlzTnVsbCgpID8gImJsb2IiX3MgOiBmaWxlbmFtZSkgfTsKKyAgICAgICAgcmV0dXJuIHsgdXN2
TmFtZSwgRmlsZTo6Y3JlYXRlKGJsb2Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iLCBm
aWxlbmFtZS5pc051bGwoKSA/ICJibG9iIl9zdHIgOiBmaWxlbmFtZSkgfTsKIAogICAgIGlmICgh
ZmlsZW5hbWUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiB7IHVzdk5hbWUsIEZpbGU6OmNyZWF0
ZShibG9iLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgZG93bmNhc3Q8RmlsZT4oYmxvYiksIGZp
bGVuYW1lKSB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlwZS5jcHAKaW5kZXggMDBjZjAy
OTlkNzQ5Nzc3MjEyMGRkZjIzNTg4MTU4ZjBhYWJjZTgyNC4uMjJlMTc3NWM2NDYyZDZhZmM3OTZi
ZTcyODZiOGYzNmViZWI4ZTU5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRl
SW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3Bw
CkBAIC0xMDEsNyArMTAxLDcgQEAgU3RyaW5nIERhdGVJbnB1dFR5cGU6OmZvcm1hdERhdGVUaW1l
RmllbGRzU3RhdGUoY29uc3QgRGF0ZVRpbWVGaWVsZHNTdGF0ZSYgc3RhdGUKIHZvaWQgRGF0ZUlu
cHV0VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRpdEVsZW1lbnQ6OkxheW91
dFBhcmFtZXRlcnMmIGxheW91dFBhcmFtZXRlcnMsIGNvbnN0IERhdGVDb21wb25lbnRzJikgY29u
c3QKIHsKICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1l
dGVycy5sb2NhbGUuZGF0ZUZvcm1hdCgpOwotICAgIGxheW91dFBhcmFtZXRlcnMuZmFsbGJhY2tE
YXRlVGltZUZvcm1hdCA9ICJ5eXl5LU1NLWRkIl9zOworICAgIGxheW91dFBhcmFtZXRlcnMuZmFs
bGJhY2tEYXRlVGltZUZvcm1hdCA9ICJ5eXl5LU1NLWRkIl9zdHI7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2Nh
bElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5
cGUuY3BwCmluZGV4IGFlYjRhMTJkMTk1YmZjMDgwNGEwODE1M2FjOWI4ZjRjMTg0ODMxOGQuLjli
Yzc4NTRjMTRjMGU4YzRmN2M2MTczMDhmZjVmYjgxYzE2MTc1ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRUeXBlLmNwcApAQCAtMTMxLDEwICsxMzEsMTAg
QEAgdm9pZCBEYXRlVGltZUxvY2FsSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRlcnMoRGF0
ZVRpbWVFZGl0RWxlbWVudDo6TGF5b3V0UGEKIAogICAgIGlmIChsYXlvdXRQYXJhbWV0ZXJzLnNo
b3VsZEhhdmVNaWxsaXNlY29uZEZpZWxkIHx8IHNob3VsZEhhdmVTZWNvbmRGaWVsZChkYXRlKSkg
ewogICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1l
dGVycy5sb2NhbGUuZGF0ZVRpbWVGb3JtYXRXaXRoU2Vjb25kcygpOwotICAgICAgICBsYXlvdXRQ
YXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAieXl5eS1NTS1kZCdUJ0hIOm1tOnNz
Il9zOworICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAi
eXl5eS1NTS1kZCdUJ0hIOm1tOnNzIl9zdHI7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbGF5b3V0
UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxlLmRhdGVU
aW1lRm9ybWF0V2l0aG91dFNlY29uZHMoKTsKLSAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxs
YmFja0RhdGVUaW1lRm9ybWF0ID0gInl5eXktTU0tZGQnVCdISDptbSJfczsKKyAgICAgICAgbGF5
b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gInl5eXktTU0tZGQnVCdISDpt
bSJfc3RyOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCAx
YjM2ZDViMzZmMDAxYWQwN2U5ZTZhYTAyODY4MTYyNzIyNDY0ZDMwLi41YzAxNzdmOGEzZDZhNmFm
NTE2NjlmMWE4ZDFlZjlhZDhiZGY1ZThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNw
cApAQCAtNTcyLDE1ICs1NzIsMTUgQEAgU3RyaW5nIEhUTUxFbGVtZW50Ojpjb250ZW50RWRpdGFi
bGUoKSBjb25zdAogewogICAgIHN3aXRjaCAoY29udGVudEVkaXRhYmxlVHlwZSgqdGhpcykpIHsK
ICAgICBjYXNlIENvbnRlbnRFZGl0YWJsZVR5cGU6OkluaGVyaXQ6Ci0gICAgICAgIHJldHVybiAi
aW5oZXJpdCJfczsKKyAgICAgICAgcmV0dXJuICJpbmhlcml0Il9zdHI7CiAgICAgY2FzZSBDb250
ZW50RWRpdGFibGVUeXBlOjpUcnVlOgotICAgICAgICByZXR1cm4gInRydWUiX3M7CisgICAgICAg
IHJldHVybiAidHJ1ZSJfc3RyOwogICAgIGNhc2UgQ29udGVudEVkaXRhYmxlVHlwZTo6RmFsc2U6
Ci0gICAgICAgIHJldHVybiAiZmFsc2UiX3M7CisgICAgICAgIHJldHVybiAiZmFsc2UiX3N0cjsK
ICAgICBjYXNlIENvbnRlbnRFZGl0YWJsZVR5cGU6OlBsYWludGV4dE9ubHk6Ci0gICAgICAgIHJl
dHVybiAicGxhaW50ZXh0LW9ubHkiX3M7CisgICAgICAgIHJldHVybiAicGxhaW50ZXh0LW9ubHki
X3N0cjsKICAgICB9Ci0gICAgcmV0dXJuICJpbmhlcml0Il9zOworICAgIHJldHVybiAiaW5oZXJp
dCJfc3RyOwogfQogCiBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgdHJ1ZU5hbWUoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggNzk4ZmU4NmJjNGYzMjAyNjcx
Y2QyZDcxNDY2MDAwYjZlYmFiYjZiZi4uNDZjZTY2YzI3OGUyNzU2ZDUwOTgyNGE1MjkyOThmYjVl
YTMxOWU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC02
NTUsMTMgKzY1NSwxMyBAQCBTdHJpbmcgSFRNTEltYWdlRWxlbWVudDo6ZGVjb2RpbmcoKSBjb25z
dAogewogICAgIHN3aXRjaCAoZGVjb2RpbmdNb2RlKCkpIHsKICAgICBjYXNlIERlY29kaW5nTW9k
ZTo6U3luY2hyb25vdXM6Ci0gICAgICAgIHJldHVybiAic3luYyJfczsKKyAgICAgICAgcmV0dXJu
ICJzeW5jIl9zdHI7CiAgICAgY2FzZSBEZWNvZGluZ01vZGU6OkFzeW5jaHJvbm91czoKLSAgICAg
ICAgcmV0dXJuICJhc3luYyJfczsKKyAgICAgICAgcmV0dXJuICJhc3luYyJfc3RyOwogICAgIGNh
c2UgRGVjb2RpbmdNb2RlOjpBdXRvOgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgcmV0dXJu
ICJhdXRvIl9zOworICAgIHJldHVybiAiYXV0byJfc3RyOwogfQogCiBEZWNvZGluZ01vZGUgSFRN
TEltYWdlRWxlbWVudDo6ZGVjb2RpbmdNb2RlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCmluZGV4IDJmMTBjZWQ4NDEzMWVkN2U5ZGQxODdhMzQw
MWNmZGNkZWM0YmE0M2UuLmViZTc0MzA3NWQxMTU3YmNhM2IwY2EyYTNkNmRlMjM0MzMzMjBmMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcApAQCAtMzk1
LDcgKzM5NSw3IEBAIHZvaWQgSFRNTFRleHRBcmVhRWxlbWVudDo6c2V0VmFsdWVDb21tb24oY29u
c3QgU3RyaW5nJiBuZXdWYWx1ZSwgVGV4dEZpZWxkRXZlbnRCCiAgICAgLy8gQ29kZSBlbHNld2hl
cmUgbm9ybWFsaXplcyBsaW5lIGVuZGluZ3MgYWRkZWQgYnkgdGhlIHVzZXIgdmlhIHRoZSBrZXli
b2FyZCBvciBwYXN0aW5nLgogICAgIC8vIFdlIG5vcm1hbGl6ZSBsaW5lIGVuZGluZ3MgY29taW5n
IGZyb20gSmF2YVNjcmlwdCBoZXJlLgogICAgIFN0cmluZyBub3JtYWxpemVkVmFsdWUgPSBuZXdW
YWx1ZS5pc051bGwoKSA/IGVtcHR5U3RyaW5nKCkgOiBuZXdWYWx1ZTsKLSAgICBub3JtYWxpemVk
VmFsdWUucmVwbGFjZSgiXHJcbiIsICJcbiIpOworICAgIG5vcm1hbGl6ZWRWYWx1ZS5yZXBsYWNl
KCJcclxuIl9zdHIsICJcbiJfc3RyKTsKICAgICBub3JtYWxpemVkVmFsdWUucmVwbGFjZSgnXHIn
LCAnXG4nKTsKIAogICAgIC8vIFJldHVybiBlYXJseSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8g
bW92ZSB0aGUgY2FyZXQgb3IgdHJpZ2dlciBvdGhlciBzaWRlIGVmZmVjdHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggNzk0
MjcwZGZjYTkyNThmYmQ2MDY1MDkzMTI0MTExNmE4OTY4ZDk0My4uNGYxMTU2MjJkMjY3ZjUxMTlh
OGE4ODM0MWE0NzEwNmU0MjJhODEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTc5OCw3ICs3OTgsNyBAQCBTdHJpbmcg
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmRpcmVjdGlvbkZvckZvcm1EYXRhKCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIFRleHREaXJlY3Rpb246OkxUUjsKICAgICB9KCk7CiAKLSAgICByZXR1
cm4gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/ICJsdHIiX3MgOiAicnRsIl9zOwor
ICAgIHJldHVybiBkaXJlY3Rpb24gPT0gVGV4dERpcmVjdGlvbjo6TFRSID8gImx0ciJfc3RyIDog
InJ0bCJfc3RyOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudDo6c2V0TWF4TGVuZ3RoKGludCBtYXhMZW5ndGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJ
bnB1dFR5cGUuY3BwCmluZGV4IDE5ODNjNDA5OThmMDY1N2IxN2QxZDgwZGViMjgwYmQ2MmU3NDU4
MTEuLmRlZmZlY2E5N2U3NjgyNTAwZjAyYjk5Y2VjZDQ1MDY0NzNkYmQ4MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvTW9udGhJbnB1dFR5cGUuY3BwCkBAIC0xNDgsNyArMTQ4LDcgQEAgU3RyaW5nIE1v
bnRoSW5wdXRUeXBlOjpmb3JtYXREYXRlVGltZUZpZWxkc1N0YXRlKGNvbnN0IERhdGVUaW1lRmll
bGRzU3RhdGUmIHN0YXQKIHZvaWQgTW9udGhJbnB1dFR5cGU6OnNldHVwTGF5b3V0UGFyYW1ldGVy
cyhEYXRlVGltZUVkaXRFbGVtZW50OjpMYXlvdXRQYXJhbWV0ZXJzJiBsYXlvdXRQYXJhbWV0ZXJz
LCBjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNvbnN0CiB7CiAgICAgbGF5b3V0UGFyYW1ldGVycy5k
YXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9jYWxlLnNob3J0TW9udGhGb3JtYXQo
KTsKLSAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAieXl5eS1N
TSJfczsKKyAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAieXl5
eS1NTSJfc3RyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9U
aW1lSW5wdXRUeXBlLmNwcAppbmRleCBiMzg4MGU5MjI4MzI1YTY1MGQ1Mjg5YTMwNTI3ODg3YmQ2
MTg1YzI2Li5mZjI4MjNlYjU4OTI0YTlkMGZkYTEwMzk1YTY4ZmQ4NzAzOGFhZDNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvVGltZUlucHV0VHlwZS5jcHAKQEAgLTEzNCwxMCArMTM0LDEwIEBAIHZvaWQg
VGltZUlucHV0VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERhdGVUaW1lRWRpdEVsZW1lbnQ6
OkxheW91dFBhcmFtZXRlcnMmCiAKICAgICBpZiAobGF5b3V0UGFyYW1ldGVycy5zaG91bGRIYXZl
TWlsbGlzZWNvbmRGaWVsZCB8fCBzaG91bGRIYXZlU2Vjb25kRmllbGQoZGF0ZSkpIHsKICAgICAg
ICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9j
YWxlLnRpbWVGb3JtYXQoKTsKLSAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVU
aW1lRm9ybWF0ID0gIkhIOm1tOnNzIl9zOworICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxi
YWNrRGF0ZVRpbWVGb3JtYXQgPSAiSEg6bW06c3MiX3N0cjsKICAgICB9IGVsc2UgewogICAgICAg
ICBsYXlvdXRQYXJhbWV0ZXJzLmRhdGVUaW1lRm9ybWF0ID0gbGF5b3V0UGFyYW1ldGVycy5sb2Nh
bGUuc2hvcnRUaW1lRm9ybWF0KCk7Ci0gICAgICAgIGxheW91dFBhcmFtZXRlcnMuZmFsbGJhY2tE
YXRlVGltZUZvcm1hdCA9ICJISDptbSJfczsKKyAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxs
YmFja0RhdGVUaW1lRm9ybWF0ID0gIkhIOm1tIl9zdHI7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcAppbmRleCBlNGUzMGE5YjYwNGVmMWE4NGQ3NzUy
YmJkOGIzNzA4NDUyYTFlMDhmLi42ZWI4NzY4NDgzMmZkNGYzN2NlYjJmYTg0ZGExYzYzZWRhMTVj
MWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKQEAgLTQwLDcg
KzQwLDcgQEAgU3RyaW5nIFVSTERlY29tcG9zaXRpb246OnByb3RvY29sKCkgY29uc3QKIHsKICAg
ICBhdXRvIGZ1bGxVUkwgPSB0aGlzLT5mdWxsVVJMKCk7CiAgICAgaWYgKFdURjo6cHJvdG9jb2xJ
c0phdmFTY3JpcHQoZnVsbFVSTC5zdHJpbmcoKSkpCi0gICAgICAgIHJldHVybiAiamF2YXNjcmlw
dDoiX3M7CisgICAgICAgIHJldHVybiAiamF2YXNjcmlwdDoiX3N0cjsKICAgICByZXR1cm4gbWFr
ZVN0cmluZyhmdWxsVVJMLnByb3RvY29sKCksICc6Jyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlcklkaW9tcy5jcHAKaW5kZXggOWQ2YTZjY2FkZTBiNGQ1
ZWE0MDAyYjUyMmNmZmJkNDEzZjA1NmUxZS4uMDE3MThkNTczYTE5YTEwMjFhNzljM2E4ZTY2YTJi
NjQwMTVmNTIzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlcklkaW9tcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
cklkaW9tcy5jcHAKQEAgLTM1NCw4ICszNTQsOCBAQCBTdHJpbmcgcGFyc2VDT1JTU2V0dGluZ3NB
dHRyaWJ1dGUoY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCiAgICAgaWYgKHZhbHVlLmlzTnVsbCgp
KQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNh
c2UodmFsdWUsICJ1c2UtY3JlZGVudGlhbHMiKSkKLSAgICAgICAgcmV0dXJuICJ1c2UtY3JlZGVu
dGlhbHMiX3M7Ci0gICAgcmV0dXJuICJhbm9ueW1vdXMiX3M7CisgICAgICAgIHJldHVybiAidXNl
LWNyZWRlbnRpYWxzIl9zdHI7CisgICAgcmV0dXJuICJhbm9ueW1vdXMiX3N0cjsKIH0KIAogLy8g
aHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc2VtYW50aWNzLmh0bWwjYXR0
ci1tZXRhLWh0dHAtZXF1aXYtcmVmcmVzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9wYXJzZXIvSFRNTFByZWxvYWRTY2FubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAKaW5kZXggMjg5NjI4YWVhODk1YmIyOGNkMDYzMjY1
YjVlNDViNjUzYTUwNThmNS4uNDU3MjBlZTU5NGI5NzA4OTRkZmM4ZjI3ZWEzZGU2ODU4ZDBlNDQ3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2Fu
bmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUHJlbG9hZFNjYW5u
ZXIuY3BwCkBAIC04MiwxMyArODIsMTMgQEAgU3RyaW5nIFRva2VuUHJlbG9hZFNjYW5uZXI6Omlu
aXRpYXRvckZvcihUYWdJZCB0YWdJZCkKICAgICBzd2l0Y2ggKHRhZ0lkKSB7CiAgICAgY2FzZSBU
YWdJZDo6U291cmNlOgogICAgIGNhc2UgVGFnSWQ6OkltZzoKLSAgICAgICAgcmV0dXJuICJpbWci
X3M7CisgICAgICAgIHJldHVybiAiaW1nIl9zdHI7CiAgICAgY2FzZSBUYWdJZDo6SW5wdXQ6Ci0g
ICAgICAgIHJldHVybiAiaW5wdXQiX3M7CisgICAgICAgIHJldHVybiAiaW5wdXQiX3N0cjsKICAg
ICBjYXNlIFRhZ0lkOjpMaW5rOgotICAgICAgICByZXR1cm4gImxpbmsiX3M7CisgICAgICAgIHJl
dHVybiAibGluayJfc3RyOwogICAgIGNhc2UgVGFnSWQ6OlNjcmlwdDoKLSAgICAgICAgcmV0dXJu
ICJzY3JpcHQiX3M7CisgICAgICAgIHJldHVybiAic2NyaXB0Il9zdHI7CiAgICAgY2FzZSBUYWdJ
ZDo6VW5rbm93bjoKICAgICBjYXNlIFRhZ0lkOjpTdHlsZToKICAgICBjYXNlIFRhZ0lkOjpCYXNl
OgpAQCAtOTYsMTAgKzk2LDEwIEBAIFN0cmluZyBUb2tlblByZWxvYWRTY2FubmVyOjppbml0aWF0
b3JGb3IoVGFnSWQgdGFnSWQpCiAgICAgY2FzZSBUYWdJZDo6TWV0YToKICAgICBjYXNlIFRhZ0lk
OjpQaWN0dXJlOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
ICJ1bmtub3duIl9zOworICAgICAgICByZXR1cm4gInVua25vd24iX3N0cjsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuICJ1bmtub3duIl9zOworICAgIHJldHVy
biAidW5rbm93biJfc3RyOwogfQogCiBjbGFzcyBUb2tlblByZWxvYWRTY2FubmVyOjpTdGFydFRh
Z1NjYW5uZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luLmNwcAppbmRleCA0YmE1
MTkxZTZiM2U0MDk4NzljMjE5YzE2NmE4M2ZlNzEyYTM1ODdhLi5lMThhNTRjN2U3MWI3MGQ4NGE3
NWM5OWU2ODViNTZiODhkMzc2NTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Nl
Y3VyaXR5T3JpZ2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
LmNwcApAQCAtNTM4LDkgKzUzOCw5IEBAIHZvaWQgU2VjdXJpdHlPcmlnaW46OnNldEVuZm9yY2Vz
RmlsZVBhdGhTZXBhcmF0aW9uKCkKIFN0cmluZyBTZWN1cml0eU9yaWdpbjo6dG9TdHJpbmcoKSBj
b25zdAogewogICAgIGlmIChpc1VuaXF1ZSgpKQotICAgICAgICByZXR1cm4gIm51bGwiX3M7Cisg
ICAgICAgIHJldHVybiAibnVsbCJfc3RyOwogICAgIGlmIChtX2RhdGEucHJvdG9jb2wgPT0gImZp
bGUiICYmIG1fZW5mb3JjZXNGaWxlUGF0aFNlcGFyYXRpb24pCi0gICAgICAgIHJldHVybiAibnVs
bCJfczsKKyAgICAgICAgcmV0dXJuICJudWxsIl9zdHI7CiAgICAgcmV0dXJuIHRvUmF3U3RyaW5n
KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmlnaW5EYXRhLmNwcAppbmRl
eCAyZDM4NmRiMWZmM2M2MmNhZmE3OTllNTgyZjdlNWMwMjViZjBkYzNjLi45MTg5ODM3ZjRmZjky
OGFjMzk5NmRkOWU2MjlhOTYxNzI4NmZkYzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1
cml0eU9yaWdpbkRhdGEuY3BwCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IFN0cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBpZiAo
cHJvdG9jb2wgPT0gImZpbGUiKQotICAgICAgICByZXR1cm4gImZpbGU6Ly8iX3M7CisgICAgICAg
IHJldHVybiAiZmlsZTovLyJfc3RyOwogCiAgICAgaWYgKHByb3RvY29sLmlzRW1wdHkoKSAmJiBo
b3N0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTgxLDcgKzgxLDcgQEAgU3Ry
aW5nIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJhc2VJZGVudGlmaWVyKCkgY29uc3QKICAgICAv
LyBOb3cgdGhhdCB3ZSd2ZSBmaXhlZCB0aGF0IGJ1Zywgd2UgcHJvZHVjZSB0aGlzIHN0cmluZyBm
b3IgY29tcGF0aWJpbGl0eQogICAgIC8vIHdpdGggZXhpc3RpbmcgcGVyc2lzdGVudCBzdGF0ZS4K
ICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShwcm90b2NvbCwgImZpbGUiKSkKLSAgICAg
ICAgcmV0dXJuICJmaWxlX18wIl9zOworICAgICAgICByZXR1cm4gImZpbGVfXzAiX3N0cjsKIAog
ICAgIHJldHVybiBtYWtlU3RyaW5nKHByb3RvY29sLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIEZpbGVT
eXN0ZW06OmVuY29kZUZvckZpbGVOYW1lKGhvc3QpLCBzZXBhcmF0b3JDaGFyYWN0ZXIsIHBvcnQu
dmFsdWVfb3IoMCkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5UG9saWN5LmNwcAppbmRl
eCBkYjA5NGEwMmQzMWNmM2JjMzNkNzllOGU3MWQ4MGM5ZDM2YTdkYzgwLi43ODBhMjE0NGNjNDk4
OGNlMmI0NGQwMGEzZDkxOWM1NjdhZmVlNjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1NlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5
UG9saWN5LmNwcApAQCAtMTQ2LDE2ICsxNDYsMTYgQEAgU3RyaW5nIFNlY3VyaXR5UG9saWN5Ojpn
ZW5lcmF0ZU9yaWdpbkhlYWRlcihSZWZlcnJlclBvbGljeSByZWZlcnJlclBvbGljeSwgY29uc3QK
IHsKICAgICBzd2l0Y2ggKHJlZmVycmVyUG9saWN5KSB7CiAgICAgY2FzZSBSZWZlcnJlclBvbGlj
eTo6Tm9SZWZlcnJlcjoKLSAgICAgICAgcmV0dXJuICJudWxsIl9zOworICAgICAgICByZXR1cm4g
Im51bGwiX3N0cjsKICAgICBjYXNlIFJlZmVycmVyUG9saWN5OjpOb1JlZmVycmVyV2hlbkRvd25n
cmFkZToKICAgICBjYXNlIFJlZmVycmVyUG9saWN5OjpTdHJpY3RPcmlnaW46CiAgICAgY2FzZSBS
ZWZlcnJlclBvbGljeTo6U3RyaWN0T3JpZ2luV2hlbkNyb3NzT3JpZ2luOgogICAgICAgICBpZiAo
cHJvdG9jb2xJcyhzZWN1cml0eU9yaWdpbi5wcm90b2NvbCgpLCAiaHR0cHMiKSAmJiAhdXJsLnBy
b3RvY29sSXMoImh0dHBzIikpCi0gICAgICAgICAgICByZXR1cm4gIm51bGwiX3M7CisgICAgICAg
ICAgICByZXR1cm4gIm51bGwiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWZlcnJl
clBvbGljeTo6U2FtZU9yaWdpbjoKICAgICAgICAgaWYgKCFzZWN1cml0eU9yaWdpbi5jYW5SZXF1
ZXN0KHVybCkpCi0gICAgICAgICAgICByZXR1cm4gIm51bGwiX3M7CisgICAgICAgICAgICByZXR1
cm4gIm51bGwiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6
RW1wdHlTdHJpbmc6CiAgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6T3JpZ2luOgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCmluZGV4IDc1MTJiMDIzZDVhMjQxNjlmODVlNDgw
YzFlMGIwODY3YjE2YTBjNjkuLmQ4NGE4MGM4MDY4MWFiNDU4ODMzNWViMmI5OWNlOWM3ZmZlMThi
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAKQEAgLTQ1LDEzICs0
NSwxMyBAQCBDb250ZW50VHlwZTo6Q29udGVudFR5cGUoY29uc3QgU3RyaW5nJiBjb250ZW50VHlw
ZSkKIAogY29uc3QgU3RyaW5nJiBDb250ZW50VHlwZTo6Y29kZWNzUGFyYW1ldGVyKCkKIHsKLSAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBjb2RlY3MgeyAiY29kZWNzIl9zIH07Cisg
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29kZWNzIHsgImNvZGVjcyJfc3RyIH07
CiAgICAgcmV0dXJuIGNvZGVjczsKIH0KIAogY29uc3QgU3RyaW5nJiBDb250ZW50VHlwZTo6cHJv
ZmlsZXNQYXJhbWV0ZXIoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHBy
b2ZpbGVzIHsgInByb2ZpbGVzIl9zIH07CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmlu
Zz4gcHJvZmlsZXMgeyAicHJvZmlsZXMiX3N0ciB9OwogICAgIHJldHVybiBwcm9maWxlczsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAppbmRleCA5ZWMwMTcyYTIxYTk4ZGM4MDdh
NGMxNjc3NTdlNzM1YWJlMjM1ODQ4Li5jNzRkMDlhNTE1MzI4YmVjMDg2YWU3ZDkwNTZlZDg0Njlm
YTgxODVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EZWNpbWFsLmNwcApAQCAtOTUyLDEwICs5NTIs
MTAgQEAgU3RyaW5nIERlY2ltYWw6OnRvU3RyaW5nKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKG1f
ZGF0YS5mb3JtYXRDbGFzcygpKSB7CiAgICAgY2FzZSBFbmNvZGVkRGF0YTo6Q2xhc3NJbmZpbml0
eToKLSAgICAgICAgcmV0dXJuIHNpZ24oKSA/ICItSW5maW5pdHkiX3MgOiAiSW5maW5pdHkiX3M7
CisgICAgICAgIHJldHVybiBzaWduKCkgPyAiLUluZmluaXR5Il9zdHIgOiAiSW5maW5pdHkiX3N0
cjsKIAogICAgIGNhc2UgRW5jb2RlZERhdGE6OkNsYXNzTmFOOgotICAgICAgICByZXR1cm4gIk5h
TiJfczsKKyAgICAgICAgcmV0dXJuICJOYU4iX3N0cjsKIAogICAgIGNhc2UgRW5jb2RlZERhdGE6
OkNsYXNzTm9ybWFsOgogICAgIGNhc2UgRW5jb2RlZERhdGE6OkNsYXNzWmVybzoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWluLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oCmluZGV4IGJjZThjNDMwMzQwZmU2
NzBiYzI0OWNkZjE3Yjk4NjlhNDRhYjg2MjAuLjRlOWMxNmFjMGRkMWZmYjNhYTgxNGI0NDdkOTJm
YTYwOGM2Y2U4NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJh
YmxlRG9tYWluLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21h
aW4uaApAQCAtMTA1LDcgKzEwNSw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBleHBs
aWNpdCBSZWdpc3RyYWJsZURvbWFpbihTdHJpbmcmJiBkb21haW4pCi0gICAgICAgIDogbV9yZWdp
c3RyYWJsZURvbWFpbiB7IGRvbWFpbi5pc0VtcHR5KCkgPyAibnVsbE9yaWdpbiJfcyA6IFdURk1v
dmUoZG9tYWluKSB9CisgICAgICAgIDogbV9yZWdpc3RyYWJsZURvbWFpbiB7IGRvbWFpbi5pc0Vt
cHR5KCkgPyAibnVsbE9yaWdpbiJfc3RyIDogV1RGTW92ZShkb21haW4pIH0KICAgICB7CiAgICAg
fQogCkBAIC0xMjgsNyArMTI4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgYXV0byBkb21haW4gPSBo
b3N0OwogI2VuZGlmCiAgICAgICAgIGlmIChob3N0LmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGRv
bWFpbiA9ICJudWxsT3JpZ2luIl9zOworICAgICAgICAgICAgZG9tYWluID0gIm51bGxPcmlnaW4i
X3N0cjsKICAgICAgICAgZWxzZSBpZiAoZG9tYWluLmlzRW1wdHkoKSkKICAgICAgICAgICAgIGRv
bWFpbiA9IGhvc3Q7CiAgICAgICAgIHJldHVybiBkb21haW47CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcAppbmRleCA5N2IyMDU3
ZjZhNDBmZGViZTRkZDM1NmRmM2MzNzRiMDg2ZTVhZjc2Li5lYjUwZDFjMTU4NWU3ZGFiZWFlZWYy
OTc2ODkzODQ4ODFhYWZmNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9h
bmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAKQEAgLTE5OCwxMyArMTk4LDEzIEBAIFN0cmlu
ZyBUaW1pbmdGdW5jdGlvbjo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgaWYgKG1fdHlwZSA9PSBUaW1p
bmdGdW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbikgewogICAgICAgICBhdXRvJiBmdW5jdGlv
biA9IGRvd25jYXN0PEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb24+KCp0aGlzKTsKICAgICAgICAg
aWYgKGZ1bmN0aW9uLngxKCkgPT0gMC4yNSAmJiBmdW5jdGlvbi55MSgpID09IDAuMSAmJiBmdW5j
dGlvbi54MigpID09IDAuMjUgJiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICBy
ZXR1cm4gImVhc2UiOworICAgICAgICAgICAgcmV0dXJuICJlYXNlIl9zdHI7CiAgICAgICAgIGlm
IChmdW5jdGlvbi54MSgpID09IDAuNDIgJiYgIWZ1bmN0aW9uLnkxKCkgJiYgZnVuY3Rpb24ueDIo
KSA9PSAxLjAgJiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICByZXR1cm4gImVh
c2UtaW4iOworICAgICAgICAgICAgcmV0dXJuICJlYXNlLWluIl9zdHI7CiAgICAgICAgIGlmICgh
ZnVuY3Rpb24ueDEoKSAmJiAhZnVuY3Rpb24ueTEoKSAmJiBmdW5jdGlvbi54MigpID09IDAuNTgg
JiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICByZXR1cm4gImVhc2Utb3V0IjsK
KyAgICAgICAgICAgIHJldHVybiAiZWFzZS1vdXQiX3N0cjsKICAgICAgICAgaWYgKGZ1bmN0aW9u
LngxKCkgPT0gMC40MiAmJiAhZnVuY3Rpb24ueTEoKSAmJiBmdW5jdGlvbi54MigpID09IDAuNTgg
JiYgZnVuY3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICByZXR1cm4gImVhc2UtaW4tb3V0
IjsKKyAgICAgICAgICAgIHJldHVybiAiZWFzZS1pbi1vdXQiX3N0cjsKICAgICAgICAgcmV0dXJu
IG1ha2VTdHJpbmcoImN1YmljLWJlemllcigiLCBmdW5jdGlvbi54MSgpLCAiLCAiLCBmdW5jdGlv
bi55MSgpLCAiLCAiLCBmdW5jdGlvbi54MigpLCAiLCAiLCBmdW5jdGlvbi55MigpLCAnKScpOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4v
Rm9udENhY2hlV2luLmNwcAppbmRleCA2MTk5YTRjODA2ZGE0ZGZmNDdkNzhkNWNmNWI1ZGU4MDkw
MTc2MjlhLi40NTA0ZDAxOGYxZDc3ZDI0NGIzN2M5YWI4ZWU2YmJmNDgzMjEyMTRiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2lu
LmNwcApAQCAtMzc4LDExICszNzgsMTEgQEAgUmVmPEZvbnQ+IEZvbnRDYWNoZTo6bGFzdFJlc29y
dEZhbGxiYWNrRm9udChjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnREZXNjcmlwdGkKICAgICAg
ICAgLy8gU29ydGVkIGJ5IG1vc3QgdG8gbGVhc3QgZ2x5cGhzIGFjY29yZGluZyB0byBodHRwOi8v
ZW4ud2lraXBlZGlhLm9yZy93aWtpL1VuaWNvZGVfdHlwZWZhY2VzCiAgICAgICAgIC8vIFN0YXJ0
IHdpdGggVGltZXMgTmV3IFJvbWFuIGFsc28gc2luY2UgaXQgaXMgdGhlIGRlZmF1bHQgaWYgdGhl
IHVzZXIgZG9lc24ndCBjaGFuZ2UgcHJlZnMuCiAgICAgICAgIHN0YXRpYyBOZXZlckRlc3Ryb3ll
ZDxjb25zdCBTdHJpbmc+IGZhbGxiYWNrRm9udHNbXSA9IHsKLSAgICAgICAgICAgIFN0cmluZygi
VGltZXMgTmV3IFJvbWFuIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCksCi0gICAgICAg
ICAgICBTdHJpbmcoIk1pY3Jvc29mdCBTYW5zIFNlcmlmIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9t
TGl0ZXJhbCksCi0gICAgICAgICAgICBTdHJpbmcoIlRhaG9tYSIsIFN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpLAotICAgICAgICAgICAgU3RyaW5nKCJMdWNpZGEgU2FucyBVbmljb2RlIiwg
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCksCi0gICAgICAgICAgICBTdHJpbmcoIkFyaWFs
IiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkKKyAgICAgICAgICAgICJUaW1lcyBOZXcg
Um9tYW4iX3N0ciwKKyAgICAgICAgICAgICJNaWNyb3NvZnQgU2FucyBTZXJpZiJfc3RyLAorICAg
ICAgICAgICAgIlRhaG9tYSJfc3RyLAorICAgICAgICAgICAgIkx1Y2lkYSBTYW5zIFVuaWNvZGUi
X3N0ciwKKyAgICAgICAgICAgICJBcmlhbCJfc3RyCiAgICAgICAgIH07CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChmYWxsYmFja0ZvbnRzKTsgKytpKSB7
CiAgICAgICAgICAgICBpZiAoZm9udEZvckZhbWlseShmb250RGVzY3JpcHRpb24sIGZhbGxiYWNr
Rm9udHNbaV0pKSB7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0u
Y3BwCmluZGV4IDVmOTZiNzU2ZDM5NmUwZDk5MjE4Y2RiNDE0ZjkzOGM5NmQ5OTQ2YTkuLjk5OTU3
NWE2ZWMyNzJmOGI0MjFiYmUwMjQxMjcwZDk2NDMwYmNlMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwCkBAIC04NDAsNyArODQwLDcgQEAgVEVTVF9G
KEZpbGVTeXN0ZW1UZXN0LCByZWFkRW50aXJlRmlsZSkKIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwg
bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgpCiB7CiAgICAgRVhQRUNUX1RSVUUoRmlsZVN5
c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgodGVtcEZpbGVQYXRoKCkpKTsKLSAg
ICBhdXRvIHJlc3VsdCA9IEZpbGVTeXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRo
KFN0cmluZygiVGhpc2lzbm90YXJlYWxmaWxlIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJh
bCkpOworICAgIGF1dG8gcmVzdWx0ID0gRmlsZVN5c3RlbTo6bWFrZVNhZmVUb1VzZU1lbW9yeU1h
cEZvclBhdGgoIlRoaXNpc25vdGFyZWFsZmlsZSJfc3RyKTsKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKSAmJiAhUExBVEZPUk0oSU9TX0ZBTUlMWV9TSU1VTEFUT1IpCiAgICAgLy8gTlNGaWxlUHJv
dGVjdGlvbktleSBvbmx5IGFjdHVhbGx5IG1lYW5zIGFueXRoaW5nIG9uLWRldmljZS4KICAgICBF
WFBFQ1RfRkFMU0UocmVzdWx0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1dURlN0cmluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZT
dHJpbmcuY3BwCmluZGV4IDBlMGU5YzdmODg3ZjNlYWY3YzQ3NzVhMDE0ZjFlNmNjYThkNDEwZjEu
LmYxZTczNDk3Y2Y3Mzk3ZWU1M2M2NTMxZjljNzc0MmJhN2ZiZWQyNjggMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcApAQCAtNDcsMTIgKzQ3LDYgQEAgVEVT
VChXVEYsIFN0cmluZ0NyZWF0aW9uRnJvbUxpdGVyYWwpCiAgICAgRVhQRUNUX0VRKCJTdHJpbmcg
TGl0ZXJhbCIsIHN0cmluZ0Zyb21MaXRlcmFsKTsKICAgICBFWFBFQ1RfVFJVRShzdHJpbmdGcm9t
TGl0ZXJhbC5pczhCaXQoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygiU3RyaW5nIExpdGVyYWwi
KSwgc3RyaW5nRnJvbUxpdGVyYWwpOwotCi0gICAgU3RyaW5nIHN0cmluZ1dpdGhUZW1wbGF0ZSgi
VGVtcGxhdGUgTGl0ZXJhbCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIEVY
UEVDVF9FUShzdHJsZW4oIlRlbXBsYXRlIExpdGVyYWwiKSwgc3RyaW5nV2l0aFRlbXBsYXRlLmxl
bmd0aCgpKTsKLSAgICBFWFBFQ1RfRVEoIlRlbXBsYXRlIExpdGVyYWwiLCBzdHJpbmdXaXRoVGVt
cGxhdGUpOwotICAgIEVYUEVDVF9UUlVFKHN0cmluZ1dpdGhUZW1wbGF0ZS5pczhCaXQoKSk7Ci0g
ICAgRVhQRUNUX0VRKFN0cmluZygiVGVtcGxhdGUgTGl0ZXJhbCIpLCBzdHJpbmdXaXRoVGVtcGxh
dGUpOwogfQogCiBURVNUKFdURiwgU3RyaW5nQVNDSUkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455400</attachid>
            <date>2022-03-22 11:16:58 -0700</date>
            <delta_ts>2022-03-23 13:50:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238162-20220322111657.patch</filename>
            <type>text/plain</type>
            <size>801398</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
MjhiZTQ2MDVlZjQ5MWFhYmRiNDU3Yzk0ZWQ3ZmYzNmMyMDU5MWZlLi5lNzA4MTAxZDVmOGI1MzYw
OGNkZmI5NTFlZjk0YjhlMzhmZjI3OGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MTUgQEAKKzIwMjItMDMtMjIgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
KworICAgICAgICBTdHJpbmcgbGl0ZXJhbHMgd2l0aCBfc3RyIHN1ZmZpeCBzaG91bGQgbm90IG5l
ZWQgdG8gZG8gc3RybGVuKCkgYXQgcnVudGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgQWRvcHQgdGhlICIiX3N0ciBvcGVyYXRvciBpbiBtb3JlIHBsYWNl
cyBzbyB0aGV5IGNhbiBsZXZlcmFnZSB0aGUgb3B0aW1pemF0aW9uLgorCisgICAgICAgICogQVBJ
L0pTQVBJR2xvYmFsT2JqZWN0Lm1tOgorICAgICAgICAoSlNDOjpjb21wdXRlVmFsaWRJbXBvcnRT
cGVjaWZpZXIpOgorICAgICAgICAoSlNDOjpKU0FQSUdsb2JhbE9iamVjdDo6bW9kdWxlTG9hZGVy
RmV0Y2gpOgorICAgICAgICAqIEFQSS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAg
ICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6aW5pdCk6CisgICAgICAgIChKU0M6
OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y3VzdG9tVG9QcmltaXRpdmUpOgorICAgICAgICAo
SlNDOjpKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OnN0YXRpY0Z1bmN0aW9uR2V0dGVySW1wbCk6
CisgICAgICAgIChKU0M6OkpTQ2FsbGJhY2tPYmplY3Q8UGFyZW50Pjo6Y2FsbGJhY2tHZXR0ZXJJ
bXBsKToKKyAgICAgICAgKiBBUEkvSlNPYmplY3RSZWYuY3BwOgorICAgICAgICAoSlNPYmplY3RN
YWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2spOgorICAgICAgICAqIEFQSS9KU1NjcmlwdC5tbToKKyAg
ICAgICAgKC1bSlNTY3JpcHQgd3JpdGVDYWNoZTpdKToKKyAgICAgICAgKiBBUEkvSlNUeXBlZEFy
cmF5LmNwcDoKKyAgICAgICAgKEpTT2JqZWN0R2V0QXJyYXlCdWZmZXJCeXRlc1B0cik6CisgICAg
ICAgICogQVBJL0pTVmFsdWUubW06CisgICAgICAgIChjb250YWluZXJWYWx1ZVRvT2JqZWN0KToK
KyAgICAgICAgKHZhbHVlVG9BcnJheSk6CisgICAgICAgICh2YWx1ZVRvRGljdGlvbmFyeSk6Cisg
ICAgICAgICogQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tOgorICAgICAgICAoSlNDOjpvYmpD
Q2FsbGJhY2tGdW5jdGlvbkNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6b2JqQ0NhbGxi
YWNrRnVuY3Rpb25DYWxsQXNDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6Ok9iakNDYWxsYmFj
a0Z1bmN0aW9uSW1wbDo6Y2FsbCk6CisgICAgICAgICogQVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5j
dGlvbi5jcHA6CisgICAgICAgIChKU0M6OkpTQ0NhbGxiYWNrRnVuY3Rpb246OmNhbGwpOgorICAg
ICAgICAoSlNDOjpKU0NDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QpOgorICAgICAgICAqIEFQ
SS9nbGliL0pTQ0NvbnRleHQuY3BwOgorICAgICAgICAoanNjQ29udGV4dEpTVmFsdWVUb0dWYWx1
ZSk6CisgICAgICAgICogQVBJL2dsaWIvSlNDVmFsdWUuY3BwOgorICAgICAgICAoanNjVmFsdWVP
YmplY3REZWZpbmVQcm9wZXJ0eUFjY2Vzc29yKToKKyAgICAgICAgKGpzY1ZhbHVlRnVuY3Rpb25D
cmVhdGUpOgorICAgICAgICAqIGJ1aWx0aW5zL0J1aWx0aW5VdGlscy5oOgorICAgICAgICAqIGJ5
dGVjb2RlL0NvZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bmFtZUZvclJl
Z2lzdGVyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY05leHQp
OgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJhdG9yR2VuZXJpY0Ns
b3NlKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxlZ2F0ZVlpZWxk
KToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpT
Qzo6RnVuY3Rpb25DYWxsVmFsdWVOb2RlOjplbWl0Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQ
b3N0Zml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1p
dEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6QXNzaWduRXJyb3JOb2RlOjplbWl0Qnl0ZWNvZGUp
OgorICAgICAgICAoSlNDOjpGb3JJbk5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6
OkZvck9mTm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6Q2xhc3NFeHByTm9kZTo6
ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6T2JqZWN0UGF0dGVybk5vZGU6OmJpbmRWYWx1
ZSBjb25zdCk6CisgICAgICAgICogZGZnL0RGR0J5dGVDb2RlUGFyc2VyLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayk6CisgICAgICAgICogZGZnL0RG
R0RyaXZlci5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Y29tcGlsZUltcGwpOgorICAgICAgICAq
IGRmZy9ERkdPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpuZXdUeXBlZEFycmF5
V2l0aFNpemUpOgorICAgICAgICAoSlNDOjpERkc6OkpTQ19ERUZJTkVfSklUX09QRVJBVElPTik6
CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwOgorICAgICAgICAo
SlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRsZU5vZGUpOgorICAgICAgICAq
IGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgorICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJE
RkdUb0IzOjp2YWxpZGF0ZUFJU3RhdGUpOgorICAgICAgICAqIGhlYXAvSGVhcFNuYXBzaG90QnVp
bGRlci5jcHA6CisgICAgICAgIChKU0M6OkhlYXBTbmFwc2hvdEJ1aWxkZXI6Ompzb24pOgorICAg
ICAgICAqIGluc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OkNvbnNvbGVNZXNzYWdlOjphZGRUb0Zyb250ZW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6Q29u
c29sZU1lc3NhZ2U6OmNsZWFyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkNvbnRlbnRTZWFyY2hVdGlsaXRpZXM6
OmZpbmRTdHlsZXNoZWV0U291cmNlTWFwVVJMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6SW5qZWN0
ZWRTY3JpcHQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZXhlY3V0ZSk6
CisgICAgICAgIChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0OjpldmFsdWF0ZSk6CisgICAgICAg
IChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0Ojphd2FpdFByb21pc2UpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6ZXZhbHVhdGVPbkNhbGxGcmFtZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldFByZXZpZXcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkluamVj
dGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdDo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnNhdmVSZXN1bHQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMgY29uc3QpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6d3JhcE9iamVjdCBjb25zdCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwSlNPTlN0cmluZyBjb25zdCk6CisgICAgICAgIChJbnNw
ZWN0b3I6OkluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUgY29uc3QpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6cHJldmlld1ZhbHVlIGNvbnN0KToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5qZWN0ZWRTY3JpcHQ6OnNldEV2ZW50VmFsdWUpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdDo6Y2xlYXJFdmVudFZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHQ6OnNldEV4Y2VwdGlvblZhbHVlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5qZWN0ZWRTY3JpcHQ6OmNsZWFyRXhjZXB0aW9uVmFsdWUpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbmplY3RlZFNjcmlwdDo6ZmluZE9iamVjdEJ5SWQgY29uc3QpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE9iamVjdCk6CisgICAgICAgIChJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5q
ZWN0ZWRTY3JpcHQ6OnJlbGVhc2VPYmplY3RHcm91cCk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
amVjdGVkU2NyaXB0OjpjcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdCBjb25zdCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0QmFzZTo6bWFrZUFzeW5jQ2FsbCk6CisgICAgICAgIChJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0QmFzZTo6Y2hlY2tDYWxsUmVzdWx0KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOjppbmplY3RlZFNjcmlwdEZvck9iamVjdElkKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0ZWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkJh
Y2tlbmREaXNwYXRjaGVyOjpkaXNwYXRjaCk6CisgICAgICAgIChJbnNwZWN0b3I6OkJhY2tlbmRE
aXNwYXRjaGVyOjpzZW5kUmVzcG9uc2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpCYWNrZW5kRGlz
cGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9i
amVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2Jh
bE9iamVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQpOgorICAgICAgICAoSW5zcGVjdG9yOjpK
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnRpbWVTdGFtcCk6CisgICAgICAgIChJbnNwZWN0
b3I6OkpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6cmVjb3JkKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50OjpyZWNvcmRFbmQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QpOgorICAg
ICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OmFw
cGVuZEFQSUJhY2t0cmFjZSk6CisgICAgICAgICogaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRI
b3N0LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNj
cmlwdEhvc3Q6OmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdldHRlclR5cGVFcnJvcik6Cisg
ICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpzdWJ0eXBlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFsUHJvcGVydGll
cyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUluc3Rh
bmNlcyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpxdWVyeUhv
bGRlcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwOgor
ICAgICAgICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRDYWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNj
b3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1l
Ojp0eXBlIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6U2NyaXB0QXJndW1lbnRzOjpnZXRGaXJzdEFyZ3VtZW50QXNT
dHJpbmcgY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5
LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6ZXh0cmFjdFNvdXJjZUluZm9ybWF0aW9uRnJvbUV4
Y2VwdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckFnZW50OjpJbnNwZWN0b3JBZ2VudCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6SW5zcGVjdG9yQXVkaXRBZ2VudCk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckF1ZGl0QWdlbnQ6OnNldHVwKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6dGVhcmRvd24pOgorICAgICAgICAqIGludGVycHJl
dGVyL0NhbGxGcmFtZS5jcHA6CisgICAgICAgIChKU0M6OkNhbGxGcmFtZTo6ZnJpZW5kbHlGdW5j
dGlvbk5hbWUpOgorICAgICAgICAqIGludGVycHJldGVyL1NoYWRvd0NoaWNrZW4uY3BwOgorICAg
ICAgICAoSlNDOjpTaGFkb3dDaGlja2VuOjpQYWNrZXQ6OmR1bXAgY29uc3QpOgorICAgICAgICAo
SlNDOjpTaGFkb3dDaGlja2VuOjpGcmFtZTo6ZHVtcCBjb25zdCk6CisgICAgICAgICogaW50ZXJw
cmV0ZXIvU3RhY2tWaXNpdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFt
ZTo6ZnVuY3Rpb25OYW1lIGNvbnN0KToKKyAgICAgICAgKEpTQzo6U3RhY2tWaXNpdG9yOjpGcmFt
ZTo6c291cmNlVVJMIGNvbnN0KToKKyAgICAgICAgKiBqaXQvSklULmNwcDoKKyAgICAgICAgKEpT
Qzo6SklUOjpkb01haW5UaHJlYWRQcmVwYXJhdGlvbkJlZm9yZUNvbXBpbGUpOgorICAgICAgICAq
IGppdC9KSVRPcGVyYXRpb25zLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9KSVRfT1BF
UkFUSU9OKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKToKKyAgICAgICAgKEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChj
b21wdXRlRmlsZVBhdGgpOgorICAgICAgICAocnVuV2l0aE9wdGlvbnMpOgorICAgICAgICAocnVu
SW50ZXJhY3RpdmUpOgorICAgICAgICAqIGxsaW50L0xMSW50U2xvd1BhdGhzLmNwcDoKKyAgICAg
ICAgKEpTQzo6TExJbnQ6OkxMSU5UX1NMT1dfUEFUSF9ERUNMKToKKyAgICAgICAgKEpTQzo6TExJ
bnQ6OmhhbmRsZUl0ZXJhdG9yT3BlbkNoZWNrcG9pbnQpOgorICAgICAgICAoSlNDOjpMTEludDo6
aGFuZGxlSXRlcmF0b3JOZXh0Q2hlY2twb2ludCk6CisgICAgICAgICogcGFyc2VyL0xleGVyLmNw
cDoKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmludmFsaWRDaGFyYWN0ZXJNZXNzYWdlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlU3RyaW5nKToKKyAgICAgICAgKEpTQzo6
TGV4ZXI8VD46OnBhcnNlQ29tcGxleEVzY2FwZSk6CisgICAgICAgIChKU0M6OkxleGVyPFQ+Ojpw
YXJzZVN0cmluZ1Nsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OnBhcnNlVGVtcGxh
dGVMaXRlcmFsKToKKyAgICAgICAgKEpTQzo6TGV4ZXI8VD46OmxleFdpdGhvdXRDbGVhcmluZ0xp
bmVUZXJtaW5hdG9yKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW5uZXIpOgorICAgICAgICAqIHBhcnNlci9QYXJz
ZXIuaDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpzZXRFcnJvck1lc3NhZ2UpOgorICAgICAgICAq
IHJ1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpBYnN0cmFj
dE1vZHVsZVJlY29yZDo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvQXJyYXlD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEFycmF5V2l0aFNpemVRdWly
ayk6CisgICAgICAgIChKU0M6OmlzQXJyYXlTbG93SW5saW5lKToKKyAgICAgICAgKiBydW50aW1l
L0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6c2V0TGVuZ3RoKToKKyAgICAgICAg
KEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6dG9Mb2NhbGVT
dHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKEpTQzo6QXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6
CisgICAgICAgICogcnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpBc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0F0b21pY3NPYmplY3QuY3BwOgorICAgICAg
ICAoSlNDOjphdG9taWNzV2FpdEltcGwpOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50Q29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpCaWdJbnRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvQmlnSW50
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dG9UaGlzQmlnSW50VmFsdWUpOgorICAgICAg
ICAqIHJ1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9DT01NT05fU0xPV19QQVRIKToKKyAgICAgICAgKiBydW50aW1lL0NvbnNvbGVDbGllbnQuY3Bw
OgorICAgICAgICAoSlNDOjphcHBlbmRNZXNzYWdlUHJlZml4KToKKyAgICAgICAgKEpTQzo6Q29u
c29sZUNsaWVudDo6cHJpbnRDb25zb2xlTWVzc2FnZVdpdGhBcmd1bWVudHMpOgorICAgICAgICAq
IHJ1bnRpbWUvQ29uc29sZU9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnZhbHVlT3JEZWZhdWx0
TGFiZWxTdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OmZvcm1hdGVEYXRlSW5zdGFuY2UpOgorICAgICAgICAoSlNDOjpEYXRlUHJvdG90
eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OmNyZWF0
ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlU3ludGF4RXJy
b3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVh
dGVPdXRPZk1lbW9yeUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmg6CisgICAgICAg
IChKU0M6OnRocm93Vk1FcnJvcik6CisgICAgICAgICogcnVudGltZS9FcnJvckluc3RhbmNlLmNw
cDoKKyAgICAgICAgKEpTQzo6RXJyb3JJbnN0YW5jZTo6c2FuaXRpemVkTmFtZVN0cmluZyk6Cisg
ICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9FcnJvclByb3RvdHlwZS5o
OgorICAgICAgICAqIHJ1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHA6CisgICAgICAgIChKU0M6OmRv
RXhjZXB0aW9uRnV6emluZyk6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgKEpT
Qzo6bm90QUZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlNDOjppbnZhbGlkUGFy
YW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9uU291cmNlQXBwZW5kZXIpOgorICAgICAgICAoSlND
OjppbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvblNv
dXJjZUFwcGVuZGVyKToKKyAgICAgICAgKEpTQzo6aW52YWxpZFByb3RvdHlwZVNvdXJjZUFwcGVu
ZGVyKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQYXJhbWV0ZXJF
cnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUludmFsaWRJblBhcmFtZXRlckVycm9yKToKKyAg
ICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJvck5vdEZ1bmN0
aW9uKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlSW52YWxpZEluc3RhbmNlb2ZQYXJhbWV0ZXJFcnJv
ckhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvbik6CisgICAgICAgIChKU0M6OmNyZWF0ZU5vdEFD
b25zdHJ1Y3RvckVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlTm90QUZ1bmN0aW9uRXJyb3Ip
OgorICAgICAgICAoSlNDOjpjcmVhdGVOb3RBbk9iamVjdEVycm9yKToKKyAgICAgICAgKEpTQzo6
Y3JlYXRlSW52YWxpZFByb3RvdHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlVERaRXJy
b3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVJbnZhbGlkUHJpdmF0ZU5hbWVFcnJvcik6CisgICAg
ICAgIChKU0M6OmNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IpOgorICAgICAgICAoSlND
OjpjcmVhdGVQcml2YXRlTWV0aG9kQWNjZXNzRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVS
ZWluc3RhbGxQcml2YXRlTWV0aG9kRXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRmluYWxpemF0
aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkZpbmFsaXphdGlvblJl
Z2lzdHJ5Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lz
dHJ5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0RmluYWxpemF0aW9uUmVnaXN0cnkp
OgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1
bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6RnVuY3Rpb25FeGVj
dXRhYmxlOjp0b1N0cmluZ1Nsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkdlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpnZXRGdW5jdGlvblJlYWxtKToKKyAgICAgICAgKiBydW50
aW1lL0ludGxDb2xsYXRvci5jcHA6CisgICAgICAgIChKU0M6OkludGxDb2xsYXRvcjo6c29ydExv
Y2FsZURhdGEpOgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OnNlYXJjaExvY2FsZURhdGEp
OgorICAgICAgICAoSlNDOjpJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcik6CisgICAg
ICAgIChKU0M6OkludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRs
Q29sbGF0b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUv
SW50bENvbGxhdG9yUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OmNh
bm9uaWNhbGl6ZVRpbWVab25lTmFtZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1h
dDo6bG9jYWxlRGF0YSk6CisgICAgICAgIChKU0M6OnRvRGF0ZVRpbWVPcHRpb25zQW55RGF0ZSk6
CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9y
bWF0KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQgY29uc3QpOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOgor
ICAgICAgICAoSlNDOjpJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZURhdGVJbnRlcnZhbEZvcm1h
dElmTmVjZXNzYXJ5KToKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRS
YW5nZSk6CisgICAgICAgIChKU0M6OkludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1Bh
cnRzKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bERpc3BsYXlOYW1lczo6aW5pdGlhbGl6
ZURpc3BsYXlOYW1lcyk6CisgICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXM6Om9mIGNvbnN0
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OkludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24p
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9J
bnRsTGlzdEZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxMaXN0Rm9ybWF0Ojppbml0aWFs
aXplTGlzdEZvcm1hdCk6CisgICAgICAgIChKU0M6OnN0cmluZ0xpc3RGcm9tSXRlcmFibGUpOgor
ICAgICAgICAoSlNDOjpJbnRsTGlzdEZvcm1hdDo6Zm9ybWF0IGNvbnN0KToKKyAgICAgICAgKEpT
Qzo6SW50bExpc3RGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkludGxMaXN0
Rm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0lu
dGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGUuY3BwOgorICAgICAgICAo
SlNDOjpJbnRsTG9jYWxlOjppbml0aWFsaXplTG9jYWxlKToKKyAgICAgICAgKEpTQzo6SW50bExv
Y2FsZTo6Y2FsZW5kYXJzKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y29sbGF0aW9ucyk6
CisgICAgICAgIChKU0M6OkludGxMb2NhbGU6OmhvdXJDeWNsZXMpOgorICAgICAgICAoSlNDOjpJ
bnRsTG9jYWxlOjpudW1iZXJpbmdTeXN0ZW1zKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6
dGltZVpvbmVzKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6dGV4dEluZm8pOgorICAgICAg
ICAoSlNDOjpJbnRsTG9jYWxlOjp3ZWVrSW5mbyk6CisgICAgICAgICogcnVudGltZS9JbnRsTG9j
YWxlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgorICAgICAgICAo
SlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6
CisgICAgICAgIChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQp
OgorICAgICAgICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQgY29uc3QpOgorICAgICAg
ICAoSlNDOjpJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZSBjb25zdCk6CisgICAgICAgIChK
U0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0c0ludGVybmFsKToKKyAgICAg
ICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bE51bWJlckZvcm1hdDo6dXNlR3JvdXBpbmdWYWx1ZSk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHNJbnRlcm5hbCk6CisgICAgICAg
IChKU0M6OkludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFRvUGFydHMgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
SW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICog
cnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oOgorICAgICAgICAoSlNDOjpzZXROdW1i
ZXJGb3JtYXREaWdpdE9wdGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUik6
CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVu
dGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6Y2Fub25pY2FsaXplTG9jYWxlTGlz
dCk6CisgICAgICAgIChKU0M6OmRlZmF1bHRMb2NhbGUpOgorICAgICAgICAoSlNDOjpyZXNvbHZl
TG9jYWxlKToKKyAgICAgICAgKEpTQzo6bWFwSUNVQ2FsZW5kYXJLZXl3b3JkVG9CQ1A0Nyk6Cisg
ICAgICAgIChKU0M6Om1hcEJDUDQ3VG9JQ1VDYWxlbmRhcktleXdvcmQpOgorICAgICAgICAoSlND
OjptYXBJQ1VDb2xsYXRpb25LZXl3b3JkVG9CQ1A0Nyk6CisgICAgICAgIChKU0M6OmF2YWlsYWJs
ZUNvbGxhdGlvbnMpOgorICAgICAgICAoSlNDOjphdmFpbGFibGVDdXJyZW5jaWVzKToKKyAgICAg
ICAgKEpTQzo6YXZhaWxhYmxlTnVtYmVyaW5nU3lzdGVtcyk6CisgICAgICAgIChKU0M6OmNhbm9u
aWNhbGl6ZVRpbWVab25lTmFtZUZyb21JQ1VUaW1lWm9uZSk6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0SW5saW5l
cy5oOgorICAgICAgICAoSlNDOjppbnRsR2V0T3B0aW9uc09iamVjdCk6CisgICAgICAgICogcnVu
dGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6
OmluaXRpYWxpemVQbHVyYWxSdWxlcyk6CisgICAgICAgIChKU0M6OkludGxQbHVyYWxSdWxlczo6
cmVzb2x2ZWRPcHRpb25zIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzOjpz
ZWxlY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpJbnRsUGx1cmFsUnVsZXM6OnNlbGVjdFJhbmdl
IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6SW50bFBsdXJhbFJ1bGVzQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0
aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGlt
ZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFJlbGF0aXZl
VGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdCk6CisgICAgICAgIChKU0M6
OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyBjb25zdCk6CisgICAgICAg
IChKU0M6OkludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdEludGVybmFsIGNvbnN0KToKKyAg
ICAgICAgKEpTQzo6SW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyBjb25zdCk6
CisgICAgICAgICogcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3Bw
OgorICAgICAgICAoSlNDOjpJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAg
ICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRJdGVyYXRvclByb3RvdHlwZS5jcHA6CisgICAgICAg
IChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JbnRs
U2VnbWVudGVyLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bFNlZ21lbnRlcjo6aW5pdGlhbGl6ZVNl
Z21lbnRlcik6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50ZXI6OnNlZ21lbnQgY29uc3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAg
KEpTQzo6SW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9JbnRsU2VnbWVudGVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50cy5j
cHA6CisgICAgICAgIChKU0M6OkludGxTZWdtZW50czo6Y3JlYXRlU2VnbWVudEl0ZXJhdG9yKToK
KyAgICAgICAgKiBydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlwZS5jcHA6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9JdGVyYXRv
ck9wZXJhdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjppdGVyYXRvck5leHQpOgorICAgICAgICAo
SlNDOjppdGVyYXRvckNsb3NlKToKKyAgICAgICAgKEpTQzo6aGFzSXRlcmF0b3JNZXRob2QpOgor
ICAgICAgICAoSlNDOjppdGVyYXRvck1ldGhvZCk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5
LmNwcDoKKyAgICAgICAgKEpTQzo6SlNBcnJheTo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAg
ICAoSlNDOjpKU0FycmF5OjpwdXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclBy
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU3BlY2llc0NvbnN0cnVjdG9y
U2xvdyk6CisgICAgICAgIChKU0M6OmFycmF5QnVmZmVyU2xpY2UpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwOgorICAgICAgICAoSlNDOjp2YWxpZGF0ZVR5cGVkQXJy
YXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNCaWdJbnQuY3BwOgorICAgICAgICAoSlNDOjpKU0Jp
Z0ludDo6Y3JlYXRlV2l0aExlbmd0aCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50OjpleHBvbmVu
dGlhdGVJbXBsKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmRpdmlkZUltcGwpOgorICAgICAg
ICAoSlNDOjpKU0JpZ0ludDo6cmVtYWluZGVySW1wbCk6CisgICAgICAgIChKU0M6OkpTQmlnSW50
OjpsZWZ0U2hpZnRCeUFic29sdXRlKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OmFsbG9jYXRl
Rm9yKToKKyAgICAgICAgKEpTQzo6SlNCaWdJbnQ6OnRvTnVtYmVyIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6SlNCaWdJbnQ6OmFzVWludE5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTQmlnSW50
Lmg6CisgICAgICAgICogcnVudGltZS9KU0NKU1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNW
YWx1ZTo6dG9OdW1iZXJTbG93Q2FzZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRv
QmlnSW50IGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OnRvUHJlZmVycmVkUHJpbWl0aXZlVHlwZSk6CisgICAgICAgICogcnVudGlt
ZS9KU0RhdGFWaWV3LmNwcDoKKyAgICAgICAgKEpTQzo6SlNEYXRhVmlldzo6Y3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpn
ZXREYXRhKToKKyAgICAgICAgKEpTQzo6c2V0RGF0YSk6CisgICAgICAgIChKU0M6OkpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9KU0RhdGVNYXRoLmNwcDoKKyAg
ICAgICAgKEpTQzo6RGF0ZUNhY2hlOjpkZWZhdWx0VGltZVpvbmUpOgorICAgICAgICAoSlNDOjpE
YXRlQ2FjaGU6OnRpbWVab25lQ2FjaGVTbG93KToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rp
b24uY3BwOgorICAgICAgICAoSlNDOjpnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUpOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoK
KyAgICAgICAgKEpTQzo6Y29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5lZWRlZCk6CisgICAg
ICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMpOgor
ICAgICAgICAoSlNDOjpjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdJbXBsKToKKyAgICAg
ICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oOgorICAgICAgICAo
SlNDOjpKU0dlbmVyaWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6c2V0V2l0aFNwZWNpZmljVHlw
ZSk6CisgICAgICAgIChKU0M6OkpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpkZWZp
bmVPd25Qcm9wZXJ0eSk6CisgICAgICAgICogcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvdHlwZUZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpzcGVjaWVzQ29uc3RydWN0KToK
KyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAg
ICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UpOgorICAgICAgICAo
SlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1YmFycmF5Q3JlYXRlKToKKyAg
ICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9i
YWxPYmplY3Q6OmluaXQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dh
YmxlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlOjpuYW1lIGNv
bnN0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcDoKKyAg
ICAgICAgKEpTQzo6ZW5jb2RlKToKKyAgICAgICAgKEpTQzo6ZGVjb2RlKToKKyAgICAgICAgKiBy
dW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNNb2R1
bGVOYW1lc3BhY2VPYmplY3Q6OmRlZmluZU93blByb3BlcnR5KToKKyAgICAgICAgKiBydW50aW1l
L0pTT05PYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5n
aWZpZWRWYWx1ZSk6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpjYWxjdWxhdGVkQ2xhc3NOYW1lKToKKyAgICAgICAgKEpTQzo6SlNPYmpl
Y3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKToKKyAgICAgICAgKEpTQzo6Y2FsbFRvUHJp
bWl0aXZlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6b3JkaW5hcnlUb1ByaW1p
dGl2ZSBjb25zdCk6CisgICAgICAgIChKU0M6OkpTT2JqZWN0OjpkZWZhdWx0SGFzSW5zdGFuY2Up
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmaW5lT3duSW5kZXhlZFByb3BlcnR5KToKKyAg
ICAgICAgKEpTQzo6dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAg
ICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlND
OjpKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAg
KEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL0pTVHlw
ZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04pOgorICAgICAgICAoSlNDOjpjcmVhdGVUeXBlZEFycmF5SXRlcmF0b3JPYmplY3Qp
OgorICAgICAgICAoSlNDOjpKU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bik6CisgICAgICAgICogcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6
TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXgpOgorICAgICAgICAoSlNDOjpMaXRl
cmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleFN0cmluZ1Nsb3cpOgorICAgICAgICAoSlND
OjpMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleE51bWJlcik6CisgICAgICAgIChK
U0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpzZXRFcnJvck1lc3NhZ2VGb3JUb2tlbik6Cisg
ICAgICAgIChKU0M6OkxpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZVByaW1pdGl2ZVZhbHVl
KToKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlKToKKyAgICAg
ICAgKiBydW50aW1lL0xpdGVyYWxQYXJzZXIuaDoKKyAgICAgICAgKEpTQzo6TGl0ZXJhbFBhcnNl
cjo6Z2V0RXJyb3JNZXNzYWdlKToKKyAgICAgICAgKiBydW50aW1lL01hcENvbnN0cnVjdG9yLmNw
cDoKKyAgICAgICAgKEpTQzo6TWFwQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL01h
cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldE1hcCk6CisgICAgICAgICogcnVudGlt
ZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAoSlNDOjpleHRyYWN0VG9TdHJpbmdSYWRpeEFyZ3VtZW50KToKKyAg
ICAgICAgKiBydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6dG9Qcm9wZXJ0eURlc2NyaXB0
b3IpOgorICAgICAgICAoSlNDOjpvYmplY3RDb25zdHJ1Y3RvclNlYWwpOgorICAgICAgICAoSlND
OjpvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAg
ICAgICAqIHJ1bnRpbWUvT3BlcmF0aW9ucy5oOgorICAgICAgICAoSlNDOjpqc1VSU2hpZnQpOgor
ICAgICAgICAqIHJ1bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwOgorICAgICAgICAoSlNDOjpQ
cm9ncmFtRXhlY3V0YWJsZTo6aW5pdGlhbGl6ZUdsb2JhbFByb3BlcnRpZXMpOgorICAgICAgICAq
IHJ1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9Qcm94eU9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OlByb3h5T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OnBl
cmZvcm1Qcm94eUdldCk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJu
YWxNZXRob2RHZXRPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJm
b3JtSGFzUHJvcGVydHkpOgorICAgICAgICAoSlNDOjpQcm94eU9iamVjdDo6cGVyZm9ybVB1dCk6
CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6
OlByb3h5T2JqZWN0OjpwZXJmb3JtRGVsZXRlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6
OnBlcmZvcm1QcmV2ZW50RXh0ZW5zaW9ucyk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0Ojpw
ZXJmb3JtSXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1E
ZWZpbmVPd25Qcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtR2V0
T3duUHJvcGVydHlOYW1lcyk6CisgICAgICAgIChKU0M6OlByb3h5T2JqZWN0OjpwZXJmb3JtU2V0
UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6UHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90b3R5
cGUpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9SZWdFeHAuY3Bw
OgorICAgICAgICAoSlNDOjplc2NhcGVQYXR0ZXJuKToKKyAgICAgICAgKiBydW50aW1lL1JlZ0V4
cENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fU0VUVEVSKToKKyAgICAgICAgKEpT
Qzo6dG9GbGFncyk6CisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
UnVudGltZVR5cGUuY3BwOgorICAgICAgICAoSlNDOjpydW50aW1lVHlwZUFzU3RyaW5nKToKKyAg
ICAgICAgKiBydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwOgorICAgICAgICAoSlNDOjpTYW1w
bGluZ1Byb2ZpbGVyOjpTdGFja0ZyYW1lOjpkaXNwbGF5TmFtZSk6CisgICAgICAgIChKU0M6OlNh
bXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2Rlcyk6CisgICAgICAgICogcnVudGltZS9T
Y3JpcHRFeGVjdXRhYmxlLmNwcDoKKyAgICAgICAgKEpTQzo6U2NyaXB0RXhlY3V0YWJsZTo6cHJl
cGFyZUZvckV4ZWN1dGlvbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvU2V0Q29uc3RydWN0b3Iu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAq
IHJ1bnRpbWUvU2V0UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Z2V0U2V0KToKKyAgICAg
ICAgKiBydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1N0YWNrRnJhbWUuY3Bw
OgorICAgICAgICAoSlNDOjpTdGFja0ZyYW1lOjpzb3VyY2VVUkwgY29uc3QpOgorICAgICAgICAo
SlNDOjpTdGFja0ZyYW1lOjpmdW5jdGlvbk5hbWUgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAg
KEpTQzo6U3RyaW5nUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OnRvTG9jYWxlQ2FzZSk6Cisg
ICAgICAgICogcnVudGltZS9TeW1ib2wuY3BwOgorICAgICAgICAoSlNDOjpTeW1ib2w6OnRvTnVt
YmVyIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbFByb3RvdHlwZS5jcHA6CisgICAg
ICAgIChKU0M6OlN5bWJvbFByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAqIHJ1
bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHA6CisgICAgICAgIChKU0M6OnBhcnNlVGVtcG9yYWxD
YWxlbmRhclN0cmluZyk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmZp
bmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToK
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRyeUNy
ZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpmcm9tRHVyYXRp
b25MaWtlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9JU084NjAxRHVyYXRp
b24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b0xpbWl0ZWREdXJhdGlvbik6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OmNvbXBhcmUpOgorICAgICAgICAoSlND
OjpUZW1wb3JhbER1cmF0aW9uOjp3aXRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxE
dXJhdGlvbjo6YWRkIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6c3Vi
dHJhY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjpyb3VuZCBjb25z
dCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OnRvdGFsIGNvbnN0KToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAqIHJ1
bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1
cmF0aW9uUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAg
KiBydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHA6CisgICAgICAgICogcnVudGltZS9UZW1wb3Jh
bEluc3RhbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsSW5zdGFudENv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUu
Y3BwOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAo
SlNDOjpKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9y
YWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjp0ZW1wb3JhbExhcmdlc3RVbml0KToKKyAgICAg
ICAgKEpTQzo6dGVtcG9yYWxTbWFsbGVzdFVuaXQpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9y
YWxQbGFpblRpbWUuY3BwOgorICAgICAgICAoSlNDOjp0b1BsYWluVGltZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgIChKU0M6OnRvVGVt
cG9yYWxUaW1lUmVjb3JkKToKKyAgICAgICAgKEpTQzo6dG9QYXJ0aWFsVGltZSk6CisgICAgICAg
IChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpblRpbWU6OndpdGggY29uc3QpOgorICAgICAgICAoSlNDOjpleHRyYWN0RGlmZmVyZW5jZU9w
dGlvbnMpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5j
cHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpmcm9tKToKKyAgICAgICAgKiBydW50aW1l
L1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFs
VGltZVpvbmVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9u
ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogcnVudGltZS9UeXBlU2V0LmNwcDoKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6
ZHVtcFR5cGVzIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VHlwZVNldDo6ZGlzcGxheU5hbWUgY29u
c3QpOgorICAgICAgICAoSlNDOjpTdHJ1Y3R1cmVTaGFwZTo6bGVhc3RDb21tb25BbmNlc3Rvcik6
CisgICAgICAgICogcnVudGltZS9UeXBlU2V0Lmg6CisgICAgICAgIChKU0M6OlN0cnVjdHVyZVNo
YXBlOjpzZXRDb25zdHJ1Y3Rvck5hbWUpOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAg
ICAgICAoSlNDOjpWTTo6ZHVtcFR5cGVQcm9maWxlckRhdGEpOgorICAgICAgICAqIHJ1bnRpbWUv
V2Vha01hcENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6V2Vha01hcENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tik6CisgICAgICAgICogcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6Z2V0V2Vha01hcCk6CisgICAgICAgICogcnVudGltZS9XZWFrT2JqZWN0UmVmQ29uc3RydWN0
b3IuY3BwOgorICAgICAgICAoSlNDOjpXZWFrT2JqZWN0UmVmQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAg
ICAgKiBydW50aW1lL1dlYWtPYmplY3RSZWZQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpn
ZXRXZWFrUmVmKToKKyAgICAgICAgKiBydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OldlYWtTZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAg
ICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvV2Vh
a1NldFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmdldFdlYWtTZXQpOgorICAgICAgICAq
IHRvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZU92
ZXJyaWRlSW5mbyk6CisgICAgICAgICogdG9vbHMvSlNEb2xsYXJWTS5jcHA6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisKIDIwMjItMDMtMjEgIFl1c3VrZSBTdXp1
a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBDaGFuZ2UgRGF0ZS5wYXJz
ZSB0byBzdG9wIHJldHVybmluZyBudW1iZXJzIHdpdGggZnJhY3Rpb25hbCBwYXJ0CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDQ0
YmJkYjg5MjJhZWIxYjRhZDVmZDMzYTEwYjBkYmFhZDg2NTQwNzQuLjgxNDdlNDk0YmVjZmUzMWJm
NWM4N2Q4OTBlOTMyYThhNjY1ZDJmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
CisrKyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMjItMDMtMjIg
IENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBTdHJpbmcgbGl0ZXJh
bHMgd2l0aCBfc3RyIHN1ZmZpeCBzaG91bGQgbm90IG5lZWQgdG8gZG8gc3RybGVuKCkgYXQgcnVu
dGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4
MTYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCisKKyAgICAgICAgVGhlICIi
X3N0ciBvcGVyYXRvciB3YXMgY29uc3RydWN0aW5nIGEgU3RyaW5nIGZyb20gYW4gQVNDSUlMaXRl
cmFsLiBXaGlsZSB0aGlzIGF2b2lkZWQgY29waW5nIHRoZSBjaGFyYWN0ZXJzLAorICAgICAgICBp
dCBjb3VsZCB0cmlnZ2VyIGNhbGxzIHRvIHN0cmxlbigpIGF0IHJ1biB0aW1lIHRvIGZpZ3VyZSBv
dXQgdGhlIGxlbmd0aCBvZiB0aGUgc3RyaW5nLiBUaGlzIHdhcyB1bmZvcnR1bmF0ZQorICAgICAg
ICBzaW5jZSB0aGUgIiJfc3RyIG9wZXJhdG9yIHRha2VzIHRoZSBsZW5ndGggb2YgdGhlIHN0cmlu
ZyBhcyBwYXJhbWV0ZXIgYW5kIHdhcyBzaW1wbHkgaWdub3JpbmcgaXQuIFRoZSAiIl9zdHIKKyAg
ICAgICAgb3BlcmF0b3Igbm93IGNvbnN0cnVjdHMgc3RyaW5ncyBtb3JlIGVmZmljaWVudGx5IGJ5
IG5vdCBpZ25vcmluZyB0aGUgbGVuZ3RoIGl0IHRha2VzIGFzIHBhcmFtZXRlciBhbmQgdGh1cwor
ICAgICAgICBhdm9pZGluZyBydW50aW1lIGNhbGxzIHRvIHN0cmxlbigpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggYWxzbyBhZG9wdHMgdGhlICIiX3N0ciBvcGVyYXRvciBpbiBtb3JlIHBsYWNlcyBz
byB0aGV5IGNhbiBsZXZlcmFnZSB0aGUgb3B0aW1pemF0aW9uLgorCisgICAgICAgIENvbmZpcm1l
ZCAwLjYtMC44JSBwcm9ncmVzc2lvbiBvbiBTcGVlZG9tZXRlciBvbiBpTWFjIDIwLDEgb24gYS9i
IGJvdHMuCisKKyAgICAgICAgKiB3dGYvSW5kZW50ZXIuaDoKKyAgICAgICAgKFdURjo6SW5kZW50
ZXI6OkluZGVudGVyKToKKyAgICAgICAgKiB3dGYvTG9nZ2VyLmg6CisgICAgICAgIChXVEY6Okxv
Z0FyZ3VtZW50Ojp0b1N0cmluZyk6CisgICAgICAgICogd3RmL01lZGlhVGltZS5jcHA6CisgICAg
ICAgIChXVEY6Ok1lZGlhVGltZTo6dG9KU09OT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdURjo6
TWVkaWFUaW1lUmFuZ2U6OnRvSlNPTlN0cmluZyBjb25zdCk6CisgICAgICAgICogd3RmL1VSTC5j
cHA6CisgICAgICAgIChXVEY6Om1pbWVUeXBlRnJvbURhdGFVUkwpOgorICAgICAgICAqIHd0Zi9j
Zi9MYW5ndWFnZUNGLmNwcDoKKyAgICAgICAgKFdURjo6cGxhdGZvcm1Vc2VyUHJlZmVycmVkTGFu
Z3VhZ2VzKToKKyAgICAgICAgKiB3dGYvdGV4dC9XVEZTdHJpbmcuY3BwOgorICAgICAgICAoYXNj
aWlEZWJ1Zyk6CisgICAgICAgICogd3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6
OlN0cmluZ0xpdGVyYWxzOjpvcGVyYXRvciBfc3RyKToKKyAgICAgICAgKiB3dGYvdW5peC9MYW5n
dWFnZVVuaXguY3BwOgorICAgICAgICAoV1RGOjpwbGF0Zm9ybUxhbmd1YWdlKToKKwogMjAyMi0w
My0xOSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFZlY3RvciBt
b3ZlIGNvbnN0cnVjdG9yIGFuZCBtb3ZlIGFzc2lnbm1lbnQgb3BlcmF0b3IgYXJlIHN1Ym9wdGlt
YWwgd2hlbiB0aGUgdmVjdG9yIGhhcyBhbiBpbmxpbmUgYnVmZmVyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZm
ZDBkZDlkOTQyMmI0OWZkZjhiYjk5MThlZGVhYTBlOWU4MWY5Zi4uOWRjMDVmMTNhZGRhZGNjMDRj
YzBhY2QwYTMzNTA3ZGFjMzU0ZmQ1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExNyBAQAorMjAy
Mi0wMy0yMiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIFN0cmlu
ZyBsaXRlcmFscyB3aXRoIF9zdHIgc3VmZml4IHNob3VsZCBub3QgbmVlZCB0byBkbyBzdHJsZW4o
KSBhdCBydW50aW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzgxNjIKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KKworICAgICAg
ICBBZG9wdCB0aGUgIiJfc3RyIG9wZXJhdG9yIGluIG1vcmUgcGxhY2VzIHNvIHRoZXkgY2FuIGxl
dmVyYWdlIHRoZSBvcHRpbWl6YXRpb24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0Nv
ZGVHZW5lcmF0b3JKUy5wbToKKyAgICAgICAgKEdlbmVyYXRlRGVmYXVsdFZhbHVlKToKKyAgICAg
ICAgKEdlbmVyYXRlQ29uc3RydWN0b3JEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQ29u
c3RydWN0b3JIZWxwZXJNZXRob2RzKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbFRyYWNlcik6Cisg
ICAgICAgICogY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NG
b250RmFjZVJ1bGU6OmNzc1RleHQgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NGb250UGFsZXR0
ZVZhbHVlc1J1bGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRm9udFBhbGV0dGVWYWx1ZXNS
dWxlOjpiYXNlUGFsZXR0ZSBjb25zdCk6CisgICAgICAgICogY3NzL0NTU0tleWZyYW1lc1J1bGUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTS2V5ZnJhbWVzUnVsZTo6aW5zZXJ0UnVsZSk6Cisg
ICAgICAgICogY3NzL0NTU1BhZ2VSdWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhZ2VS
dWxlOjpzZWxlY3RvclRleHQgY29uc3QpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2hlZXQ6OmNzc1J1bGVzRm9yQmluZGluZ3Mp
OgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNoZWV0Lmg6CisgICAgICAgICogY3NzL0NTU1ZhbHVl
TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NWYWx1ZUxpc3Q6OmN1c3RvbUNTU1RleHQg
Y29uc3QpOgorICAgICAgICAqIGNzcy9Gb250RmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b250RmFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpmYW1pbHkgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnN0eWxlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkZvbnRGYWNlOjp3ZWlnaHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9u
dEZhY2U6OnN0cmV0Y2ggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6Rm9udEZhY2U6OnVuaWNv
ZGVSYW5nZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFjZTo6ZmVhdHVyZVNldHRp
bmdzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYWNlOjpkaXNwbGF5IGNvbnN0KToK
KyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1
ZXJ5OjpzZXJpYWxpemUgY29uc3QpOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxl
RGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURl
Y2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVByaW9yaXR5KToKKyAgICAgICAgKiBjc3MvU3R5bGVQcm9w
ZXJ0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUHJvcGVydGllczo6cGFnZUJyZWFr
UHJvcGVydHlWYWx1ZSBjb25zdCk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVm
ZXJlbmNlcyk6CisgICAgICAgICogY3NzL3BhcnNlci9NZWRpYVF1ZXJ5UGFyc2VyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlQYXJzZXI6OmNvbW1pdE1lZGlhUXVlcnkpOgorICAg
ICAgICAqIGRvbS9DREFUQVNlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0RBVEFTZWN0
aW9uOjpub2RlTmFtZSBjb25zdCk6CisgICAgICAgICogZG9tL0NvbW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29tbWVudDo6bm9kZU5hbWUgY29uc3QpOgorICAgICAgICAqIGRvbS9ET01J
bXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6
Y3JlYXRlSFRNTERvY3VtZW50KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnN1Z2dlc3RlZE1JTUVUeXBlIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50Ojpjb250ZW50VHlwZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6bm9kZU5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6
OndyaXRlbG4pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRlc2lnbk1vZGUgY29uc3Qp
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50RnJhZ21lbnQ6Om5vZGVOYW1lIGNvbnN0KToKKyAgICAgICAgKiBkb20vRnJhZ21l
bnREaXJlY3RpdmVQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhZ21lbnREaXJlY3Rp
dmVQYXJzZXI6OnBhcnNlRnJhZ21lbnREaXJlY3RpdmUpOgorICAgICAgICAqIGRvbS9UZXh0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHQ6Om5vZGVOYW1lIGNvbnN0KToKKyAgICAgICAgKiBk
b20vVGV4dEVuY29kZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dEVuY29kZXI6OmVuY29k
aW5nIGNvbnN0KToKKyAgICAgICAgKiBodG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QmFzZUNoZWNrYWJsZUlucHV0VHlwZTo6c2F2ZUZvcm1Db250cm9s
U3RhdGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvQmFzZURhdGVBbmRUaW1lSW5wdXRUeXBlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkJhc2VEYXRlQW5kVGltZUlucHV0VHlwZTo6dXBkYXRlSW5u
ZXJUZXh0VmFsdWUpOgorICAgICAgICAqIGh0bWwvQ29sb3JJbnB1dFR5cGUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29sb3JJbnB1dFR5cGU6OmZhbGxiYWNrVmFsdWUgY29uc3QpOgorICAgICAg
ICAqIGh0bWwvRE9NRm9ybURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmlsZUVu
dHJ5KToKKyAgICAgICAgKiBodG1sL0RhdGVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGF0ZUlucHV0VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAg
KiBodG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0
ZVRpbWVMb2NhbElucHV0VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAg
ICAgKiBodG1sL0hUTUxFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxFbGVtZW50
Ojpjb250ZW50RWRpdGFibGUgY29uc3QpOgorICAgICAgICAqIGh0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGluZyBjb25z
dCk6CisgICAgICAgICogaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKToKKyAgICAgICAgKiBo
dG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXJlY3Rpb25Gb3JGb3JtRGF0YSBjb25zdCk6Cisg
ICAgICAgICogaHRtbC9Nb250aElucHV0VHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNb250
aElucHV0VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKiBodG1s
L1RpbWVJbnB1dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGltZUlucHV0VHlwZTo6c2V0
dXBMYXlvdXRQYXJhbWV0ZXJzIGNvbnN0KToKKyAgICAgICAgKiBodG1sL1VSTERlY29tcG9zaXRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VVJMRGVjb21wb3NpdGlvbjo6cHJvdG9jb2wgY29u
c3QpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VDT1JTU2V0dGluZ3NBdHRyaWJ1dGUpOgorICAgICAgICAqIGh0bWwv
cGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUb2tlblBy
ZWxvYWRTY2FubmVyOjppbml0aWF0b3JGb3IpOgorICAgICAgICAqIHBhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nIGNvbnN0
KToKKyAgICAgICAgKiBwYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZWN1cml0eU9yaWdpbkRhdGE6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YTo6ZGF0YWJhc2VJZGVudGlmaWVyIGNvbnN0KToKKyAgICAg
ICAgKiBwYWdlL1NlY3VyaXR5UG9saWN5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlY3VyaXR5
UG9saWN5OjpnZW5lcmF0ZU9yaWdpbkhlYWRlcik6CisgICAgICAgICogcGxhdGZvcm0vQ29udGVu
dFR5cGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRl
cik6CisgICAgICAgIChXZWJDb3JlOjpDb250ZW50VHlwZTo6cHJvZmlsZXNQYXJhbWV0ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL0RlY2ltYWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVjaW1h
bDo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL1JlZ2lzdHJhYmxlRG9tYWlu
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZWdpc3RyYWJsZURvbWFpbjo6UmVnaXN0cmFibGVEb21h
aW4pOgorICAgICAgICAoV2ViQ29yZTo6UmVnaXN0cmFibGVEb21haW46OnJlZ2lzdHJhYmxlRG9t
YWluRnJvbUhvc3QpOgorICAgICAgICAqIHBsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlv
bi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaW1pbmdGdW5jdGlvbjo6Y3NzVGV4dCBjb25zdCk6
CisKIDIwMjItMDMtMjIgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgogCiAgICAgICAg
IFtXZWJBdXRobl0gU3VwcG9ydCBnZXRBc3NlcnRpb24gZm9yIHZpcnR1YWwgSElEIGF1dGhlbnRp
Y2F0b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFs
T2JqZWN0Lm1tIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0FQSUdsb2JhbE9iamVjdC5t
bQppbmRleCBiM2UyYWU0NDFjNGVjNTIzNDJhZmU5ZDU0OWU0YWU2MjM4Y2UzNDVmLi40MDViZTRk
NTBjZWI3ODhmOTBkODQ1ZmM5MjFhZTJmN2I3MmJiNjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQVBJR2xvYmFsT2JqZWN0Lm1tCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNBUElHbG9iYWxPYmplY3QubW0KQEAgLTk2LDcgKzk2LDcgQEAgc3RhdGlj
IEV4cGVjdGVkPFVSTCwgU3RyaW5nPiBjb21wdXRlVmFsaWRJbXBvcnRTcGVjaWZpZXIoY29uc3Qg
VVJMJiBiYXNlLCBjb25zdAogICAgIH0KIAogICAgIGlmIChiYXNlID09IFVSTCgpKQotICAgICAg
ICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGJhc2UgVVJM
IGZvciBsb2FkaW5nLiJfcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiQ291bGQg
bm90IGRldGVybWluZSB0aGUgYmFzZSBVUkwgZm9yIGxvYWRpbmcuIl9zdHIpOwogCiAgICAgaWYg
KCFiYXNlLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKG1ha2VTdHJp
bmcoIlJlZmVycmVyaW5nIHNjcmlwdCdzIHVybCBpcyBub3QgdmFsaWQ6ICJfcywgYmFzZS5zdHJp
bmcoKSkpOwpAQCAtMTk2LDEzICsxOTYsMTMgQEAgSlNJbnRlcm5hbFByb21pc2UqIEpTQVBJR2xv
YmFsT2JqZWN0Ojptb2R1bGVMb2FkZXJGZXRjaChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAg
ICAgICAgfTsKIAogICAgICAgICBpZiAoVU5MSUtFTFkoIVtzY3JpcHQgaXNLaW5kT2ZDbGFzczpb
SlNTY3JpcHQgY2xhc3NdXSkpCi0gICAgICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZSgiRmly
c3QgYXJndW1lbnQgb2YgcmVzb2x1dGlvbiBjYWxsYmFjayBpcyBub3QgYSBKU1NjcmlwdCJfcyk7
CisgICAgICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZSgiRmlyc3QgYXJndW1lbnQgb2YgcmVz
b2x1dGlvbiBjYWxsYmFjayBpcyBub3QgYSBKU1NjcmlwdCJfc3RyKTsKIAogICAgICAgICBKU1Nj
cmlwdCoganNTY3JpcHQgPSBzdGF0aWNfY2FzdDxKU1NjcmlwdCAqPihzY3JpcHQpOwogCiAgICAg
ICAgIEpTU291cmNlQ29kZSogc291cmNlID0gW2pzU2NyaXB0IGpzU291cmNlQ29kZV07CiAgICAg
ICAgIGlmIChVTkxJS0VMWShbanNTY3JpcHQgdHlwZV0gIT0ga0pTU2NyaXB0VHlwZU1vZHVsZSkp
Ci0gICAgICAgICAgICByZXR1cm4gcmVqZWN0UHJvbWlzZSgiVGhlIEpTU2NyaXB0IHRoYXQgd2Fz
IHByb3ZpZGVkIGRpZCBub3QgaGF2ZSBleHBlY3RlZCB0eXBlIG9mIGtKU1NjcmlwdFR5cGVNb2R1
bGUuIl9zKTsKKyAgICAgICAgICAgIHJldHVybiByZWplY3RQcm9taXNlKCJUaGUgSlNTY3JpcHQg
dGhhdCB3YXMgcHJvdmlkZWQgZGlkIG5vdCBoYXZlIGV4cGVjdGVkIHR5cGUgb2Yga0pTU2NyaXB0
VHlwZU1vZHVsZS4iX3N0cik7CiAKICAgICAgICAgTlNVUkwgKnNvdXJjZVVSTCA9IFtqc1Njcmlw
dCBzb3VyY2VVUkxdOwogICAgICAgICBTdHJpbmcgb2xkTW9kdWxlS2V5IHsgW3NvdXJjZVVSTCBh
YnNvbHV0ZVN0cmluZ10gfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
SlNDYWxsYmFja09iamVjdEZ1bmN0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9K
U0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmgKaW5kZXggYzc4NGRmYmE5NDA2OTY5MjQ5OWVjNzM2
OGFlMWFjYmViMWM3OTRkYi4uOTJkYzExMDNiNWQ4NmM0NTQ5NmFlNWE0YTM1N2I0YzM5ZGMwMDBj
NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2JqZWN0
RnVuY3Rpb25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrT2Jq
ZWN0RnVuY3Rpb25zLmgKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6aW5pdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgaWYgKGhh
c0NvbnZlcnRUb1R5cGUpIHsKICAgICAgICAgdGhpcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT50b1ByaW1pdGl2ZVN5bWJvbCwKLSAgICAgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCAxLCAiW1N5bWJvbC50b1ByaW1pdGl2ZV0iX3MsIGN1c3RvbVRv
UHJpbWl0aXZlKSwKKyAgICAgICAgICAgIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAxLCAiW1N5bWJvbC50b1ByaW1pdGl2ZV0iX3N0ciwgY3VzdG9tVG9QcmltaXRpdmUpLAog
ICAgICAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogICAgIH0KICAgICAKQEAgLTIzNCw3ICsyMzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmN1c3RvbVRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYQogCiAgICAgSlNDYWxsYmFja09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNDYWxsYmFja09iamVjdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIXRoaXNPYmplY3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJKU0NhbGxiYWNrT2JqZWN0W1N5bWJvbC50b1ByaW1pdGl2ZV0gbWV0aG9k
IGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgfHRoaXN8IHZhbHVlLiJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJKU0NhbGxiYWNrT2JqZWN0
W1N5bWJvbC50b1ByaW1pdGl2ZV0gbWV0aG9kIGNhbGxlZCBvbiBpbmNvbXBhdGlibGUgfHRoaXN8
IHZhbHVlLiJfc3RyKTsKICAgICBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpbnQgPSB0b1ByZWZl
cnJlZFByaW1pdGl2ZVR5cGUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCkBAIC03MDUsNyArNzA1LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDYWxsYmFja09iamVjdDxQYXJlbnQ+OjpzdGF0aWNGdW5jdGlv
bkdldHRlckltcGwoSlNHbG9iYWxPYmplY3QKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiU3RhdGljIGZ1bmN0aW9uIHByb3BlcnR5
IGRlZmluZWQgd2l0aCBOVUxMIGNhbGxBc0Z1bmN0aW9uIGNhbGxiYWNrLiJfcykpKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUs
IGNyZWF0ZVJlZmVyZW5jZUVycm9yKGdsb2JhbE9iamVjdCwgIlN0YXRpYyBmdW5jdGlvbiBwcm9w
ZXJ0eSBkZWZpbmVkIHdpdGggTlVMTCBjYWxsQXNGdW5jdGlvbiBjYWxsYmFjay4iX3N0cikpKTsK
IH0KIAogdGVtcGxhdGUgPGNsYXNzIFBhcmVudD4KQEAgLTc0MCw3ICs3NDAsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGxiYWNrR2V0dGVySW1wbChKU0ds
b2JhbE9iamVjdCogZ2xvYgogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSZWZlcmVu
Y2VFcnJvcihnbG9iYWxPYmplY3QsICJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5lZCB0cnVl
IGZvciBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdC4iX3MpKSk7CisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVS
ZWZlcmVuY2VFcnJvcihnbG9iYWxPYmplY3QsICJoYXNQcm9wZXJ0eSBjYWxsYmFjayByZXR1cm5l
ZCB0cnVlIGZvciBhIHByb3BlcnR5IHRoYXQgZG9lc24ndCBleGlzdC4iX3N0cikpKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJ
L0pTT2JqZWN0UmVmLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYu
Y3BwCmluZGV4IDQ1ZGNkMjM2NGJhNGVjYmE3NTg2MDY4ZWI1YTQ3NjcwZWJmNTIyNzAuLjMyZjcz
NzZjMDE3N2I3MzA0OTc5MzQxODUwYjM0YzJiZDdiYzE0MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNPYmplY3RSZWYuY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgSlNPYmplY3RSZWYg
SlNPYmplY3RNYWtlRnVuY3Rpb25XaXRoQ2FsbGJhY2soSlNDb250ZXh0UmVmIGN0eCwgSlNTdHJp
bmdSZWYgbmFtZSwKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gdG9KUyhjdHgp
OwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBKU0xvY2tIb2xkZXIgbG9j
a2VyKHZtKTsKLSAgICByZXR1cm4gdG9SZWYoSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdCwgY2FsbEFzRnVuY3Rpb24sIG5hbWUgPyBuYW1lLT5zdHJpbmcoKSA6ICJh
bm9ueW1vdXMiX3MpKTsKKyAgICByZXR1cm4gdG9SZWYoSlNDYWxsYmFja0Z1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgY2FsbEFzRnVuY3Rpb24sIG5hbWUgPyBuYW1lLT5zdHJpbmco
KSA6ICJhbm9ueW1vdXMiX3N0cikpOwogfQogCiBKU09iamVjdFJlZiBKU09iamVjdE1ha2VDb25z
dHJ1Y3RvcihKU0NvbnRleHRSZWYgY3R4LCBKU0NsYXNzUmVmIGpzQ2xhc3MsIEpTT2JqZWN0Q2Fs
bEFzQ29uc3RydWN0b3JDYWxsYmFjayBjYWxsQXNDb25zdHJ1Y3RvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL0pTU2NyaXB0Lm1tCmluZGV4IDg1MDM0N2I3Y2Q3MTI2MGEwYmY2NTkwNzUwYTlhNDUw
ZGMzMTFjMWMuLjFkOThiZTM4YzI0YjkwZmZlYjZkMjkxOGIzODc2NDczMDAzYWVjOGEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNTY3JpcHQubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1NjcmlwdC5tbQpAQCAtMjg3LDEyICsyODcsMTIgQEAgLSAo
SlNDOjpKU1NvdXJjZUNvZGUqKWpzU291cmNlQ29kZQogLSAoQk9PTCl3cml0ZUNhY2hlOihTdHJp
bmcmKWVycm9yCiB7CiAgICAgaWYgKHNlbGYuaXNVc2luZ0J5dGVjb2RlQ2FjaGUpIHsKLSAgICAg
ICAgZXJyb3IgPSAiQ2FjaGUgZm9yIEpTU2NyaXB0IGlzIGFscmVhZHkgbm9uLWVtcHR5LiBDYW4g
bm90IG92ZXJyaWRlIGl0LiJfczsKKyAgICAgICAgZXJyb3IgPSAiQ2FjaGUgZm9yIEpTU2NyaXB0
IGlzIGFscmVhZHkgbm9uLWVtcHR5LiBDYW4gbm90IG92ZXJyaWRlIGl0LiJfc3RyOwogICAgICAg
ICByZXR1cm4gTk87CiAgICAgfQogCiAgICAgaWYgKCFtX2NhY2hlUGF0aCkgewotICAgICAgICBl
cnJvciA9ICJObyBjYWNoZSBwYXRoIHdhcyBwcm92aWRlZCBkdXJpbmcgY29uc3RydWN0aW9uIG9m
IHRoaXMgSlNTY3JpcHQuIl9zOworICAgICAgICBlcnJvciA9ICJObyBjYWNoZSBwYXRoIHdhcyBw
cm92aWRlZCBkdXJpbmcgY29uc3RydWN0aW9uIG9mIHRoaXMgSlNTY3JpcHQuIl9zdHI7CiAgICAg
ICAgIHJldHVybiBOTzsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9BUEkvSlNUeXBlZEFycmF5LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNUeXBl
ZEFycmF5LmNwcAppbmRleCBhYmE2ZGY2ZTJhMzE4MzhlNzM4ODQ5ZDI4YjcyOTJlMjEzMmE0ZTkx
Li4yZjdiMTBjZjFhODE0NmZlYmU5MmU4NjhlMzgxYjA5ZTQzZjEyOTJkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVHlwZWRBcnJheS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU1R5cGVkQXJyYXkuY3BwCkBAIC0zNTUsNyArMzU1LDcgQEAgdm9p
ZCogSlNPYmplY3RHZXRBcnJheUJ1ZmZlckJ5dGVzUHRyKEpTQ29udGV4dFJlZiBjdHgsIEpTT2Jq
ZWN0UmVmIG9iamVjdFJlZiwgSlMKICAgICBpZiAoSlNBcnJheUJ1ZmZlcioganNCdWZmZXIgPSBq
c0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXIqPih2bSwgb2JqZWN0KSkgewogICAgICAgICBBcnJh
eUJ1ZmZlciogYnVmZmVyID0ganNCdWZmZXItPmltcGwoKTsKICAgICAgICAgaWYgKGJ1ZmZlci0+
aXNXYXNtTWVtb3J5KCkpIHsKLSAgICAgICAgICAgIHNldEV4Y2VwdGlvbihjdHgsIGV4Y2VwdGlv
biwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkNhbm5vdCBnZXQgdGhlIGJhY2tpbmcg
YnVmZmVyIGZvciBhIFdlYkFzc2VtYmx5Lk1lbW9yeSJfcykpOworICAgICAgICAgICAgc2V0RXhj
ZXB0aW9uKGN0eCwgZXhjZXB0aW9uLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ2Fu
bm90IGdldCB0aGUgYmFja2luZyBidWZmZXIgZm9yIGEgV2ViQXNzZW1ibHkuTWVtb3J5Il9zdHIp
KTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNWYWx1ZS5tbSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNWYWx1ZS5tbQppbmRleCBkM2FkMDgwZTFkZGY0ZmU2ZWZiYTkxMzViYTI2ODc2
Yzc3ZGNiYzI2Li5mODNmNTc0M2IzY2M3MDUxODAyMmIxNWNiN2I2MzU0MDU0MDEyMTRjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTVmFsdWUubW0KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0FQSS9KU1ZhbHVlLm1tCkBAIC04MTYsNyArODE2LDcgQEAgc3RhdGlj
IGlkIGNvbnRhaW5lclZhbHVlVG9PYmplY3QoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpT
Q29udGFpbmVyQ29udmVydG8KICAgICAgICAgICAgIEFTU0VSVChbY3VycmVudC5vYmpjIGlzS2lu
ZE9mQ2xhc3M6W05TTXV0YWJsZUFycmF5IGNsYXNzXV0pOwogICAgICAgICAgICAgTlNNdXRhYmxl
QXJyYXkgKmFycmF5ID0gKE5TTXV0YWJsZUFycmF5ICopY3VycmVudC5vYmpjOwogICAgICAgICAK
LSAgICAgICAgICAgIGF1dG8gbGVuZ3RoU3RyaW5nID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0
ZSgibGVuZ3RoIl9zKTsKKyAgICAgICAgICAgIGF1dG8gbGVuZ3RoU3RyaW5nID0gT3BhcXVlSlNT
dHJpbmc6OnRyeUNyZWF0ZSgibGVuZ3RoIl9zdHIpOwogICAgICAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0gSlNDOjp0b1VJbnQzMihKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgSlNPYmplY3RHZXRQ
cm9wZXJ0eShjb250ZXh0LCBqcywgbGVuZ3RoU3RyaW5nLmdldCgpLCAwKSwgMCkpOwogCiAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKQEAgLTkxMSw3
ICs5MTEsNyBAQCBpZCB2YWx1ZVRvQXJyYXkoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpT
VmFsdWVSZWYgdmFsdWUsIEpTVmFsdWVSZWYqIGV4Y2VwdAogCiAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9ja2VyKHRvSlMoY29udGV4dCkpOwogICAgIGlmICghKEpTVmFsdWVJc051bGwoY29udGV4
dCwgdmFsdWUpIHx8IEpTVmFsdWVJc1VuZGVmaW5lZChjb250ZXh0LCB2YWx1ZSkpKSB7Ci0gICAg
ICAgIEpTQzo6SlNPYmplY3QqIGV4Y2VwdGlvbk9iamVjdCA9IEpTQzo6Y3JlYXRlVHlwZUVycm9y
KHRvSlMoY29udGV4dCksICJDYW5ub3QgY29udmVydCBwcmltaXRpdmUgdG8gTlNBcnJheSJfcyk7
CisgICAgICAgIEpTQzo6SlNPYmplY3QqIGV4Y2VwdGlvbk9iamVjdCA9IEpTQzo6Y3JlYXRlVHlw
ZUVycm9yKHRvSlMoY29udGV4dCksICJDYW5ub3QgY29udmVydCBwcmltaXRpdmUgdG8gTlNBcnJh
eSJfc3RyKTsKICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKGV4Y2VwdGlvbk9iamVjdCk7CiAj
aWYgRU5BQkxFKFJFTU9URV9JTlNQRUNUT1IpCiAgICAgICAgIHJlcG9ydEV4Y2VwdGlvblRvSW5z
cGVjdG9yKGNvbnRleHQsIGV4Y2VwdGlvbk9iamVjdCk7CkBAIC05MzMsNyArOTMzLDcgQEAgaWQg
dmFsdWVUb0RpY3Rpb25hcnkoSlNHbG9iYWxDb250ZXh0UmVmIGNvbnRleHQsIEpTVmFsdWVSZWYg
dmFsdWUsIEpTVmFsdWVSZWYqIGUKIAogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcih0b0pT
KGNvbnRleHQpKTsKICAgICBpZiAoIShKU1ZhbHVlSXNOdWxsKGNvbnRleHQsIHZhbHVlKSB8fCBK
U1ZhbHVlSXNVbmRlZmluZWQoY29udGV4dCwgdmFsdWUpKSkgewotICAgICAgICBKU0M6OkpTT2Jq
ZWN0KiBleGNlcHRpb25PYmplY3QgPSBKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHQp
LCAiQ2Fubm90IGNvbnZlcnQgcHJpbWl0aXZlIHRvIE5TRGljdGlvbmFyeSJfcyk7CisgICAgICAg
IEpTQzo6SlNPYmplY3QqIGV4Y2VwdGlvbk9iamVjdCA9IEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRv
SlMoY29udGV4dCksICJDYW5ub3QgY29udmVydCBwcmltaXRpdmUgdG8gTlNEaWN0aW9uYXJ5Il9z
dHIpOwogICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoZXhjZXB0aW9uT2JqZWN0KTsKICNpZiBF
TkFCTEUoUkVNT1RFX0lOU1BFQ1RPUikKICAgICAgICAgcmVwb3J0RXhjZXB0aW9uVG9JbnNwZWN0
b3IoY29udGV4dCwgZXhjZXB0aW9uT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNrRnVuY3Rpb24ubW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQVBJL09iakNDYWxsYmFja0Z1bmN0aW9uLm1tCmluZGV4IGRmNzYwYzYyODY2OGE0ZjQ2ZTg5
ZDUzMzYwOTNkMWNhNWMwMjQ0ZGMuLjRhNjdhNmI0ZDUzM2I5NmQwZjE2YzNmOTlmNzY2MTQ0YzA1
YjBkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvT2JqQ0NhbGxiYWNr
RnVuY3Rpb24ubW0KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9PYmpDQ2FsbGJhY2tG
dW5jdGlvbi5tbQpAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KIAotICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVU
eXBlRXJyb3IodG9KUyhjb250ZXh0UmVmKSwgIkFyZ3VtZW50IGRvZXMgbm90IG1hdGNoIE9iamVj
dGl2ZS1DIENsYXNzIl9zKSk7CisgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0
ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRSZWYpLCAiQXJndW1lbnQgZG9lcyBub3QgbWF0Y2ggT2Jq
ZWN0aXZlLUMgQ2xhc3MiX3N0cikpOwogICAgIH0KIAogICAgIFJldGFpblB0cjxDbGFzcz4gbV9j
bGFzczsKQEAgLTQ4Myw3ICs0ODMsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBvYmpDQ2FsbGJhY2tG
dW5jdGlvbkNhbGxBc0Z1bmN0aW9uKEpTQ29udGV4dFJlZiBjYWxsZXJDb250ZXh0LAogCiAgICAg
aWYgKGltcGwtPnR5cGUoKSA9PSBDYWxsYmFja0luaXRNZXRob2QpIHsKICAgICAgICAgSlNHbG9i
YWxDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdOwot
ICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9KUyhjb250
ZXh0UmVmKSwgIkNhbm5vdCBjYWxsIGEgY2xhc3MgY29uc3RydWN0b3Igd2l0aG91dCB8bmV3fCJf
cykpOworICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IodG9K
Uyhjb250ZXh0UmVmKSwgIkNhbm5vdCBjYWxsIGEgY2xhc3MgY29uc3RydWN0b3Igd2l0aG91dCB8
bmV3fCJfc3RyKSk7CiAgICAgICAgIGlmICgqZXhjZXB0aW9uKQogICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0UmVm
KTsKQEAgLTUyNiw3ICs1MjYsNyBAQCBzdGF0aWMgSlNPYmplY3RSZWYgb2JqQ0NhbGxiYWNrRnVu
Y3Rpb25DYWxsQXNDb25zdHJ1Y3RvcihKU0NvbnRleHRSZWYgY2FsbGVyQ29udAogCiAgICAgSlNH
bG9iYWxDb250ZXh0UmVmIGNvbnRleHRSZWYgPSBbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
OwogICAgIGlmICghSlNWYWx1ZUlzT2JqZWN0KGNvbnRleHRSZWYsIHJlc3VsdCkpIHsKLSAgICAg
ICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJl
ZiksICJPYmplY3RpdmUtQyBibG9ja3MgY2FsbGVkIGFzIGNvbnN0cnVjdG9ycyBtdXN0IHJldHVy
biBhbiBvYmplY3QuIl9zKSk7CisgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0
ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRSZWYpLCAiT2JqZWN0aXZlLUMgYmxvY2tzIGNhbGxlZCBh
cyBjb25zdHJ1Y3RvcnMgbXVzdCByZXR1cm4gYW4gb2JqZWN0LiJfc3RyKSk7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KICAgICBBU1NFUlQoISpleGNlcHRpb24pOwpAQCAtNTkyLDcg
KzU5Miw3IEBAIEpTVmFsdWVSZWYgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBsOjpjYWxsKEpTQ29u
dGV4dCAqY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iCiAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCF0aGlzT2JqZWN0KTsKICAgICAgICAgdGFyZ2V0ID0gW21faW5zdGFuY2VDbGFzcyBhbGxvY107
CiAgICAgICAgIGlmICghdGFyZ2V0IHx8ICFbdGFyZ2V0IGlzS2luZE9mQ2xhc3M6bV9pbnN0YW5j
ZUNsYXNzLmdldCgpXSkgewotICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3Jl
YXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJlZiksICJzZWxmIHR5cGUgY2hlY2sgZmFpbGVkIGZv
ciBPYmplY3RpdmUtQyBpbnN0YW5jZSBtZXRob2QiX3MpKTsKKyAgICAgICAgICAgICpleGNlcHRp
b24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGNvbnRleHRSZWYpLCAic2VsZiB0
eXBlIGNoZWNrIGZhaWxlZCBmb3IgT2JqZWN0aXZlLUMgaW5zdGFuY2UgbWV0aG9kIl9zdHIpKTsK
ICAgICAgICAgICAgIGlmICgqZXhjZXB0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHRSZWYp
OwpAQCAtNjA0LDcgKzYwNCw3IEBAIEpTVmFsdWVSZWYgT2JqQ0NhbGxiYWNrRnVuY3Rpb25JbXBs
OjpjYWxsKEpTQ29udGV4dCAqY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iCiAgICAgY2FzZSBD
YWxsYmFja0luc3RhbmNlTWV0aG9kOiB7CiAgICAgICAgIHRhcmdldCA9IHRyeVVud3JhcE9iamNP
YmplY3QoY29udGV4dFJlZiwgdGhpc09iamVjdCk7CiAgICAgICAgIGlmICghdGFyZ2V0IHx8ICFb
dGFyZ2V0IGlzS2luZE9mQ2xhc3M6bV9pbnN0YW5jZUNsYXNzLmdldCgpXSkgewotICAgICAgICAg
ICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoY29udGV4dFJl
ZiksICJzZWxmIHR5cGUgY2hlY2sgZmFpbGVkIGZvciBPYmplY3RpdmUtQyBpbnN0YW5jZSBtZXRo
b2QiX3MpKTsKKyAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVF
cnJvcih0b0pTKGNvbnRleHRSZWYpLCAic2VsZiB0eXBlIGNoZWNrIGZhaWxlZCBmb3IgT2JqZWN0
aXZlLUMgaW5zdGFuY2UgbWV0aG9kIl9zdHIpKTsKICAgICAgICAgICAgIGlmICgqZXhjZXB0aW9u
KQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHRSZWYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ0NhbGxiYWNrRnVuY3Rpb24uY3BwCmluZGV4IDA4MTA3N2E0
YzA0M2NjYjQ4YWViMjliMDFmOGZmYzBkOGFmYmUxM2EuLjU3MTRhNDRlNDlmYjAzZmM4M2Q0MjQz
MzAxNzJmYjBlNzllZjI1ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NDYWxsYmFja0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
QVBJL2dsaWIvSlNDQ2FsbGJhY2tGdW5jdGlvbi5jcHAKQEAgLTk1LDcgKzk1LDcgQEAgSlNWYWx1
ZVJlZiBKU0NDYWxsYmFja0Z1bmN0aW9uOjpjYWxsKEpTQ29udGV4dFJlZiBjYWxsZXJDb250ZXh0
LCBKU09iamVjdFJlZiB0aGkKICAgICBhdXRvKiBqc0NvbnRleHQgPSBqc2NDb250ZXh0R2V0SlND
b250ZXh0KGNvbnRleHQuZ2V0KCkpOwogCiAgICAgaWYgKG1fdHlwZSA9PSBUeXBlOjpDb25zdHJ1
Y3RvcikgewotICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3Io
dG9KUyhqc0NvbnRleHQpLCAiY2Fubm90IGNhbGwgYSBjbGFzcyBjb25zdHJ1Y3RvciB3aXRob3V0
IHxuZXd8Il9zKSk7CisgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVF
cnJvcih0b0pTKGpzQ29udGV4dCksICJjYW5ub3QgY2FsbCBhIGNsYXNzIGNvbnN0cnVjdG9yIHdp
dGhvdXQgfG5ld3wiX3N0cikpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
anNDb250ZXh0KTsKICAgICB9CiAKQEAgLTEwMyw3ICsxMDMsNyBAQCBKU1ZhbHVlUmVmIEpTQ0Nh
bGxiYWNrRnVuY3Rpb246OmNhbGwoSlNDb250ZXh0UmVmIGNhbGxlckNvbnRleHQsIEpTT2JqZWN0
UmVmIHRoaQogICAgIGlmIChtX3R5cGUgPT0gVHlwZTo6TWV0aG9kKSB7CiAgICAgICAgIGluc3Rh
bmNlID0ganNjQ29udGV4dFdyYXBwZWRPYmplY3QoY29udGV4dC5nZXQoKSwgdGhpc09iamVjdCk7
CiAgICAgICAgIGlmICghaW5zdGFuY2UpIHsKLSAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1Jl
ZihKU0M6OmNyZWF0ZVR5cGVFcnJvcih0b0pTKGpzQ29udGV4dCksICJpbnZhbGlkIGluc3RhbmNl
IHR5cGUgaW4gbWV0aG9kIl9zKSk7CisgICAgICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlND
OjpjcmVhdGVUeXBlRXJyb3IodG9KUyhqc0NvbnRleHQpLCAiaW52YWxpZCBpbnN0YW5jZSB0eXBl
IGluIG1ldGhvZCJfc3RyKSk7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoanNDb250ZXh0KTsKICAgICAgICAgfQogICAgIH0KQEAgLTE2OSw3ICsxNjksNyBAQCBKU09i
amVjdFJlZiBKU0NDYWxsYmFja0Z1bmN0aW9uOjpjb25zdHJ1Y3QoSlNDb250ZXh0UmVmIGNhbGxl
ckNvbnRleHQsIHNpemVfdCBhcgogICAgIGF1dG8qIGpzQ29udGV4dCA9IGpzY0NvbnRleHRHZXRK
U0NvbnRleHQoY29udGV4dC5nZXQoKSk7CiAKICAgICBpZiAobV9yZXR1cm5UeXBlID09IEdfVFlQ
RV9OT05FKSB7Ci0gICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJv
cih0b0pTKGpzQ29udGV4dCksICJjb25zdHJ1Y3RvcnMgY2Fubm90IGJlIHZvaWQiX3MpKTsKKyAg
ICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoanNDb250
ZXh0KSwgImNvbnN0cnVjdG9ycyBjYW5ub3QgYmUgdm9pZCJfc3RyKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtMjIzLDcgKzIyMyw3IEBAIEpTT2JqZWN0UmVmIEpTQ0Nh
bGxiYWNrRnVuY3Rpb246OmNvbnN0cnVjdChKU0NvbnRleHRSZWYgY2FsbGVyQ29udGV4dCwgc2l6
ZV90IGFyCiAgICAgY2FzZSBHX1RZUEVfT0JKRUNUOgogICAgICAgICBpZiAoYXV0byogcHRyID0g
cmV0dXJuVmFsdWUuZGF0YVswXS52X3BvaW50ZXIpCiAgICAgICAgICAgICByZXR1cm4gdG9SZWYo
anNjQ2xhc3NHZXRPckNyZWF0ZUpTV3JhcHBlcihtX2NsYXNzLmdldCgpLCBjb250ZXh0LmdldCgp
LCBwdHIpKTsKLSAgICAgICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9y
KHRvSlMoanNDb250ZXh0KSwgImNvbnN0cnVjdG9yIHJldHVybmVkIG51bGwiX3MpKTsKKyAgICAg
ICAgKmV4Y2VwdGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKHRvSlMoanNDb250ZXh0
KSwgImNvbnN0cnVjdG9yIHJldHVybmVkIG51bGwiX3N0cikpOwogICAgICAgICBicmVhazsKICAg
ICBkZWZhdWx0OgogICAgICAgICAqZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJy
b3IodG9KUyhqc0NvbnRleHQpLCBtYWtlU3RyaW5nKCJpbnZhbGlkIHR5cGUgIiwgZ190eXBlX25h
bWUoR19WQUxVRV9UWVBFKCZyZXR1cm5WYWx1ZSkpLCAiIHJldHVybmVkIGJ5IGNvbnN0cnVjdG9y
IikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250
ZXh0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NDb250ZXh0LmNwcApp
bmRleCA5ZGNlYWZjNWI4M2NhOWE1ZTM4MTQ5NDFkZDA0Y2Q3NGRlZTI1YmI1Li5mYTVmMWMzMzA3
MDM1ZjJkODg0ZTFjOGQ0NWVhMjBjZDljMTUyYmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQVBJL2dsaWIvSlNDQ29udGV4dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0FQSS9nbGliL0pTQ0NvbnRleHQuY3BwCkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBqc2ND
b250ZXh0SlNWYWx1ZVRvR1ZhbHVlKEpTQ0NvbnRleHQqIGNvbnRleHQsIEpTVmFsdWVSZWYganNW
YWx1ZSwgR1R5cGUgdHkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgICpleGNlcHRpb24gPSB0b1JlZihKU0M6OmNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsICJpbnZhbGlkIHBvaW50ZXIgdHlwZSJfcykpOworICAgICAgICAgICAgKmV4Y2Vw
dGlvbiA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgImludmFsaWQg
cG9pbnRlciB0eXBlIl9zdHIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBA
IC01NTQsNyArNTU0LDcgQEAgdm9pZCBqc2NDb250ZXh0SlNWYWx1ZVRvR1ZhbHVlKEpTQ0NvbnRl
eHQqIGNvbnRleHQsIEpTVmFsdWVSZWYganNWYWx1ZSwgR1R5cGUgdHkKICAgICAgICAgZWxzZSBp
ZiAoR19JU19PQkpFQ1Qod3JhcHBlZE9iamVjdCkpCiAgICAgICAgICAgICBnX3ZhbHVlX3NldF9v
YmplY3QodmFsdWUsIHdyYXBwZWRPYmplY3QpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICAq
ZXhjZXB0aW9uID0gdG9SZWYoSlNDOjpjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAid3Jh
cHBlZCBvYmplY3QgaXMgbm90IGEgR09iamVjdCJfcykpOworICAgICAgICAgICAgKmV4Y2VwdGlv
biA9IHRvUmVmKEpTQzo6Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIndyYXBwZWQgb2Jq
ZWN0IGlzIG5vdCBhIEdPYmplY3QiX3N0cikpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAg
Y2FzZSBHX1RZUEVfTE9ORzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkv
Z2xpYi9KU0NWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL2dsaWIvSlNDVmFs
dWUuY3BwCmluZGV4IDRkYzY5NmVjODZkZjkwMWMzZTkyYzQwZGFmOTA0NDhlMmFhNjg1ODAuLjQy
Y2E5NWIyZjYxNmQ4N2U2Y2JiMThjNDYxMGU1YWNhYzc2MzFmZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9BUEkvZ2xpYi9KU0NWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0FQSS9nbGliL0pTQ1ZhbHVlLmNwcApAQCAtMTEwNSwxMiArMTEwNSwxMiBAQCBz
dGF0aWMgdm9pZCBqc2NWYWx1ZU9iamVjdERlZmluZVByb3BlcnR5QWNjZXNzb3IoSlNDVmFsdWUq
IHZhbHVlLCBjb25zdCBjaGFyKiBwcgogICAgICAgICAgICAgY2xvc3VyZSA9IGFkb3B0R1JlZihn
X2NjbG9zdXJlX25ld19zd2FwKGdldHRlciwgdXNlckRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Ns
b3N1cmVOb3RpZnk+KHJlaW50ZXJwcmV0X2Nhc3Q8R0NhbGxiYWNrPihkZXN0cm95Tm90aWZ5KSkp
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgY2xvc3VyZSA9IGFkb3B0R1JlZihnX2NjbG9z
dXJlX25ldyhnZXR0ZXIsIHVzZXJEYXRhLCByZWludGVycHJldF9jYXN0PEdDbG9zdXJlTm90aWZ5
PihyZWludGVycHJldF9jYXN0PEdDYWxsYmFjaz4oZGVzdHJveU5vdGlmeSkpKSk7Ci0gICAgICAg
IGF1dG8gZnVuY3Rpb24gPSBKU0M6OkpTQ0NhbGxiYWNrRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCAiZ2V0Il9zLCBmdW5jdGlvblR5cGUsIG51bGxwdHIsIFdURk1vdmUoY2xvc3Vy
ZSksIHByb3BlcnR5VHlwZSwgVmVjdG9yPEdUeXBlPiB7IH0pOworICAgICAgICBhdXRvIGZ1bmN0
aW9uID0gSlNDOjpKU0NDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
ImdldCJfc3RyLCBmdW5jdGlvblR5cGUsIG51bGxwdHIsIFdURk1vdmUoY2xvc3VyZSksIHByb3Bl
cnR5VHlwZSwgVmVjdG9yPEdUeXBlPiB7IH0pOwogICAgICAgICBkZXNjcmlwdG9yLnNldEdldHRl
cihmdW5jdGlvbik7CiAgICAgfQogICAgIGlmIChzZXR0ZXIpIHsKICAgICAgICAgR1JlZlB0cjxH
Q2xvc3VyZT4gY2xvc3VyZSA9IGFkb3B0R1JlZihnX2NjbG9zdXJlX25ldyhzZXR0ZXIsIHVzZXJE
YXRhLCBnZXR0ZXIgPyBudWxscHRyIDogcmVpbnRlcnByZXRfY2FzdDxHQ2xvc3VyZU5vdGlmeT4o
cmVpbnRlcnByZXRfY2FzdDxHQ2FsbGJhY2s+KGRlc3Ryb3lOb3RpZnkpKSkpOwotICAgICAgICBh
dXRvIGZ1bmN0aW9uID0gSlNDOjpKU0NDYWxsYmFja0Z1bmN0aW9uOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgInNldCJfcywgZnVuY3Rpb25UeXBlLCBudWxscHRyLCBXVEZNb3ZlKGNsb3N1cmUp
LCBHX1RZUEVfTk9ORSwgVmVjdG9yPEdUeXBlPiB7IHByb3BlcnR5VHlwZSB9KTsKKyAgICAgICAg
YXV0byBmdW5jdGlvbiA9IEpTQzo6SlNDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9i
YWxPYmplY3QsICJzZXQiX3N0ciwgZnVuY3Rpb25UeXBlLCBudWxscHRyLCBXVEZNb3ZlKGNsb3N1
cmUpLCBHX1RZUEVfTk9ORSwgVmVjdG9yPEdUeXBlPiB7IHByb3BlcnR5VHlwZSB9KTsKICAgICAg
ICAgZGVzY3JpcHRvci5zZXRTZXR0ZXIoZnVuY3Rpb24pOwogICAgIH0KICAgICBvYmplY3QtPm1l
dGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBnbG9iYWxPYmplY3QsIG5h
bWUtPmlkZW50aWZpZXIoJnZtKSwgZGVzY3JpcHRvciwgdHJ1ZSk7CkBAIC0xMTcyLDcgKzExNzIs
NyBAQCBzdGF0aWMgR1JlZlB0cjxKU0NWYWx1ZT4ganNjVmFsdWVGdW5jdGlvbkNyZWF0ZShKU0ND
b250ZXh0KiBjb250ZXh0LCBjb25zdCBjaGFyKgogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IHRvSlMoanNjQ29udGV4dEdldEpTQ29udGV4dChjb250ZXh0KSk7CiAgICAg
SlNDOjpWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIg
bG9ja2VyKHZtKTsKLSAgICBhdXRvKiBmdW5jdGlvbk9iamVjdCA9IHRvUmVmKEpTQzo6SlNDQ2Fs
bGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIG5hbWUgPyBTdHJpbmc6OmZy
b21VVEY4KG5hbWUpIDogImFub255bW91cyJfcywKKyAgICBhdXRvKiBmdW5jdGlvbk9iamVjdCA9
IHRvUmVmKEpTQzo6SlNDQ2FsbGJhY2tGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IG5hbWUgPyBTdHJpbmc6OmZyb21VVEY4KG5hbWUpIDogImFub255bW91cyJfc3RyLAogICAgICAg
ICBKU0M6OkpTQ0NhbGxiYWNrRnVuY3Rpb246OlR5cGU6OkZ1bmN0aW9uLCBudWxscHRyLCBXVEZN
b3ZlKGNsb3N1cmUpLCByZXR1cm5UeXBlLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKSk7CiAgICAgcmV0
dXJuIGpzY0NvbnRleHRHZXRPckNyZWF0ZVZhbHVlKGNvbnRleHQsIGZ1bmN0aW9uT2JqZWN0KTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluVXRp
bHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9CdWlsdGluVXRpbHMuaAppbmRl
eCA0MDFjMmY5MzdlYjU0YTEyMzIwMGIzMjA3NzAzMjM0MWY2NzUxNTdlLi4yMDFmY2Q5M2Q5NTc0
MjYzYmEwNmVjZTE3YzJjNzgxYzQyODIyODM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnVpbHRpbnMvQnVpbHRpblV0aWxzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL0J1aWx0aW5VdGlscy5oCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBK
U0MgewogCi0jZGVmaW5lIElOSVRJQUxJWkVfQlVJTFRJTl9OQU1FUyhuYW1lKSAsIG1fIyNuYW1l
KEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgI25hbWUpKSwgbV8jI25hbWUjI1ByaXZh
dGVOYW1lKEpTQzo6SWRlbnRpZmllcjo6ZnJvbVVpZChKU0M6OlByaXZhdGVOYW1lKEpTQzo6UHJp
dmF0ZU5hbWU6OlByaXZhdGVTeW1ib2wsICNuYW1lICIiX3MpKSkKKyNkZWZpbmUgSU5JVElBTEla
RV9CVUlMVElOX05BTUVTKG5hbWUpICwgbV8jI25hbWUoSlNDOjpJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKHZtLCAjbmFtZSkpLCBtXyMjbmFtZSMjUHJpdmF0ZU5hbWUoSlNDOjpJZGVudGlmaWVyOjpm
cm9tVWlkKEpTQzo6UHJpdmF0ZU5hbWUoSlNDOjpQcml2YXRlTmFtZTo6UHJpdmF0ZVN5bWJvbCwg
I25hbWUgIiJfc3RyKSkpCiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9OQU1FUyhuYW1lKSBjb25z
dCBKU0M6OklkZW50aWZpZXIgbV8jI25hbWU7IGNvbnN0IEpTQzo6SWRlbnRpZmllciBtXyMjbmFt
ZSMjUHJpdmF0ZU5hbWU7CiAjZGVmaW5lIERFQ0xBUkVfQlVJTFRJTl9JREVOVElGSUVSX0FDQ0VT
U09SKG5hbWUpIFwKICAgICBjb25zdCBKU0M6OklkZW50aWZpZXImIG5hbWUjI1B1YmxpY05hbWUo
KSBjb25zdCB7IHJldHVybiBtXyMjbmFtZTsgfSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29kZS9Db2RlQmxvY2suY3BwCmluZGV4IDA5OGFlZDkzNWE2OGY3ZDY2ODdiZDM1MjMyNTMw
NzdmMzFlZDE5ZjIuLjY0MWYzMTJlMjU3NDczYTgxNTkwZTViYWFmODAwM2MwZmQzNGMyMWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCkBAIC0zMjAw
LDcgKzMyMDAsNyBAQCBTdHJpbmcgQ29kZUJsb2NrOjpuYW1lRm9yUmVnaXN0ZXIoVmlydHVhbFJl
Z2lzdGVyIHZpcnR1YWxSZWdpc3RlcikKICAgICAgICAgfQogICAgIH0KICAgICBpZiAodmlydHVh
bFJlZ2lzdGVyID09IHRoaXNSZWdpc3RlcigpKQotICAgICAgICByZXR1cm4gInRoaXMiX3M7Cisg
ICAgICAgIHJldHVybiAidGhpcyJfc3RyOwogICAgIGlmICh2aXJ0dWFsUmVnaXN0ZXIuaXNBcmd1
bWVudCgpKQogICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiYXJndW1lbnRzWyIsIHBhZCgnICcs
IDMsIHZpcnR1YWxSZWdpc3Rlci50b0FyZ3VtZW50KCkpLCAnXScpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
CmluZGV4IDc5M2UwOWYyNjMwNWIzNzhmZDBlYTRiMjk4M2MyNzBlYmY0OGFiNDguLjIxMDllMTli
N2Q2ZGYxY2E5NWZkMmZjM2EzZWRlNzQwNDRiNjUzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCkBAIC00
ODczLDcgKzQ4NzMsNyBAQCBSZWdpc3RlcklEKiBCeXRlY29kZUdlbmVyYXRvcjo6ZW1pdEl0ZXJh
dG9yR2VuZXJpY05leHQoUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcgogICAgIHsKICAgICAgICAg
UmVmPExhYmVsPiB0eXBlSXNPYmplY3QgPSBuZXdMYWJlbCgpOwogICAgICAgICBlbWl0SnVtcElm
VHJ1ZShlbWl0SXNPYmplY3QobmV3VGVtcG9yYXJ5KCksIGRzdCksIHR5cGVJc09iamVjdC5nZXQo
KSk7Ci0gICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFj
ZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRl
cmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfc3RyKTsKICAgICAgICAg
ZW1pdExhYmVsKHR5cGVJc09iamVjdC5nZXQoKSk7CiAgICAgfQogICAgIHJldHVybiBkc3Q7CkBA
IC00OTA2LDcgKzQ5MDYsNyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0SXRlcmF0b3JH
ZW5lcmljQ2xvc2UoUmVnaXN0ZXJJRCogaXRlcmF0b3IsIGNvbnN0IFRocgogICAgICAgICBlbWl0
QXdhaXQodmFsdWUuZ2V0KCkpOwogCiAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5l
d1RlbXBvcmFyeSgpLCB2YWx1ZS5nZXQoKSksIGRvbmUuZ2V0KCkpOwotICAgIGVtaXRUaHJvd1R5
cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7
CisgICAgZW1pdFRocm93VHlwZUVycm9yKCJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5v
dCBhbiBvYmplY3QuIl9zdHIpOwogICAgIGVtaXRMYWJlbChkb25lLmdldCgpKTsKIH0KIApAQCAt
NDk4NSw3ICs0OTg1LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXREZWxl
Z2F0ZVlpZWxkKFJlZ2lzdGVySUQqIGFyZ3VtZW50LCBUaHJvd2FibGUKICAgICAgICAgICAgICAg
ICAgICAgRW1pdEF3YWl0IGVtaXRBd2FpdEluSXRlcmF0b3JDbG9zZSA9IHBhcnNlTW9kZSgpID09
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZSA/IEVtaXRBd2FpdDo6WWVz
IDogRW1pdEF3YWl0OjpObzsKICAgICAgICAgICAgICAgICAgICAgZW1pdEl0ZXJhdG9yR2VuZXJp
Y0Nsb3NlKGl0ZXJhdG9yLmdldCgpLCBub2RlLCBlbWl0QXdhaXRJbkl0ZXJhdG9yQ2xvc2UpOwog
Ci0gICAgICAgICAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiRGVsZWdhdGVkIGdlbmVy
YXRvciBkb2VzIG5vdCBoYXZlIGEgJ3Rocm93JyBtZXRob2QuIl9zKTsKKyAgICAgICAgICAgICAg
ICAgICAgZW1pdFRocm93VHlwZUVycm9yKCJEZWxlZ2F0ZWQgZ2VuZXJhdG9yIGRvZXMgbm90IGhh
dmUgYSAndGhyb3cnIG1ldGhvZC4iX3N0cik7CiAKICAgICAgICAgICAgICAgICAgICAgZW1pdExh
YmVsKHRocm93TWV0aG9kRm91bmQuZ2V0KCkpOwogICAgICAgICAgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIHRocm93QXJndW1lbnRzKCp0aGlzLCBudWxscHRyLCAxKTsKQEAgLTUwMjIsNyArNTAy
Miw3IEBAIFJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjplbWl0RGVsZWdhdGVZaWVsZChS
ZWdpc3RlcklEKiBhcmd1bWVudCwgVGhyb3dhYmxlCiAKICAgICAgICAgICAgICAgICAgICAgUmVm
PExhYmVsPiByZXR1cm5JdGVyYXRvclJlc3VsdElzT2JqZWN0ID0gbmV3TGFiZWwoKTsKICAgICAg
ICAgICAgICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdElzT2JqZWN0KG5ld1RlbXBvcmFyeSgp
LCB2YWx1ZS5nZXQoKSksIHJldHVybkl0ZXJhdG9yUmVzdWx0SXNPYmplY3QuZ2V0KCkpOwotICAg
ICAgICAgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRl
cmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3MpOworICAgICAgICAgICAgICAgICAgICBlbWl0VGhy
b3dUeXBlRXJyb3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4i
X3N0cik7CiAKICAgICAgICAgICAgICAgICAgICAgZW1pdExhYmVsKHJldHVybkl0ZXJhdG9yUmVz
dWx0SXNPYmplY3QuZ2V0KCkpOwogCkBAIC01MDU2LDcgKzUwNTYsNyBAQCBSZWdpc3RlcklEKiBC
eXRlY29kZUdlbmVyYXRvcjo6ZW1pdERlbGVnYXRlWWllbGQoUmVnaXN0ZXJJRCogYXJndW1lbnQs
IFRocm93YWJsZQogCiAgICAgICAgICAgICBSZWY8TGFiZWw+IGl0ZXJhdG9yVmFsdWVJc09iamVj
dCA9IG5ld0xhYmVsKCk7CiAgICAgICAgICAgICBlbWl0SnVtcElmVHJ1ZShlbWl0SXNPYmplY3Qo
bmV3VGVtcG9yYXJ5KCksIHZhbHVlLmdldCgpKSwgaXRlcmF0b3JWYWx1ZUlzT2JqZWN0LmdldCgp
KTsKLSAgICAgICAgICAgIGVtaXRUaHJvd1R5cGVFcnJvcigiSXRlcmF0b3IgcmVzdWx0IGludGVy
ZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgICAgICBlbWl0VGhyb3dUeXBlRXJy
b3IoIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3N0cik7CiAg
ICAgICAgICAgICBlbWl0TGFiZWwoaXRlcmF0b3JWYWx1ZUlzT2JqZWN0LmdldCgpKTsKIAogICAg
ICAgICAgICAgZW1pdEp1bXBJZlRydWUoZW1pdEdldEJ5SWQobmV3VGVtcG9yYXJ5KCksIHZhbHVl
LmdldCgpLCBwcm9wZXJ0eU5hbWVzKCkuZG9uZSksIGxvb3BEb25lLmdldCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRl
eCBmNmU0M2VjOGNiYmE4ZjI1NTkwYzZmODA4YTI0NDc1ZGMyYjZlYWUxLi4zNzA0ZjNkNzI0MTNi
ZmQ4ZTljY2I4YjU5YzhjMjJlZWZkM2ZmMjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC0xMjI4LDcgKzEyMjgsNyBA
QCBSZWdpc3RlcklEKiBGdW5jdGlvbkNhbGxWYWx1ZU5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZQogICAgICAgICAKICAgICAgICAgUmVmPExhYmVsPiB0
aGlzSXNFbXB0eUxhYmVsID0gZ2VuZXJhdG9yLm5ld0xhYmVsKCk7CiAgICAgICAgIGdlbmVyYXRv
ci5lbWl0SnVtcElmVHJ1ZShnZW5lcmF0b3IuZW1pdElzRW1wdHkoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBnZW5lcmF0b3IudGhpc1JlZ2lzdGVyKCkpLCB0aGlzSXNFbXB0eUxhYmVsLmdldCgp
KTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKCInc3VwZXIoKScg
Y2FuJ3QgYmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGluIGEgY29uc3RydWN0b3IuIl9zKTsKKyAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKCInc3VwZXIoKScgY2FuJ3Qg
YmUgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIGluIGEgY29uc3RydWN0b3IuIl9zdHIpOwogICAgICAg
ICBnZW5lcmF0b3IuZW1pdExhYmVsKHRoaXNJc0VtcHR5TGFiZWwuZ2V0KCkpOwogCiAgICAgICAg
IGdlbmVyYXRvci5tb3ZlKGdlbmVyYXRvci50aGlzUmVnaXN0ZXIoKSwgcmV0KTsKQEAgLTI1MjQs
OCArMjUyNCw4IEBAIFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCoKIAogICAgIEFTU0VSVChtX2V4cHIt
PmlzRnVuY3Rpb25DYWxsKCkpOwogICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihn
ZW5lcmF0b3IsIG1fb3BlcmF0b3IgPT0gT3BlcmF0b3I6OlBsdXNQbHVzCi0gICAgICAgID8gIlBv
c3RmaXggKysgb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJlZmVyZW5j
ZS4iX3MKLSAgICAgICAgOiAiUG9zdGZpeCAtLSBvcGVyYXRvciBhcHBsaWVkIHRvIHZhbHVlIHRo
YXQgaXMgbm90IGEgcmVmZXJlbmNlLiJfcywKKyAgICAgICAgPyAiUG9zdGZpeCArKyBvcGVyYXRv
ciBhcHBsaWVkIHRvIHZhbHVlIHRoYXQgaXMgbm90IGEgcmVmZXJlbmNlLiJfc3RyCisgICAgICAg
IDogIlBvc3RmaXggLS0gb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJl
ZmVyZW5jZS4iX3N0ciwKICAgICAgICAgZHN0KTsKIH0KIApAQCAtMjgxMSw4ICsyODExLDggQEAg
UmVnaXN0ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGQKIAogICAgIEFTU0VSVChtX2V4cHItPmlzRnVuY3Rpb25D
YWxsKCkpOwogICAgIHJldHVybiBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5lcmF0b3IsIG1f
b3BlcmF0b3IgPT0gT3BlcmF0b3I6OlBsdXNQbHVzCi0gICAgICAgID8gIlByZWZpeCArKyBvcGVy
YXRvciBhcHBsaWVkIHRvIHZhbHVlIHRoYXQgaXMgbm90IGEgcmVmZXJlbmNlLiJfcwotICAgICAg
ICA6ICJQcmVmaXggLS0gb3BlcmF0b3IgYXBwbGllZCB0byB2YWx1ZSB0aGF0IGlzIG5vdCBhIHJl
ZmVyZW5jZS4iX3MsCisgICAgICAgID8gIlByZWZpeCArKyBvcGVyYXRvciBhcHBsaWVkIHRvIHZh
bHVlIHRoYXQgaXMgbm90IGEgcmVmZXJlbmNlLiJfc3RyCisgICAgICAgIDogIlByZWZpeCAtLSBv
cGVyYXRvciBhcHBsaWVkIHRvIHZhbHVlIHRoYXQgaXMgbm90IGEgcmVmZXJlbmNlLiJfc3RyLAog
ICAgICAgICBkc3QpOwogfQogCkBAIC0zNjk4LDcgKzM2OTgsNyBAQCBSZWdpc3RlcklEKiBTaG9y
dENpcmN1aXRSZWFkTW9kaWZ5RG90Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcgogCiBSZWdpc3RlcklEKiBBc3NpZ25FcnJvck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7Ci0gICAgcmV0dXJu
IGVtaXRUaHJvd1JlZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgIkxlZnQgc2lkZSBvZiBhc3NpZ25t
ZW50IGlzIG5vdCBhIHJlZmVyZW5jZS4iX3MsIGRzdCk7CisgICAgcmV0dXJuIGVtaXRUaHJvd1Jl
ZmVyZW5jZUVycm9yKGdlbmVyYXRvciwgIkxlZnQgc2lkZSBvZiBhc3NpZ25tZW50IGlzIG5vdCBh
IHJlZmVyZW5jZS4iX3N0ciwgZHN0KTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tIEFzc2lnbkJyYWNrZXROb2RlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCkBAIC00MTgwLDcgKzQxODAsNyBAQCB2b2lkIEZvckluTm9kZTo6ZW1pdExvb3BIZWFkZXIo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogcHJvcGVydAogdm9pZCBG
b3JJbk5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdp
c3RlcklEKiBkc3QpCiB7CiAgICAgaWYgKCFtX2xleHByLT5pc0Fzc2lnblJlc29sdmVOb2RlKCkg
JiYgIW1fbGV4cHItPmlzQXNzaWdubWVudExvY2F0aW9uKCkpIHsKLSAgICAgICAgZW1pdFRocm93
UmVmZXJlbmNlRXJyb3IoZ2VuZXJhdG9yLCAiTGVmdCBzaWRlIG9mIGZvci1pbiBzdGF0ZW1lbnQg
aXMgbm90IGEgcmVmZXJlbmNlLiJfcyk7CisgICAgICAgIGVtaXRUaHJvd1JlZmVyZW5jZUVycm9y
KGdlbmVyYXRvciwgIkxlZnQgc2lkZSBvZiBmb3ItaW4gc3RhdGVtZW50IGlzIG5vdCBhIHJlZmVy
ZW5jZS4iX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQyNTIsNyArNDI1Miw3
IEBAIHZvaWQgRm9ySW5Ob2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXJJRCogZHN0KQogdm9pZCBGb3JPZk5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiB7CiAgICAgaWYgKCFt
X2xleHByLT5pc0Fzc2lnbm1lbnRMb2NhdGlvbigpKSB7Ci0gICAgICAgIGVtaXRUaHJvd1JlZmVy
ZW5jZUVycm9yKGdlbmVyYXRvciwgIkxlZnQgc2lkZSBvZiBmb3Itb2Ygc3RhdGVtZW50IGlzIG5v
dCBhIHJlZmVyZW5jZS4iX3MpOworICAgICAgICBlbWl0VGhyb3dSZWZlcmVuY2VFcnJvcihnZW5l
cmF0b3IsICJMZWZ0IHNpZGUgb2YgZm9yLW9mIHN0YXRlbWVudCBpcyBub3QgYSByZWZlcmVuY2Uu
Il9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC01MTQwLDcgKzUxNDAsNyBAQCBS
ZWdpc3RlcklEKiBDbGFzc0V4cHJOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZXJJRAogICAgICAgICBSZWY8TGFiZWw+IHN1cGVyY2xhc3NJc0Nv
bnN0cnVjdG9yTGFiZWwgPSBnZW5lcmF0b3IubmV3TGFiZWwoKTsKICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRKdW1wSWZUcnVlKGdlbmVyYXRvci5lbWl0SXNDb25zdHJ1Y3RvcihnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHN1cGVyY2xhc3MuZ2V0KCkpLCBzdXBlcmNsYXNzSXNDb25zdHJ1Y3Rvckxh
YmVsLmdldCgpKTsKICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgp
LCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93
VHlwZUVycm9yKCJUaGUgc3VwZXJjbGFzcyBpcyBub3QgYSBjb25zdHJ1Y3Rvci4iX3MpOworICAg
ICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUaGUgc3VwZXJjbGFzcyBpcyBub3Qg
YSBjb25zdHJ1Y3Rvci4iX3N0cik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0TGFiZWwoc3VwZXJj
bGFzc0lzQ29uc3RydWN0b3JMYWJlbC5nZXQoKSk7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0R2V0
QnlJZChwcm90b1BhcmVudC5nZXQoKSwgc3VwZXJjbGFzcy5nZXQoKSwgZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5wcm90b3R5cGUpOwogCkBAIC01NDQ3LDcgKzU0NDcsNyBAQCB2b2lkIE9iamVj
dFBhdHRlcm5Ob2RlOjp0b1N0cmluZyhTdHJpbmdCdWlsZGVyJiBidWlsZGVyKSBjb25zdAogICAg
IAogdm9pZCBPYmplY3RQYXR0ZXJuTm9kZTo6YmluZFZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIHJocykgY29uc3QKIHsKLSAgICBnZW5lcmF0b3IuZW1pdFJl
cXVpcmVPYmplY3RDb2VyY2libGUocmhzLCAiUmlnaHQgc2lkZSBvZiBhc3NpZ25tZW50IGNhbm5v
dCBiZSBkZXN0cnVjdHVyZWQiX3MpOworICAgIGdlbmVyYXRvci5lbWl0UmVxdWlyZU9iamVjdENv
ZXJjaWJsZShyaHMsICJSaWdodCBzaWRlIG9mIGFzc2lnbm1lbnQgY2Fubm90IGJlIGRlc3RydWN0
dXJlZCJfc3RyKTsKIAogICAgIEJ5dGVjb2RlR2VuZXJhdG9yOjpQcmVzZXJ2ZWRURFpTdGFjayBw
cmVzZXJ2ZWRURFpTdGFjazsKICAgICBnZW5lcmF0b3IucHJlc2VydmVURFpTdGFjayhwcmVzZXJ2
ZWRURFpTdGFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQ
YXJzZXIuY3BwCmluZGV4IDI4ZjEyMTViMzY4ZTNlOGEwMWYwZTE2ZDUyMTY4NjJlMGYxOGNiODMu
LjNiZGNjNWYyODg0NzIxODYyODJlYTkzNjY5NDZmN2M5OTU2NjJlOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCkBAIC03MzYzLDcgKzcz
NjMsNyBAQCB2b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUJsb2NrKHVuc2lnbmVkIGxpbWl0KQog
ICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2sgPSBu
b3RPYmplY3RCbG9jazsKICAgICAgICAgICAgICAgICAgICAgY2xlYXJDYWNoZXMoKTsKLSAgICAg
ICAgICAgICAgICAgICAgTGF6eUpTVmFsdWUgZXJyb3JTdHJpbmcgPSBMYXp5SlNWYWx1ZTo6bmV3
U3RyaW5nKG1fZ3JhcGgsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmpl
Y3QuIl9zKTsKKyAgICAgICAgICAgICAgICAgICAgTGF6eUpTVmFsdWUgZXJyb3JTdHJpbmcgPSBM
YXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsICJJdGVyYXRvciByZXN1bHQgaW50ZXJmYWNl
IGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpOwogICAgICAgICAgICAgICAgICAgICBPcEluZm8gaW5m
byA9IE9wSW5mbyhtX2dyYXBoLm1fbGF6eUpTVmFsdWVzLmFkZChlcnJvclN0cmluZykpOwogICAg
ICAgICAgICAgICAgICAgICBOb2RlKiBlcnJvck1lc3NhZ2UgPSBhZGRUb0dyYXBoKExhenlKU0Nv
bnN0YW50LCBpbmZvKTsKICAgICAgICAgICAgICAgICAgICAgYWRkVG9HcmFwaChUaHJvd1N0YXRp
Y0Vycm9yLCBPcEluZm8oRXJyb3JUeXBlOjpUeXBlRXJyb3IpLCBlcnJvck1lc3NhZ2UpOwpAQCAt
NzU3NCw3ICs3NTc0LDcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6cGFyc2VCbG9jayh1bnNpZ25l
ZCBsaW1pdCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIG1fY3VycmVu
dEJsb2NrID0gbm90T2JqZWN0QmxvY2s7CiAgICAgICAgICAgICAgICAgICAgIGNsZWFyQ2FjaGVz
KCk7Ci0gICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVlIGVycm9yU3RyaW5nID0gTGF6eUpT
VmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBu
b3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgICAgICAgICAgICAgIExhenlKU1ZhbHVlIGVycm9y
U3RyaW5nID0gTGF6eUpTVmFsdWU6Om5ld1N0cmluZyhtX2dyYXBoLCAiSXRlcmF0b3IgcmVzdWx0
IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfc3RyKTsKICAgICAgICAgICAgICAgICAgICAg
T3BJbmZvIGluZm8gPSBPcEluZm8obV9ncmFwaC5tX2xhenlKU1ZhbHVlcy5hZGQoZXJyb3JTdHJp
bmcpKTsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogZXJyb3JNZXNzYWdlID0gYWRkVG9HcmFw
aChMYXp5SlNDb25zdGFudCwgaW5mbyk7CiAgICAgICAgICAgICAgICAgICAgIGFkZFRvR3JhcGgo
VGhyb3dTdGF0aWNFcnJvciwgT3BJbmZvKEVycm9yVHlwZTo6VHlwZUVycm9yKSwgZXJyb3JNZXNz
YWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRHJpdmVyLmNwcAppbmRleCA2NTA3OWZj
ZjFlNTczNTE2OTdhOTlmNWQ5Y2IzNDViOWY2ZTNhNmM5Li40ODcwMDhlZjk2N2FmNmYxODQ3NzEw
YzlhYzQ4YWU2YjMyMGYwOWQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0RyaXZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdEcml2ZXIu
Y3BwCkBAIC03OSw3ICs3OSw3IEBAIHN0YXRpYyBDb21waWxhdGlvblJlc3VsdCBjb21waWxlSW1w
bCgKICAgICAgICAgZGF0YUxvZygiREZHKERyaXZlcikgY29tcGlsaW5nICIsICpjb2RlQmxvY2ss
ICIgd2l0aCAiLCBtb2RlLCAiLCBpbnN0cnVjdGlvbnMgc2l6ZSA9ICIsIGNvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zU2l6ZSgpLCAiXG4iKTsKICAgICAKICAgICBpZiAodm0udHlwZVByb2ZpbGVyKCkp
Ci0gICAgICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwgIlBy
ZXBhcmluZyBmb3IgREZHIGNvbXBpbGF0aW9uLiJfcyk7CisgICAgICAgIHZtLnR5cGVQcm9maWxl
ckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwgIlByZXBhcmluZyBmb3IgREZHIGNvbXBpbGF0
aW9uLiJfc3RyKTsKICAgICAKICAgICBSZWY8UGxhbj4gcGxhbiA9IGFkb3B0UmVmKAogICAgICAg
ICAqbmV3IFBsYW4oY29kZUJsb2NrLCBwcm9maWxlZERGR0NvZGVCbG9jaywgbW9kZSwgb3NyRW50
cnlCeXRlY29kZUluZGV4LCBtdXN0SGFuZGxlVmFsdWVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcAppbmRleCBkYzUwMzE2NDc1YWY4OTFhNWZkYmNlZGM4
NDZmYmFhOTQ0Yjg2MWRkLi4yOTcyM2Y4OTNkOGIyOWVkY2M0YTBhNGM2ZDhhYjhkYzU0ZWVlMDU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTE3
OSw3ICsxNzksNyBAQCBjaGFyKiBuZXdUeXBlZEFycmF5V2l0aFNpemUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cgogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChzaXplIDwgMCkgewotICAgICAgICB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgIlJlcXVlc3RlZCBsZW5ndGggaXMgbmVnYXRpdmUiX3MpKTsKKyAgICAgICAgdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsICJSZXF1ZXN0ZWQgbGVuZ3RoIGlzIG5lZ2F0aXZlIl9zdHIpKTsKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yOTAsNyArMjkwLDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbk9iamVjdENyZWF0ZSwgSlNDZWxsKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWwKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVk
UHJvdG90eXBlKTsKIAogICAgIGlmICghcHJvdG90eXBlLmlzT2JqZWN0KCkgJiYgIXByb3RvdHlw
ZS5pc051bGwoKSkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9iamVjdCBvciBudWxsLiJfcyk7
CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdCBw
cm90b3R5cGUgbWF5IG9ubHkgYmUgYW4gT2JqZWN0IG9yIG51bGwuIl9zdHIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE3ODksNyArMTc4OSw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJheVdpdGhTaXplLCBjaGFyKiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
CiAgICAgaWYgKFVOTElLRUxZKHNpemUgPCAwKSkgewotICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkFycmF5
IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zKSk7CisgICAg
ICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUg
aW50ZWdlci4iX3N0cikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE4
MTQsNyArMTgxNCw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25OZXdBcnJh
eVdpdGhTaXplQW5kSGludCwgY2hhciosIChKU0dsb2JhbE9iamVjCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKFVOTElLRUxZKHNpemUgPCAwKSkg
ewotICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBv
c2l0aXZlIGludGVnZXIuIl9zKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQXJyYXkgc2l6ZSBpcyBu
b3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iX3N0cikpOwogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTI1ODIsNyArMjU4Miw3IEBAIEpTQ19ERUZJTkVfSklU
X09QRVJBVElPTihvcGVyYXRpb25JbnQzMlRvU3RyaW5nLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgaWYgKHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2KSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgInRvU3Ry
aW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDM2Il9zKSk7CisgICAg
ICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgInRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIg
YW5kIDM2Il9zdHIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0yNTk4
LDcgKzI1OTgsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uSW50NTJUb1N0
cmluZywgY2hhciosIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChyYWRpeCA8IDIgfHwgcmFkaXggPiAz
NikgewotICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsICJ0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUg
YmV0d2VlbiAyIGFuZCAzNiJfcykpOworICAgICAgICB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJ0b1N0cmluZygpIHJhZGl4
IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNiJfc3RyKSk7CiAgICAgICAgIHJldHVy
biBudWxscHRyOwogICAgIH0KIApAQCAtMjYxNCw3ICsyNjE0LDcgQEAgSlNDX0RFRklORV9KSVRf
T1BFUkFUSU9OKG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5nLCBjaGFyKiwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAg
ICBpZiAocmFkaXggPCAyIHx8IHJhZGl4ID4gMzYpIHsKLSAgICAgICAgdGhyb3dWTUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAidG9TdHJp
bmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzYiX3MpKTsKKyAgICAg
ICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMiBh
bmQgMzYiX3N0cikpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTMyNjUs
NyArMzI2NSw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihvcGVyYXRpb25Qcm9jZXNzVHlw
ZVByb2ZpbGVyTG9nREZHLCB2b2lkLCAoVk0qIHZtUG9pbnRlCiAgICAgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwogICAgIEpJVE9wZXJhdGlvblByb2xvZ3Vl
Q2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZyYW1lKTsKIAotICAgIHZtLnR5cGVQcm9m
aWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcyh2bSwgIkxvZyBGdWxsLCBjYWxsZWQgZnJvbSBp
bnNpZGUgREZHLiJfcyk7CisgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRy
aWVzKHZtLCAiTG9nIEZ1bGwsIGNhbGxlZCBmcm9tIGluc2lkZSBERkcuIl9zdHIpOwogfQogCiBK
U0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUmVzb2x2ZVNjb3BlRm9ySG9pc3RpbmdG
dW5jRGVjbEluRXZhbCwgRW5jb2RlZEpTVmFsdWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1Njb3BlKiBzY29wZSwgVW5pcXVlZFN0cmluZ0ltcGwqIGltcGwpKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHAKaW5kZXggOTI2MDQ1ZjhlMTdkODRjMmIxNWZmNzk2YWFkMWU1ZTFiN2FlMGE0YS4uMGI5OGU5
Zjc3YjJlM2FmMWNiYjc5OWY2NWU2ZDE0MzZmYWZlNTMyYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC0z
NTgsMTEgKzM1OCwxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUu
aXNOdW1iZXIoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJl
cih2YWx1ZS5hc051bWJlcigpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlzQm9v
bGVhbigpKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmFzQm9vbGVhbigp
ID8gInRydWUiX3MgOiAiZmFsc2UiX3M7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4g
dmFsdWUuYXNCb29sZWFuKCkgPyAidHJ1ZSJfc3RyIDogImZhbHNlIl9zdHI7CiAgICAgICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZS5pc051bGwoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiAibnVsbCJfczsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAibnVsbCJfc3Ry
OwogICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAidW5kZWZpbmVkIl9zOworICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuICJ1bmRlZmluZWQiX3N0cjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgICAgICAgICAgICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCBjNDA3YjAwYzRkYWI3ZDY3NmEwNWY5ZTNk
NTBkZGQxYTcyMTAwMmFiLi5jMzljNmIzOThjNDM1NzFiYTg2MWJmZmNjNGIyMjQ2MTY3YzJkZWVj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC01NzIsNyArNTcyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCFtX2dyYXBoRHVtcCkgewog
ICAgICAgICAgICAgU3RyaW5nUHJpbnRTdHJlYW0gb3V0OwogICAgICAgICAgICAgbV9ncmFwaC5k
dW1wKG91dCk7Ci0gICAgICAgICAgICBtX2dyYXBoRHVtcCA9IG91dC50cnlUb1N0cmluZygpLnZh
bHVlX29yKCI8b3V0IG9mIG1lbW9yeSB3aGlsZSBkdW1waW5nIGdyYXBoPiJfcyk7CisgICAgICAg
ICAgICBtX2dyYXBoRHVtcCA9IG91dC50cnlUb1N0cmluZygpLnZhbHVlX29yKCI8b3V0IG9mIG1l
bW9yeSB3aGlsZSBkdW1waW5nIGdyYXBoPiJfc3RyKTsKICAgICAgICAgfQogCiAgICAgICAgIHN3
aXRjaCAobm9kZS0+b3AoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2hl
YXAvSGVhcFNuYXBzaG90QnVpbGRlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwU25hcHNob3RCdWlsZGVyLmNwcAppbmRleCBhOGNkZTg4MTUxNzU3Y2Q3ZGRhNDkwZDQ0NDU4
Mjc4ZWEzYWY4ZTE5Li4wMTcwNmI5YWU4ZjUwOTk2YjdiZWM0YTc5ZmQ5Njg1ZjA1MDhiYWU4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwU25hcHNob3RCdWlsZGVy
LmNwcApAQCAtMzM5LDcgKzMzOSw3IEBAIFN0cmluZyBIZWFwU25hcHNob3RCdWlsZGVyOjpqc29u
KEZ1bmN0aW9uPGJvb2wgKGNvbnN0IEhlYXBTbmFwc2hvdE5vZGUmKT4gYWxsb3dOCiAKICAgICAv
LyBCdWlsZCBhIGxpc3Qgb2YgdXNlZCBjbGFzcyBuYW1lcy4KICAgICBIYXNoTWFwPFN0cmluZywg
dW5zaWduZWQ+IGNsYXNzTmFtZUluZGV4ZXM7Ci0gICAgY2xhc3NOYW1lSW5kZXhlcy5zZXQoIjxy
b290PiJfcywgMCk7CisgICAgY2xhc3NOYW1lSW5kZXhlcy5zZXQoIjxyb290PiJfc3RyLCAwKTsK
ICAgICB1bnNpZ25lZCBuZXh0Q2xhc3NOYW1lSW5kZXggPSAxOwogCiAgICAgLy8gQnVpbGQgYSBs
aXN0IG9mIGxhYmVscyAodGhpcyBpcyBqdXN0IGEgc3RyaW5nIHRhYmxlKS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29uc29sZU1lc3NhZ2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKaW5kZXggZWY4
OWFlZDVkYWY1OTQ1YmIxNzRhMzMwZmU5ZmM2ZDQ5ZjJhMDFjMy4uNDNlNTZkYTJjMWZjNzZkZTc2
MzE5YzcxZWMwM2UzYWUyZGI4OTU3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9Db25zb2xlTWVzc2FnZS5jcHAKQEAgLTI2NCwxMiArMjY0LDEyIEBAIHZvaWQg
Q29uc29sZU1lc3NhZ2U6OmFkZFRvRnJvbnRlbmQoQ29uc29sZUZyb250ZW5kRGlzcGF0Y2hlciYg
Y29uc29sZUZyb250ZW5kRGlzCiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
ICAgICAgYXJndW1lbnRzT2JqZWN0LT5hZGRJdGVtKGluc3BlY3RvclZhbHVlLnJlbGVhc2VOb25O
dWxsKCkpOwogICAgICAgICAgICAgICAgICAgICBpZiAobV9hcmd1bWVudHMtPmFyZ3VtZW50Q291
bnQoKSA+IDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvIGluc3BlY3Rvck9i
amVjdCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QoY29sdW1ucywgImNvbnNvbGUiX3MsIHRy
dWUpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF1dG8gaW5zcGVjdG9yT2JqZWN0ID0g
aW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChjb2x1bW5zLCAiY29uc29sZSJfc3RyLCB0cnVlKSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHNPYmplY3QtPmFkZEl0ZW0oaW5z
cGVjdG9yT2JqZWN0LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1fYXJndW1lbnRzLT5hcmd1bWVudENvdW50KCk7ICsraSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgYXV0byBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0Lndy
YXBPYmplY3QobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSksICJjb25zb2xlIl9zLCBnZW5lcmF0
ZVByZXZpZXcpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBpbnNwZWN0b3JWYWx1ZSA9
IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3QobV9hcmd1bWVudHMtPmFyZ3VtZW50QXQoaSksICJj
b25zb2xlIl9zdHIsIGdlbmVyYXRlUHJldmlldyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIWluc3BlY3RvclZhbHVlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAt
Mjg3LDEwICsyODcsMTAgQEAgdm9pZCBDb25zb2xlTWVzc2FnZTo6YWRkVG9Gcm9udGVuZChDb25z
b2xlRnJvbnRlbmREaXNwYXRjaGVyJiBjb25zb2xlRnJvbnRlbmREaXMKICAgICAgICAgICAgICAg
ICAgICAgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+IGluc3BlY3RvclZh
bHVlOwogICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1lc3NhZ2UudHlwZSkgewogICAgICAg
ICAgICAgICAgICAgICBjYXNlIEpTT05Mb2dWYWx1ZTo6VHlwZTo6SlNPTjoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGluc3BlY3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcEpTT05TdHJp
bmcobWVzc2FnZS52YWx1ZSwgImNvbnNvbGUiX3MsIGdlbmVyYXRlUHJldmlldyk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBpbnNwZWN0b3JWYWx1ZSA9IGluamVjdGVkU2NyaXB0LndyYXBKU09O
U3RyaW5nKG1lc3NhZ2UudmFsdWUsICJjb25zb2xlIl9zdHIsIGdlbmVyYXRlUHJldmlldyk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBK
U09OTG9nVmFsdWU6OlR5cGU6OlN0cmluZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGluc3Bl
Y3RvclZhbHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChKU0M6OkpTVmFsdWUoSlNDOjpq
c1N0cmluZyhnbG9iYWxPYmplY3QoKS0+dm0oKSwgbWVzc2FnZS52YWx1ZSkpLCAiY29uc29sZSJf
cywgZ2VuZXJhdGVQcmV2aWV3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc3BlY3RvclZh
bHVlID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChKU0M6OkpTVmFsdWUoSlNDOjpqc1N0cmlu
ZyhnbG9iYWxPYmplY3QoKS0+dm0oKSwgbWVzc2FnZS52YWx1ZSkpLCAiY29uc29sZSJfc3RyLCBn
ZW5lcmF0ZVByZXZpZXcpOwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JWYWx1ZSkK
QEAgLTM2Myw3ICszNjMsNyBAQCBib29sIENvbnNvbGVNZXNzYWdlOjppc0VxdWFsKENvbnNvbGVN
ZXNzYWdlKiBtc2cpIGNvbnN0CiB2b2lkIENvbnNvbGVNZXNzYWdlOjpjbGVhcigpCiB7CiAgICAg
aWYgKCFtX21lc3NhZ2UpCi0gICAgICAgIG1fbWVzc2FnZSA9ICI8bWVzc2FnZSBjb2xsZWN0ZWQ+
Il9zOworICAgICAgICBtX21lc3NhZ2UgPSAiPG1lc3NhZ2UgY29sbGVjdGVkPiJfc3RyOwogCiAg
ICAgaWYgKG1fYXJndW1lbnRzKQogICAgICAgICBtX2FyZ3VtZW50cyA9IG51bGxwdHI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGls
aXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNo
VXRpbGl0aWVzLmNwcAppbmRleCAxMjUxMDQzOGIyZmM5YjQ2ODZhNmM1ODdjNWE4NmQ0ZTgzYTM5
MTQ1Li42NjM5OTlhMjIxNjg4MmY1M2ExNGRlZmU2YjI2OTU2ZGQyN2FmN2RjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHAKQEAgLTIwMSw3ICsyMDEsNyBAQCBzdGF0aWMgU3RyaW5nIGZpbmRNYWdpY0Nv
bW1lbnQoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHBhdHRlcm5TdHJpbgog
U3RyaW5nIGZpbmRTdHlsZXNoZWV0U291cmNlTWFwVVJMKGNvbnN0IFN0cmluZyYgY29udGVudCkK
IHsKICAgICAvLyAiLyojIDxuYW1lPj08dmFsdWU+ICovIiBhbmQgZGVwcmVjYXRlZCAiLypAIgot
ICAgIHJldHVybiBmaW5kTWFnaWNDb21tZW50KGNvbnRlbnQsICIvXFwqWyNAXVtcMDQwXHRdc291
cmNlTWFwcGluZ1VSTD1bXDA0MFx0XSooW15cXHNcJ1wiXSopW1wwNDBcdF0qXFwqLyJfcyk7Cisg
ICAgcmV0dXJuIGZpbmRNYWdpY0NvbW1lbnQoY29udGVudCwgIi9cXCpbI0BdW1wwNDBcdF1zb3Vy
Y2VNYXBwaW5nVVJMPVtcMDQwXHRdKihbXlxcc1wnXCJdKilbXDA0MFx0XSpcXCovIl9zdHIpOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBDb250ZW50U2VhcmNoVXRpbGl0aWVzCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IDhiMjkw
ZmFlYmMxODY1NTE5YjBlN2M1MTRmNDk3NTg1ZGZjMGJiZGEuLjUzNGMyZGU4NTE5ODNiZmQzNjUw
OTM1OGRjNjBlODI2ODAyYzNlNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCkBAIC00MywxMiArNDMsMTIgQEAKIG5hbWVzcGFj
ZSBJbnNwZWN0b3IgewogCiBJbmplY3RlZFNjcmlwdDo6SW5qZWN0ZWRTY3JpcHQoKQotICAgIDog
SW5qZWN0ZWRTY3JpcHRCYXNlKCJJbmplY3RlZFNjcmlwdCJfcykKKyAgICA6IEluamVjdGVkU2Ny
aXB0QmFzZSgiSW5qZWN0ZWRTY3JpcHQiX3N0cikKIHsKIH0KIAogSW5qZWN0ZWRTY3JpcHQ6Oklu
amVjdGVkU2NyaXB0KERlcHJlY2F0ZWQ6OlNjcmlwdE9iamVjdCBpbmplY3RlZFNjcmlwdE9iamVj
dCwgSW5zcGVjdG9yRW52aXJvbm1lbnQqIGVudmlyb25tZW50KQotICAgIDogSW5qZWN0ZWRTY3Jp
cHRCYXNlKCJJbmplY3RlZFNjcmlwdCJfcywgaW5qZWN0ZWRTY3JpcHRPYmplY3QsIGVudmlyb25t
ZW50KQorICAgIDogSW5qZWN0ZWRTY3JpcHRCYXNlKCJJbmplY3RlZFNjcmlwdCJfc3RyLCBpbmpl
Y3RlZFNjcmlwdE9iamVjdCwgZW52aXJvbm1lbnQpCiB7CiB9CiAKQEAgLTU4LDcgKzU4LDcgQEAg
SW5qZWN0ZWRTY3JpcHQ6On5JbmplY3RlZFNjcmlwdCgpCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmV4ZWN1dGUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBmdW5jdGlvblN0cmluZywgRXhlY3V0ZU9wdGlvbnMmJiBvcHRpb25zLCBSZWZQdHI8UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYg
d2FzVGhyb3duLCBzdGQ6Om9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpCiB7Ci0gICAg
RGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJleGVjdXRlIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxI
YW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZXhlY3V0ZSJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KGZ1bmN0aW9uU3RyaW5nKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvcHRpb25zLm9i
amVjdEdyb3VwKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvcHRpb25zLmluY2x1ZGVD
b21tYW5kTGluZUFQSSk7CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV4
ZWN1dGUoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBm
CiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlKFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1ZSwg
Ym9vbCBnZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3VsdCwgUmVmUHRyPFByb3RvY29sOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHdhc1Ro
cm93biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQogewotICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAiZXZhbHVhdGUiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRs
ZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVj
dGVkU2NyaXB0T2JqZWN0KCksICJldmFsdWF0ZSJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgp
LT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGV4
cHJlc3Npb24pOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChpbmNsdWRlQ29tbWFuZExpbmVBUEkpOwpAQCAtODMs
NyArODMsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0ZShQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmCiAKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmF3YWl0UHJvbWlzZShjb25zdCBTdHJpbmcmIHByb21pc2VPYmplY3RJZCwgYm9vbCByZXR1cm5C
eVZhbHVlLCBib29sIGdlbmVyYXRlUHJldmlldywgYm9vbCBzYXZlUmVzdWx0LCBBc3luY0NhbGxD
YWxsYmFjayYmIGNhbGxiYWNrKQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiYXdhaXRQcm9taXNlIl9zLCBpbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
YXdhaXRQcm9taXNlIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhh
bmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQocHJvbWlzZU9iamVjdElkKTsK
ICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChyZXR1cm5CeVZhbHVlKTsKICAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudChnZW5lcmF0ZVByZXZpZXcpOwpAQCAtOTMsNyArOTMsNyBAQCB2b2lk
IEluamVjdGVkU2NyaXB0Ojphd2FpdFByb21pc2UoY29uc3QgU3RyaW5nJiBwcm9taXNlT2JqZWN0
SWQsIGJvb2wgcmV0dXJuQnlWYQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpjYWxsRnVuY3Rpb25P
bihQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVj
dElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgYXJndW1lbnRzLCBi
b29sIHJldHVybkJ5VmFsdWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8UHJvdG9jb2w6
OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgc3RkOjpvcHRpb25hbDxib29sPiYgd2Fz
VGhyb3duKQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY2FsbEZ1bmN0aW9uT24iX3MsIGluc3BlY3RvckVudmly
b25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0
RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJjYWxsRnVuY3Rp
b25PbiJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkp
OwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChleHByZXNzaW9uKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChh
cmd1bWVudHMpOwpAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmNhbGxG
dW5jdGlvbk9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0CiAK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoUHJvdG9jb2w6OkVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmlu
ZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nJiBv
YmplY3RHcm91cCwgYm9vbCBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGJvb2wgcmV0dXJuQnlWYWx1
ZSwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIGJvb2wgc2F2ZVJlc3VsdCwgUmVmUHRyPFByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4mIHdh
c1Rocm93biwgc3RkOjpvcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQogewotICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAiZXZhbHVhdGVPbkNhbGxGcmFtZSJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVu
Y3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImV2YWx1YXRlT25DYWxsRnJhbWUiX3N0
ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJhbWVzKTsKICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChjYWxsRnJhbWVJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZXhwcmVz
c2lvbik7CkBAIC0xMjEsMTQgKzEyMSwxNCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpldmFsdWF0
ZU9uQ2FsbEZyYW1lKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQwogCiB2
b2lkIEluamVjdGVkU2NyaXB0OjpnZXRGdW5jdGlvbkRldGFpbHMoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8UHJvdG9j
b2w6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+JiByZXN1bHQpCiB7Ci0gICAgRGVwcmVjYXRl
ZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJn
ZXRGdW5jdGlvbkRldGFpbHMiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2Fs
bEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9u
KGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRGdW5jdGlvbkRldGFpbHMiX3N0ciwgaW5zcGVj
dG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudChmdW5jdGlvbklkKTsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVz
dWx0VmFsdWUgPSBtYWtlQ2FsbChmdW5jdGlvbik7CiAgICAgaWYgKCFyZXN1bHRWYWx1ZSB8fCBy
ZXN1bHRWYWx1ZS0+dHlwZSgpICE9IEpTT046OlZhbHVlOjpUeXBlOjpPYmplY3QpIHsKICAgICAg
ICAgZXJyb3JTdHJpbmcgPSByZXN1bHRWYWx1ZS0+YXNTdHJpbmcoKTsKICAgICAgICAgaWYgKCFl
cnJvclN0cmluZykKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIl9z
OworICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3N0cjsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTM3LDE0ICsxMzcsMTQgQEAgdm9pZCBJbmplY3RlZFNj
cmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnMKIAogdm9pZCBJbmplY3RlZFNjcmlwdDo6ZnVuY3Rpb25EZXRhaWxzKFByb3RvY29s
OjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgUmVmUHRyPFBy
b3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYgcmVzdWx0KQogewotICAgIERlcHJl
Y2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgp
LCAiZnVuY3Rpb25EZXRhaWxzIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNh
bGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlv
bihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZnVuY3Rpb25EZXRhaWxzIl9zdHIsIGluc3BlY3Rv
ckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQodmFsdWUpOwogCiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHRWYWx1
ZSA9IG1ha2VDYWxsKGZ1bmN0aW9uKTsKICAgICBpZiAoIXJlc3VsdFZhbHVlIHx8IHJlc3VsdFZh
bHVlLT50eXBlKCkgIT0gSlNPTjo6VmFsdWU6OlR5cGU6Ok9iamVjdCkgewogICAgICAgICBlcnJv
clN0cmluZyA9IHJlc3VsdFZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAoIWVycm9yU3Ry
aW5nKQotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3M7CisgICAg
ICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfc3RyOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xNTMsMTQgKzE1MywxNCBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojpm
dW5jdGlvbkRldGFpbHMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSlNDOjpK
UwogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRQcmV2aWV3KFByb3RvY29sOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxQcm90b2NvbDo6
UnVudGltZTo6T2JqZWN0UHJldmlldz4mIHJlc3VsdCkKIHsKLSAgICBEZXByZWNhdGVkOjpTY3Jp
cHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldFByZXZp
ZXciX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7Cisg
ICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJnZXRQcmV2aWV3Il9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQp
OwogCiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHRWYWx1ZSA9IG1ha2VDYWxsKGZ1bmN0
aW9uKTsKICAgICBpZiAoIXJlc3VsdFZhbHVlIHx8IHJlc3VsdFZhbHVlLT50eXBlKCkgIT0gSlNP
Tjo6VmFsdWU6OlR5cGU6Ok9iamVjdCkgewogICAgICAgICBlcnJvclN0cmluZyA9IHJlc3VsdFZh
bHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAoIWVycm9yU3RyaW5nKQotICAgICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3M7CisgICAgICAgICAgICBlcnJvclN0cmlu
ZyA9ICJJbnRlcm5hbCBlcnJvciJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0x
NzIsNyArMTcyLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHIKICAgICBBU1NFUlQoZmV0Y2hT
dGFydCA+PSAwKTsKICAgICBBU1NFUlQoZmV0Y2hDb3VudCA+PSAwKTsKIAotICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAi
Z2V0UHJvcGVydGllcyJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFu
ZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldFByb3BlcnRpZXMiX3N0ciwgaW5zcGVjdG9yRW52aXJv
bm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1
bWVudChvYmplY3RJZCk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob3duUHJvcGVydGll
cyk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZmV0Y2hTdGFydCk7CkBAIC0xODEsNyAr
MTgxLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0UHJvcGVydGllcyhQcm90b2NvbDo6RXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHIKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1
ZT4gcmVzdWx0ID0gbWFrZUNhbGwoZnVuY3Rpb24pOwogICAgIGlmICghcmVzdWx0IHx8IHJlc3Vs
dC0+dHlwZSgpICE9IEpTT046OlZhbHVlOjpUeXBlOjpBcnJheSkgewotICAgICAgICBlcnJvclN0
cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfczsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJu
YWwgZXJyb3IiX3N0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTkzLDcgKzE5Myw3
IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhQcm90b2Nv
bDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nCiAgICAgQVNTRVJUKGZldGNoU3RhcnQgPj0gMCk7
CiAgICAgQVNTRVJUKGZldGNoQ291bnQgPj0gMCk7CiAKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldERpc3BsYXlh
YmxlUHJvcGVydGllcyJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFu
ZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5q
ZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldERpc3BsYXlhYmxlUHJvcGVydGllcyJfc3RyLCBpbnNw
ZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChm
ZXRjaFN0YXJ0KTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmZXRjaENvdW50KTsKQEAg
LTIwMSw3ICsyMDEsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3Bl
cnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZwogCiAgICAgUmVmUHRyPEpT
T046OlZhbHVlPiByZXN1bHQgPSBtYWtlQ2FsbChmdW5jdGlvbik7CiAgICAgaWYgKCFyZXN1bHQg
fHwgcmVzdWx0LT50eXBlKCkgIT0gSlNPTjo6VmFsdWU6OlR5cGU6OkFycmF5KSB7Ci0gICAgICAg
IGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIl9zOworICAgICAgICBlcnJvclN0cmluZyA9
ICJJbnRlcm5hbCBlcnJvciJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMTAs
MTMgKzIxMCwxMyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXREaXNwbGF5YWJsZVByb3BlcnRp
ZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZwogCiB2b2lkIEluamVjdGVkU2Ny
aXB0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0
cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcj4+JiBwcm9wZXJ0aWVzKQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2Fs
bCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0SW50ZXJuYWxQcm9wZXJ0aWVz
Il9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9i
amVjdCgpLCAiZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50
KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
b2JqZWN0SWQpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGdlbmVyYXRlUHJldmlldyk7
CiAKICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHJlc3VsdCA9IG1ha2VDYWxsKGZ1bmN0aW9uKTsK
ICAgICBpZiAoIXJlc3VsdCB8fCByZXN1bHQtPnR5cGUoKSAhPSBKU09OOjpWYWx1ZTo6VHlwZTo6
QXJyYXkpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiX3M7CisgICAg
ICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIl9zdHI7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKQEAgLTIzMCw3ICsyMzAsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRDb2xs
ZWN0aW9uRW50cmllcyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjbwogICAg
IEFTU0VSVChmZXRjaFN0YXJ0ID49IDApOwogICAgIEFTU0VSVChmZXRjaENvdW50ID49IDApOwog
Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2Ny
aXB0T2JqZWN0KCksICJnZXRDb2xsZWN0aW9uRW50cmllcyJfcywgaW5zcGVjdG9yRW52aXJvbm1l
bnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImdldENvbGxlY3Rpb25F
bnRyaWVzIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIo
KSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQob2JqZWN0SWQpOwogICAgIGZ1bmN0aW9u
LmFwcGVuZEFyZ3VtZW50KG9iamVjdEdyb3VwKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChmZXRjaFN0YXJ0KTsKQEAgLTIzOCw3ICsyMzgsNyBAQCB2b2lkIEluamVjdGVkU2NyaXB0Ojpn
ZXRDb2xsZWN0aW9uRW50cmllcyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
bwogCiAgICAgUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHQgPSBtYWtlQ2FsbChmdW5jdGlvbik7
CiAgICAgaWYgKCFyZXN1bHQgfHwgcmVzdWx0LT50eXBlKCkgIT0gSlNPTjo6VmFsdWU6OlR5cGU6
OkFycmF5KSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIl9zOworICAg
ICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfc3RyOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0yNDcsMTIgKzI0NywxMiBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpnZXRD
b2xsZWN0aW9uRW50cmllcyhQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjbwog
CiB2b2lkIEluamVjdGVkU2NyaXB0OjpzYXZlUmVzdWx0KFByb3RvY29sOjpFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgY2FsbEFyZ3VtZW50SlNPTiwgc3RkOjpvcHRpb25h
bDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KQogewotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAic2F2ZVJlc3VsdCJfcywg
aW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3Qo
KSwgInNhdmVSZXN1bHQiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxs
SGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsQXJndW1lbnRKU09O
KTsKIAogICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gcmVzdWx0ID0gbWFrZUNhbGwoZnVuY3Rpb24p
OwogICAgIGlmICghcmVzdWx0IHx8IHJlc3VsdC0+dHlwZSgpICE9IEpTT046OlZhbHVlOjpUeXBl
OjpJbnRlZ2VyKSB7Ci0gICAgICAgIGVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIl9zOwor
ICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciJfc3RyOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0yNjIsNyArMjYyLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6c2F2
ZVJlc3VsdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcK
IFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5qZWN0
ZWRTY3JpcHQ6OndyYXBDYWxsRnJhbWVzKEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzKSBjb25zdAog
ewogICAgIEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5j
dGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBDYWxsRnJhbWVz
Il9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAg
IERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9i
amVjdCgpLCAid3JhcENhbGxGcmFtZXMiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVu
Y3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChjYWxsRnJh
bWVzKTsKIAogICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxl
ZChmdW5jdGlvbik7CkBAIC0yODAsNyArMjgwLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9j
b2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbmplY3RlZFNjcmlwdDo6d3JhcENhbGxGcmFtZXMK
IFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6
d3JhcE9iamVjdChKU0M6OkpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgZ3JvdXBOYW1lLCBi
b29sIGdlbmVyYXRlUHJldmlldykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7
Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3Rl
ZFNjcmlwdE9iamVjdCgpLCAid3JhcE9iamVjdCJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+
ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwT2JqZWN0Il9zdHIs
IGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgd3Jh
cEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHZhbHVlKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoZ3JvdXBOYW1lKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaGFz
QWNjZXNzVG9JbnNwZWN0ZWRTY3JpcHRTdGF0ZSgpKTsKQEAgLTMwNCw3ICszMDQsNyBAQCBSZWZQ
dHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBP
YmplY3QoSlNDOjpKU1ZhbHVlCiBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4gSW5qZWN0ZWRTY3JpcHQ6OndyYXBKU09OU3RyaW5nKGNvbnN0IFN0cmluZyYganNvbiwgY29u
c3QgU3RyaW5nJiBncm91cE5hbWUsIGJvb2wgZ2VuZXJhdGVQcmV2aWV3KSBjb25zdAogewogICAg
IEFTU0VSVCghaGFzTm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNh
bGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJ3cmFwSlNPTlN0cmluZyJf
cywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBE
ZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0aW9uKGluamVjdGVkU2NyaXB0
T2JqZWN0KCksICJ3cmFwSlNPTlN0cmluZyJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5m
dW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChq
c29uKTsKICAgICB3cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ3JvdXBOYW1lKTsKICAgICB3
cmFwRnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZ2VuZXJhdGVQcmV2aWV3KTsKQEAgLTMzMCw3ICsz
MzAsNyBAQCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4gSW5qZWN0ZWRT
Y3JpcHQ6OndyYXBKU09OU3RyaW5nKGNvbnN0IFN0cgogUmVmUHRyPFByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+IEluamVjdGVkU2NyaXB0Ojp3cmFwVGFibGUoSlNDOjpKU1ZhbHVlIHRh
YmxlLCBKU0M6OkpTVmFsdWUgY29sdW1ucykgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05vVmFs
dWUoKSk7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAid3JhcFRhYmxlIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCB3cmFwRnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgIndyYXBUYWJsZSJf
c3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAg
IHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudChoYXNBY2Nlc3NUb0luc3BlY3RlZFNjcmlwdFN0
YXRlKCkpOwogICAgIHdyYXBGdW5jdGlvbi5hcHBlbmRBcmd1bWVudCh0YWJsZSk7CiAgICAgaWYg
KCFjb2x1bW5zKQpAQCAtMzU2LDcgKzM1Niw3IEBAIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiBJbmplY3RlZFNjcmlwdDo6d3JhcFRhYmxlKEpTQzo6SlNWYWx1ZSB0CiBS
ZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6Ok9iamVjdFByZXZpZXc+IEluamVjdGVkU2NyaXB0Ojpw
cmV2aWV3VmFsdWUoSlNDOjpKU1ZhbHVlIHZhbHVlKSBjb25zdAogewogICAgIEFTU0VSVCghaGFz
Tm9WYWx1ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgd3JhcEZ1bmN0
aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJwcmV2aWV3VmFsdWUiX3MsIGluc3BlY3RvckVu
dmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2Ny
aXB0RnVuY3Rpb25DYWxsIHdyYXBGdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicHJl
dmlld1ZhbHVlIl9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRs
ZXIoKSk7CiAgICAgd3JhcEZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHZhbHVlKTsKIAogICAgIGF1
dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5hYmxlZCh3cmFwRnVuY3Rpb24p
OwpAQCAtMzc3LDcgKzM3Nyw3IEBAIFJlZlB0cjxQcm90b2NvbDo6UnVudGltZTo6T2JqZWN0UHJl
dmlldz4gSW5qZWN0ZWRTY3JpcHQ6OnByZXZpZXdWYWx1ZShKU0M6OkpTVmFsCiB2b2lkIEluamVj
dGVkU2NyaXB0OjpzZXRFdmVudFZhbHVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBBU1NF
UlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJzZXRFdmVudFZhbHVlIl9zLCBpbnNwZWN0
b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6
OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAic2V0
RXZlbnRWYWx1ZSJfc3RyLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5k
bGVyKCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHZhbHVlKTsKICAgICBtYWtlQ2Fs
bChmdW5jdGlvbik7CiB9CkBAIC0zODUsMTQgKzM4NSwxNCBAQCB2b2lkIEluamVjdGVkU2NyaXB0
OjpzZXRFdmVudFZhbHVlKEpTQzo6SlNWYWx1ZSB2YWx1ZSkKIHZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OmNsZWFyRXZlbnRWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAiY2xlYXJFdmVudFZhbHVlIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlv
bkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5j
dGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY2xlYXJFdmVudFZhbHVlIl9zdHIsIGluc3Bl
Y3RvckVudmlyb25tZW50KCktPmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgbWFrZUNhbGwo
ZnVuY3Rpb24pOwogfQogCiB2b2lkIEluamVjdGVkU2NyaXB0OjpzZXRFeGNlcHRpb25WYWx1ZShK
U0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwotICAgIERl
cHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVj
dCgpLCAic2V0RXhjZXB0aW9uVmFsdWUiX3MsIGluc3BlY3RvckVudmlyb25tZW50KCktPmZ1bmN0
aW9uQ2FsbEhhbmRsZXIoKSk7CisgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1
bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJzZXRFeGNlcHRpb25WYWx1ZSJfc3RyLCBp
bnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1bmN0
aW9uLmFwcGVuZEFyZ3VtZW50KHZhbHVlKTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbik7CiB9CkBA
IC00MDAsMTQgKzQwMCwxNCBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpzZXRFeGNlcHRpb25WYWx1
ZShKU0M6OkpTVmFsdWUgdmFsdWUpCiB2b2lkIEluamVjdGVkU2NyaXB0OjpjbGVhckV4Y2VwdGlv
blZhbHVlKCkKIHsKICAgICBBU1NFUlQoIWhhc05vVmFsdWUoKSk7Ci0gICAgRGVwcmVjYXRlZDo6
U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJjbGVh
ckV4Y2VwdGlvblZhbHVlIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxI
YW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihp
bmplY3RlZFNjcmlwdE9iamVjdCgpLCAiY2xlYXJFeGNlcHRpb25WYWx1ZSJfc3RyLCBpbnNwZWN0
b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIG1ha2VDYWxsKGZ1
bmN0aW9uKTsKIH0KIAogSlNDOjpKU1ZhbHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJ
ZChjb25zdCBTdHJpbmcmIG9iamVjdElkKSBjb25zdAogewogICAgIEFTU0VSVCghaGFzTm9WYWx1
ZSgpKTsKLSAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgImZpbmRPYmplY3RCeUlkIl9zLCBpbnNwZWN0b3JFbnZpcm9ubWVu
dCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0
aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZmluZE9iamVjdEJ5SWQi
X3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAg
ICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChvYmplY3RJZCk7CiAKICAgICBhdXRvIGNhbGxSZXN1
bHQgPSBjYWxsRnVuY3Rpb25XaXRoRXZhbEVuYWJsZWQoZnVuY3Rpb24pOwpAQCAtNDIwLDE0ICs0
MjAsMTQgQEAgSlNDOjpKU1ZhbHVlIEluamVjdGVkU2NyaXB0OjpmaW5kT2JqZWN0QnlJZChjb25z
dCBTdHJpbmcmIG9iamVjdElkKSBjb25zdAogdm9pZCBJbmplY3RlZFNjcmlwdDo6aW5zcGVjdE9i
amVjdChKU0M6OkpTVmFsdWUgdmFsdWUpCiB7CiAgICAgQVNTRVJUKCFoYXNOb1ZhbHVlKCkpOwot
ICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dE9iamVjdCgpLCAiaW5zcGVjdE9iamVjdCJfcywgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVu
Y3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwg
ZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImluc3BlY3RPYmplY3QiX3N0ciwgaW5z
cGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICBmdW5jdGlv
bi5hcHBlbmRBcmd1bWVudCh2YWx1ZSk7CiAgICAgbWFrZUNhbGwoZnVuY3Rpb24pOwogfQogCiB2
b2lkIEluamVjdGVkU2NyaXB0OjpyZWxlYXNlT2JqZWN0KGNvbnN0IFN0cmluZyYgb2JqZWN0SWQp
CiB7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVk
U2NyaXB0T2JqZWN0KCksICJyZWxlYXNlT2JqZWN0Il9zLCBpbnNwZWN0b3JFbnZpcm9ubWVudCgp
LT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOworICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAicmVsZWFzZU9iamVjdCJfc3Ry
LCBpbnNwZWN0b3JFbnZpcm9ubWVudCgpLT5mdW5jdGlvbkNhbGxIYW5kbGVyKCkpOwogICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG9iamVjdElkKTsKICAgICBtYWtlQ2FsbChmdW5jdGlvbik7
CiB9CkBAIC00MzUsNyArNDM1LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVj
dChjb25zdCBTdHJpbmcmIG9iamVjdElkKQogdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVsZWFzZU9i
amVjdEdyb3VwKGNvbnN0IFN0cmluZyYgb2JqZWN0R3JvdXApCiB7CiAgICAgQVNTRVJUKCFoYXNO
b1ZhbHVlKCkpOwotICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCByZWxlYXNlRnVu
Y3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInJlbGVhc2VPYmplY3RHcm91cCJfcywgaW5z
cGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgcmVsZWFzZUZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2Jq
ZWN0KCksICJyZWxlYXNlT2JqZWN0R3JvdXAiX3N0ciwgaW5zcGVjdG9yRW52aXJvbm1lbnQoKS0+
ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKICAgICByZWxlYXNlRnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQob2JqZWN0R3JvdXApOwogCiAgICAgYXV0byBjYWxsUmVzdWx0ID0gY2FsbEZ1bmN0aW9uV2l0
aEV2YWxFbmFibGVkKHJlbGVhc2VGdW5jdGlvbik7CkBAIC00NDUsNyArNDQ1LDcgQEAgdm9pZCBJ
bmplY3RlZFNjcmlwdDo6cmVsZWFzZU9iamVjdEdyb3VwKGNvbnN0IFN0cmluZyYgb2JqZWN0R3Jv
dXApCiBKU0M6OkpTT2JqZWN0KiBJbmplY3RlZFNjcmlwdDo6Y3JlYXRlQ29tbWFuZExpbmVBUElP
YmplY3QoSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZSkgY29uc3QKIHsKICAgICBBU1NFUlQoIWhhc05v
VmFsdWUoKSk7Ci0gICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGlu
amVjdGVkU2NyaXB0T2JqZWN0KCksICJjcmVhdGVDb21tYW5kTGluZUFQSU9iamVjdCJfcywgaW5z
cGVjdG9yRW52aXJvbm1lbnQoKS0+ZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICBEZXByZWNh
dGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwg
ImNyZWF0ZUNvbW1hbmRMaW5lQVBJT2JqZWN0Il9zdHIsIGluc3BlY3RvckVudmlyb25tZW50KCkt
PmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoY2Fs
bEZyYW1lKTsKIAogICAgIGF1dG8gY2FsbFJlc3VsdCA9IGNhbGxGdW5jdGlvbldpdGhFdmFsRW5h
YmxlZChmdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0QmFzZS5jcHAKaW5kZXggZGE3ZTA5Y2Q3OTE5YjBiYmY2MjA1NmM0
N2VhMTk2NThkOWI4ODUwMS4uZGYxNzI1OWFlMjkxYjczZTNkMmVmYTlhNjQzMTc2ZjNiOTQ1YThh
NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHRCYXNlLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRC
YXNlOjptYWtlQXN5bmNDYWxsKERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9uQ2FsbCYgZnVuY3Rp
b24sCiAKICAgICAgICAganNGdW5jdGlvbiA9IEpTQzo6SlNOYXRpdmVTdGRGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsIFN0cmluZygpLCBbJiwgY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKV0gKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpDYWxs
RnJhbWUqIGNhbGxGcmFtZSkgewogICAgICAgICAgICAgaWYgKCFjYWxsRnJhbWUpCi0gICAgICAg
ICAgICAgICAgY2hlY2tBc3luY0NhbGxSZXN1bHQoSlNPTjo6VmFsdWU6OmNyZWF0ZShtYWtlU3Ry
aW5nKCJFeGNlcHRpb24gd2hpbGUgbWFraW5nIGEgY2FsbC4iX3MpKSwgY2FsbGJhY2spOworICAg
ICAgICAgICAgICAgIGNoZWNrQXN5bmNDYWxsUmVzdWx0KEpTT046OlZhbHVlOjpjcmVhdGUoIkV4
Y2VwdGlvbiB3aGlsZSBtYWtpbmcgYSBjYWxsLiJfc3RyKSwgY2FsbGJhY2spOwogICAgICAgICAg
ICAgZWxzZSBpZiAoYXV0byByZXN1bHRKU09OVmFsdWUgPSB0b0luc3BlY3RvclZhbHVlKGdsb2Jh
bE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpCiAgICAgICAgICAgICAgICAgY2hlY2tB
c3luY0NhbGxSZXN1bHQocmVzdWx0SlNPTlZhbHVlLCBjYWxsYmFjayk7CiAgICAgICAgICAgICBl
bHNlCkBAIC0xNDYsNyArMTQ2LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdEJhc2U6Om1ha2VBc3lu
Y0NhbGwoRGVwcmVjYXRlZDo6U2NyaXB0RnVuY3Rpb25DYWxsJiBmdW5jdGlvbiwKIHZvaWQgSW5q
ZWN0ZWRTY3JpcHRCYXNlOjpjaGVja0NhbGxSZXN1bHQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgUmVmUHRyPEpTT046OlZhbHVlPiByZXN1bHQsIFJlZlB0cjxQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0T2JqZWN0LCBzdGQ6Om9wdGlvbmFsPGJvb2w+
JiB3YXNUaHJvd24sIHN0ZDo6b3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkKIHsKICAg
ICBpZiAoIXJlc3VsdCkgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjog
cmVzdWx0IHZhbHVlIGlzIGVtcHR5Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5h
bCBlcnJvcjogcmVzdWx0IHZhbHVlIGlzIGVtcHR5Il9zdHI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTE1NywyNSArMTU3LDI1IEBAIHZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjaGVj
a0NhbGxSZXN1bHQoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmCiAKICAg
ICBhdXRvIHJlc3VsdFR1cGxlID0gcmVzdWx0LT5hc09iamVjdCgpOwogICAgIGlmICghcmVzdWx0
VHVwbGUpIHsKLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBp
cyBub3QgYW4gT2JqZWN0Il9zOworICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJv
cjogcmVzdWx0IGlzIG5vdCBhbiBPYmplY3QiX3N0cjsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGF1dG8gdHlwZWxlc3NSZXN1bHRPYmplY3QgPSByZXN1bHRUdXBsZS0+Z2V0T2JqZWN0
KCJyZXN1bHQiX3MpOworICAgIGF1dG8gdHlwZWxlc3NSZXN1bHRPYmplY3QgPSByZXN1bHRUdXBs
ZS0+Z2V0T2JqZWN0KCJyZXN1bHQiX3N0cik7CiAgICAgaWYgKCF0eXBlbGVzc1Jlc3VsdE9iamVj
dCkgewogICAgICAgICAvLyBGSVhNRTogV2h5IGRvIHdlIGJvdGhlciBjaGVja2luZyBmb3IgbnVs
bCBoZXJlLCBidXQgbm90IGNoZWNraW5nIHRoYXQgdGhlIHR5cGUgaXMgUHJvdG9jb2w6OlJ1bnRp
bWU6OlJlbW90ZU9iamVjdD8gU3VyZWx5IHRoZSB0d28gcG9zc2libGUgZXJyb3JzIGdvIGhhbmQg
aW4gaGFuZC4KLSAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBp
cyBub3QgYSBwYWlyIG9mIHZhbHVlIGFuZCB3YXNUaHJvd24gZmxhZyJfczsKKyAgICAgICAgZXJy
b3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3I6IHJlc3VsdCBpcyBub3QgYSBwYWlyIG9mIHZhbHVl
IGFuZCB3YXNUaHJvd24gZmxhZyJfc3RyOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
d2FzVGhyb3duID0gcmVzdWx0VHVwbGUtPmdldEJvb2xlYW4oIndhc1Rocm93biJfcyk7CisgICAg
d2FzVGhyb3duID0gcmVzdWx0VHVwbGUtPmdldEJvb2xlYW4oIndhc1Rocm93biJfc3RyKTsKICAg
ICBpZiAoIXdhc1Rocm93bikgewotICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJv
cjogcmVzdWx0IGlzIG5vdCBhIHBhaXIgb2YgdmFsdWUgYW5kIHdhc1Rocm93biBmbGFnIl9zOwor
ICAgICAgICBlcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvcjogcmVzdWx0IGlzIG5vdCBhIHBh
aXIgb2YgdmFsdWUgYW5kIHdhc1Rocm93biBmbGFnIl9zdHI7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICByZXN1bHRPYmplY3QgPSBQcm90b2NvbDo6QmluZGluZ1RyYWl0czxQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0Pjo6cnVudGltZUNhc3QodHlwZWxlc3NSZXN1bHRPYmpl
Y3QucmVsZWFzZU5vbk51bGwoKSk7Ci0gICAgc2F2ZWRSZXN1bHRJbmRleCA9IHJlc3VsdFR1cGxl
LT5nZXRJbnRlZ2VyKCJzYXZlZFJlc3VsdEluZGV4Il9zKTsKKyAgICBzYXZlZFJlc3VsdEluZGV4
ID0gcmVzdWx0VHVwbGUtPmdldEludGVnZXIoInNhdmVkUmVzdWx0SW5kZXgiX3N0cik7CiB9CiAK
IHZvaWQgSW5qZWN0ZWRTY3JpcHRCYXNlOjpjaGVja0FzeW5jQ2FsbFJlc3VsdChSZWZQdHI8SlNP
Tjo6VmFsdWU+IHJlc3VsdCwgY29uc3QgQXN5bmNDYWxsQ2FsbGJhY2smIGNhbGxiYWNrKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dE1hbmFnZXIuY3BwCmluZGV4IGUxM2NjNzI5ZThiZWQ0ODRiNTc1NzM5YTIyMWQwYzU1N2E0MWE3
YzYuLjA0MGU3ZGE4MTE5YjM0MThiOTg4YjY5YzQ3YzFhMjk0NDI0NzgxMTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBJbmplY3RlZFNjcmlwdCBJbmplY3RlZFNjcmlw
dE1hbmFnZXI6OmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY29uc3QgU3RyaW5nJiBvYgogICAg
IGlmICghcmVzdWx0T2JqZWN0KQogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKIAot
ICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHRJZCA9IHJlc3VsdE9iamVjdC0+Z2V0SW50ZWdlcigiaW5q
ZWN0ZWRTY3JpcHRJZCJfcyk7CisgICAgYXV0byBpbmplY3RlZFNjcmlwdElkID0gcmVzdWx0T2Jq
ZWN0LT5nZXRJbnRlZ2VyKCJpbmplY3RlZFNjcmlwdElkIl9zdHIpOwogICAgIGlmICghaW5qZWN0
ZWRTY3JpcHRJZCkKICAgICAgICAgcmV0dXJuIEluamVjdGVkU2NyaXB0KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNb2R1bGUu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVs
ZS5jcHAKaW5kZXggNDgyNmU0NmZkYjYxYTJlZDZmYmU4NmI4OTc0MTJmNDhmZDVlOWExMS4uMzlm
OWQ5NjFlZDQzNjhkN2E5YmIwNGFjZjlmOWQyMTJmYWFhNzU1NyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1vZHVsZS5jcHAK
QEAgLTYxLDcgKzYxLDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0
ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0KIAogICAgIC8vIEZJWE1F
OiBNYWtlIHRoZSBJbmplY3RlZFNjcmlwdCBhIG1vZHVsZSBpdHNlbGYuCiAgICAgSlNDOjpKU0xv
Y2tIb2xkZXIgbG9ja2VyKGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKTsKLSAgICBEZXBy
ZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQuaW5qZWN0
ZWRTY3JpcHRPYmplY3QoKSwgImhhc0luamVjdGVkTW9kdWxlIl9zLCBpbmplY3RlZFNjcmlwdE1h
bmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAg
ICBEZXByZWNhdGVkOjpTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHQu
aW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgImhhc0luamVjdGVkTW9kdWxlIl9zdHIsIGluamVjdGVk
U2NyaXB0TWFuYWdlci0+aW5zcGVjdG9yRW52aXJvbm1lbnQoKS5mdW5jdGlvbkNhbGxIYW5kbGVy
KCkpOwogICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5hbWUoKSk7CiAgICAgYXV0byBoYXNJ
bmplY3RlZE1vZHVsZVJlc3VsdCA9IGluamVjdGVkU2NyaXB0LmNhbGxGdW5jdGlvbldpdGhFdmFs
RW5hYmxlZChmdW5jdGlvbik7CiAgICAgQVNTRVJUKGhhc0luamVjdGVkTW9kdWxlUmVzdWx0KTsK
QEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBJbmplY3RlZFNjcmlwdE1vZHVsZTo6ZW5zdXJlSW5qZWN0
ZWQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE0KICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9CiAgICAgaWYgKCFoYXNJbmplY3RlZE1vZHVs
ZVJlc3VsdC52YWx1ZSgpLmlzQm9vbGVhbigpIHx8ICFoYXNJbmplY3RlZE1vZHVsZVJlc3VsdC52
YWx1ZSgpLmFzQm9vbGVhbigpKSB7Ci0gICAgICAgIERlcHJlY2F0ZWQ6OlNjcmlwdEZ1bmN0aW9u
Q2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdC5pbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiaW5q
ZWN0TW9kdWxlIl9zLCBpbmplY3RlZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50
KCkuZnVuY3Rpb25DYWxsSGFuZGxlcigpKTsKKyAgICAgICAgRGVwcmVjYXRlZDo6U2NyaXB0RnVu
Y3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0LmluamVjdGVkU2NyaXB0T2JqZWN0KCks
ICJpbmplY3RNb2R1bGUiX3N0ciwgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZp
cm9ubWVudCgpLmZ1bmN0aW9uQ2FsbEhhbmRsZXIoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KG5hbWUoKSk7CiAgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNvdXJj
ZSgpKTsKICAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoaG9zdChpbmplY3RlZFNjcmlw
dE1hbmFnZXIsIGluamVjdGVkU2NyaXB0Lmdsb2JhbE9iamVjdCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVy
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXIuY3BwCmluZGV4IDEwODhhNmE4ZjI5NjVlMTdlNTJkN2JhMWQxMTQyYjllZDY5N2Fk
M2YuLjkzMzcyYzg1MDUzOTQ5OTc1MGRhYTc3ZDhmOGY3NjY1OTE3ZDliMWQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIuY3BwCkBAIC0xMTcsMjggKzExNywyOCBAQCB2b2lkIEJhY2tlbmREaXNw
YXRjaGVyOjpkaXNwYXRjaChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAKICAgICAgICAgYXV0byBw
YXJzZWRNZXNzYWdlID0gSlNPTjo6VmFsdWU6OnBhcnNlSlNPTihtZXNzYWdlKTsKICAgICAgICAg
aWYgKCFwYXJzZWRNZXNzYWdlKSB7Ci0gICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKFBh
cnNlRXJyb3IsICJNZXNzYWdlIG11c3QgYmUgaW4gSlNPTiBmb3JtYXQiX3MpOworICAgICAgICAg
ICAgcmVwb3J0UHJvdG9jb2xFcnJvcihQYXJzZUVycm9yLCAiTWVzc2FnZSBtdXN0IGJlIGluIEpT
T04gZm9ybWF0Il9zdHIpOwogICAgICAgICAgICAgc2VuZFBlbmRpbmdFcnJvcnMoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQogCiAgICAgICAgIG1lc3NhZ2VPYmplY3QgPSBwYXJz
ZWRNZXNzYWdlLT5hc09iamVjdCgpOwogICAgICAgICBpZiAoIW1lc3NhZ2VPYmplY3QpIHsKLSAg
ICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJNZXNzYWdlIG11
c3QgYmUgYSBKU09OaWZpZWQgb2JqZWN0Il9zKTsKKyAgICAgICAgICAgIHJlcG9ydFByb3RvY29s
RXJyb3IoSW52YWxpZFJlcXVlc3QsICJNZXNzYWdlIG11c3QgYmUgYSBKU09OaWZpZWQgb2JqZWN0
Il9zdHIpOwogICAgICAgICAgICAgc2VuZFBlbmRpbmdFcnJvcnMoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGF1dG8gcmVxdWVzdElkVmFsdWUgPSBtZXNzYWdl
T2JqZWN0LT5nZXRWYWx1ZSgiaWQiX3MpOworICAgICAgICBhdXRvIHJlcXVlc3RJZFZhbHVlID0g
bWVzc2FnZU9iamVjdC0+Z2V0VmFsdWUoImlkIl9zdHIpOwogICAgICAgICBpZiAoIXJlcXVlc3RJ
ZFZhbHVlKSB7Ci0gICAgICAgICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0
LCAiJ2lkJyBwcm9wZXJ0eSB3YXMgbm90IGZvdW5kIl9zKTsKKyAgICAgICAgICAgIHJlcG9ydFBy
b3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICInaWQnIHByb3BlcnR5IHdhcyBub3QgZm91bmQi
X3N0cik7CiAgICAgICAgICAgICBzZW5kUGVuZGluZ0Vycm9ycygpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKICAgICAgICAgYXV0byByZXF1ZXN0SWRJbnQgPSByZXF1ZXN0SWRW
YWx1ZS0+YXNJbnRlZ2VyKCk7CiAgICAgICAgIGlmICghcmVxdWVzdElkSW50KSB7Ci0gICAgICAg
ICAgICByZXBvcnRQcm90b2NvbEVycm9yKEludmFsaWRSZXF1ZXN0LCAiVGhlIHR5cGUgb2YgJ2lk
JyBwcm9wZXJ0eSBtdXN0IGJlIGludGVnZXIiX3MpOworICAgICAgICAgICAgcmVwb3J0UHJvdG9j
b2xFcnJvcihJbnZhbGlkUmVxdWVzdCwgIlRoZSB0eXBlIG9mICdpZCcgcHJvcGVydHkgbXVzdCBi
ZSBpbnRlZ2VyIl9zdHIpOwogICAgICAgICAgICAgc2VuZFBlbmRpbmdFcnJvcnMoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTUwLDIzICsxNTAsMjMgQEAgdm9pZCBCYWNr
ZW5kRGlzcGF0Y2hlcjo6ZGlzcGF0Y2goY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICAv
LyBXZSBjb3VsZCBiZSBjYWxsZWQgcmUtZW50cmFudGx5IGZyb20gYSBuZXN0ZWQgcnVuIGxvb3As
IHNvIHJlc3RvcmUgdGhlIHByZXZpb3VzIGlkLgogICAgICAgICBTZXRGb3JTY29wZSBzY29wZWRS
ZXF1ZXN0SWQobV9jdXJyZW50UmVxdWVzdElkLCByZXF1ZXN0SWQpOwogCi0gICAgICAgIGF1dG8g
bWV0aG9kVmFsdWUgPSBtZXNzYWdlT2JqZWN0LT5nZXRWYWx1ZSgibWV0aG9kIl9zKTsKKyAgICAg
ICAgYXV0byBtZXRob2RWYWx1ZSA9IG1lc3NhZ2VPYmplY3QtPmdldFZhbHVlKCJtZXRob2QiX3N0
cik7CiAgICAgICAgIGlmICghbWV0aG9kVmFsdWUpIHsKLSAgICAgICAgICAgIHJlcG9ydFByb3Rv
Y29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICInbWV0aG9kJyBwcm9wZXJ0eSB3YXNuJ3QgZm91bmQi
X3MpOworICAgICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihJbnZhbGlkUmVxdWVzdCwgIidt
ZXRob2QnIHByb3BlcnR5IHdhc24ndCBmb3VuZCJfc3RyKTsKICAgICAgICAgICAgIHNlbmRQZW5k
aW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICBh
dXRvIG1ldGhvZFN0cmluZyA9IG1ldGhvZFZhbHVlLT5hc1N0cmluZygpOwogICAgICAgICBpZiAo
IW1ldGhvZFN0cmluZykgewotICAgICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJvcihJbnZhbGlk
UmVxdWVzdCwgIlRoZSB0eXBlIG9mICdtZXRob2QnIHByb3BlcnR5IG11c3QgYmUgc3RyaW5nIl9z
KTsKKyAgICAgICAgICAgIHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJUaGUg
dHlwZSBvZiAnbWV0aG9kJyBwcm9wZXJ0eSBtdXN0IGJlIHN0cmluZyJfc3RyKTsKICAgICAgICAg
ICAgIHNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAogICAgICAgICBWZWN0b3I8U3RyaW5nPiBkb21haW5BbmRNZXRob2QgPSBtZXRob2RTdHJpbmcu
c3BsaXRBbGxvd2luZ0VtcHR5RW50cmllcygnLicpOwogICAgICAgICBpZiAoZG9tYWluQW5kTWV0
aG9kLnNpemUoKSAhPSAyIHx8ICFkb21haW5BbmRNZXRob2RbMF0ubGVuZ3RoKCkgfHwgIWRvbWFp
bkFuZE1ldGhvZFsxXS5sZW5ndGgoKSkgewotICAgICAgICAgICAgcmVwb3J0UHJvdG9jb2xFcnJv
cihJbnZhbGlkUmVxdWVzdCwgIlRoZSAnbWV0aG9kJyBwcm9wZXJ0eSB3YXMgZm9ybWF0dGVkIGlu
Y29ycmVjdGx5LiBJdCBzaG91bGQgYmUgJ0RvbWFpbi5tZXRob2QnIl9zKTsKKyAgICAgICAgICAg
IHJlcG9ydFByb3RvY29sRXJyb3IoSW52YWxpZFJlcXVlc3QsICJUaGUgJ21ldGhvZCcgcHJvcGVy
dHkgd2FzIGZvcm1hdHRlZCBpbmNvcnJlY3RseS4gSXQgc2hvdWxkIGJlICdEb21haW4ubWV0aG9k
JyJfc3RyKTsKICAgICAgICAgICAgIHNlbmRQZW5kaW5nRXJyb3JzKCk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTIxNCw4ICsyMTQsOCBAQCB2b2lkIEJhY2tlbmREaXNwYXRj
aGVyOjpzZW5kUmVzcG9uc2UobG9uZyByZXF1ZXN0SWQsIFJlZjxKU09OOjpPYmplY3Q+JiYgcmVz
dWx0LAogICAgIC8vIFRoZSBKU09OLVJQQyAyLjAgc3BlY2lmaWNhdGlvbiByZXF1aXJlcyB0aGF0
IHRoZSAiZXJyb3IiIG1lbWJlciBoYXZlIHRoZSB2YWx1ZSAnbnVsbCcKICAgICAvLyBpZiBubyBl
cnJvciBvY2N1cnJlZCBkdXJpbmcgYW4gaW52b2NhdGlvbiwgYnV0IHdlIGRvIG5vdCBpbmNsdWRl
IGl0IGF0IGFsbC4KICAgICBSZWY8SlNPTjo6T2JqZWN0PiByZXNwb25zZU1lc3NhZ2UgPSBKU09O
OjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIHJlc3BvbnNlTWVzc2FnZS0+c2V0T2JqZWN0KCJyZXN1
bHQiX3MsIFdURk1vdmUocmVzdWx0KSk7Ci0gICAgcmVzcG9uc2VNZXNzYWdlLT5zZXRJbnRlZ2Vy
KCJpZCJfcywgcmVxdWVzdElkKTsKKyAgICByZXNwb25zZU1lc3NhZ2UtPnNldE9iamVjdCgicmVz
dWx0Il9zdHIsIFdURk1vdmUocmVzdWx0KSk7CisgICAgcmVzcG9uc2VNZXNzYWdlLT5zZXRJbnRl
Z2VyKCJpZCJfc3RyLCByZXF1ZXN0SWQpOwogICAgIG1fZnJvbnRlbmRSb3V0ZXItPnNlbmRSZXNw
b25zZShyZXNwb25zZU1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKIH0KIApAQCAtMjQ2LDIzICsy
NDYsMjMgQEAgdm9pZCBCYWNrZW5kRGlzcGF0Y2hlcjo6c2VuZFBlbmRpbmdFcnJvcnMoKQogICAg
ICAgICBBU1NFUlRfQVJHKGVycm9yQ29kZSwgZXJyb3JDb2Rlc1tlcnJvckNvZGVdKTsKIAogICAg
ICAgICBSZWY8SlNPTjo6T2JqZWN0PiBlcnJvciA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0g
ICAgICAgIGVycm9yLT5zZXRJbnRlZ2VyKCJjb2RlIl9zLCBlcnJvckNvZGVzW2Vycm9yQ29kZV0p
OwotICAgICAgICBlcnJvci0+c2V0U3RyaW5nKCJtZXNzYWdlIl9zLCBlcnJvck1lc3NhZ2UpOwor
ICAgICAgICBlcnJvci0+c2V0SW50ZWdlcigiY29kZSJfc3RyLCBlcnJvckNvZGVzW2Vycm9yQ29k
ZV0pOworICAgICAgICBlcnJvci0+c2V0U3RyaW5nKCJtZXNzYWdlIl9zdHIsIGVycm9yTWVzc2Fn
ZSk7CiAgICAgICAgIHBheWxvYWQtPnB1c2hPYmplY3QoV1RGTW92ZShlcnJvcikpOwogICAgIH0K
IAogICAgIFJlZjxKU09OOjpPYmplY3Q+IHRvcExldmVsRXJyb3IgPSBKU09OOjpPYmplY3Q6OmNy
ZWF0ZSgpOwotICAgIHRvcExldmVsRXJyb3ItPnNldEludGVnZXIoImNvZGUiX3MsIGVycm9yQ29k
ZXNbZXJyb3JDb2RlXSk7Ci0gICAgdG9wTGV2ZWxFcnJvci0+c2V0U3RyaW5nKCJtZXNzYWdlIl9z
LCBlcnJvck1lc3NhZ2UpOwotICAgIHRvcExldmVsRXJyb3ItPnNldEFycmF5KCJkYXRhIl9zLCBX
VEZNb3ZlKHBheWxvYWQpKTsKKyAgICB0b3BMZXZlbEVycm9yLT5zZXRJbnRlZ2VyKCJjb2RlIl9z
dHIsIGVycm9yQ29kZXNbZXJyb3JDb2RlXSk7CisgICAgdG9wTGV2ZWxFcnJvci0+c2V0U3RyaW5n
KCJtZXNzYWdlIl9zdHIsIGVycm9yTWVzc2FnZSk7CisgICAgdG9wTGV2ZWxFcnJvci0+c2V0QXJy
YXkoImRhdGEiX3N0ciwgV1RGTW92ZShwYXlsb2FkKSk7CiAKICAgICBSZWY8SlNPTjo6T2JqZWN0
PiBtZXNzYWdlID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBtZXNzYWdlLT5zZXRPYmpl
Y3QoImVycm9yIl9zLCBXVEZNb3ZlKHRvcExldmVsRXJyb3IpKTsKKyAgICBtZXNzYWdlLT5zZXRP
YmplY3QoImVycm9yIl9zdHIsIFdURk1vdmUodG9wTGV2ZWxFcnJvcikpOwogICAgIGlmIChtX2N1
cnJlbnRSZXF1ZXN0SWQpCi0gICAgICAgIG1lc3NhZ2UtPnNldEludGVnZXIoImlkIl9zLCBtX2N1
cnJlbnRSZXF1ZXN0SWQudmFsdWUoKSk7CisgICAgICAgIG1lc3NhZ2UtPnNldEludGVnZXIoImlk
Il9zdHIsIG1fY3VycmVudFJlcXVlc3RJZC52YWx1ZSgpKTsKICAgICBlbHNlIHsKICAgICAgICAg
Ly8gVGhlICdudWxsJyB2YWx1ZSBmb3IgYW4gdW5rbm93biBpZCBpcyBzcGVjaWZpZWQgaW4gSlNP
Ti1SUEMgMi4wLCBTZWN0aW9uIDUuCi0gICAgICAgIG1lc3NhZ2UtPnNldFZhbHVlKCJpZCJfcywg
SlNPTjo6VmFsdWU6Om51bGwoKSk7CisgICAgICAgIG1lc3NhZ2UtPnNldFZhbHVlKCJpZCJfc3Ry
LCBKU09OOjpWYWx1ZTo6bnVsbCgpKTsKICAgICB9CiAKICAgICBtX2Zyb250ZW5kUm91dGVyLT5z
ZW5kUmVzcG9uc2UobWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdENvbnNvbGVD
bGllbnQuY3BwCmluZGV4IGYwNmZmMDNiZTBmZTI3MmUwOGE0NmM4NGIwZTgxMzIzYWMwNmY5MGIu
LjIyNzA2ODhkZmQ1MWFmNTg5YWM2MjIyODYyMzk2NTk0OTMzMWI1ODcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0
Q29uc29sZUNsaWVudC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0
Q29uc29sZUNsaWVudDo6cHJvZmlsZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5n
JiB0aQogICAgICAgICBmb3IgKGF1dG8mIGV4aXN0aW5nVGl0bGUgOiBtX3Byb2ZpbGVzKSB7CiAg
ICAgICAgICAgICBpZiAoZXhpc3RpbmdUaXRsZSA9PSB0aXRsZSkgewogICAgICAgICAgICAgICAg
IC8vIEZJWE1FOiBTZW5kIGFuIGVudW0gdG8gdGhlIGZyb250ZW5kIGZvciBsb2NhbGl6YXRpb24/
Ci0gICAgICAgICAgICAgICAgU3RyaW5nIHdhcm5pbmcgPSB0aXRsZS5pc0VtcHR5KCkgPyAiVW5u
YW1lZCBQcm9maWxlIGFscmVhZHkgZXhpc3RzIl9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIs
IFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdGb3JDb25zb2xlTWVzc2FnZSh0aXRsZSks
ICJcIiBhbHJlYWR5IGV4aXN0cyIpOworICAgICAgICAgICAgICAgIFN0cmluZyB3YXJuaW5nID0g
dGl0bGUuaXNFbXB0eSgpID8gIlVubmFtZWQgUHJvZmlsZSBhbHJlYWR5IGV4aXN0cyJfc3RyIDog
bWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIFNjcmlwdEFyZ3VtZW50czo6dHJ1bmNhdGVTdHJpbmdG
b3JDb25zb2xlTWVzc2FnZSh0aXRsZSksICJcIiBhbHJlYWR5IGV4aXN0cyIpOwogICAgICAgICAg
ICAgICAgIG1fY29uc29sZUFnZW50LT5hZGRNZXNzYWdlVG9Db25zb2xlKG1ha2VVbmlxdWU8Q29u
c29sZU1lc3NhZ2U+KE1lc3NhZ2VTb3VyY2U6OkNvbnNvbGVBUEksIE1lc3NhZ2VUeXBlOjpQcm9m
aWxlLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIHdhcm5pbmcpKTsKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0xMzAsNyArMTMwLDcgQEAgdm9pZCBKU0dsb2JhbE9i
amVjdENvbnNvbGVDbGllbnQ6OnByb2ZpbGVFbmQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYKICAgICB9CiAKICAgICAvLyBGSVhNRTogU2VuZCBhbiBlbnVtIHRvIHRoZSBmcm9u
dGVuZCBmb3IgbG9jYWxpemF0aW9uPwotICAgIFN0cmluZyB3YXJuaW5nID0gdGl0bGUuaXNFbXB0
eSgpID8gIk5vIHByb2ZpbGVzIGV4aXN0Il9zIDogbWFrZVN0cmluZygiUHJvZmlsZSBcIiIsIHRp
dGxlLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKKyAgICBTdHJpbmcgd2FybmluZyA9IHRpdGxlLmlz
RW1wdHkoKSA/ICJObyBwcm9maWxlcyBleGlzdCJfc3RyIDogbWFrZVN0cmluZygiUHJvZmlsZSBc
IiIsIHRpdGxlLCAiXCIgZG9lcyBub3QgZXhpc3QiKTsKICAgICBtX2NvbnNvbGVBZ2VudC0+YWRk
TWVzc2FnZVRvQ29uc29sZShtYWtlVW5pcXVlPENvbnNvbGVNZXNzYWdlPihNZXNzYWdlU291cmNl
OjpDb25zb2xlQVBJLCBNZXNzYWdlVHlwZTo6UHJvZmlsZUVuZCwgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCB3YXJuaW5nKSk7CiB9CiAKQEAgLTE5MSw3ICsxOTEsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Q29uc29sZUNsaWVudDo6dGltZVN0YW1wKEpTR2xvYmFsT2JqZWN0KiwgUmVmPFNjcmlwdEFy
Z3VtZW50cwogICAgIGlmIChMSUtFTFkoIW1fY29uc29sZUFnZW50LT5kZXZlbG9wZXJFeHRyYXNF
bmFibGVkKCkpKQogICAgICAgICByZXR1cm47CiAKLSAgICB3YXJuVW5pbXBsZW1lbnRlZCgiY29u
c29sZS50aW1lU3RhbXAiX3MpOworICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xlLnRpbWVT
dGFtcCJfc3RyKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnJlY29y
ZChKU0dsb2JhbE9iamVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpCkBAIC0xOTksNyArMTk5
LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnJlY29yZChKU0dsb2JhbE9i
amVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYKICAgICBpZiAoTElLRUxZKCFtX2NvbnNvbGVB
Z2VudC0+ZGV2ZWxvcGVyRXh0cmFzRW5hYmxlZCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
d2FyblVuaW1wbGVtZW50ZWQoImNvbnNvbGUucmVjb3JkIl9zKTsKKyAgICB3YXJuVW5pbXBsZW1l
bnRlZCgiY29uc29sZS5yZWNvcmQiX3N0cik7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RDb25z
b2xlQ2xpZW50OjpyZWNvcmRFbmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRz
PiYmKQpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3RDb25zb2xlQ2xpZW50
OjpyZWNvcmRFbmQoSlNHbG9iYWxPYmplY3QqLCBSZWY8U2NyaXB0QXJndW1lbnRzCiAgICAgaWYg
KExJS0VMWSghbV9jb25zb2xlQWdlbnQtPmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIHdhcm5VbmltcGxlbWVudGVkKCJjb25zb2xlLnJlY29yZEVuZCJf
cyk7CisgICAgd2FyblVuaW1wbGVtZW50ZWQoImNvbnNvbGUucmVjb3JkRW5kIl9zdHIpOwogfQog
CiB2b2lkIEpTR2xvYmFsT2JqZWN0Q29uc29sZUNsaWVudDo6c2NyZWVuc2hvdChKU0dsb2JhbE9i
amVjdCosIFJlZjxTY3JpcHRBcmd1bWVudHM+JiYpCkBAIC0yMTUsNyArMjE1LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdENvbnNvbGVDbGllbnQ6OnNjcmVlbnNob3QoSlNHbG9iYWxPYmplY3QqLCBS
ZWY8U2NyaXB0QXJndW1lbnQKICAgICBpZiAoTElLRUxZKCFtX2NvbnNvbGVBZ2VudC0+ZGV2ZWxv
cGVyRXh0cmFzRW5hYmxlZCgpKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2FyblVuaW1wbGVt
ZW50ZWQoImNvbnNvbGUuc2NyZWVuc2hvdCJfcyk7CisgICAgd2FyblVuaW1wbGVtZW50ZWQoImNv
bnNvbGUuc2NyZWVuc2hvdCJfc3RyKTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdENvbnNvbGVD
bGllbnQ6Ondhcm5VbmltcGxlbWVudGVkKGNvbnN0IFN0cmluZyYgbWV0aG9kKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDZhZTE3OTM5ZjQ4ODU4ZDYwNDZj
OTU5MjkyZDM2Y2ZiYzYzNDcxZjEuLmVjNGU4ZTk3NmY3ZmY3ZTA5NjliNWRmNDQwNDQxNTBiMTE4
NTI3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTE2
Myw5ICsxNjMsOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6YXBw
ZW5kQVBJQmFja3RyYWNlKFNjcmlwdENhbGxTdGFjayYgY2FsbAogICAgIGZvciAoaW50IGkgPSAw
OyBpIDwgc2l6ZTsgKytpKSB7CiAgICAgICAgIGF1dG8gZGVtYW5nbGVkID0gU3RhY2tUcmFjZTo6
ZGVtYW5nbGUoc3RhY2tbaV0pOwogICAgICAgICBpZiAoZGVtYW5nbGVkKQotICAgICAgICAgICAg
Y2FsbFN0YWNrLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoZGVtYW5nbGVkLT5kZW1hbmdsZWROYW1l
KCkgPyBkZW1hbmdsZWQtPmRlbWFuZ2xlZE5hbWUoKSA6IGRlbWFuZ2xlZC0+bWFuZ2xlZE5hbWUo
KSwgIltuYXRpdmUgY29kZV0iX3MsIG5vU291cmNlSUQsIDAsIDApKTsKKyAgICAgICAgICAgIGNh
bGxTdGFjay5hcHBlbmQoU2NyaXB0Q2FsbEZyYW1lKGRlbWFuZ2xlZC0+ZGVtYW5nbGVkTmFtZSgp
ID8gZGVtYW5nbGVkLT5kZW1hbmdsZWROYW1lKCkgOiBkZW1hbmdsZWQtPm1hbmdsZWROYW1lKCks
ICJbbmF0aXZlIGNvZGVdIl9zdHIsIG5vU291cmNlSUQsIDAsIDApKTsKICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgY2FsbFN0YWNrLmFwcGVuZChTY3JpcHRDYWxsRnJhbWUoIj8iX3MsICJbbmF0
aXZlIGNvZGVdIl9zLCBub1NvdXJjZUlELCAwLCAwKSk7CisgICAgICAgICAgICBjYWxsU3RhY2su
YXBwZW5kKFNjcmlwdENhbGxGcmFtZSgiPyJfc3RyLCAiW25hdGl2ZSBjb2RlXSJfc3RyLCBub1Nv
dXJjZUlELCAwLCAwKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTSW5qZWN0ZWRTY3JpcHRIb3N0LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCmluZGV4IDc4ZTc3MzRl
MjYzOWI3ZTk4OGJkOTQ1OWIwNzZiZjdiY2U0YzA3MWUuLjhkOGEyMDBjMTMxNWRkYWQ5YmRjOWM5
NjViNmFkNDExMjVkZDFiMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3QuY3BwCkBAIC0xMTcsNyArMTE3LDcgQEAg
SlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24o
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KIAogICAgIEpTVmFsdWUgc2NyaXB0VmFsdWUgPSBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbmplY3Rl
ZFNjcmlwdEhvc3QuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVz
dCBiZSBhIHN0cmluZy4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbiBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiJfc3RyKTsKIAogICAgIFN0cmlu
ZyBwcm9ncmFtID0gYXNTdHJpbmcoc2NyaXB0VmFsdWUpLT52YWx1ZShnbG9iYWxPYmplY3QpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7CkBAIC0xNTgsNyArMTU4
LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aXNQcm9taXNlUmVqZWN0ZWRXaXRo
TmF0aXZlR2V0dGVyVHlwZUVycm9yKEpTR2xvYmEKIAogICAgIGF1dG8qIHByb21pc2UgPSBqc0R5
bmFtaWNDYXN0PEpTUHJvbWlzZSo+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBp
ZiAoIXByb21pc2UpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW5qZWN0ZWRTY3JpcHRIb3N0LmlzUHJvbWlzZVJlamVjdGVkV2l0aE5hdGl2ZUdl
dHRlclR5cGVFcnJvciBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgUHJvbWlzZS4iX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkluamVjdGVk
U2NyaXB0SG9zdC5pc1Byb21pc2VSZWplY3RlZFdpdGhOYXRpdmVHZXR0ZXJUeXBlRXJyb3IgZmly
c3QgYXJndW1lbnQgbXVzdCBiZSBhIFByb21pc2UuIl9zdHIpOwogCiAgICAgYm9vbCByZXN1bHQg
PSBmYWxzZTsKICAgICBpZiAoYXV0byogZXJyb3JJbnN0YW5jZSA9IGpzRHluYW1pY0Nhc3Q8RXJy
b3JJbnN0YW5jZSo+KHZtLCBwcm9taXNlLT5yZXN1bHQodm0pKSkKQEAgLTE4NCw0MSArMTg0LDQx
IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnN1YnR5cGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjCiAKICAgICBpZiAoYXV0byogb2JqZWN0ID0ganNE
eW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCB2YWx1ZSkpIHsKICAgICAgICAgaWYgKG9iamVjdC0+
aXNFcnJvckluc3RhbmNlKCkpCi0gICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5n
KHZtLCAiZXJyb3IiX3MpOworICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgImVycm9yIl9zdHIpOwogCiAgICAgICAgIC8vIENvbnNpZGVyIGNsYXNzIGNvbnN0cnVjdG9y
IGZ1bmN0aW9ucyBjbGFzcyBvYmplY3RzLgogICAgICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvbiA9
IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCB2YWx1ZSk7CiAgICAgICAgIGlmIChmdW5j
dGlvbiAmJiBmdW5jdGlvbi0+aXNDbGFzc0NvbnN0cnVjdG9yRnVuY3Rpb24oKSkKLSAgICAgICAg
ICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJjbGFzcyJfcyk7CisgICAgICAgICAg
ICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiY2xhc3MiX3N0cik7CiAKICAgICAgICAg
aWYgKG9iamVjdC0+aW5oZXJpdHM8SlNBcnJheT4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgImFycmF5Il9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJhcnJheSJfc3RyKTsKICAgICAgICAgaWYgKG9iamVjdC0+aW5o
ZXJpdHM8RGlyZWN0QXJndW1lbnRzPih2bSkgfHwgb2JqZWN0LT5pbmhlcml0czxTY29wZWRBcmd1
bWVudHM+KHZtKSkKLSAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJh
cnJheSJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXJy
YXkiX3N0cik7CiAKICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8RGF0ZUluc3RhbmNlPih2
bSkpCi0gICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiZGF0ZSJfcyk7
CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiZGF0ZSJfc3RyKTsK
ICAgICAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8UmVnRXhwT2JqZWN0Pih2bSkpCi0gICAgICAg
ICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAicmVnZXhwIl9zKTsKKyAgICAgICAg
ICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJyZWdleHAiX3N0cik7CiAgICAgICAg
IGlmIChvYmplY3QtPmluaGVyaXRzPFByb3h5T2JqZWN0Pih2bSkpCi0gICAgICAgICAgICByZXR1
cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAicHJveHkiX3MpOworICAgICAgICAgICAgcmV0dXJu
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInByb3h5Il9zdHIpOwogCiAgICAgICAgIGlmIChvYmpl
Y3QtPmluaGVyaXRzPEpTTWFwPih2bSkpCi0gICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFs
U3RyaW5nKHZtLCAibWFwIl9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJtYXAiX3N0cik7CiAgICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTU2V0Pih2
bSkpCi0gICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAic2V0Il9zKTsK
KyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJzZXQiX3N0cik7CiAg
ICAgICAgIGlmIChvYmplY3QtPmluaGVyaXRzPEpTV2Vha01hcD4odm0pKQotICAgICAgICAgICAg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIndlYWttYXAiX3MpOworICAgICAgICAgICAg
cmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIndlYWttYXAiX3N0cik7CiAgICAgICAgIGlm
IChvYmplY3QtPmluaGVyaXRzPEpTV2Vha1NldD4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIndlYWtzZXQiX3MpOworICAgICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIndlYWtzZXQiX3N0cik7CiAKICAgICAgICAgaWYgKG9iamVj
dC0+aW5oZXJpdHM8SlNTdHJpbmdJdGVyYXRvcj4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIml0ZXJhdG9yIl9zKTsKKyAgICAgICAgICAgIHJldHVybiBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJpdGVyYXRvciJfc3RyKTsKIAogICAgICAgICBpZiAob2Jq
ZWN0LT5pbmhlcml0czxKU0FycmF5SXRlcmF0b3I+KHZtKQogICAgICAgICAgICAgfHwgb2JqZWN0
LT5pbmhlcml0czxKU01hcEl0ZXJhdG9yPih2bSkKICAgICAgICAgICAgIHx8IG9iamVjdC0+aW5o
ZXJpdHM8SlNTZXRJdGVyYXRvcj4odm0pKQotICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIml0ZXJhdG9yIl9zKTsKKyAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJpdGVyYXRvciJfc3RyKTsKIAogICAgICAgICBpZiAob2JqZWN0LT5pbmhl
cml0czxKU0ludDhBcnJheT4odm0pCiAgICAgICAgICAgICB8fCBvYmplY3QtPmluaGVyaXRzPEpT
SW50MTZBcnJheT4odm0pCkBAIC0yMzEsNyArMjMxLDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2Ny
aXB0SG9zdDo6c3VidHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGMKICAgICAgICAgICAgIHx8IG9iamVjdC0+aW5oZXJpdHM8SlNGbG9hdDY0QXJyYXk+KHZtKQog
ICAgICAgICAgICAgfHwgb2JqZWN0LT5pbmhlcml0czxKU0JpZ0ludDY0QXJyYXk+KHZtKQogICAg
ICAgICAgICAgfHwgb2JqZWN0LT5pbmhlcml0czxKU0JpZ1VpbnQ2NEFycmF5Pih2bSkpCi0gICAg
ICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXJyYXkiX3MpOworICAgICAg
ICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImFycmF5Il9zdHIpOwogICAgIH0K
IAogICAgIHJldHVybiBpbXBsKCkuc3VidHlwZShnbG9iYWxPYmplY3QsIHZhbHVlKTsKQEAgLTMx
MywxOSArMzEzLDE5IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEludGVybmFs
UHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgICAgIHN3aXRjaCAo
cHJvbWlzZS0+c3RhdHVzKHZtKSkgewogICAgICAgICBjYXNlIEpTUHJvbWlzZTo6U3RhdHVzOjpQ
ZW5kaW5nOgogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwotICAgICAgICAgICAgYXJyYXkt
PnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgY29uc3RydWN0SW50ZXJuYWxQ
cm9wZXJ0eShnbG9iYWxPYmplY3QsICJzdGF0dXMiX3MsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
InBlbmRpbmciX3MpKSk7CisgICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwg
InN0YXR1cyJfc3RyLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJwZW5kaW5nIl9zdHIpKSk7CiAg
ICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAgIGNhc2UgSlNQcm9taXNlOjpTdGF0dXM6
OkZ1bGZpbGxlZDoKLSAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCAic3Rh
dHVzIl9zLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJyZXNvbHZlZCJfcykpKTsKKyAgICAgICAg
ICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIGNvbnN0cnVj
dEludGVybmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCAic3RhdHVzIl9zdHIsIGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgInJlc29sdmVkIl9zdHIpKSk7CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogICAgICAgICAgICAgc2NvcGUucmVsZWFzZSgpOwot
ICAgICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywg
Y29uc3RydWN0SW50ZXJuYWxQcm9wZXJ0eShnbG9iYWxPYmplY3QsICJyZXN1bHQiX3MsIHByb21p
c2UtPnJlc3VsdCh2bSkpKTsKKyAgICAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0
LCAicmVzdWx0Il9zdHIsIHByb21pc2UtPnJlc3VsdCh2bSkpKTsKICAgICAgICAgICAgIHJldHVy
biBhcnJheTsKICAgICAgICAgY2FzZSBKU1Byb21pc2U6OlN0YXR1czo6UmVqZWN0ZWQ6Ci0gICAg
ICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25z
dHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInN0YXR1cyJfcywganNOb250cml2
aWFsU3RyaW5nKHZtLCAicmVqZWN0ZWQiX3MpKSk7CisgICAgICAgICAgICBhcnJheS0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5
KGdsb2JhbE9iamVjdCwgInN0YXR1cyJfc3RyLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJyZWpl
Y3RlZCJfc3RyKSkpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZSgpKTsKICAgICAgICAgICAgIHNjb3BlLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIGFycmF5
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFs
UHJvcGVydHkoZ2xvYmFsT2JqZWN0LCAicmVzdWx0Il9zLCBwcm9taXNlLT5yZXN1bHQodm0pKSk7
CisgICAgICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsr
LCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2JhbE9iamVjdCwgInJlc3VsdCJfc3RyLCBw
cm9taXNlLT5yZXN1bHQodm0pKSk7CiAgICAgICAgICAgICByZXR1cm4gYXJyYXk7CiAgICAgICAg
IH0KICAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNDE2NjQ+IFdlYiBJ
bnNwZWN0b3I6IEVTNjogSW1wcm92ZWQgU3VwcG9ydCBmb3IgUHJvbWlzZXMgLSBQcm9taXNlIFJl
YWN0aW9ucwpAQCAtMzUxLDcgKzM1MSw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6
OmdldEludGVybmFsUHJvcGVydGllcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAg
ICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVsbHB0ciwgMSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWUoKSk7Ci0gICAgICAgIGFycmF5LT5wdXREaXJlY3RJ
bmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHkoZ2xv
YmFsT2JqZWN0LCAidGFyZ2V0RnVuY3Rpb24iX3MsIHJlbW90ZUZ1bmN0aW9uLT50YXJnZXRGdW5j
dGlvbigpKSk7CisgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGlu
ZGV4KyssIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCAidGFyZ2V0RnVu
Y3Rpb24iX3N0ciwgcmVtb3RlRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCkpKTsKICAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZSgpKTsKIAogICAgICAgICByZXR1cm4g
YXJyYXk7CkBAIC0zNjEsMTAgKzM2MSwxMCBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0
OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAg
ICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CiAgICAgICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIsIDIpOwogICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwotICAgICAgICBhcnJheS0+cHV0RGlyZWN0
SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGds
b2JhbE9iamVjdCwgInRhcmdldCJfcywgcHJveHktPnRhcmdldCgpKSk7CisgICAgICAgIGFycmF5
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFs
UHJvcGVydHkoZ2xvYmFsT2JqZWN0LCAidGFyZ2V0Il9zdHIsIHByb3h5LT50YXJnZXQoKSkpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogICAgICAgICBz
Y29wZS5yZWxlYXNlKCk7Ci0gICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmpl
Y3QsIGluZGV4KyssIGNvbnN0cnVjdEludGVybmFsUHJvcGVydHkoZ2xvYmFsT2JqZWN0LCAiaGFu
ZGxlciJfcywgcHJveHktPmhhbmRsZXIoKSkpOworICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5k
ZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBjb25zdHJ1Y3RJbnRlcm5hbFByb3BlcnR5KGdsb2Jh
bE9iamVjdCwgImhhbmRsZXIiX3N0ciwgcHJveHktPmhhbmRsZXIoKSkpOwogICAgICAgICByZXR1
cm4gYXJyYXk7CiAgICAgfQogCkBAIC0zNzIsMTMgKzM3MiwxMyBAQCBKU1ZhbHVlIEpTSW5qZWN0
ZWRTY3JpcHRIb3N0OjpnZXRJbnRlcm5hbFByb3BlcnRpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdAogICAgICAgICBhdXRvIHRvU3RyaW5nID0gWyZdIChJdGVyYXRpb25LaW5kIGtpbmQp
IHsKICAgICAgICAgICAgIHN3aXRjaCAoa2luZCkgewogICAgICAgICAgICAgY2FzZSBJdGVyYXRp
b25LaW5kOjpLZXlzOgotICAgICAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJrZXlzIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5n
KHZtLCAia2V5cyJfc3RyKTsKICAgICAgICAgICAgIGNhc2UgSXRlcmF0aW9uS2luZDo6VmFsdWVz
OgotICAgICAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJ2YWx1ZXMi
X3MpOworICAgICAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJ2YWx1
ZXMiX3N0cik7CiAgICAgICAgICAgICBjYXNlIEl0ZXJhdGlvbktpbmQ6OkVudHJpZXM6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVudHJpZXMiX3MpOwor
ICAgICAgICAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJlbnRyaWVzIl9z
dHIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIiJfcyk7CisgICAgICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAi
Il9zdHIpOwogICAgICAgICB9OwogICAgICAgICAKICAgICAgICAgaWYgKGF1dG8qIGFycmF5SXRl
cmF0b3IgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlJdGVyYXRvcio+KHZtLCBpdGVyYXRvck9iamVj
dCkpIHsKQEAgLTY0OSwxMSArNjQ5LDExIEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6
OnF1ZXJ5SW5zdGFuY2VzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGCiAKICAg
ICBKU1ZhbHVlIHByb3RvdHlwZU9yQ29uc3RydWN0b3IgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFy
Z3VtZW50KDApOwogICAgIGlmICghcHJvdG90eXBlT3JDb25zdHJ1Y3Rvci5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5
SW5zdGFuY2VzIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYW4gb2JqZWN0LiJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0YW5j
ZXMgZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhbiBvYmplY3QuIl9zdHIpOwogCiAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFzT2JqZWN0KHByb3RvdHlwZU9yQ29uc3RydWN0b3IpOwogICAgIGlmIChv
YmplY3QtPmluaGVyaXRzPFByb3h5T2JqZWN0Pih2bSkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNh
bGxlZCB3aXRoIGEgUHJveHkuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGgg
YSBQcm94eS4iX3N0cik7CiAKICAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IG9iamVjdDsKIApAQCAt
NjcxLDIxICs2NzEsMjEgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6cXVlcnlJbnN0
YW5jZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEYKICAgICBwcm90b3R5cGVT
bG90LmRpc2FsbG93Vk1FbnRyeS5yZXNldCgpOwogCiAgICAgaWYgKG9iamVjdC0+aW5oZXJpdHM8
UHJveHlPYmplY3Q+KHZtKSB8fCBwcm90b3R5cGUuaW5oZXJpdHM8UHJveHlPYmplY3Q+KHZtKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVy
eUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggYSBQcm94eS4iX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2Vz
IGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBhIFByb3h5LiJfc3RyKTsKIAogICAgIC8vIEZJWE1FOiBp
bXBsZW1lbnQgYSB3YXkgb2YgZGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiBpbnRlcm5hbCBhbmQgdXNl
ci1jcmVhdGVkIG9iamVjdHMuCiAgICAgaWYgKGNoZWNrRm9yYmlkZGVuUHJvdG90eXBlKGdsb2Jh
bE9iamVjdCwgb2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3Rh
bmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggT2JqZWN0LiJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90
IGJlIGNhbGxlZCB3aXRoIE9iamVjdC4iX3N0cik7CiAgICAgaWYgKGNoZWNrRm9yYmlkZGVuUHJv
dG90eXBlKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90
eXBlKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBGdW5jdGlvbi4iX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5
SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBGdW5jdGlvbi4iX3N0cik7CiAgICAgaWYg
KGNoZWNrRm9yYmlkZGVuUHJvdG90eXBlKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBnbG9iYWxPYmpl
Y3QtPmFycmF5UHJvdG90eXBlKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBB
cnJheS4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBBcnJheS4iX3N0cik7
CiAgICAgaWYgKGNoZWNrRm9yYmlkZGVuUHJvdG90eXBlKGdsb2JhbE9iamVjdCwgb2JqZWN0LCBn
bG9iYWxPYmplY3QtPm1hcFByb3RvdHlwZSgpKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVk
IHdpdGggTWFwLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAicXVlcnlJbnN0YW5jZXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIE1hcC4iX3N0
cik7CiAgICAgaWYgKGNoZWNrRm9yYmlkZGVuUHJvdG90eXBlKGdsb2JhbE9iamVjdCwgb2JqZWN0
LCBnbG9iYWxPYmplY3QtPmpzU2V0UHJvdG90eXBlKCkpKQotICAgICAgICByZXR1cm4gdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBj
YWxsZWQgd2l0aCBTZXQuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5ub3QgYmUgY2FsbGVkIHdpdGggU2V0
LiJfc3RyKTsKICAgICBpZiAoY2hlY2tGb3JiaWRkZW5Qcm90b3R5cGUoZ2xvYmFsT2JqZWN0LCBv
YmplY3QsIGdsb2JhbE9iamVjdC0+cHJvbWlzZVByb3RvdHlwZSgpKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJxdWVyeUluc3RhbmNlcyBjYW5u
b3QgYmUgY2FsbGVkIHdpdGggUHJvbWlzZS4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInF1ZXJ5SW5zdGFuY2VzIGNhbm5vdCBiZSBjYWxs
ZWQgd2l0aCBQcm9taXNlLiJfc3RyKTsKIAogICAgIHNhbml0aXplU3RhY2tGb3JWTSh2bSk7CiAg
ICAgdm0uaGVhcC5jb2xsZWN0Tm93KFN5bmMsIENvbGxlY3Rpb25TY29wZTo6RnVsbCk7CkBAIC04
NTcsNyArODU3LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6cXVlcnlIb2xkZXJz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmEKIAogICAgIEpTVmFsdWUgdGFy
Z2V0ID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInF1ZXJ5SG9sZGVycyBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdC4iX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInF1
ZXJ5SG9sZGVycyBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGFuIG9iamVjdC4iX3N0cik7CiAKICAg
ICBKU0FycmF5KiByZXN1bHQgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVs
bHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
LmNwcAppbmRleCAyODk4Y2RmZWI5OWVlYWFjOTNlMjZlYTA2OTJjZDcxMjFlYzc4NjEyLi5iOGIw
OWIwZDdkNGEzNTQzOWFiYWYxYTJhMWM4ZDJjOTYzODE4ZDU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0phdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
CkBAIC03OCw3ICs3OCw3IEBAIEpTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpldmFsdWF0
ZVdpdGhTY29wZUV4dGVuc2lvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBKU1ZhbHVl
IHNjcmlwdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXNjcmlwdFZh
bHVlLmlzU3RyaW5nKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5z
aW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcuIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJKU0phdmFTY3JpcHRDYWxsRnJh
bWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0
cmluZy4iX3N0cik7CiAKICAgICBTdHJpbmcgc2NyaXB0ID0gYXNTdHJpbmcoc2NyaXB0VmFsdWUp
LT52YWx1ZShnbG9iYWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpT
VmFsdWUoKSk7CkBAIC0yMTksOSArMjE5LDkgQEAgSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJh
bWU6OnR5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgc3dpdGNoIChpbXBsKCkudHlwZSgpKSB7CiAgICAg
Y2FzZSBEZWJ1Z2dlckNhbGxGcmFtZTo6RnVuY3Rpb25UeXBlOgotICAgICAgICByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKHZtLCAiZnVuY3Rpb24iX3MpOworICAgICAgICByZXR1cm4ganNOb250
cml2aWFsU3RyaW5nKHZtLCAiZnVuY3Rpb24iX3N0cik7CiAgICAgY2FzZSBEZWJ1Z2dlckNhbGxG
cmFtZTo6UHJvZ3JhbVR5cGU6Ci0gICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJwcm9ncmFtIl9zKTsKKyAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInBy
b2dyYW0iX3N0cik7CiAgICAgfQogCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5jcHAKaW5k
ZXggYzE0ZWY4YTMxMmZhMmY2MzY1NzkxMWQzOWY5YzNiMTkyZTU5OGE4NS4uN2ZlZDJkZjhjNGMx
NzBlYjUyMTRmMGZlNGNmOGEwZmYwNWYxZTkzNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcApAQCAtNzUsNyArNzUsNyBAQCBi
b29sIFNjcmlwdEFyZ3VtZW50czo6Z2V0Rmlyc3RBcmd1bWVudEFzU3RyaW5nKFN0cmluZyYgcmVz
dWx0KSBjb25zdAogCiAgICAgYXV0byB2YWx1ZSA9IGFyZ3VtZW50QXQoMCk7CiAgICAgaWYgKEpT
Qzo6anNEeW5hbWljQ2FzdDxKU0M6OlByb3h5T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0LT52bSgpLCB2
YWx1ZSkpIHsKLSAgICAgICAgcmVzdWx0ID0gIltvYmplY3QgUHJveHldIl9zOworICAgICAgICBy
ZXN1bHQgPSAiW29iamVjdCBQcm94eV0iX3N0cjsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENh
bGxTdGFja0ZhY3RvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCA0MWFjYzg1N2M2NzY4YzlmNmJhOTgzMGE3MWFh
MDJmYTkzNDc2ZjlhLi42OTEyMjEwOWZkNTBjM2MxOTVmOGViMzU2ZTg0Y2I2MTE0M2EzNjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFj
a0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgYm9vbCBleHRy
YWN0U291cmNlSW5mb3JtYXRpb25Gcm9tRXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iagogICAgIH0KICAgICAKICAgICBpZiAoc291cmNlVVJMLT5pc0VtcHR5KCkpCi0gICAg
ICAgICpzb3VyY2VVUkwgPSAidW5kZWZpbmVkIl9zOworICAgICAgICAqc291cmNlVVJMID0gInVu
ZGVmaW5lZCJfc3RyOwogICAgIAogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CiAgICAgcmV0
dXJuIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAppbmRleCA4Njg2ZDY5NDFiNzg0Nzk5NWIyZGZm
ZGQ2NzhiNjZkM2I0ODFkZGI1Li4xMzQzYjIxYTg3NDRmMWEwYTMzNTc1YjMyZTgyZTQyNmRlMjdk
ZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuY3BwCkBAIC0zNyw3ICszNyw3IEBACiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKIAogSW5zcGVjdG9yQWdlbnQ6Okluc3BlY3RvckFnZW50KEFnZW50Q29udGV4dCYg
Y29udGV4dCkKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiSW5zcGVjdG9yIl9zKQorICAgIDog
SW5zcGVjdG9yQWdlbnRCYXNlKCJJbnNwZWN0b3IiX3N0cikKICAgICAsIG1fZW52aXJvbm1lbnQo
Y29udGV4dC5lbnZpcm9ubWVudCkKICAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlx
dWU8SW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkK
ICAgICAsIG1fYmFja2VuZERpc3BhdGNoZXIoSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI6OmNy
ZWF0ZShjb250ZXh0LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRB
Z2VudC5jcHAKaW5kZXggMzBhY2FmMzM0NTgwNTM3NGQ4MWRiYjBiMWM1ZDQ5ZmY3YWYwYTZlMS4u
NmViY2RlMjY5MjhlNjFlN2I4YTAxODI5ZmJiMjAzOTFmYzVmNGZiZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXVkaXRBZ2VudC5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBJbnNwZWN0b3JBdWRpdEFnZW50OjpJbnNwZWN0b3JBdWRp
dEFnZW50KEFnZW50Q29udGV4dCYgY29udGV4dCkKLSAgICA6IEluc3BlY3RvckFnZW50QmFzZSgi
QXVkaXQiX3MpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoIkF1ZGl0Il9zdHIpCiAgICAgLCBt
X2JhY2tlbmREaXNwYXRjaGVyKEF1ZGl0QmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShjb250ZXh0
LmJhY2tlbmREaXNwYXRjaGVyLCB0aGlzKSkKICAgICAsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KGNvbnRleHQuaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQogICAgICwgbV9kZWJ1Z2dlcihjb250ZXh0
LmVudmlyb25tZW50LmRlYnVnZ2VyKCkpCkBAIC02MSw3ICs2MSw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckF1ZGl0QWdlbnQ6OnNldHVwKHN0ZDo6b3B0aW9uYWw8
UHJvdG9jb2w6CiAgICAgUHJvdG9jb2w6OkVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogCiAgICAg
aWYgKGhhc0FjdGl2ZUF1ZGl0KCkpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTXVz
dCBjYWxsIHRlYXJkb3duIGJlZm9yZSBjYWxsaW5nIHNldHVwIGFnYWluIl9zKTsKKyAgICAgICAg
cmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJNdXN0IGNhbGwgdGVhcmRvd24gYmVmb3JlIGNhbGxpbmcg
c2V0dXAgYWdhaW4iX3N0cik7CiAKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9
IGluamVjdGVkU2NyaXB0Rm9yRXZhbChlcnJvclN0cmluZywgV1RGTW92ZShleGVjdXRpb25Db250
ZXh0SWQpKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQpAQCAtNjksNyAr
NjksNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JBdWRpdEFnZW50
OjpzZXR1cChzdGQ6Om9wdGlvbmFsPFByb3RvY29sOgogCiAgICAgSlNDOjpKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gaW5qZWN0ZWRTY3JpcHQuZ2xvYmFsT2JqZWN0KCk7CiAgICAgaWYg
KCFnbG9iYWxPYmplY3QpCi0gICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTWlzc2luZyBl
eGVjdXRpb24gc3RhdGUgb2YgaW5qZWN0ZWQgc2NyaXB0IGZvciBnaXZlbiBleGVjdXRpb25Db250
ZXh0SWQiX3MpOworICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk1pc3NpbmcgZXhlY3V0
aW9uIHN0YXRlIG9mIGluamVjdGVkIHNjcmlwdCBmb3IgZ2l2ZW4gZXhlY3V0aW9uQ29udGV4dElk
Il9zdHIpOwogCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCkBAIC03Nyw3ICs3
Nyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckF1ZGl0QWdlbnQ6
OnNldHVwKHN0ZDo6b3B0aW9uYWw8UHJvdG9jb2w6CiAKICAgICBtX2luamVjdGVkV2ViSW5zcGVj
dG9yQXVkaXRWYWx1ZS5zZXQodm0sIGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVjdCkp
OwogICAgIGlmICghbV9pbmplY3RlZFdlYkluc3BlY3RvckF1ZGl0VmFsdWUpCi0gICAgICAgIHJl
dHVybiBtYWtlVW5leHBlY3RlZCgiVW5hYmxlIHRvIGNvbnN0cnVjdCBpbmplY3RlZCBXZWJJbnNw
ZWN0b3JBdWRpdCBvYmplY3QuIl9zKTsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJV
bmFibGUgdG8gY29uc3RydWN0IGluamVjdGVkIFdlYkluc3BlY3RvckF1ZGl0IG9iamVjdC4iX3N0
cik7CiAKICAgICBwb3B1bGF0ZUF1ZGl0T2JqZWN0KGdsb2JhbE9iamVjdCwgbV9pbmplY3RlZFdl
Ykluc3BlY3RvckF1ZGl0VmFsdWUpOwogCkBAIC05NSw3ICs5NSw3IEBAIFByb3RvY29sOjpFcnJv
clN0cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+
LCBzdGQ6Om9wCiAgICAgYXV0byBmdW5jdGlvblN0cmluZyA9IG1ha2VTdHJpbmcoIihmdW5jdGlv
bihXZWJJbnNwZWN0b3JBdWRpdCkgeyBcInVzZSBzdHJpY3RcIjsgcmV0dXJuIGV2YWwoYCgiLCBT
dHJpbmcgeyB0ZXN0IH0ucmVwbGFjZSgnYCcsICJcXGAiKSwgIilgKShXZWJJbnNwZWN0b3JBdWRp
dCk7IH0pIik7CiAKICAgICBJbmplY3RlZFNjcmlwdDo6RXhlY3V0ZU9wdGlvbnMgb3B0aW9uczsK
LSAgICBvcHRpb25zLm9iamVjdEdyb3VwID0gImF1ZGl0Il9zOworICAgIG9wdGlvbnMub2JqZWN0
R3JvdXAgPSAiYXVkaXQiX3N0cjsKICAgICBpZiAobV9pbmplY3RlZFdlYkluc3BlY3RvckF1ZGl0
VmFsdWUpCiAgICAgICAgIG9wdGlvbnMuYXJncyA9IHsgbV9pbmplY3RlZFdlYkluc3BlY3RvckF1
ZGl0VmFsdWUuZ2V0KCkgfTsKIApAQCAtMTIxLDcgKzEyMSw3IEBAIFByb3RvY29sOjpFcnJvclN0
cmluZ09yPHN0ZDo6dHVwbGU8UmVmPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+LCBz
dGQ6Om9wCiBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JBdWRpdEFnZW50
Ojp0ZWFyZG93bigpCiB7CiAgICAgaWYgKCFoYXNBY3RpdmVBdWRpdCgpKQotICAgICAgICByZXR1
cm4gbWFrZVVuZXhwZWN0ZWQoIk11c3QgY2FsbCBzZXR1cCBiZWZvcmUgY2FsbGluZyB0ZWFyZG93
biJfcyk7CisgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiTXVzdCBjYWxsIHNldHVwIGJl
Zm9yZSBjYWxsaW5nIHRlYXJkb3duIl9zdHIpOwogCiAgICAgbV9pbmplY3RlZFdlYkluc3BlY3Rv
ckF1ZGl0VmFsdWUuY2xlYXIoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0NhbGxGcmFtZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmNwcAppbmRleCBhNjE4M2IwZDcyNGY5ZmNkZmU1NDJkNDJlOWYxYWQ2
NmM3MWMxODM2Li45YTQ5NzhiNzgwZDJhNjA0Y2NjNTk3NmE3ZTlkNDRlMWE2ZjdlNmQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmNwcApAQCAt
MjgwLDExICsyODAsMTEgQEAgU3RyaW5nIENhbGxGcmFtZTo6ZnJpZW5kbHlGdW5jdGlvbk5hbWUo
KQogCiAgICAgc3dpdGNoIChjb2RlQmxvY2stPmNvZGVUeXBlKCkpIHsKICAgICBjYXNlIEV2YWxD
b2RlOgotICAgICAgICByZXR1cm4gImV2YWwgY29kZSJfczsKKyAgICAgICAgcmV0dXJuICJldmFs
IGNvZGUiX3N0cjsKICAgICBjYXNlIE1vZHVsZUNvZGU6Ci0gICAgICAgIHJldHVybiAibW9kdWxl
IGNvZGUiX3M7CisgICAgICAgIHJldHVybiAibW9kdWxlIGNvZGUiX3N0cjsKICAgICBjYXNlIEds
b2JhbENvZGU6Ci0gICAgICAgIHJldHVybiAiZ2xvYmFsIGNvZGUiX3M7CisgICAgICAgIHJldHVy
biAiZ2xvYmFsIGNvZGUiX3N0cjsKICAgICBjYXNlIEZ1bmN0aW9uQ29kZToKICAgICAgICAgaWYg
KGpzQ2FsbGVlKCkpCiAgICAgICAgICAgICByZXR1cm4gZ2V0Q2FsY3VsYXRlZERpc3BsYXlOYW1l
KGNvZGVCbG9jay0+dm0oKSwganNDYWxsZWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvU2hhZG93Q2hpY2tlbi5jcHAKaW5kZXggNzZiNGM2NTgwOWY0NTFk
Zjc5NjBjOTMzOWY2ZjIwZWE0ZWFiYzBmYy4uMzdmOTZlOTJiNTY2M2JjZTVhZTFiZTg3MTRiOTli
NTRkZTIzNzdhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVy
L1NoYWRvd0NoaWNrZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9TaGFkb3dDaGlja2VuLmNwcApAQCAtNDUsMTEgKzQ1LDExIEBAIHZvaWQgU2hhZG93Q2hpY2tl
bjo6UGFja2V0OjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiAgICAgfQogICAgIAogICAg
IGlmIChpc1Byb2xvZ3VlKCkpIHsKLSAgICAgICAgU3RyaW5nIG5hbWUgPSAiPyJfczsKKyAgICAg
ICAgU3RyaW5nIG5hbWUgPSAiPyJfc3RyOwogICAgICAgICBpZiAoYXV0byogZnVuY3Rpb24gPSBq
c0R5bmFtaWNDYXN0PEpTRnVuY3Rpb24qPihjYWxsZWUtPnZtKCksIGNhbGxlZSkpIHsKICAgICAg
ICAgICAgIG5hbWUgPSBmdW5jdGlvbi0+bmFtZShjYWxsZWUtPnZtKCkpOwogICAgICAgICAgICAg
aWYgKG5hbWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIG5hbWUgPSAiPyJfczsKKyAgICAg
ICAgICAgICAgICBuYW1lID0gIj8iX3N0cjsKICAgICAgICAgfQogCiAgICAgICAgIG91dC5wcmlu
dCgKQEAgLTY5LDExICs2OSwxMSBAQCB2b2lkIFNoYWRvd0NoaWNrZW46OlBhY2tldDo6ZHVtcChQ
cmludFN0cmVhbSYgb3V0KSBjb25zdAogCiB2b2lkIFNoYWRvd0NoaWNrZW46OkZyYW1lOjpkdW1w
KFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7Ci0gICAgU3RyaW5nIG5hbWUgPSAiPyJfczsKKyAg
ICBTdHJpbmcgbmFtZSA9ICI/Il9zdHI7CiAgICAgaWYgKGF1dG8qIGZ1bmN0aW9uID0ganNEeW5h
bWljQ2FzdDxKU0Z1bmN0aW9uKj4oY2FsbGVlLT52bSgpLCBjYWxsZWUpKSB7CiAgICAgICAgIG5h
bWUgPSBmdW5jdGlvbi0+bmFtZShjYWxsZWUtPnZtKCkpOwogICAgICAgICBpZiAobmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICBuYW1lID0gIj8iX3M7CisgICAgICAgICAgICBuYW1lID0gIj8i
X3N0cjsKICAgICB9CiAKICAgICBvdXQucHJpbnQoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW50ZXJwcmV0ZXIvU3RhY2tWaXNpdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwCmluZGV4IDg5MjFiYmIxNzc5MDM4NzYw
MDdmZTc4NDQyZGU5MTg0NzlkMDk3YjEuLjViMjk0ZWU2NzVlODhmNjgwOTJmZTE4ZDdkNDM1MzYw
OTFhYWZjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9T
dGFja1Zpc2l0b3IuY3BwCkBAIC0yODgsMTAgKzI4OCwxMCBAQCBTdHJpbmcgU3RhY2tWaXNpdG9y
OjpGcmFtZTo6ZnVuY3Rpb25OYW1lKCkgY29uc3QKICAgICAgICAgdHJhY2VMaW5lID0gbWFrZVN0
cmluZyhtX3dhc21GdW5jdGlvbkluZGV4T3JOYW1lKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBDb2RlVHlwZTo6RXZhbDoKLSAgICAgICAgdHJhY2VMaW5lID0gImV2YWwgY29kZSJfczsKKyAg
ICAgICAgdHJhY2VMaW5lID0gImV2YWwgY29kZSJfc3RyOwogICAgICAgICBicmVhazsKICAgICBj
YXNlIENvZGVUeXBlOjpNb2R1bGU6Ci0gICAgICAgIHRyYWNlTGluZSA9ICJtb2R1bGUgY29kZSJf
czsKKyAgICAgICAgdHJhY2VMaW5lID0gIm1vZHVsZSBjb2RlIl9zdHI7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgQ29kZVR5cGU6Ok5hdGl2ZTogewogICAgICAgICBKU0NlbGwqIGNhbGxlZSA9
IHRoaXMtPmNhbGxlZSgpLmFzQ2VsbCgpOwpAQCAtMzAzLDcgKzMwMyw3IEBAIFN0cmluZyBTdGFj
a1Zpc2l0b3I6OkZyYW1lOjpmdW5jdGlvbk5hbWUoKSBjb25zdAogICAgICAgICB0cmFjZUxpbmUg
PSBnZXRDYWxjdWxhdGVkRGlzcGxheU5hbWUoY2FsbEZyYW1lKCktPmRlcHJlY2F0ZWRWTSgpLCBq
c0Nhc3Q8SlNPYmplY3QqPih0aGlzLT5jYWxsZWUoKS5hc0NlbGwoKSkpLmltcGwoKTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBDb2RlVHlwZTo6R2xvYmFsOgotICAgICAgICB0cmFjZUxpbmUg
PSAiZ2xvYmFsIGNvZGUiX3M7CisgICAgICAgIHRyYWNlTGluZSA9ICJnbG9iYWwgY29kZSJfc3Ry
OwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRyYWNlTGluZS5pc051bGwoKSA/
IGVtcHR5U3RyaW5nKCkgOiB0cmFjZUxpbmU7CkBAIC0zMjQsMTAgKzMyNCwxMCBAQCBTdHJpbmcg
U3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKCkgY29uc3QKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgQ29kZVR5cGU6Ok5hdGl2ZToKLSAgICAgICAgdHJhY2VMaW5lID0gIltu
YXRpdmUgY29kZV0iX3M7CisgICAgICAgIHRyYWNlTGluZSA9ICJbbmF0aXZlIGNvZGVdIl9zdHI7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29kZVR5cGU6Oldhc206Ci0gICAgICAgIHRyYWNl
TGluZSA9ICJbd2FzbSBjb2RlXSJfczsKKyAgICAgICAgdHJhY2VMaW5lID0gIlt3YXNtIGNvZGVd
Il9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gdHJhY2VMaW5lLmlzTnVs
bCgpID8gZW1wdHlTdHJpbmcoKSA6IHRyYWNlTGluZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklULmNw
cAppbmRleCBlOWMwZWNjMzBlYWNjNjhjNTU5ZjhhYzQ2M2UxMDYyMjMxZGRlYjZhLi40OWQ5NDFl
MGI3N2UxYjhhNzUxN2U3NzgwOTc2YzMxMDQwNjQ4MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaml0L0pJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9K
SVQuY3BwCkBAIC0xMDM3LDcgKzEwMzcsNyBAQCB2b2lkIEpJVDo6ZG9NYWluVGhyZWFkUHJlcGFy
YXRpb25CZWZvcmVDb21waWxlKCkKIHsKICAgICAvLyBUaGlzIGVuc3VyZXMgdGhhdCB3ZSBoYXZl
IHRoZSBtb3N0IHVwIHRvIGRhdGUgdHlwZSBpbmZvcm1hdGlvbiB3aGVuIHBlcmZvcm1pbmcgdHlw
ZWNoZWNrIG9wdGltaXphdGlvbnMgZm9yIG9wX3Byb2ZpbGVfdHlwZS4KICAgICBpZiAobV92bS0+
dHlwZVByb2ZpbGVyKCkpCi0gICAgICAgIG1fdm0tPnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNz
TG9nRW50cmllcygqbV92bSwgIlByZXBhcmluZyBmb3IgSklUIGNvbXBpbGF0aW9uLiJfcyk7Cisg
ICAgICAgIG1fdm0tPnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9nRW50cmllcygqbV92bSwg
IlByZXBhcmluZyBmb3IgSklUIGNvbXBpbGF0aW9uLiJfc3RyKTsKIH0KIAogdW5zaWduZWQgSklU
OjpmcmFtZVJlZ2lzdGVyQ291bnRGb3IoVW5saW5rZWRDb2RlQmxvY2sqIGNvZGVCbG9jaykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCmluZGV4IGVmYzlhMGU4
YmIwMmUyMjU4MTE4NDYyM2QxMDYwYTg5MzVjZGYyYTEuLjUxOWI5NThkNGM0OTE5ZDI2MGNmZWEy
NTFkZmEwMGRjMmNiNzc2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQv
SklUT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVy
YXRpb25zLmNwcApAQCAtMjAyLDcgKzIwMiw3IEBAIEpTQ19ERUZJTkVfSklUX09QRVJBVElPTihv
cGVyYXRpb25UaHJvd0l0ZXJhdG9yUmVzdWx0SXNOb3RPYmplY3QsIHZvaWQsIChKU0dsb2JhCiAg
ICAgSklUT3BlcmF0aW9uUHJvbG9ndWVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBjYWxsRnJh
bWUpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50ZXJm
YWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJf
c3RyKTsKIH0KIAogSlNDX0RFRklORV9KSVRfT1BFUkFUSU9OKG9wZXJhdGlvbkNhbGxBcml0eUNo
ZWNrLCBpbnQzMl90LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkpCkBAIC0zNTI1LDcg
KzM1MjUsNyBAQCBKU0NfREVGSU5FX0pJVF9PUEVSQVRJT04ob3BlcmF0aW9uUHJvY2Vzc1R5cGVQ
cm9maWxlckxvZywgdm9pZCwgKFZNKiB2bVBvaW50ZXIpKQogICAgIFZNJiB2bSA9ICp2bVBvaW50
ZXI7CiAgICAgQ2FsbEZyYW1lKiBjYWxsRnJhbWUgPSBERUNMQVJFX0NBTExfRlJBTUUodm0pOwog
ICAgIEpJVE9wZXJhdGlvblByb2xvZ3VlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgY2FsbEZy
YW1lKTsKLSAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJM
b2cgRnVsbCwgY2FsbGVkIGZyb20gaW5zaWRlIGJhc2VsaW5lIEpJVCJfcyk7CisgICAgdm0udHlw
ZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKHZtLCAiTG9nIEZ1bGwsIGNhbGxlZCBm
cm9tIGluc2lkZSBiYXNlbGluZSBKSVQiX3N0cik7CiB9CiAKIEpTQ19ERUZJTkVfSklUX09QRVJB
VElPTihvcGVyYXRpb25Qcm9jZXNzU2hhZG93Q2hpY2tlbkxvZywgdm9pZCwgKFZNKiB2bVBvaW50
ZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBlN2QzY2U5NDIxZTVkYzEyZTA5YmFmMDJiZTU1
MDQyYWZhZDYwN2Q4Li5iMTI2OTgzOWY4MmFhMzIwMWMzZDdkMWRhZjNiN2RmM2I0OGJjYjFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNDkyLDcgKzQ5Miw3IEBAIHN0YXRpYyBKU0NfREVDTEFS
RV9DVVNUT01fU0VUVEVSKHRlc3RDdXN0b21WYWx1ZVNldHRlcik7CiBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIoYWNjZXNzb3JNYWtlTWFzcXVlcmFkZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKIHsKICAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbnRlcm5hbEZ1
bmN0aW9uOjpjcmVhdGVGdW5jdGlvblRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKHZtLCBnbG9i
YWxPYmplY3QsIDAsICJJc0hUTUxEREEiX3MsIGZ1bmN0aW9uQ2FsbE1hc3F1ZXJhZGVyKSk7Cisg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShJbnRlcm5hbEZ1bmN0aW9uOjpjcmVhdGVGdW5jdGlv
blRoYXRNYXNxdWVyYWRlc0FzVW5kZWZpbmVkKHZtLCBnbG9iYWxPYmplY3QsIDAsICJJc0hUTUxE
REEiX3N0ciwgZnVuY3Rpb25DYWxsTWFzcXVlcmFkZXIpKTsKIH0KIAogCkBAIC0xMzQ5LDcgKzEz
NDksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25EZXNjcmliZUFycmF5LCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBKU09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+
KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICI8bm90IG9iamVj
dD4iX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJp
bmcodm0sICI8bm90IG9iamVjdD4iX3N0cikpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNOb250cml2aWFsU3RyaW5nKHZtLCB0b1N0cmluZygiPEJ1dHRlcmZseTogIiwgUmF3UG9pbnRl
cihvYmplY3QtPmJ1dHRlcmZseSgpKSwgIjsgcHVibGljIGxlbmd0aDogIiwgb2JqZWN0LT5nZXRB
cnJheUxlbmd0aCgpLCAiOyB2ZWN0b3IgbGVuZ3RoOiAiLCBvYmplY3QtPmdldFZlY3Rvckxlbmd0
aCgpLCAiPiIpKSk7CiB9CiAKQEAgLTE1MjgsNyArMTUyOCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvblJ1biwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSoKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
ICAgICBWZWN0b3I8Y2hhcj4gc2NyaXB0OwogICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxG
aWxlU3lzdGVtKGZpbGVOYW1lLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2Jh
bE9iamVjdCwgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOworICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVy
cm9yKGdsb2JhbE9iamVjdCwgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zdHIpKSk7CiAKICAgICBH
bG9iYWxPYmplY3QqIHJlYWxtID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVj
dDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCkBA
IC0xNTkxLDcgKzE1OTEsNyBAQCBzdGF0aWMgVVJMIGNvbXB1dGVGaWxlUGF0aChWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbAogewogICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGJvb2wgY2FsbGVyUmVsYXRp
dmUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLmdldFN0cmluZyhnbG9iYWxPYmplY3QpID09ICJj
YWxsZXIgcmVsYXRpdmUiX3M7CisgICAgYm9vbCBjYWxsZXJSZWxhdGl2ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMSkuZ2V0U3RyaW5nKGdsb2JhbE9iamVjdCkgPT0gImNhbGxlciByZWxhdGl2ZSI7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgVVJMKCkpOwogCiAgICAgU3RyaW5nIGZp
bGVOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1dURlN0cmluZyhnbG9iYWxPYmplY3Qp
OwpAQCAtMTYxOSw3ICsxNjE5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9u
TG9hZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSoKIAogICAgIFZl
Y3RvcjxjaGFyPiBzY3JpcHQ7CiAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0
ZW0ocGF0aC5maWxlU3lzdGVtUGF0aCgpLCBzY3JpcHQpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9y
KGdsb2JhbE9iamVjdCwgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zKSkpOworICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIkNvdWxkIG5vdCBvcGVuIGZpbGUuIl9zdHIpKSk7CiAK
ICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247CiAgICAgSlNWYWx1
ZSByZXN1bHQgPSBldmFsdWF0ZShnbG9iYWxPYmplY3QsIGpzY1NvdXJjZShzY3JpcHQsIFNvdXJj
ZU9yaWdpbiB7IHBhdGggfSwgcGF0aC5maWxlU3lzdGVtUGF0aCgpKSwgSlNWYWx1ZSgpLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKQEAgLTE2ODksNyArMTY4OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvbkNoZWNrU3ludGF4LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
CiAgICAgVmVjdG9yPGNoYXI+IHNjcmlwdDsKICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2Fs
RmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9i
YWxPYmplY3QsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVF
cnJvcihnbG9iYWxPYmplY3QsICJDb3VsZCBub3Qgb3BlbiBmaWxlLiJfc3RyKSkpOwogCiAgICAg
U3RvcFdhdGNoIHN0b3BXYXRjaDsKICAgICBzdG9wV2F0Y2guc3RhcnQoKTsKQEAgLTIwNDcsNyAr
MjA0Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckV2YWxTY3Jp
cHQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgICAgIGdsb2JhbCA9IGpzQ2Fz
dDxKU1Byb3h5Kj4oZ2xvYmFsKS0+dGFyZ2V0KCk7CiAgICAgR2xvYmFsT2JqZWN0KiByZWFsbSA9
IGpzRHluYW1pY0Nhc3Q8R2xvYmFsT2JqZWN0Kj4odm0sIGdsb2JhbCk7CiAgICAgaWYgKCFyZWFs
bSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJFeHBlY3RlZCBnbG9iYWwg
dG8gcG9pbnQgdG8gYSBnbG9iYWwgb2JqZWN0Il9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9y
KGdsb2JhbE9iamVjdCwgIkV4cGVjdGVkIGdsb2JhbCB0byBwb2ludCB0byBhIGdsb2JhbCBvYmpl
Y3QiX3N0cikpKTsKIAogICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlv
bjsKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGV2YWx1YXRlKHJlYWxtLCBqc2NTb3VyY2Uoc291cmNl
Q29kZSwgY2FsbEZyYW1lLT5jYWxsZXJTb3VyY2VPcmlnaW4odm0pKSwgSlNWYWx1ZSgpLCBldmFs
dWF0aW9uRXhjZXB0aW9uKTsKQEAgLTIwNzksNyArMjA3OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihmdW5jdGlvbkRvbGxhckdsb2JhbE9iamVjdEZvciwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAg
aWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJv
cihnbG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfcykpKTsKKyAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfc3RyKSkpOwog
ICAgIEpTVmFsdWUgYXJnID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoYXJnLmlz
T2JqZWN0KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoYXNPYmplY3QoYXJnKS0+
Z2xvYmFsT2JqZWN0KHZtKS0+Z2xvYmFsVGhpcygpKTsKQEAgLTIwOTMsNyArMjA5Myw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhcklzUmVtb3RlRnVuY3Rpb24sIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogCiAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpIDwgMSkKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyJfcykp
KTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxP
YmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3QgZW5vdWdoIGFyZ3Vt
ZW50cyJfc3RyKSkpOwogCiAgICAgSlNWYWx1ZSBhcmcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzUmVtb3RlRnVuY3Rpb24o
dm0sIGFyZykpKTsKQEAgLTIxMjAsOSArMjEyMCw5IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvbkRvbGxhckFnZW50U3RhcnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
CiAgICAgfTsKIAogICAgIGlmIChpc0dpZ2FjYWdlTWVtb3J5RXhoYXVzdGVkKEdpZ2FjYWdlOjpK
U1ZhbHVlKSB8fCBpc0dpZ2FjYWdlTWVtb3J5RXhoYXVzdGVkKEdpZ2FjYWdlOjpQcmltaXRpdmUp
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93T3V0T2ZNZW1vcnlFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiR2lnYWNhZ2UgaXMgZXhoYXVzdGVkIl9zKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJHaWdhY2FnZSBpcyBleGhhdXN0ZWQiX3N0cikpOwogCi0gICAgU3RyaW5nIHdv
cmtlclBhdGggPSAid29ya2VyIl9zOworICAgIFN0cmluZyB3b3JrZXJQYXRoID0gIndvcmtlciJf
c3RyOwogICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudCgxKS5pc1VuZGVmaW5lZCgpKSB7CiAg
ICAgICAgIHdvcmtlclBhdGggPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvV1RGU3RyaW5nKGds
b2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwpAQCAtMjE3MSw3ICsyMTcxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGZ1bmN0aW9uRG9sbGFyQWdlbnRSZWNlaXZlQnJvYWRjYXN0LCAoSlNHbG9iYWxPYmplY3QqIGcK
ICAgICBKU1ZhbHVlIGNhbGxiYWNrID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRv
IGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGNhbGxiYWNrKTsKICAgICBpZiAoY2FsbERhdGEu
dHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9i
YWxPYmplY3QsICJFeHBlY3RlZCBjYWxsYmFjayJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJv
cihnbG9iYWxPYmplY3QsICJFeHBlY3RlZCBjYWxsYmFjayJfc3RyKSkpOwogICAgIAogICAgIFJl
ZlB0cjxNZXNzYWdlPiBtZXNzYWdlOwogICAgIHsKQEAgLTIyNjksNyArMjI2OSw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkRvbGxhckFnZW50QnJvYWRjYXN0LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iCiAgICAgfQogI2VuZGlmCiAKLSAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGds
b2JhbE9iamVjdCwgIk5vdCBzdXBwb3J0ZWQgb2JqZWN0Il9zKSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiTm90IHN1cHBvcnRlZCBvYmplY3QiX3N0cikpKTsKIH0KIAogSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRG9sbGFyQWdlbnRHZXRSZXBvcnQsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKQEAgLTIzOTUsMTEgKzIzOTUs
MTEgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uVHJhbnNmZXJBcnJheUJ1ZmZl
ciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAx
KQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBlbm91Z2ggYXJndW1l
bnRzIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9u
KGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBlbm91
Z2ggYXJndW1lbnRzIl9zdHIpKSk7CiAgICAgCiAgICAgSlNBcnJheUJ1ZmZlciogYnVmZmVyID0g
anNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVyKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
OwogICAgIGlmICghYnVmZmVyKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwg
IkV4cGVjdGVkIGFuIGFycmF5IGJ1ZmZlciJfcykpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihn
bG9iYWxPYmplY3QsICJFeHBlY3RlZCBhbiBhcnJheSBidWZmZXIiX3N0cikpKTsKICAgICAKICAg
ICBBcnJheUJ1ZmZlckNvbnRlbnRzIGR1bW15Q29udGVudHM7CiAgICAgYnVmZmVyLT5pbXBsKCkt
PnRyYW5zZmVyVG8odm0sIGR1bW15Q29udGVudHMpOwpAQCAtMjQ3OSw3ICsyNDc5LDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRWZmZWN0ZnVsNDIsIChKU0dsb2JhbE9iamVj
dCosIENhbGxGcmFtZSopKQogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uTWFrZU1h
c3F1ZXJhZGVyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSW50ZXJuYWxGdW5jdGlvbjo6Y3JlYXRlRnVuY3Rpb25UaGF0TWFzcXVlcmFkZXNBc1Vu
ZGVmaW5lZCh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiSXNIVE1MRERBIl9zLCBmdW5jdGlvbkNhbGxN
YXNxdWVyYWRlcikpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSW50ZXJuYWxGdW5jdGlv
bjo6Y3JlYXRlRnVuY3Rpb25UaGF0TWFzcXVlcmFkZXNBc1VuZGVmaW5lZCh2bSwgZ2xvYmFsT2Jq
ZWN0LCAwLCAiSXNIVE1MRERBIl9zdHIsIGZ1bmN0aW9uQ2FsbE1hc3F1ZXJhZGVyKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkNhbGxNYXNxdWVyYWRlciwgKEpTR2xv
YmFsT2JqZWN0KiwgQ2FsbEZyYW1lKikpCkBAIC0yNTE3LDcgKzI1MTcsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25TZXRUaW1lb3V0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbAogICAgIC8vIEZJWE1FOiBUaGlzIG1lYW5zIHdlIGNhbid0IHBhc3MgYW55
IGludGVybmFsIGZ1bmN0aW9uIGJ1dCBJIGRvbid0IHRoaW5rIHRoYXQncyBjb21tb24gZm9yIHRl
c3RpbmcuCiAgICAgYXV0byBjYWxsYmFjayA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZt
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIWNhbGxiYWNrKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1l
bnQgaXMgbm90IGEgSlMgZnVuY3Rpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgSlMgZnVu
Y3Rpb24iX3N0cik7CiAKICAgICAvLyBGSVhNRTogV2UgZG9uJ3QgbG9vayBhdCB0aGUgdGltZW91
dCBwYXJhbWV0ZXIgYmVjYXVzZSB3ZSBkb24ndCBoYXZlIGEgc2NoZWR1bGUgd29yayBsYXRlciBB
UEkuCiAgICAgYXV0byB0aWNrZXQgPSB2bS5kZWZlcnJlZFdvcmtUaW1lci0+YWRkUGVuZGluZ1dv
cmsodm0sIGNhbGxiYWNrLCB7IH0pOwpAQCAtMjU0Myw3ICsyNTQzLDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGZ1bmN0aW9uRmluYWxpemF0aW9uUmVnaXN0cnlMaXZlQ291bnQsIChKU0ds
b2JhbE9iamVjdCoKIAogICAgIGF1dG8qIGZpbmFsaXphdGlvblJlZ2lzdHJ5ID0ganNEeW5hbWlj
Q2FzdDxKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkp
OwogICAgIGlmICghZmluYWxpemF0aW9uUmVnaXN0cnkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBm
aW5hbGl6YXRpb25SZWdpc3RyeSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaXJzdCBhcmd1bWVudCBpcyBub3QgYSBmaW5hbGl6YXRp
b25SZWdpc3RyeSJfc3RyKTsKIAogICAgIExvY2tlciBsb2NrZXIgeyBmaW5hbGl6YXRpb25SZWdp
c3RyeS0+Y2VsbExvY2soKSB9OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
ZmluYWxpemF0aW9uUmVnaXN0cnktPmxpdmVDb3VudChsb2NrZXIpKSk7CkBAIC0yNTU2LDcgKzI1
NTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25GaW5hbGl6YXRpb25SZWdp
c3RyeURlYWRDb3VudCwgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogZmluYWxpemF0aW9u
UmVnaXN0cnkgPSBqc0R5bmFtaWNDYXN0PEpTRmluYWxpemF0aW9uUmVnaXN0cnkqPih2bSwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFmaW5hbGl6YXRpb25SZWdpc3RyeSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZpcnN0
IGFyZ3VtZW50IGlzIG5vdCBhIGZpbmFsaXphdGlvblJlZ2lzdHJ5Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZpcnN0IGFyZ3VtZW50
IGlzIG5vdCBhIGZpbmFsaXphdGlvblJlZ2lzdHJ5Il9zdHIpOwogCiAgICAgTG9ja2VyIGxvY2tl
ciB7IGZpbmFsaXphdGlvblJlZ2lzdHJ5LT5jZWxsTG9jaygpIH07CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihmaW5hbGl6YXRpb25SZWdpc3RyeS0+ZGVhZENvdW50KGxvY2tl
cikpKTsKQEAgLTI2MTksNyArMjYxOSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5j
dGlvbkNyZWF0ZUJpZ0ludDMyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAg
ICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQmlnSW50MzIoc3RhdGljX2Nhc3Q8
aW50MzJfdD4oZGlnaXQpKSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiByYW5nZSBvZiBCaWdJbnQzMiJfcyk7CisgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiByYW5nZSBvZiBCaWdJ
bnQzMiJfc3RyKTsKICAgICByZXR1cm4geyB9OwogfQogI2VuZGlmCkBAIC0yNzY4LDcgKzI3Njgs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25TYW1wbGluZ1Byb2ZpbGVyU3Rh
Y2tUcmFjZXMsIChKU0dsb2JhbE9iamVjdCogZwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghdm0uc2FtcGxpbmdQcm9maWxlcigpKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIlNhbXBsaW5nIHByb2ZpbGVyIHdhcyBuZXZl
ciBzdGFydGVkIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIlNh
bXBsaW5nIHByb2ZpbGVyIHdhcyBuZXZlciBzdGFydGVkIl9zdHIpKSk7CiAKICAgICBTdHJpbmcg
anNvblN0cmluZyA9IHZtLnNhbXBsaW5nUHJvZmlsZXIoKS0+c3RhY2tUcmFjZXNBc0pTT04oKTsK
ICAgICBFbmNvZGVkSlNWYWx1ZSByZXN1bHQgPSBKU1ZhbHVlOjplbmNvZGUoSlNPTlBhcnNlKGds
b2JhbE9iamVjdCwganNvblN0cmluZykpOwpAQCAtMjc4OSw3ICsyNzg5LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uQXN5bmNUZXN0U3RhcnQsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LAogCiAgICAgSlNWYWx1ZSBudW1iZXJPZkFzeW5jUGFzc2VzID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIW51bWJlck9mQXN5bmNQYXNzZXMuaXNVSW50MzIo
KSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhw
ZWN0ZWQgZmlyc3QgYXJndW1lbnQgdG8gYmUgYSB1aW50MzIiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJFeHBlY3RlZCBmaXJzdCBhcmd1bWVu
dCB0byBiZSBhIHVpbnQzMiJfc3RyKTsKIAogICAgIGFzeW5jVGVzdEV4cGVjdGVkUGFzc2VzICs9
IG51bWJlck9mQXN5bmNQYXNzZXMuYXNVSW50MzIoKTsKICAgICByZXR1cm4gZW5jb2RlZEpTVW5k
ZWZpbmVkKCk7CkBAIC0yODA5LDcgKzI4MDksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
ZnVuY3Rpb25XZWJBc3NlbWJseU1lbW9yeU1vZGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICAKICAgICBpZiAo
IVdhc206OmlzU3VwcG9ydGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJXZWJBc3NlbWJseU1lbW9yeU1vZGUgc2hvdWxkIG9ubHkgYmUg
Y2FsbGVkIGlmIHRoZSB1c2VXZWJBc3NlbWJseSBvcHRpb24gaXMgc2V0Il9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIldlYkFzc2VtYmx5
TWVtb3J5TW9kZSBzaG91bGQgb25seSBiZSBjYWxsZWQgaWYgdGhlIHVzZVdlYkFzc2VtYmx5IG9w
dGlvbiBpcyBzZXQiX3N0cik7CiAKICAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCkuZ2V0T2JqZWN0KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIG1lbW9yeSA9
IGpzRHluYW1pY0Nhc3Q8SlNXZWJBc3NlbWJseU1lbW9yeSo+KHZtLCBvYmplY3QpKQpAQCAtMjgx
OCw3ICsyODE4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGZ1bmN0aW9uV2ViQXNzZW1i
bHlNZW1vcnlNb2RlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIG1ha2VTdHJpbmcoaW5zdGFuY2UtPm1lbW9y
eU1vZGUoKSkpKTsKICAgICB9CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiV2ViQXNzZW1ibHlNZW1vcnlNb2RlIGV4cGVjdHMgZWl0aGVyIGEgV2Vi
QXNzZW1ibHkuTWVtb3J5IG9yIFdlYkFzc2VtYmx5Lkluc3RhbmNlIl9zKTsKKyAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2ViQXNzZW1ibHlNZW1vcnlN
b2RlIGV4cGVjdHMgZWl0aGVyIGEgV2ViQXNzZW1ibHkuTWVtb3J5IG9yIFdlYkFzc2VtYmx5Lklu
c3RhbmNlIl9zdHIpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpAQCAtMzIw
Miw3ICszMjAyLDcgQEAgc3RhdGljIHZvaWQgcnVuV2l0aE9wdGlvbnMoR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENvbW1hbmRMaW5lJiBvcHRpb25zLCBib28KICAgICAgICAgICAgIHNpemVf
dCBjb21tYW5kTGluZUxlbmd0aCA9IHN0cmxlbihzY3JpcHRzW2ldLmFyZ3VtZW50KTsKICAgICAg
ICAgICAgIHNjcmlwdEJ1ZmZlci5yZXNpemUoY29tbWFuZExpbmVMZW5ndGgpOwogICAgICAgICAg
ICAgc3RkOjpjb3B5KHNjcmlwdHNbaV0uYXJndW1lbnQsIHNjcmlwdHNbaV0uYXJndW1lbnQgKyBj
b21tYW5kTGluZUxlbmd0aCwgc2NyaXB0QnVmZmVyLmJlZ2luKCkpOwotICAgICAgICAgICAgZmls
ZU5hbWUgPSAiW0NvbW1hbmQgTGluZV0iX3M7CisgICAgICAgICAgICBmaWxlTmFtZSA9ICJbQ29t
bWFuZCBMaW5lXSJfc3RyOwogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc0xhc3RGaWxlID0g
aSA9PSBzY3JpcHRzLnNpemUoKSAtIDE7CkBAIC0zMjU1LDcgKzMyNTUsNyBAQCBzdGF0aWMgdm9p
ZCBydW5JbnRlcmFjdGl2ZShHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBVUkwgZGly
ZWN0b3J5TmFtZSA9IGN1cnJlbnRXb3JraW5nRGlyZWN0b3J5KCk7CiAgICAgaWYgKCFkaXJlY3Rv
cnlOYW1lLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwotICAgIFNvdXJjZU9yaWdpbiBzb3Vy
Y2VPcmlnaW4oVVJMKGRpcmVjdG9yeU5hbWUsICIuL2ludGVycHJldGVyIl9zKSk7CisgICAgU291
cmNlT3JpZ2luIHNvdXJjZU9yaWdpbihVUkwoZGlyZWN0b3J5TmFtZSwgIi4vaW50ZXJwcmV0ZXIi
X3N0cikpOwogICAgIAogICAgIGJvb2wgc2hvdWxkUXVpdCA9IGZhbHNlOwogICAgIHdoaWxlICgh
c2hvdWxkUXVpdCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQ
YXRocy5jcHAKaW5kZXggZGE2MDBlYTAwZjBjOGQ2NDNhNTdmNjZmYjVmOWIwZTNhMzU2ODNhOC4u
ZmM1Y2RiZTVmMDBmMDlhY2Y4M2ZhMjE2Y2RiZWJjZWEwYjQ1YmMyMiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC04OTksNyArODk5LDcg
QEAgTExJTlRfU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX2l0ZXJhdG9yX29wZW5fZ2V0X25leHQp
CiAgICAgUmVnaXN0ZXImIG5leHRSZWdpc3RlciA9IGNhbGxGcmFtZS0+dW5jaGVja2VkUihieXRl
Y29kZS5tX25leHQpOwogCiAgICAgaWYgKCFpdGVyYXRvci5pc09iamVjdCgpKQotICAgICAgICBM
TElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVzdWx0
IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcykpOworICAgICAgICBMTElOVF9USFJPVyhj
cmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiJfc3RyKSk7CiAKICAgICBKU1ZhbHVlIHJlc3VsdCA9IHBlcmZvcm1M
TEludEdldEJ5SUQocGMsIGNvZGVCbG9jaywgZ2xvYmFsT2JqZWN0LCBpdGVyYXRvciwgdm0ucHJv
cGVydHlOYW1lcy0+bmV4dCwgbWV0YWRhdGEubV9tb2RlTWV0YWRhdGEpOwogICAgIExMSU5UX0NI
RUNLX0VYQ0VQVElPTigpOwpAQCAtOTE5LDcgKzkxOSw3IEBAIExMSU5UX1NMT1dfUEFUSF9ERUNM
KHNsb3dfcGF0aF9pdGVyYXRvcl9uZXh0X2dldF9kb25lKQogICAgIFJlZ2lzdGVyJiBkb25lUmVn
aXN0ZXIgPSBjYWxsRnJhbWUtPnVuY2hlY2tlZFIoYnl0ZWNvZGUubV9kb25lKTsKIAogICAgIGlm
ICghaXRlcmF0b3JSZXR1cm4uaXNPYmplY3QoKSkKLSAgICAgICAgTExJTlRfVEhST1coY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90
IGFuIG9iamVjdC4iX3MpKTsKKyAgICAgICAgTExJTlRfVEhST1coY3JlYXRlVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4i
X3N0cikpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBwZXJmb3JtTExJbnRHZXRCeUlEKHBjLCBj
b2RlQmxvY2ssIGdsb2JhbE9iamVjdCwgaXRlcmF0b3JSZXR1cm4sIHZtLnByb3BlcnR5TmFtZXMt
PmRvbmUsIG1ldGFkYXRhLm1fZG9uZU1vZGVNZXRhZGF0YSk7CiAgICAgTExJTlRfQ0hFQ0tfRVhD
RVBUSU9OKCk7CkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVJdGVyYXRv
ck9wZW5DaGVja3BvaW50KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUsIEpTR2xvYmFsTwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIGl0
ZXJhdG9yID0gY2FsbEZyYW1lLT51bmNoZWNrZWRSKGJ5dGVjb2RlLm1faXRlcmF0b3IpLmpzVmFs
dWUoKTsKICAgICBpZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBp
cyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRlcmZhY2UgaXMgbm90IGFuIG9iamVjdC4i
X3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTIzNjEsNyArMjM2MSw3IEBAIHN0
YXRpYyB2b2lkIGhhbmRsZUl0ZXJhdG9yTmV4dENoZWNrcG9pbnQoVk0mIHZtLCBDYWxsRnJhbWUq
IGNhbGxGcmFtZSwgSlNHbG9iYWxPCiAgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKG5l
eHQsICJXZSBzaG91bGQgbm90IE9TUiBleGl0IHRvIGEgY2hlY2twb2ludCBmb3IgZmFzdCBjYXNl
cy4iKTsKIAogICAgIGlmICghaXRlcmF0b3JSZXN1bHRPYmplY3QuaXNPYmplY3QoKSkgewotICAg
ICAgICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1
bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmF0b3IgcmVzdWx0IGludGVyZmFjZSBpcyBu
b3QgYW4gb2JqZWN0LiJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9MZXhlci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAppbmRleCAxMDkzNTFkODM1NTA2MzExZjlmOWM1MDUw
ZDdjZGI2ZDZjZmU2MzY5Li42MGRlNDlhYTRjNDkwZWZkZjJmNTc1NGUwYTA1ZmQyMTc5MjBmNmNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0xleGVyLmNwcApAQCAtNTE0LDE5ICs1MTQs
MTkgQEAgU3RyaW5nIExleGVyPFQ+OjppbnZhbGlkQ2hhcmFjdGVyTWVzc2FnZSgpIGNvbnN0CiB7
CiAgICAgc3dpdGNoIChtX2N1cnJlbnQpIHsKICAgICBjYXNlIDA6Ci0gICAgICAgIHJldHVybiAi
SW52YWxpZCBjaGFyYWN0ZXI6ICdcXDAnIl9zOworICAgICAgICByZXR1cm4gIkludmFsaWQgY2hh
cmFjdGVyOiAnXFwwJyJfc3RyOwogICAgIGNhc2UgMTA6Ci0gICAgICAgIHJldHVybiAiSW52YWxp
ZCBjaGFyYWN0ZXI6ICdcXG4nIl9zOworICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVy
OiAnXFxuJyJfc3RyOwogICAgIGNhc2UgMTE6Ci0gICAgICAgIHJldHVybiAiSW52YWxpZCBjaGFy
YWN0ZXI6ICdcXHYnIl9zOworICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFx2
JyJfc3RyOwogICAgIGNhc2UgMTM6Ci0gICAgICAgIHJldHVybiAiSW52YWxpZCBjaGFyYWN0ZXI6
ICdcXHInIl9zOworICAgICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnXFxyJyJfc3Ry
OwogICAgIGNhc2UgMzU6Ci0gICAgICAgIHJldHVybiAiSW52YWxpZCBjaGFyYWN0ZXI6ICcjJyJf
czsKKyAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJyMnIl9zdHI7CiAgICAgY2Fz
ZSA2NDoKLSAgICAgICAgcmV0dXJuICJJbnZhbGlkIGNoYXJhY3RlcjogJ0AnIl9zOworICAgICAg
ICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnQCciX3N0cjsKICAgICBjYXNlIDk2OgotICAg
ICAgICByZXR1cm4gIkludmFsaWQgY2hhcmFjdGVyOiAnYCciX3M7CisgICAgICAgIHJldHVybiAi
SW52YWxpZCBjaGFyYWN0ZXI6ICdgJyJfc3RyOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJJbnZhbGlkIGNoYXJhY3RlciAnXFx1IiwgaGV4KG1fY3VycmVudCwgNCwg
TG93ZXJjYXNlKSwgJ1wnJyk7CiAgICAgfQpAQCAtMTIxMSw3ICsxMjExLDcgQEAgdGVtcGxhdGUg
PGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBBTFdBWVNfSU5MSU5FIHR5cGVuYW1lIExleGVyPFQ+
OjpTdHJpbmdQYXJzZVIKICAgICAgICAgICAgIGVsc2UgaWYgKG1fY3VycmVudCA9PSAneCcpIHsK
ICAgICAgICAgICAgICAgICBzaGlmdCgpOwogICAgICAgICAgICAgICAgIGlmICghaXNBU0NJSUhl
eERpZ2l0KG1fY3VycmVudCkgfHwgIWlzQVNDSUlIZXhEaWdpdChwZWVrKDEpKSkgewotICAgICAg
ICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJcXHggY2FuIG9ubHkgYmUgZm9sbG93
ZWQgYnkgYSBoZXggY2hhcmFjdGVyIHNlcXVlbmNlIl9zOworICAgICAgICAgICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9ICJcXHggY2FuIG9ubHkgYmUgZm9sbG93ZWQgYnkgYSBoZXggY2hh
cmFjdGVyIHNlcXVlbmNlIl9zdHI7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAoYXRFbmQo
KSB8fCAoaXNBU0NJSUhleERpZ2l0KG1fY3VycmVudCkgJiYgKG1fY29kZSArIDEgPT0gbV9jb2Rl
RW5kKSkpID8gU3RyaW5nVW50ZXJtaW5hdGVkIDogU3RyaW5nQ2Fubm90QmVQYXJzZWQ7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFQgcHJldiA9IG1fY3VycmVudDsKQEAgLTEy
NjUsNyArMTI2NSw3IEBAIHRlbXBsYXRlIDxib29sIHNob3VsZEJ1aWxkU3RyaW5ncz4gQUxXQVlT
X0lOTElORSBhdXRvIExleGVyPFQ+OjpwYXJzZUNvbXBsZXhFc2NhCiAgICAgICAgICAgICAgICAg
c2hpZnQoKTsKICAgICAgICAgICAgIEFTU0VSVCghaXNBU0NJSUhleERpZ2l0KG1fY3VycmVudCkp
OwogCi0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJcXHggY2FuIG9ubHkgYmUgZm9s
bG93ZWQgYnkgYSBoZXggY2hhcmFjdGVyIHNlcXVlbmNlIl9zOworICAgICAgICAgICAgbV9sZXhF
cnJvck1lc3NhZ2UgPSAiXFx4IGNhbiBvbmx5IGJlIGZvbGxvd2VkIGJ5IGEgaGV4IGNoYXJhY3Rl
ciBzZXF1ZW5jZSJfc3RyOwogICAgICAgICAgICAgcmV0dXJuIGF0RW5kKCkgPyBTdHJpbmdVbnRl
cm1pbmF0ZWQgOiBTdHJpbmdDYW5ub3RCZVBhcnNlZDsKICAgICAgICAgfQogCkBAIC0xMjg4LDcg
KzEyODgsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZU19JTkxJ
TkUgYXV0byBMZXhlcjxUPjo6cGFyc2VDb21wbGV4RXNjYQogICAgICAgICAgICAgcmV0dXJuIFN0
cmluZ1BhcnNlZFN1Y2Nlc3NmdWxseTsKICAgICAgICAgfQogCi0gICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIlxcdSBjYW4gb25seSBiZSBmb2xsb3dlZCBieSBhIFVuaWNvZGUgY2hhcmFjdGVy
IHNlcXVlbmNlIl9zOworICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJcXHUgY2FuIG9ubHkg
YmUgZm9sbG93ZWQgYnkgYSBVbmljb2RlIGNoYXJhY3RlciBzZXF1ZW5jZSJfc3RyOwogICAgICAg
ICByZXR1cm4gYXRFbmQoKSA/IFN0cmluZ1VudGVybWluYXRlZCA6IFN0cmluZ0Nhbm5vdEJlUGFy
c2VkOwogICAgIH0KIApAQCAtMTMwNiw3ICsxMzA2LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxk
QnVpbGRTdHJpbmdzPiBBTFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQ29tcGxleEVz
Y2EKICAgICAgICAgICAgICAgICBpZiAoY2hhcmFjdGVyMSA9PSAnMCcpCiAgICAgICAgICAgICAg
ICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJU
aGUgb25seSB2YWxpZCBudW1lcmljIGVzY2FwZSBpbiBzdHJpY3QgbW9kZSBpcyAnXFwwJyJfczsK
KyAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJUaGUgb25seSB2YWxpZCBudW1l
cmljIGVzY2FwZSBpbiBzdHJpY3QgbW9kZSBpcyAnXFwwJyJfc3RyOwogICAgICAgICAgICAgICAg
IHJldHVybiBhdEVuZCgpID8gU3RyaW5nVW50ZXJtaW5hdGVkIDogU3RyaW5nQ2Fubm90QmVQYXJz
ZWQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoc2hvdWxkQnVpbGRTdHJpbmdzKQpA
QCAtMTM0NSw3ICsxMzQ1LDcgQEAgdGVtcGxhdGUgPGJvb2wgc2hvdWxkQnVpbGRTdHJpbmdzPiBB
TFdBWVNfSU5MSU5FIGF1dG8gTGV4ZXI8VD46OnBhcnNlQ29tcGxleEVzY2EKICAgICAgICAgcmV0
dXJuIFN0cmluZ1BhcnNlZFN1Y2Nlc3NmdWxseTsKICAgICB9CiAKLSAgICBtX2xleEVycm9yTWVz
c2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIGNvbnN0YW50Il9zOworICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIlVudGVybWluYXRlZCBzdHJpbmcgY29uc3RhbnQiX3N0cjsKICAgICByZXR1cm4g
U3RyaW5nVW50ZXJtaW5hdGVkOwogfQogCkBAIC0xMzg3LDcgKzEzODcsNyBAQCB0ZW1wbGF0ZSA8
Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IGF1dG8gTGV4ZXI8VD46OnBhcnNlU3RyaW5nU2xvd0Nh
c2UoSlNUb2tlbkRhdAogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50IDwgMHhFKSkgewog
ICAgICAgICAgICAgLy8gTmV3LWxpbmUgb3IgZW5kIG9mIGlucHV0IGlzIG5vdCBhbGxvd2VkCiAg
ICAgICAgICAgICBpZiAoYXRFbmQoKSB8fCBtX2N1cnJlbnQgPT0gJ1xyJyB8fCBtX2N1cnJlbnQg
PT0gJ1xuJykgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0
ZWQgRU9GIl9zOworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0
ZWQgRU9GIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGF0RW5kKCkgPyBTdHJpbmdVbnRl
cm1pbmF0ZWQgOiBTdHJpbmdDYW5ub3RCZVBhcnNlZDsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIC8vIEFueXRoaW5nIGVsc2UgaXMganVzdCBhIG5vcm1hbCBjaGFyYWN0ZXIKQEAgLTE0NjQs
NyArMTQ2NCw3IEBAIHR5cGVuYW1lIExleGVyPFQ+OjpTdHJpbmdQYXJzZVJlc3VsdCBMZXhlcjxU
Pjo6cGFyc2VUZW1wbGF0ZUxpdGVyYWwoSlNUb2tlbkRhdGEqCiAgICAgICAgICAgICAvLyBFbmQg
b2YgaW5wdXQgaXMgbm90IGFsbG93ZWQuCiAgICAgICAgICAgICAvLyBVbmxpa2UgU3RyaW5nLCBs
aW5lIHRlcm1pbmF0b3IgaXMgYWxsb3dlZC4KICAgICAgICAgICAgIGlmIChhdEVuZCgpKSB7Ci0g
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBFT0YiX3M7Cisg
ICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBFT0YiX3N0cjsK
ICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nVW50ZXJtaW5hdGVkOwogICAgICAgICAgICAg
fQogCkBAIC0yMTAxLDcgKzIxMDEsNyBAQCBzdGFydDoKICAgICAgICAgICAgIHNoaWZ0KCk7CiAg
ICAgICAgICAgICBpZiAocGFyc2VNdWx0aWxpbmVDb21tZW50KCkpCiAgICAgICAgICAgICAgICAg
Z290byBzdGFydDsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk11bHRpbGluZSBj
b21tZW50IHdhcyBub3QgY2xvc2VkIHByb3Blcmx5Il9zOworICAgICAgICAgICAgbV9sZXhFcnJv
ck1lc3NhZ2UgPSAiTXVsdGlsaW5lIGNvbW1lbnQgd2FzIG5vdCBjbG9zZWQgcHJvcGVybHkiX3N0
cjsKICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX01VTFRJTElORV9DT01NRU5UX0VS
Uk9SVE9LOwogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQpAQCAtMjI1
NSwxMyArMjI1NSwxMyBAQCBzdGFydDoKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChVTkxJS0VMWSghcGFyc2VOdW1iZXJBZnRlckRlY2ltYWxQb2ludCgpKSkgewot
ICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBk
ZWNpbWFsIHBvaW50Il9zOworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm9uLW51
bWJlciBmb3VuZCBhZnRlciBkZWNpbWFsIHBvaW50Il9zdHI7CiAgICAgICAgICAgICB0b2tlbiA9
IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5WQUxJ
RF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9y
OwogICAgICAgICB9CiAgICAgICAgIHRva2VuID0gRE9VQkxFOwogICAgICAgICBpZiAoVU5MSUtF
TFkoaXNBU0NJSUFscGhhQ2FzZWxlc3NFcXVhbChtX2N1cnJlbnQsICdlJykgJiYgIXBhcnNlTnVt
YmVyQWZ0ZXJFeHBvbmVudEluZGljYXRvcigpKSkgewotICAgICAgICAgICAgbV9sZXhFcnJvck1l
c3NhZ2UgPSAiTm9uLW51bWJlciBmb3VuZCBhZnRlciBleHBvbmVudCBpbmRpY2F0b3IiX3M7Cisg
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGV4
cG9uZW50IGluZGljYXRvciJfc3RyOwogICAgICAgICAgICAgdG9rZW4gPSBhdEVuZCgpID8gVU5U
RVJNSU5BVEVEX05VTUVSSUNfTElURVJBTF9FUlJPUlRPSyA6IElOVkFMSURfTlVNRVJJQ19MSVRF
UkFMX0VSUk9SVE9LOwogICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgfQpA
QCAtMjI3Niw3ICsyMjc2LDcgQEAgc3RhcnQ6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5M
SUtFTFkoaXNJZGVudFN0YXJ0KGN1cnJlbnRDb2RlUG9pbnQoKSkpKSB7Ci0gICAgICAgICAgICBt
X2xleEVycm9yTWVzc2FnZSA9ICJObyBpZGVudGlmaWVycyBhbGxvd2VkIGRpcmVjdGx5IGFmdGVy
IG51bWVyaWMgbGl0ZXJhbCJfczsKKyAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5v
IGlkZW50aWZpZXJzIGFsbG93ZWQgZGlyZWN0bHkgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIl9zdHI7
CiAgICAgICAgICAgICB0b2tlbiA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRF
UkFMX0VSUk9SVE9LIDogSU5WQUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CiAgICAgICAg
ICAgICBnb3RvIHJldHVybkVycm9yOwogICAgICAgICB9CkBAIC0yMjg2LDcgKzIyODYsNyBAQCBz
dGFydDoKICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNz
RXF1YWwobV9jdXJyZW50LCAneCcpKSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVND
SUlIZXhEaWdpdChwZWVrKDEpKSkpIHsKLSAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2Fn
ZSA9ICJObyBoZXhhZGVjaW1hbCBkaWdpdHMgYWZ0ZXIgJzB4JyJfczsKKyAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBoZXhhZGVjaW1hbCBkaWdpdHMgYWZ0ZXIgJzB4JyJf
c3RyOwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0hFWF9OVU1CRVJfRVJS
T1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAgICAgICAgIH0K
QEAgLTIzMTQsNyArMjMxNCw3IEBAIHN0YXJ0OgogICAgICAgICAgICAgfQogCiAgICAgICAgICAg
ICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0KGN1cnJlbnRDb2RlUG9pbnQoKSkpKSB7Ci0gICAg
ICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8gc3BhY2UgYmV0d2VlbiBoZXhhZGVj
aW1hbCBsaXRlcmFsIGFuZCBpZGVudGlmaWVyIl9zOworICAgICAgICAgICAgICAgIG1fbGV4RXJy
b3JNZXNzYWdlID0gIk5vIHNwYWNlIGJldHdlZW4gaGV4YWRlY2ltYWwgbGl0ZXJhbCBhbmQgaWRl
bnRpZmllciJfc3RyOwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX0hFWF9O
VU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5FcnJvcjsKICAgICAg
ICAgICAgIH0KQEAgLTIzMjUsNyArMjMyNSw3IEBAIHN0YXJ0OgogICAgICAgICB9CiAgICAgICAg
IGlmIChpc0FTQ0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2InKSkgewogICAgICAg
ICAgICAgaWYgKFVOTElLRUxZKCFpc0FTQ0lJQmluYXJ5RGlnaXQocGVlaygxKSkpKSB7Ci0gICAg
ICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8gYmluYXJ5IGRpZ2l0cyBhZnRlciAn
MGInIl9zOworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vIGJpbmFyeSBk
aWdpdHMgYWZ0ZXIgJzBiJyJfc3RyOwogICAgICAgICAgICAgICAgIHRva2VuID0gVU5URVJNSU5B
VEVEX0JJTkFSWV9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5F
cnJvcjsKICAgICAgICAgICAgIH0KQEAgLTIzNTMsNyArMjM1Myw3IEBAIHN0YXJ0OgogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0KGN1cnJlbnRD
b2RlUG9pbnQoKSkpKSB7Ci0gICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTm8g
c3BhY2UgYmV0d2VlbiBiaW5hcnkgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciJfczsKKyAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBzcGFjZSBiZXR3ZWVuIGJpbmFyeSBsaXRl
cmFsIGFuZCBpZGVudGlmaWVyIl9zdHI7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1J
TkFURURfQklOQVJZX05VTUJFUl9FUlJPUlRPSzsKICAgICAgICAgICAgICAgICBnb3RvIHJldHVy
bkVycm9yOwogICAgICAgICAgICAgfQpAQCAtMjM2NSw3ICsyMzY1LDcgQEAgc3RhcnQ6CiAKICAg
ICAgICAgaWYgKGlzQVNDSUlBbHBoYUNhc2VsZXNzRXF1YWwobV9jdXJyZW50LCAnbycpKSB7CiAg
ICAgICAgICAgICBpZiAoVU5MSUtFTFkoIWlzQVNDSUlPY3RhbERpZ2l0KHBlZWsoMSkpKSkgewot
ICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vIG9jdGFsIGRpZ2l0cyBhZnRl
ciAnMG8nIl9zOworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vIG9jdGFs
IGRpZ2l0cyBhZnRlciAnMG8nIl9zdHI7CiAgICAgICAgICAgICAgICAgdG9rZW4gPSBVTlRFUk1J
TkFURURfT0NUQUxfTlVNQkVSX0VSUk9SVE9LOwogICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJu
RXJyb3I7CiAgICAgICAgICAgICB9CkBAIC0yMzkzLDcgKzIzOTMsNyBAQCBzdGFydDoKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKFVOTElLRUxZKGlzSWRlbnRTdGFydChjdXJyZW50
Q29kZVBvaW50KCkpKSkgewotICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5v
IHNwYWNlIGJldHdlZW4gb2N0YWwgbGl0ZXJhbCBhbmQgaWRlbnRpZmllciJfczsKKyAgICAgICAg
ICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBzcGFjZSBiZXR3ZWVuIG9jdGFsIGxpdGVy
YWwgYW5kIGlkZW50aWZpZXIiX3N0cjsKICAgICAgICAgICAgICAgICB0b2tlbiA9IFVOVEVSTUlO
QVRFRF9PQ1RBTF9OVU1CRVJfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgZ290byByZXR1cm5F
cnJvcjsKICAgICAgICAgICAgIH0KQEAgLTI0MDQsMTQgKzI0MDQsMTQgQEAgc3RhcnQ6CiAgICAg
ICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFkobV9jdXJyZW50ID09ICdfJykpIHsKLSAgICAg
ICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk51bWVyaWMgbGl0ZXJhbHMgbWF5IG5vdCBiZWdp
biB3aXRoIDBfIl9zOworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiTnVtZXJpYyBs
aXRlcmFscyBtYXkgbm90IGJlZ2luIHdpdGggMF8iX3N0cjsKICAgICAgICAgICAgIHRva2VuID0g
VU5URVJNSU5BVEVEX09DVEFMX05VTUJFUl9FUlJPUlRPSzsKICAgICAgICAgICAgIGdvdG8gcmV0
dXJuRXJyb3I7CiAgICAgICAgIH0KIAogICAgICAgICByZWNvcmQ4KCcwJyk7CiAgICAgICAgIGlm
IChVTkxJS0VMWShzdHJpY3RNb2RlICYmIGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpKSkgewotICAg
ICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiRGVjaW1hbCBpbnRlZ2VyIGxpdGVyYWxzIHdp
dGggYSBsZWFkaW5nIHplcm8gYXJlIGZvcmJpZGRlbiBpbiBzdHJpY3QgbW9kZSJfczsKKyAgICAg
ICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkRlY2ltYWwgaW50ZWdlciBsaXRlcmFscyB3aXRo
IGEgbGVhZGluZyB6ZXJvIGFyZSBmb3JiaWRkZW4gaW4gc3RyaWN0IG1vZGUiX3N0cjsKICAgICAg
ICAgICAgIHRva2VuID0gVU5URVJNSU5BVEVEX09DVEFMX05VTUJFUl9FUlJPUlRPSzsKICAgICAg
ICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7CiAgICAgICAgIH0KQEAgLTI0NDEsMTQgKzI0NDEsMTQg
QEAgc3RhcnQ6CiAgICAgICAgICAgICAgICAgaWYgKG1fY3VycmVudCA9PSAnLicpIHsKICAgICAg
ICAgICAgICAgICAgICAgc2hpZnQoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZ
KGlzQVNDSUlEaWdpdChtX2N1cnJlbnQpICYmICFwYXJzZU51bWJlckFmdGVyRGVjaW1hbFBvaW50
KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJOb24t
bnVtYmVyIGZvdW5kIGFmdGVyIGRlY2ltYWwgcG9pbnQiX3M7CisgICAgICAgICAgICAgICAgICAg
ICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJOb24tbnVtYmVyIGZvdW5kIGFmdGVyIGRlY2ltYWwg
cG9pbnQiX3N0cjsKICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuID0gYXRFbmQoKSA/IFVO
VEVSTUlOQVRFRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0sgOiBJTlZBTElEX05VTUVSSUNfTElU
RVJBTF9FUlJPUlRPSzsKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gcmV0dXJuRXJyb3I7
CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgdG9rZW4gPSBET1VC
TEU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShpc0FT
Q0lJQWxwaGFDYXNlbGVzc0VxdWFsKG1fY3VycmVudCwgJ2UnKSAmJiAhcGFyc2VOdW1iZXJBZnRl
ckV4cG9uZW50SW5kaWNhdG9yKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIk5vbi1udW1iZXIgZm91bmQgYWZ0ZXIgZXhwb25lbnQgaW5kaWNhdG9yIl9zOwor
ICAgICAgICAgICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJOb24tbnVtYmVyIGZvdW5k
IGFmdGVyIGV4cG9uZW50IGluZGljYXRvciJfc3RyOwogICAgICAgICAgICAgICAgICAgICB0b2tl
biA9IGF0RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5W
QUxJRF9OVU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8g
cmV0dXJuRXJyb3I7CiAgICAgICAgICAgICAgICAgfQpAQCAtMjQ2NSw3ICsyNDY1LDcgQEAgc3Rh
cnQ6CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoVU5MSUtFTFkoaXNJZGVudFN0YXJ0KGN1cnJl
bnRDb2RlUG9pbnQoKSkpKSB7Ci0gICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJObyBp
ZGVudGlmaWVycyBhbGxvd2VkIGRpcmVjdGx5IGFmdGVyIG51bWVyaWMgbGl0ZXJhbCJfczsKKyAg
ICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIk5vIGlkZW50aWZpZXJzIGFsbG93ZWQgZGly
ZWN0bHkgYWZ0ZXIgbnVtZXJpYyBsaXRlcmFsIl9zdHI7CiAgICAgICAgICAgICB0b2tlbiA9IGF0
RW5kKCkgPyBVTlRFUk1JTkFURURfTlVNRVJJQ19MSVRFUkFMX0VSUk9SVE9LIDogSU5WQUxJRF9O
VU1FUklDX0xJVEVSQUxfRVJST1JUT0s7CiAgICAgICAgICAgICBnb3RvIHJldHVybkVycm9yOwog
ICAgICAgICB9CkBAIC0yNTMyLDcgKzI1MzIsNyBAQCBzdGFydDoKICAgICAgICAgZ290byBpbnZh
bGlkQ2hhcmFjdGVyOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkludGVybmFsIEVycm9yIl9z
OworICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJJbnRlcm5hbCBFcnJvciJfc3RyOwogICAg
ICAgICB0b2tlbiA9IEVSUk9SVE9LOwogICAgICAgICBnb3RvIHJldHVybkVycm9yOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA1NTI2ZjVjOWExMjUw
MDgxMzNlOTE4ZTI2ZWYzMjQ3YTg1ZGUyMzg5Li5kZTVkMzUzMDRkOTUwMTJjMzg5OTE4YThkNDYz
N2Q1ZWRmNzlmZWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0yNTcsNyArMjU3LDcgQEAgRXhwZWN0ZWQ8dHlwZW5hbWUgUGFyc2VyPExleGVyVHlwZT46OlBh
cnNlSW5uZXJSZXN1bHQsIFN0cmluZz4gUGFyc2VyPExleGVyVHlwZT4KICAgICAgICAgICAgIC8v
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjE2MzMKICAgICAgICAg
ICAgIGlmIChVTkxJS0VMWSghbWF0Y2goQVJST1dGVU5DVElPTikpKSB7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKCJQYXJzZXIgZXJyb3IiX3MpOworICAgICAgICAgICAgICAgIHJldHVybiBtYWtlVW5l
eHBlY3RlZCgiUGFyc2VyIGVycm9yIl9zdHIpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAg
bmV4dCgpOwogICAgICAgICAgICAgaXNBcnJvd0Z1bmN0aW9uQm9keUV4cHJlc3Npb24gPSAhbWF0
Y2goT1BFTkJSQUNFKTsKQEAgLTI5NCw3ICsyOTQsNyBAQCBFeHBlY3RlZDx0eXBlbmFtZSBQYXJz
ZXI8TGV4ZXJUeXBlPjo6UGFyc2VJbm5lclJlc3VsdCwgU3RyaW5nPiBQYXJzZXI8TGV4ZXJUeXBl
PgogCiAgICAgYm9vbCB2YWxpZEVuZGluZyA9IGNvbnN1bWUoRU9GVE9LKTsKICAgICBpZiAoIXNv
dXJjZUVsZW1lbnRzIHx8ICF2YWxpZEVuZGluZykKLSAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVj
dGVkKGhhc0Vycm9yKCkgPyBtX2Vycm9yTWVzc2FnZSA6ICJQYXJzZXIgZXJyb3IiX3MpOworICAg
ICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoaGFzRXJyb3IoKSA/IG1fZXJyb3JNZXNzYWdlIDog
IlBhcnNlciBlcnJvciJfc3RyKTsKIAogICAgIGlmICghbV9sZXhlci0+aXNSZXBhcnNpbmdGdW5j
dGlvbigpICYmIG1fc2VlblByaXZhdGVOYW1lVXNlSW5Ob25SZXBhcnNpbmdGdW5jdGlvbk1vZGUp
IHsKICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5oCmluZGV4IDMzOGZjMGIyYTcxYWVkNzYyZWViOTExMTQ2YjdmZGFlNDExNjBlYjcu
LmYyYjRiNGU0NmI3ZTNhOTJhYzRjODhjNzk0NzQ0YTJmMGQ4ZmUzMTggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtMTYxNSw3ICsxNjE1LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghbWVzc2FnZS5pc0VtcHR5KCksICJBdHRlbXB0ZWQg
dG8gc2V0IHRoZSBlbXB0eSBzdHJpbmcgYXMgYW4gZXJyb3IgbWVzc2FnZS4gTGlrZWx5IGNhdXNl
ZCBieSBpbnZhbGlkIFVURjggdXNlZCB3aGVuIGNyZWF0aW5nIHRoZSBtZXNzYWdlLiIpOwogICAg
ICAgICBtX2Vycm9yTWVzc2FnZSA9IG1lc3NhZ2U7CiAgICAgICAgIGlmIChtX2Vycm9yTWVzc2Fn
ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX2Vycm9yTWVzc2FnZSA9ICJVbnBhcnNlYWJsZSBz
Y3JpcHQiX3M7CisgICAgICAgICAgICBtX2Vycm9yTWVzc2FnZSA9ICJVbnBhcnNlYWJsZSBzY3Jp
cHQiX3N0cjsKICAgICB9CiAgICAgCiAgICAgTkVWRVJfSU5MSU5FIHZvaWQgbG9nRXJyb3IoYm9v
bCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1v
ZHVsZVJlY29yZC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BYnN0cmFjdE1v
ZHVsZVJlY29yZC5jcHAKaW5kZXggNDI1YjhmYWQxMzgwZTczYzY4ZTgyMTZkZTQ1YmVkNDZkYmFh
ZGU1OC4uY2VhMDdkNjU0YmNmMWM0ZGQzODI2NTkxODYwYTJkMmNjNzcwNjdhMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWJzdHJhY3RNb2R1bGVSZWNvcmQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fic3RyYWN0TW9kdWxlUmVjb3Jk
LmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEFic3RyYWN0TW9kdWxlUmVjb3JkOjpmaW5pc2hD
cmVhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0pCiAgICAgSlNNYXAq
IG1hcCA9IEpTTWFwOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwgZ2xvYmFsT2JqZWN0LT5tYXBT
dHJ1Y3R1cmUoKSk7CiAgICAgc2NvcGUucmVsZWFzZUFzc2VydE5vRXhjZXB0aW9uKCk7CiAgICAg
bV9kZXBlbmRlbmNpZXNNYXAuc2V0KHZtLCB0aGlzLCBtYXApOwotICAgIHB1dERpcmVjdCh2bSwg
SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgImRlcGVuZGVuY2llc01hcCJfcyksIG1fZGVwZW5k
ZW5jaWVzTWFwLmdldCgpKTsKKyAgICBwdXREaXJlY3Qodm0sIElkZW50aWZpZXI6OmZyb21TdHJp
bmcodm0sICJkZXBlbmRlbmNpZXNNYXAiX3N0ciksIG1fZGVwZW5kZW5jaWVzTWFwLmdldCgpKTsK
IH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMDg4NmY5M2Y2NWNmNWM2
MTFjNTNiNGQ4YjUyZDY0NWMzZDUzMWViZi4uZDFlMDgyZTM4ODRkMzAzZDIyNmIzN2MwOTEyZmQw
ZjZjZWQwZTc0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlDb25zdHJ1Y3Rvci5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgSlNBcnJheSogY29uc3RydWN0QXJy
YXlXaXRoU2l6ZVF1aXJrKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEFycmF5QWxsb2Nh
dGkKICAgICAKICAgICB1aW50MzJfdCBuID0gbGVuZ3RoLnRvVUludDMyKGdsb2JhbE9iamVjdCk7
CiAgICAgaWYgKG4gIT0gbGVuZ3RoLnRvTnVtYmVyKGdsb2JhbE9iamVjdCkpIHsKLSAgICAgICAg
dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsICJBcnJheSBzaXplIGlzIG5vdCBhIHNtYWxsIGVub3VnaCBwb3NpdGl2ZSBpbnRl
Z2VyLiJfcykpOworICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwg
ZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zdHIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAgICAgfQogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgY29uc3RydWN0RW1wdHlBcnJh
eShnbG9iYWxPYmplY3QsIHByb2ZpbGUsIG4sIG5ld1RhcmdldCkpOwpAQCAtMTA1LDcgKzEwNSw3
IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNBcnJheVNsb3dJbmxpbmUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJveHlPCiAKICAgICB3aGlsZSAodHJ1ZSkgewogICAgICAg
ICBpZiAocHJveHktPmlzUmV2b2tlZCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiQXJyYXkuaXNBcnJheSBjYW5ub3QgYmUgY2FsbGVkIG9uIGEg
UHJveHkgdGhhdCBoYXMgYmVlbiByZXZva2VkIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcnJheS5pc0FycmF5IGNhbm5vdCBiZSBjYWxsZWQg
b24gYSBQcm94eSB0aGF0IGhhcyBiZWVuIHJldm9rZWQiX3N0cik7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgSlNPYmplY3QqIGFyZ3VtZW50ID0gcHJveHkt
PnRhcmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJy
YXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90
b3R5cGUuY3BwCmluZGV4IDE4MTVlMTQ3Yjk2NWVjYzYyYTJlZTNiZTg4ZDk0OGEwYzBiNGYwZWQu
LjhmMWY2MDJiM2NjNDhhMzE0NTgwMmY5MmY5NzZmOTNhNWJlZDlhZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTE3MSw3ICsx
NzEsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHNldExlbmd0aChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIEpTT2JqZQogICAgIHN0YXRpYyBjb25zdGV4cHIgYm9v
bCB0aHJvd0V4Y2VwdGlvbiA9IHRydWU7CiAgICAgaWYgKExJS0VMWShpc0pTQXJyYXkob2JqKSkp
IHsKICAgICAgICAgaWYgKFVOTElLRUxZKHZhbHVlID4gVUlOVDMyX01BWCkpIHsKLSAgICAgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcnJheSBs
ZW5ndGgiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnZhbGlkIGFycmF5IGxlbmd0aCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgfQogICAgICAgICBzY29wZS5yZWxlYXNlKCk7CkBAIC0yNzQsNyArMjc0LDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzcGVj
aWVzUmVzdWx0LnNlY29uZCk7CiAKICAgICBpZiAobGVuZ3RoID4gc3RkOjpudW1lcmljX2xpbWl0
czx1bnNpZ25lZD46Om1heCgpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiQXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50
ZWdlci4iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkFycmF5IHNpemUgaXMgbm90IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zdHIp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNjg1LDcgKzY4NSw3IEBAIHN0YXRp
YyBKU1N0cmluZyogdG9Mb2NhbGVTdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB2YWx1ZSwgSlNWCiAKICAgICBhdXRvIGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0s
IHRvTG9jYWxlU3RyaW5nTWV0aG9kKTsKICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0
YTo6VHlwZTo6Tm9uZSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAidG9Mb2NhbGVTdHJpbmcgaXMgbm90IGNhbGxhYmxlIl9zKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvTG9jYWxlU3RyaW5nIGlzIG5vdCBjYWxs
YWJsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTk3MSw3ICs5NzEs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNQdXNoLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbAogICAgIHVuc2lnbmVkIGFyZ0NvdW50ID0gY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCk7CiAKICAgICBpZiAoVU5MSUtFTFkobGVuZ3RoICsgYXJn
Q291bnQgPiBzdGF0aWNfY2FzdDx1aW50NjRfdD4obWF4U2FmZUludGVnZXIoKSkpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicHVzaCBjYW5u
b3QgcHJvZHVjZSBhbiBhcnJheSBvZiBsZW5ndGggbGFyZ2VyIHRoYW4gKDIgKiogNTMpIC0gMSJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJwdXNoIGNhbm5vdCBwcm9kdWNlIGFuIGFycmF5IG9mIGxlbmd0aCBsYXJnZXIgdGhhbiAoMiAq
KiA1MykgLSAxIl9zdHIpOwogCiAgICAgZm9yICh1bnNpZ25lZCBuID0gMDsgbiA8IGFyZ0NvdW50
OyBuKyspIHsKICAgICAgICAgdGhpc09iai0+cHV0QnlJbmRleElubGluZShnbG9iYWxPYmplY3Qs
IGxlbmd0aCArIG4sIGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQobiksIHRydWUpOwpAQCAt
MTIyNCw3ICsxMjI0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGFycmF5UHJvdG9GdW5j
U3BsaWNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2EKICAgICB9CiAgICAgdW5z
aWduZWQgaXRlbUNvdW50ID0gc3RkOjptYXg8aW50PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQo
KSAtIDIsIDApOwogICAgIGlmIChVTkxJS0VMWShsZW5ndGggLSBhY3R1YWxEZWxldGVDb3VudCAr
IGl0ZW1Db3VudCA+IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtYXhTYWZlSW50ZWdlcigpKSkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTcGxp
Y2UgY2Fubm90IHByb2R1Y2UgYW4gYXJyYXkgb2YgbGVuZ3RoIGxhcmdlciB0aGFuICgyICoqIDUz
KSAtIDEiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiU3BsaWNlIGNhbm5vdCBwcm9kdWNlIGFuIGFycmF5IG9mIGxlbmd0aCBsYXJnZXIg
dGhhbiAoMiAqKiA1MykgLSAxIl9zdHIpOwogCiAgICAgc3RkOjpwYWlyPFNwZWNpZXNDb25zdHJ1
Y3RSZXN1bHQsIEpTT2JqZWN0Kj4gc3BlY2llc1Jlc3VsdCA9IHNwZWNpZXNDb25zdHJ1Y3RBcnJh
eShnbG9iYWxPYmplY3QsIHRoaXNPYmosIGFjdHVhbERlbGV0ZUNvdW50KTsKICAgICBFWENFUFRJ
T05fQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0g
U3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSk7CkBAIC0xMjk0LDcgKzEyOTQsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oYXJyYXlQcm90b0Z1bmNVblNoaWZ0LCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIHVuc2lnbmVkIG5yQXJncyA9IGNhbGxGcmFt
ZS0+YXJndW1lbnRDb3VudCgpOwogICAgIGlmIChuckFyZ3MpIHsKICAgICAgICAgaWYgKFVOTElL
RUxZKGxlbmd0aCArIG5yQXJncyA+IHN0YXRpY19jYXN0PHVpbnQ2NF90PihtYXhTYWZlSW50ZWdl
cigpKSkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAidW5zaGlmdCBjYW5ub3QgcHJvZHVjZSBhbiBhcnJheSBvZiBsZW5ndGggbGFyZ2Vy
IHRoYW4gKDIgKiogNTMpIC0gMSJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5zaGlmdCBjYW5ub3QgcHJvZHVjZSBhbiBhcnJh
eSBvZiBsZW5ndGggbGFyZ2VyIHRoYW4gKDIgKiogNTMpIC0gMSJfc3RyKTsKICAgICAgICAgdW5z
aGlmdDxKU0FycmF5OjpTaGlmdENvdW50Rm9yU2hpZnQ+KGdsb2JhbE9iamVjdCwgdGhpc09iaiwg
MCwgMCwgbnJBcmdzLCBsZW5ndGgpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBlbmNvZGVkSlNWYWx1ZSgpKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRleCBmN2Zh
YzU4YmM0OThiZTBjZDJjYTQ0ZDVlM2ZhMmJkMDYxMWNmNjA5Li5jMTA2YTY2MGMyMDhmZjkzZWJj
YTZmODlhYzFjNTYwNjkwYjY4NmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0FzeW5jRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTU4LDcgKzU4
LDcgQEAgQXN5bmNGdW5jdGlvbkNvbnN0cnVjdG9yOjpBc3luY0Z1bmN0aW9uQ29uc3RydWN0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIAogdm9pZCBBc3luY0Z1bmN0aW9uQ29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgQXN5bmNGdW5jdGlvblByb3RvdHlwZSogcHJv
dG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiQXN5bmNGdW5jdGlv
biJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsK
KyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgIkFzeW5jRnVuY3Rpb24iX3N0ciwgUHJv
cGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBw
cm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5lcmF0b3JGdW5jdGlv
bkNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FzeW5jR2Vu
ZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggMTJjOWFiZTQ1NzZjOWViOWUzYWI0
N2I4ODJiMmRiNjZjNmUyMWQ3NS4uYWUwNDA0NWZhZGY4MmQ4MzY5MzhkMWZlOTA1ODE1NzQyYjg0
ZTJlNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXN5bmNHZW5l
cmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Bc3luY0dlbmVyYXRvckZ1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC01OCw3ICs1
OCw3IEBAIEFzeW5jR2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3Rvcjo6QXN5bmNHZW5lcmF0b3JG
dW5jdGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgU3RyCiAKIHZvaWQgQXN5bmNHZW5lcmF0b3JGdW5j
dGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEFzeW5jR2VuZXJhdG9yRnVu
Y3Rpb25Qcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgMSwgIkFzeW5jR2VuZXJhdG9yRnVuY3Rpb24iX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IDEsICJBc3luY0dlbmVyYXRvckZ1bmN0aW9uIl9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0F0b21pY3NPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXRvbWljc09iamVjdC5jcHAKaW5kZXggOWVlNDVkZjQ3M2E0OTE1NzVkOTU1YmNm
Nzk5MGVmZDA1YjgwYWQ4Ni4uNzFjMDcwODQ1MTQ3YzAxMjRiODAyNjRiMzBmYjRhY2NlYWMyZDIz
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXRvbWljc09iamVjdC5j
cHAKQEAgLTEyMiw3ICsxMjIsNyBAQCBzdGF0aWMgdW5zaWduZWQgdmFsaWRhdGVBdG9taWNBY2Nl
c3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0mIHZtLCBKU0FycgogICAgIH0KIAog
ICAgIGlmIChhY2Nlc3NJbmRleCA+PSB0eXBlZEFycmF5Vmlldy0+bGVuZ3RoKCkpIHsKLSAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBY2Nlc3MgaW5kZXggb3V0
IG9mIGJvdW5kcyBmb3IgYXRvbWljIGFjY2Vzcy4iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFjY2VzcyBpbmRleCBvdXQgb2YgYm91bmRzIGZvciBh
dG9taWMgYWNjZXNzLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIApAQCAt
MTQ1LDcgKzE0NSw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogdmFsaWRhdGVJbnRlZ2Vy
VHlwZWRBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgICAgIGNhc2UgQmln
SW50NjRBcnJheVR5cGU6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUeXBlZCBhcnJh
eSBhcmd1bWVudCBtdXN0IGJlIGFuIEludDMyQXJyYXkgb3IgQmlnSW50NjRBcnJheS4iX3MpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkIGFy
cmF5IGFyZ3VtZW50IG11c3QgYmUgYW4gSW50MzJBcnJheSBvciBCaWdJbnQ2NEFycmF5LiJfc3Ry
KTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAt
MTYwLDcgKzE2MCw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogdmFsaWRhdGVJbnRlZ2Vy
VHlwZWRBcnJheShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0CiAgICAgICAgIGNhc2UgQmln
VWludDY0QXJyYXlUeXBlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVHlwZWQgYXJy
YXkgYXJndW1lbnQgbXVzdCBiZSBhbiBJbnQ4QXJyYXksIEludDE2QXJyYXksIEludDMyQXJyYXks
IFVpbnQ4QXJyYXksIFVpbnQxNkFycmF5LCBVaW50MzJBcnJheSwgQmlnSW50NjRBcnJheSwgb3Ig
QmlnVWludDY0QXJyYXkuIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUeXBlZCBhcnJheSBhcmd1bWVudCBtdXN0IGJlIGFuIEludDhBcnJheSwg
SW50MTZBcnJheSwgSW50MzJBcnJheSwgVWludDhBcnJheSwgVWludDE2QXJyYXksIFVpbnQzMkFy
cmF5LCBCaWdJbnQ2NEFycmF5LCBvciBCaWdVaW50NjRBcnJheS4iX3N0cik7CiAgICAgICAgICAg
ICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgfQpAQCAtNDQyLDcgKzQ0Miw3IEBAIEpTVmFs
dWUgYXRvbWljc1dhaXRJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQXJyYXlU
eXBlKiB0eXBlZEFycmF5LCB1CiAgICAgICAgIHRpbWVvdXQgPSBzdGQ6Om1heChTZWNvbmRzOjpm
cm9tTWlsbGlzZWNvbmRzKHRpbWVvdXRJbk1pbGxpc2Vjb25kcyksIDBfcyk7CiAKICAgICBpZiAo
IXZtLm1fdHlwZWRBcnJheUNvbnRyb2xsZXItPmlzQXRvbWljc1dhaXRBbGxvd2VkT25DdXJyZW50
VGhyZWFkKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkF0b21pY3Mud2FpdCBjYW5ub3QgYmUgY2FsbGVkIGZyb20gdGhlIGN1cnJlbnQgdGhyZWFkLiJf
cyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBdG9taWNz
LndhaXQgY2Fubm90IGJlIGNhbGxlZCBmcm9tIHRoZSBjdXJyZW50IHRocmVhZC4iX3N0cik7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC00NzUsNyArNDc1LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKGF0b21pY3NGdW5jV2FpdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmEKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgaWYgKCF0eXBlZEFycmF5Vmlldy0+aXNTaGFyZWQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkIGFycmF5IGZvciB3YWl0L25v
dGlmeSBtdXN0IHdyYXAgYSBTaGFyZWRBcnJheUJ1ZmZlci4iX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVHlwZWQgYXJyYXkgZm9yIHdh
aXQvbm90aWZ5IG11c3Qgd3JhcCBhIFNoYXJlZEFycmF5QnVmZmVyLiJfc3RyKTsKIAogICAgIHVu
c2lnbmVkIGFjY2Vzc0luZGV4ID0gdmFsaWRhdGVBdG9taWNBY2Nlc3MoZ2xvYmFsT2JqZWN0LCB2
bSwgdHlwZWRBcnJheVZpZXcsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9CaWdJbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNWI4NWQ5YjFiNzU0NWY2NGZmNWEy
YmZhYTFjZThmNTUwNjgwN2U5ZC4uN2ZiMTg0ZDE4N2U1YmJjOGJmM2JkYWVmMjhlZmI0ZTdiNjgw
YThlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50Q29u
c3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludENv
bnN0cnVjdG9yLmNwcApAQCAtNjQsNyArNjQsNyBAQCBCaWdJbnRDb25zdHJ1Y3Rvcjo6QmlnSW50
Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIAogdm9pZCBCaWdJbnRD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBCaWdJbnRQcm90b3R5cGUqIGJpZ0lu
dFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgIkJpZ0ludCJf
cywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgIkJpZ0ludCJfc3RyLCBQcm9wZXJ0eUFkZGl0
aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIEFTU0VSVChpbmhlcml0
cyh2bSwgaW5mbygpKSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBiaWdJbnRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5KTsKQEAgLTkyLDcgKzkyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGNhbGxCaWdJbnRDb25zdHJ1Y3RvciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEMKICAgICBpZiAocHJpbWl0aXZlLmlzRG91YmxlKCkpIHsKICAgICAgICAgZG91YmxlIG51
bWJlciA9IHByaW1pdGl2ZS5hc0RvdWJsZSgpOwogICAgICAgICBpZiAoIWlzSW50ZWdlcihudW1i
ZXIpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBhbiBpbnRlZ2VyIl9zKSk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTm90IGFuIGludGVnZXIiX3N0cikpOwogICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6bWFr
ZUhlYXBCaWdJbnRPckJpZ0ludDMyKGdsb2JhbE9iamVjdCwgcHJpbWl0aXZlLmFzRG91YmxlKCkp
KSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9C
aWdJbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQmlnSW50
UHJvdG90eXBlLmNwcAppbmRleCA5NTIyMDlkMzcxNjU1YzYwOThkYjZiZWU3YjViM2U3NTZmNmY5
YmRmLi45ODJlYzQwYmZiMGEyYTEwY2YxYzM5YWUyM2VlOGNlNTFiMTkwOWIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9CaWdJbnRQcm90b3R5cGUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0JpZ0ludFByb3RvdHlwZS5jcHAKQEAgLTk5
LDcgKzk5LDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNCaWdJbnQqIHRvVGhpc0JpZ0ludFZh
bHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEoKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIndGhpcycgdmFsdWUgbXVz
dCBiZSBhIEJpZ0ludCBvciBCaWdJbnRPYmplY3QiX3MpOworICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICIndGhpcycgdmFsdWUgbXVzdCBiZSBhIEJpZ0ludCBvciBCaWdJ
bnRPYmplY3QiX3N0cik7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDFlZWVlMmNi
OWU0NmM0NGYxOWM4ZDRmMDJiNjUxMDdiMzNkNGE0MTcuLmE0OTkwMzU1NDMzYmVhMjU1NmU5Mzlh
NDRjMTdjMTBhYjNlNTEwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQ29tbW9uU2xvd1BhdGhzLmNwcApAQCAtMzc2LDcgKzM3Niw3IEBAIEpTQ19ERUZJTkVfQ09N
TU9OX1NMT1dfUEFUSChzbG93X3BhdGhfY2hlY2tfdGR6KQogICAgIEJFR0lOKCk7CiAgICAgYXV0
byBieXRlY29kZSA9IHBjLT5hczxPcENoZWNrVGR6PigpOwogICAgIGlmIChieXRlY29kZS5tX3Rh
cmdldFZpcnR1YWxSZWdpc3RlciA9PSBjb2RlQmxvY2stPnRoaXNSZWdpc3RlcigpKQotICAgICAg
ICBUSFJPVyhjcmVhdGVSZWZlcmVuY2VFcnJvcihnbG9iYWxPYmplY3QsICInc3VwZXIoKScgbXVz
dCBiZSBjYWxsZWQgaW4gZGVyaXZlZCBjb25zdHJ1Y3RvciBiZWZvcmUgYWNjZXNzaW5nIHx0aGlz
fCBvciByZXR1cm5pbmcgbm9uLW9iamVjdC4iX3MpKTsKKyAgICAgICAgVEhST1coY3JlYXRlUmVm
ZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiJ3N1cGVyKCknIG11c3QgYmUgY2FsbGVkIGluIGRl
cml2ZWQgY29uc3RydWN0b3IgYmVmb3JlIGFjY2Vzc2luZyB8dGhpc3wgb3IgcmV0dXJuaW5nIG5v
bi1vYmplY3QuIl9zdHIpKTsKICAgICBlbHNlCiAgICAgICAgIFRIUk9XKGNyZWF0ZVREWkVycm9y
KGdsb2JhbE9iamVjdCkpOwogfQpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAgSlNDX0RFRklORV9DT01N
T05fU0xPV19QQVRIKHNsb3dfcGF0aF9lbnVtZXJhdG9yX2hhc19vd25fcHJvcGVydHkpCiBKU0Nf
REVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xvd19wYXRoX3Byb2ZpbGVfdHlwZV9jbGVhcl9sb2cp
CiB7CiAgICAgQkVHSU4oKTsKLSAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0Vu
dHJpZXModm0sICJMTEludCBsb2cgZnVsbC4iX3MpOworICAgIHZtLnR5cGVQcm9maWxlckxvZygp
LT5wcm9jZXNzTG9nRW50cmllcyh2bSwgIkxMSW50IGxvZyBmdWxsLiJfc3RyKTsKICAgICBFTkQo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29s
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50
LmNwcAppbmRleCAxMTM5OWViMDliMmJjYzg1OWM3ZWQzNmE5Y2VlNGQyMzNjOWNkNmRkLi5lOGUw
NmIxMTFiM2VmZjdmNGUyZGVlOTA4NTc3Y2U3ZTNkZDlmNmJhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlQ2xpZW50LmNwcApAQCAtNjMsNTIgKzYzLDUyIEBA
IHN0YXRpYyB2b2lkIGFwcGVuZE1lc3NhZ2VQcmVmaXgoU3RyaW5nQnVpbGRlciYgYnVpbGRlciwg
TWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lCiAgICAgICAgIC8vIERlZmF1bHQsIG5vIG5lZWQgdG8g
YmUgbW9yZSBzcGVjaWZpYy4KICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlU291cmNl
OjpYTUw6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJYTUwiX3M7CisgICAgICAgIHNvdXJjZVN0
cmluZyA9ICJYTUwiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlU291cmNl
OjpKUzoKLSAgICAgICAgc291cmNlU3RyaW5nID0gIkpTIl9zOworICAgICAgICBzb3VyY2VTdHJp
bmcgPSAiSlMiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlU291cmNlOjpO
ZXR3b3JrOgotICAgICAgICBzb3VyY2VTdHJpbmcgPSAiTkVUV09SSyJfczsKKyAgICAgICAgc291
cmNlU3RyaW5nID0gIk5FVFdPUksiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNz
YWdlU291cmNlOjpTdG9yYWdlOgotICAgICAgICBzb3VyY2VTdHJpbmcgPSAiU1RPUkFHRSJfczsK
KyAgICAgICAgc291cmNlU3RyaW5nID0gIlNUT1JBR0UiX3N0cjsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBNZXNzYWdlU291cmNlOjpBcHBDYWNoZToKLSAgICAgICAgc291cmNlU3RyaW5nID0g
IkFQUENBQ0hFIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiQVBQQ0FDSEUiX3N0cjsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlU291cmNlOjpSZW5kZXJpbmc6Ci0gICAgICAg
IHNvdXJjZVN0cmluZyA9ICJSRU5ERVJJTkciX3M7CisgICAgICAgIHNvdXJjZVN0cmluZyA9ICJS
RU5ERVJJTkciX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlU291cmNlOjpD
U1M6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJDU1MiX3M7CisgICAgICAgIHNvdXJjZVN0cmlu
ZyA9ICJDU1MiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlU291cmNlOjpT
ZWN1cml0eToKLSAgICAgICAgc291cmNlU3RyaW5nID0gIlNFQ1VSSVRZIl9zOworICAgICAgICBz
b3VyY2VTdHJpbmcgPSAiU0VDVVJJVFkiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBN
ZXNzYWdlU291cmNlOjpDb250ZW50QmxvY2tlcjoKLSAgICAgICAgc291cmNlU3RyaW5nID0gIkNP
TlRFTlRCTE9DS0VSIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiQ09OVEVOVEJMT0NLRVIi
X3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlU291cmNlOjpNZWRpYToKLSAg
ICAgICAgc291cmNlU3RyaW5nID0gIk1FRElBIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAi
TUVESUEiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlU291cmNlOjpNZWRp
YVNvdXJjZToKLSAgICAgICAgc291cmNlU3RyaW5nID0gIk1FRElBU09VUkNFIl9zOworICAgICAg
ICBzb3VyY2VTdHJpbmcgPSAiTUVESUFTT1VSQ0UiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBNZXNzYWdlU291cmNlOjpXZWJSVEM6Ci0gICAgICAgIHNvdXJjZVN0cmluZyA9ICJXRUJS
VEMiX3M7CisgICAgICAgIHNvdXJjZVN0cmluZyA9ICJXRUJSVEMiX3N0cjsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNZXNzYWdlU291cmNlOjpJVFBEZWJ1ZzoKLSAgICAgICAgc291cmNlU3Ry
aW5nID0gIklUUERFQlVHIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiSVRQREVCVUciX3N0
cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlU291cmNlOjpQcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudDoKLSAgICAgICAgc291cmNlU3RyaW5nID0gIlBSSVZBVEVDTElDS01FQVNVUkVN
RU5UIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiUFJJVkFURUNMSUNLTUVBU1VSRU1FTlQi
X3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlU291cmNlOjpQYXltZW50UmVx
dWVzdDoKLSAgICAgICAgc291cmNlU3RyaW5nID0gIlBBWU1FTlRSRVFVRVNUIl9zOworICAgICAg
ICBzb3VyY2VTdHJpbmcgPSAiUEFZTUVOVFJFUVVFU1QiX3N0cjsKICAgICAgICAgYnJlYWs7CiAg
ICAgY2FzZSBNZXNzYWdlU291cmNlOjpPdGhlcjoKLSAgICAgICAgc291cmNlU3RyaW5nID0gIk9U
SEVSIl9zOworICAgICAgICBzb3VyY2VTdHJpbmcgPSAiT1RIRVIiX3N0cjsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCkBAIC0xMTgsNDMgKzExOCw0MyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNZXNz
YWdlUHJlZml4KFN0cmluZ0J1aWxkZXImIGJ1aWxkZXIsIE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZQogICAgICAgICAvLyBEZWZhdWx0LCBubyBuZWVkIHRvIGJlIG1vcmUgc3BlY2lmaWMuCiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OkNsZWFyOgotICAgICAgICB0eXBlU3Ry
aW5nID0gIkNMRUFSIl9zOworICAgICAgICB0eXBlU3RyaW5nID0gIkNMRUFSIl9zdHI7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OkRpcjoKLSAgICAgICAgdHlwZVN0cmlu
ZyA9ICJESVIiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiRElSIl9zdHI7CiAgICAgICAgIGJy
ZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OkRpclhNTDoKLSAgICAgICAgdHlwZVN0cmluZyA9
ICJESVJYTUwiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiRElSWE1MIl9zdHI7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlRhYmxlOgotICAgICAgICB0eXBlU3RyaW5n
ID0gIlRBQkxFIl9zOworICAgICAgICB0eXBlU3RyaW5nID0gIlRBQkxFIl9zdHI7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlRyYWNlOgotICAgICAgICB0eXBlU3RyaW5n
ID0gIlRSQUNFIl9zOworICAgICAgICB0eXBlU3RyaW5nID0gIlRSQUNFIl9zdHI7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0YXJ0R3JvdXA6Ci0gICAgICAgIHR5cGVT
dHJpbmcgPSAiU1RBUlRHUk9VUCJfczsKKyAgICAgICAgdHlwZVN0cmluZyA9ICJTVEFSVEdST1VQ
Il9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlN0YXJ0R3JvdXBD
b2xsYXBzZWQ6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiU1RBUlRHUk9VUENPTExBUFNFRCJfczsK
KyAgICAgICAgdHlwZVN0cmluZyA9ICJTVEFSVEdST1VQQ09MTEFQU0VEIl9zdHI7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OkVuZEdyb3VwOgotICAgICAgICB0eXBlU3Ry
aW5nID0gIkVOREdST1VQIl9zOworICAgICAgICB0eXBlU3RyaW5nID0gIkVOREdST1VQIl9zdHI7
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OkFzc2VydDoKLSAgICAgICAg
dHlwZVN0cmluZyA9ICJBU1NFUlQiX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiQVNTRVJUIl9z
dHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlRpbWluZzoKLSAgICAg
ICAgdHlwZVN0cmluZyA9ICJUSU1JTkciX3M7CisgICAgICAgIHR5cGVTdHJpbmcgPSAiVElNSU5H
Il9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlByb2ZpbGU6Ci0g
ICAgICAgIHR5cGVTdHJpbmcgPSAiUFJPRklMRSJfczsKKyAgICAgICAgdHlwZVN0cmluZyA9ICJQ
Uk9GSUxFIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlByb2Zp
bGVFbmQ6Ci0gICAgICAgIHR5cGVTdHJpbmcgPSAiUFJPRklMRUVORCJfczsKKyAgICAgICAgdHlw
ZVN0cmluZyA9ICJQUk9GSUxFRU5EIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVz
c2FnZVR5cGU6OkltYWdlOgotICAgICAgICB0eXBlU3RyaW5nID0gIklNQUdFIl9zOworICAgICAg
ICB0eXBlU3RyaW5nID0gIklNQUdFIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApAQCAt
MTYzLDE5ICsxNjMsMTkgQEAgc3RhdGljIHZvaWQgYXBwZW5kTWVzc2FnZVByZWZpeChTdHJpbmdC
dWlsZGVyJiBidWlsZGVyLCBNZXNzYWdlU291cmNlIHNvdXJjZSwgTWUKICAgICBjYXNlIE1lc3Nh
Z2VMZXZlbDo6TG9nOgogICAgICAgICAvLyBEZWZhdWx0LCBubyBuZWVkIHRvIGJlIG1vcmUgc3Bl
Y2lmaWMuCiAgICAgICAgIGlmICh0eXBlID09IE1lc3NhZ2VUeXBlOjpMb2cpCi0gICAgICAgICAg
ICBsZXZlbFN0cmluZyA9ICJMT0ciX3M7CisgICAgICAgICAgICBsZXZlbFN0cmluZyA9ICJMT0ci
X3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkRlYnVnOgotICAg
ICAgICBsZXZlbFN0cmluZyA9ICJERUJVRyJfczsKKyAgICAgICAgbGV2ZWxTdHJpbmcgPSAiREVC
VUciX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkluZm86Ci0g
ICAgICAgIGxldmVsU3RyaW5nID0gIklORk8iX3M7CisgICAgICAgIGxldmVsU3RyaW5nID0gIklO
Rk8iX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlTGV2ZWw6Oldhcm5pbmc6
Ci0gICAgICAgIGxldmVsU3RyaW5nID0gIldBUk4iX3M7CisgICAgICAgIGxldmVsU3RyaW5nID0g
IldBUk4iX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBNZXNzYWdlTGV2ZWw6OkVycm9y
OgotICAgICAgICBsZXZlbFN0cmluZyA9ICJFUlJPUiJfczsKKyAgICAgICAgbGV2ZWxTdHJpbmcg
PSAiRVJST1IiX3N0cjsKICAgICAgICAgYnJlYWs7CiAgICAgfQogCkBAIC0yMzMsNyArMjMzLDcg
QEAgdm9pZCBDb25zb2xlQ2xpZW50OjpwcmludENvbnNvbGVNZXNzYWdlV2l0aEFyZ3VtZW50cyhN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2EKICAgICAgICAgICAgIGNvbnN0IFNjcmlwdENhbGxG
cmFtZSYgY2FsbEZyYW1lID0gY2FsbFN0YWNrLT5hdChpKTsKICAgICAgICAgICAgIFN0cmluZyBm
dW5jdGlvbk5hbWUgPSBjYWxsRnJhbWUuZnVuY3Rpb25OYW1lKCk7CiAgICAgICAgICAgICBpZiAo
ZnVuY3Rpb25OYW1lLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBmdW5jdGlvbk5hbWUgPSAi
KHVua25vd24pIl9zOworICAgICAgICAgICAgICAgIGZ1bmN0aW9uTmFtZSA9ICIodW5rbm93biki
X3N0cjsKIAogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBjYWxsRnJhbWVCdWlsZGVyOwogICAg
ICAgICAgICAgY2FsbEZyYW1lQnVpbGRlci5hcHBlbmQoaSwgIjogIiwgZnVuY3Rpb25OYW1lLCAn
KCcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29uc29sZU9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmNw
cAppbmRleCAwZGRlOTg3NzI3NjY1NTk4NDY5NjQ1ZjQzOTZjMjMyYzU2NmU0M2ExLi5lZmE3Mjky
ZjM4NTEyMWNjYWI3YmUxM2JhOTc2ODg3ZGFmMGMyNDEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9Db25zb2xlT2JqZWN0LmNwcApAQCAtMzYsMTEgKzM2LDExIEBAIG5h
bWVzcGFjZSBKU0Mgewogc3RhdGljIFN0cmluZyB2YWx1ZU9yRGVmYXVsdExhYmVsU3RyaW5nKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKQogewogICAg
IGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA8IDEpCi0gICAgICAgIHJldHVybiAiZGVm
YXVsdCJfczsKKyAgICAgICAgcmV0dXJuICJkZWZhdWx0Il9zdHI7CiAKICAgICBhdXRvIHZhbHVl
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkK
LSAgICAgICAgcmV0dXJuICJkZWZhdWx0Il9zOworICAgICAgICByZXR1cm4gImRlZmF1bHQiX3N0
cjsKIAogICAgIHJldHVybiB2YWx1ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCA4
NTQ1YTU1OWE3MzI4YjU1MzdkYjgxMjgzYzk4YTYzOWQ2YzRhODNiLi5lZjBjYzU5MTQ3NDZmN2Yy
OWRjOTFkMTZlZjA5ZTQ0NDg1NTkyOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9EYXRlUHJvdG90eXBlLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHN0YXRpYyBFbmNv
ZGVkSlNWYWx1ZSBmb3JtYXRlRGF0ZUluc3RhbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtCiAgICAgICAgID8gdGhpc0RhdGVPYmotPmdyZWdvcmlhbkRhdGVUaW1lVVRD
KGNhY2hlKQogICAgICAgICA6IHRoaXNEYXRlT2JqLT5ncmVnb3JpYW5EYXRlVGltZShjYWNoZSk7
CiAgICAgaWYgKCFncmVnb3JpYW5EYXRlVGltZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZygiSW52YWxpZCBEYXRlIl9zKSkpOwor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIklu
dmFsaWQgRGF0ZSJfc3RyKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgZm9ybWF0RGF0ZVRpbWUoKmdyZWdvcmlhbkRhdGVUaW1lLCBmb3JtYXQs
IGFzVVRDVmFyaWFudCkpKTsKIH0KQEAgLTI3MywxNiArMjczLDE2IEBAIHZvaWQgRGF0ZVByb3Rv
dHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKICAgICBBU1NFUlQoaW5oZXJpdHModm0s
IGluZm8oKSkpOwogCi0gICAgSWRlbnRpZmllciB0b1VUQ1N0cmluZ05hbWUgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKHZtLCAidG9VVENTdHJpbmciX3MpOworICAgIElkZW50aWZpZXIgdG9VVENT
dHJpbmdOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRvVVRDU3RyaW5nIl9zdHIp
OwogICAgIEpTRnVuY3Rpb24qIHRvVVRDU3RyaW5nRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgMCwgdG9VVENTdHJpbmdOYW1lLnN0cmluZygpLCBkYXRlUHJv
dG9GdW5jVG9VVENTdHJpbmcpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB0
b1VUQ1N0cmluZ05hbWUsIHRvVVRDU3RyaW5nRnVuY3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKLSAgICBwdXREaXJlY3RXaXRob3V0VHJh
bnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRvR01UU3RyaW5nIl9zKSwg
dG9VVENTdHJpbmdGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidG9HTVRTdHJpbmciX3N0ciksIHRvVVRDU3RyaW5nRnVu
Y3Rpb24sIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
KTsKIAotICAgIEpTRnVuY3Rpb24qIHRvUHJpbWl0aXZlRnVuY3Rpb24gPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRpdmVdIl9zLCBkYXRl
UHJvdG9GdW5jVG9QcmltaXRpdmVTeW1ib2wsIE5vSW50cmluc2ljKTsKKyAgICBKU0Z1bmN0aW9u
KiB0b1ByaW1pdGl2ZUZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QsIDEsICJbU3ltYm9sLnRvUHJpbWl0aXZlXSJfc3RyLCBkYXRlUHJvdG9GdW5jVG9QcmltaXRp
dmVTeW1ib2wsIE5vSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9QcmltaXRpdmVTeW1ib2wsIHRvUHJpbWl0aXZlRnVuY3Rp
b24sIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CiAKICAgICBpZiAoT3B0aW9uczo6dXNlVGVtcG9yYWwoKSkgewotICAgICAgICBJZGVu
dGlmaWVyIHRvVGVtcG9yYWxJbnN0YW50TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0s
ICJ0b1RlbXBvcmFsSW5zdGFudCJfcyk7CisgICAgICAgIElkZW50aWZpZXIgdG9UZW1wb3JhbElu
c3RhbnROYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRvVGVtcG9yYWxJbnN0YW50
Il9zdHIpOwogICAgICAgICBKU0Z1bmN0aW9uKiB0b1RlbXBvcmFsSW5zdGFudEZ1bmN0aW9uID0g
SlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsIHRvVGVtcG9yYWxJbnN0YW50
TmFtZS5zdHJpbmcoKSwgZGF0ZVByb3RvRnVuY1RvVGVtcG9yYWxJbnN0YW50KTsKICAgICAgICAg
cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHRvVGVtcG9yYWxJbnN0YW50TmFtZSwgdG9U
ZW1wb3JhbEluc3RhbnRGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSkpOwogICAgIH0KQEAgLTMxNCwxMSArMzE0LDExIEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihkYXRlUHJvdG9GdW5jVG9JU09TdHJpbmcsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0CiAKICAgICBJbnRlZ3JpdHk6OmF1ZGl0U3RydWN0dXJlSUQodGhpc0Rh
dGVPYmotPnN0cnVjdHVyZUlEKCkpOwogICAgIGlmICghc3RkOjppc2Zpbml0ZSh0aGlzRGF0ZU9i
ai0+aW50ZXJuYWxOdW1iZXIoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJJbnZhbGlkIERh
dGUiX3MpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgRGF0ZSJfc3RyKSk7CiAK
ICAgICBjb25zdCBHcmVnb3JpYW5EYXRlVGltZSogZ3JlZ29yaWFuRGF0ZVRpbWUgPSB0aGlzRGF0
ZU9iai0+Z3JlZ29yaWFuRGF0ZVRpbWVVVEModm0uZGF0ZUNhY2hlKTsKICAgICBpZiAoIWdyZWdv
cmlhbkRhdGVUaW1lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgU3RyaW5nKCJJbnZhbGlkIERhdGUiX3MpKSk7CisgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiSW52YWxpZCBEYXRlIl9zdHIp
KTsKICAgICAvLyBNYXhpbXVtIGFtb3VudCBvZiBzcGFjZSB3ZSBuZWVkIGluIGJ1ZmZlcjogNyAo
bWF4LiBkaWdpdHMgaW4geWVhcikgKyAyICogNSAoMiBjaGFyYWN0ZXJzIGVhY2ggZm9yIG1vbnRo
LCBkYXksIGhvdXIsIG1pbnV0ZSwgc2Vjb25kKSArIDQgKC4gKyAzIGRpZ2l0cyBmb3IgbWlsbGlz
ZWNvbmRzKQogICAgIC8vIDYgZm9yIGZvcm1hdHRpbmcgYW5kIG9uZSBmb3IgbnVsbCB0ZXJtaW5h
dGlvbiA9IDI4LiBXZSBhZGQgb25lIGV4dHJhIGNoYXJhY3RlciB0byBhbGxvdyB1cyB0byBmb3Jj
ZSBudWxsIHRlcm1pbmF0aW9uLgogICAgIGNoYXIgYnVmZmVyWzI4XTsKQEAgLTkxMSw3ICs5MTEs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZGF0ZVByb3RvRnVuY1RvSlNPTiwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogCiAgICAgYXV0byBjYWxsRGF0YSA9IGdldENh
bGxEYXRhKHZtLCB0b0lTT1ZhbHVlKTsKICAgICBpZiAoY2FsbERhdGEudHlwZSA9PSBDYWxsRGF0
YTo6VHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgInRvSVNPU3RyaW5nIGlzIG5vdCBhIGZ1bmN0aW9uIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvSVNPU3RyaW5n
IGlzIG5vdCBhIGZ1bmN0aW9uIl9zdHIpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGds
b2JhbE9iamVjdCwgYXNPYmplY3QodG9JU09WYWx1ZSksIGNhbGxEYXRhLCBvYmplY3QsICp2bS5l
bXB0eUxpc3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwpAQCAtOTI5LDcgKzkyOSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihkYXRlUHJv
dG9GdW5jVG9UZW1wb3JhbEluc3RhbnQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBk
b3VibGUgZXBvY2hNaWxsaXNlY29uZHMgPSB0aGlzRGF0ZU9iai0+aW50ZXJuYWxOdW1iZXIoKTsK
ICAgICBpZiAoIWlzSW50ZWdlcihlcG9jaE1pbGxpc2Vjb25kcykpIAotICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiSW52YWxpZCBpbnRlZ2VyIG51bWJlciBvZiBFcG9jaCBNaWxsc2Vjb25kcyJfcykp
OworICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0
ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiSW52YWxpZCBpbnRlZ2VyIG51bWJlciBvZiBFcG9j
aCBNaWxsc2Vjb25kcyJfc3RyKSk7CiAKICAgICBBU1NFUlQoZXBvY2hNaWxsaXNlY29uZHMgPj0g
c3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWluKCkgJiYgZXBvY2hNaWxsaXNlY29uZHMg
PD0gc3RkOjpudW1lcmljX2xpbWl0czxpbnQ2NF90Pjo6bWF4KCkpOwogICAgIElTTzg2MDE6OkV4
YWN0VGltZSBleGFjdFRpbWUgPSBJU084NjAxOjpFeGFjdFRpbWU6OmZyb21FcG9jaE1pbGxpc2Vj
b25kcyhlcG9jaE1pbGxpc2Vjb25kcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5jcHAKaW5kZXggZjYzOGI2NmRlYWUwMTBmZGZiMTVjYjMwMmVlOWI0OTQwNTM5YzAxNi4uMDM5
MWNhMjQxYTFjZDcxMjY3OTUzYTc1MDgxMmZiMGU2MWYwYzljNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtNzAsNyArNzAsNyBAQCBKU09iamVjdCogY3JlYXRl
VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgRQogCiBKU09iamVjdCogY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXJyb3JJbnN0YW5jZTo6U291cmNlQXBwZW5kZXIgYXBw
ZW5kZXIpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJOb3Qg
ZW5vdWdoIGFyZ3VtZW50cyJfcywgYXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKKyAgICByZXR1cm4g
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIk5vdCBlbm91Z2ggYXJndW1lbnRzIl9zdHIs
IGFwcGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEVycm9y
SW5zdGFuY2U6OlNvdXJjZUFwcGVuZGVyIGFwcGVuZGVyKQpAQCAtMzI5LDEyICszMjksMTIgQEAg
SlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIAogSlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVN5bnRheEVy
cm9yKGdsb2JhbE9iamVjdCwgIlN5bnRheCBlcnJvciJfcywgbnVsbHB0cik7CisgICAgcmV0dXJu
IGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIlN5bnRheCBlcnJvciJfc3RyLCBudWxs
cHRyKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAi
VHlwZSBlcnJvciJfcyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
ICJUeXBlIGVycm9yIl9zdHIpOwogfQogCiBKU09iamVjdCogY3JlYXRlVHlwZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKQEAgLTM1NCw3
ICszNTQsNyBAQCBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogCiBKU09iamVjdCogY3JlYXRlT3V0T2ZN
ZW1vcnlFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIGF1dG8qIGVy
cm9yID0gY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJPdXQgb2YgbWVtb3J5Il9zLCBu
dWxscHRyKTsKKyAgICBhdXRvKiBlcnJvciA9IGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCAiT3V0IG9mIG1lbW9yeSJfc3RyLCBudWxscHRyKTsKICAgICBqc0Nhc3Q8RXJyb3JJbnN0YW5j
ZSo+KGVycm9yKS0+c2V0T3V0T2ZNZW1vcnlFcnJvcigpOwogICAgIHJldHVybiBlcnJvcjsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5oCmluZGV4IDU0YjE0OTQ1OGZmMjI4NzBm
ZGRiODMxZmVhOTk2NzRkMjJkMWE1MjIuLjBmMTIwNjI2NDg3NTNiYjM0MGJlZDMzZDhlZGM5ZTE0
OTIyOGE0MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaApAQCAtOTMsNyAr
OTMsOCBAQCBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHRocm93RE9NQXR0cmlidXRlU2V0dGVy
VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhybwogLy8gQ29udmVuaWVuY2Ugd3JhcHBlcnMs
IHdyYXAgcmVzdWx0IGFzIGFuIEVuY29kZWRKU1ZhbHVlLgogaW5saW5lIHZvaWQgdGhyb3dWTUVy
cm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBFeGNl
cHRpb24qIGV4Y2VwdGlvbikgeyB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBl
eGNlcHRpb24pOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFsdWUgdGhyb3dWTUVycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBKU1ZhbHVlIGVycm9yKSB7
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgZXJyb3IpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgY2hhciogZXJy
b3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFs
T2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCBlcnJvck1lc3NhZ2UpKSk7
IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBlcnJvck1lc3NhZ2Up
IHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIGVycm9yTWVzc2FnZSkpKTsgfQoraW5saW5l
IEVuY29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVh
dGVFcnJvcihnbG9iYWxPYmplY3QsIGVycm9yTWVzc2FnZSkpKTsgfQogaW5saW5lIEVuY29kZWRK
U1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhy
b3dTY29wZSYgc2NvcGUpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlKSk7IH0KIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlw
ZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBB
U0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JNZXNzYWdlKSk7IH0KIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkgeyByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVy
cm9yTWVzc2FnZSkpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FcnJvckluc3RhbmNlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
SW5zdGFuY2UuY3BwCmluZGV4IDczOGU3ZjRlMTI3ZTE3ZGVmMmY0NTljOThiYTBhNzcyNTA1NjU5
OGIuLjdjYmRlODU2ODhmZDNkMjg1NmJmZGMyMzY3ZDFmYjNlMWFlNWYyYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9ySW5zdGFuY2UuY3BwCkBAIC0xOTYsNyAr
MTk2LDcgQEAgU3RyaW5nIEVycm9ySW5zdGFuY2U6OnNhbml0aXplZE5hbWVTdHJpbmcoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogCiAgICAgaWYgKCFuYW1lVmFsdWUgfHwgIW5hbWVWYWx1ZS5pc1ByaW1pdGl2ZSgpKQot
ICAgICAgICByZXR1cm4gIkVycm9yIl9zOworICAgICAgICByZXR1cm4gIkVycm9yIl9zdHI7CiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBuYW1lVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFs
T2JqZWN0KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
UHJvdG90eXBlLmNwcAppbmRleCBlZjQzMWYzOTVlMzQyNWEyNjM1NGU5MzIwYWNjNGY5MjUyYjM4
MjljLi4yMGUxMmM0OGU1OTJjYWQ3MTYzMTk3NjcyNTIzYzVhYTVjY2Y4YjJmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3JQcm90b3R5cGUuY3BwCkBAIC05NCw3
ICs5NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihlcnJvclByb3RvRnVuY1RvU3RyaW5n
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAvLyA0LiBJZiBuYW1lIGlzIHVu
ZGVmaW5lZCwgdGhlbiBsZXQgbmFtZSBiZSAiRXJyb3IiOyBlbHNlIGxldCBuYW1lIGJlIFRvU3Ry
aW5nKG5hbWUpLgogICAgIFN0cmluZyBuYW1lU3RyaW5nOwogICAgIGlmIChuYW1lLmlzVW5kZWZp
bmVkKCkpCi0gICAgICAgIG5hbWVTdHJpbmcgPSAiRXJyb3IiX3M7CisgICAgICAgIG5hbWVTdHJp
bmcgPSAiRXJyb3IiX3N0cjsKICAgICBlbHNlIHsKICAgICAgICAgbmFtZVN0cmluZyA9IG5hbWUu
dG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXJyb3JQcm90b3R5cGUuaAppbmRleCBiNDAyMzYyZDBhNGVlNDY4M2EzN2FjYjM2OWZjNmUw
YmE4YTMzYmVlLi4zMmI4NGQ1NDEyOThiYmI1YjNjMmJmYjNiODU0OTNlNzUyMzdkMjI0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvclByb3RvdHlwZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yUHJvdG90eXBlLmgKQEAgLTU4
LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBFcnJvclByb3RvdHlwZSogY3JlYXRlKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKICAgICB7CiAgICAg
ICAgIEVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2Vs
bDxFcnJvclByb3RvdHlwZT4odm0pKSBFcnJvclByb3RvdHlwZSh2bSwgc3RydWN0dXJlKTsKLSAg
ICAgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgIkVycm9yIl9zKTsKKyAgICAgICAg
cHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgIkVycm9yIl9zdHIpOwogICAgICAgICByZXR1
cm4gcHJvdG90eXBlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uRnV6ei5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9FeGNlcHRpb25GdXp6LmNwcAppbmRleCA3MjZhNDU2OWM1NTg2ZTAwODdjNTdmMWNjYWI4NWE1
NjE4MmZiZDE3Li44ZmY1ZDg2NjNiNmU4ODdlNzc4NjVlM2NlYmEyZDMwN2EyZDllNTlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25GdXp6LmNwcApAQCAt
NTksNyArNTksNyBAQCB2b2lkIGRvRXhjZXB0aW9uRnV6emluZyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgY29uc3QgYwogICAgICAgICAvLyB0byBwbGFj
YXRlIHRoZSBleGNlcHRpb24gY2hlY2sgdmVyaWZpZXIgaGVyZS4KICAgICAgICAgRVhDRVBUSU9O
X0FTU0VSVChzY29wZS5leGNlcHRpb24oKSB8fCAhc2NvcGUuZXhjZXB0aW9uKCkpOwogCi0gICAg
ICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2Jh
bE9iamVjdCwgIkV4Y2VwdGlvbiBGdXp6Il9zKSk7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGds
b2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgIkV4Y2VwdGlvbiBG
dXp6Il9zdHIpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggMDk5ZmY3MWNkNjI2NWI4ZDFjYThjOTFl
MzYxMTM2MWVlMGVlN2ZhMy4uMmU5ODcxZTdlNWMzNDI5MmFiYWQ3MDc2MGRjYjEzNTVjZWEwN2E0
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIEpTT2JqZWN0KiBj
cmVhdGVTdGFja092ZXJmbG93RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsK
LSAgICBhdXRvKiBlcnJvciA9IGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTWF4aW11
bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVkZWQuIl9zKTsKKyAgICBhdXRvKiBlcnJvciA9IGNyZWF0
ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiTWF4aW11bSBjYWxsIHN0YWNrIHNpemUgZXhjZWVk
ZWQuIl9zdHIpOwogICAgIGpzQ2FzdDxFcnJvckluc3RhbmNlKj4oZXJyb3IpLT5zZXRTdGFja092
ZXJmbG93RXJyb3IoKTsKICAgICByZXR1cm4gZXJyb3I7CiB9CkBAIC0xODQsNyArMTg0LDcgQEAg
c3RhdGljIFN0cmluZyBub3RBRnVuY3Rpb25Tb3VyY2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIG9y
aWdpbmFsTWVzc2FnZSwgY29uc3QgU3QKICAgICBidWlsZGVyLmFwcGVuZCgnKScpOwogCiAgICAg
aWYgKGJ1aWxkZXIuaGFzT3ZlcmZsb3dlZCgpKQotICAgICAgICByZXR1cm4gIm9iamVjdCBpcyBu
b3QgYSBmdW5jdGlvbi4iX3M7CisgICAgICAgIHJldHVybiAib2JqZWN0IGlzIG5vdCBhIGZ1bmN0
aW9uLiJfc3RyOwogCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KQEAgLTIzMywx
MiArMjMzLDEyIEBAIGlubGluZSBTdHJpbmcgaW52YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZTb3Vy
Y2VBcHBlbmRlcihjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvCiAKIHN0YXRpYyBTdHJpbmcgaW52
YWxpZFBhcmFtZXRlckluc3RhbmNlb2ZOb3RGdW5jdGlvblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVRleHQsIFJ1bnRpbWVU
eXBlIHJ1bnRpbWVUeXBlLCBFcnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3Vy
cmVkIG9jY3VycmVuY2UpCiB7Ci0gICAgcmV0dXJuIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9m
U291cmNlQXBwZW5kZXIoIiBpcyBub3QgYSBmdW5jdGlvbiJfcywgb3JpZ2luYWxNZXNzYWdlLCBz
b3VyY2VUZXh0LCBydW50aW1lVHlwZSwgb2NjdXJyZW5jZSk7CisgICAgcmV0dXJuIGludmFsaWRQ
YXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoIiBpcyBub3QgYSBmdW5jdGlvbiJfc3Ry
LCBvcmlnaW5hbE1lc3NhZ2UsIHNvdXJjZVRleHQsIHJ1bnRpbWVUeXBlLCBvY2N1cnJlbmNlKTsK
IH0KIAogc3RhdGljIFN0cmluZyBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZmhhc0luc3RhbmNl
VmFsdWVOb3RGdW5jdGlvblNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNz
YWdlLCBjb25zdCBTdHJpbmcmIHNvdXJjZVRleHQsIFJ1bnRpbWVUeXBlIHJ1bnRpbWVUeXBlLCBF
cnJvckluc3RhbmNlOjpTb3VyY2VUZXh0V2hlcmVFcnJvck9jY3VycmVkIG9jY3VycmVuY2UpCiB7
Ci0gICAgcmV0dXJuIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9mU291cmNlQXBwZW5kZXIoIltT
eW1ib2wuaGFzSW5zdGFuY2VdIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmluZWQsIG9yIG51bGwi
X3MsIG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCwgcnVudGltZVR5cGUsIG9jY3VycmVuY2Up
OworICAgIHJldHVybiBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZlNvdXJjZUFwcGVuZGVyKCJb
U3ltYm9sLmhhc0luc3RhbmNlXSBpcyBub3QgYSBmdW5jdGlvbiwgdW5kZWZpbmVkLCBvciBudWxs
Il9zdHIsIG9yaWdpbmFsTWVzc2FnZSwgc291cmNlVGV4dCwgcnVudGltZVR5cGUsIG9jY3VycmVu
Y2UpOwogfQogCiBzdGF0aWMgU3RyaW5nIGludmFsaWRQcm90b3R5cGVTb3VyY2VBcHBlbmRlcihj
b25zdCBTdHJpbmcmIG9yaWdpbmFsTWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzb3VyY2VUZXh0LCBS
dW50aW1lVHlwZSwgRXJyb3JJbnN0YW5jZTo6U291cmNlVGV4dFdoZXJlRXJyb3JPY2N1cnJlZCBv
Y2N1cnJlbmNlKQpAQCAtMjUwLDcgKzI1MCw3IEBAIHN0YXRpYyBTdHJpbmcgaW52YWxpZFByb3Rv
dHlwZVNvdXJjZUFwcGVuZGVyKGNvbnN0IFN0cmluZyYgb3JpZ2luYWxNZXNzYWdlLCBjb25zCiAg
ICAgaWYgKGV4dGVuZHNJbmRleCA9PSBub3RGb3VuZCB8fCBzb3VyY2VUZXh0LmZpbmQoImV4dGVu
ZHMiKSAhPSBleHRlbmRzSW5kZXgpCiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG9yaWdpbmFs
TWVzc2FnZSwgIiAoZXZhbHVhdGluZyAnIiwgc291cmNlVGV4dCwgIicpIik7CiAKLSAgICByZXR1
cm4gIlRoZSB2YWx1ZSBvZiB0aGUgc3VwZXJjbGFzcydzIHByb3RvdHlwZSBwcm9wZXJ0eSBpcyBu
b3QgYW4gb2JqZWN0IG9yIG51bGwuIl9zOworICAgIHJldHVybiAiVGhlIHZhbHVlIG9mIHRoZSBz
dXBlcmNsYXNzJ3MgcHJvdG90eXBlIHByb3BlcnR5IGlzIG5vdCBhbiBvYmplY3Qgb3IgbnVsbC4i
X3N0cjsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgdmFsdWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgRXJyb3JJbnN0YW5j
ZTo6U291cmNlQXBwZW5kZXIgYXBwZW5kZXIpCkBAIC0yNzksNDIgKzI3OSw0MiBAQCBKU09iamVj
dCogY3JlYXRlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1
ZSwgY29uc3QgU3RyaW5nJgogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZEZ1bmN0aW9uQXBwbHlQ
YXJhbWV0ZXJFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVl
KQogewotICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCAic2Vjb25kIGFy
Z3VtZW50IHRvIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSBtdXN0IGJlIGFuIEFycmF5LWxpa2Ug
b2JqZWN0Il9zLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIHJ1bnRpbWVUeXBlRm9yVmFsdWUoZ2xv
YmFsT2JqZWN0LT52bSgpLCB2YWx1ZSkpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCAic2Vjb25kIGFyZ3VtZW50IHRvIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseSBt
dXN0IGJlIGFuIEFycmF5LWxpa2Ugb2JqZWN0Il9zdHIsIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwg
cnVudGltZVR5cGVGb3JWYWx1ZShnbG9iYWxPYmplY3QtPnZtKCksIHZhbHVlKSk7CiB9CiAKIEpT
T2JqZWN0KiBjcmVhdGVJbnZhbGlkSW5QYXJhbWV0ZXJFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHJldHVybiBjcmVhdGVFcnJvcihnbG9i
YWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGFuIE9iamVjdC4iX3MsIGludmFsaWRQYXJhbWV0ZXJJ
blNvdXJjZUFwcGVuZGVyKTsKKyAgICByZXR1cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2
YWx1ZSwgImlzIG5vdCBhbiBPYmplY3QuIl9zdHIsIGludmFsaWRQYXJhbWV0ZXJJblNvdXJjZUFw
cGVuZGVyKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZUludmFsaWRJbnN0YW5jZW9mUGFyYW1ldGVy
RXJyb3JOb3RGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZh
bHVlKQogewotICAgIHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiIGlz
IG5vdCBhIGZ1bmN0aW9uIl9zLCBpbnZhbGlkUGFyYW1ldGVySW5zdGFuY2VvZk5vdEZ1bmN0aW9u
U291cmNlQXBwZW5kZXIpOworICAgIHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZh
bHVlLCAiIGlzIG5vdCBhIGZ1bmN0aW9uIl9zdHIsIGludmFsaWRQYXJhbWV0ZXJJbnN0YW5jZW9m
Tm90RnVuY3Rpb25Tb3VyY2VBcHBlbmRlcik7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVJbnZhbGlk
SW5zdGFuY2VvZlBhcmFtZXRlckVycm9ySGFzSW5zdGFuY2VWYWx1ZU5vdEZ1bmN0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGNy
ZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgdmFsdWUsICJbU3ltYm9sLmhhc0luc3RhbmNlXSBpcyBu
b3QgYSBmdW5jdGlvbiwgdW5kZWZpbmVkLCBvciBudWxsIl9zLCBpbnZhbGlkUGFyYW1ldGVySW5z
dGFuY2VvZmhhc0luc3RhbmNlVmFsdWVOb3RGdW5jdGlvblNvdXJjZUFwcGVuZGVyKTsKKyAgICBy
ZXR1cm4gY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCB2YWx1ZSwgIltTeW1ib2wuaGFzSW5zdGFu
Y2VdIGlzIG5vdCBhIGZ1bmN0aW9uLCB1bmRlZmluZWQsIG9yIG51bGwiX3N0ciwgaW52YWxpZFBh
cmFtZXRlckluc3RhbmNlb2ZoYXNJbnN0YW5jZVZhbHVlTm90RnVuY3Rpb25Tb3VyY2VBcHBlbmRl
cik7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogewotICAgIHJldHVybiBjcmVhdGVF
cnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMgbm90IGEgY29uc3RydWN0b3IiX3MsIGRlZmF1
bHRTb3VyY2VBcHBlbmRlcik7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwg
dmFsdWUsICJpcyBub3QgYSBjb25zdHJ1Y3RvciJfc3RyLCBkZWZhdWx0U291cmNlQXBwZW5kZXIp
OwogfQogCiBKU09iamVjdCogY3JlYXRlTm90QUZ1bmN0aW9uRXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY3JlYXRlRXJyb3Io
Z2xvYmFsT2JqZWN0LCB2YWx1ZSwgImlzIG5vdCBhIGZ1bmN0aW9uIl9zLCBub3RBRnVuY3Rpb25T
b3VyY2VBcHBlbmRlcik7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgdmFs
dWUsICJpcyBub3QgYSBmdW5jdGlvbiJfc3RyLCBub3RBRnVuY3Rpb25Tb3VyY2VBcHBlbmRlcik7
CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVOb3RBbk9iamVjdEVycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVycm9yKGds
b2JhbE9iamVjdCwgdmFsdWUsICJpcyBub3QgYW4gb2JqZWN0Il9zLCBkZWZhdWx0U291cmNlQXBw
ZW5kZXIpOworICAgIHJldHVybiBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsIHZhbHVlLCAiaXMg
bm90IGFuIG9iamVjdCJfc3RyLCBkZWZhdWx0U291cmNlQXBwZW5kZXIpOwogfQogCiBKU09iamVj
dCogY3JlYXRlSW52YWxpZFByb3RvdHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVj
dCwgdmFsdWUsICJpcyBub3QgYW4gb2JqZWN0IG9yIG51bGwiX3MsIGludmFsaWRQcm90b3R5cGVT
b3VyY2VBcHBlbmRlcik7CisgICAgcmV0dXJuIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVjdCwgdmFs
dWUsICJpcyBub3QgYW4gb2JqZWN0IG9yIG51bGwiX3N0ciwgaW52YWxpZFByb3RvdHlwZVNvdXJj
ZUFwcGVuZGVyKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZUVycm9yRm9ySW52YWxpZEdsb2JhbEFz
c2lnbm1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUpCkBAIC0zMjQsMjcgKzMyNCwyNyBAQCBKU09iamVjdCogY3JlYXRlRXJyb3JGb3JJ
bnZhbGlkR2xvYmFsQXNzaWdubWVudChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjbwog
CiBKU09iamVjdCogY3JlYXRlVERaRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IHsKLSAgICByZXR1cm4gY3JlYXRlUmVmZXJlbmNlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiQ2Fubm90
IGFjY2VzcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlLiIpOworICAgIHJldHVybiBjcmVhdGVSZWZl
cmVuY2VFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgYWNjZXNzIHVuaW5pdGlhbGl6ZWQgdmFy
aWFibGUuIl9zdHIpOwogfQogCiBKU09iamVjdCogY3JlYXRlSW52YWxpZFByaXZhdGVOYW1lRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBpbnZhbGlkIHBy
aXZhdGUgZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAg
cmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgYWNjZXNzIGludmFs
aWQgcHJpdmF0ZSBmaWVsZCJfc3RyLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5n
KTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IHJlZGVmaW5lIGV4aXN0aW5nIHByaXZhdGUg
ZmllbGQiKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJu
IGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgcmVkZWZpbmUgZXhpc3Rpbmcg
cHJpdmF0ZSBmaWVsZCJfc3RyLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsK
IH0KIAogSlNPYmplY3QqIGNyZWF0ZVByaXZhdGVNZXRob2RBY2Nlc3NFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgYWNjZXNzIHByaXZhdGUgbWV0aG9kIG9yIGFjZXNz
b3IiX3MpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKKyAgICByZXR1cm4g
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBtZXRo
b2Qgb3IgYWNlc3NvciJfc3RyLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsK
IH0KIAogSlNPYmplY3QqIGNyZWF0ZVJlaW5zdGFsbFByaXZhdGVNZXRob2RFcnJvcihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgaW5zdGFsbCBzYW1lIHByaXZhdGUgbWV0aG9k
cyBvbiBvYmplY3QgbW9yZSB0aGFuIG9uY2UiX3MpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5
cGVOb3RoaW5nKTsKKyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkNh
bm5vdCBpbnN0YWxsIHNhbWUgcHJpdmF0ZSBtZXRob2RzIG9uIG9iamVjdCBtb3JlIHRoYW4gb25j
ZSJfc3RyLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKIH0KIAogRXhjZXB0
aW9uKiB0aHJvd091dE9mTWVtb3J5RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GaW5hbGl6YXRpb25SZWdpc3RyeUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwCmluZGV4
IGYzMWRiODZhNzk2MTZlNDVhOGRjMTE1YWEyNjU3MGFjM2M3ZTY2ZjUuLmQwZDdiZTUxNjE0ZjIy
YmY4ZDEwYTk5Y2IyYTMwZmE5YzZmM2JiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ZpbmFsaXphdGlvblJlZ2lzdHJ5Q29uc3RydWN0
b3IuY3BwCkBAIC00MSw3ICs0MSw3IEBAIGNvbnN0IENsYXNzSW5mbyBGaW5hbGl6YXRpb25SZWdp
c3RyeUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzCiAKIHZvaWQg
RmluYWxpemF0aW9uUmVnaXN0cnlDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBG
aW5hbGl6YXRpb25SZWdpc3RyeVByb3RvdHlwZSogcHJvdG90eXBlKQogewotICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCAxLCAiRmluYWxpemF0aW9uUmVnaXN0cnkiX3MsIFByb3BlcnR5QWRk
aXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sIDEsICJGaW5hbGl6YXRpb25SZWdpc3RyeSJfc3RyLCBQcm9wZXJ0eUFkZGl0
aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCkBAIC02Niw3ICs2Niw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RGaW5hbGl6YXRpb25SZWdpc3RyeSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgaWYgKCFjYWxsRnJhbWUtPmFyZ3VtZW50KDApLmlzQ2FsbGFibGUo
dm0pKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmlyc3QgYXJndW1lbnQgdG8gRmluYWxpemF0aW9uUmVnaXN0cnkgc2hvdWxkIGJlIGEgZnVu
Y3Rpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gRmluYWxpemF0aW9uUmVnaXN0cnkgc2hvdWxkIGJl
IGEgZnVuY3Rpb24iX3N0cik7CiAKICAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3Qo
Y2FsbEZyYW1lLT5uZXdUYXJnZXQoKSk7CiAgICAgU3RydWN0dXJlKiBmaW5hbGl6YXRpb25SZWdp
c3RyeVN0cnVjdHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJVQ1RVUkUodm0sIGZpbmFsaXphdGlv
blJlZ2lzdHJ5U3RydWN0dXJlLCBuZXdUYXJnZXQsIGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6YXRpb25SZWdp
c3RyeVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GaW5hbGl6
YXRpb25SZWdpc3RyeVByb3RvdHlwZS5jcHAKaW5kZXggODUzZTRhYTg3NGNiNTEwMGEzNjNiMmMw
MDE0MzM1M2NmZmE1YjA5Yy4uMTRjMTA3MGMyMzNkZjZmOTkyNmIyY2NkMDhlOTY5ODM3MGU3NjQz
YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRmluYWxpemF0aW9u
UmVnaXN0cnlQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ZpbmFsaXphdGlvblJlZ2lzdHJ5UHJvdG90eXBlLmNwcApAQCAtNTMsNyArNTMsNyBAQCBBTFdB
WVNfSU5MSU5FIHN0YXRpYyBKU0ZpbmFsaXphdGlvblJlZ2lzdHJ5KiBnZXRGaW5hbGl6YXRpb25S
ZWdpc3RyeShWTSYgdm0sIEpTRwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmplY3QoKSkpIHsKLSAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBGaW5hbGl6YXRpb25S
ZWdpc3RyeSBmdW5jdGlvbiBvbiBub24tb2JqZWN0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBGaW5hbGl6YXRpb25SZWdpc3RyeSBmdW5j
dGlvbiBvbiBub24tb2JqZWN0Il9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9
CiAKQEAgLTYxLDcgKzYxLDcgQEAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaW5hbGl6YXRpb25S
ZWdpc3RyeSogZ2V0RmluYWxpemF0aW9uUmVnaXN0cnkoVk0mIHZtLCBKU0cKICAgICBpZiAoTElL
RUxZKGdyb3VwKSkKICAgICAgICAgcmV0dXJuIGdyb3VwOwogCi0gICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBGaW5hbGl6YXRpb25SZWdpc3RyeSBmdW5jdGlv
biBvbiBhIG5vbi1GaW5hbGl6YXRpb25SZWdpc3RyeSBvYmplY3QiX3MpOworICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYWxsZWQgRmluYWxpemF0aW9uUmVnaXN0cnkg
ZnVuY3Rpb24gb24gYSBub24tRmluYWxpemF0aW9uUmVnaXN0cnkgb2JqZWN0Il9zdHIpOwogICAg
IHJldHVybiBudWxscHRyOwogfQogCkBAIC03NSwxNSArNzUsMTUgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHByb3RvRnVuY0ZpbmFsaXphdGlvblJlZ2lzdHJ5UmVnaXN0ZXIsIChKU0dsb2Jh
bE9iamVjdCoKIAogICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGFz
IHRoZSB0YXJnZXQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGFzIHRoZSB0YXJnZXQi
X3N0cik7CiAKICAgICBKU1ZhbHVlIGhvbGRpbmdzID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsK
ICAgICBpZiAodGFyZ2V0ID09IGhvbGRpbmdzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgZXhwZWN0cyB0aGUgdGFyZ2V0IG9i
amVjdCBhbmQgdGhlIGhvbGRpbmdzIHBhcmFtZXRlciBhcmUgbm90IHRoZSBzYW1lLiBPdGhlcndp
c2UsIHRoZSB0YXJnZXQgY2FuIG5ldmVyIGJlIGNvbGxlY3RlZCJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciBleHBlY3Rz
IHRoZSB0YXJnZXQgb2JqZWN0IGFuZCB0aGUgaG9sZGluZ3MgcGFyYW1ldGVyIGFyZSBub3QgdGhl
IHNhbWUuIE90aGVyd2lzZSwgdGhlIHRhcmdldCBjYW4gbmV2ZXIgYmUgY29sbGVjdGVkIl9zdHIp
OwogCiAgICAgSlNWYWx1ZSB1bnJlZ2lzdGVyVG9rZW4gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDIp
OwogICAgIGlmICghdW5yZWdpc3RlclRva2VuLmlzVW5kZWZpbmVkKCkgJiYgIXVucmVnaXN0ZXJU
b2tlbi5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAicmVnaXN0ZXIgcmVxdWlyZXMgYW4gb2JqZWN0IGFzIHRoZSB1bnJlZ2lz
dHJhdGlvbiB0b2tlbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJyZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgYXMgdGhlIHVucmVn
aXN0cmF0aW9uIHRva2VuIl9zdHIpOwogCiAgICAgZ3JvdXAtPnJlZ2lzdGVyVGFyZ2V0KHZtLCB0
YXJnZXQuZ2V0T2JqZWN0KCksIGhvbGRpbmdzLCB1bnJlZ2lzdGVyVG9rZW4pOwogICAgIHJldHVy
biBlbmNvZGVkSlNVbmRlZmluZWQoKTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04ocHJvdG9GdW5jRmluYWxpemF0aW9uUmVnaXN0cnlVbnJlZ2lzdGVyLCAoSlNH
bG9iYWxPYmplYwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZXN1
bHQpKTsKICAgICB9CiAKLSAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAidW5yZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgaXMgdGhlIHVucmVnaXN0cmF0
aW9uIHRva2VuIl9zKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAidW5yZWdpc3RlciByZXF1aXJlcyBhbiBvYmplY3QgaXMgdGhlIHVucmVnaXN0cmF0
aW9uIHRva2VuIl9zdHIpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9GdW5jdGlvbkV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcAppbmRleCBhMTc2NDdhYzlhYTIzZTc1NDc1
NjcyZTRjNmViNTJmZDA1OWU0YjZjLi5lZTllZmEzNDk0NjE4N2E3NTg1OGJlNzA3NGY2ZGM5MWMx
NGVkZDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlv
bkV4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0
aW9uRXhlY3V0YWJsZS5jcHAKQEAgLTE0NSw3ICsxNDUsNyBAQCBKU1N0cmluZyogRnVuY3Rpb25F
eGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICBzd2l0Y2ggKHBhcnNlTW9kZSgpKSB7CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvcldyYXBwZXJGdW5jdGlvbk1vZGU6CiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkdlbmVy
YXRvcldyYXBwZXJNZXRob2RNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJmdW5jdGlv
biogIjsKKyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiZnVuY3Rpb24qICJfc3RyOwogICAgICAg
ICBicmVhazsKIAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6
CkBAIC0xNTksMjYgKzE1OSwyNiBAQCBKU1N0cmluZyogRnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0
cmluZ1Nsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBjYXNlIFNvdXJjZVBh
cnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JCb2R5TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3lu
Y0Fycm93RnVuY3Rpb25Cb2R5TW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiZnVuY3Rp
b24gIjsKKyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiZnVuY3Rpb24gIl9zdHI7CiAgICAgICAg
IGJyZWFrOwogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFycm93RnVuY3Rpb25Nb2RlOgog
ICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpDbGFzc0ZpZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAg
ICAgICBmdW5jdGlvbkhlYWRlciA9ICIiOworICAgICAgICBmdW5jdGlvbkhlYWRlciA9IGVtcHR5
U3RyaW5nKCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFz
eW5jRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY01ldGhvZE1v
ZGU6Ci0gICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jIGZ1bmN0aW9uICI7CisgICAgICAg
IGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jIGZ1bmN0aW9uICJfc3RyOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Nb2RlOgotICAg
ICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyAiOworICAgICAgICBmdW5jdGlvbkhlYWRlciA9
ICJhc3luYyAiX3N0cjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9k
ZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyRnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFy
c2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJNZXRob2RNb2RlOgotICAgICAgICBmdW5jdGlv
bkhlYWRlciA9ICJhc3luYyBmdW5jdGlvbiogIjsKKyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAi
YXN5bmMgZnVuY3Rpb24qICJfc3RyOwogICAgICAgICBicmVhazsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0dlbmVyYXRvckZ1bmN0aW9uQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggN2ZhM2IyMTE2MjM2ODdjMWE5OWIzNTUxOGQyYjRkMDQy
N2Q0Nzc2MC4uYmZiOWQzYmJhNjhmY2NjYTFkMGI5Nzc4MmQ0MTRlMTA1MTY5YmE0MyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9yRnVuY3Rpb25Db25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvR2VuZXJhdG9y
RnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgR2VuZXJhdG9yRnVuY3Rp
b25Db25zdHJ1Y3Rvcjo6R2VuZXJhdG9yRnVuY3Rpb25Db25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3QKIAogdm9pZCBHZW5lcmF0b3JGdW5jdGlvbkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVh
dGlvbihWTSYgdm0sIEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlKiBnZW5lcmF0b3JGdW5jdGlv
blByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgIkdlbmVyYXRv
ckZ1bmN0aW9uIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5z
aXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAxLCAiR2VuZXJhdG9yRnVuY3Rp
b24iX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9u
KTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBnZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRlcm5hbEZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGVybmFsRnVuY3Rpb24uY3BwCmluZGV4IGQ1YmM0OTQwOTU3ZTU1MmJmNjRhNTBhNTkw
MmMxMTBjMTUyNmRiOTEuLmYyZmI3NzkzMDE5ZWUxMmI5MTY4NTVhMWJjNWI3OWMwNDY4ZjgwYjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGVybmFsRnVuY3Rp
b24uY3BwCkBAIC0xOTcsNyArMTk3LDcgQEAgSlNHbG9iYWxPYmplY3QqIGdldEZ1bmN0aW9uUmVh
bG0oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVjdCkKICAgICAg
ICAgaWYgKG9iamVjdC0+dHlwZSgpID09IFByb3h5T2JqZWN0VHlwZSkgewogICAgICAgICAgICAg
YXV0byogcHJveHkgPSBqc0Nhc3Q8UHJveHlPYmplY3QqPihvYmplY3QpOwogICAgICAgICAgICAg
aWYgKHByb3h5LT5pc1Jldm9rZWQoKSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgZ2V0IGZ1bmN0aW9uIHJlYWxtIGZyb20gcmV2
b2tlZCBQcm94eSJfcyk7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkNhbm5vdCBnZXQgZnVuY3Rpb24gcmVhbG0gZnJvbSByZXZva2VkIFByb3h5
Il9zdHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgb2JqZWN0ID0gcHJveHktPnRhcmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXggYjZiYjc1MTU4MGQ3NjgyZTE2
NmE0NTk2NWYzMjMyOWJlMmM0YzY1NS4uMzY1M2M5NjQ5ZmEzMWVkY2I0ZDI2NGVjMjlhMjUwZWQz
ZTdjY2FhZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0
b3IuY3BwCkBAIC0xMDcsMTQgKzEwNywxNCBAQCBWZWN0b3I8U3RyaW5nPiBJbnRsQ29sbGF0b3I6
OnNvcnRMb2NhbGVEYXRhKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBSZWxldmFudEV4dGVucwogICAg
IH0KICAgICBjYXNlIFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpLZjoKICAgICAgICAga2V5TG9jYWxl
RGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDMpOwotICAgICAgICBrZXlMb2NhbGVEYXRhLnVu
Y2hlY2tlZEFwcGVuZCgiZmFsc2UiX3MpOwotICAgICAgICBrZXlMb2NhbGVEYXRhLnVuY2hlY2tl
ZEFwcGVuZCgibG93ZXIiX3MpOwotICAgICAgICBrZXlMb2NhbGVEYXRhLnVuY2hlY2tlZEFwcGVu
ZCgidXBwZXIiX3MpOworICAgICAgICBrZXlMb2NhbGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgiZmFs
c2UiX3N0cik7CisgICAgICAgIGtleUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5kKCJsb3dlciJf
c3RyKTsKKyAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoInVwcGVyIl9zdHIp
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpLbjoKICAg
ICAgICAga2V5TG9jYWxlRGF0YS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KDIpOwotICAgICAgICBr
ZXlMb2NhbGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgiZmFsc2UiX3MpOwotICAgICAgICBrZXlMb2Nh
bGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgidHJ1ZSJfcyk7CisgICAgICAgIGtleUxvY2FsZURhdGEu
dW5jaGVja2VkQXBwZW5kKCJmYWxzZSJfc3RyKTsKKyAgICAgICAga2V5TG9jYWxlRGF0YS51bmNo
ZWNrZWRBcHBlbmQoInRydWUiX3N0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpAQCAtMTM0LDE0ICsxMzQsMTQgQEAgVmVjdG9y
PFN0cmluZz4gSW50bENvbGxhdG9yOjpzZWFyY2hMb2NhbGVEYXRhKGNvbnN0IFN0cmluZyYsIFJl
bGV2YW50RXh0ZW5zaW9uS2UKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBSZWxldmFudEV4dGVu
c2lvbktleTo6S2Y6CiAgICAgICAgIGtleUxvY2FsZURhdGEucmVzZXJ2ZUluaXRpYWxDYXBhY2l0
eSgzKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImZhbHNlIl9zKTsK
LSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImxvd2VyIl9zKTsKLSAgICAg
ICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoInVwcGVyIl9zKTsKKyAgICAgICAga2V5
TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoImZhbHNlIl9zdHIpOworICAgICAgICBrZXlMb2Nh
bGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgibG93ZXIiX3N0cik7CisgICAgICAgIGtleUxvY2FsZURh
dGEudW5jaGVja2VkQXBwZW5kKCJ1cHBlciJfc3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBSZWxldmFudEV4dGVuc2lvbktleTo6S246CiAgICAgICAgIGtleUxvY2FsZURhdGEucmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eSgyKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBl
bmQoImZhbHNlIl9zKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS51bmNoZWNrZWRBcHBlbmQoInRy
dWUiX3MpOworICAgICAgICBrZXlMb2NhbGVEYXRhLnVuY2hlY2tlZEFwcGVuZCgiZmFsc2UiX3N0
cik7CisgICAgICAgIGtleUxvY2FsZURhdGEudW5jaGVja2VkQXBwZW5kKCJ0cnVlIl9zdHIpOwog
ICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKQEAgLTE3Niw3ICsxNzYsNyBAQCB2b2lkIEludGxDb2xsYXRvcjo6aW5pdGlhbGl6ZUNvbGxh
dG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbG9jYQogICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgICAgICBpZiAoIWNvbGxhdGlv
bi5pc051bGwoKSkgewogICAgICAgICAgICAgaWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVy
VHlwZShjb2xsYXRpb24pKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJjb2xsYXRpb24gaXMgbm90IGEgd2VsbC1mb3JtZWQgY29sbGF0aW9u
IHZhbHVlIl9zKTsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImNvbGxhdGlvbiBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjb2xsYXRpb24gdmFsdWUi
X3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgbG9jYWxlT3B0aW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25L
ZXk6OkNvKV0gPSBXVEZNb3ZlKGNvbGxhdGlvbik7CkBAIC0xODYsNyArMTg2LDcgQEAgdm9pZCBJ
bnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGxvY2EKICAgICBUcmlTdGF0ZSBudW1lcmljID0gaW50bEJvb2xlYW5PcHRp
b24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5udW1lcmljKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmIChudW1lcmljICE9
IFRyaVN0YXRlOjpJbmRldGVybWluYXRlKQotICAgICAgICBsb2NhbGVPcHRpb25zW3N0YXRpY19j
YXN0PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6S24pXSA9IFN0cmluZyhudW1lcmlj
ID09IFRyaVN0YXRlOjpUcnVlID8gInRydWUiX3MgOiAiZmFsc2UiX3MpOworICAgICAgICBsb2Nh
bGVPcHRpb25zW3N0YXRpY19jYXN0PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6S24p
XSA9IG51bWVyaWMgPT0gVHJpU3RhdGU6OlRydWUgPyAidHJ1ZSJfc3RyIDogImZhbHNlIl9zdHI7
CiAKICAgICBTdHJpbmcgY2FzZUZpcnN0T3B0aW9uID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxP
YmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPmNhc2VGaXJzdCwgeyAidXBwZXIiLCAi
bG93ZXIiLCAiZmFsc2UiIH0sICJjYXNlRmlyc3QgbXVzdCBiZSBlaXRoZXIgXCJ1cHBlclwiLCBc
Imxvd2VyXCIsIG9yIFwiZmFsc2VcIiIsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHZvaWQoKSk7CkBAIC0xOTgsMTIgKzE5OCwxMiBAQCB2b2lkIEludGxDb2xsYXRv
cjo6aW5pdGlhbGl6ZUNvbGxhdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgbG9jYQogCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2NhbGU7CiAgICAgaWYgKG1fbG9j
YWxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgQ29sbGF0b3IgZHVlIHRvIGludmFsaWQgbG9jYWxl
Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBpbml0aWFsaXplIENvbGxhdG9yIGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGNvbnN0IFN0cmluZyYgY29sbGF0aW9uID0gcmVz
b2x2ZWQuZXh0ZW5zaW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25L
ZXk6OkNvKV07Ci0gICAgbV9jb2xsYXRpb24gPSBjb2xsYXRpb24uaXNOdWxsKCkgPyAiZGVmYXVs
dCJfcyA6IGNvbGxhdGlvbjsKKyAgICBtX2NvbGxhdGlvbiA9IGNvbGxhdGlvbi5pc051bGwoKSA/
ICJkZWZhdWx0Il9zdHIgOiBjb2xsYXRpb247CiAgICAgbV9udW1lcmljID0gcmVzb2x2ZWQuZXh0
ZW5zaW9uc1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUmVsZXZhbnRFeHRlbnNpb25LZXk6OktuKV0g
PT0gInRydWUiX3M7CiAKICAgICBjb25zdCBTdHJpbmcmIGNhc2VGaXJzdFN0cmluZyA9IHJlc29s
dmVkLmV4dGVuc2lvbnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5
OjpLZildOwpAQCAtMjQzLDcgKzI0Myw3IEBAIHZvaWQgSW50bENvbGxhdG9yOjppbml0aWFsaXpl
Q29sbGF0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsb2NhCiAgICAg
VUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgbV9jb2xsYXRvciA9IHN0ZDo6
dW5pcXVlX3B0cjxVQ29sbGF0b3IsIFVDb2xsYXRvckRlbGV0ZXI+KHVjb2xfb3BlbihkYXRhTG9j
YWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gaW5pdGlhbGl6ZSBDb2xsYXRvciJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBDb2xsYXRvciJfc3Ry
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzE3LDcgKzMxNyw3IEBAIEpTVmFsdWUg
SW50bENvbGxhdG9yOjpjb21wYXJlU3RyaW5ncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTdHJpbmdWaWV3IHgsCiAgICAgICAgIHJldHVybiB1Y29sX3N0cmNvbGwobV9jb2xsYXRvci5n
ZXQoKSwgeC51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgeC5sZW5ndGgoKSwgeS51cGNvbnZlcnRl
ZENoYXJhY3RlcnMoKSwgeS5sZW5ndGgoKSk7CiAgICAgfSgpKTsKICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJGYWlsZWQgdG8gY29tcGFyZSBzdHJpbmdz
LiJfcykpOworICAgICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRmFpbGVkIHRvIGNvbXBhcmUgc3RyaW5ncy4i
X3N0cikpOwogICAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvci5j
cHAKaW5kZXggMGJjNWFhMzdkN2NkZTAyMDMzZDczZTlmODVjYjJlMTMxNzMxMDMyOS4uY2U2ZTg3
MmViYjcwN2ZkNTRhMDU3MGY3ZjAwNGE5MTk0ODA4YTYxNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvckNvbnN0cnVjdG9yLmNwcApA
QCAtNzUsNyArNzUsNyBAQCBJbnRsQ29sbGF0b3JDb25zdHJ1Y3Rvcjo6SW50bENvbGxhdG9yQ29u
c3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIAogdm9pZCBJbnRsQ29sbGF0
b3JDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsQ29sbGF0b3JQcm90b3R5
cGUqIGNvbGxhdG9yUHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAw
LCAiQ29sbGF0b3IiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJh
bnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJDb2xsYXRvciJfc3Ry
LCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIGNvbGxhdG9yUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CiAgICAgY29sbGF0b3JQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvclByb3RvdHlwZS5jcHAKaW5kZXggMDU5
YzE5NWZiMDM1NWQ0NTUwNzE2YWViODRjNTk5MDFjODJkNDUzMS4uZDA2YzczOTZkZWRmYWU4ZGZh
YTA5MWE5YzAzZWY2NzM5ZTA3ODdjYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bENvbGxhdG9yUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3JQcm90b3R5cGUuY3BwCkBAIC0xMTQsNyArMTE0LDcg
QEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxDb2xsYXRvclByb3RvdHlwZUdldHRlckNv
bXBhcmUsIChKU0dsb2JhbE9iamVjdCogZ2wKICAgICAvLyAxLiBMZXQgY29sbGF0b3IgYmUgdGhp
cyBDb2xsYXRvciBvYmplY3QuCiAgICAgSW50bENvbGxhdG9yKiBjb2xsYXRvciA9IGpzRHluYW1p
Y0Nhc3Q8SW50bENvbGxhdG9yKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoIWNvbGxhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21w
YXJlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgQ29sbGF0b3IiX3MpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIENvbGxhdG9yIl9zdHIpKTsKIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRDb21w
YXJlID0gY29sbGF0b3ItPmJvdW5kQ29tcGFyZSgpOwogICAgIC8vIDIuIElmIGNvbGxhdG9yLltb
Ym91bmRDb21wYXJlXV0gaXMgdW5kZWZpbmVkLApAQCAtMTIyLDcgKzEyMiw3IEBAIEpTQ19ERUZJ
TkVfQ1VTVE9NX0dFVFRFUihpbnRsQ29sbGF0b3JQcm90b3R5cGVHZXR0ZXJDb21wYXJlLCAoSlNH
bG9iYWxPYmplY3QqIGdsCiAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBj
b2xsYXRvci0+Z2xvYmFsT2JqZWN0KHZtKTsKICAgICAgICAgLy8gYS4gTGV0IEYgYmUgYSBuZXcg
YnVpbHQtaW4gZnVuY3Rpb24gb2JqZWN0IGFzIGRlZmluZWQgaW4gMTEuMy40LgogICAgICAgICAv
LyBiLiBUaGUgdmFsdWUgb2YgRuKAmXMgbGVuZ3RoIHByb3BlcnR5IGlzIDIuCi0gICAgICAgIEpT
RnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCAyLCAiY29tcGFyZSJfcywgaW50bENvbGxhdG9yRnVuY0NvbXBhcmUsIE5vSW50cmluc2lj
KTsKKyAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIDIsICJjb21wYXJlIl9zdHIsIGludGxDb2xsYXRvckZ1bmNDb21w
YXJlLCBOb0ludHJpbnNpYyk7CiAKICAgICAgICAgLy8gYy4gTGV0IGJjIGJlIEJvdW5kRnVuY3Rp
b25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgogICAgICAgICBib3VuZENvbXBhcmUgPSBKU0Jv
dW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0YXJnZXRPYmplY3QsIGNvbGxh
dG9yLCBudWxscHRyLCAyLCBudWxscHRyKTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bENvbGxhdG9yUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucywg
KEpTR2xvYmFsT2JqZQogICAgIC8vIDEwLjMuNSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNv
bHZlZE9wdGlvbnMoKSAoRUNNQS00MDIgMi4wKQogICAgIEludGxDb2xsYXRvciogY29sbGF0b3Ig
PSBqc0R5bmFtaWNDYXN0PEludGxDb2xsYXRvcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKICAgICBpZiAoIWNvbGxhdG9yKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkNvbGxhdG9yLnByb3RvdHlw
ZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBDb2xsYXRvciJf
cykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBDb2xsYXRvciJfc3RyKSk7CiAKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjb2xsYXRvci0+cmVzb2x2ZWRP
cHRpb25zKGdsb2JhbE9iamVjdCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGMyZDQ5ZGE5OGE2NjBiYzYy
YjA0YWZlMTljNTc4ZjI1OTJmZDRiYjkuLjA0ZjU5NGUzZDkxYWE2Zjg1ODhiNDc5YTQ3MzU0ZDNi
ODY1MWNhN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
YXRlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bERhdGVUaW1lRm9ybWF0LmNwcApAQCAtMTQ1LDcgKzE0NSw3IEBAIHN0YXRpYyBTdHJpbmcgY2Fu
b25pY2FsaXplVGltZVpvbmVOYW1lKGNvbnN0IFN0cmluZyYgdGltZVpvbmVOYW1lKQogCiAgICAg
Ly8gMy4gSWYgaWFuYVRpbWVab25lIGlzICJFdGMvVVRDIiBvciAiRXRjL0dNVCIsIHRoZW4gcmV0
dXJuICJVVEMiLgogICAgIGlmIChpc1VUQ0VxdWl2YWxlbnQoY2Fub25pY2FsKSkKLSAgICAgICAg
cmV0dXJuICJVVEMiX3M7CisgICAgICAgIHJldHVybiAiVVRDIl9zdHI7CiAKICAgICAvLyA0LiBS
ZXR1cm4gaWFuYVRpbWVab25lLgogICAgIHJldHVybiBjYW5vbmljYWw7CkBAIC0xNjcsNyArMTY3
LDcgQEAgVmVjdG9yPFN0cmluZz4gSW50bERhdGVUaW1lRm9ybWF0Ojpsb2NhbGVEYXRhKGNvbnN0
IFN0cmluZyYgbG9jYWxlLCBSZWxldmFudEV4dGUKICAgICAgICAgICAgIGtleUxvY2FsZURhdGEu
YXBwZW5kKGNhbGVuZGFyKTsKICAgICAgICAgICAgIC8vIEFkZGluZyAiaXNsYW1pY2MiIGNhbmRp
ZGF0ZSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KICAgICAgICAgICAgIGlmIChjYWxlbmRh
ciA9PSAiaXNsYW1pYy1jaXZpbCJfcykKLSAgICAgICAgICAgICAgICBrZXlMb2NhbGVEYXRhLmFw
cGVuZCgiaXNsYW1pY2MiX3MpOworICAgICAgICAgICAgICAgIGtleUxvY2FsZURhdGEuYXBwZW5k
KCJpc2xhbWljYyJfc3RyKTsKICAgICAgICAgICAgIGlmIChhdXRvIG1hcHBlZCA9IG1hcElDVUNh
bGVuZGFyS2V5d29yZFRvQkNQNDcoY2FsZW5kYXIpKQogICAgICAgICAgICAgICAgIGtleUxvY2Fs
ZURhdGEuYXBwZW5kKFdURk1vdmUobWFwcGVkLnZhbHVlKCkpKTsKICAgICAgICAgfQpAQCAtMTc3
LDEwICsxNzcsMTAgQEAgVmVjdG9yPFN0cmluZz4gSW50bERhdGVUaW1lRm9ybWF0Ojpsb2NhbGVE
YXRhKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBSZWxldmFudEV4dGUKICAgICBjYXNlIFJlbGV2YW50
RXh0ZW5zaW9uS2V5OjpIYzoKICAgICAgICAgLy8gTnVsbCBkZWZhdWx0IHNvIHdlIGtub3cgdG8g
dXNlICdqJyBpbiBwYXR0ZXJuLgogICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZChTdHJpbmco
KSk7Ci0gICAgICAgIGtleUxvY2FsZURhdGEuYXBwZW5kKCJoMTEiX3MpOwotICAgICAgICBrZXlM
b2NhbGVEYXRhLmFwcGVuZCgiaDEyIl9zKTsKLSAgICAgICAga2V5TG9jYWxlRGF0YS5hcHBlbmQo
ImgyMyJfcyk7Ci0gICAgICAgIGtleUxvY2FsZURhdGEuYXBwZW5kKCJoMjQiX3MpOworICAgICAg
ICBrZXlMb2NhbGVEYXRhLmFwcGVuZCgiaDExIl9zdHIpOworICAgICAgICBrZXlMb2NhbGVEYXRh
LmFwcGVuZCgiaDEyIl9zdHIpOworICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZCgiaDIzIl9z
dHIpOworICAgICAgICBrZXlMb2NhbGVEYXRhLmFwcGVuZCgiaDI0Il9zdHIpOwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpOdToKICAgICAgICAga2V5TG9j
YWxlRGF0YSA9IG51bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUobG9jYWxlKTsKQEAgLTI4Nyw3ICsy
ODcsNyBAQCBzdGF0aWMgSlNPYmplY3QqIHRvRGF0ZVRpbWVPcHRpb25zQW55RGF0ZShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlCiAgICAgICAgIC8vIGEuIEZvciBlYWNoIG9m
IHRoZSBwcm9wZXJ0eSBuYW1lcyAieWVhciIsICJtb250aCIsICJkYXkiOgogICAgICAgICAvLyBp
LiBMZXQgc3RhdHVzIGJlIENyZWF0ZURhdGVQcm9wZXJ0eU9yVGhyb3cob3B0aW9ucywgcHJvcCwg
Im51bWVyaWMiKS4KICAgICAgICAgLy8gaWkuIFJldHVybklmQWJydXB0KHN0YXR1cykuCi0gICAg
ICAgIEpTU3RyaW5nKiBudW1lcmljID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibnVtZXJpYyJf
cyk7CisgICAgICAgIEpTU3RyaW5nKiBudW1lcmljID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAi
bnVtZXJpYyJfc3RyKTsKIAogICAgICAgICBvcHRpb25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnllYXIsIG51bWVyaWMpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOwpAQCAtNjA4LDcgKzYwOCw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojpp
bml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghY2FsZW5kYXIu
aXNOdWxsKCkpIHsKICAgICAgICAgaWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShj
YWxlbmRhcikpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiY2FsZW5kYXIgaXMgbm90IGEgd2VsbC1mb3JtZWQgY2FsZW5kYXIgdmFsdWUiX3MpOwor
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRh
ciBpcyBub3QgYSB3ZWxsLWZvcm1lZCBjYWxlbmRhciB2YWx1ZSJfc3RyKTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVPcHRpb25zW3N0YXRpY19jYXN0PHVu
c2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6Q2EpXSA9IGNhbGVuZGFyOwpAQCAtNjE4LDcg
KzYxOCw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3Jt
YXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghbnVtYmVyaW5nU3lzdGVtLmlzTnVsbCgpKSB7CiAg
ICAgICAgIGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUobnVtYmVyaW5nU3lzdGVt
KSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJu
dW1iZXJpbmdTeXN0ZW0gaXMgbm90IGEgd2VsbC1mb3JtZWQgbnVtYmVyaW5nIHN5c3RlbSB2YWx1
ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Im51bWJlcmluZ1N5c3RlbSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBudW1iZXJpbmcgc3lzdGVtIHZh
bHVlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGxvY2Fs
ZU9wdGlvbnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJlbGV2YW50RXh0ZW5zaW9uS2V5OjpOdSld
ID0gbnVtYmVyaW5nU3lzdGVtOwpAQCAtNjQzLDcgKzY0Myw3IEBAIHZvaWQgSW50bERhdGVUaW1l
Rm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwKIAogICAgIG1fbG9jYWxlID0gcmVzb2x2ZWQubG9jYWxlOwogICAgIGlmIChtX2xvY2Fs
ZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxv
Y2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCBkdWUgdG8gaW52YWxpZCBsb2NhbGUi
X3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTg5OCw3ICs4OTgsNyBAQCB2b2lk
IEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIC8vICAgICBpaWkuIElmIHAgaXMgbm90IHVuZGVm
aW5lZCwgdGhlbgogICAgICAgICAvLyAgICAgICAgIDEuIFRocm93IGEgVHlwZUVycm9yIGV4Y2Vw
dGlvbi4KICAgICAgICAgaWYgKHdlZWtkYXkgIT0gV2Vla2RheTo6Tm9uZSB8fCBlcmEgIT0gRXJh
OjpOb25lIHx8IHllYXIgIT0gWWVhcjo6Tm9uZSB8fCBtb250aCAhPSBNb250aDo6Tm9uZSB8fCBk
YXkgIT0gRGF5OjpOb25lIHx8IGRheVBlcmlvZCAhPSBEYXlQZXJpb2Q6Ok5vbmUgfHwgaG91ciAh
PSBIb3VyOjpOb25lIHx8IG1pbnV0ZSAhPSBNaW51dGU6Ok5vbmUgfHwgc2Vjb25kICE9IFNlY29u
ZDo6Tm9uZSB8fCBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzICE9IDAgfHwgdGltZVpvbmVOYW1lICE9
IFRpbWVab25lTmFtZTo6Tm9uZSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImRhdGVTdHlsZSBhbmQgdGltZVN0eWxlIG1heSBub3QgYmUgdXNlZCB3
aXRoIG90aGVyIERhdGVUaW1lRm9ybWF0IG9wdGlvbnMiX3MpOworICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImRhdGVTdHlsZSBhbmQgdGltZVN0eWxlIG1h
eSBub3QgYmUgdXNlZCB3aXRoIG90aGVyIERhdGVUaW1lRm9ybWF0IG9wdGlvbnMiX3N0cik7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTI1LDEzICs5MjUsMTMgQEAgdm9p
ZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBTdHJpbmdWaWV3IHRpbWVab25lVmlldyhtX3Rp
bWVab25lKTsKICAgICAgICAgYXV0byBkYXRlRm9ybWF0RnJvbVN0eWxlID0gc3RkOjp1bmlxdWVf
cHRyPFVEYXRlRm9ybWF0LCBVRGF0ZUZvcm1hdERlbGV0ZXI+KHVkYXRfb3BlbihwYXJzZVVEYXRl
Rm9ybWF0U3R5bGUobV90aW1lU3R5bGUpLCBwYXJzZVVEYXRlRm9ybWF0U3R5bGUobV9kYXRlU3R5
bGUpLCBkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCB0aW1lWm9uZVZpZXcudXBjb252
ZXJ0ZWRDaGFyYWN0ZXJzKCksIHRpbWVab25lVmlldy5sZW5ndGgoKSwgbnVsbHB0ciwgLTEsICZz
dGF0dXMpKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUg
RGF0ZVRpbWVGb3JtYXQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zdHIpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGNvbnN0ZXhwciBib29sIGxv
Y2FsaXplZCA9IGZhbHNlOyAvLyBBbGlnbmVkIHdpdGggaG93IElDVSBTaW1wbGVEYXRlVGltZUZv
cm1hdDo6Zm9ybWF0IHdvcmtzLiBXZSBkbyBub3QgbmVlZCB0byB0cmFuc2xhdGUgdGhpcyB0byBs
b2NhbGl6ZWQgcGF0dGVybi4KICAgICAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uKHVkYXRfdG9QYXR0ZXJuLCBkYXRlRm9ybWF0RnJvbVN0eWxlLmdldCgpLCBsb2NhbGl6
ZWQsIHBhdHRlcm5CdWZmZXIpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3Jt
YXQiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtOTYwLDcgKzk2
MCw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgICAgICAgICBWZWN0b3I8VUNo
YXIsIDMyPiBza2VsZXRvbjsKICAgICAgICAgICAgICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZm
ZXJQcm9kdWNpbmdGdW5jdGlvbih1ZGF0cGdfZ2V0U2tlbGV0b24sIG51bGxwdHIsIHBhdHRlcm5C
dWZmZXIuZGF0YSgpLCBwYXR0ZXJuQnVmZmVyLnNpemUoKSwgc2tlbGV0b24pOwogICAgICAgICAg
ICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0
ZVRpbWVGb3JtYXQiX3MpOworICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRpbWVGb3JtYXQiX3N0
cik7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgcmVwbGFjZUhvdXJDeWNsZUluU2tlbGV0b24oc2tlbGV0b24sIHNwZWNpZmll
ZEhvdXIxMik7CkBAIC05NjgsNyArOTY4LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Omlu
aXRpYWxpemVEYXRlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAg
ICAgICAgICAgICAgICAgcGF0dGVybkJ1ZmZlciA9IHZtLmludGxDYWNoZSgpLmdldEJlc3REYXRl
VGltZVBhdHRlcm4oZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLCBza2VsZXRvbi5kYXRhKCksIHNr
ZWxldG9uLnNpemUoKSwgc3RhdHVzKTsKICAgICAgICAgICAgICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zKTsKKyAgICAg
ICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBpbml0aWFsaXplIERhdGVUaW1lRm9ybWF0Il9zdHIpOwogICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtOTc4LDcgKzk3
OCw3IEBAIHZvaWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgU3RyaW5nIHNrZWxldG9uID0g
c2tlbGV0b25CdWlsZGVyLnRvU3RyaW5nKCk7CiAgICAgICAgIHBhdHRlcm5CdWZmZXIgPSB2bS5p
bnRsQ2FjaGUoKS5nZXRCZXN0RGF0ZVRpbWVQYXR0ZXJuKGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9u
cywgU3RyaW5nVmlldyhza2VsZXRvbikudXBjb252ZXJ0ZWRDaGFyYWN0ZXJzKCkuZ2V0KCksIHNr
ZWxldG9uLmxlbmd0aCgpLCBzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZVRp
bWVGb3JtYXQiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICB9CkBA
IC05OTYsNyArOTk2LDcgQEAgdm9pZCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRl
VGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIFN0cmluZ1ZpZXcg
dGltZVpvbmVWaWV3KG1fdGltZVpvbmUpOwogICAgIG1fZGF0ZUZvcm1hdCA9IHN0ZDo6dW5pcXVl
X3B0cjxVRGF0ZUZvcm1hdCwgVURhdGVGb3JtYXREZWxldGVyPih1ZGF0X29wZW4oVURBVF9QQVRU
RVJOLCBVREFUX1BBVFRFUk4sIGRhdGFMb2NhbGVXaXRoRXh0ZW5zaW9ucy5kYXRhKCksIHRpbWVa
b25lVmlldy51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgdGltZVpvbmVWaWV3Lmxlbmd0aCgpLCBw
YXR0ZXJuLnVwY29udmVydGVkQ2hhcmFjdGVycygpLCBwYXR0ZXJuLmxlbmd0aCgpLCAmc3RhdHVz
KSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1h
dCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBEYXRlVGltZUZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTI4MywxMiArMTI4MywxMiBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1h
dDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsZSB2YWx1ZSkgYwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICghc3Rk
Ojppc2Zpbml0ZSh2YWx1ZSkpCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1h
dCBmb3JtYXQoKSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImRhdGUgdmFsdWUgaXMgbm90IGZpbml0ZSBpbiBEYXRlVGltZUZvcm1hdCBm
b3JtYXQoKSJfc3RyKTsKIAogICAgIFZlY3RvcjxVQ2hhciwgMzI+IHJlc3VsdDsKICAgICBhdXRv
IHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1ZGF0X2Zvcm1hdCwgbV9kYXRl
Rm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LCBudWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBkYXRlIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGRhdGUg
dmFsdWUiX3N0cik7CiAKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQpKTsK
IH0KQEAgLTEzNjUsMjQgKzEzNjUsMjQgQEAgSlNWYWx1ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZv
cm1hdFRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHYKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIXN0ZDo6aXNm
aW5pdGUodmFsdWUpKQotICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJkYXRlIHZhbHVlIGlzIG5vdCBmaW5pdGUgaW4gRGF0ZVRpbWVGb3JtYXQgZm9y
bWF0VG9QYXJ0cygpIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZGF0ZSB2YWx1ZSBpcyBub3QgZmluaXRlIGluIERhdGVUaW1lRm9ybWF0
IGZvcm1hdFRvUGFydHMoKSJfc3RyKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJP
X0VSUk9SOwogICAgIGF1dG8gZmllbGRzID0gc3RkOjp1bmlxdWVfcHRyPFVGaWVsZFBvc2l0aW9u
SXRlcmF0b3IsIFVGaWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyPih1ZmllbGRwb3NpdGVyX29w
ZW4oJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVs
ZCBwb3NpdGlvbiBpdGVyYXRvciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0
b3IiX3N0cik7CiAKICAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQ7CiAgICAgc3RhdHVzID0g
Y2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRfZm9ybWF0Rm9yRmllbGRzLCBtX2RhdGVG
b3JtYXQuZ2V0KCksIHZhbHVlLCByZXN1bHQsIGZpZWxkcy5nZXQoKSk7CiAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgZGF0ZSB2YWx1ZSJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBk
YXRlIHZhbHVlIl9zdHIpOwogCiAgICAgSlNBcnJheSogcGFydHMgPSBKU0FycmF5Ojp0cnlDcmVh
dGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JJbmRleGluZ1R5cGVEdXJpbmdB
bGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsKICAgICBpZiAoIXBhcnRzKQogICAg
ICAgICByZXR1cm4gdGhyb3dPdXRPZk1lbW9yeUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwog
CiAgICAgYXV0byByZXN1bHRTdHJpbmcgPSBTdHJpbmcocmVzdWx0KTsKLSAgICBhdXRvIGxpdGVy
YWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zKTsKKyAgICBhdXRv
IGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJsaXRlcmFsIl9zdHIpOwog
CiAgICAgaW50MzJfdCByZXN1bHRMZW5ndGggPSByZXN1bHQuc2l6ZSgpOwogICAgIGludDMyX3Qg
cHJldmlvdXNFbmRJbmRleCA9IDA7CkBAIC0xNDM1LDcgKzE0MzUsNyBAQCBVRGF0ZUludGVydmFs
Rm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVj
ZXNzYXJ5KEpTRwogICAgIHsKICAgICAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVj
aW5nRnVuY3Rpb24odWRhdF90b1BhdHRlcm4sIG1fZGF0ZUZvcm1hdC5nZXQoKSwgZmFsc2UsIHBh
dHRlcm4pOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBE
YXRlSW50ZXJ2YWxGb3JtYXQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVJbnRlcnZhbEZvcm1hdCJf
c3RyKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9CiAgICAgfQpAQCAt
MTQ0NCw3ICsxNDQ0LDcgQEAgVURhdGVJbnRlcnZhbEZvcm1hdCogSW50bERhdGVUaW1lRm9ybWF0
OjpjcmVhdGVEYXRlSW50ZXJ2YWxGb3JtYXRJZk5lY2Vzc2FyeShKU0cKICAgICB7CiAgICAgICAg
IGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVkYXRwZ19nZXRTa2Vs
ZXRvbiwgbnVsbHB0ciwgcGF0dGVybi5kYXRhKCksIHBhdHRlcm4uc2l6ZSgpLCBza2VsZXRvbik7
CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVJbnRl
cnZhbEZvcm1hdCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgRGF0ZUludGVydmFsRm9ybWF0Il9zdHIpOwog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDYzLDcg
KzE0NjMsNyBAQCBVRGF0ZUludGVydmFsRm9ybWF0KiBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0
ZURhdGVJbnRlcnZhbEZvcm1hdElmTmVjZXNzYXJ5KEpTRwogICAgIFN0cmluZ1ZpZXcgdGltZVpv
bmVWaWV3KG1fdGltZVpvbmUpOwogICAgIG1fZGF0ZUludGVydmFsRm9ybWF0ID0gc3RkOjp1bmlx
dWVfcHRyPFVEYXRlSW50ZXJ2YWxGb3JtYXQsIFVEYXRlSW50ZXJ2YWxGb3JtYXREZWxldGVyPih1
ZHRpdHZmbXRfb3BlbihkYXRhTG9jYWxlV2l0aEV4dGVuc2lvbnMuZGF0YSgpLCBza2VsZXRvbi5k
YXRhKCksIHNrZWxldG9uLnNpemUoKSwgdGltZVpvbmVWaWV3LnVwY29udmVydGVkQ2hhcmFjdGVy
cygpLCB0aW1lWm9uZVZpZXcubGVuZ3RoKCksICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBpbml0aWFsaXplIERhdGVJbnRlcnZhbEZvcm1hdCJfcyk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBE
YXRlSW50ZXJ2YWxGb3JtYXQiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0K
ICAgICByZXR1cm4gbV9kYXRlSW50ZXJ2YWxGb3JtYXQuZ2V0KCk7CkBAIC0xNTYyLDcgKzE1NjIs
NyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YQogICAgIHN0YXJ0RGF0ZSA9IHRpbWVDbGlwKHN0
YXJ0RGF0ZSk7CiAgICAgZW5kRGF0ZSA9IHRpbWVDbGlwKGVuZERhdGUpOwogICAgIGlmIChzdGQ6
OmlzbmFuKHN0YXJ0RGF0ZSkgfHwgc3RkOjppc25hbihlbmREYXRlKSkgewotICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBkYXRlIGlzIG91dCBvZiBy
YW5nZSJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UGFzc2VkIGRhdGUgaXMgb3V0IG9mIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KIApAQCAtMTU3MywxNCArMTU3MywxNCBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1h
dDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YQog
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8gcmVzdWx0ID0g
Zm9ybWF0dGVkVmFsdWVGcm9tRGF0ZVJhbmdlKCpkYXRlSW50ZXJ2YWxGb3JtYXQsICptX2RhdGVG
b3JtYXQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3N0
cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgLy8gVUZvcm1hdHRlZFZhbHVl
IGlzIG93bmVkIGJ5IFVGb3JtYXR0ZWREYXRlSW50ZXJ2YWwuIFdlIGRvIG5vdCBuZWVkIHRvIGNs
b3NlIGl0LgogICAgIGF1dG8gZm9ybWF0dGVkVmFsdWUgPSB1ZHRpdHZmbXRfcmVzdWx0QXNWYWx1
ZShyZXN1bHQuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZv
cm1hdCBkYXRlIGludGVydmFsIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTE1OTAsNyArMTU5MCw3IEBAIEpTVmFsdWUgSW50
bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgc3RhCiAgICAgLy8gYHNvdXJjZTogInNoYXJlZCJgIGFkZGl0aW9uYWwgZmllbGRz
LgogICAgIGJvb2wgZXF1YWwgPSBkYXRlRmllbGRzUHJhY3RpY2FsbHlFcXVhbChmb3JtYXR0ZWRW
YWx1ZSwgc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBp
bnRlcnZhbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCkBAIC0xNjAwLDcgKzE2MDAsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZv
cm1hdDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHN0
YQogICAgIGludDMyX3QgZm9ybWF0dGVkU3RyaW5nTGVuZ3RoID0gMDsKICAgICBjb25zdCBVQ2hh
ciogZm9ybWF0dGVkU3RyaW5nUG9pbnRlciA9IHVmbXR2YWxfZ2V0U3RyaW5nKGZvcm1hdHRlZFZh
bHVlLCAmZm9ybWF0dGVkU3RyaW5nTGVuZ3RoLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwi
X3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xNjA5LDcgKzE2MDksNyBA
QCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHN0YQogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZlcjsK
ICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1ZHRpdHZmbXRf
Zm9ybWF0LCBkYXRlSW50ZXJ2YWxGb3JtYXQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgYnVmZmVyLCBu
dWxscHRyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZh
bCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgfQogCkBAIC0xNjI5LDcgKzE2MjksNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6
Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdQogICAg
IHN0YXJ0RGF0ZSA9IHRpbWVDbGlwKHN0YXJ0RGF0ZSk7CiAgICAgZW5kRGF0ZSA9IHRpbWVDbGlw
KGVuZERhdGUpOwogICAgIGlmIChzdGQ6OmlzbmFuKHN0YXJ0RGF0ZSkgfHwgc3RkOjppc25hbihl
bmREYXRlKSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlBhc3NlZCBkYXRlIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIGRhdGUgaXMgb3V0IG9mIHJhbmdlIl9zdHIp
OwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTYzOSwxOCArMTYzOSwxOCBAQCBK
U1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwogICAgIGF1dG8gcmVzdWx0ID0gZm9ybWF0dGVkVmFsdWVGcm9tRGF0ZVJhbmdlKCpkYXRl
SW50ZXJ2YWxGb3JtYXQsICptX2RhdGVGb3JtYXQsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSwgc3RhdHVz
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8g
Zm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQog
CiAgICAgLy8gVUZvcm1hdHRlZFZhbHVlIGlzIG93bmVkIGJ5IFVGb3JtYXR0ZWREYXRlSW50ZXJ2
YWwuIFdlIGRvIG5vdCBuZWVkIHRvIGNsb3NlIGl0LgogICAgIGF1dG8gZm9ybWF0dGVkVmFsdWUg
PSB1ZHRpdHZmbXRfcmVzdWx0QXNWYWx1ZShyZXN1bHQuZ2V0KCksICZzdGF0dXMpOwogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0
ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKLSAgICBhdXRv
IHNoYXJlZFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgInNoYXJlZCJfcyk7CisgICAg
YXV0byBzaGFyZWRTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJzaGFyZWQiX3N0cik7
CiAKICAgICAvLyBJZiB0aGUgZm9ybWF0dGVkIHBhcnRzIG9mIHN0YXJ0RGF0ZSBhbmQgZW5kRGF0
ZSBhcmUgdGhlIHNhbWUsIGl0IGlzIHBvc3NpYmxlIHRoYXQgdGhlIHJlc3VsdGVkIHN0cmluZyBk
b2VzIG5vdCBsb29rIGxpa2UgcmFuZ2UuCiAgICAgLy8gRm9yIGV4YW1wbGUsIGlmIHRoZSByZXF1
ZXN0ZWQgZm9ybWF0IG9ubHkgaW5jbHVkZXMgInllYXIiIGFuZCBzdGFydERhdGUgYW5kIGVuZERh
dGUgYXJlIHRoZSBzYW1lIHllYXIsIHRoZSByZXN1bHQganVzdCBjb250YWlucyBvbmUgeWVhci4K
QEAgLTE2NTgsNyArMTY1OCw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRS
YW5nZVRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91CiAgICAgLy8gYHNv
dXJjZTogInNoYXJlZCJgIGFkZGl0aW9uYWwgZmllbGRzLgogICAgIGJvb2wgZXF1YWwgPSBkYXRl
RmllbGRzUHJhY3RpY2FsbHlFcXVhbChmb3JtYXR0ZWRWYWx1ZSwgc3RhdHVzKTsKICAgICBpZiAo
VV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUg
aW50ZXJ2YWwiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xNzEzLDcg
KzE3MTMsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdQogICAgIGludDMyX3QgZm9ybWF0dGVk
U3RyaW5nTGVuZ3RoID0gMDsKICAgICBjb25zdCBVQ2hhciogZm9ybWF0dGVkU3RyaW5nUG9pbnRl
ciA9IHVmbXR2YWxfZ2V0U3RyaW5nKGZvcm1hdHRlZFZhbHVlLCAmZm9ybWF0dGVkU3RyaW5nTGVu
Z3RoLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBp
bnRlcnZhbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGRhdGUgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogICAgIFN0cmluZyByZXN1bHRTdHJpbmcoZm9ybWF0dGVkU3RyaW5nUG9pbnRl
ciwgZm9ybWF0dGVkU3RyaW5nTGVuZ3RoKTsKQEAgLTE3MjIsMTMgKzE3MjIsMTMgQEAgSlNWYWx1
ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0cyhKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBkb3UKICAgICAvLyBTbyB3ZSBkbyBub3QgY29uc3RyYWludCBpdGVyYXRv
ci4KICAgICBhdXRvIGl0ZXJhdG9yID0gc3RkOjp1bmlxdWVfcHRyPFVDb25zdHJhaW5lZEZpZWxk
UG9zaXRpb24sIElDVURlbGV0ZXI8dWNmcG9zX2Nsb3NlPj4odWNmcG9zX29wZW4oJnN0YXR1cykp
OwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgZGF0ZSBpbnRlcnZhbCJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAK
LSAgICBhdXRvIHN0YXJ0UmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJzdGFy
dFJhbmdlIl9zKTsKLSAgICBhdXRvIGVuZFJhbmdlU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5n
KHZtLCAiZW5kUmFuZ2UiX3MpOwotICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgImxpdGVyYWwiX3MpOworICAgIGF1dG8gc3RhcnRSYW5nZVN0cmluZyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgInN0YXJ0UmFuZ2UiX3N0cik7CisgICAgYXV0byBlbmRSYW5n
ZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVuZFJhbmdlIl9zdHIpOworICAgIGF1
dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3N0cik7
CiAKICAgICBXVEY6OlJhbmdlPGludDMyX3Q+IHN0YXJ0UmFuZ2UgeyAtMSwgLTEgfTsKICAgICBX
VEY6OlJhbmdlPGludDMyX3Q+IGVuZFJhbmdlIHsgLTEsIC0xIH07CkBAIC0xNzU1LDcgKzE3NTUs
NyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdQogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAg
IGJvb2wgbmV4dCA9IHVmbXR2YWxfbmV4dFBvc2l0aW9uKGZvcm1hdHRlZFZhbHVlLCBpdGVyYXRv
ci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwog
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQogICAgICAgICBpZiAoIW5leHQpCkBA
IC0xNzYzLDEzICsxNzYzLDEzIEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRS
YW5nZVRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91CiAKICAgICAgICAg
aW50MzJfdCBjYXRlZ29yeSA9IHVjZnBvc19nZXRDYXRlZ29yeShpdGVyYXRvci5nZXQoKSwgJnN0
YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBp
bnRlcnZhbCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zdHIpOwogICAgICAgICAgICAg
cmV0dXJuIHsgfTsKICAgICAgICAgfQogCiAgICAgICAgIGludDMyX3QgZmllbGRUeXBlID0gdWNm
cG9zX2dldEZpZWxkKGl0ZXJhdG9yLmdldCgpLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBkYXRlIGludGVydmFsIl9zKTsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGRh
dGUgaW50ZXJ2YWwiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAK
QEAgLTE3NzcsNyArMTc3Nyw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXRS
YW5nZVRvUGFydHMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91CiAgICAgICAgIGlu
dDMyX3QgZW5kSW5kZXggPSAwOwogICAgICAgICB1Y2Zwb3NfZ2V0SW5kZXhlcyhpdGVyYXRvci5n
ZXQoKSwgJmJlZ2luSW5kZXgsICZlbmRJbmRleCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBk
YXRlIGludGVydmFsIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQog
CkBAIC0xODI4LDcgKzE4MjgsNyBAQCBKU1ZhbHVlIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0
UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdQogI2Vsc2UKICAg
ICBVTlVTRURfUEFSQU0oc3RhcnREYXRlKTsKICAgICBVTlVTRURfUEFSQU0oZW5kRGF0ZSk7Ci0g
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQg
ZGF0ZSBpbnRlcnZhbCJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgZGF0ZSBpbnRlcnZhbCJfc3RyKTsKICAgICByZXR1cm4geyB9
OwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYjQ1MWVlMDli
MWRkZjE3YWY1NzJhYzlhNGViYjkxNzNlZTZmMmI3My4uM2I4MjYwNDQ0MTRiZGRjMzAwYjFmY2Mw
ZmNkOWRmNTVjMzNiMGQ3NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtNzQs
NyArNzQsNyBAQCBJbnRsRGF0ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvcjo6SW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqCiAKIHZvaWQgSW50bERhdGVUaW1lRm9y
bWF0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bERhdGVUaW1lRm9ybWF0
UHJvdG90eXBlKiBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hD
cmVhdGlvbih2bSwgMCwgIkRhdGVUaW1lRm9ybWF0Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6
V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCAwLCAiRGF0ZVRpbWVGb3JtYXQiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRT
dHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBkYXRlVGltZUZvcm1hdFByb3RvdHlwZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
LmNwcAppbmRleCBlNzQxMmNjMjgyMTJmYmE5ZmEyMTg5ZGY2NDQ2OGE0YjNmYzM4MTBhLi40M2Yy
ZDRiMTc0MWQxYmE4MDIxOTIxYmQ4NjJlZmY5OWIzN2QwMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdFByb3Rv
dHlwZS5jcHAKQEAgLTEzOSw3ICsxMzksNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50
bERhdGVUaW1lRm9ybWF0UHJvdG90eXBlR2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplYwogICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgLy8gMi4gUmV0dXJuSWZBYnJ1
cHQoZHRmKS4KICAgICBpZiAoVU5MSUtFTFkoIWR0ZikpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRp
bWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERh
dGVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90
eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVUaW1lRm9ybWF0Il9z
dHIpKTsKIAogICAgIEpTQm91bmRGdW5jdGlvbiogYm91bmRGb3JtYXQgPSBkdGYtPmJvdW5kRm9y
bWF0KCk7CiAgICAgLy8gMy4gSWYgdGhlIFtbYm91bmRGb3JtYXRdXSBpbnRlcm5hbCBzbG90IG9m
IHRoaXMgRGF0ZVRpbWVGb3JtYXQgb2JqZWN0IGlzIHVuZGVmaW5lZCwKQEAgLTE0Nyw3ICsxNDcs
NyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bERhdGVUaW1lRm9ybWF0UHJvdG90eXBl
R2V0dGVyRm9ybWF0LCAoSlNHbG9iYWxPYmplYwogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gZHRmLT5nbG9iYWxPYmplY3Qodm0pOwogICAgICAgICAvLyBhLiBMZXQgRiBi
ZSBhIG5ldyBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgYXMgZGVmaW5lZCBpbiAxMi4zLjQuCiAg
ICAgICAgIC8vIGIuIFRoZSB2YWx1ZSBvZiBG4oCZcyBsZW5ndGggcHJvcGVydHkgaXMgMS4gKE5v
dGU6IEbigJlzIGxlbmd0aCBwcm9wZXJ0eSB3YXMgMCBpbiBFQ01BLTQwMiAxLjApCi0gICAgICAg
IEpTRnVuY3Rpb24qIHRhcmdldE9iamVjdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAxLCAiZm9ybWF0Il9zLCBpbnRsRGF0ZVRpbWVGb3JtYXRGdW5jRm9ybWF0RGF0ZVRp
bWUsIE5vSW50cmluc2ljKTsKKyAgICAgICAgSlNGdW5jdGlvbiogdGFyZ2V0T2JqZWN0ID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJmb3JtYXQiX3N0ciwgaW50bERh
dGVUaW1lRm9ybWF0RnVuY0Zvcm1hdERhdGVUaW1lLCBOb0ludHJpbnNpYyk7CiAgICAgICAgIC8v
IGMuIExldCBiZiBiZSBCb3VuZEZ1bmN0aW9uQ3JlYXRlKEYsIMKrdGhpcyB2YWx1ZcK7KS4KICAg
ICAgICAgYm91bmRGb3JtYXQgPSBKU0JvdW5kRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2Jq
ZWN0LCB0YXJnZXRPYmplY3QsIGR0ZiwgbnVsbHB0ciwgMSwgbnVsbHB0cik7CiAgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTY5LDcgKzE2
OSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRpbWVGb3JtYXRQcm90b3R5
cGVGdW5jRm9ybWF0VG9QYXJ0cywgKEpTR2xvYmFsCiAgICAgLy8gRG8gbm90IHVzZSB1bndyYXBG
b3JPbGRGdW5jdGlvbnMuCiAgICAgYXV0byogZGF0ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0
PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoVU5MSUtFTFkoIWRhdGVUaW1lRm9ybWF0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EYXRlVGltZUZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IERhdGVUaW1lRm9ybWF0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJv
dG90eXBlLmZvcm1hdFRvUGFydHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEYXRlVGlt
ZUZvcm1hdCJfc3RyKSk7CiAKICAgICBKU1ZhbHVlIGRhdGUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOwogICAgIGRvdWJsZSB2YWx1ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRp
bWVWYWx1ZShnbG9iYWxPYmplY3QsIGRhdGUpOwpAQCAtMTg3LDIwICsxODcsMjAgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1hdFByb3RvdHlwZUZ1bmNGb3JtYXRS
YW5nZSwgKEpTR2xvYmFsT2IKICAgICAvLyBEbyBub3QgdXNlIHVud3JhcEZvck9sZEZ1bmN0aW9u
cy4KICAgICBhdXRvKiBkYXRlVGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bERhdGVUaW1l
Rm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSgh
ZGF0ZVRpbWVGb3JtYXQpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlw
ZS5mb3JtYXRSYW5nZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERhdGVUaW1lRm9ybWF0
Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFJh
bmdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQiX3N0cikpOwog
CiAgICAgSlNWYWx1ZSBzdGFydERhdGVWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAg
ICAgSlNWYWx1ZSBlbmREYXRlVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAg
aWYgKHN0YXJ0RGF0ZVZhbHVlLmlzVW5kZWZpbmVkKCkgfHwgZW5kRGF0ZVZhbHVlLmlzVW5kZWZp
bmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJzdGFydERhdGUgb3IgZW5kRGF0ZSBpcyB1bmRlZmluZWQiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVu
ZERhdGUgaXMgdW5kZWZpbmVkIl9zdHIpOwogCiAgICAgZG91YmxlIHN0YXJ0RGF0ZSA9IEludGxE
YXRlVGltZUZvcm1hdDo6aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIHN0YXJ0RGF0
ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGRvdWJs
ZSBlbmREYXRlID0gSW50bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2Jh
bE9iamVjdCwgZW5kRGF0ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogICAgIGlmIChzdGFydERhdGUgPiBlbmREYXRlKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBpcyBsYXJnZXIgdGhh
biBlbmREYXRlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJzdGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfc3RyKTsKIAog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9y
bWF0LT5mb3JtYXRSYW5nZShnbG9iYWxPYmplY3QsIHN0YXJ0RGF0ZSwgZW5kRGF0ZSkpKTsKIH0K
QEAgLTIxNCwyMCArMjE0LDIwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsRGF0ZVRp
bWVGb3JtYXRQcm90b3R5cGVGdW5jRm9ybWF0UmFuZ2VUb1BhcnRzLCAoSlNHCiAgICAgLy8gRG8g
bm90IHVzZSB1bndyYXBGb3JPbGRGdW5jdGlvbnMuCiAgICAgYXV0byogZGF0ZVRpbWVGb3JtYXQg
PSBqc0R5bmFtaWNDYXN0PEludGxEYXRlVGltZUZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoIWRhdGVUaW1lRm9ybWF0KSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0UmFuZ2VUb1BhcnRzIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUuZm9ybWF0UmFuZ2VUb1BhcnRzIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQiX3N0cikpOwogCiAgICAgSlNWYWx1ZSBz
dGFydERhdGVWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgSlNWYWx1ZSBlbmRE
YXRlVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgaWYgKHN0YXJ0RGF0ZVZh
bHVlLmlzVW5kZWZpbmVkKCkgfHwgZW5kRGF0ZVZhbHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzdGFydERhdGUg
b3IgZW5kRGF0ZSBpcyB1bmRlZmluZWQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnREYXRlIG9yIGVuZERhdGUgaXMgdW5kZWZp
bmVkIl9zdHIpOwogCiAgICAgZG91YmxlIHN0YXJ0RGF0ZSA9IEludGxEYXRlVGltZUZvcm1hdDo6
aGFuZGxlRGF0ZVRpbWVWYWx1ZShnbG9iYWxPYmplY3QsIHN0YXJ0RGF0ZVZhbHVlKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGRvdWJsZSBlbmREYXRlID0gSW50
bERhdGVUaW1lRm9ybWF0OjpoYW5kbGVEYXRlVGltZVZhbHVlKGdsb2JhbE9iamVjdCwgZW5kRGF0
ZVZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChz
dGFydERhdGUgPiBlbmREYXRlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0RGF0ZSBpcyBsYXJnZXIgdGhhbiBlbmREYXRlIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJz
dGFydERhdGUgaXMgbGFyZ2VyIHRoYW4gZW5kRGF0ZSJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRhdGVUaW1lRm9ybWF0LT5mb3JtYXRSYW5n
ZVRvUGFydHMoZ2xvYmFsT2JqZWN0LCBzdGFydERhdGUsIGVuZERhdGUpKSk7CiB9CkBAIC0yNDIs
NyArMjQyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxEYXRlVGltZUZvcm1hdFBy
b3RvdHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2IKICAgICBhdXRvKiBkYXRlVGltZUZv
cm1hdCA9IEludGxEYXRlVGltZUZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25zKGdsb2JhbE9i
amVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKICAgICBpZiAoVU5MSUtFTFkoIWRhdGVUaW1lRm9ybWF0KSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQiX3MpKTsKKyAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50
bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgRGF0ZVRpbWVGb3JtYXQiX3N0cikpOwogCiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGF0ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0
aW9ucyhnbG9iYWxPYmplY3QpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwCmluZGV4IGZiZTg2ZTRiN2VhYTA2M2NiYjY0NjNi
OWExZmE5ZjcxYjI5MTg3ZTQuLmVkMTE5YjAxMDVjZmNiZWUxYjNhZjVlODkyYTI5M2E3ZDMyZDY4
OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5
TmFtZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5
TmFtZXMuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgSW50bERpc3BsYXlOYW1lczo6aW5pdGlh
bGl6ZURpc3BsYXlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAg
ICBtX2xvY2FsZSA9IHJlc29sdmVkLmxvY2FsZTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gaW5pdGlhbGl6ZSBEaXNwbGF5TmFtZXMgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0
aWFsaXplIERpc3BsYXlOYW1lcyBkdWUgdG8gaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTk5LDcgKzk5LDcgQEAgdm9pZCBJbnRsRGlzcGxheU5hbWVz
Ojppbml0aWFsaXplRGlzcGxheU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmEKICAgICBhdXRvIHR5cGUgPSBpbnRsT3B0aW9uPHN0ZDo6b3B0aW9uYWw8VHlwZT4+KGdsb2Jh
bE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+dHlwZSwgeyB7ICJsYW5ndWFnZSJf
cywgVHlwZTo6TGFuZ3VhZ2UgfSwgeyAicmVnaW9uIl9zLCBUeXBlOjpSZWdpb24gfSwgeyAic2Ny
aXB0Il9zLCBUeXBlOjpTY3JpcHQgfSwgeyAiY3VycmVuY3kiX3MsIFR5cGU6OkN1cnJlbmN5IH0s
IHsgImNhbGVuZGFyIl9zLCBUeXBlOjpDYWxlbmRhciB9LCB7ICJkYXRlVGltZUZpZWxkIl9zLCBU
eXBlOjpEYXRlVGltZUZpZWxkIH0gfSwgInR5cGUgbXVzdCBiZSBlaXRoZXIgXCJsYW5ndWFnZVwi
LCBcInJlZ2lvblwiLCBcInNjcmlwdFwiLCBcImN1cnJlbmN5XCIsIFwiY2FsZW5kYXJcIiwgb3Ig
XCJkYXRlVGltZUZpZWxkXCIiX3MsIHN0ZDo6bnVsbG9wdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIXR5cGUpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInR5cGUgbXVzdCBub3QgYmUgdW5kZWZpbmVkIl9z
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInR5cGUgbXVz
dCBub3QgYmUgdW5kZWZpbmVkIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIG1f
dHlwZSA9IHR5cGUudmFsdWUoKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCB2b2lkIEludGxEaXNwbGF5
TmFtZXM6OmluaXRpYWxpemVEaXNwbGF5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYQogICAgIG1fbG9jYWxlQ1N0cmluZyA9IG1fbG9jYWxlLnV0ZjgoKTsKICAgICBtX2Rp
c3BsYXlOYW1lcyA9IHN0ZDo6dW5pcXVlX3B0cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBVTG9jYWxl
RGlzcGxheU5hbWVzRGVsZXRlcj4odWxkbl9vcGVuRm9yQ29udGV4dChtX2xvY2FsZUNTdHJpbmcu
ZGF0YSgpLCBjb250ZXh0cywgV1RGX0FSUkFZX0xFTkdUSChjb250ZXh0cyksICZzdGF0dXMpKTsK
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIERpc3BsYXlOYW1lcyJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBEaXNwbGF5TmFtZXMiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9
CkBAIC0xOTksNyArMTk5LDcgQEAgSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY28KICAgICBzd2l0Y2gg
KG1fdHlwZSkgewogICAgIGNhc2UgVHlwZTo6TGFuZ3VhZ2U6IHsKICAgICAgICAgaWYgKCFpc1Vu
aWNvZGVMYW5ndWFnZUlkKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGxhbmd1YWdlIGlkIl9zKTsKKyAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQg
aXMgbm90IGEgbGFuZ3VhZ2UgaWQiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAg
ICAgICB9CiAgICAgICAgIGNhbm9uaWNhbENvZGUgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxh
eU5hbWVzKG1fdHlwZSwgV1RGTW92ZShjb2RlKSk7CkBAIC0yMDksNyArMjA5LDcgQEAgSlNWYWx1
ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGNvZGVWYWx1ZSkgY28KICAgICB9CiAgICAgY2FzZSBUeXBlOjpSZWdpb246IHsKICAgICAg
ICAgaWYgKCFpc1VuaWNvZGVSZWdpb25TdWJ0YWcoY29kZSkpIHsKLSAgICAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGEgcmVnaW9u
IHN1YnRhZyJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHJlZ2lvbiBzdWJ0YWciX3N0cik7CiAgICAgICAgICAg
ICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIGNhbm9uaWNhbENvZGUgPSBjYW5vbmlj
YWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgV1RGTW92ZShjb2RlKSk7CkBAIC0yMTgs
NyArMjE4LDcgQEAgSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY28KICAgICB9CiAgICAgY2FzZSBUeXBl
OjpTY3JpcHQ6IHsKICAgICAgICAgaWYgKCFpc1VuaWNvZGVTY3JpcHRTdWJ0YWcoY29kZSkpIHsK
LSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1l
bnQgaXMgbm90IGEgc2NyaXB0IHN1YnRhZyJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHNjcmlwdCBzdWJ0YWci
X3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIGNhbm9u
aWNhbENvZGUgPSBjYW5vbmljYWxpemVDb2RlRm9yRGlzcGxheU5hbWVzKG1fdHlwZSwgV1RGTW92
ZShjb2RlKSk7CkBAIC0yMzQsNyArMjM0LDcgQEAgSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpv
ZihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY28KICAg
ICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZGlzcGxheW5hbWVzLyNzZWMt
Y2Fub25pY2FsY29kZWZvcmRpc3BsYXluYW1lcwogICAgICAgICAvLyA1LiBJZiAhIElzV2VsbEZv
cm1lZEN1cnJlbmN5Q29kZShjb2RlKSBpcyBmYWxzZSwgdGhyb3cgYSBSYW5nZUVycm9yIGV4Y2Vw
dGlvbi4KICAgICAgICAgaWYgKCFpc1dlbGxGb3JtZWRDdXJyZW5jeUNvZGUoY29kZSkpIHsKLSAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQg
aXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kgY29kZSJfcyk7CisgICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIHdlbGwt
Zm9ybWVkIGN1cnJlbmN5IGNvZGUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAg
ICAgICB9CiAgICAgICAgIEFTU0VSVChjb2RlLmlzQWxsQVNDSUkoKSk7CkBAIC0yNjQsNyArMjY0
LDcgQEAgSlNWYWx1ZSBJbnRsRGlzcGxheU5hbWVzOjpvZihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGNvZGVWYWx1ZSkgY28KICAgICAgICAgVUJvb2wgaXNDaG9pY2VGb3Jt
YXQgPSBmYWxzZTsgLy8gV2UgbmVlZCB0byBwYXNzIHRoaXMsIG90aGVyd2lzZSwgd2Ugd2lsbCBz
ZWUgY3Jhc2ggaW4gSUNVIDY0LgogICAgICAgICBjb25zdCBVQ2hhciogcmVzdWx0ID0gdWN1cnJf
Z2V0TmFtZShjdXJyZW5jeSwgbV9sb2NhbGVDU3RyaW5nLmRhdGEoKSwgc3R5bGUsICZpc0Nob2lj
ZUZvcm1hdCwgJmxlbmd0aCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmFpbGVkIHRvIHF1ZXJ5IGEgZGlzcGxheSBuYW1lLiJfcyk7CisgICAgICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBxdWVyeSBh
IGRpc3BsYXkgbmFtZS4iX3N0cik7CiAgICAgICAgIC8vIHVjdXJyX2dldE5hbWUgcmV0dXJucyBV
X1VTSU5HX0RFRkFVTFRfV0FSTklORyBpZiB0aGUgZGlzcGxheS1uYW1lIGlzIG5vdCBmb3VuZC4g
QnV0IFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIGlzIHJldHVybmVkIGV2ZW4gaWYKICAgICAgICAg
Ly8gbmFycm93IGFuZCBzaG9ydCByZXN1bHRzIGFyZSB0aGUgc2FtZTogbmFycm93ICJVU0QiIGlz
ICIkIiB3aXRoIFVfVVNJTkdfREVGQVVMVF9XQVJOSU5HIHNpbmNlIHNob3J0ICJVU0QiIGlzIGFs
c28gIiQiLiBXZSBuZWVkIHRvIGNoZWNrCiAgICAgICAgIC8vIHJlc3VsdCA9PSBjdXJyZW5jeSB0
byBjaGVjayB3aGV0aGVyIElDVSBhY3R1YWxseSBmYWlsZWQgdG8gZmluZCB0aGUgY29ycmVzcG9u
ZGluZyBkaXNwbGF5LW5hbWUuIFRoaXMgcG9pbnRlciBjb21wYXJpc29uIGlzIGVuc3VyZWQgYnkK
QEAgLTI3Nyw3ICsyNzcsNyBAQCBKU1ZhbHVlIEludGxEaXNwbGF5TmFtZXM6Om9mKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgY29kZVZhbHVlKSBjbwogICAgIGNhc2UgVHlw
ZTo6Q2FsZW5kYXI6IHsKICAgICAgICAgLy8gYS4gSWYgY29kZSBkb2VzIG5vdCBtYXRjaCB0aGUg
VW5pY29kZSBMb2NhbGUgSWRlbnRpZmllciB0eXBlIG5vbnRlcm1pbmFsLCB0aHJvdyBhIFJhbmdl
RXJyb3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAoIWlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJU
eXBlKGNvZGUpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgImFyZ3VtZW50IGlzIG5vdCBhIGNhbGVuZGFyIGNvZGUiX3MpOworICAgICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBj
YWxlbmRhciBjb2RlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgfQog
ICAgICAgICBjYW5vbmljYWxDb2RlID0gY2Fub25pY2FsaXplQ29kZUZvckRpc3BsYXlOYW1lcyht
X3R5cGUsIFdURk1vdmUoY29kZSkpOwpAQCAtMzE5LDcgKzMxOSw3IEBAIEpTVmFsdWUgSW50bERp
c3BsYXlOYW1lczo6b2YoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBjb2Rl
VmFsdWUpIGNvCiAKICAgICAgICAgYXV0byBmaWVsZCA9IGlzVmFsaWREYXRlVGltZUZpZWxkQ29k
ZShjb2RlKTsKICAgICAgICAgaWYgKCFmaWVsZCkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBpcyBub3QgYSBkYXRlVGltZUZpZWxk
IGNvZGUiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJhcmd1bWVudCBpcyBub3QgYSBkYXRlVGltZUZpZWxkIGNvZGUiX3N0cik7CiAgICAgICAg
ICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAKQEAgLTM0Nyw3ICszNDcsNyBAQCBKU1ZhbHVl
IEludGxEaXNwbGF5TmFtZXM6Om9mKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFs
dWUgY29kZVZhbHVlKSBjbwogICAgICAgICAvLyBXZSBzaG91bGQgcmV0dXJuIHVuZGVmaW5lZCBp
ZiBmYWxsYmFjayBpcyAibm9uZSIuIE90aGVyd2lzZSwgd2Ugc2hvdWxkIHJldHVybiBpbnB1dCB2
YWx1ZS4KICAgICAgICAgaWYgKHN0YXR1cyA9PSBVX0lMTEVHQUxfQVJHVU1FTlRfRVJST1IpCiAg
ICAgICAgICAgICByZXR1cm4gKG1fZmFsbGJhY2sgPT0gRmFsbGJhY2s6Ok5vbmUpID8ganNVbmRl
ZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBTdHJpbmcoY2Fub25pY2FsQ29kZS5kYXRhKCksIGNhbm9u
aWNhbENvZGUubGVuZ3RoKCkpKTsKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUuIl9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQg
dG8gcXVlcnkgYSBkaXNwbGF5IG5hbWUuIl9zdHIpOwogICAgIH0KICAgICByZXR1cm4ganNTdHJp
bmcodm0sIFN0cmluZyhidWZmZXIpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3IuY3BwCmluZGV4
IGVhMDUxYmIzNGM1ZTFkOTIyZDdiZjA4NGYxM2E1ZTQ2ZjEwYzQzMjQuLjg3NTMyMTA1ZGU5Njdj
ZWUzYTNmYmM0ZWQ5ZjQ2ZjVjNzA5OWYyODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXNDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lc0NvbnN0cnVjdG9yLmNwcApA
QCAtNzIsNyArNzIsNyBAQCBJbnRsRGlzcGxheU5hbWVzQ29uc3RydWN0b3I6OkludGxEaXNwbGF5
TmFtZXNDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydQogCiB2b2lkIEludGxEaXNw
bGF5TmFtZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsRGlzcGxheU5h
bWVzUHJvdG90eXBlKiBkaXNwbGF5TmFtZXNQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNo
Q3JlYXRpb24odm0sIDIsICJEaXNwbGF5TmFtZXMiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0s
IDIsICJEaXNwbGF5TmFtZXMiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1
Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBkaXNwbGF5TmFtZXNQcm90b3R5cGUsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBkaXNwbGF5TmFtZXNQcm90b3R5cGUtPnB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERp
c3BsYXlOYW1lc1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcAppbmRleCA0NWE2MjA1ZDEyYjhkOGIzNmQyZjhi
YWE5ZTc3M2VlNDEyYzAyNTQyLi4zMmFiODYxZmY1OWJjYzE0NTBmNjgyN2JiMTQ4ZjU1ZmQyOTE4
ZmQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxh
eU5hbWVzUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsRGlzcGxheU5hbWVzUHJvdG90eXBlLmNwcApAQCAtODEsNyArODEsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oaW50bERpc3BsYXlOYW1lc1Byb3RvdHlwZUZ1bmNPZiwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYQogCiAgICAgYXV0byogZGlzcGxheU5hbWVzID0ganNEeW5hbWljQ2FzdDxJ
bnRsRGlzcGxheU5hbWVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICgh
ZGlzcGxheU5hbWVzKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMucHJvdG90eXBlLm9mIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgRGlzcGxheU5hbWVzIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuRGlzcGxheU5hbWVzLnByb3RvdHlw
ZS5vZiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERpc3BsYXlOYW1lcyJfc3RyKTsKIAog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGRpc3BsYXlOYW1l
cy0+b2YoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQpAQCAtOTQs
NyArOTQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bERpc3BsYXlOYW1lc1Byb3Rv
dHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbAogCiAgICAgYXV0byogZGlzcGxheU5h
bWVzID0ganNEeW5hbWljQ2FzdDxJbnRsRGlzcGxheU5hbWVzKj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwogICAgIGlmICghZGlzcGxheU5hbWVzKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5EaXNwbGF5TmFtZXMucHJvdG90
eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIERpc3BsYXlO
YW1lcyJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJJbnRsLkRpc3BsYXlOYW1lcy5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRGlzcGxheU5hbWVzIl9zdHIpOwogCiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZGlzcGxheU5hbWVzLT5yZXNvbHZl
ZE9wdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwCmluZGV4IGY1YzMwNTcwOThjOTQ4ZjMxNGNmMWJj
ZmQ2OWNkZTg4ZDI1ZTkzM2YuLjgyNzQ2MmQ1OGZkYzU4OGIwZDE2OWNmNTliZDM1OTJkZmUzNGMw
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9y
bWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1h
dC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIEludGxMaXN0Rm9ybWF0Ojppbml0aWFsaXpl
TGlzdEZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlCiAKICAgICBt
X2xvY2FsZSA9IHJlc29sdmVkLmxvY2FsZTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBMaXN0Rm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6
ZSBMaXN0Rm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTQ2LDExICsxNDYsMTEgQEAgdm9pZCBJbnRsTGlzdEZvcm1hdDo6aW5p
dGlhbGl6ZUxpc3RGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZQog
ICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIG1fbGlzdEZvcm1hdCA9
IHN0ZDo6dW5pcXVlX3B0cjxVTGlzdEZvcm1hdHRlciwgVUxpc3RGb3JtYXR0ZXJEZWxldGVyPih1
bGlzdGZtdF9vcGVuRm9yVHlwZShtX2xvY2FsZS51dGY4KCkuZGF0YSgpLCB0b1VMaXN0Rm9ybWF0
dGVyVHlwZShtX3R5cGUpLCB0b1VMaXN0Rm9ybWF0dGVyV2lkdGgobV9zdHlsZSksICZzdGF0dXMp
KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIExpc3RGb3JtYXQiX3Mp
OworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRv
IGluaXRpYWxpemUgTGlzdEZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNl
bHNlCi0gICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBp
bml0aWFsaXplIEludGwuTGlzdEZvcm1hdCBzaW5jZSB0aGlzIGZlYXR1cmUgaXMgbm90IHN1cHBv
cnRlZCBpbiB0aGUgbGlua2VkIElDVSB2ZXJzaW9uIl9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGluaXRpYWxpemUgSW50bC5MaXN0Rm9ybWF0
IHNpbmNlIHRoaXMgZmVhdHVyZSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBsaW5rZWQgSUNVIHZl
cnNpb24iX3N0cik7CiAgICAgcmV0dXJuOwogI2VuZGlmCiB9CkBAIC0xNjYsNyArMTY2LDcgQEAg
c3RhdGljIFZlY3RvcjxTdHJpbmcsIDQ+IHN0cmluZ0xpc3RGcm9tSXRlcmFibGUoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlMKICAgICBmb3JFYWNoSW5JdGVyYWJsZShnbG9iYWxPYmpl
Y3QsIGl0ZXJhYmxlLCBbJl0oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIHZhbHVlKSB7CiAgICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKICAgICAgICAgaWYgKCF2YWx1ZS5pc1N0cmluZygpKSB7Ci0gICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmFibGUgcGFzc2VkIHRvIExpc3RG
b3JtYXQgaW5jbHVkZXMgbm9uIFN0cmluZyJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSXRlcmFibGUgcGFzc2VkIHRvIExpc3RGb3JtYXQgaW5j
bHVkZXMgbm9uIFN0cmluZyJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQog
ICAgICAgICBTdHJpbmcgaXRlbSA9IHZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CkBA
IC0yMjQsMTIgKzIyNCwxMiBAQCBKU1ZhbHVlIEludGxMaXN0Rm9ybWF0Ojpmb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsaXN0KSBjb25zdAogICAgIFZlY3RvcjxV
Q2hhciwgMzI+IHJlc3VsdDsKICAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdG
dW5jdGlvbih1bGlzdGZtdF9mb3JtYXQsIG1fbGlzdEZvcm1hdC5nZXQoKSwgaW5wdXQuc3RyaW5n
UG9pbnRlcnMoKSwgaW5wdXQuc3RyaW5nTGVuZ3RocygpLCBpbnB1dC5zaXplKCksIHJlc3VsdCk7
CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdz
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfc3RyKTsKIAogICAgIHJldHVybiBq
c1N0cmluZyh2bSwgU3RyaW5nKHJlc3VsdCkpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0obGlz
dCk7Ci0gICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfcyk7CisgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3RyaW5n
cyJfc3RyKTsKICNlbmRpZgogfQogCkBAIC0yNDksMTYgKzI0OSwxNiBAQCBKU1ZhbHVlIEludGxM
aXN0Rm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgbGlzdAogCiAgICAgYXV0byByZXN1bHQgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRl
ZExpc3QsIElDVURlbGV0ZXI8dWxpc3RmbXRfY2xvc2VSZXN1bHQ+Pih1bGlzdGZtdF9vcGVuUmVz
dWx0KCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBs
aXN0IG9mIHN0cmluZ3MiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zdHIpOwog
CiAgICAgdWxpc3RmbXRfZm9ybWF0U3RyaW5nc1RvUmVzdWx0KG1fbGlzdEZvcm1hdC5nZXQoKSwg
aW5wdXQuc3RyaW5nUG9pbnRlcnMoKSwgaW5wdXQuc3RyaW5nTGVuZ3RocygpLCBpbnB1dC5zaXpl
KCksIHJlc3VsdC5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQot
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3Ry
aW5ncyJfc3RyKTsKIAogICAgIC8vIFVGb3JtYXR0ZWRWYWx1ZSBpcyBvd25lZCBieSBVRm9ybWF0
dGVkTGlzdC4gV2UgZG8gbm90IG5lZWQgdG8gY2xvc2UgaXQuCiAgICAgYXV0byBmb3JtYXR0ZWRW
YWx1ZSA9IHVsaXN0Zm10X3Jlc3VsdEFzVmFsdWUocmVzdWx0LmdldCgpLCAmc3RhdHVzKTsKICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zdHIpOwogCiAgICAgSlNBcnJheSogcGFy
dHMgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVG
b3JJbmRleGluZ1R5cGVEdXJpbmdBbGxvY2F0aW9uKEFycmF5V2l0aENvbnRpZ3VvdXMpLCAwKTsK
ICAgICBpZiAoIXBhcnRzKQpAQCAtMjY3LDE5ICsyNjcsMTkgQEAgSlNWYWx1ZSBJbnRsTGlzdEZv
cm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IGxpc3QKICAgICBpbnQzMl90IGZvcm1hdHRlZFN0cmluZ0xlbmd0aCA9IDA7CiAgICAgY29uc3Qg
VUNoYXIqIGZvcm1hdHRlZFN0cmluZ1BvaW50ZXIgPSB1Zm10dmFsX2dldFN0cmluZyhmb3JtYXR0
ZWRWYWx1ZSwgJmZvcm1hdHRlZFN0cmluZ0xlbmd0aCwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9y
bWF0IGxpc3Qgb2Ygc3RyaW5ncyJfc3RyKTsKICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nKGZvcm1h
dHRlZFN0cmluZ1BvaW50ZXIsIGZvcm1hdHRlZFN0cmluZ0xlbmd0aCk7CiAKICAgICBhdXRvIGl0
ZXJhdG9yID0gc3RkOjp1bmlxdWVfcHRyPFVDb25zdHJhaW5lZEZpZWxkUG9zaXRpb24sIElDVURl
bGV0ZXI8dWNmcG9zX2Nsb3NlPj4odWNmcG9zX29wZW4oJnN0YXR1cykpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Ygc3RyaW5ncyJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZv
cm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7CiAKICAgICB1Y2Zwb3NfY29uc3RyYWluRmllbGQo
aXRlcmF0b3IuZ2V0KCksIFVGSUVMRF9DQVRFR09SWV9MSVNULCBVTElTVEZNVF9FTEVNRU5UX0ZJ
RUxELCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBs
aXN0IG9mIHN0cmluZ3MiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zdHIpOwog
Ci0gICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJh
bCJfcyk7Ci0gICAgYXV0byBlbGVtZW50U3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAi
ZWxlbWVudCJfcyk7CisgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5n
KHZtLCAibGl0ZXJhbCJfc3RyKTsKKyAgICBhdXRvIGVsZW1lbnRTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJlbGVtZW50Il9zdHIpOwogCiAgICAgYXV0byBjcmVhdGVQYXJ0ID0gWyZd
IChKU1N0cmluZyogdHlwZSwgSlNTdHJpbmcqIHZhbHVlKSB7CiAgICAgICAgIEpTT2JqZWN0KiBw
YXJ0ID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKQEAgLTI5Myw3ICsyOTMs
NyBAQCBKU1ZhbHVlIEludGxMaXN0Rm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbGlzdAogICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAg
IGJvb2wgbmV4dCA9IHVmbXR2YWxfbmV4dFBvc2l0aW9uKGZvcm1hdHRlZFZhbHVlLCBpdGVyYXRv
ci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3MpOworICAgICAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGxpc3Qgb2Yg
c3RyaW5ncyJfc3RyKTsKICAgICAgICAgaWYgKCFuZXh0KQogICAgICAgICAgICAgYnJlYWs7CiAK
QEAgLTMwMSw3ICszMDEsNyBAQCBKU1ZhbHVlIEludGxMaXN0Rm9ybWF0Ojpmb3JtYXRUb1BhcnRz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgbGlzdAogICAgICAgICBpbnQz
Ml90IGVuZEluZGV4ID0gMDsKICAgICAgICAgdWNmcG9zX2dldEluZGV4ZXMoaXRlcmF0b3IuZ2V0
KCksICZiZWdpbkluZGV4LCAmZW5kSW5kZXgsICZzdGF0dXMpOwogICAgICAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgbGlzdCBvZiBzdHJpbmdzIl9zKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3N0cik7CiAKICAgICAgICAgaWYgKHByZXZpb3Vz
RW5kSW5kZXggPCBiZWdpbkluZGV4KSB7CiAgICAgICAgICAgICBhdXRvIHZhbHVlID0ganNTdHJp
bmcodm0sIHJlc3VsdFN0cmluZy5zdWJzdHJpbmcocHJldmlvdXNFbmRJbmRleCwgYmVnaW5JbmRl
eCAtIHByZXZpb3VzRW5kSW5kZXgpKTsKQEAgLTMyNyw3ICszMjcsNyBAQCBKU1ZhbHVlIEludGxM
aXN0Rm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgbGlzdAogICAgIHJldHVybiBwYXJ0czsKICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGxp
c3QpOwotICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmluZ3MiX3MpOworICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBsaXN0IG9mIHN0cmlu
Z3MiX3N0cik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bExpc3RGb3JtYXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yLmNwcAppbmRleCA1ZDAwODQ1
M2ZmZjZmZjdhZDczYmY2OTY5NmE1Mjk3NDUxMDBlZmE1Li41ZTIwMWMxOGJhMzZjMDE0MWYzODIz
NDI3NWM4NzEyNGM5M2YwNzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yLmNwcApAQCAtNzIsNyArNzIs
NyBAQCBJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9yOjpJbnRsTGlzdEZvcm1hdENvbnN0cnVjdG9y
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cgogCiB2b2lkIEludGxMaXN0Rm9ybWF0Q29uc3Ry
dWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bExpc3RGb3JtYXRQcm90b3R5cGUqIGxp
c3RGb3JtYXRQcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJM
aXN0Rm9ybWF0Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5z
aXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiTGlzdEZvcm1hdCJfc3Ry
LCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIGxpc3RGb3JtYXRQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
KTsKICAgICBsaXN0Rm9ybWF0UHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2
bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0UHJvdG90eXBlLmNwcApp
bmRleCBiZjczN2FjNWJhNGFiZTEyMWJlYzYxNWY4MzBmMmJiM2M2MDZiMGJmLi5mZTNkYzdlMWY2
ZjgyOWI2ZDNjOGY3Y2M0MjI5MzEzZmI2NDA0N2IyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC04
Myw3ICs4Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTGlzdEZvcm1hdFByb3Rv
dHlwZUZ1bmNGb3JtYXQsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBsaXN0Rm9y
bWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTGlzdEZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKICAgICBpZiAoIWxpc3RGb3JtYXQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxpc3RGb3JtYXQucHJvdG90eXBlLmZv
cm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExpc3RGb3JtYXQiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5MaXN0
Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMaXN0
Rm9ybWF0Il9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUobGlzdEZvcm1hdC0+Zm9ybWF0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSkpKTsKIH0KQEAgLTk2LDcgKzk2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGlu
dGxMaXN0Rm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1hdFRvUGFydHMsIChKU0dsb2JhbE9iamUKIAog
ICAgIGF1dG8qIGxpc3RGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxMaXN0Rm9ybWF0Kj4odm0s
IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbGlzdEZvcm1hdCkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTGlzdEZv
cm1hdC5wcm90b3R5cGUuZm9ybWF0VG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IExpc3RGb3JtYXQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5MaXN0Rm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRzIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTGlzdEZvcm1hdCJfc3RyKTsKIAogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxpc3RGb3JtYXQtPmZvcm1hdFRv
UGFydHMoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpOwogfQpAQCAtMTA5
LDcgKzEwOSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTGlzdEZvcm1hdFByb3Rv
dHlwZUZ1bmNSZXNvbHZlZE9wdGlvbnMsIChKU0dsb2JhbE9iCiAKICAgICBhdXRvKiBsaXN0Rm9y
bWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTGlzdEZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKICAgICBpZiAoIWxpc3RGb3JtYXQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxpc3RGb3JtYXQucHJvdG90eXBlLnJl
c29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExpc3RGb3JtYXQiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
SW50bC5MaXN0Rm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBMaXN0Rm9ybWF0Il9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobGlzdEZvcm1hdC0+cmVzb2x2ZWRPcHRpb25zKGdsb2Jh
bE9iamVjdCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxMb2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2Fs
ZS5jcHAKaW5kZXggZmNjYWQzMTE4OWE4YWQ3ZTAwMjQ5ZDQ5MjBjOWFhOGJjNjA0N2RhNS4uMzgw
YzAyYzllOTg3NDg1MDViYjNlZTY3MDYzZDE4ZDc0ZDYzOThjNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKQEAgLTI0NywyOCArMjQ3LDI4IEBAIHZv
aWQgSW50bExvY2FsZTo6aW5pdGlhbGl6ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBTdHJpbmcmIHRhCiAKICAgICBMb2NhbGVJREJ1aWxkZXIgbG9jYWxlSUQ7CiAg
ICAgaWYgKCFsb2NhbGVJRC5pbml0aWFsaXplKHRhZykpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxhbmd1YWdlIHRhZyJfcyk7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsYW5ndWFn
ZSB0YWciX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBTdHJpbmcgbGFuZ3Vh
Z2UgPSBpbnRsU3RyaW5nT3B0aW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlO
YW1lcy0+bGFuZ3VhZ2UsIHsgfSwgbnVsbHB0ciwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIWxhbmd1YWdlLmlzTnVsbCgpICYmICFp
c1VuaWNvZGVMYW5ndWFnZVN1YnRhZyhsYW5ndWFnZSkpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJsYW5ndWFnZSBpcyBub3QgYSB3ZWxsLWZvcm1lZCBs
YW5ndWFnZSB2YWx1ZSJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAibGFuZ3VhZ2UgaXMgbm90IGEgd2VsbC1mb3JtZWQgbGFuZ3VhZ2UgdmFsdWUiX3N0
cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBTdHJpbmcgc2NyaXB0ID0gaW50bFN0
cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnNjcmlw
dCwgeyB9LCBudWxscHRyLCBudWxscHRyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB2b2lkKCkpOwogICAgIGlmICghc2NyaXB0LmlzTnVsbCgpICYmICFpc1VuaWNvZGVTY3JpcHRT
dWJ0YWcoc2NyaXB0KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgInNjcmlwdCBpcyBub3QgYSB3ZWxsLWZvcm1lZCBzY3JpcHQgdmFsdWUiX3MpOworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNjcmlwdCBpcyBub3Qg
YSB3ZWxsLWZvcm1lZCBzY3JpcHQgdmFsdWUiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKICAgICBTdHJpbmcgcmVnaW9uID0gaW50bFN0cmluZ09wdGlvbihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJlZ2lvbiwgeyB9LCBudWxscHRyLCBudWxscHRyKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghcmVnaW9u
LmlzTnVsbCgpICYmICFpc1VuaWNvZGVSZWdpb25TdWJ0YWcocmVnaW9uKSkgewotICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInJlZ2lvbiBpcyBub3QgYSB3ZWxs
LWZvcm1lZCByZWdpb24gdmFsdWUiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInJlZ2lvbiBpcyBub3QgYSB3ZWxsLWZvcm1lZCByZWdpb24gdmFsdWUi
X3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3OSw3ICsyNzksNyBAQCB2b2lk
IEludGxMb2NhbGU6OmluaXRpYWxpemVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgY29uc3QgU3RyaW5nJiB0YQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQo
KSk7CiAgICAgaWYgKCFjYWxlbmRhci5pc051bGwoKSkgewogICAgICAgICBpZiAoIWlzVW5pY29k
ZUxvY2FsZUlkZW50aWZpZXJUeXBlKGNhbGVuZGFyKSkgewotICAgICAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRhciBpcyBub3QgYSB3ZWxsLWZvcm1l
ZCBjYWxlbmRhciB2YWx1ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImNhbGVuZGFyIGlzIG5vdCBhIHdlbGwtZm9ybWVkIGNhbGVuZGFyIHZh
bHVlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGxvY2Fs
ZUlELnNldEtleXdvcmRWYWx1ZSgiY2FsZW5kYXIiX3MsIGNhbGVuZGFyKTsKQEAgLTI4OSw3ICsy
ODksNyBAQCB2b2lkIEludGxMb2NhbGU6OmluaXRpYWxpemVMb2NhbGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB0YQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKCFjb2xsYXRpb24uaXNOdWxsKCkpIHsKICAgICAgICAg
aWYgKCFpc1VuaWNvZGVMb2NhbGVJZGVudGlmaWVyVHlwZShjb2xsYXRpb24pKSB7Ci0gICAgICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNvbGxhdGlvbiBpcyBu
b3QgYSB3ZWxsLWZvcm1lZCBjb2xsYXRpb24gdmFsdWUiX3MpOworICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjb2xsYXRpb24gaXMgbm90IGEgd2VsbC1m
b3JtZWQgY29sbGF0aW9uIHZhbHVlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAgICAgICAgIGxvY2FsZUlELnNldEtleXdvcmRWYWx1ZSgiY29sbGF0aW9uIl9zLCBjb2xs
YXRpb24pOwpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgSW50bExvY2FsZTo6aW5pdGlhbGl6ZUxv
Y2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHRhCiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAgICBpZiAoIW51bWJlcmluZ1N5
c3RlbS5pc051bGwoKSkgewogICAgICAgICBpZiAoIWlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJU
eXBlKG51bWJlcmluZ1N5c3RlbSkpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5vdCBhIHdlbGwtZm9ybWVkIG51
bWJlcmluZyBzeXN0ZW0gdmFsdWUiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXJpbmdTeXN0ZW0gaXMgbm90IGEgd2VsbC1mb3JtZWQg
bnVtYmVyaW5nIHN5c3RlbSB2YWx1ZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgICAgICBsb2NhbGVJRC5zZXRLZXl3b3JkVmFsdWUoIm51bWJlcnMiX3MsIG51bWJl
cmluZ1N5c3RlbSk7CkBAIC0zMjIsNyArMzIyLDcgQEAgdm9pZCBJbnRsTG9jYWxlOjppbml0aWFs
aXplTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdGEK
IAogICAgIG1fbG9jYWxlSUQgPSBsb2NhbGVJRC50b0Nhbm9uaWNhbCgpOwogICAgIGlmIChtX2xv
Y2FsZUlELmlzTnVsbCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBMb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTG9jYWxl
Il9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogfQpAQCAtNTU4LDcgKzU1OCw3IEBAIEpT
QXJyYXkqIEludGxMb2NhbGU6OmNhbGVuZGFycyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgIGNvbnN0ZXhwciBib29sIGNvbW1vbmx5VXNlZCA9IHRydWU7CiAgICAgYXV0byBjYWxl
bmRhcnMgPSBzdGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVlbnVtX2Ns
b3NlPj4odWNhbF9nZXRLZXl3b3JkVmFsdWVzRm9yTG9jYWxlKCJjYWxlbmRhciIsIG1fbG9jYWxl
SUQuZGF0YSgpLCBjb21tb25seVVzZWQsICZzdGF0dXMpKTsKICAgICBpZiAoIVVfU1VDQ0VTUyhz
dGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJp
bnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC01NzIsNyArNTcyLDcgQEAgSlNBcnJheSogSW50bExvY2FsZTo6Y2FsZW5kYXJz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgICAgICBlbGVtZW50cy5hcHBl
bmQoV1RGTW92ZShjYWxlbmRhcikpOwogICAgIH0KICAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlk
IGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC01OTYsNyArNTk2LDcgQEAgSlNBcnJheSogSW50bExvY2FsZTo6Y29sbGF0aW9ucyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIGNvbnN0ZXhwciBib29sIGNvbW1vbmx5VXNl
ZCA9IHRydWU7CiAgICAgYXV0byBlbnVtZXJhdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxVRW51bWVy
YXRpb24sIElDVURlbGV0ZXI8dWVudW1fY2xvc2U+Pih1Y29sX2dldEtleXdvcmRWYWx1ZXNGb3JM
b2NhbGUoImNvbGxhdGlvbiIsIG1fbG9jYWxlSUQuZGF0YSgpLCBjb21tb25seVVzZWQsICZzdGF0
dXMpKTsKICAgICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC02MTMsNyArNjEzLDcgQEAgSlNB
cnJheSogSW50bExvY2FsZTo6Y29sbGF0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogICAgICAgICAgICAgZWxlbWVudHMuYXBwZW5kKFdURk1vdmUoY29sbGF0aW9uKSk7CiAgICAg
fQogICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxlIl9zdHIpOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTY0Myw3ICs2NDMsNyBAQCBKU0FycmF5
KiBJbnRsTG9jYWxlOjpob3VyQ3ljbGVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAg
ICAgVmVjdG9yPFVDaGFyLCAzMj4gcGF0dGVybjsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJv
ZHVjaW5nRnVuY3Rpb24odWRhdHBnX2dldEJlc3RQYXR0ZXJuV2l0aE9wdGlvbnMsIGdlbmVyYXRv
ci5nZXQoKSwgc2tlbGV0b24sIDEsIFVEQVRQR19NQVRDSF9IT1VSX0ZJRUxEX0xFTkdUSCwgcGF0
dGVybik7CiAgICAgaWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0cik7
CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNjUzLDE5ICs2NTMsMTkgQEAg
SlNBcnJheSogSW50bExvY2FsZTo6aG91ckN5Y2xlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogICAgIGNhc2UgSW50bERhdGVUaW1lRm9ybWF0OjpIb3VyQ3ljbGU6Ok5vbmU6CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgSW50bERhdGVUaW1lRm9ybWF0OjpIb3VyQ3ljbGU6OkgxMTog
ewotICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgxMSJfcyk7CisgICAgICAgIGVsZW1lbnRzLmFw
cGVuZCgiaDExIl9zdHIpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0
ZUFycmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7
CiAgICAgfQogICAgIGNhc2UgSW50bERhdGVUaW1lRm9ybWF0OjpIb3VyQ3ljbGU6OkgxMjogewot
ICAgICAgICBlbGVtZW50cy5hcHBlbmQoImgxMiJfcyk7CisgICAgICAgIGVsZW1lbnRzLmFwcGVu
ZCgiaDEyIl9zdHIpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFy
cmF5RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CiAg
ICAgfQogICAgIGNhc2UgSW50bERhdGVUaW1lRm9ybWF0OjpIb3VyQ3ljbGU6OkgyMzogewotICAg
ICAgICBlbGVtZW50cy5hcHBlbmQoImgyMyJfcyk7CisgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgi
aDIzIl9zdHIpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5
RnJvbVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CiAgICAg
fQogICAgIGNhc2UgSW50bERhdGVUaW1lRm9ybWF0OjpIb3VyQ3ljbGU6OkgyNDogewotICAgICAg
ICBlbGVtZW50cy5hcHBlbmQoImgyNCJfcyk7CisgICAgICAgIGVsZW1lbnRzLmFwcGVuZCgiaDI0
Il9zdHIpOwogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGNyZWF0ZUFycmF5RnJv
bVN0cmluZ1ZlY3RvcihnbG9iYWxPYmplY3QsIFdURk1vdmUoZWxlbWVudHMpKSk7CiAgICAgfQog
ICAgIH0KQEAgLTY4OCw3ICs2ODgsNyBAQCBKU0FycmF5KiBJbnRsTG9jYWxlOjpudW1iZXJpbmdT
eXN0ZW1zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBudW1iZXJpbmdTeXN0ZW0gPSBzdGQ6OnVuaXF1
ZV9wdHI8VU51bWJlcmluZ1N5c3RlbSwgSUNVRGVsZXRlcjx1bnVtc3lzX2Nsb3NlPj4odW51bXN5
c19vcGVuKG1fbG9jYWxlSUQuZGF0YSgpLCAmc3RhdHVzKSk7CiAgICAgaWYgKCFVX1NVQ0NFU1Mo
c3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KICAgICBlbGVtZW50cy5hcHBlbmQodW51bXN5c19nZXROYW1lKG51bWJlcmluZ1N5c3Rl
bS5nZXQoKSkpOwpAQCAtNzExLDcgKzcxMSw3IEBAIEpTVmFsdWUgSW50bExvY2FsZTo6dGltZVpv
bmVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBlbnVtZXJhdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxV
RW51bWVyYXRpb24sIElDVURlbGV0ZXI8dWVudW1fY2xvc2U+Pih1Y2FsX29wZW5UaW1lWm9uZUlE
RW51bWVyYXRpb24oVUNBTF9aT05FX1RZUEVfQ0FOT05JQ0FMLCByZWdpb24udXRmOCgpLmRhdGEo
KSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmICghVV9TVUNDRVNTKHN0YXR1cykpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgbG9jYWxl
Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFs
aWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtNzIwLDcg
KzcyMCw3IEBAIEpTVmFsdWUgSW50bExvY2FsZTo6dGltZVpvbmVzKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgd2hpbGUgKChjb2xsYXRpb24gPSB1ZW51bV9uZXh0KGVudW1lcmF0
aW9uLmdldCgpLCAmbGVuZ3RoLCAmc3RhdHVzKSkgJiYgVV9TVUNDRVNTKHN0YXR1cykpCiAgICAg
ICAgIGVsZW1lbnRzLmNvbnN0cnVjdEFuZEFwcGVuZChjb2xsYXRpb24sIGxlbmd0aCk7CiAgICAg
aWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogCkBAIC03MzUsNyArNzM1LDcgQEAgSlNPYmplY3QqIEludGxMb2Nh
bGU6OnRleHRJbmZvKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVUVycm9yQ29k
ZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgVUxheW91dFR5cGUgbGF5b3V0ID0gdWxvY19n
ZXRDaGFyYWN0ZXJPcmllbnRhdGlvbihtX2xvY2FsZUlELmRhdGEoKSwgJnN0YXR1cyk7CiAgICAg
aWYgKCFVX1NVQ0NFU1Moc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzQzLDE2ICs3NDMsMTYgQEAgSlNPYmplY3QqIElu
dGxMb2NhbGU6OnRleHRJbmZvKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgc3dp
dGNoIChsYXlvdXQpIHsKICAgICBkZWZhdWx0OgogICAgIGNhc2UgVUxPQ19MQVlPVVRfTFRSOgot
ICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgImx0ciJfcyk7CisgICAgICAgIGxh
eW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAibHRyIl9zdHIpOwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFVMT0NfTEFZT1VUX1JUTDoKLSAgICAgICAgbGF5b3V0U3RyaW5nID0ganNTdHJpbmco
dm0sICJydGwiX3MpOworICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgInJ0bCJf
c3RyKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBVTE9DX0xBWU9VVF9UVEI6Ci0gICAgICAg
IGxheW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAidHRiIl9zKTsKKyAgICAgICAgbGF5b3V0U3Ry
aW5nID0ganNTdHJpbmcodm0sICJ0dGIiX3N0cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Ug
VUxPQ19MQVlPVVRfQlRUOgotICAgICAgICBsYXlvdXRTdHJpbmcgPSBqc1N0cmluZyh2bSwgImJ0
dCJfcyk7CisgICAgICAgIGxheW91dFN0cmluZyA9IGpzU3RyaW5nKHZtLCAiYnR0Il9zdHIpOwog
ICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTc2OSw3ICs3NjksNyBAQCBKU09iamVjdCogSW50
bExvY2FsZTo6d2Vla0luZm8oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBVRXJy
b3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBhdXRvIGNhbGVuZGFyID0gc3RkOjp1
bmlxdWVfcHRyPFVDYWxlbmRhciwgSUNVRGVsZXRlcjx1Y2FsX2Nsb3NlPj4odWNhbF9vcGVuKG51
bGxwdHIsIDAsIG1fbG9jYWxlSUQuZGF0YSgpLCBVQ0FMX0RFRkFVTFQsICZzdGF0dXMpKTsKICAg
ICBpZiAoIVVfU1VDQ0VTUyhzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC04MjEsNyArODIxLDcgQEAgSlNPYmplY3QqIElu
dGxMb2NhbGU6OndlZWtJbmZvKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgZm9y
IChpbnQzMl90IGRheSA9IDE7IGRheSA8PSA3OyArK2RheSkgewogICAgICAgICBVQ2FsZW5kYXJX
ZWVrZGF5VHlwZSB0eXBlID0gY2Fub25pY2FsaXplRGF5T2ZXZWVrVHlwZSh1Y2FsX2dldERheU9m
V2Vla1R5cGUoY2FsZW5kYXIuZ2V0KCksIGNvbnZlcnRNb25kYXlCYXNlZERheVRvVUNhbGVuZGFy
RGF5c09mV2VlayhkYXkpLCAmc3RhdHVzKSk7CiAgICAgICAgIGlmICghVV9TVUNDRVNTKHN0YXR1
cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJp
bnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDM3NjUzYmIzNzEzOTU3NzIyNjVlYWVlYzNlMTE1ZGIwZjE4ZWJiYmMuLmUyNTI1ZjE0OTI3
NDU1YTliODE1ZWNhNmRlYzBhODM4ZDhlMjNlZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZUNvbnN0cnVjdG9yLmNwcApAQCAtNTksNyAr
NTksNyBAQCBJbnRsTG9jYWxlQ29uc3RydWN0b3I6OkludGxMb2NhbGVDb25zdHJ1Y3RvcihWTSYg
dm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQogCiB2b2lkIEludGxMb2NhbGVDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBJbnRsTG9jYWxlUHJvdG90eXBlKiBsb2NhbGVQcm90b3R5
cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsICJMb2NhbGUiX3MsIFByb3Bl
cnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDEsICJMb2NhbGUiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6
OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNp
dGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBsb2NhbGVQcm90b3R5cGUsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBsb2NhbGVQcm90b3R5cGUtPnB1
dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3Rv
ciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSkpOwogfQpAQCAtNzksNyArNzksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3Ry
dWN0SW50bExvY2FsZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogCiAgICAg
SlNWYWx1ZSB0YWcgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICghdGFnLmlzU3Ry
aW5nKCkgJiYgIXRhZy5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gSW50bC5Mb2NhbGUgbXVz
dCBiZSBhIHN0cmluZyBvciBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gSW50bC5Mb2Nh
bGUgbXVzdCBiZSBhIHN0cmluZyBvciBhbiBvYmplY3QiX3N0cik7CiAKICAgICBzY29wZS5yZWxl
YXNlKCk7CiAgICAgbG9jYWxlLT5pbml0aWFsaXplTG9jYWxlKGdsb2JhbE9iamVjdCwgdGFnLCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5jcHAKaW5kZXggMDkwYzkyNTMyMzFkNjIzOWY5
NDlkMzgyNmIwZGY2NDY0MjYwOTI4Zi4uODkwNGExZWZlN2QxZDQ2YWJhNGQwYjA3YTI5MDhiODE2
MTQ5YjdhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExv
Y2FsZVByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bExvY2FsZVByb3RvdHlwZS5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oaW50bExvY2FsZVByb3RvdHlwZUZ1bmNNYXhpbWl6ZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYQogCiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUu
cHJvdG90eXBlLm1heGltaXplIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkludGwuTG9jYWxlLnByb3RvdHlwZS5tYXhpbWl6ZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIExvY2FsZSJfc3RyKTsKIAogICAgIEludGxMb2NhbGUqIG5ld0xvY2FsZSA9IEludGxMb2Nh
bGU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5sb2NhbGVTdHJ1Y3R1cmUoKSk7CiAgICAgc2Nv
cGUucmVsZWFzZSgpOwpAQCAtMTM0LDcgKzEzNCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihpbnRsTG9jYWxlUHJvdG90eXBlRnVuY01pbmltaXplLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
CiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFsb2NhbGUpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5
cGUubWluaW1pemUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLm1pbmltaXplIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9j
YWxlIl9zdHIpOwogCiAgICAgSW50bExvY2FsZSogbmV3TG9jYWxlID0gSW50bExvY2FsZTo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QtPmxvY2FsZVN0cnVjdHVyZSgpKTsKICAgICBzY29wZS5yZWxl
YXNlKCk7CkBAIC0xNTAsNyArMTUwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxM
b2NhbGVQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKIAogICAg
IGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS50b1N0
cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5w
cm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0
cik7CiAKICAgICBjb25zdCBTdHJpbmcmIGZ1bGxTdHJpbmcgPSBsb2NhbGUtPnRvU3RyaW5nKCk7
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZnVsbFN0cmlu
Zy5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGZ1bGxTdHJpbmcpKSk7
CkBAIC0xNjQsNyArMTY0LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxMb2NhbGVQ
cm90b3R5cGVHZXR0ZXJCYXNlTmFtZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogICAgIGF1dG8q
IGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUo
dGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuYmFzZU5h
bWUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJv
dG90eXBlLmJhc2VOYW1lIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIp
OwogCiAgICAgY29uc3QgU3RyaW5nJiBiYXNlTmFtZSA9IGxvY2FsZS0+YmFzZU5hbWUoKTsKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShiYXNlTmFtZS5pc0Vt
cHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGJhc2VOYW1lKSkpOwpAQCAtMTc4
LDcgKzE3OCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBl
R2V0dGVyQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBsb2NhbGUg
PSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFyIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS5j
YWxlbmRhciBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3RyKTsKIAogICAg
IGNvbnN0IFN0cmluZyYgY2FsZW5kYXIgPSBsb2NhbGUtPmNhbGVuZGFyKCk7CiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY2FsZW5kYXIuaXNOdWxsKCkgPyBq
c1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNhbGVuZGFyKSkpOwpAQCAtMTkyLDcgKzE5Miw3
IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2Fs
ZW5kYXJzLCAoSlNHbG9iYWxPYmplY3QqIGdsCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFt
aWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAg
IGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFycyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FsZW5kYXJz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgUkVMRUFT
RV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT5jYWxlbmRhcnMoZ2xv
YmFsT2JqZWN0KSkpOwogfQpAQCAtMjA1LDcgKzIwNSw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dF
VFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUu
cHJvdG90eXBlLmNhc2VGaXJzdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2FzZUZpcnN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgY29uc3QgU3RyaW5nJiBjYXNlRmlyc3QgPSBsb2Nh
bGUtPmNhc2VGaXJzdCgpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGNhc2VGaXJzdC5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwg
Y2FzZUZpcnN0KSkpOwpAQCAtMjE5LDcgKzIxOSw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
UihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uLCAoSlNHbG9iYWxPYmplY3QqIGds
CiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNW
YWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJv
dG90eXBlLmNvbGxhdGlvbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJ
bnRsLkxvY2FsZS5wcm90b3R5cGUuY29sbGF0aW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgY29uc3QgU3RyaW5nJiBjb2xsYXRpb24gPSBsb2NhbGUt
PmNvbGxhdGlvbigpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGNvbGxhdGlvbi5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgY29s
bGF0aW9uKSkpOwpAQCAtMjMzLDcgKzIzMyw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihp
bnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ29sbGF0aW9ucywgKEpTR2xvYmFsT2JqZWN0KiBnCiAK
ICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90
eXBlLmNvbGxhdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50
bC5Mb2NhbGUucHJvdG90eXBlLmNvbGxhdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBMb2NhbGUiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShsb2NhbGUtPmNvbGxhdGlvbnMoZ2xvYmFsT2JqZWN0KSkpOwogfQpAQCAtMjQ2LDcg
KzI0Niw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0
dGVySG91ckN5Y2xlLCAoSlNHbG9iYWxPYmplY3QqIGdsCiAKICAgICBhdXRvKiBsb2NhbGUgPSBq
c0R5bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkp
OwogICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZSBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuaG91
ckN5Y2xlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAg
Y29uc3QgU3RyaW5nJiBob3VyQ3ljbGUgPSBsb2NhbGUtPmhvdXJDeWNsZSgpOwogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGhvdXJDeWNsZS5pc051bGwoKSA/
IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgaG91ckN5Y2xlKSkpOwpAQCAtMjYwLDcgKzI2
MCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVy
SG91ckN5Y2xlcywgKEpTR2xvYmFsT2JqZWN0KiBnCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5
bmFtaWNDYXN0PEludGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwog
ICAgIGlmICghbG9jYWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZXMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJD
eWNsZXMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUtPmhvdXJDeWNs
ZXMoZ2xvYmFsT2JqZWN0KSkpOwogfQpAQCAtMjczLDcgKzI3Myw3IEBAIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtZXJpYywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PEludGxMb2NhbGUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9jYWxlKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLm51bWVyaWMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2Nh
bGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc0Jvb2xlYW4obG9jYWxlLT5udW1lcmljKCkgPT0gVHJpU3RhdGU6OlRy
dWUpKSk7CiB9CkBAIC0yODYsNyArMjg2LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGlu
dGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJpbmdTeXN0ZW0sIChKU0dsb2JhbE9iamUKIAog
ICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5
cGUubnVtYmVyaW5nU3lzdGVtIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkludGwuTG9jYWxlLnByb3RvdHlwZS5udW1iZXJpbmdTeXN0ZW0gY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAgICBjb25zdCBTdHJpbmcmIG51bWJlcmluZ1N5
c3RlbSA9IGxvY2FsZS0+bnVtYmVyaW5nU3lzdGVtKCk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyaW5nU3lzdGVtLmlzTnVsbCgpID8ganNVbmRl
ZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBudW1iZXJpbmdTeXN0ZW0pKSk7CkBAIC0zMDAsNyArMzAw
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJO
dW1iZXJpbmdTeXN0ZW1zLCAoSlNHbG9iYWxPYmoKIAogICAgIGF1dG8qIGxvY2FsZSA9IGpzRHlu
YW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCFsb2NhbGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubnVtYmVyaW5nU3lzdGVtcyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUu
bnVtYmVyaW5nU3lzdGVtcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2FsZSJfc3Ry
KTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGxvY2Fs
ZS0+bnVtYmVyaW5nU3lzdGVtcyhnbG9iYWxPYmplY3QpKSk7CiB9CkBAIC0zMTMsNyArMzEzLDcg
QEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJMYW5n
dWFnZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1p
Y0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAg
aWYgKCFsb2NhbGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUubGFuZ3VhZ2UgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1YWdlIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSA9IGxvY2FsZS0+bGFuZ3VhZ2UoKTsKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsYW5ndWFnZS5pc0VtcHR5KCkgPyBqc1VuZGVmaW5l
ZCgpIDoganNTdHJpbmcodm0sIGxhbmd1YWdlKSkpOwpAQCAtMzI3LDcgKzMyNyw3IEBAIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUihpbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyU2NyaXB0LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhCiAKICAgICBhdXRvKiBsb2NhbGUgPSBqc0R5bmFtaWNDYXN0PElu
dGxMb2NhbGUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghbG9j
YWxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnNjcmlwdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIExvY2FsZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuc2NyaXB0IGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQg
PSBsb2NhbGUtPnNjcmlwdCgpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHNjcmlwdC5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0s
IHNjcmlwdCkpKTsKQEAgLTM0MSw3ICszNDEsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
aW50bExvY2FsZVByb3RvdHlwZUdldHRlclJlZ2lvbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQog
CiAgICAgYXV0byogbG9jYWxlID0ganNEeW5hbWljQ2FzdDxJbnRsTG9jYWxlKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWxvY2FsZSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3Rv
dHlwZS5yZWdpb24gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5M
b2NhbGUucHJvdG90eXBlLnJlZ2lvbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIExvY2Fs
ZSJfc3RyKTsKIAogICAgIGNvbnN0IFN0cmluZyYgcmVnaW9uID0gbG9jYWxlLT5yZWdpb24oKTsK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZWdpb24uaXNF
bXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCByZWdpb24pKSk7CkBAIC0zNTUs
NyArMzU1LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxMb2NhbGVQcm90b3R5cGVH
ZXR0ZXJUaW1lWm9uZXMsIChKU0dsb2JhbE9iamVjdCogZ2wKIAogICAgIGF1dG8qIGxvY2FsZSA9
IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKCFsb2NhbGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUudGltZVpvbmVzIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnByb3RvdHlwZS50
aW1lWm9uZXMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3N0cik7CiAKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShsb2NhbGUtPnRpbWVa
b25lcyhnbG9iYWxPYmplY3QpKSk7CiB9CkBAIC0zNjgsNyArMzY4LDcgQEAgSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJUZXh0SW5mbywgKEpTR2xvYmFs
T2JqZWN0KiBnbG8KIAogICAgIGF1dG8qIGxvY2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2Fs
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRs
LkxvY2FsZS5wcm90b3R5cGUudGV4dEluZm8gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBM
b2NhbGUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLnRleHRJbmZvIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT50ZXh0SW5mbyhnbG9iYWxPYmplY3QpKSk7CiB9CkBA
IC0zODEsNyArMzgxLDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGludGxMb2NhbGVQcm90
b3R5cGVHZXR0ZXJXZWVrSW5mbywgKEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogICAgIGF1dG8qIGxv
Y2FsZSA9IGpzRHluYW1pY0Nhc3Q8SW50bExvY2FsZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSk7CiAgICAgaWYgKCFsb2NhbGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUud2Vla0luZm8g
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBMb2NhbGUiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90
eXBlLndlZWtJbmZvIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTG9jYWxlIl9zdHIpOwog
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobG9jYWxlLT53
ZWVrSW5mbyhnbG9iYWxPYmplY3QpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCmluZGV4IDk1M2MzOWZlNjRhOWU4NGQwYmI2
YzEwYzA0MmIwNzNhZjY5ZTM1NjkuLmY3ZjRiOWUxMjI2YjkwZDllZThkOThmY2NmMmM1Mjg1MzA0
YjkzYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1i
ZXJGb3JtYXQuY3BwCkBAIC0zMDgsNyArMzA4LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpp
bml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmEK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB2b2lkKCkpOwogICAgIGlmICghbnVtYmVy
aW5nU3lzdGVtLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICghaXNVbmljb2RlTG9jYWxlSWRlbnRp
ZmllclR5cGUobnVtYmVyaW5nU3lzdGVtKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXJpbmdTeXN0ZW0gaXMgbm90IGEgd2VsbC1mb3Jt
ZWQgbnVtYmVyaW5nIHN5c3RlbSB2YWx1ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm51bWJlcmluZ1N5c3RlbSBpcyBub3QgYSB3ZWxsLWZv
cm1lZCBudW1iZXJpbmcgc3lzdGVtIHZhbHVlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAgICAgICAgIGxvY2FsZU9wdGlvbnNbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFJl
bGV2YW50RXh0ZW5zaW9uS2V5OjpOdSldID0gbnVtYmVyaW5nU3lzdGVtOwpAQCAtMzE5LDcgKzMx
OSw3IEBAIHZvaWQgSW50bE51bWJlckZvcm1hdDo6aW5pdGlhbGl6ZU51bWJlckZvcm1hdChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhCiAKICAgICBtX2xvY2FsZSA9IHJlc29sdmVk
LmxvY2FsZTsKICAgICBpZiAobV9sb2NhbGUuaXNFbXB0eSgpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJG
b3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIE51bWJlckZvcm1hdCBk
dWUgdG8gaW52YWxpZCBsb2NhbGUiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAg
LTMzMiw3ICszMzIsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJG
b3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgaWYgKCFjdXJyZW5jeS5pc051bGwoKSkgewog
ICAgICAgICBpZiAoIWlzV2VsbEZvcm1lZEN1cnJlbmN5Q29kZShjdXJyZW5jeSkpIHsKLSAgICAg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCAiY3VycmVuY3kgaXMgbm90IGEgd2VsbC1mb3JtZWQgY3VycmVuY3kg
Y29kZSJfcykpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJjdXJyZW5jeSBpcyBub3QgYSB3ZWxs
LWZvcm1lZCBjdXJyZW5jeSBjb2RlIl9zdHIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6Omlu
aXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQog
ICAgIHVuc2lnbmVkIGN1cnJlbmN5RGlnaXRzID0gMDsKICAgICBpZiAobV9zdHlsZSA9PSBTdHls
ZTo6Q3VycmVuY3kpIHsKICAgICAgICAgaWYgKGN1cnJlbmN5LmlzTnVsbCgpKSB7Ci0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiY3VycmVuY3kgbXVzdCBi
ZSBhIHN0cmluZyJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiY3VycmVuY3kgbXVzdCBiZSBhIHN0cmluZyJfc3RyKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCkBAIC0zNjEsMTIgKzM2MSwxMiBAQCB2b2lkIEludGxOdW1iZXJG
b3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYQogICAgIGlmICghdW5pdC5pc051bGwoKSkgewogICAgICAgICB3ZWxsRm9ybWVkVW5p
dCA9IHdlbGxGb3JtZWRVbml0SWRlbnRpZmllcih1bml0KTsKICAgICAgICAgaWYgKCF3ZWxsRm9y
bWVkVW5pdCkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJ1bml0IGlzIG5vdCBhIHdlbGwtZm9ybWVkIHVuaXQgaWRlbnRpZmllciJfcyk7CisgICAg
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInVuaXQgaXMgbm90
IGEgd2VsbC1mb3JtZWQgdW5pdCBpZGVudGlmaWVyIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIG1fdW5pdCA9IHVuaXQ7CiAgICAgfSBlbHNlIGlmIChtX3N0
eWxlID09IFN0eWxlOjpVbml0KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJ1bml0IG11c3QgYmUgYSBzdHJpbmciX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidW5pdCBtdXN0IGJlIGEgc3RyaW5nIl9zdHIpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTEsMTEgKzM5MSwxMSBAQCB2b2lkIEludGxO
dW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYQogICAgICAgICBbJl0odW5zaWduZWQgY2FuZGlkYXRlKSB7CiAgICAgICAg
ICAgICByZXR1cm4gY2FuZGlkYXRlID09IG1fcm91bmRpbmdJbmNyZW1lbnQ7CiAgICAgICAgIH0p
KSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRp
bmdJbmNyZW1lbnQgbXVzdCBiZSBvbmUgb2YgMSwgMiwgNSwgMTAsIDIwLCAyNSwgNTAsIDEwMCwg
MjAwLCAyNTAsIDUwMCwgMTAwMCwgMjAwMCwgMjUwMCwgNTAwMCJfcyk7CisgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmdJbmNyZW1lbnQgbXVzdCBi
ZSBvbmUgb2YgMSwgMiwgNSwgMTAsIDIwLCAyNSwgNTAsIDEwMCwgMjAwLCAyNTAsIDUwMCwgMTAw
MCwgMjAwMCwgMjUwMCwgNTAwMCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBp
ZiAobV9yb3VuZGluZ0luY3JlbWVudCAhPSAxICYmIG1fcm91bmRpbmdUeXBlICE9IEludGxSb3Vu
ZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmcgdHlwZSBpcyBub3QgZnJhY3Rpb24tZGlnaXRzIHdo
aWxlIHJvdW5kaW5nSW5jcmVtZW50IGlzIHNwZWNpZmllZCJfcyk7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicm91bmRpbmcgdHlwZSBpcyBub3QgZnJhY3Rp
b24tZGlnaXRzIHdoaWxlIHJvdW5kaW5nSW5jcmVtZW50IGlzIHNwZWNpZmllZCJfc3RyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjM1LDE0ICs2MzUsMTQgQEAgdm9pZCBJbnRsTnVt
YmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmEKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBt
X251bWJlckZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0dGVyLCBVTnVt
YmVyRm9ybWF0dGVyRGVsZXRlcj4odW51bWZfb3BlbkZvclNrZWxldG9uQW5kTG9jYWxlKHVwY29u
dmVydGVkLmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIGRhdGFMb2NhbGVXaXRoRXh0ZW5z
aW9ucy5kYXRhKCksICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBpbml0
aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3N0cik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JN
QVRURVIpCiAgICAgbV9udW1iZXJSYW5nZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVt
YmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+KHVudW1yZl9v
cGVuRm9yU2tlbGV0b25XaXRoQ29sbGFwc2VBbmRJZGVudGl0eUZhbGxiYWNrKHVwY29udmVydGVk
LmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVOVU1fUkFOR0VfQ09MTEFQU0VfQVVUTywg
VU5VTV9JREVOVElUWV9GQUxMQkFDS19BUFBST1hJTUFURUxZLCBkYXRhTG9jYWxlV2l0aEV4dGVu
c2lvbnMuZGF0YSgpLCBudWxscHRyLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWls
ZWQgdG8gaW5pdGlhbGl6ZSBOdW1iZXJGb3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0
Il9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC03MDcsMTQgKzcwNywx
NCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9a
RVJPX0VSUk9SOwogICAgIG1fbnVtYmVyRm9ybWF0ID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJG
b3JtYXQsIElDVURlbGV0ZXI8dW51bV9jbG9zZT4+KHVudW1fb3BlbihzdHlsZSwgbnVsbHB0ciwg
MCwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9zKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBp
bml0aWFsaXplIE51bWJlckZvcm1hdCJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmIChtX3N0eWxlID09IFN0eWxlOjpDdXJyZW5jeSkgewogICAgICAgICB1bnVtX3NldFRl
eHRBdHRyaWJ1dGUobV9udW1iZXJGb3JtYXQuZ2V0KCksIFVOVU1fQ1VSUkVOQ1lfQ09ERSwgU3Ry
aW5nVmlldyhtX2N1cnJlbmN5KS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKSwgbV9jdXJyZW5jeS5s
ZW5ndGgoKSwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBp
bml0aWFsaXplIE51bWJlckZvcm1hdCJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgTnVtYmVyRm9ybWF0Il9z
dHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQpAQCAtNzY3LDE4ICs3
NjcsMTggQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjb24KICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9
IFVfWkVST19FUlJPUjsKICAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0
cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZf
b3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfc3RyKTsKICAgICB1
bnVtZl9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHZhbHVlLCBmb3JtYXR0
ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQg
dG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAg
ICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRvU3Ry
aW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVy
LiJfc3RyKTsKICNlbHNlCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAgICBhdXRvIHN0
YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERvdWJsZSwgbV9u
dW1iZXJGb3JtYXQuZ2V0KCksIHZhbHVlLCBidWZmZXIsIG51bGxwdHIpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBh
IG51bWJlci4iX3N0cik7CiAjZW5kaWYKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhX
VEZNb3ZlKGJ1ZmZlcikpKTsKIH0KQEAgLTc5OCwxOCArNzk4LDE4IEBAIEpTVmFsdWUgSW50bE51
bWJlckZvcm1hdDo6Zm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxNYXRo
ZW1hdGljYWxWCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0
byBmb3JtYXR0ZWROdW1iZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlciwgSUNV
RGVsZXRlcjx1bnVtZl9jbG9zZVJlc3VsdD4+KHVudW1mX29wZW5SZXN1bHQoJnN0YXR1cykpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGZvcm1hdCBhIEJpZ0ludC4iX3N0cik7CiAgICAgdW51bWZfZm9ybWF0RGVjaW1hbChtX251
bWJlckZvcm1hdHRlci5nZXQoKSwgc3RyaW5nLmRhdGEoKSwgc3RyaW5nLmxlbmd0aCgpLCBmb3Jt
YXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkK
LSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIEJpZ0ludC4iX3N0cik7
CiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0aW9uKHVudW1mX3Jlc3VsdFRv
U3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIGJ1ZmZlcik7CiAgICAgaWYgKFVfRkFJTFVS
RShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBCaWdJbnQuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmln
SW50LiJfc3RyKTsKICNlbHNlCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAgICBhdXRv
IHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bnVtX2Zvcm1hdERlY2ltYWws
IG1fbnVtYmVyRm9ybWF0LmdldCgpLCBzdHJpbmcuZGF0YSgpLCBzdHJpbmcubGVuZ3RoKCksIGJ1
ZmZlciwgbnVsbHB0cik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQg
YSBCaWdJbnQuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgQmlnSW50LiJfc3RyKTsKICNlbmRpZgogICAg
IHJldHVybiBqc1N0cmluZyh2bSwgU3RyaW5nKFdURk1vdmUoYnVmZmVyKSkpOwogfQpAQCAtODIz
LDMxICs4MjMsMzEgQEAgSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgc3RhcnQKICAgICBBU1NFUlQobV9udW1i
ZXJSYW5nZUZvcm1hdHRlcik7CiAKICAgICBpZiAoc3RkOjppc25hbihzdGFydCkgfHwgc3RkOjpp
c25hbihlbmQpKQotICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJQYXNzZWQgbnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJlcnMg
YXJlIG91dCBvZiByYW5nZSJfc3RyKTsKIAogICAgIGlmIChlbmQgPCBzdGFydCkKLSAgICAgICAg
cmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFy
Z2VyIHRoYW4gZW5kIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2VyIHRoYW4gZW5kIl9zdHIpOwogCiAgICAgaWYg
KGlzTmVnYXRpdmVaZXJvKGVuZCkgJiYgc3RhcnQgPj0gMCkKLSAgICAgICAgcmV0dXJuIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgaXMgbGFyZ2VyIHRoYW4gZW5k
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAic3RhcnQgaXMgbGFyZ2VyIHRoYW4gZW5kIl9zdHIpOwogCiAgICAgVUVycm9yQ29kZSBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byByYW5nZSA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9y
bWF0dGVkTnVtYmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0Pj4odW51bXJm
X29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
Zm9ybWF0IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIHVu
dW1yZl9mb3JtYXREb3VibGVSYW5nZShtX251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFy
dCwgZW5kLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zdHIpOwog
CiAgICAgYXV0byogZm9ybWF0dGVkVmFsdWUgPSB1bnVtcmZfcmVzdWx0QXNWYWx1ZShyYW5nZS5n
ZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQg
YSByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zdHIpOwogCiAgICAgaW50MzJfdCBs
ZW5ndGggPSAwOwogICAgIGNvbnN0IFVDaGFyKiBzdHJpbmcgPSB1Zm10dmFsX2dldFN0cmluZyhm
b3JtYXR0ZWRWYWx1ZSwgJmxlbmd0aCwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9zdHIp
OwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcoc3RyaW5nLCBsZW5ndGgpKTsKIH0K
QEAgLTg2MCw3ICs4NjAsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdl
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxNYXRoZW1hdAogICAgIEFTU0VSVCht
X251bWJlclJhbmdlRm9ybWF0dGVyKTsKIAogICAgIGlmIChzdGFydC5udW1iZXJUeXBlKCkgPT0g
SW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJUeXBlOjpOYU4gfHwgZW5kLm51bWJlclR5cGUo
KSA9PSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGU6Ok5hTikKLSAgICAgICAgcmV0
dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51bWJlcnMg
YXJlIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2UiX3N0cik7
CiAKICAgICBzdGFydC5lbnN1cmVOb25Eb3VibGUoKTsKICAgICBjb25zdCBhdXRvJiBzdGFydFN0
cmluZyA9IHN0YXJ0LmdldFN0cmluZygpOwpAQCAtODcxLDIwICs4NzEsMjAgQEAgSlNWYWx1ZSBJ
bnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBJbnRsTWF0aGVtYXQKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAg
ICBhdXRvIHJhbmdlID0gc3RkOjp1bmlxdWVfcHRyPFVGb3JtYXR0ZWROdW1iZXJSYW5nZSwgSUNV
RGVsZXRlcjx1bnVtcmZfY2xvc2VSZXN1bHQ+Pih1bnVtcmZfb3BlblJlc3VsdCgmc3RhdHVzKSk7
CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGZvcm1hdCBhIHJhbmdlIl9zdHIpOwogCiAgICAgdW51bXJmX2Zvcm1hdERlY2ltYWxSYW5n
ZShtX251bWJlclJhbmdlRm9ybWF0dGVyLmdldCgpLCBzdGFydFN0cmluZy5kYXRhKCksIHN0YXJ0
U3RyaW5nLmxlbmd0aCgpLCBlbmRTdHJpbmcuZGF0YSgpLCBlbmRTdHJpbmcubGVuZ3RoKCksIHJh
bmdlLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZv
cm1hdCBhIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3N0cik7CiAKICAgICBhdXRv
KiBmb3JtYXR0ZWRWYWx1ZSA9IHVudW1yZl9yZXN1bHRBc1ZhbHVlKHJhbmdlLmdldCgpLCAmc3Rh
dHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3N0cik7CiAKICAgICBpbnQzMl90IGxlbmd0aCA9IDA7
CiAgICAgY29uc3QgVUNoYXIqIHN0cmluZyA9IHVmbXR2YWxfZ2V0U3RyaW5nKGZvcm1hdHRlZFZh
bHVlLCAmbGVuZ3RoLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRv
IGZvcm1hdCBhIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3N0cik7CiAKICAgICBy
ZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhzdHJpbmcsIGxlbmd0aCkpOwogfQpAQCAtMTAzMCw3
ICsxMDMwLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZVRvUGFydHNJbnRl
cm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGludDMyX3QgZm9ybWF0dGVk
U3RyaW5nTGVuZ3RoID0gMDsKICAgICBjb25zdCBVQ2hhciogZm9ybWF0dGVkU3RyaW5nUG9pbnRl
ciA9IHVmbXR2YWxfZ2V0U3RyaW5nKGZvcm1hdHRlZFZhbHVlLCAmZm9ybWF0dGVkU3RyaW5nTGVu
Z3RoLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVtYmVy
IHJhbmdlIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkZhaWxlZCB0byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIFN0cmluZyByZXN1bHRTdHJpbmcoZm9ybWF0dGVkU3RyaW5nUG9pbnRlciwgZm9y
bWF0dGVkU3RyaW5nTGVuZ3RoKTsKQEAgLTEwMzksMTQgKzEwMzksMTQgQEAgdm9pZCBJbnRsTnVt
YmVyRm9ybWF0Ojpmb3JtYXRSYW5nZVRvUGFydHNJbnRlcm5hbChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgIC8vIFNvIHdlIGRvIG5vdCBjb25zdHJhaW50IGl0ZXJhdG9yLgogICAg
IGF1dG8gaXRlcmF0b3IgPSBzdGQ6OnVuaXF1ZV9wdHI8VUNvbnN0cmFpbmVkRmllbGRQb3NpdGlv
biwgSUNVRGVsZXRlcjx1Y2Zwb3NfY2xvc2U+Pih1Y2Zwb3Nfb3Blbigmc3RhdHVzKSk7CiAgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciByYW5nZSJfcyk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51
bWJlciByYW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gc2hh
cmVkU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAic2hhcmVkIl9zKTsKLSAgICBhdXRv
IHN0YXJ0UmFuZ2VTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJzdGFydFJhbmdlIl9z
KTsKLSAgICBhdXRvIGVuZFJhbmdlU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiZW5k
UmFuZ2UiX3MpOwotICAgIGF1dG8gbGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgImxpdGVyYWwiX3MpOworICAgIGF1dG8gc2hhcmVkU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAic2hhcmVkIl9zdHIpOworICAgIGF1dG8gc3RhcnRSYW5nZVN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgInN0YXJ0UmFuZ2UiX3N0cik7CisgICAgYXV0byBlbmRSYW5nZVN0
cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImVuZFJhbmdlIl9zdHIpOworICAgIGF1dG8g
bGl0ZXJhbFN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgImxpdGVyYWwiX3N0cik7CiAK
ICAgICBXVEY6OlJhbmdlPGludDMyX3Q+IHN0YXJ0UmFuZ2UgeyAtMSwgLTEgfTsKICAgICBXVEY6
OlJhbmdlPGludDMyX3Q+IGVuZFJhbmdlIHsgLTEsIC0xIH07CkBAIC0xMDU1LDcgKzEwNTUsNyBA
QCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0c0ludGVybmFsKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgYm9v
bCBuZXh0ID0gdWZtdHZhbF9uZXh0UG9zaXRpb24oZm9ybWF0dGVkVmFsdWUsIGl0ZXJhdG9yLmdl
dCgpLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBudW1iZXIgcmFuZ2UiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9zdHIpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmICghbmV4dCkKQEAgLTEwNjMsMTMg
KzEwNjMsMTMgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRSYW5nZVRvUGFydHNJbnRl
cm5hbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgICAgIGludDMyX3QgY2F0
ZWdvcnkgPSB1Y2Zwb3NfZ2V0Q2F0ZWdvcnkoaXRlcmF0b3IuZ2V0KCksICZzdGF0dXMpOwogICAg
ICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciByYW5nZSJfcyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVk
IHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3N0cik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAogICAgICAgICBpbnQzMl90IGZpZWxkVHlwZSA9IHVjZnBvc19nZXRGaWVsZChpdGVy
YXRvci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewot
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0
byBmb3JtYXQgbnVtYmVyIHJhbmdlIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciByYW5nZSJfc3RyKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMDc3LDcgKzEwNzcsNyBAQCB2
b2lkIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0c0ludGVybmFsKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIGludDMyX3QgZW5kSW5kZXggPSAwOwogICAg
ICAgICB1Y2Zwb3NfZ2V0SW5kZXhlcyhpdGVyYXRvci5nZXQoKSwgJmJlZ2luSW5kZXgsICZlbmRJ
bmRleCwgJnN0YXR1cyk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3Jt
YXQgbnVtYmVyIGludGVydmFsIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciBpbnRlcnZhbCJfc3RyKTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTUyLDM1ICsxMTUyLDM1IEBA
IEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGRvdWJsCiAgICAgQVNTRVJUKG1fbnVtYmVyUmFuZ2VGb3JtYXR0
ZXIpOwogCiAgICAgaWYgKHN0ZDo6aXNuYW4oc3RhcnQpIHx8IHN0ZDo6aXNuYW4oZW5kKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2Vk
IG51bWJlcnMgYXJlIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFu
Z2UiX3N0cik7CiAKICAgICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIHJldHVybiB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfc3RyKTsKIAogICAgIGlmIChpc05lZ2F0aXZlWmVy
byhlbmQpICYmIHN0YXJ0ID49IDApCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxh
cmdlciB0aGFuIGVuZCJfc3RyKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VS
Uk9SOwogICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJh
bmdlLCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZz
dGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdl
Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3N0cik7CiAKICAgICB1bnVtcmZfZm9ybWF0RG91
YmxlUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1hdHRlci5nZXQoKSwgc3RhcnQsIGVuZCwgcmFuZ2Uu
Z2V0KCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0
IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIGF1dG8qIGZv
cm1hdHRlZFZhbHVlID0gdW51bXJmX3Jlc3VsdEFzVmFsdWUocmFuZ2UuZ2V0KCksICZzdGF0dXMp
OwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsKIAogICAgIGJvb2wgZXF1YWwgPSBudW1iZXJGaWVs
ZHNQcmFjdGljYWxseUVxdWFsKGZvcm1hdHRlZFZhbHVlLCBzdGF0dXMpOwogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBudW1iZXIgcmFuZ2UiX3MpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBudW1iZXIgcmFu
Z2UiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaWYgKGVxdWFsKQot
ICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZvcm1hdFRvUGFydHMoZ2xvYmFsT2Jq
ZWN0LCBzdGFydCwganNOb250cml2aWFsU3RyaW5nKHZtLCAic2hhcmVkIl9zKSkpOworICAgICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIGZvcm1hdFRvUGFydHMoZ2xvYmFsT2JqZWN0LCBz
dGFydCwganNOb250cml2aWFsU3RyaW5nKHZtLCAic2hhcmVkIl9zdHIpKSk7CiAKICAgICBKU0Fy
cmF5KiBwYXJ0cyA9IEpTQXJyYXk6OnRyeUNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5hcnJheVN0
cnVjdHVyZUZvckluZGV4aW5nVHlwZUR1cmluZ0FsbG9jYXRpb24oQXJyYXlXaXRoQ29udGlndW91
cyksIDApOwogICAgIGlmICghcGFydHMpIHsKQEAgLTEyMDIsNyArMTIwMiw3IEBAIEpTVmFsdWUg
SW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEludGxNCiAgICAgQVNTRVJUKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIpOwogCiAg
ICAgaWYgKHN0YXJ0Lm51bWJlclR5cGUoKSA9PSBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJl
clR5cGU6Ok5hTiB8fCBlbmQubnVtYmVyVHlwZSgpID09IEludGxNYXRoZW1hdGljYWxWYWx1ZTo6
TnVtYmVyVHlwZTo6TmFOKQotICAgICAgICByZXR1cm4gdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJQYXNzZWQgbnVtYmVycyBhcmUgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51
bWJlcnMgYXJlIG91dCBvZiByYW5nZSJfc3RyKTsKIAogICAgIHN0YXJ0LmVuc3VyZU5vbkRvdWJs
ZSgpOwogICAgIGNvbnN0IGF1dG8mIHN0YXJ0U3RyaW5nID0gc3RhcnQuZ2V0U3RyaW5nKCk7CkBA
IC0xMjEzLDI0ICsxMjEzLDI0IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFu
Z2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEludGxNCiAgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byByYW5nZSA9IHN0ZDo6dW5pcXVl
X3B0cjxVRm9ybWF0dGVkTnVtYmVyUmFuZ2UsIElDVURlbGV0ZXI8dW51bXJmX2Nsb3NlUmVzdWx0
Pj4odW51bXJmX29wZW5SZXN1bHQoJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVz
KSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJm
YWlsZWQgdG8gZm9ybWF0IGEgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfc3RyKTsK
IAogICAgIHVudW1yZl9mb3JtYXREZWNpbWFsUmFuZ2UobV9udW1iZXJSYW5nZUZvcm1hdHRlci5n
ZXQoKSwgc3RhcnRTdHJpbmcuZGF0YSgpLCBzdGFydFN0cmluZy5sZW5ndGgoKSwgZW5kU3RyaW5n
LmRhdGEoKSwgZW5kU3RyaW5nLmxlbmd0aCgpLCByYW5nZS5nZXQoKSwgJnN0YXR1cyk7CiAgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZv
cm1hdCBhIHJhbmdlIl9zdHIpOwogCiAgICAgYXV0byogZm9ybWF0dGVkVmFsdWUgPSB1bnVtcmZf
cmVzdWx0QXNWYWx1ZShyYW5nZS5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBmb3JtYXQgYSByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCBhIHJhbmdlIl9z
dHIpOwogCiAgICAgYm9vbCBlcXVhbCA9IG51bWJlckZpZWxkc1ByYWN0aWNhbGx5RXF1YWwoZm9y
bWF0dGVkVmFsdWUsIHN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0
IG51bWJlciByYW5nZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IG51bWJlciByYW5nZSJfc3RyKTsKICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICB9CiAKICAgICBpZiAoZXF1YWwpCi0gICAgICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgZm9ybWF0VG9QYXJ0cyhnbG9iYWxPYmplY3QsIFdURk1vdmUoc3RhcnQpLCBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJzaGFyZWQiX3MpKSk7CisgICAgICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgZm9ybWF0VG9QYXJ0cyhnbG9iYWxPYmplY3QsIFdURk1vdmUoc3RhcnQp
LCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJzaGFyZWQiX3N0cikpKTsKIAogICAgIEpTQXJyYXkq
IHBhcnRzID0gSlNBcnJheTo6dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0
dXJlRm9ySW5kZXhpbmdUeXBlRHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhDb250aWd1b3VzKSwg
MCk7CiAgICAgaWYgKCFwYXJ0cykgewpAQCAtMTQwOCwxMSArMTQwOCwxMSBAQCBKU1ZhbHVlIElu
dGxOdW1iZXJGb3JtYXQ6OnVzZUdyb3VwaW5nVmFsdWUoVk0mIHZtLCBVc2VHcm91cGluZyB1c2VH
cm91cGluZykKICAgICBjYXNlIFVzZUdyb3VwaW5nOjpGYWxzZToKICAgICAgICAgcmV0dXJuIGpz
Qm9vbGVhbihmYWxzZSk7CiAgICAgY2FzZSBVc2VHcm91cGluZzo6TWluMjoKLSAgICAgICAgcmV0
dXJuIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIm1pbjIiX3MpOworICAgICAgICByZXR1cm4ganNO
b250cml2aWFsU3RyaW5nKHZtLCAibWluMiJfc3RyKTsKICAgICBjYXNlIFVzZUdyb3VwaW5nOjpB
dXRvOgotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAiYXV0byJfcyk7Cisg
ICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJhdXRvIl9zdHIpOwogICAgIGNh
c2UgVXNlR3JvdXBpbmc6OkFsd2F5czoKLSAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgImFsd2F5cyJfcyk7CisgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJhbHdheXMiX3N0cik7CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpAQCAt
MTQ4OSw3ICsxNDg5LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50
ZXJuYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGUKICAgICAgICAgVUVycm9y
Q29kZSBzdGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgICAgIGludDMyX3QgZmllbGRUeXBlID0g
aXRlcmF0b3IubmV4dChiZWdpbkluZGV4LCBlbmRJbmRleCwgc3RhdHVzKTsKICAgICAgICAgaWYg
KFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGl0ZXJhdGUgZmllbGQgcG9zaXRpb24gaXRlcmF0b3Ii
X3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZh
aWxlZCB0byBpdGVyYXRlIGZpZWxkIHBvc2l0aW9uIGl0ZXJhdG9yIl9zdHIpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIGlmIChmaWVsZFR5cGUgPCAwKQpAQCAtMTUw
MCw3ICsxNTAwLDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzSW50ZXJu
YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3R5bGUKIAogICAgIGF1dG8gZmxhdHRl
biA9IGZsYXR0ZW5GaWVsZHMoV1RGTW92ZShmaWVsZHMpLCBzdHJpbmdMZW5ndGgpOwogCi0gICAg
YXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJhbCJfcyk7
CisgICAgYXV0byBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJh
bCJfc3RyKTsKICAgICBJZGVudGlmaWVyIHVuaXROYW1lOwogICAgIGlmICh1bml0KQogICAgICAg
ICB1bml0TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ1bml0Iik7CkBAIC0xNTMw
LDI5ICsxNTMwLDI5IEBAIEpTVmFsdWUgSW50bE51bWJlckZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsCiAgICAgVUVycm9yQ29kZSBz
dGF0dXMgPSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBmaWVsZEl0ciA9IHN0ZDo6dW5pcXVlX3B0
cjxVRmllbGRQb3NpdGlvbkl0ZXJhdG9yLCBVRmllbGRQb3NpdGlvbkl0ZXJhdG9yRGVsZXRlcj4o
dWZpZWxkcG9zaXRlcl9vcGVuKCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykp
Ci0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBvcGVuIGZpZWxk
IHBvc2l0aW9uIGl0ZXJhdG9yIl9zdHIpOwogCiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gcmVzdWx0
OwogI2lmIEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKICAgICBBU1NFUlQobV9udW1iZXJG
b3JtYXR0ZXIpOwogICAgIGF1dG8gZm9ybWF0dGVkTnVtYmVyID0gc3RkOjp1bmlxdWVfcHRyPFVG
b3JtYXR0ZWROdW1iZXIsIElDVURlbGV0ZXI8dW51bWZfY2xvc2VSZXN1bHQ+Pih1bnVtZl9vcGVu
UmVzdWx0KCZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1h
dCBhIG51bWJlci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zdHIpOwogICAgIHVudW1m
X2Zvcm1hdERvdWJsZShtX251bWJlckZvcm1hdHRlci5nZXQoKSwgdmFsdWUsIGZvcm1hdHRlZE51
bWJlci5nZXQoKSwgJnN0YXR1cyk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAg
ICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBm
b3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfc3RyKTsKICAgICBz
dGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bWZfcmVzdWx0VG9TdHJpbmcs
IGZvcm1hdHRlZE51bWJlci5nZXQoKSwgcmVzdWx0KTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9z
dHIpOwogICAgIHVudW1mX3Jlc3VsdEdldEFsbEZpZWxkUG9zaXRpb25zKGZvcm1hdHRlZE51bWJl
ci5nZXQoKSwgZmllbGRJdHIuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3Rh
dHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4i
X3N0cik7CiAgICAgSW50bEZpZWxkSXRlcmF0b3IgaXRlcmF0b3IoKmZpZWxkSXRyLmdldCgpKTsK
ICNlbHNlCiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0KTsKICAgICBzdGF0dXMgPSBjYWxsQnVm
ZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXREb3VibGVGb3JGaWVsZHMsIG1fbnVtYmVy
Rm9ybWF0LmdldCgpLCB2YWx1ZSwgcmVzdWx0LCBmaWVsZEl0ci5nZXQoKSk7CiAgICAgaWYgKFVf
RkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0
IGEgbnVtYmVyLiJfc3RyKTsKICAgICBJbnRsRmllbGRJdGVyYXRvciBpdGVyYXRvcigqZmllbGRJ
dHIuZ2V0KCkpOwogI2VuZGlmCiAKQEAgLTE1ODAsMjUgKzE1ODAsMjUgQEAgSlNWYWx1ZSBJbnRs
TnVtYmVyRm9ybWF0Ojpmb3JtYXRUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEludGxNYXRoZW0KICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBh
dXRvIGZpZWxkSXRyID0gc3RkOjp1bmlxdWVfcHRyPFVGaWVsZFBvc2l0aW9uSXRlcmF0b3IsIFVG
aWVsZFBvc2l0aW9uSXRlcmF0b3JEZWxldGVyPih1ZmllbGRwb3NpdGVyX29wZW4oJnN0YXR1cykp
OwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gb3BlbiBmaWVsZCBwb3NpdGlvbiBp
dGVyYXRvciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIG9wZW4gZmllbGQgcG9zaXRpb24gaXRlcmF0b3IiX3N0cik7CiAK
ICAgICBWZWN0b3I8VUNoYXIsIDMyPiByZXN1bHQ7CiAgICAgQVNTRVJUKG1fbnVtYmVyRm9ybWF0
dGVyKTsKICAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0
dGVkTnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3NlUmVzdWx0Pj4odW51bWZfb3BlblJlc3Vs
dCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBu
dW1iZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfc3RyKTsKIAogICAgIHVudW1mX2Zv
cm1hdERlY2ltYWwobV9udW1iZXJGb3JtYXR0ZXIuZ2V0KCksIHN0cmluZy5kYXRhKCksIHN0cmlu
Zy5sZW5ndGgoKSwgZm9ybWF0dGVkTnVtYmVyLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9G
QUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiRmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQg
YSBudW1iZXIuIl9zdHIpOwogCiAgICAgc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1bmN0
aW9uKHVudW1mX3Jlc3VsdFRvU3RyaW5nLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksIHJlc3VsdCk7
CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZhaWxlZCB0byBmb3JtYXQgYSBudW1iZXIuIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWls
ZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJfc3RyKTsKIAogICAgIHVudW1mX3Jlc3VsdEdldEFsbEZp
ZWxkUG9zaXRpb25zKGZvcm1hdHRlZE51bWJlci5nZXQoKSwgZmllbGRJdHIuZ2V0KCksICZzdGF0
dXMpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGYWlsZWQgdG8gZm9ybWF0IGEgbnVtYmVyLiJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RmFpbGVkIHRvIGZvcm1hdCBhIG51bWJlci4iX3N0cik7CiAKICAgICBJbnRsRmllbGRJdGVyYXRv
ciBpdGVyYXRvcigqZmllbGRJdHIuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yLmNwcApp
bmRleCA0MTY0MDg5OTdjMThmN2M3NjI4Zjc3NWI4ZDQxZGY3NzI0MmE0ZDE2Li4zYzEyMTQwM2E4
YTIyY2ZjYThkNjQyM2FlMjE0MDI5N2Y5YjUwNTc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRDb25zdHJ1Y3Rvci5j
cHAKQEAgLTc0LDcgKzc0LDcgQEAgSW50bE51bWJlckZvcm1hdENvbnN0cnVjdG9yOjpJbnRsTnVt
YmVyRm9ybWF0Q29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnUKIAogdm9pZCBJbnRs
TnVtYmVyRm9ybWF0Q29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZSogbnVtYmVyRm9ybWF0UHJvdG90eXBlKQogewotICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCAwLCAiTnVtYmVyRm9ybWF0Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9k
ZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCAwLCAiTnVtYmVyRm9ybWF0Il9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0
U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbnVtYmVyRm9ybWF0UHJvdG90eXBlLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0SW5saW5lcy5oCmluZGV4IDFh
ZjQxZWEyMTIzYjVkNmZhMjkxY2FmZDNmMmVmNjJkZWFiNzgzOTQuLjM5NzdkOTAyMjk1MGRkYWZm
MzZhNDMyMzJjYWQxZjkwOWQyZDU5OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdElubGluZXMuaApAQCAtOTcsNyArOTcsNyBA
QCB2b2lkIHNldE51bWJlckZvcm1hdERpZ2l0T3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBJbnRsVHlwZSogaW50bElucwogICAgICAgICAgICAgZWxzZSBpZiAobWF4aW11bUZy
YWN0aW9uRGlnaXRzID09IHVuZGVmaW5lZFZhbHVlKQogICAgICAgICAgICAgICAgIG1heGltdW1G
cmFjdGlvbkRpZ2l0cyA9IHN0ZDo6bWF4KG1heGltdW1GcmFjdGlvbkRpZ2l0c0RlZmF1bHQsIG1p
bmltdW1GcmFjdGlvbkRpZ2l0cyk7CiAgICAgICAgICAgICBlbHNlIGlmIChtaW5pbXVtRnJhY3Rp
b25EaWdpdHMgPiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMpIHsKLSAgICAgICAgICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbXB1dGVkIG1pbmltdW1GcmFjdGlv
bkRpZ2l0cyBpcyBsYXJnZXIgdGhhbiBtYXhpbXVtRnJhY3Rpb25EaWdpdHMiX3MpOworICAgICAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ29tcHV0ZWQg
bWluaW11bUZyYWN0aW9uRGlnaXRzIGlzIGxhcmdlciB0aGFuIG1heGltdW1GcmFjdGlvbkRpZ2l0
cyJfc3RyKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXRQcm90
b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAKaW5kZXggOGRiMjk0MDhhZGZhYmNhMTgzNmQxOTBkOGNkMWI4ZTU1ODU5
ZmFlYi4uOWIzYTQyMmRhOTlmNGU2NzJmYmY0YmI0ZWFhOWYyMDhiYzVlNDA1YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdFByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1h
dFByb3RvdHlwZS5jcHAKQEAgLTEyMCw3ICsxMjAsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIoaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0
KgogICAgIGF1dG8qIG5mID0gSW50bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xkRnVuY3Rpb25z
KGdsb2JhbE9iamVjdCwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKFVOTElLRUxZKCFuZikpCi0gICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3Jt
YXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51bWJlckZv
cm1hdCJfc3RyKSk7CiAKICAgICBKU0JvdW5kRnVuY3Rpb24qIGJvdW5kRm9ybWF0ID0gbmYtPmJv
dW5kRm9ybWF0KCk7CiAgICAgLy8gMi4gSWYgbmYuW1tib3VuZEZvcm1hdF1dIGlzIHVuZGVmaW5l
ZCwKQEAgLTEyOCw3ICsxMjgsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIoaW50bE51bWJl
ckZvcm1hdFByb3RvdHlwZUdldHRlckZvcm1hdCwgKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbmYtPmdsb2JhbE9iamVjdCh2bSk7CiAgICAg
ICAgIC8vIGEuIExldCBGIGJlIGEgbmV3IGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBhcyBkZWZp
bmVkIGluIDExLjMuNC4KICAgICAgICAgLy8gYi4gVGhlIHZhbHVlIG9mIEbigJlzIGxlbmd0aCBw
cm9wZXJ0eSBpcyAxLgotICAgICAgICBhdXRvKiB0YXJnZXRPYmplY3QgPSBKU0Z1bmN0aW9uOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgImZvcm1hdCJfcywgaW50bE51bWJlckZvcm1hdEZ1
bmNGb3JtYXQsIE5vSW50cmluc2ljKTsKKyAgICAgICAgYXV0byogdGFyZ2V0T2JqZWN0ID0gSlNG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDEsICJmb3JtYXQiX3N0ciwgaW50bE51
bWJlckZvcm1hdEZ1bmNGb3JtYXQsIE5vSW50cmluc2ljKTsKICAgICAgICAgLy8gYy4gTGV0IGJm
IGJlIEJvdW5kRnVuY3Rpb25DcmVhdGUoRiwgwqt0aGlzIHZhbHVlwrspLgogICAgICAgICBib3Vu
ZEZvcm1hdCA9IEpTQm91bmRGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHRhcmdl
dE9iamVjdCwgbmYsIG51bGxwdHIsIDEsIG51bGxwdHIpOwogICAgICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE0OCwxMyArMTQ4LDEzIEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY0Zvcm1h
dFJhbmdlLCAoSlNHbG9iYWxPYmplCiAgICAgLy8gRG8gbm90IHVzZSB1bndyYXBGb3JPbGRGdW5j
dGlvbnMuCiAgICAgYXV0byogbnVtYmVyRm9ybWF0ID0ganNEeW5hbWljQ2FzdDxJbnRsTnVtYmVy
Rm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmIChVTkxJS0VMWSgh
bnVtYmVyRm9ybWF0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLmZv
cm1hdFJhbmdlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTnVtYmVyRm9ybWF0Il9zKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRSYW5nZSBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfc3RyKSk7CiAKICAgICBKU1Zh
bHVlIHN0YXJ0VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIEpTVmFsdWUgZW5k
VmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwogCiAgICAgaWYgKHN0YXJ0VmFsdWUuaXNV
bmRlZmluZWQoKSB8fCBlbmRWYWx1ZS5pc1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic3RhcnQgb3IgZW5kIGlzIHVuZGVm
aW5lZCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJzdGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zdHIpOwogCiAgICAgYXV0byBzdGFy
dCA9IHRvSW50bE1hdGhlbWF0aWNhbFZhbHVlKGdsb2JhbE9iamVjdCwgc3RhcnRWYWx1ZSk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTE4Miw3ICsxODIsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bE51bWJlckZvcm1hdFByb3RvdHlwZUZ1bmNGb3Jt
YXRUb1BhcnRzLCAoSlNHbG9iYWxPYgogICAgIC8vIERvIG5vdCB1c2UgdW53cmFwRm9yT2xkRnVu
Y3Rpb25zLgogICAgIGF1dG8qIG51bWJlckZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bE51bWJl
ckZvcm1hdCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFko
IW51bWJlckZvcm1hdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5m
b3JtYXRUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTnVtYmVyRm9ybWF0Il9z
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5mb3JtYXRUb1BhcnRz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgTnVtYmVyRm9ybWF0Il9zdHIpKTsKIAogI2lm
IEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKICAgICBhdXRvIHZhbHVlID0gdG9JbnRsTWF0
aGVtYXRpY2FsVmFsdWUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKQEAg
LTIwOSwxMyArMjA5LDEzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsTnVtYmVyRm9y
bWF0UHJvdG90eXBlRnVuY0Zvcm1hdFJhbmdlVG9QYXJ0cywgKEpTR2xvCiAgICAgLy8gRG8gbm90
IHVzZSB1bndyYXBGb3JPbGRGdW5jdGlvbnMuCiAgICAgYXV0byogbnVtYmVyRm9ybWF0ID0ganNE
eW5hbWljQ2FzdDxJbnRsTnVtYmVyRm9ybWF0Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmIChVTkxJS0VMWSghbnVtYmVyRm9ybWF0KSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5OdW1i
ZXJGb3JtYXQucHJvdG90eXBlLmZvcm1hdFJhbmdlVG9QYXJ0cyBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIE51bWJlckZvcm1hdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLk51bWJlckZvcm1h
dC5wcm90b3R5cGUuZm9ybWF0UmFuZ2VUb1BhcnRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgTnVtYmVyRm9ybWF0Il9zdHIpKTsKIAogICAgIEpTVmFsdWUgc3RhcnRWYWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMCk7CiAgICAgSlNWYWx1ZSBlbmRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSk7CiAKICAgICBpZiAoc3RhcnRWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZFZhbHVl
LmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IG9yIGVuZCBp
cyB1bmRlZmluZWQiX3N0cik7CiAKICAgICBhdXRvIHN0YXJ0ID0gdG9JbnRsTWF0aGVtYXRpY2Fs
VmFsdWUoZ2xvYmFsT2JqZWN0LCBzdGFydFZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwpAQCAtMjQyLDcgKzI0Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihpbnRsTnVtYmVyRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucywgKEpTR2xvYmFs
CiAgICAgYXV0byogbnVtYmVyRm9ybWF0ID0gSW50bE51bWJlckZvcm1hdDo6dW53cmFwRm9yT2xk
RnVuY3Rpb25zKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoVU5MSUtFTFkoIW51bWJlckZv
cm1hdCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBOdW1iZXJGb3JtYXQiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5OdW1iZXJGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIE51bWJlckZvcm1hdCJfc3RyKSk7CiAKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShudW1iZXJGb3JtYXQtPnJlc29s
dmVkT3B0aW9ucyhnbG9iYWxPYmplY3QpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDA0OWJjMzk0NjgyNTZkZTM2ZmJjZGRhOGZhMjcy
MjE5YmIzMThlZjQuLjRjNDJjYTRiMzc2MzY2NjMxZjIxNTRmMGExYmFkY2UzOWU4ZDI5ZDEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC03MzQs
NyArNzM0LDcgQEAgVmVjdG9yPFN0cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvY2EKICAgICAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIFZlY3RvcjxTdHJpbmc+KCkpOwogCiAgICAgICAgICAgICBpZiAo
IWtWYWx1ZS5pc1N0cmluZygpICYmICFrVmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJsb2NhbGUgdmFsdWUgbXVz
dCBiZSBhIHN0cmluZyBvciBvYmplY3QiX3MpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJsb2NhbGUgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBv
ciBvYmplY3QiX3N0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAg
IH0KIApAQCAtODExLDcgKzgxMSw3IEBAIFN0cmluZyBkZWZhdWx0TG9jYWxlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgaWYgKCFpY3VEZWZhdWx0TG9jYWxTdHJpbmctPmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIGljdURlZmF1bHRMb2NhbFN0cmluZy5nZXQoKTsKIAotICAg
IHJldHVybiAiZW4iX3M7CisgICAgcmV0dXJuICJlbiJfc3RyOwogfQogCiBTdHJpbmcgcmVtb3Zl
VW5pY29kZUxvY2FsZUV4dGVuc2lvbihjb25zdCBTdHJpbmcmIGxvY2FsZSkKQEAgLTkxNyw3ICs5
MTcsNyBAQCBSZXNvbHZlZExvY2FsZSByZXNvbHZlTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IExvY2FsZVNldCYgYXZhaQogICAgIFJlc29sdmVkTG9jYWxlIHJlc29s
dmVkOwogICAgIHJlc29sdmVkLmRhdGFMb2NhbGUgPSBmb3VuZExvY2FsZTsKIAotICAgIFN0cmlu
ZyBzdXBwb3J0ZWRFeHRlbnNpb24gPSAiLXUiX3M7CisgICAgU3RyaW5nIHN1cHBvcnRlZEV4dGVu
c2lvbiA9ICItdSJfc3RyOwogICAgIGZvciAoUmVsZXZhbnRFeHRlbnNpb25LZXkga2V5IDogcmVs
ZXZhbnRFeHRlbnNpb25LZXlzKSB7CiAgICAgICAgIEFTQ0lJTGl0ZXJhbCBrZXlTdHJpbmcgPSBy
ZWxldmFudEV4dGVuc2lvbktleVN0cmluZyhrZXkpOwogICAgICAgICBWZWN0b3I8U3RyaW5nPiBr
ZXlMb2NhbGVEYXRhID0gbG9jYWxlRGF0YShmb3VuZExvY2FsZSwga2V5KTsKQEAgLTkzNyw3ICs5
MzcsNyBAQCBSZXNvbHZlZExvY2FsZSByZXNvbHZlTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IExvY2FsZVNldCYgYXZhaQogICAgICAgICAgICAgICAgICAgICAgICAg
c3VwcG9ydGVkRXh0ZW5zaW9uQWRkaXRpb24gPSBtYWtlU3RyaW5nKCctJywga2V5U3RyaW5nLCAn
LScsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoa2V5TG9jYWxlRGF0YS5jb250YWlucygidHJ1ZSJfcykpIHsKLSAgICAgICAgICAgICAg
ICAgICAgdmFsdWUgPSAidHJ1ZSJfczsKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSAidHJ1
ZSJfc3RyOwogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRFeHRlbnNpb25BZGRpdGlvbiA9
IG1ha2VTdHJpbmcoJy0nLCBrZXlTdHJpbmcpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIH0KQEAgLTE1MTAsMzUgKzE1MTAsMzUgQEAgc3RkOjpvcHRpb25hbDxWZWN0b3I8Y2hhciwg
MzI+PiBjYW5vbmljYWxpemVMb2NhbGVJRFdpdGhvdXROdWxsVGVybWluYXRvcihjb25zdAogc3Rk
OjpvcHRpb25hbDxTdHJpbmc+IG1hcElDVUNhbGVuZGFyS2V5d29yZFRvQkNQNDcoY29uc3QgU3Ry
aW5nJiBjYWxlbmRhcikKIHsKICAgICBpZiAoY2FsZW5kYXIgPT0gImdyZWdvcmlhbiJfcykKLSAg
ICAgICAgcmV0dXJuICJncmVnb3J5Il9zOworICAgICAgICByZXR1cm4gImdyZWdvcnkiX3N0cjsK
ICAgICAvLyBpc2xhbWljYyBpcyBkZXByZWNhdGVkIGluIEJDUDQ3LCBhbmQgaXNsYW1pYy1jaXZp
bCBpcyBwcmVmZXJyZWQuCiAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2Ns
ZHIvYmxvYi9tYXN0ZXIvY29tbW9uL2JjcDQ3L2NhbGVuZGFyLnhtbAogICAgIGlmIChjYWxlbmRh
ciA9PSAiZXRoaW9waWMtYW1ldGUtYWxlbSJfcykKLSAgICAgICAgcmV0dXJuICJldGhpb2FhIl9z
OworICAgICAgICByZXR1cm4gImV0aGlvYWEiX3N0cjsKICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogfQogCiBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWFwQkNQNDdUb0lDVUNhbGVuZGFyS2V5d29y
ZChjb25zdCBTdHJpbmcmIGNhbGVuZGFyKQogewogICAgIGlmIChjYWxlbmRhciA9PSAiZ3JlZ29y
eSJfcykKLSAgICAgICAgcmV0dXJuICJncmVnb3JpYW4iX3M7CisgICAgICAgIHJldHVybiAiZ3Jl
Z29yaWFuIl9zdHI7CiAgICAgaWYgKGNhbGVuZGFyID09ICJpc2xhbWljYyJfcykKLSAgICAgICAg
cmV0dXJuICJpc2xhbWljLWNpdmlsIl9zOworICAgICAgICByZXR1cm4gImlzbGFtaWMtY2l2aWwi
X3N0cjsKICAgICBpZiAoY2FsZW5kYXIgPT0gImV0aGlvYWEiX3MpCi0gICAgICAgIHJldHVybiAi
ZXRoaW9waWMtYW1ldGUtYWxlbSJfczsKKyAgICAgICAgcmV0dXJuICJldGhpb3BpYy1hbWV0ZS1h
bGVtIl9zdHI7CiAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIH0KIAogc3RkOjpvcHRpb25hbDxT
dHJpbmc+IG1hcElDVUNvbGxhdGlvbktleXdvcmRUb0JDUDQ3KGNvbnN0IFN0cmluZyYgY29sbGF0
aW9uKQogewogICAgIGlmIChjb2xsYXRpb24gPT0gImRpY3Rpb25hcnkiX3MpCi0gICAgICAgIHJl
dHVybiAiZGljdCJfczsKKyAgICAgICAgcmV0dXJuICJkaWN0Il9zdHI7CiAgICAgaWYgKGNvbGxh
dGlvbiA9PSAiZ2IyMzEyaGFuIl9zKQotICAgICAgICByZXR1cm4gImdiMjMxMiJfczsKKyAgICAg
ICAgcmV0dXJuICJnYjIzMTIiX3N0cjsKICAgICBpZiAoY29sbGF0aW9uID09ICJwaG9uZWJvb2si
X3MpCi0gICAgICAgIHJldHVybiAicGhvbmViayJfczsKKyAgICAgICAgcmV0dXJuICJwaG9uZWJr
Il9zdHI7CiAgICAgaWYgKGNvbGxhdGlvbiA9PSAidHJhZGl0aW9uYWwiX3MpCi0gICAgICAgIHJl
dHVybiAidHJhZCJfczsKKyAgICAgICAgcmV0dXJuICJ0cmFkIl9zdHI7CiAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIH0KIApAQCAtMTY0MiwxMyArMTY0MiwxMyBAQCBzdGF0aWMgSlNBcnJheSog
YXZhaWxhYmxlQ29sbGF0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIFVF
cnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8gZW51bWVyYXRpb24gPSBz
dGQ6OnVuaXF1ZV9wdHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVlbnVtX2Nsb3NlPj4odWNv
bF9nZXRLZXl3b3JkVmFsdWVzKCJjb2xsYXRpb24iLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjb2xsYXRpb25zIl9zKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJh
dGUgYXZhaWxhYmxlIGNvbGxhdGlvbnMiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAg
fQogCiAgICAgaW50MzJfdCBjb3VudCA9IHVlbnVtX2NvdW50KGVudW1lcmF0aW9uLmdldCgpLCAm
c3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxl
IGNvbGxhdGlvbnMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY29sbGF0aW9ucyJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTE2NTYsMTMgKzE2NTYsMTMgQEAgc3RhdGlj
IEpTQXJyYXkqIGF2YWlsYWJsZUNvbGxhdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICBlbGVtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGNvdW50ICsgMik7CiAgICAg
Ly8gSUNVIH42OSBoYXMgYSBidWcgdGhhdCBkb2VzIG5vdCByZXBvcnQgImVtb2ppIiBhbmQgImVv
ciIgZm9yIGNvbGxhdGlvbiB3aGVuIHVzaW5nIHVjb2xfZ2V0S2V5d29yZFZhbHVlcy4KICAgICAv
LyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC8yNDc3OGRmYzliZjY3
ZjQzMTUwOTM2MWExNzNhMzNhMWFiODYwYjVkCi0gICAgZWxlbWVudHMuYXBwZW5kKCJlbW9qaSJf
cyk7Ci0gICAgZWxlbWVudHMuYXBwZW5kKCJlb3IiX3MpOworICAgIGVsZW1lbnRzLmFwcGVuZCgi
ZW1vamkiX3N0cik7CisgICAgZWxlbWVudHMuYXBwZW5kKCJlb3IiX3N0cik7CiAgICAgZm9yIChp
bnQzMl90IGluZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewogICAgICAgICBpbnQz
Ml90IGxlbmd0aCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIHBvaW50ZXIgPSB1ZW51bV9uZXh0
KGVudW1lcmF0aW9uLmdldCgpLCAmbGVuZ3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJ
TFVSRShzdGF0dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY29sbGF0aW9ucyJfcyk7Cisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRv
IGVudW1lcmF0ZSBhdmFpbGFibGUgY29sbGF0aW9ucyJfc3RyKTsKICAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgIH0KICAgICAgICAgU3RyaW5nIGNvbGxhdGlvbihwb2ludGVyLCBsZW5n
dGgpOwpAQCAtMTY5NSwxMyArMTY5NSwxMyBAQCBzdGF0aWMgSlNBcnJheSogYXZhaWxhYmxlQ3Vy
cmVuY2llcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIFVFcnJvckNvZGUgc3Rh
dHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8gZW51bWVyYXRpb24gPSBzdGQ6OnVuaXF1ZV9w
dHI8VUVudW1lcmF0aW9uLCBJQ1VEZWxldGVyPHVlbnVtX2Nsb3NlPj4odWN1cnJfb3BlbklTT0N1
cnJlbmNpZXMoVUNVUlJfQUxMLCAmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQg
dG8gZW51bWVyYXRlIGF2YWlsYWJsZSBjdXJyZW5jaWVzIl9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxl
IGN1cnJlbmNpZXMiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaW50
MzJfdCBjb3VudCA9IHVlbnVtX2NvdW50KGVudW1lcmF0aW9uLmdldCgpLCAmc3RhdHVzKTsKICAg
ICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJhdGUgYXZhaWxhYmxlIGN1cnJlbmNpZXMi
X3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVk
IHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY3VycmVuY2llcyJfc3RyKTsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAKQEAgLTE3MTMsMTMgKzE3MTMsMTMgQEAgc3RhdGljIEpTQXJyYXkqIGF2
YWlsYWJsZUN1cnJlbmNpZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICAvLyAg
ICAgMi4gRG8gbm90IGFkZCBFUUUgYW5kIExTTQogICAgIC8vIGh0dHBzOi8vdW5pY29kZS1vcmcu
YXRsYXNzaWFuLm5ldC9icm93c2UvSUNVLTIxNjg1CiAgICAgZWxlbWVudHMucmVzZXJ2ZUluaXRp
YWxDYXBhY2l0eShjb3VudCArIDIpOwotICAgIGVsZW1lbnRzLmFwcGVuZCgiVkVTIl9zKTsKLSAg
ICBlbGVtZW50cy5hcHBlbmQoIlVZVyJfcyk7CisgICAgZWxlbWVudHMuYXBwZW5kKCJWRVMiX3N0
cik7CisgICAgZWxlbWVudHMuYXBwZW5kKCJVWVciX3N0cik7CiAgICAgZm9yIChpbnQzMl90IGlu
ZGV4ID0gMDsgaW5kZXggPCBjb3VudDsgKytpbmRleCkgewogICAgICAgICBpbnQzMl90IGxlbmd0
aCA9IDA7CiAgICAgICAgIGNvbnN0IGNoYXIqIHBvaW50ZXIgPSB1ZW51bV9uZXh0KGVudW1lcmF0
aW9uLmdldCgpLCAmbGVuZ3RoLCAmc3RhdHVzKTsKICAgICAgICAgaWYgKFVfRkFJTFVSRShzdGF0
dXMpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgY3VycmVuY2llcyJfcyk7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0
ZSBhdmFpbGFibGUgY3VycmVuY2llcyJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAg
ICAgICAgIH0KICAgICAgICAgU3RyaW5nIGN1cnJlbmN5KHBvaW50ZXIsIGxlbmd0aCk7CkBAIC0x
NzUxLDEzICsxNzUxLDEzIEBAIHN0YXRpYyBKU0FycmF5KiBhdmFpbGFibGVOdW1iZXJpbmdTeXN0
ZW1zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgVUVycm9yQ29kZSBzdGF0dXMg
PSBVX1pFUk9fRVJST1I7CiAgICAgYXV0byBlbnVtZXJhdGlvbiA9IHN0ZDo6dW5pcXVlX3B0cjxV
RW51bWVyYXRpb24sIElDVURlbGV0ZXI8dWVudW1fY2xvc2U+Pih1bnVtc3lzX29wZW5BdmFpbGFi
bGVOYW1lcygmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRl
IGF2YWlsYWJsZSBudW1iZXJpbmcgc3lzdGVtcyJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJsZSBudW1i
ZXJpbmcgc3lzdGVtcyJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKICAgICBp
bnQzMl90IGNvdW50ID0gdWVudW1fY291bnQoZW51bWVyYXRpb24uZ2V0KCksICZzdGF0dXMpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5n
IHN5c3RlbXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVyaW5nIHN5c3RlbXMiX3N0cik7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0xNzY3LDEyICsxNzY3LDEyIEBAIHN0
YXRpYyBKU0FycmF5KiBhdmFpbGFibGVOdW1iZXJpbmdTeXN0ZW1zKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgICAgIGludDMyX3QgbGVuZ3RoID0gMDsKICAgICAgICAgY29uc3Qg
Y2hhciogbmFtZSA9IHVlbnVtX25leHQoZW51bWVyYXRpb24uZ2V0KCksICZsZW5ndGgsICZzdGF0
dXMpOwogICAgICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWls
YWJsZSBudW1iZXJpbmcgc3lzdGVtcyJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGVudW1lcmF0ZSBhdmFpbGFibGUgbnVtYmVy
aW5nIHN5c3RlbXMiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAg
ICAgICAgIGF1dG8gbnVtYmVyaW5nU3lzdGVtID0gc3RkOjp1bmlxdWVfcHRyPFVOdW1iZXJpbmdT
eXN0ZW0sIElDVURlbGV0ZXI8dW51bXN5c19jbG9zZT4+KHVudW1zeXNfb3BlbkJ5TmFtZShuYW1l
LCAmc3RhdHVzKSk7CiAgICAgICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBlbnVtZXJh
dGUgYXZhaWxhYmxlIG51bWJlcmluZyBzeXN0ZW1zIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZW51bWVyYXRlIGF2YWlsYWJs
ZSBudW1iZXJpbmcgc3lzdGVtcyJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
ICAgIH0KICAgICAgICAgaWYgKHVudW1zeXNfaXNBbGdvcml0aG1pYyhudW1iZXJpbmdTeXN0ZW0u
Z2V0KCkpKQpAQCAtMTgwOSw3ICsxODA5LDcgQEAgc3RhdGljIGJvb2wgaXNWYWxpZFRpbWVab25l
TmFtZUZyb21JQ1VUaW1lWm9uZShTdHJpbmdWaWV3IHRpbWVab25lTmFtZSkKIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFN0cmluZz4gY2Fub25pY2FsaXplVGltZVpvbmVOYW1lRnJvbUlDVVRpbWVab25l
KFN0cmluZyYmIHRpbWVab25lTmFtZSkKIHsKICAgICBpZiAoaXNVVENFcXVpdmFsZW50KHRpbWVa
b25lTmFtZSkpCi0gICAgICAgIHJldHVybiAiVVRDIl9zOworICAgICAgICByZXR1cm4gIlVUQyJf
c3RyOwogICAgIHJldHVybiBzdGQ6Om1ha2Vfb3B0aW9uYWwoV1RGTW92ZSh0aW1lWm9uZU5hbWUp
KTsKIH0KIApAQCAtMTkzMSw3ICsxOTMxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGlu
dGxPYmplY3RGdW5jU3VwcG9ydGVkVmFsdWVzT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAg
ICBpZiAoa2V5ID09ICJ1bml0Il9zKQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShhdmFpbGFibGVVbml0cyhnbG9iYWxPYmplY3QpKSk7CiAKLSAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVua25vd24ga2V5IGZvciBJbnRs
LnN1cHBvcnRlZFZhbHVlc09mIl9zKTsKKyAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlVua25vd24ga2V5IGZvciBJbnRsLnN1cHBvcnRlZFZhbHVlc09mIl9zdHIpOwog
ICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0SW5saW5lcy5oCmluZGV4IDQxYzJiZmRmNmVlNTE1YzIzNGRjYmNlNjBjZGIz
MzAzZWFiMzBhZmUuLjlhOWY5MGVkMmQwZjlmOTE2ZTQxMzBjZWM4OGRjYzgzNjgwNjgxNzIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVz
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMu
aApAQCAtMjQ4LDcgKzI0OCw3IEBAIGlubGluZSBKU09iamVjdCogaW50bEdldE9wdGlvbnNPYmpl
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIGlmIChMSUtFTFkob3B0aW9ucy5pc09iamVjdCgpKSkKICAgICAg
ICAgcmV0dXJuIGFzT2JqZWN0KG9wdGlvbnMpOwotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJvcHRpb25zIGFyZ3VtZW50IGlzIG5vdCBhbiBvYmplY3Qgb3IgdW5kZWZp
bmVkIl9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAib3B0aW9u
cyBhcmd1bWVudCBpcyBub3QgYW4gb2JqZWN0IG9yIHVuZGVmaW5lZCJfc3RyKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFBsdXJhbFJ1bGVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxQbHVyYWxSdWxlcy5jcHAKaW5kZXggYTg1MTMxMWM3NDRiNWVhYjE2NWFjN2Y0ZDU2NzEwMDZk
ODY2NzgzZS4uNjRmZjBmMTllMjYwNGY4ODI5OWYwZmVmZGI5YzVlMGI0ZTkzMGQ1NCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVsZXMuY3BwCkBA
IC0xMTUsNyArMTE1LDcgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxS
dWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKICAgICBhdXRvIHJlc29s
dmVkID0gcmVzb2x2ZUxvY2FsZShnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVl
c3RlZExvY2FsZXMsIGxvY2FsZU1hdGNoZXIsIGxvY2FsZU9wdGlvbnMsIHsgfSwgbG9jYWxlRGF0
YSk7CiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5sb2NhbGU7CiAgICAgaWYgKG1fbG9jYWxlLmlz
RW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
ZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9z
KTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfc3RyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTQwLDIxICsxNDAsMjEgQEAgdm9pZCBJbnRsUGx1
cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHUKIAogICAgIG1fbnVtYmVyRm9ybWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVO
dW1iZXJGb3JtYXR0ZXIsIFVOdW1iZXJGb3JtYXR0ZXJEZWxldGVyPih1bnVtZl9vcGVuRm9yU2tl
bGV0b25BbmRMb2NhbGUodXBjb252ZXJ0ZWQuZ2V0KCksIHNrZWxldG9uVmlldy5sZW5ndGgoKSwg
bG9jYWxlLmRhdGEoKSwgJnN0YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGlu
aXRpYWxpemUgUGx1cmFsUnVsZXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3N0cik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICNpZiBIQVZFKElDVV9VX05VTUJFUl9SQU5HRV9GT1JN
QVRURVIpCiAgICAgbV9udW1iZXJSYW5nZUZvcm1hdHRlciA9IHN0ZDo6dW5pcXVlX3B0cjxVTnVt
YmVyUmFuZ2VGb3JtYXR0ZXIsIFVOdW1iZXJSYW5nZUZvcm1hdHRlckRlbGV0ZXI+KHVudW1yZl9v
cGVuRm9yU2tlbGV0b25XaXRoQ29sbGFwc2VBbmRJZGVudGl0eUZhbGxiYWNrKHVwY29udmVydGVk
LmdldCgpLCBza2VsZXRvblZpZXcubGVuZ3RoKCksIFVOVU1fUkFOR0VfQ09MTEFQU0VfTk9ORSwg
VU5VTV9JREVOVElUWV9GQUxMQkFDS19SQU5HRSwgbG9jYWxlLmRhdGEoKSwgbnVsbHB0ciwgJnN0
YXR1cykpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVs
ZXMiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgUGx1cmFsUnVsZXMiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAjZW5kaWYKICNlbHNlCiAgICAgbV9udW1iZXJGb3JtYXQgPSBzdGQ6OnVuaXF1ZV9wdHI8
VU51bWJlckZvcm1hdCwgVU51bWJlckZvcm1hdERlbGV0ZXI+KHVudW1fb3BlbihVTlVNX0RFQ0lN
QUwsIG51bGxwdHIsIDAsIGxvY2FsZS5kYXRhKCksIG51bGxwdHIsICZzdGF0dXMpKTsKICAgICBp
ZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFBsdXJhbFJ1bGVzIl9zKTsKKyAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFs
aXplIFBsdXJhbFJ1bGVzIl9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNzcs
NyArMTc3LDcgQEAgdm9pZCBJbnRsUGx1cmFsUnVsZXM6OmluaXRpYWxpemVQbHVyYWxSdWxlcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHUKIAogICAgIG1fcGx1cmFsUnVsZXMg
PSBzdGQ6OnVuaXF1ZV9wdHI8VVBsdXJhbFJ1bGVzLCBVUGx1cmFsUnVsZXNEZWxldGVyPih1cGxy
dWxlc19vcGVuRm9yVHlwZShsb2NhbGUuZGF0YSgpLCBtX3R5cGUgPT0gVHlwZTo6T3JkaW5hbCA/
IFVQTFVSQUxfVFlQRV9PUkRJTkFMIDogVVBMVVJBTF9UWVBFX0NBUkRJTkFMLCAmc3RhdHVzKSk7
CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8g
aW5pdGlhbGl6ZSBQbHVyYWxSdWxlcyJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIH0K
QEAgLTE5Miw3ICsxOTIsNyBAQCBKU09iamVjdCogSW50bFBsdXJhbFJ1bGVzOjpyZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKIAogICAgIEpTT2JqZWN0
KiBvcHRpb25zID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBvcHRp
b25zLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZSwganNOb250cml2aWFs
U3RyaW5nKHZtLCBtX2xvY2FsZSkpOwotICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+dHlwZSwganNOb250cml2aWFsU3RyaW5nKHZtLCBtX3R5cGUgPT0gVHlwZTo6
T3JkaW5hbCA/ICJvcmRpbmFsIl9zIDogImNhcmRpbmFsIl9zKSk7CisgICAgb3B0aW9ucy0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50eXBlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0s
IG1fdHlwZSA9PSBUeXBlOjpPcmRpbmFsID8gIm9yZGluYWwiX3N0ciA6ICJjYXJkaW5hbCJfc3Ry
KSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5taW5pbXVt
SW50ZWdlckRpZ2l0cywganNOdW1iZXIobV9taW5pbXVtSW50ZWdlckRpZ2l0cykpOwogICAgIHN3
aXRjaCAobV9yb3VuZGluZ1R5cGUpIHsKICAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0
aW9uRGlnaXRzOgpAQCAtMjQ1LDI3ICsyNDUsMjcgQEAgSlNWYWx1ZSBJbnRsUGx1cmFsUnVsZXM6
OnNlbGVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3VibGUgdmFsdWUpIGNvbnMK
ICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUodmFsdWUpKQotICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZt
LCAib3RoZXIiX3MpOworICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKHZtLCAib3Ro
ZXIiX3N0cik7CiAKICAgICBVRXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKIAogI2lm
IEhBVkUoSUNVX1VfTlVNQkVSX0ZPUk1BVFRFUikKICAgICBhdXRvIGZvcm1hdHRlZE51bWJlciA9
IHN0ZDo6dW5pcXVlX3B0cjxVRm9ybWF0dGVkTnVtYmVyLCBJQ1VEZWxldGVyPHVudW1mX2Nsb3Nl
UmVzdWx0Pj4odW51bWZfb3BlblJlc3VsdCgmc3RhdHVzKSk7CiAgICAgaWYgKFVfRkFJTFVSRShz
dGF0dXMpKQotICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJh
bCB2YWx1ZSJfc3RyKTsKICAgICB1bnVtZl9mb3JtYXREb3VibGUobV9udW1iZXJGb3JtYXR0ZXIu
Z2V0KCksIHZhbHVlLCBmb3JtYXR0ZWROdW1iZXIuZ2V0KCksICZzdGF0dXMpOwogICAgIGlmIChV
X0ZBSUxVUkUoc3RhdHVzKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNl
bGVjdCBwbHVyYWwgdmFsdWUiX3N0cik7CiAgICAgVmVjdG9yPFVDaGFyLCAzMj4gYnVmZmVyOwog
ICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1cGxydWxlc19zZWxlY3RG
b3JtYXR0ZWQsIG1fcGx1cmFsUnVsZXMuZ2V0KCksIGZvcm1hdHRlZE51bWJlci5nZXQoKSwgYnVm
ZmVyKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFs
dWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFsIHZhbHVlIl9zdHIpOwogICAgIHJldHVybiBqc1N0
cmluZyh2bSwgU3RyaW5nKFdURk1vdmUoYnVmZmVyKSkpOwogI2Vsc2UKICAgICBWZWN0b3I8VUNo
YXIsIDg+IHJlc3VsdCg4KTsKICAgICBhdXRvIGxlbmd0aCA9IHVwbHJ1bGVzX3NlbGVjdFdpdGhG
b3JtYXQobV9wbHVyYWxSdWxlcy5nZXQoKSwgdmFsdWUsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCBy
ZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJF
KHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiZmFpbGVkIHRvIHNlbGVjdCBwbHVyYWwgdmFsdWUiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1
cmFsIHZhbHVlIl9zdHIpOwogCiAgICAgcmV0dXJuIGpzU3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0
LmRhdGEoKSwgbGVuZ3RoKSk7CiAjZW5kaWYKQEAgLTI4MCwyNyArMjgwLDI3IEBAIEpTVmFsdWUg
SW50bFBsdXJhbFJ1bGVzOjpzZWxlY3RSYW5nZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgc3RhcnQsCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwogCiAgICAgaWYgKHN0ZDo6aXNuYW4oc3RhcnQpIHx8IHN0ZDo6aXNuYW4oZW5kKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGFzc2VkIG51
bWJlcnMgYXJlIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBhc3NlZCBudW1iZXJzIGFyZSBvdXQgb2YgcmFuZ2Ui
X3N0cik7CiAKICAgICBpZiAoZW5kIDwgc3RhcnQpCi0gICAgICAgIHJldHVybiB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0
YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfc3RyKTsKIAogICAgIGlmIChpc05lZ2F0aXZlWmVybyhl
bmQpICYmIHN0YXJ0ID49IDApCi0gICAgICAgIHJldHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdlciB0aGFuIGVuZCJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IGlzIGxhcmdl
ciB0aGFuIGVuZCJfc3RyKTsKIAogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9S
OwogICAgIGF1dG8gcmFuZ2UgPSBzdGQ6OnVuaXF1ZV9wdHI8VUZvcm1hdHRlZE51bWJlclJhbmdl
LCBJQ1VEZWxldGVyPHVudW1yZl9jbG9zZVJlc3VsdD4+KHVudW1yZl9vcGVuUmVzdWx0KCZzdGF0
dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCByYW5nZSBvZiBw
bHVyYWwgdmFsdWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zdHIp
OwogCiAgICAgdW51bXJmX2Zvcm1hdERvdWJsZVJhbmdlKG1fbnVtYmVyUmFuZ2VGb3JtYXR0ZXIu
Z2V0KCksIHN0YXJ0LCBlbmQsIHJhbmdlLmdldCgpLCAmc3RhdHVzKTsKICAgICBpZiAoVV9GQUlM
VVJFKHN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiZmFpbGVkIHRvIHNlbGVjdCByYW5nZSBvZiBwbHVyYWwgdmFsdWUiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0
byBzZWxlY3QgcmFuZ2Ugb2YgcGx1cmFsIHZhbHVlIl9zdHIpOwogCiAgICAgVmVjdG9yPFVDaGFy
LCAzMj4gYnVmZmVyOwogICAgIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1
cGxydWxlc19zZWxlY3RGb3JSYW5nZSwgbV9wbHVyYWxSdWxlcy5nZXQoKSwgcmFuZ2UuZ2V0KCks
IGJ1ZmZlcik7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1cm4gdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBzZWxlY3QgcGx1cmFs
IHZhbHVlIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJmYWlsZWQgdG8gc2VsZWN0IHBsdXJhbCB2YWx1ZSJfc3RyKTsKICAgICByZXR1cm4g
anNTdHJpbmcodm0sIFN0cmluZyhXVEZNb3ZlKGJ1ZmZlcikpKTsKIH0KICNlbmRpZgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVzQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFBsdXJhbFJ1bGVz
Q29uc3RydWN0b3IuY3BwCmluZGV4IDgxMmFhYTIwMDBlMzBiOWU2YjljZjczMDU3YmVkNDQ0MDIy
Nzg4MTYuLjNiY2U3ZGZjNDE4YjIzOWQ4ZTY3YTMxOTQwNTkzOGJjNmQ3ZWRmN2UgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc0NvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUGx1cmFsUnVs
ZXNDb25zdHJ1Y3Rvci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgSW50bFBsdXJhbFJ1bGVzQ29uc3Ry
dWN0b3I6OkludGxQbHVyYWxSdWxlc0NvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3QKIAogdm9pZCBJbnRsUGx1cmFsUnVsZXNDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBJbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUqIHBsdXJhbFJ1bGVzUHJvdG90eXBlKQogewot
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiUGx1cmFsUnVsZXMiX3MsIFByb3BlcnR5
QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIDAsICJQbHVyYWxSdWxlcyJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9k
ZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHBsdXJhbFJ1bGVzUHJvdG90
eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgcGx1cmFsUnVsZXNQ
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxQbHVyYWxSdWxlc1Byb3RvdHlwZS5jcHAKaW5kZXggNjJjMDhiZjk1N2Ex
MzJmMTJkNmQ0YmZiMmQ4MWNkYjA5OGQzYTU5MS4uNmFhYmJlOTA1NzBkNzc3ZDkwYjY1MGY4NWZi
YWE4Y2E3YjkwMmU2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bFBsdXJhbFJ1bGVzUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsUGx1cmFsUnVsZXNQcm90b3R5cGUuY3BwCkBAIC05MSw3ICs5MSw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUGx1cmFsUnVsZXNQcm90b3R5cGVGdW5jU2VsZWN0
LCAoSlNHbG9iYWxPYmplY3QqIGdsCiAgICAgSW50bFBsdXJhbFJ1bGVzKiBwbHVyYWxSdWxlcyA9
IGpzRHluYW1pY0Nhc3Q8SW50bFBsdXJhbFJ1bGVzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOwogCiAgICAgaWYgKCFwbHVyYWxSdWxlcykKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxl
cy5wcm90b3R5cGUuc2VsZWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgUGx1cmFsUnVs
ZXMiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0IGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgUGx1cmFsUnVsZXMiX3N0cikpOwogCiAgICAgZG91
YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9iYWxPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAt
MTA4LDEzICsxMDgsMTMgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxQbHVyYWxSdWxl
c1Byb3RvdHlwZUZ1bmNTZWxlY3RSYW5nZSwgKEpTR2xvYmFsT2JqZWMKICAgICAvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtaW50bC1udW1iZXJmb3JtYXQtdjMvb3V0L3BsdXJhbHJ1bGVzL2Rp
ZmYuaHRtbCNzZWMtaW50bC5wbHVyYWxydWxlcy5wcm90b3R5cGUuc2VsZWN0cmFuZ2UKICAgICBJ
bnRsUGx1cmFsUnVsZXMqIHBsdXJhbFJ1bGVzID0ganNEeW5hbWljQ2FzdDxJbnRsUGx1cmFsUnVs
ZXMqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFwbHVyYWxSdWxlcykK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5QbHVyYWxSdWxlcy5wcm90b3R5cGUuc2VsZWN0UmFuZ2UgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBQbHVyYWxSdWxlcyJfcykpOworICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRs
LlBsdXJhbFJ1bGVzLnByb3RvdHlwZS5zZWxlY3RSYW5nZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIFBsdXJhbFJ1bGVzIl9zdHIpKTsKIAogICAgIEpTVmFsdWUgc3RhcnRWYWx1ZSA9IGNh
bGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgSlNWYWx1ZSBlbmRWYWx1ZSA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMSk7CiAKICAgICBpZiAoc3RhcnRWYWx1ZS5pc1VuZGVmaW5lZCgpIHx8IGVuZFZh
bHVlLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzdGFydCBvciBlbmQgaXMgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInN0YXJ0IG9yIGVu
ZCBpcyB1bmRlZmluZWQiX3N0cik7CiAKICAgICBkb3VibGUgc3RhcnQgPSBzdGFydFZhbHVlLnRv
TnVtYmVyKGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKQEAgLTEzNiw3ICsxMzYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFBsdXJh
bFJ1bGVzUHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucywgKEpTR2xvYmFsTwogICAgIEludGxQ
bHVyYWxSdWxlcyogcGx1cmFsUnVsZXMgPSBqc0R5bmFtaWNDYXN0PEludGxQbHVyYWxSdWxlcyo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKIAogICAgIGlmICghcGx1cmFsUnVsZXMpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkludGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFBsdXJhbFJ1bGVzIl9zKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIklu
dGwuUGx1cmFsUnVsZXMucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIFBsdXJhbFJ1bGVzIl9zdHIpKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVS
TihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHBsdXJhbFJ1bGVzLT5yZXNvbHZlZE9wdGlvbnMoZ2xv
YmFsT2JqZWN0KSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRleCBlMzI4YTFjMWY0MGM0OWU2OTU0
NTFhNTNkMjk5ZTUyMzE3YjlkNzU2Li4zMGM2YzcwNTY2NjE5OTEwMWMyNGJhNjU4YjJiYzE3ZDE1
ODMzNzRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHZvaWQgSW50bFJl
bGF0aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKICAg
ICBpZiAoIW51bWJlcmluZ1N5c3RlbS5pc051bGwoKSkgewogICAgICAgICBpZiAoIWlzVW5pY29k
ZUxvY2FsZUlkZW50aWZpZXJUeXBlKG51bWJlcmluZ1N5c3RlbSkpIHsKLSAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibnVtYmVyaW5nU3lzdGVtIGlzIG5v
dCBhIHdlbGwtZm9ybWVkIG51bWJlcmluZyBzeXN0ZW0gdmFsdWUiX3MpOworICAgICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJudW1iZXJpbmdTeXN0ZW0gaXMg
bm90IGEgd2VsbC1mb3JtZWQgbnVtYmVyaW5nIHN5c3RlbSB2YWx1ZSJfc3RyKTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBsb2NhbGVPcHRpb25zW3N0YXRpY19jYXN0
PHVuc2lnbmVkPihSZWxldmFudEV4dGVuc2lvbktleTo6TnUpXSA9IG51bWJlcmluZ1N5c3RlbTsK
QEAgLTExMCw3ICsxMTAsNyBAQCB2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmluaXRpYWxp
emVSZWxhdGl2ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIGF1dG8gcmVz
b2x2ZWQgPSByZXNvbHZlTG9jYWxlKGdsb2JhbE9iamVjdCwgYXZhaWxhYmxlTG9jYWxlcywgcmVx
dWVzdGVkTG9jYWxlcywgbG9jYWxlTWF0Y2hlciwgbG9jYWxlT3B0aW9ucywgeyBSZWxldmFudEV4
dGVuc2lvbktleTo6TnUgfSwgbG9jYWxlRGF0YSk7CiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5s
b2NhbGU7CiAgICAgaWYgKG1fbG9jYWxlLmlzRW1wdHkoKSkgewotICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVU
aW1lRm9ybWF0IGR1ZSB0byBpbnZhbGlkIGxvY2FsZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxhdGl2ZVRp
bWVGb3JtYXQgZHVlIHRvIGludmFsaWQgbG9jYWxlIl9zdHIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpp
bml0aWFsaXplUmVsYXRpdmVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBV
RXJyb3JDb2RlIHN0YXR1cyA9IFVfWkVST19FUlJPUjsKICAgICBtX251bWJlckZvcm1hdCA9IHN0
ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9ybWF0RGVsZXRlcj4odW51bV9v
cGVuKFVOVU1fREVDSU1BTCwgbnVsbHB0ciwgMCwgZGF0YUxvY2FsZVdpdGhFeHRlbnNpb25zLmRh
dGEoKSwgbnVsbHB0ciwgJnN0YXR1cykpOwogICAgIGlmIChVTkxJS0VMWShVX0ZBSUxVUkUoc3Rh
dHVzKSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIFJlbGF0aXZlVGltZUZvcm1hdCJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxh
dGl2ZVRpbWVGb3JtYXQiX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2Mywx
MyArMTYzLDEzIEBAIHZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0
aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAKICAgICBVTnVtYmVyRm9ybWF0
KiBjbG9uZWROdW1iZXJGb3JtYXQgPSB1bnVtX2Nsb25lKG1fbnVtYmVyRm9ybWF0LmdldCgpLCAm
c3RhdHVzKTsKICAgICBpZiAoVU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1cykpKSB7Ci0gICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6
ZSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9z
dHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgbV9yZWxhdGl2ZURhdGVUaW1lRm9y
bWF0dGVyID0gc3RkOjp1bmlxdWVfcHRyPFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyLCBVUmVs
YXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXI+KHVyZWxkYXRlZm10X29wZW4oZGF0YUxvY2Fs
ZVdpdGhFeHRlbnNpb25zLmRhdGEoKSwgY2xvbmVkTnVtYmVyRm9ybWF0LCBpY3VTdHlsZSwgVURJ
U1BDVFhfQ0FQSVRBTElaQVRJT05fRk9SX1NUQU5EQUxPTkUsICZzdGF0dXMpKTsKICAgICBpZiAo
VU5MSUtFTFkoVV9GQUlMVVJFKHN0YXR1cykpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBSZWxhdGl2ZVRpbWVGb3Jt
YXQiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFp
bGVkIHRvIGluaXRpYWxpemUgUmVsYXRpdmVUaW1lRm9ybWF0Il9zdHIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogfQpAQCAtMTk1LDcgKzE5NSw3IEBAIEpTT2JqZWN0KiBJbnRsUmVsYXRpdmVU
aW1lRm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBKU09iamVjdCogb3B0aW9ucyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0KGdsb2JhbE9iamVj
dCk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sb2NhbGUs
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgbV9sb2NhbGUpKTsKICAgICBvcHRpb25zLT5wdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnN0eWxlLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIHN0
eWxlU3RyaW5nKG1fc3R5bGUpKSk7Ci0gICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5udW1lcmljLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sIG1fbnVtZXJpYyA/ICJh
bHdheXMiX3MgOiAiYXV0byJfcykpOworICAgIG9wdGlvbnMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bnVtZXJpYywganNOb250cml2aWFsU3RyaW5nKHZtLCBtX251bWVyaWMgPyAi
YWx3YXlzIl9zdHIgOiAiYXV0byJfc3RyKSk7CiAgICAgb3B0aW9ucy0+cHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5udW1iZXJpbmdTeXN0ZW0sIGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
bV9udW1iZXJpbmdTeXN0ZW0pKTsKICAgICByZXR1cm4gb3B0aW9uczsKIH0KQEAgLTIzOSwxMyAr
MjM5LDEzIEBAIFN0cmluZyBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0Ojpmb3JtYXRJbnRlcm5hbChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3ViCiAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSkgewot
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm51bWJlciBhcmd1
bWVudCBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAibnVtYmVyIGFyZ3VtZW50IG11c3QgYmUgZmluaXRlIl9zdHIpOwogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCiAgICAgYXV0byB1bml0VHlwZSA9IHJlbGF0
aXZlVGltZVVuaXRUeXBlKHVuaXQpOwogICAgIGlmICghdW5pdFR5cGUpIHsKLSAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGFyZ3VtZW50IGlzIG5vdCBh
IHJlY29nbml6ZWQgdW5pdCB0eXBlIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJ1bml0IGFyZ3VtZW50IGlzIG5vdCBhIHJlY29nbml6ZWQgdW5pdCB0
eXBlIl9zdHIpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCkBAIC0yNTQsNyAr
MjU0LDcgQEAgU3RyaW5nIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdEludGVybmFsKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGRvdWIKICAgICBWZWN0b3I8VUNoYXIsIDMyPiBy
ZXN1bHQ7CiAgICAgYXV0byBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24oZm9y
bWF0UmVsYXRpdmVUaW1lLCBtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXIuZ2V0KCksIHZhbHVl
LCB1bml0VHlwZS52YWx1ZSgpLCByZXN1bHQpOwogICAgIGlmIChVTkxJS0VMWShVX0ZBSUxVUkUo
c3RhdHVzKSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImZhaWxlZCB0byBmb3JtYXQgcmVsYXRpdmUgdGltZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gZm9ybWF0IHJlbGF0aXZlIHRpbWUi
X3N0cik7CiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAKQEAgLTI5MSw3ICsyOTEs
NyBAQCBKU1ZhbHVlIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmZvcm1hdFRvUGFydHMoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YgogICAgIFZlY3RvcjxVQ2hhciwgMzI+IGJ1ZmZl
cjsKICAgICBzdGF0dXMgPSBjYWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odW51bV9mb3JtYXRE
b3VibGVGb3JGaWVsZHMsIG1fbnVtYmVyRm9ybWF0LmdldCgpLCBhYnNWYWx1ZSwgYnVmZmVyLCBp
dGVyYXRvci5nZXQoKSk7CiAgICAgaWYgKFVfRkFJTFVSRShzdGF0dXMpKQotICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBmb3JtYXQg
cmVsYXRpdmUgdGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGZvcm1hdCByZWxhdGl2ZSB0aW1lIl9zdHIpOwogCiAg
ICAgYXV0byBmb3JtYXR0ZWROdW1iZXIgPSBTdHJpbmcoYnVmZmVyKTsKIApAQCAtMjk5LDcgKzI5
OSw3IEBAIEpTVmFsdWUgSW50bFJlbGF0aXZlVGltZUZvcm1hdDo6Zm9ybWF0VG9QYXJ0cyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBkb3ViCiAgICAgaWYgKCFwYXJ0cykKICAgICAgICAg
cmV0dXJuIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAotICAg
IEpTU3RyaW5nKiBsaXRlcmFsU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAibGl0ZXJh
bCJfcyk7CisgICAgSlNTdHJpbmcqIGxpdGVyYWxTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJsaXRlcmFsIl9zdHIpOwogCiAgICAgLy8gV2Ugb25seSBoYXZlIG9uZSBpbnB1dCBudW1i
ZXIsIHNvIG91ciByZWxhdGl2ZSB0aW1lIHdpbGwgaGF2ZSBhdCBtb3N0IG9uZSBudW1lcmljIHN1
YnN0cmluZywKICAgICAvLyBidXQgd2UgbmVlZCB0byBsaXN0IGFsbCBvZiB0aGUgbnVtZXJpYyBw
YXJ0cyBzZXBhcmF0ZWx5LgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggYTgyNWMzNjY3MTNjMTQ0OTBjYjZkZGViNDU3NmRiZDU1NmNmMzY2NC4uNTU2NmM1MGY3NWJh
MDIxYTRjZTZiMmEyOWE3OWNhZDg1N2IzMDMyYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0Q29u
c3RydWN0b3IuY3BwCkBAIC03NCw3ICs3NCw3IEBAIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRDb25z
dHJ1Y3Rvcjo6SW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yKFZNJiB2bSwgU3RyCiAK
IHZvaWQgSW50bFJlbGF0aXZlVGltZUZvcm1hdENvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIEludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUqIHJlbGF0aXZlVGltZUZvcm1h
dFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlJlbGF0aXZl
VGltZUZvcm1hdCJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFu
c2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlJlbGF0aXZlVGltZUZv
cm1hdCJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRp
b24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIHJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIHJlbGF0aXZlVGltZUZvcm1hdFByb3RvdHlwZS0+cHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCmluZGV4IGQ0Nzk0NWFkNmE5
NzJhZmZmNWU2MzhiYWQ5NGU0MmUwOWY5OWUzMjEuLjA0MzVmMjg4MmU0NTUxMmM5ODEwY2NlNjU3
M2M0YzZmNWM4ZjQ4ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3JtYXRQcm90b3R5cGUuY3BwCkBAIC04
NCw3ICs4NCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUmVsYXRpdmVUaW1lRm9y
bWF0UHJvdG90eXBlRnVuY0Zvcm1hdCwgKEpTR2xvYmFsT2JqCiAKICAgICBhdXRvKiByZWxhdGl2
ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxSZWxhdGl2ZVRpbWVGb3JtYXQqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFyZWxhdGl2ZVRpbWVGb3JtYXQpCi0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5mb3JtYXQgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3MpKTsKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIFJlbGF0aXZlVGltZUZvcm1hdCJfc3RyKSk7CiAKICAgICBkb3VibGUg
dmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvTnVtYmVyKGdsb2JhbE9iamVjdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CkBAIC0xMDMs
NyArMTAzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxSZWxhdGl2ZVRpbWVGb3Jt
YXRQcm90b3R5cGVGdW5jRm9ybWF0VG9QYXJ0cywgKEpTR2wKIAogICAgIGF1dG8qIHJlbGF0aXZl
VGltZUZvcm1hdCA9IGpzRHluYW1pY0Nhc3Q8SW50bFJlbGF0aXZlVGltZUZvcm1hdCo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXJlbGF0aXZlVGltZUZvcm1hdCkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3MpKTsKKyAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBlLmZvcm1hdFRvUGFydHMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBSZWxhdGl2ZVRpbWVGb3JtYXQiX3N0cikpOwog
CiAgICAgZG91YmxlIHZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b051bWJlcihnbG9i
YWxPYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVl
KCkpOwpAQCAtMTIyLDcgKzEyMiw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsUmVs
YXRpdmVUaW1lRm9ybWF0UHJvdG90eXBlRnVuY1Jlc29sdmVkT3B0aW9ucywgKEpTCiAKICAgICBh
dXRvKiByZWxhdGl2ZVRpbWVGb3JtYXQgPSBqc0R5bmFtaWNDYXN0PEludGxSZWxhdGl2ZVRpbWVG
b3JtYXQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFyZWxhdGl2ZVRp
bWVGb3JtYXQpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuUmVsYXRpdmVUaW1lRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBSZWxhdGl2ZVRpbWVG
b3JtYXQiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQucHJvdG90eXBl
LnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFJlbGF0aXZlVGlt
ZUZvcm1hdCJfc3RyKSk7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShyZWxhdGl2ZVRpbWVGb3JtYXQtPnJlc29sdmVkT3B0aW9ucyhnbG9iYWxPYmplY3Qp
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2Vn
bWVudEl0ZXJhdG9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwCmluZGV4IDA3YzA1Y2JjMGJjYWU5YzI1
YTNmM2NiMDExZWMzMmFkOGM1NjMzMjUuLjBkMTg0MzUzMjFiMDQ3YzEwYmExYWI0ZGJmMGQ2NWE1
Zjg1MTMwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxT
ZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50SXRlcmF0b3JQcm90b3R5cGUuY3BwCkBAIC03OSw3ICs3OSw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsU2VnbWVudEl0ZXJhdG9yUHJvdG90eXBlRnVu
Y05leHQsIChKU0dsb2JhbE9iamVjdCoKIAogICAgIGF1dG8qIHNlZ21lbnRJdGVyYXRvciA9IGpz
RHluYW1pY0Nhc3Q8SW50bFNlZ21lbnRJdGVyYXRvcio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIXNlZ21lbnRJdGVyYXRvcikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuU2VnbWVudEl0ZXJhdG9yLnByb3Rv
dHlwZS5uZXh0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgU2VnbWVudEl0ZXJhdG9yIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkludGwuU2VnbWVudEl0ZXJhdG9yLnByb3RvdHlwZS5uZXh0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgU2VnbWVudEl0ZXJhdG9yIl9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2VnbWVudEl0ZXJhdG9yLT5uZXh0KGdsb2JhbE9iamVj
dCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxT
ZWdtZW50ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRl
ci5jcHAKaW5kZXggOGQ4NWZlN2M5Y2MyZTYwY2ZlNmIyMjM4MzM0OTdkZGY5YjRmN2NiMy4uYWMx
OTI2OTgxMDUwYzVhZjhiODM3MjA2NDRhNjYyY2Q3Nzk5OTE1MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAKQEAgLTg1LDcgKzg1LDcgQEAg
dm9pZCBJbnRsU2VnbWVudGVyOjppbml0aWFsaXplU2VnbWVudGVyKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgbG8KIAogICAgIG1fbG9jYWxlID0gcmVzb2x2ZWQubG9jYWxl
OwogICAgIGlmIChtX2xvY2FsZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRlciBkdWUg
dG8gaW52YWxpZCBsb2NhbGUiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVudGVyIGR1ZSB0byBpbnZhbGlk
IGxvY2FsZSJfc3RyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTA4LDcgKzEwOCw3
IEBAIHZvaWQgSW50bFNlZ21lbnRlcjo6aW5pdGlhbGl6ZVNlZ21lbnRlcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGxvCiAgICAgVUVycm9yQ29kZSBzdGF0dXMgPSBVX1pF
Uk9fRVJST1I7CiAgICAgbV9zZWdtZW50ZXIgPSBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0
b3IsIFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4odWJya19vcGVuKHR5cGUsIG1fbG9jYWxlLnV0Zjgo
KS5kYXRhKCksIG51bGxwdHIsIDAsICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1
cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxl
ZCB0byBpbml0aWFsaXplIFNlZ21lbnRlciJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50ZXIiX3N0cik7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9CkBAIC0xMjgsMTIgKzEyOCwxMiBAQCBKU1ZhbHVl
IEludGxTZWdtZW50ZXI6OnNlZ21lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSBzdHJpbmdWYWx1ZQogICAgIFVFcnJvckNvZGUgc3RhdHVzID0gVV9aRVJPX0VSUk9SOwog
ICAgIGF1dG8gc2VnbWVudGVyID0gc3RkOjp1bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJl
YWtJdGVyYXRvckRlbGV0ZXI+KGNsb25lVUJyZWFrSXRlcmF0b3IobV9zZWdtZW50ZXIuZ2V0KCks
ICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZhaWxlZCB0byBpbml0aWFsaXplIFNlZ21l
bnRzIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRzIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9Owog
ICAgIH0KICAgICB1YnJrX3NldFRleHQoc2VnbWVudGVyLmdldCgpLCB1cGNvbnZlcnRlZENoYXJh
Y3RlcnMtPmRhdGEoKSwgdXBjb252ZXJ0ZWRDaGFyYWN0ZXJzLT5zaXplKCksICZzdGF0dXMpOwog
ICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRpYWxpemUgU2VnbWVudHMiX3MpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiZmFpbGVkIHRvIGluaXRp
YWxpemUgU2VnbWVudHMiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlckNv
bnN0cnVjdG9yLmNwcAppbmRleCAyNTkwNjEwNTBjZWNiYmFlZDljYTQxMmM0NjA3MTE3OTA5NWU5
ZDA0Li5hNmQ4OTEzNGZiMjI2YWZiZGJiMjFkZWM3MmI4YjRlY2QyODc4M2Q2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyQ29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJDb25z
dHJ1Y3Rvci5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgSW50bFNlZ21lbnRlckNvbnN0cnVjdG9yOjpJ
bnRsU2VnbWVudGVyQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKIAog
dm9pZCBJbnRsU2VnbWVudGVyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSW50
bFNlZ21lbnRlclByb3RvdHlwZSogc2VnbWVudGVyUHJvdG90eXBlKQogewotICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCAwLCAiU2VnbWVudGVyIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6
V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCAwLCAiU2VnbWVudGVyIl9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0
dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgc2VnbWVudGVyUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgc2VnbWVudGVyUHJvdG90eXBlLT5wdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXJQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRl
clByb3RvdHlwZS5jcHAKaW5kZXggNjZhNWNjM2E5N2VkZjY5OGJiYjlhMWUyMzE2ZTBjMWZjOTlh
OWU1YS4uYTI0NjczMGM4ZTBjMzdmOTE0MmQ2ZjMxNTg5MGE3M2QyOTQ0YjhhOSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlclByb3Rv
dHlwZS5jcHAKQEAgLTgxLDcgKzgxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGludGxT
ZWdtZW50ZXJQcm90b3R5cGVGdW5jU2VnbWVudCwgKEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogICAg
IGF1dG8qIHNlZ21lbnRlciA9IGpzRHluYW1pY0Nhc3Q8SW50bFNlZ21lbnRlcio+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNlZ21lbnRlcikKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuU2VnbWVudGVyLnBy
b3RvdHlwZS5zZWdtZW50IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgU2VnbWVudGVyIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkludGwuU2VnbWVudGVyLnByb3RvdHlwZS5zZWdtZW50IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgU2VnbWVudGVyIl9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoc2VnbWVudGVyLT5zZWdtZW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSkpKTsKIH0KQEAgLTk0LDcgKzk0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGludGxTZWdtZW50ZXJQcm90b3R5cGVGdW5jUmVzb2x2ZWRPcHRpb25zLCAoSlNHbG9i
YWxPYmoKIAogICAgIGF1dG8qIHNlZ21lbnRlciA9IGpzRHluYW1pY0Nhc3Q8SW50bFNlZ21lbnRl
cio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNlZ21lbnRlcikKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwu
U2VnbWVudGVyLnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBTZWdtZW50ZXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5TZWdtZW50ZXIucHJvdG90eXBlLnJlc29sdmVkT3B0
aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFNlZ21lbnRlciJfc3RyKTsKIAogICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHNlZ21lbnRlci0+cmVz
b2x2ZWRPcHRpb25zKGdsb2JhbE9iamVjdCkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsU2VnbWVudHMuY3BwCmluZGV4IDhkZTM0YTMwNGVkZTAzZTBiODRiMjBj
MjgwMTEzNDQxOTk2YWI0ZjguLjQxYzk5YzdjYjVhMDYwNzU0NGU0OWIyMTMxYjljZjI1MGJlOTcx
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
cy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzLmNw
cApAQCAtMTAyLDcgKzEwMiw3IEBAIEpTT2JqZWN0KiBJbnRsU2VnbWVudHM6OmNyZWF0ZVNlZ21l
bnRJdGVyYXRvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIFVFcnJvckNvZGUg
c3RhdHVzID0gVV9aRVJPX0VSUk9SOwogICAgIGF1dG8gc2VnbWVudGVyID0gc3RkOjp1bmlxdWVf
cHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+KGNsb25lVUJyZWFrSXRl
cmF0b3IobV9zZWdtZW50ZXIuZ2V0KCksICZzdGF0dXMpKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImZh
aWxlZCB0byBpbml0aWFsaXplIFNlZ21lbnRJdGVyYXRvciJfcyk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmYWlsZWQgdG8gaW5pdGlhbGl6ZSBTZWdtZW50
SXRlcmF0b3IiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBl
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50c1Byb3RvdHlw
ZS5jcHAKaW5kZXggNTNlM2VjZjAyZmY4NGEyOTM2OWM1NDlhNjZkMDc4OTZlNWVmNmRkNy4uOTBm
MjA5NGVmODQ2OWI0OGNjYWM1NDgwOWJmN2Y2MjQ3ZjQ5OWQ0ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRzUHJvdG90eXBlLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudHNQcm90b3R5cGUuY3BwCkBA
IC04MCw3ICs4MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihpbnRsU2VnbWVudHNQcm90
b3R5cGVGdW5jQ29udGFpbmluZywgKEpTR2xvYmFsT2JqZWN0KiBnCiAKICAgICBhdXRvKiBzZWdt
ZW50cyA9IGpzRHluYW1pY0Nhc3Q8SW50bFNlZ21lbnRzKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghc2VnbWVudHMpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIlU2VnbWVudHMucHJvdG90eXBlJS5jb250YWluaW5n
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgU2VnbWVudHMiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJVNlZ21lbnRzLnByb3Rv
dHlwZSUuY29udGFpbmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFNlZ21lbnRzIl9z
dHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoc2Vn
bWVudHMtPmNvbnRhaW5pbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkp
OwogfQpAQCAtOTMsNyArOTMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oaW50bFNlZ21l
bnRzUHJvdG90eXBlRnVuY0l0ZXJhdG9yLCAoSlNHbG9iYWxPYmplY3QqIGdsbwogCiAgICAgYXV0
byogc2VnbWVudHMgPSBqc0R5bmFtaWNDYXN0PEludGxTZWdtZW50cyo+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXNlZ21lbnRzKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiJVNlZ21lbnRzLnByb3RvdHlwZSVbQEBp
dGVyYXRvcl0gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBTZWdtZW50cyJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIlU2VnbWVu
dHMucHJvdG90eXBlJVtAQGl0ZXJhdG9yXSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIFNl
Z21lbnRzIl9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjpl
bmNvZGUoc2VnbWVudHMtPmNyZWF0ZVNlZ21lbnRJdGVyYXRvcihnbG9iYWxPYmplY3QpKSk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSXRlcmF0b3JPcGVyYXRp
b25zLmNwcAppbmRleCBjMzE2OWEyY2U1OTdkNzQwZmYwMmRmNzI3M2RmMmU2ZWEwYzczMzA3Li4z
N2ExZTgzMGVkYmFhNGU5YmUzM2I1MjExOTM3YTJlMzI1ZDkzOTlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JdGVyYXRvck9wZXJhdGlvbnMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0l0ZXJhdG9yT3BlcmF0aW9ucy5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgSlNWYWx1ZSBpdGVyYXRvck5leHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSXRlcmF0aW9uUmVjb3JkIGl0ZXJhdGlvblJlY28KICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBKU1ZhbHVlKCkpOwogCiAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRv
ciByZXN1bHQgaW50ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJdGVyYXRvciByZXN1bHQgaW50
ZXJmYWNlIGlzIG5vdCBhbiBvYmplY3QuIl9zdHIpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
QEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIGl0ZXJhdG9yQ2xvc2UoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVyYXRvcikKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIHZvaWQoKSk7CiAKICAgICBpZiAoIWlubmVyUmVzdWx0LmlzT2JqZWN0KCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCAiSXRlcmF0
b3IgcmVzdWx0IGludGVyZmFjZSBpcyBub3QgYW4gb2JqZWN0LiJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgIkl0ZXJhdG9yIHJlc3VsdCBpbnRl
cmZhY2UgaXMgbm90IGFuIG9iamVjdC4iX3N0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiB9
CkBAIC0xNjAsNyArMTYwLDcgQEAgYm9vbCBoYXNJdGVyYXRvck1ldGhvZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHZhbHVlKQogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9
IGFzT2JqZWN0KHZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGFw
cGx5TWV0aG9kID0gb2JqZWN0LT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgdm0u
cHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsICJTeW1ib2wuaXRlcmF0b3IgcHJvcGVydHkg
c2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGFwcGx5TWV0aG9kID0gb2JqZWN0
LT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgdm0ucHJvcGVydHlOYW1lcy0+aXRl
cmF0b3JTeW1ib2wsICJTeW1ib2wuaXRlcmF0b3IgcHJvcGVydHkgc2hvdWxkIGJlIGNhbGxhYmxl
Il9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKIAogICAgIHJl
dHVybiAhYXBwbHlNZXRob2QuaXNVbmRlZmluZWQoKTsKQEAgLTE3Miw3ICsxNzIsNyBAQCBKU1Zh
bHVlIGl0ZXJhdG9yTWV0aG9kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiBvYmplY3QpCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAg
ICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBtZXRob2QgPSBvYmplY3QtPmdldE1l
dGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRvclN5
bWJvbCwgIlN5bWJvbC5pdGVyYXRvciBwcm9wZXJ0eSBzaG91bGQgYmUgY2FsbGFibGUiX3MpOwor
ICAgIEpTVmFsdWUgbWV0aG9kID0gb2JqZWN0LT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxs
RGF0YSwgdm0ucHJvcGVydHlOYW1lcy0+aXRlcmF0b3JTeW1ib2wsICJTeW1ib2wuaXRlcmF0b3Ig
cHJvcGVydHkgc2hvdWxkIGJlIGNhbGxhYmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIGpzVW5kZWZpbmVkKCkpOwogCiAgICAgcmV0dXJuIG1ldGhvZDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKaW5kZXggMzE3OTg1ZmZlZDZhZWIzZTg4
NTkzODQzMDIwM2VjOWJhNDNkMGNjMC4uY2UxYzZmNDIzNDg1M2IyMjljYzhkNmVkOGY4ZGQxNmRk
ZThiOGY0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJh
eS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAKQEAg
LTE2MCw3ICsxNjAsNyBAQCBib29sIEpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0
KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgICAgICBkb3Vi
bGUgdmFsdWVBc051bWJlciA9IGRlc2NyaXB0b3IudmFsdWUoKS50b051bWJlcihnbG9iYWxPYmpl
Y3QpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAg
ICAgICAgICAgaWYgKHZhbHVlQXNOdW1iZXIgIT0gc3RhdGljX2Nhc3Q8ZG91YmxlPihuZXdMZW5n
dGgpKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnZhbGlkIGFycmF5IGxlbmd0aCJfcyk7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIGFycmF5IGxlbmd0aCJfc3RyKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0K
QEAgLTIwOCw3ICsyMDgsNyBAQCBib29sIEpTQXJyYXk6OmRlZmluZU93blByb3BlcnR5KEpTT2Jq
ZWN0KiBvYmplY3QsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgICAgIHVpbnQz
Ml90IGluZGV4ID0gb3B0aW9uYWxJbmRleC52YWx1ZSgpOwogICAgICAgICAvLyBGSVhNRTogTm90
aGluZyBwcmV2ZW50cyB0aGlzIGZyb20gYmVpbmcgY2FsbGVkIG9uIGEgUnVudGltZUFycmF5LCBh
bmQgdGhlIGxlbmd0aCBmdW5jdGlvbiB3aWxsIGFsd2F5cyByZXR1cm4gMCBpbiB0aGF0IGNhc2Uu
CiAgICAgICAgIGlmIChpbmRleCA+PSBhcnJheS0+bGVuZ3RoKCkgJiYgIWFycmF5LT5pc0xlbmd0
aFdyaXRhYmxlKCkpCi0gICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBkZWZpbmUgbnVtZXJpYyBwcm9w
ZXJ0eSBvbiBhcnJheSB3aXRoIG5vbi13cml0YWJsZSBsZW5ndGggcHJvcGVydHkuIl9zKTsKKyAg
ICAgICAgICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNl
cHRpb24sICJBdHRlbXB0aW5nIHRvIGRlZmluZSBudW1lcmljIHByb3BlcnR5IG9uIGFycmF5IHdp
dGggbm9uLXdyaXRhYmxlIGxlbmd0aCBwcm9wZXJ0eS4iX3N0cik7CiAgICAgICAgIC8vIGMuIExl
dCBzdWNjZWVkZWQgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBkZWZhdWx0IFtbRGVmaW5l
T3duUHJvcGVydHldXSBpbnRlcm5hbCBtZXRob2QgKDguMTIuOSkgb24gQSBwYXNzaW5nIFAsIERl
c2MsIGFuZCBmYWxzZSBhcyBhcmd1bWVudHMuCiAgICAgICAgIC8vIGQuIFJlamVjdCBpZiBzdWNj
ZWVkZWQgaXMgZmFsc2UuCiAgICAgICAgIC8vIGUuIElmIGluZGV4ID49IG9sZExlbgpAQCAtMjQ2
LDcgKzI0Niw3IEBAIGJvb2wgSlNBcnJheTo6cHV0KEpTQ2VsbCogY2VsbCwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydHlOYW1lIHByb3BlCiAgICAgaWYgKHByb3BlcnR5TmFt
ZSA9PSB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpIHsKICAgICAgICAgaWYgKCF0aGlzT2JqZWN0
LT5pc0xlbmd0aFdyaXRhYmxlKCkpIHsKICAgICAgICAgICAgIGlmIChzbG90LmlzU3RyaWN0TW9k
ZSgpKQotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJBcnJheSBsZW5ndGggaXMgbm90IHdyaXRhYmxlIl9zKTsKKyAgICAgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQXJyYXkgbGVuZ3RoIGlzIG5vdCB3cml0
YWJsZSJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC0y
NTgsNyArMjU4LDcgQEAgYm9vbCBKU0FycmF5OjpwdXQoSlNDZWxsKiBjZWxsLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKICAgICAgICAgZG91YmxlIHZh
bHVlQXNOdW1iZXIgPSB2YWx1ZS50b051bWJlcihnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICh2YWx1ZUFzTnVtYmVy
ICE9IHN0YXRpY19jYXN0PGRvdWJsZT4obmV3TGVuZ3RoKSkgewotICAgICAgICAgICAgdGhyb3dF
eGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsICJJbnZhbGlkIGFycmF5IGxlbmd0aCJfcykpOworICAgICAgICAgICAgdGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJJ
bnZhbGlkIGFycmF5IGxlbmd0aCJfc3RyKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgICAgIH0KICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0aGlzT2JqZWN0LT5z
ZXRMZW5ndGgoZ2xvYmFsT2JqZWN0LCBuZXdMZW5ndGgsIHNsb3QuaXNTdHJpY3RNb2RlKCkpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZl
clByb3RvdHlwZS5jcHAKaW5kZXggY2ZhMDhjYmVmNTFmMTE1ODE5Njk1NWQwNTI3MWY2NzYyMWVi
ZThjNS4uMjVhMjA2YTkyNmQwZjlhN2JmYzc0MGFiNTcwNmNhNTQ1YTNkNjA5MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3Rv
dHlwZS5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgc3RkOjpvcHRpb25hbDxKU1ZhbHVlPiBhcnJheUJ1
ZmZlclNwZWNpZXNDb25zdHJ1Y3RvclNsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmICghY29uc3RydWN0b3IuaXNPYmplY3Qo
KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiY29uc3Ry
dWN0b3IgcHJvcGVydHkgc2hvdWxkIG5vdCBiZSBudWxsIl9zKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNvbnN0cnVjdG9yIHByb3BlcnR5IHNob3VsZCBu
b3QgYmUgbnVsbCJfc3RyKTsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAK
QEAgLTEwNCwxNCArMTA0LDE0IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxTcGVj
aWVzQ29uc3RydWN0UmVzdWx0LCBKU0FycmF5QnVmZmVyKj4gc3BlY2llc0NvCiAgICAgLy8gMTcu
IFBlcmZvcm0gPyBSZXF1aXJlSW50ZXJuYWxTbG90KG5ldywgW1tBcnJheUJ1ZmZlckRhdGFdXSku
CiAgICAgSlNBcnJheUJ1ZmZlciogcmVzdWx0ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5QnVmZmVy
Kj4odm0sIG5ld09iamVjdCk7CiAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7Ci0gICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTcGVjaWVzIGNvbnN0cnVjdGlv
biBkb2VzIG5vdCBjcmVhdGUgQXJyYXlCdWZmZXIiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gZG9lcyBub3QgY3Jl
YXRlIEFycmF5QnVmZmVyIl9zdHIpOwogICAgICAgICByZXR1cm4gZXJyb3JSZXN1bHQ7CiAgICAg
fQogCiAgICAgaWYgKG1vZGUgPT0gQXJyYXlCdWZmZXJTaGFyaW5nTW9kZTo6RGVmYXVsdCkgewog
ICAgICAgICAvLyAxOC4gSWYgSXNTaGFyZWRBcnJheUJ1ZmZlcihuZXcpIGlzIHRydWUsIHRocm93
IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICAgICAgaWYgKHJlc3VsdC0+aXNTaGFyZWQoKSkg
ewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFycmF5
QnVmZmVyLnByb3RvdHlwZS5zbGljZSBjcmVhdGVzIFNoYXJlZEFycmF5QnVmZmVyIl9zKTsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcnJheUJ1ZmZl
ci5wcm90b3R5cGUuc2xpY2UgY3JlYXRlcyBTaGFyZWRBcnJheUJ1ZmZlciJfc3RyKTsKICAgICAg
ICAgICAgIHJldHVybiBlcnJvclJlc3VsdDsKICAgICAgICAgfQogICAgICAgICAvLyAxOS4gSWYg
SXNEZXRhY2hlZEJ1ZmZlcihuZXcpIGlzIHRydWUsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlv
bi4KQEAgLTEyMiwyMCArMTIyLDIwIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxT
cGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU0FycmF5QnVmZmVyKj4gc3BlY2llc0NvCiAgICAgfSBl
bHNlIHsKICAgICAgICAgLy8gMTcuIElmIElzU2hhcmVkQXJyYXlCdWZmZXIobmV3KSBpcyBmYWxz
ZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgICAgICBpZiAoIXJlc3VsdC0+aXNT
aGFyZWQoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlNoYXJlZEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZSBjcmVhdGVzIG5vbi1zaGFyZWQg
QXJyYXlCdWZmZXIiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlNoYXJlZEFycmF5QnVmZmVyLnByb3RvdHlwZS5zbGljZSBjcmVhdGVzIG5vbi1z
aGFyZWQgQXJyYXlCdWZmZXIiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZXJyb3JSZXN1bHQ7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyAyMC4gSWYgU2FtZVZhbHVlKG5ldywgTykgaXMg
dHJ1ZSwgdGhyb3cgYSBUeXBlRXJyb3IgZXhjZXB0aW9uLgogICAgIGlmIChyZXN1bHQgPT0gdGhp
c09iamVjdCkgewotICAgICAgICB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJTcGVjaWVzIGNvbnN0cnVjdGlvbiByZXR1cm5zIHNhbWUgQXJyYXlCdWZmZXIgdG8gYSByZWNl
aXZlciJfcyk7CisgICAgICAgIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlNwZWNpZXMgY29uc3RydWN0aW9uIHJldHVybnMgc2FtZSBBcnJheUJ1ZmZlciB0byBhIHJlY2Vp
dmVyIl9zdHIpOwogICAgICAgICByZXR1cm4gZXJyb3JSZXN1bHQ7CiAgICAgfQogCiAgICAgLy8g
MjEuIElmIG5ldy5bW0FycmF5QnVmZmVyQnl0ZUxlbmd0aF1dIDwgbmV3TGVuLCB0aHJvdyBhIFR5
cGVFcnJvciBleGNlcHRpb24uCiAgICAgaWYgKHJlc3VsdC0+aW1wbCgpLT5ieXRlTGVuZ3RoKCkg
PCBsZW5ndGgpIHsKLSAgICAgICAgdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiU3BlY2llcyBjb25zdHJ1Y3Rpb24gcmV0dXJucyBBcnJheUJ1ZmZlciB3aGljaCBieXRlTGVu
Z3RoIGlzIGxlc3MgdGhhbiByZXF1ZXN0ZWQiX3MpOworICAgICAgICB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJTcGVjaWVzIGNvbnN0cnVjdGlvbiByZXR1cm5zIEFycmF5
QnVmZmVyIHdoaWNoIGJ5dGVMZW5ndGggaXMgbGVzcyB0aGFuIHJlcXVlc3RlZCJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIGVycm9yUmVzdWx0OwogICAgIH0KIApAQCAtMTU5LDcgKzE1OSw3IEBAIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBhcnJheUJ1ZmZlclNsaWNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgYXJyCiAKICAgICAvLyA0LiBJZiBJc0RldGFjaGVkQnVmZmVyKE8p
IGlzIHRydWUsIHRocm93IGEgVHlwZUVycm9yIGV4Y2VwdGlvbi4KICAgICBpZiAobW9kZSA9PSBB
cnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0ICYmIHRoaXNPYmplY3QtPmltcGwoKS0+aXNE
ZXRhY2hlZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVjZWl2ZXIgaXMgZGV0YWNoZWQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgaXMgZGV0YWNoZWQiX3N0
cik7CiAKICAgICAvLyA1LiBMZXQgbGVuIGJlIE8uW1tBcnJheUJ1ZmZlckJ5dGVMZW5ndGhdXS4K
ICAgICB1bnNpZ25lZCBieXRlTGVuZ3RoID0gdGhpc09iamVjdC0+aW1wbCgpLT5ieXRlTGVuZ3Ro
KCk7CkBAIC0xOTYsNyArMTk2LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIGFycmF5QnVmZmVy
U2xpY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBhcnIKIAogICAgIC8v
IDIzLiBJZiBJc0RldGFjaGVkQnVmZmVyKE8pIGlzIHRydWUsIHRocm93IGEgVHlwZUVycm9yIGV4
Y2VwdGlvbi4KICAgICBpZiAobW9kZSA9PSBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlOjpEZWZhdWx0
ICYmIHRoaXNPYmplY3QtPmltcGwoKS0+aXNEZXRhY2hlZCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgaXMgZGV0YWNoZWQi
X3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUmVjZWl2ZXIgaXMgZGV0YWNoZWQiX3N0cik7CiAKICAgICBpZiAoTElLRUxZKHNwZWNpZXNS
ZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGgpKSB7CiAgICAg
ICAgIEFTU0VSVCghdGhpc09iamVjdC0+aW1wbCgpLT5pc0RldGFjaGVkKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuY3BwCmluZGV4
IDkxOWIzMTU5Y2MzNzYwNDVkOWFiOTZhM2JlNjJlMGFhZDIyNmJlNjIuLjI3NDFlM2RmMTljZTg1
ZmNmOWE2MjM3ZTkxNTA2NjFhM2Q4ZTgwYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlldy5jcHAKQEAgLTM0NCwxMyArMzQ0LDEzIEBA
IEpTQXJyYXlCdWZmZXJWaWV3KiB2YWxpZGF0ZVR5cGVkQXJyYXkoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB0eXBlCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogCiAgICAgaWYgKCF0eXBlZEFycmF5VmFsdWUuaXNDZWxsKCkpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFyZ3VtZW50IG5lZWRzIHRv
IGJlIGEgdHlwZWQgYXJyYXkuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkFyZ3VtZW50IG5lZWRzIHRvIGJlIGEgdHlwZWQgYXJyYXkuIl9zdHIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKICAgICBKU0NlbGwqIHR5cGVkQXJyYXlD
ZWxsID0gdHlwZWRBcnJheVZhbHVlLmFzQ2VsbCgpOwogICAgIGlmICghaXNUeXBlZFZpZXcodHlw
ZWRBcnJheUNlbGwtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkFyZ3VtZW50IG5lZWRz
IHRvIGJlIGEgdHlwZWQgYXJyYXkuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkFyZ3VtZW50IG5lZWRzIHRvIGJlIGEgdHlwZWQgYXJyYXkuIl9zdHIp
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQmlnSW50LmNwcAppbmRleCAwM2Q5NDQwYmE1ZDBlNzhiZDMxNzFkZjczYzYy
MjljMzI1ZjE0MzJkLi5mZDNkOGNjNTJiZTUxNTFhZGYxOWU5YTEyYTJmZjdkZjczOTY2ODdhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JpZ0ludC5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJbnQuY3BwCkBAIC0xMTEsNyAr
MTExLDcgQEAgaW5saW5lIEpTQmlnSW50KiBKU0JpZ0ludDo6Y3JlYXRlV2l0aExlbmd0aChKU0ds
b2JhbE9iamVjdCogbnVsbE9yR2xvYmFsT2JqZWN0Rm8KICAgICBpZiAoVU5MSUtFTFkobGVuZ3Ro
ID4gbWF4TGVuZ3RoKSkgewogICAgICAgICBpZiAobnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NKSB7
CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7Ci0gICAg
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IobnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NLCBz
Y29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9z
KTsKKyAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihudWxsT3JHbG9iYWxPYmplY3RG
b3JPT00sIHNjb3BlLCAiQmlnSW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3BlcmF0aW9uIGlzIHRv
byBiaWciX3N0cik7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpA
QCAtNTIzLDcgKzUyMyw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50OjpleHBvbmVu
dGlhdGVJbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEJpCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYgKGV4cG9uZW50LnNpZ24oKSkg
ewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk5lZ2F0aXZl
IGV4cG9uZW50IGlzIG5vdCBhbGxvd2VkIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJOZWdhdGl2ZSBleHBvbmVudCBpcyBub3QgYWxsb3dlZCJfc3Ry
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC01NDksNyArNTQ5LDcgQEAg
SlNCaWdJbnQ6OkltcGxSZXN1bHQgSlNCaWdJbnQ6OmV4cG9uZW50aWF0ZUltcGwoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQmkKICAgICAvLyByZXN1bHRzLgogICAgIHN0YXRpY19hc3Nl
cnQobWF4TGVuZ3RoQml0cyA8IHN0ZDo6bnVtZXJpY19saW1pdHM8RGlnaXQ+OjptYXgoKSwgIm1h
eExlbmd0aEJpdHMgbmVlZHMgdG8gYmUgbGVzcyB0aGFuIGRpZ2l0OjptYXgoKSIpOwogICAgIGlm
IChleHBvbmVudC5sZW5ndGgoKSA+IDEpIHsKLSAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJbnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRp
b24gaXMgdG9vIGJpZyJfcyk7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQmlnSW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3BlcmF0aW9uIGlzIHRv
byBiaWciX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNTU3LDcg
KzU1Nyw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50OjpleHBvbmVudGlhdGVJbXBs
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEJpCiAgICAgaWYgKGV4cFZhbHVlID09IDEp
CiAgICAgICAgIHJldHVybiBiYXNlOwogICAgIGlmIChleHBWYWx1ZSA+PSBtYXhMZW5ndGhCaXRz
KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
QmlnSW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3BlcmF0aW9uIGlzIHRvbyBiaWciX3MpOworICAg
ICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBn
ZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTY4Myw3ICs2ODMsNyBAQCBKU0JpZ0ludDo6SW1w
bFJlc3VsdCBKU0JpZ0ludDo6ZGl2aWRlSW1wbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBCaWdJbnRJbQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAog
ICAgIGlmICh5LmlzWmVybygpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZhbGlkIGRpdmlzb3IgdmFsdWUuIl9zKTsKKyAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIwIGlzIGFuIGludmFsaWQgZGl2
aXNvciB2YWx1ZS4iX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAt
Nzc4LDcgKzc3OCw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50OjpyZW1haW5kZXJJ
bXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEJpZ0luCiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIAogICAgIGlmICh5LmlzWmVybygpKSB7Ci0g
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZh
bGlkIGRpdmlzb3IgdmFsdWUuIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICIwIGlzIGFuIGludmFsaWQgZGl2aXNvciB2YWx1ZS4iX3N0cik7CiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtMjAxMSw3ICsyMDExLDcgQEAgSlNCaWdJ
bnQ6OkltcGxSZXN1bHQgSlNCaWdJbnQ6OmxlZnRTaGlmdEJ5QWJzb2x1dGUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKIAogICAgIGF1dG8gb3B0aW9uYWxTaGlmdCA9IHRvU2hpZnRBbW91
bnQoeSk7CiAgICAgaWYgKCFvcHRpb25hbFNoaWZ0KSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1v
cnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQmlnSW50IGdlbmVyYXRlZCBmcm9tIHRoaXMg
b3BlcmF0aW9uIGlzIHRvbyBiaWciX3MpOworICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlv
biBpcyB0b28gYmlnIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAg
LTIwMjIsNyArMjAyMiw3IEBAIEpTQmlnSW50OjpJbXBsUmVzdWx0IEpTQmlnSW50OjpsZWZ0U2hp
ZnRCeUFic29sdXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgYm9vbCBncm93
ID0gYml0c1NoaWZ0ICYmICh4LmRpZ2l0KGxlbmd0aCAtIDEpID4+IChkaWdpdEJpdHMgLSBiaXRz
U2hpZnQpKTsKICAgICBpbnQgcmVzdWx0TGVuZ3RoID0gbGVuZ3RoICsgZGlnaXRTaGlmdCArIGdy
b3c7CiAgICAgaWYgKHN0YXRpY19jYXN0PHVuc2lnbmVkPihyZXN1bHRMZW5ndGgpID4gbWF4TGVu
Z3RoKSB7Ci0gICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQmlnSW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3BlcmF0aW9uIGlzIHRvbyBiaWciX3MpOwor
ICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0lu
dCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJhdGlvbiBpcyB0b28gYmlnIl9zdHIpOwogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTIzOTgsNyArMjM5OCw3IEBAIEpTQmlnSW50
KiBKU0JpZ0ludDo6YWxsb2NhdGVGb3IoSlNHbG9iYWxPYmplY3QqIG51bGxPckdsb2JhbE9iamVj
dEZvck9PTSwgVk0mIHZtCiAKICAgICBpZiAobnVsbE9yR2xvYmFsT2JqZWN0Rm9yT09NKSB7CiAg
ICAgICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICAgICAgdGhy
b3dPdXRPZk1lbW9yeUVycm9yKG51bGxPckdsb2JhbE9iamVjdEZvck9PTSwgc2NvcGUsICJCaWdJ
bnQgZ2VuZXJhdGVkIGZyb20gdGhpcyBvcGVyYXRpb24gaXMgdG9vIGJpZyJfcyk7CisgICAgICAg
IHRocm93T3V0T2ZNZW1vcnlFcnJvcihudWxsT3JHbG9iYWxPYmplY3RGb3JPT00sIHNjb3BlLCAi
QmlnSW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3BlcmF0aW9uIGlzIHRvbyBiaWciX3N0cik7CiAg
ICAgfQogCiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0yNDEzLDcgKzI0MTMsNyBAQCBkb3VibGUg
SlNCaWdJbnQ6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ29udmVyc2lvbiBmcm9tICdCaWdJbnQnIHRvICdudW1iZXInIGlzIG5vdCBhbGxvd2Vk
LiJfcyk7CisgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnZlcnNp
b24gZnJvbSAnQmlnSW50JyB0byAnbnVtYmVyJyBpcyBub3QgYWxsb3dlZC4iX3N0cik7CiAgICAg
cmV0dXJuIDAuMDsKIH0KIApAQCAtMjk1OSw3ICsyOTU5LDcgQEAgSlNCaWdJbnQ6OkltcGxSZXN1
bHQgSlNCaWdJbnQ6OmFzVWludE5JbXBsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIHVp
bnQ2NF8KICAgICAvLyBJZiBiaWdJbnQgaXMgbmVnYXRpdmUsIHNpbXVsYXRlIHR3bydzIGNvbXBs
ZW1lbnQgcmVwcmVzZW50YXRpb24uCiAgICAgaWYgKGJpZ0ludC5zaWduKCkpIHsKICAgICAgICAg
aWYgKG4gPiBtYXhMZW5ndGhCaXRzKSB7Ci0gICAgICAgICAgICB0aHJvd091dE9mTWVtb3J5RXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJpZ0ludCBnZW5lcmF0ZWQgZnJvbSB0aGlzIG9wZXJh
dGlvbiBpcyB0b28gYmlnIl9zKTsKKyAgICAgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiQmlnSW50IGdlbmVyYXRlZCBmcm9tIHRoaXMgb3BlcmF0aW9u
IGlzIHRvbyBiaWciX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAg
fQogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRydW5jYXRlQW5kU3ViRnJvbVBv
d2VyT2ZUd28oZ2xvYmFsT2JqZWN0LCBzdGF0aWNfY2FzdDxpbnQzMl90PihuKSwgYmlnSW50LCBm
YWxzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCaWdJ
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQmlnSW50LmgKaW5kZXggZTBi
NWJjZmExMDc1Nzk0ZDVjNzY3N2U0MWJiYjkyMGQxZGUwN2ZmMi4uYzkyMDNkNmNkNWMwYzBhNTYz
ODIwZmNkODJjNjcyMGYxYWYyMzMxMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNCaWdJbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0JpZ0ludC5oCkBAIC0zMDYsNyArMzA2LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgaWYg
KCF5KSB7CiAgICAgICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRShnZXRW
TShnbG9iYWxPYmplY3QpKTsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZhbGlkIGRpdmlzb3IgdmFsdWUuIl9zKTsKKyAgICAgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiMCBpcyBhbiBpbnZhbGlk
IGRpdmlzb3IgdmFsdWUuIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWUoKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm4gYXNJbnQzMk9ySGVhcENlbGwoZ2xvYmFsT2JqZWN0LCBz
dGF0aWNfY2FzdDxpbnQ2NF90Pih4KSAvIHN0YXRpY19jYXN0PGludDY0X3Q+KHkpKTsKQEAgLTMy
MSw3ICszMjEsNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBpZiAoIXkpIHsKICAgICAgICAg
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKGdldFZNKGdsb2JhbE9iamVjdCkp
OwotICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIwIGlz
IGFuIGludmFsaWQgZGl2aXNvciB2YWx1ZS4iX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIwIGlzIGFuIGludmFsaWQgZGl2aXNvciB2YWx1ZS4i
X3N0cik7CiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgICAg
IHJldHVybiBhc0ludDMyT3JIZWFwQ2VsbChnbG9iYWxPYmplY3QsIHN0YXRpY19jYXN0PGludDY0
X3Q+KHgpICUgc3RhdGljX2Nhc3Q8aW50NjRfdD4oeSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcAppbmRleCAxODVhY2U3MjdkMTU0N2Y5NmQ4ZmY2NzM5
ZDUzNjM0YmEwZWNlYjQ1Li42ZWU5ZmY3ZDE3MjRlMjM5NjQxODYyNTdkZmFjYmQyMDY3NjAxNDIx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcApAQCAt
NjYsNyArNjYsNyBAQCBkb3VibGUgSlNWYWx1ZTo6dG9OdW1iZXJTbG93Q2FzZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIGFzQ2VsbCgpLT50b051bWJlcihnbG9iYWxPYmplY3QpKTsKICNpZiBVU0UoQklHSU5UMzIp
CiAgICAgaWYgKGlzQmlnSW50MzIoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQ29udmVyc2lvbiBmcm9tICdCaWdJbnQnIHRvICdudW1iZXInIGlzIG5v
dCBhbGxvd2VkLiJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDb252ZXJzaW9uIGZyb20gJ0JpZ0ludCcgdG8gJ251bWJlcicgaXMgbm90IGFsbG93ZWQu
Il9zdHIpOwogICAgICAgICByZXR1cm4gMC4wOwogICAgIH0KICNlbmRpZgpAQCAtMTE4LDcgKzEx
OCw3IEBAIEpTVmFsdWUgSlNWYWx1ZTo6dG9CaWdJbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkgY29uc3QKICAgICB9CiAKICAgICBBU1NFUlQocHJpbWl0aXZlLmlzVW5kZWZpbmVkT3JO
dWxsKCkgfHwgcHJpbWl0aXZlLmlzTnVtYmVyKCkgfHwgcHJpbWl0aXZlLmlzU3ltYm9sKCkpOwot
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIGFyZ3VtZW50
IHR5cGUgaW4gVG9CaWdJbnQgb3BlcmF0aW9uIl9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBhcmd1bWVudCB0eXBlIGluIFRvQmlnSW50IG9wZXJh
dGlvbiJfc3RyKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKaW5kZXggNzkyNjc2
M2NkNTY1ZGViYjFhMGIxYzljZjE3ZmQzMDkyMTQ0ODY2YS4uZDRiZTM2NWQ0MGFhYzZhNjYwZDRm
YTFmYTk4MTI0ZTZmYzQ5ZThmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCkBAIC04MzUsNyArODM1LDcgQEAgaW5saW5lIFByZWZl
cnJlZFByaW1pdGl2ZVR5cGUgdG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
ICAgICBpZiAoIXZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByaW1pdGl2ZSBoaW50IGlzIG5vdCBhIHN0cmluZy4iX3MpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJpbWl0aXZlIGhp
bnQgaXMgbm90IGEgc3RyaW5nLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIE5vUHJlZmVyZW5jZTsK
ICAgICB9CiAKQEAgLTg0OSw3ICs4NDksNyBAQCBpbmxpbmUgUHJlZmVycmVkUHJpbWl0aXZlVHlw
ZSB0b1ByZWZlcnJlZFByaW1pdGl2ZVR5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAg
IGlmIChXVEY6OmVxdWFsKGhpbnRTdHJpbmcsICJzdHJpbmciKSkKICAgICAgICAgcmV0dXJuIFBy
ZWZlclN0cmluZzsKIAotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJF
eHBlY3RlZCBwcmltaXRpdmUgaGludCB0byBtYXRjaCBvbmUgb2YgJ2RlZmF1bHQnLCAnbnVtYmVy
JywgJ3N0cmluZycuIl9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRXhwZWN0ZWQgcHJpbWl0aXZlIGhpbnQgdG8gbWF0Y2ggb25lIG9mICdkZWZhdWx0JywgJ251
bWJlcicsICdzdHJpbmcnLiJfc3RyKTsKICAgICByZXR1cm4gTm9QcmVmZXJlbmNlOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXcuY3BwCmluZGV4IGFiYTY4
OGRlNDg3MWY4NGM2MjUxYjc4ZjBiODNjZDYyODY2NzFkMjMuLjc5Y2QzNzhhOTdkMGViZTQxMzBh
MDljZGY3Y2E1Y2FlNjgyNzUzMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXcuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTRGF0YVZpZXcuY3BwCkBAIC00OSwxNSArNDksMTUgQEAgSlNEYXRhVmlldyogSlNEYXRhVmll
dzo6Y3JlYXRlKAogCiAgICAgQVNTRVJUKGJ1ZmZlcik7CiAgICAgaWYgKGJ1ZmZlci0+aXNEZXRh
Y2hlZCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJC
dWZmZXIgaXMgYWxyZWFkeSBkZXRhY2hlZCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJCdWZmZXIgaXMgYWxyZWFkeSBkZXRhY2hlZCJfc3RyKTsKICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIGlmICghQXJyYXlCdWZmZXJWaWV3Ojp2
ZXJpZnlTdWJSYW5nZUxlbmd0aCgqYnVmZmVyLCBieXRlT2Zmc2V0LCBieXRlTGVuZ3RoLCBzaXpl
b2YodWludDhfdCkpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiTGVuZ3RoIG91dCBvZiByYW5nZSBvZiBidWZmZXIiX3MpOworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkxlbmd0aCBvdXQgb2YgcmFuZ2Ugb2YgYnVm
ZmVyIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAgaWYgKCFBcnJh
eUJ1ZmZlclZpZXc6OnZlcmlmeUJ5dGVPZmZzZXRBbGlnbm1lbnQoYnl0ZU9mZnNldCwgc2l6ZW9m
KHVpbnQ4X3QpKSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkJ5dGUgb2Zmc2V0IGlzIG5vdCBhbGlnbmVkIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCeXRlIG9mZnNldCBpcyBub3QgYWxpZ25lZCJfc3Ry
KTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IGU5OGM3
OGFiYWJmOTgzMWNmZjA2NWMxYmU5MDJiZmFjODBhMDZkMmEuLjJkYzE3NjRiODFjNTllZmRmYTE3
MjkyZTc5MTkzY2IzYzAzODAyNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5cGUuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgRW5j
b2RlZEpTVmFsdWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKIAogICAgIEpTRGF0YVZpZXcqIGRhdGFWaWV3ID0ganNEeW5hbWljQ2Fz
dDxKU0RhdGFWaWV3Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghZGF0
YVZpZXcpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJl
Y2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciX3N0cik7CiAgICAg
CiAgICAgc2l6ZV90IGJ5dGVPZmZzZXQgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLnRvSW5kZXgo
Z2xvYmFsT2JqZWN0LCAiYnl0ZU9mZnNldCIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAtMTQ3LDExICsxNDcsMTEgQEAgRW5jb2RlZEpTVmFs
dWUgZ2V0RGF0YShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkKICAgICB9CiAKICAgICBpZiAoZGF0YVZpZXctPmlzRGV0YWNoZWQoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcg
QXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5n
IEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3N0cik7CiAKICAg
ICBzaXplX3QgYnl0ZUxlbmd0aCA9IGRhdGFWaWV3LT5sZW5ndGgoKTsKICAgICBpZiAoZWxlbWVu
dFNpemUgPiBieXRlTGVuZ3RoIHx8IGJ5dGVPZmZzZXQgPiBieXRlTGVuZ3RoIC0gZWxlbWVudFNp
emUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiT3V0IG9mIGJvdW5kcyBhY2Nlc3MiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3VuZHMgYWNjZXNzIl9zdHIpOwog
CiAgICAgY29uc3QgdW5zaWduZWQgZGF0YVNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6
VHlwZSk7CiAgICAgdW5pb24gewpAQCAtMTgwLDcgKzE4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIHNl
dERhdGEoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
CiAKICAgICBKU0RhdGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNEYXRhVmlldyo+
KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRhdGFWaWV3KQotICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIg
b2YgRGF0YVZpZXcgbWV0aG9kIG11c3QgYmUgYSBEYXRhVmlldyJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBvZiBEYXRh
VmlldyBtZXRob2QgbXVzdCBiZSBhIERhdGFWaWV3Il9zdHIpOwogICAgIAogICAgIHNpemVfdCBi
eXRlT2Zmc2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0luZGV4KGdsb2JhbE9iamVjdCwg
ImJ5dGVPZmZzZXQiKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKQEAgLTIwMiwxMSArMjAyLDExIEBAIEVuY29kZWRKU1ZhbHVlIHNldERhdGEoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgfQog
CiAgICAgaWYgKGRhdGFWaWV3LT5pc0RldGFjaGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhh
cyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBo
YXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zdHIpOwogCiAgICAgc2l6ZV90IGJ5dGVM
ZW5ndGggPSBkYXRhVmlldy0+bGVuZ3RoKCk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gYnl0ZUxl
bmd0aCB8fCBieXRlT2Zmc2V0ID4gYnl0ZUxlbmd0aCAtIGVsZW1lbnRTaXplKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk91dCBvZiBib3Vu
ZHMgYWNjZXNzIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJPdXQgb2YgYm91bmRzIGFjY2VzcyJfc3RyKTsKIAogICAgIHVpbnQ4X3Qq
IGRhdGFQdHIgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZGF0YVZpZXctPnZlY3RvcigpKSArIGJ5
dGVPZmZzZXQ7CiAKQEAgLTI0NCw3ICsyNDQsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
ZGF0YVZpZXdQcm90b0dldHRlckJ5dGVMZW5ndGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwog
ICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkRhdGFWaWV3LnByb3RvdHlwZS5ieXRlTGVuZ3RoIGV4cGVjdHMgfHRoaXN8
IHRvIGJlIGEgRGF0YVZpZXcgb2JqZWN0Iik7CiAgICAgaWYgKHZpZXctPmlzRGV0YWNoZWQoKSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVu
ZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJV
bmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3N0
cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHZpZXctPmxlbmd0aCgp
KSk7CiB9CkBAIC0yNTgsNyArMjU4LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKGRhdGFW
aWV3UHJvdG9HZXR0ZXJCeXRlT2Zmc2V0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJEYXRhVmlldy5wcm90b3R5cGUuYnl0ZU9mZnNldCBleHBlY3RzIHx0aGlzfCB0byBi
ZSBhIERhdGFWaWV3IG9iamVjdCIpOwogICAgIGlmICh2aWV3LT5pc0RldGFjaGVkKCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmRlcmx5
aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJs
eWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zdHIpOwog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih2aWV3LT5ieXRlT2Zmc2V0KCkp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0ZU1h
dGguY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKaW5k
ZXggZmM2ZmQzOGVjYjM5MmU5ZDVlYTU0ZDU3MDI1Nzg1NjIyODk0MzRmYi4uMWE5MDQzMTg3Zjdk
YjM0NzllMjFhYzIxOTRhZjE2NmQyYTQxYThmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNEYXRlTWF0aC5jcHAKQEAgLTM0NCwxMSArMzQ0LDExIEBAIFN0cmluZyBEYXRl
Q2FjaGU6OmRlZmF1bHRUaW1lWm9uZSgpCiAgICAgVUJvb2wgaXNTeXN0ZW0gPSBmYWxzZTsKICAg
ICBpY3U6OlRpbWVab25lOjpnZXRDYW5vbmljYWxJRCh0aW1lWm9uZUlELCBjYW5vbmljYWxUaW1l
Wm9uZUlELCBpc1N5c3RlbSwgc3RhdHVzKTsKICAgICBpZiAoVV9GQUlMVVJFKHN0YXR1cykpCi0g
ICAgICAgIHJldHVybiAiVVRDIl9zOworICAgICAgICByZXR1cm4gIlVUQyJfc3RyOwogCiAgICAg
U3RyaW5nIGNhbm9uaWNhbCA9IFN0cmluZyhjYW5vbmljYWxUaW1lWm9uZUlELmdldEJ1ZmZlcigp
LCBjYW5vbmljYWxUaW1lWm9uZUlELmxlbmd0aCgpKTsKICAgICBpZiAoaXNVVENFcXVpdmFsZW50
KGNhbm9uaWNhbCkpCi0gICAgICAgIHJldHVybiAiVVRDIl9zOworICAgICAgICByZXR1cm4gIlVU
QyJfc3RyOwogCiAgICAgcmV0dXJuIGNhbm9uaWNhbDsKICNlbmRpZgpAQCAtMzk2LDcgKzM5Niw3
IEBAIHZvaWQgRGF0ZUNhY2hlOjp0aW1lWm9uZUNhY2hlU2xvdygpCiAgICAgICAgICAgICBjYW5v
bmljYWwgPSBTdHJpbmcoY2Fub25pY2FsQnVmZmVyKTsKICAgICB9CiAgICAgaWYgKGNhbm9uaWNh
bC5pc051bGwoKSB8fCBpc1VUQ0VxdWl2YWxlbnQoY2Fub25pY2FsKSkKLSAgICAgICAgY2Fub25p
Y2FsID0gIlVUQyJfczsKKyAgICAgICAgY2Fub25pY2FsID0gIlVUQyJfc3RyOwogICAgIGNhY2hl
LT5tX2Nhbm9uaWNhbFRpbWVab25lSUQgPSBXVEZNb3ZlKGNhbm9uaWNhbCk7CiAKICAgICBzdGF0
dXMgPSBVX1pFUk9fRVJST1I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVu
Y3Rpb24uY3BwCmluZGV4IGQ5MzdiMzZiMzA0NTc0NDBjZWE4YmVhNTE4ZDE5ODE5YTY0YTlkNWMu
LmY1MDk3MmFkOTUyOWZkZDM1ZjJmNjNkMWE4ZTY3Zjg0OGZjNTdiNjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uY3BwCkBAIC01MTIsNyArNTEyLDcgQEAg
U3RyaW5nIGdldENhbGN1bGF0ZWREaXNwbGF5TmFtZShWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3Qp
CiB7CiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTVG9X
YXNtSUNDYWxsZWUqPih2bSwgb2JqZWN0KSkKLSAgICAgICAgcmV0dXJuICJ3YXNtLXN0dWIiX3M7
CisgICAgICAgIHJldHVybiAid2FzbS1zdHViIl9zdHI7CiAjZW5kaWYKIAogICAgIGlmICghanNE
eW5hbWljQ2FzdDxKU0Z1bmN0aW9uKj4odm0sIG9iamVjdCkgJiYgIWpzRHluYW1pY0Nhc3Q8SW50
ZXJuYWxGdW5jdGlvbio+KHZtLCBvYmplY3QpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3
Q29uc3RydWN0b3JJbmxpbmVzLmgKaW5kZXggNmZmZWMzMTBjZWU4ZTYxYTQ1YzRmNDI3NTRiYjkw
MGFmMzA4OGQ0MS4uODZhODIwNzI2YmE2YzVmNmY2NjgwNzhiYWI2NWFjZTc2ZmUwYTg5OSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCkBAIC0xMjEs
NyArMTIxLDcgQEAgaW5saW5lIEpTQXJyYXlCdWZmZXIqIGNvbnN0cnVjdEN1c3RvbUFycmF5QnVm
ZmVySWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE8KICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBpZiAoIXNwZWNpZXMtPmlzQ29uc3RydWN0b3Iodm0pKSB7Ci0gICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzcGVjaWVzIGlzIG5vdCBhIGNvbnN0
cnVjdG9yIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InNwZWNpZXMgaXMgbm90IGEgY29uc3RydWN0b3IiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIApAQCAtMTUzLDcgKzE1Myw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xv
CiAgICAgaWYgKEpTQXJyYXlCdWZmZXIqIGpzQnVmZmVyID0ganNEeW5hbWljQ2FzdDxKU0FycmF5
QnVmZmVyKj4odm0sIGZpcnN0VmFsdWUpKSB7CiAgICAgICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4g
YnVmZmVyID0ganNCdWZmZXItPmltcGwoKTsKICAgICAgICAgaWYgKGJ1ZmZlci0+aXNEZXRhY2hl
ZCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
QnVmZmVyIGlzIGFscmVhZHkgZGV0YWNoZWQiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkJ1ZmZlciBpcyBhbHJlYWR5IGRldGFjaGVkIl9zdHIp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KIApAQCAtMTYyLDcgKzE2
Miw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0
aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgICAgICAgICBsZW5ndGggPSBsZW5n
dGhPcHQudmFsdWUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFko
KGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpIC0gb2Zmc2V0KSAlIFZpZXdDbGFzczo6ZWxlbWVudFNpemUp
KSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlw
bGUgb2YgdGhlIGVsZW1lbnQgc2l6ZSJfcyk7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBcnJheUJ1ZmZlciBsZW5ndGggbWludXMgdGhlIGJ5
dGVPZmZzZXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIGVsZW1lbnQgc2l6ZSJfc3RyKTsKICAg
ICAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGxlbmd0aCA9IChidWZmZXItPmJ5dGVMZW5ndGgoKSAtIG9mZnNldCkgLyBWaWV3Q2xhc3M6OmVs
ZW1lbnRTaXplOwpAQCAtMTczLDcgKzE3Myw3IEBAIGlubGluZSBKU09iamVjdCogY29uc3RydWN0
R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhKU0dsb2JhbE9iamVjdCogZ2xvCiAg
ICAgQVNTRVJUKCFvZmZzZXQgJiYgIWxlbmd0aE9wdCk7CiAgICAgCiAgICAgaWYgKFVOTElLRUxZ
KFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIEFycmF5
QnVmZmVyIGZvciB0aGUgZmlyc3QgYXJndW1lbnQuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIEFycmF5QnVmZmVyIGZvciB0aGUgZmly
c3QgYXJndW1lbnQuIl9zdHIpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAgICAg
CkBAIC0xOTEsMTIgKzE5MSwxMiBAQCBpbmxpbmUgSlNPYmplY3QqIGNvbnN0cnVjdEdlbmVyaWNU
eXBlZEFycmF5Vmlld1dpdGhBcmd1bWVudHMoSlNHbG9iYWxPYmplY3QqIGdsbwogICAgICAgICAg
ICAgY3VzdG9tQnVmZmVyID0gY29uc3RydWN0Q3VzdG9tQXJyYXlCdWZmZXJJZk5lZWRlZChnbG9i
YWxPYmplY3QsIHZpZXcpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
bnVsbHB0cik7CiAgICAgICAgICAgICBpZiAodmlldy0+aXNEZXRhY2hlZCgpKSB7Ci0gICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcg
QXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfcyk7CisgICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcg
QXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfc3RyKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
aWYgKGNvbnRlbnRUeXBlKG9iamVjdC0+Y2xhc3NJbmZvKHZtKS0+dHlwZWRBcnJheVN0b3JhZ2VU
eXBlKSAhPSBWaWV3Q2xhc3M6OmNvbnRlbnRUeXBlKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnRlbnQgdHlwZXMgb2Ygc291cmNlIGFu
ZCBuZXcgdHlwZWQgYXJyYXkgYXJlIGRpZmZlcmVudCJfcyk7CisgICAgICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnRlbnQgdHlwZXMgb2Ygc291cmNl
IGFuZCBuZXcgdHlwZWQgYXJyYXkgYXJlIGRpZmZlcmVudCJfc3RyKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgICAgIH0KIApAQCAtMjY5LDcgKzI2OSw3IEBAIEFM
V0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3
SW1wbChKU0dsb2JhbE9iamVjdCoKIAogICAgIGlmICghYXJnQ291bnQpIHsKICAgICAgICAgaWYg
KFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEYXRh
VmlldyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIl9zKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJE
YXRhVmlldyBjb25zdHJ1Y3RvciByZXF1aXJlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQuIl9zdHIp
OwogCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFZp
ZXdDbGFzczo6Y3JlYXRlKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCAwKSkpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKaW5kZXggZDMyYTJiMGMwYzAzYjNjMjliYjhlNWZlOTRj
M2MwN2VmYmQ4YjU3MC4uM2YzZDEzMWM4MDAyNjE5ODk4NGNjZTc1YTA5NmViYTdlZTc0NzA0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdJbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
ZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmgKQEAgLTE4MCw3ICsxODAsNyBAQCBib29sIEpT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEFkYXB0b3I+OjpzZXRXaXRoU3BlY2lmaWNUeXBlKAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiBjb25zdGV4cHIgKEFkYXB0b3I6OmNvbnRlbnRU
eXBlICE9IE90aGVyQWRhcHRvcjo6Y29udGVudFR5cGUpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvbnRlbnQgdHlwZXMgb2Ygc291cmNlIGFuZCBkZXN0
aW5hdGlvbiB0eXBlZCBhcnJheXMgYXJlIGRpZmZlcmVudCJfcyk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb250ZW50IHR5cGVzIG9mIHNvdXJjZSBhbmQg
ZGVzdGluYXRpb24gdHlwZWQgYXJyYXlzIGFyZSBkaWZmZXJlbnQiX3N0cik7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CiAgICAgCkBAIC00NTcsNyArNDU3LDcgQEAgYm9vbCBKU0dlbmVy
aWNUeXBlZEFycmF5VmlldzxBZGFwdG9yPjo6ZGVmaW5lT3duUHJvcGVydHkoCiAgICAgfQogCiAg
ICAgaWYgKGlzQ2Fub25pY2FsTnVtZXJpY0luZGV4U3RyaW5nKHByb3BlcnR5TmFtZSkpCi0gICAg
ICAgIHJldHVybiB0eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgc2hvdWxkVGhyb3csICJB
dHRlbXB0aW5nIHRvIHN0b3JlIGNhbm9uaWNhbCBudW1lcmljIHN0cmluZyBwcm9wZXJ0eSBvbiBh
IHR5cGVkIGFycmF5Il9zKTsKKyAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBzaG91bGRUaHJvdywgIkF0dGVtcHRpbmcgdG8gc3RvcmUgY2Fub25pY2FsIG51bWVy
aWMgc3RyaW5nIHByb3BlcnR5IG9uIGEgdHlwZWQgYXJyYXkiX3N0cik7CiAKICAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEJhc2U6OmRlZmluZU93blByb3BlcnR5KHRoaXNPYmplY3QsIGds
b2JhbE9iamVjdCwgcHJvcGVydHlOYW1lLCBkZXNjcmlwdG9yLCBzaG91bGRUaHJvdykpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKaW5kZXggZGYw
NDM1ZjZlMzc5ODA2MWQ5ZjZjY2M2ZDc1OWRmZTY2YmQ2ZDlmYS4uZjM2MTc2ZTE4YzU1MDUwZGZl
OGEyOGJiYzA0ZjJhNTYxOWQ1ODczNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvdHlwZUZ1bmN0aW9ucy5oCkBAIC01NSw3ICs1NSw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVy
Vmlldyogc3BlY2llc0NvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgZGVmYXVsdENvbnN0cnVjdG9y
KCkpOwogCiAgICAgaWYgKCFjb25zdHJ1Y3Rvci5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjb25zdHJ1Y3RvciBQcm9wZXJ0eSBzaG91
bGQgbm90IGJlIG51bGwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiY29uc3RydWN0b3IgUHJvcGVydHkgc2hvdWxkIG5vdCBiZSBudWxsIl9zdHIpOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTcxLDcgKzcxLDcgQEAgaW5saW5l
IEpTQXJyYXlCdWZmZXJWaWV3KiBzcGVjaWVzQ29uc3RydWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTT2JqZWMKIAogICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IGpz
RHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPih2bSwgcmVzdWx0KSkgewogICAgICAgICBp
ZiAodmlldy0+dHlwZSgpID09IERhdGFWaWV3VHlwZSkgewotICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5vdCBy
ZXR1cm4gYSBUeXBlZEFycmF5IFZpZXciX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInNwZWNpZXMgY29uc3RydWN0b3IgZGlkIG5vdCByZXR1cm4g
YSBUeXBlZEFycmF5IFZpZXciX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICAgICAgfQogCkBAIC04Miw3ICs4Miw3IEBAIGlubGluZSBKU0FycmF5QnVmZmVyVmlldyogc3Bl
Y2llc0NvbnN0cnVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJzcGVjaWVzIGNvbnN0cnVjdG9yIGRpZCBub3QgcmV0dXJuIGEgVHlwZWRB
cnJheSBWaWV3Il9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
c3BlY2llcyBjb25zdHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyJfc3Ry
KTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtMTA4LDcgKzEwOCw3IEBAIEFMV0FZU19J
TkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KFZN
JiB2bSwgSlNHbG9iYWxPCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdD
bGFzcyo+KGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogCiAgICAgaWYgKFVOTElLRUxZKCFjYWxs
RnJhbWUtPmFyZ3VtZW50Q291bnQoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
RXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50Il9zdHIpOwogCiAgICAgc2l6ZV90IG9mZnNl
dDsKICAgICBpZiAoY2FsbEZyYW1lLT5hcmd1bWVudENvdW50KCkgPj0gMikgewpAQCAtNTAyLDcg
KzUwMiw3IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jU2xpY2UoVk0mIHZtLCBKU0dsb2JhCiAgICAgLy8gaHR0cHM6Ly90YzM5LmVz
L2VjbWEyNjIvI3R5cGVkYXJyYXktc3BlY2llcy1jcmVhdGUKICAgICAvLyBJZiByZXN1bHQuW1tD
b250ZW50VHlwZV1dIOKJoCBleGVtcGxhci5bW0NvbnRlbnRUeXBlXV0sIHRocm93IGEgVHlwZUVy
cm9yIGV4Y2VwdGlvbi4KICAgICBpZiAoY29udGVudFR5cGUocmVzdWx0LT5jbGFzc0luZm8odm0p
LT50eXBlZEFycmF5U3RvcmFnZVR5cGUpICE9IFZpZXdDbGFzczo6Y29udGVudFR5cGUpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb250ZW50
IHR5cGVzIG9mIHNvdXJjZSBhbmQgY3JlYXRlZCB0eXBlZCBhcnJheXMgYXJlIGRpZmZlcmVudCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJDb250ZW50IHR5cGVzIG9mIHNvdXJjZSBhbmQgY3JlYXRlZCB0eXBlZCBhcnJheXMgYXJlIGRp
ZmZlcmVudCJfc3RyKTsKIAogICAgIC8vIFdlIHJldHVybiBlYXJseSBoZXJlIHNpbmNlIHdlIGRv
bid0IGFsbG9jYXRlIGEgYmFja2luZyBzdG9yZSBpZiBsZW5ndGggaXMgMCBhbmQgbWVtbW92ZSBk
b2VzIG5vdCBsaWtlIG51bGxwdHJzCiAgICAgaWYgKCFsZW5ndGgpCkBAIC01MTMsNyArNTEzLDcg
QEAgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1ZSBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b0Z1bmNTbGljZShWTSYgdm0sIEpTR2xvYmEKIAogICAgIC8vIFRoZSBzcGVjaWVzIGNvbnN0cnVj
dG9yIG1heSByZXR1cm4gYW4gYXJyYXkgd2l0aCBhbnkgYXJiaXRyYXJ5IGxlbmd0aC4KICAgICBp
ZiAocmVzdWx0LT5sZW5ndGgoKSA8IGxlbmd0aCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlR5cGVkQXJyYXkucHJvdG90eXBlLnNsaWNlIGNv
bnN0cnVjdGVkIHR5cGVkIGFycmF5IG9mIGluc3VmZmljaWVudCBsZW5ndGgiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVHlwZWRBcnJh
eS5wcm90b3R5cGUuc2xpY2UgY29uc3RydWN0ZWQgdHlwZWQgYXJyYXkgb2YgaW5zdWZmaWNpZW50
IGxlbmd0aCJfc3RyKTsKIAogICAgIHN3aXRjaCAocmVzdWx0LT5jbGFzc0luZm8odm0pLT50eXBl
ZEFycmF5U3RvcmFnZVR5cGUpIHsKICAgICBjYXNlIFR5cGVJbnQ4OgpAQCAtNjMxLDcgKzYzMSw3
IEBAIEFMV0FZU19JTkxJTkUgRW5jb2RlZEpTVmFsdWUgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJp
dmF0ZUZ1bmNTdWJhcnJheUNyZWF0ZShWTSYKICAgICBKU0FycmF5QnVmZmVyVmlldyogdmFsaWRh
dGVkID0gdmFsaWRhdGVUeXBlZEFycmF5KGdsb2JhbE9iamVjdCwgcmVzdWx0KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmIChjb250ZW50VHlwZSh2YWxpZGF0
ZWQtPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkgIT0gVmlld0NsYXNzOjpj
b250ZW50VHlwZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5IGNvbnN0cnVjdGVkIHR5cGVk
IGFycmF5IG9mIGRpZmZlcmVudCBjb250ZW50IHR5cGUgZnJvbSB8dGhpc3wiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVHlwZWRBcnJh
eS5wcm90b3R5cGUuc3ViYXJyYXkgY29uc3RydWN0ZWQgdHlwZWQgYXJyYXkgb2YgZGlmZmVyZW50
IGNvbnRlbnQgdHlwZSBmcm9tIHx0aGlzfCJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUodmFsaWRhdGVkKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCBmYTYyM2UwOTA3NGMzOGZiZTMyMzQxNjdkY2Q1OTIw
MmY4ZjE1MWI2Li43MDcyZjkzYjRhNThjMTA2YTFhMzg0NWI5Yjg4MWZlMjA2NWI3NmRiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBA
IC04NTQsNyArODU0LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAg
ICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1cmU6OkluaXRpYWxpemVyJiBpbml0KSB7IFwKICAgICAg
ICAgICAgIGluaXQuc2V0UHJvdG90eXBlKEpTICMjIHR5cGUgIyMgQXJyYXlQcm90b3R5cGU6OmNy
ZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlwZSAjIyBBcnJheVByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV90eXBl
ZEFycmF5UHJvdG8uZ2V0KGluaXQuZ2xvYmFsKSkpKTsgXAogICAgICAgICAgICAgaW5pdC5zZXRT
dHJ1Y3R1cmUoSlMgIyMgdHlwZSAjIyBBcnJheTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGlu
aXQuZ2xvYmFsLCBpbml0LnByb3RvdHlwZSkpOyBcCi0gICAgICAgICAgICBpbml0LnNldENvbnN0
cnVjdG9yKEpTICMjIHR5cGUgIyMgQXJyYXlDb25zdHJ1Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIGlu
aXQuZ2xvYmFsLCBKUyAjIyB0eXBlICMjIEFycmF5Q29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fdHlwZWRBcnJheVN1cGVyQ29u
c3RydWN0b3IuZ2V0KGluaXQuZ2xvYmFsKSksIGluaXQucHJvdG90eXBlLCAjdHlwZSAiQXJyYXki
X3MpKTsgXAorICAgICAgICAgICAgaW5pdC5zZXRDb25zdHJ1Y3RvcihKUyAjIyB0eXBlICMjIEFy
cmF5Q29uc3RydWN0b3I6OmNyZWF0ZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgSlMgIyMgdHlwZSAj
IyBBcnJheUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWws
IGluaXQuZ2xvYmFsLT5tX3R5cGVkQXJyYXlTdXBlckNvbnN0cnVjdG9yLmdldChpbml0Lmdsb2Jh
bCkpLCBpbml0LnByb3RvdHlwZSwgI3R5cGUgIkFycmF5Il9zdHIpKTsgXAogICAgICAgICAgICAg
aW5pdC5nbG9iYWwtPnB1dERpcmVjdChpbml0LnZtLCBpbml0LnZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnR5cGUgIyMgQXJyYXlQcml2YXRlTmFtZSgpLCBpbml0LmNvbnN0cnVjdG9y
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7IFwK
ICAgICAgICAgfSk7CiAgICAgRk9SX0VBQ0hfVFlQRURfQVJSQVlfVFlQRV9FWENMVURJTkdfREFU
QV9WSUVXKElOSVRfVFlQRURfQVJSQVlfTEFURVIpCkBAIC04NjQsNyArODY0LDcgQEAgdm9pZCBK
U0dsb2JhbE9iamVjdDo6aW5pdChWTSYgdm0pCiAgICAgICAgIFtdIChMYXp5Q2xhc3NTdHJ1Y3R1
cmU6OkluaXRpYWxpemVyJiBpbml0KSB7CiAgICAgICAgICAgICBpbml0LnNldFByb3RvdHlwZShK
U0RhdGFWaWV3UHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgSlNEYXRhVmlld1Byb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBpbml0Lmdsb2JhbC0+bV9vYmpl
Y3RQcm90b3R5cGUuZ2V0KCkpKSk7CiAgICAgICAgICAgICBpbml0LnNldFN0cnVjdHVyZShKU0Rh
dGFWaWV3OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgaW5pdC5nbG9iYWwsIGluaXQucHJvdG90
eXBlKSk7Ci0gICAgICAgICAgICBpbml0LnNldENvbnN0cnVjdG9yKEpTRGF0YVZpZXdDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBKU0RhdGFWaWV3Q29uc3RydWN0b3I6
OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVu
Y3Rpb25Qcm90b3R5cGUuZ2V0KCkpLCBpbml0LnByb3RvdHlwZSwgIkRhdGFWaWV3Il9zKSk7Cisg
ICAgICAgICAgICBpbml0LnNldENvbnN0cnVjdG9yKEpTRGF0YVZpZXdDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKGluaXQudm0sIGluaXQuZ2xvYmFsLCBKU0RhdGFWaWV3Q29uc3RydWN0b3I6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBpbml0Lmdsb2JhbCwgaW5pdC5nbG9iYWwtPm1fZnVuY3Rpb25Qcm90
b3R5cGUuZ2V0KCkpLCBpbml0LnByb3RvdHlwZSwgIkRhdGFWaWV3Il9zdHIpKTsKICAgICAgICAg
fSk7CiAgICAgCiAgICAgbV9sZXhpY2FsRW52aXJvbm1lbnRTdHJ1Y3R1cmUuc2V0KHZtLCB0aGlz
LCBKU0xleGljYWxFbnZpcm9ubWVudDo6Y3JlYXRlU3RydWN0dXJlKHZtLCB0aGlzKSk7CkBAIC0x
Mzk3LDcgKzEzOTcsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMj
IENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgaW5p
dC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGluaXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpLCAyLCBTdHJpbmcoKSwgZ2xvYmFsRnVuY0NvcHlEYXRhUHJvcGVydGllcykp
OwogICAgICAgICB9KTsKICAgICBtX2xpbmtUaW1lQ29uc3RhbnRzW3N0YXRpY19jYXN0PHVuc2ln
bmVkPihMaW5rVGltZUNvbnN0YW50OjplbnF1ZXVlSm9iKV0uaW5pdExhdGVyKFtdIChjb25zdCBJ
bml0aWFsaXplcjxKU0NlbGw+JiBpbml0KSB7Ci0gICAgICAgICAgICBpbml0LnNldChKU0Z1bmN0
aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lciks
IDAsICJlbnF1ZXVlSm9iIl9zLCBlbnF1ZXVlSm9iKSk7CisgICAgICAgICAgICBpbml0LnNldChK
U0Z1bmN0aW9uOjpjcmVhdGUoaW5pdC52bSwganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5v
d25lciksIDAsICJlbnF1ZXVlSm9iIl9zdHIsIGVucXVldWVKb2IpKTsKICAgICAgICAgfSk7CiAg
ICAgbV9saW5rVGltZUNvbnN0YW50c1tzdGF0aWNfY2FzdDx1bnNpZ25lZD4oTGlua1RpbWVDb25z
dGFudDo6bWFrZVR5cGVFcnJvcildLmluaXRMYXRlcihbXSAoY29uc3QgSW5pdGlhbGl6ZXI8SlND
ZWxsPiYgaW5pdCkgewogICAgICAgICAgICAgaW5pdC5zZXQoSlNGdW5jdGlvbjo6Y3JlYXRlKGlu
aXQudm0sIGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpLCAwLCBTdHJpbmcoKSwg
Z2xvYmFsRnVuY01ha2VUeXBlRXJyb3IpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdERlYnVnZ2FibGUuY3BwCmluZGV4IGRlNWUz
N2QwZmEzNDAyZTc3NmYxZmZmODJjZDFlNTQ2OGU2NmZmMWIuLjI3NWRiNjU0YTM0YjRmMzc4ZGRj
Mzg0MWMzYTQzZWQ1MWEzZWI1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0RGVidWdnYWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3REZWJ1Z2dhYmxlLmNwcApAQCAtNDcsNyArNDcs
NyBAQCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OkpTR2xvYmFsT2JqZWN0RGVidWdnYWJsZShK
U0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogU3RyaW5nIEpTR2xvYmFsT2JqZWN0RGVidWdn
YWJsZTo6bmFtZSgpIGNvbnN0CiB7CiAgICAgU3RyaW5nIG5hbWUgPSBtX2dsb2JhbE9iamVjdC5u
YW1lKCk7Ci0gICAgcmV0dXJuIG5hbWUuaXNFbXB0eSgpID8gIkpTQ29udGV4dCJfcyA6IG5hbWU7
CisgICAgcmV0dXJuIG5hbWUuaXNFbXB0eSgpID8gIkpTQ29udGV4dCJfc3RyIDogbmFtZTsKIH0K
IAogdm9pZCBKU0dsb2JhbE9iamVjdERlYnVnZ2FibGU6OmNvbm5lY3QoRnJvbnRlbmRDaGFubmVs
JiBmcm9udGVuZENoYW5uZWwsIGJvb2wgYXV0b21hdGljSW5zcGVjdGlvbiwgYm9vbCBpbW1lZGlh
dGVseVBhdXNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCmluZGV4IDA5NGY3NmJmMmQ3YmI3MDJjYjE0NTMw
MDhlNGRjNzkzNWQ5OWMxNWQuLjg5MzQ0YjQ0MDI4NTNjOWEyZjU4MTU2ZTkyMmExMzVjNDZjN2Zi
YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0RnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIEpTVmFsdWUg
ZW5jb2RlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEJpdG1hcDwyNTY+JiBk
b05vdEVzY2EKICAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1lbmNv
ZGUKIAogICAgIGF1dG8gdGhyb3dFeGNlcHRpb24gPSBbJnNjb3BlLCBnbG9iYWxPYmplY3RdIHsK
LSAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwg
Y3JlYXRlVVJJRXJyb3IoZ2xvYmFsT2JqZWN0LCAiU3RyaW5nIGNvbnRhaW5lZCBhbiBpbGxlZ2Fs
IFVURi0xNiBzZXF1ZW5jZS4iX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVVJJRXJyb3IoZ2xvYmFsT2JqZWN0LCAiU3Ry
aW5nIGNvbnRhaW5lZCBhbiBpbGxlZ2FsIFVURi0xNiBzZXF1ZW5jZS4iX3N0cikpOwogICAgIH07
CiAKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIoU3RyaW5nQnVpbGRlcjo6T3ZlcmZsb3dIYW5k
bGVyOjpSZWNvcmRPdmVyZmxvdyk7CkBAIC0yMDMsNyArMjAzLDcgQEAgc3RhdGljIEpTVmFsdWUg
ZGVjb2RlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IENoYXJUeXBlKiBjaGFy
YWN0ZXJzLAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGNoYXJMZW4gPT0gMCkgewog
ICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0
aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVVUklFcnJvcihnbG9iYWxP
YmplY3QsICJVUkkgZXJyb3IiX3MpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVVSSUVycm9yKGdsb2JhbE9iamVj
dCwgIlVSSSBlcnJvciJfc3RyKSk7CiAgICAgICAgICAgICAgICAgLy8gVGhlIG9ubHkgY2FzZSB3
aGVyZSB3ZSBkb24ndCB1c2UgInN0cmljdCIgbW9kZSBpcyB0aGUgInVuZXNjYXBlIiBmdW5jdGlv
bi4KICAgICAgICAgICAgICAgICAvLyBGb3IgdGhhdCwgaXQncyBnb29kIHRvIHN1cHBvcnQgdGhl
IHdvbmt5ICIldSIgc3ludGF4IGZvciBjb21wYXRpYmlsaXR5IHdpdGggV2luSUUuCiAgICAgICAg
ICAgICAgICAgaWYgKGsgPD0gbGVuZ3RoIC0gNiAmJiBwWzFdID09ICd1JwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Qu
Y3BwCmluZGV4IDk2YTBmN2RhNDNkM2NlODMxMWZlYzk2ZDk2MzgzOWFhYzk4NmU5MTQuLmQ5Zjlh
YmU0NjkzNzk3Y2VmNmY2NjJhNDAxMTA0MWY4MTYyM2M5YTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTW9kdWxlTmFtZXNwYWNlT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01vZHVsZU5hbWVzcGFjZU9iamVjdC5jcHAK
QEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBKU01vZHVsZU5hbWVzcGFjZU9iamVjdDo6ZmluaXNoQ3Jl
YXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQWJzdHIKICAgICAgICAgfQogICAg
IH0KIAotICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+dG9TdHJpbmdUYWdTeW1i
b2wsIGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIk1vZHVsZSJfcyksIFByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRv
U3RyaW5nVGFnU3ltYm9sLCBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJNb2R1bGUiX3N0ciksIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKIAogICAgIC8vIGh0dHA6Ly93d3cuZWNt
YS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi82LjAvI3NlYy1tb2R1bGUtbmFtZXNwYWNlLWV4
b3RpYy1vYmplY3RzLWdldHByb3RvdHlwZW9mCiAgICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVy
bmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLW1vZHVsZS1uYW1lc3BhY2UtZXhvdGljLW9i
amVjdHMtc2V0cHJvdG90eXBlb2YtdgpAQCAtMjc5LDI4ICsyNzksMjggQEAgYm9vbCBKU01vZHVs
ZU5hbWVzcGFjZU9iamVjdDo6ZGVmaW5lT3duUHJvcGVydHkoSlNPYmplY3QqIGNlbGwsIEpTR2xv
YmFsT2JqZWN0KgogICAgIC8vIDQuIElmIElzQWNjZXNzb3JEZXNjcmlwdG9yKERlc2MpIGlzIHRy
dWUsIHJldHVybiBmYWxzZS4KICAgICBpZiAoZGVzY3JpcHRvci5pc0FjY2Vzc29yRGVzY3JpcHRv
cigpKSB7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY2hhbmdlIG1vZHVsZSBuYW1lc3BhY2Ug
b2JqZWN0J3MgYmluZGluZyB0byBhY2Nlc3NvciJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNoYW5nZSBtb2R1bGUgbmFtZXNwYWNl
IG9iamVjdCdzIGJpbmRpbmcgdG8gYWNjZXNzb3IiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKICAgICAvLyA1LiBJZiBEZXNjLltbV3JpdGFibGVdXSBpcyBwcmVzZW50IGFu
ZCBoYXMgdmFsdWUgZmFsc2UsIHJldHVybiBmYWxzZS4KICAgICBpZiAoZGVzY3JpcHRvci53cml0
YWJsZVByZXNlbnQoKSAmJiAhZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAgICAgICAgIGlmIChz
aG91bGRUaHJvdykKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJDYW5ub3QgY2hhbmdlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0J3MgYmluZGluZyB0byBu
b24td3JpdGFibGUgYXR0cmlidXRlIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY2hhbmdlIG1vZHVsZSBuYW1lc3BhY2Ugb2JqZWN0
J3MgYmluZGluZyB0byBub24td3JpdGFibGUgYXR0cmlidXRlIl9zdHIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gNi4gSWYgRGVzYy5bW0VudW1lcmFibGVdXSBpcyBw
cmVzZW50IGFuZCBoYXMgdmFsdWUgZmFsc2UsIHJldHVybiBmYWxzZS4KICAgICBpZiAoZGVzY3Jp
cHRvci5lbnVtZXJhYmxlUHJlc2VudCgpICYmICFkZXNjcmlwdG9yLmVudW1lcmFibGUoKSkgewog
ICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHJlcGxhY2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3Qn
cyBiaW5kaW5nIHdpdGggbm9uLWVudW1lcmFibGUgYXR0cmlidXRlIl9zKTsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgcmVwbGFjZSBtb2R1
bGUgbmFtZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcgd2l0aCBub24tZW51bWVyYWJsZSBhdHRyaWJ1
dGUiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICAvLyA3LiBJZiBE
ZXNjLltbQ29uZmlndXJhYmxlXV0gaXMgcHJlc2VudCBhbmQgaGFzIHZhbHVlIHRydWUsIHJldHVy
biBmYWxzZS4KICAgICBpZiAoZGVzY3JpcHRvci5jb25maWd1cmFibGVQcmVzZW50KCkgJiYgZGVz
Y3JpcHRvci5jb25maWd1cmFibGUoKSkgewogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCi0gICAg
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHJlcGxh
Y2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QncyBiaW5kaW5nIHdpdGggY29uZmlndXJhYmxlIGF0
dHJpYnV0ZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2Fubm90IHJlcGxhY2UgbW9kdWxlIG5hbWVzcGFjZSBvYmplY3QncyBiaW5kaW5nIHdp
dGggY29uZmlndXJhYmxlIGF0dHJpYnV0ZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIApAQCAtMzEwLDcgKzMxMCw3IEBAIGJvb2wgSlNNb2R1bGVOYW1lc3BhY2VPYmplY3Q6
OmRlZmluZU93blByb3BlcnR5KEpTT2JqZWN0KiBjZWxsLCBKU0dsb2JhbE9iamVjdCoKICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICBpZiAoIXJlc3Vs
dCkgewogICAgICAgICAgICAgaWYgKHNob3VsZFRocm93KQotICAgICAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgcmVwbGFjZSBtb2R1bGUgbmFt
ZXNwYWNlIG9iamVjdCdzIGJpbmRpbmcncyB2YWx1ZSJfcyk7CisgICAgICAgICAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByZXBsYWNlIG1vZHVsZSBu
YW1lc3BhY2Ugb2JqZWN0J3MgYmluZGluZydzIHZhbHVlIl9zdHIpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU09OT2JqZWN0LmNwcAppbmRleCA2YjdjNTg4MWFkOWJmZmRjYTVhMjQ5YTQzNzEwMjVh
MmNmNDdmODBiLi4wM2U3NmY2ZDc3ZDFjYjhhNWI5N2EzOWEyOTlkZWRjMDFiNzJhYTEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcApAQCAtMzkxLDcg
KzM5MSw3IEBAIFN0cmluZ2lmaWVyOjpTdHJpbmdpZnlSZXN1bHQgU3RyaW5naWZpZXI6OmFwcGVu
ZFN0cmluZ2lmaWVkVmFsdWUoU3RyaW5nQnVpbGRlciYKICAgICB9CiAKICAgICBpZiAodmFsdWUu
aXNCaWdJbnQoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2dsb2JhbE9iamVjdCwgc2Nv
cGUsICJKU09OLnN0cmluZ2lmeSBjYW5ub3Qgc2VyaWFsaXplIEJpZ0ludC4iX3MpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihtX2dsb2JhbE9iamVjdCwgc2NvcGUsICJKU09OLnN0cmluZ2lmeSBj
YW5ub3Qgc2VyaWFsaXplIEJpZ0ludC4iX3N0cik7CiAgICAgICAgIHJldHVybiBTdHJpbmdpZnlG
YWlsZWQ7CiAgICAgfQogCkBAIC00MTMsNyArNDEzLDcgQEAgU3RyaW5naWZpZXI6OlN0cmluZ2lm
eVJlc3VsdCBTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZShTdHJpbmdCdWlsZGVy
JgogICAgIC8vIEhhbmRsZSBjeWNsZSBkZXRlY3Rpb24sIGFuZCBwdXQgdGhlIGhvbGRlciBvbiB0
aGUgc3RhY2suCiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1faG9sZGVyU3RhY2suc2l6
ZSgpOyBpKyspIHsKICAgICAgICAgaWYgKG1faG9sZGVyU3RhY2tbaV0ub2JqZWN0KCkgPT0gb2Jq
ZWN0KSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2dsb2JhbE9iamVjdCwgc2NvcGUs
ICJKU09OLnN0cmluZ2lmeSBjYW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBzdHJ1Y3R1cmVzLiJfcyk7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2dsb2JhbE9iamVjdCwgc2NvcGUsICJKU09O
LnN0cmluZ2lmeSBjYW5ub3Qgc2VyaWFsaXplIGN5Y2xpYyBzdHJ1Y3R1cmVzLiJfc3RyKTsKICAg
ICAgICAgICAgIHJldHVybiBTdHJpbmdpZnlGYWlsZWQ7CiAgICAgICAgIH0KICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKaW5kZXggZDU0NGE0M2JhMTll
YTMyN2ZiZDI4MTVhZGM3YWYzNDE2YzU2MWE2Ni4uNTk5MDQ4ZmZjZTVlYzllYWVhMDQ5YzU5ZWRl
ZDNjZTk5NzM0NWMwNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0
LmNwcApAQCAtNTU3LDcgKzU1Nyw3IEBAIFN0cmluZyBKU09iamVjdDo6Y2FsY3VsYXRlZENsYXNz
TmFtZShKU09iamVjdCogb2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIGNsYXNzSW5mb05hbWU7
CiAKICAgICAgICAgaWYgKGNvbnN0cnVjdG9yRnVuY3Rpb25OYW1lLmlzTnVsbCgpKQotICAgICAg
ICAgICAgcmV0dXJuICJPYmplY3QiX3M7CisgICAgICAgICAgICByZXR1cm4gIk9iamVjdCJfc3Ry
OwogICAgIH0KIAogICAgIHJldHVybiBjb25zdHJ1Y3RvckZ1bmN0aW9uTmFtZTsKQEAgLTE5MTIs
NyArMTkxMiw3IEBAIGJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKFZN
JiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICAgICAgaWYgKHRoaXMtPmdl
dFByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSA9PSBwcm90b3R5cGUpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIHNob3VsZFRocm93SWZDYW50U2V0LCAiQ2Fubm90IHNldCBwcm90b3R5cGUgb2YgaW1tdXRh
YmxlIHByb3RvdHlwZSBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsIHNob3VsZFRocm93SWZDYW50U2V0LCAiQ2Fubm90IHNldCBwcm90b3R5
cGUgb2YgaW1tdXRhYmxlIHByb3RvdHlwZSBvYmplY3QiX3N0cik7CiAgICAgfQogCiAgICAgQVNT
RVJUKG1ldGhvZFRhYmxlKHZtKS0+dG9UaGlzKHRoaXMsIGdsb2JhbE9iamVjdCwgRUNNQU1vZGU6
OnNsb3BweSgpKSA9PSB0aGlzKTsKQEAgLTE5MjksNyArMTkyOSw3IEBAIGJvb2wgSlNPYmplY3Q6
OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKICAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBwcm90b3R5cGU7CiAgICAgd2hp
bGUgKG5leHRQcm90b3R5cGUgJiYgbmV4dFByb3RvdHlwZS5pc09iamVjdCgpKSB7CiAgICAgICAg
IGlmIChuZXh0UHJvdG90eXBlID09IHRoaXMpCi0gICAgICAgICAgICByZXR1cm4gdHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsIHNob3VsZFRocm93SWZDYW50U2V0LCAiY3ljbGljIF9fcHJv
dG9fXyB2YWx1ZSJfcyk7CisgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsIHNob3VsZFRocm93SWZDYW50U2V0LCAiY3ljbGljIF9fcHJvdG9fXyB2YWx1ZSJf
c3RyKTsKICAgICAgICAgLy8gRklYTUU6IFRoZSBzcGVjaWZpY2F0aW9uIGN1cnJlbnRseSBzYXlz
IHdlIHNob3VsZCBjaGVjayBpZiB0aGUgW1tHZXRQcm90b3R5cGVPZl1dIGludGVybmFsIG1ldGhv
ZCBvZiBuZXh0UHJvdG90eXBlCiAgICAgICAgIC8vIGlzIG5vdCB0aGUgb3JkaW5hcnkgb2JqZWN0
IGludGVybmFsIG1ldGhvZC4gSG93ZXZlciwgd2UgY3VycmVudGx5IHJlc3RyaWN0IHRoaXMgdG8g
UHJveHkgb2JqZWN0cyBhcyBpdCB3b3VsZCBhbGxvdwogICAgICAgICAvLyBmb3IgY3ljbGVzIHdp
dGggY2VydGFpbiBIVE1MIG9iamVjdHMgKFdpbmRvd1Byb3h5LCBMb2NhdGlvbikgb3RoZXJ3aXNl
LgpAQCAtMjI3Myw3ICsyMjczLDcgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjYWxs
VG9QcmltaXRpdmVGdW5jdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBhdXRv
IGNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGZ1bmN0aW9uKTsKICAgICBpZiAoY2FsbERhdGEu
dHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6Tm9uZSkgewogICAgICAgICBpZiBjb25zdGV4cHIgKGtl
eSA9PSBDYWNoZWRTcGVjaWFsUHJvcGVydHlLZXk6OlRvUHJpbWl0aXZlKQotICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN5bWJvbC50b1ByaW1pdGl2ZSBp
cyBub3QgYSBmdW5jdGlvbiwgdW5kZWZpbmVkLCBvciBudWxsIl9zKTsKKyAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTeW1ib2wudG9QcmltaXRpdmUgaXMg
bm90IGEgZnVuY3Rpb24sIHVuZGVmaW5lZCwgb3IgbnVsbCJfc3RyKTsKICAgICAgICAgcmV0dXJu
IHNjb3BlLmV4Y2VwdGlvbigpOwogICAgIH0KIApAQCAtMjMwMiw3ICsyMzAyLDcgQEAgc3RhdGlj
IEFMV0FZU19JTkxJTkUgSlNWYWx1ZSBjYWxsVG9QcmltaXRpdmVGdW5jdGlvbihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWMKICAgICBBU1NFUlQoIXJlc3VsdC5pc0dldHRlclNldHRlcigpKTsK
ICAgICBpZiAocmVzdWx0LmlzT2JqZWN0KCkpIHsKICAgICAgICAgaWYgY29uc3RleHByIChrZXkg
PT0gQ2FjaGVkU3BlY2lhbFByb3BlcnR5S2V5OjpUb1ByaW1pdGl2ZSkKLSAgICAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3ltYm9sLnRvUHJpbWl0
aXZlIHJldHVybmVkIGFuIG9iamVjdCJfcyk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlN5bWJvbC50b1ByaW1pdGl2ZSByZXR1cm5lZCBh
biBvYmplY3QiX3N0cik7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlKCk7CiAgICAgfQogICAgIHJl
dHVybiByZXN1bHQ7CkBAIC0yMzQ0LDcgKzIzNDQsNyBAQCBKU1ZhbHVlIEpTT2JqZWN0OjpvcmRp
bmFyeVRvUHJpbWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFBy
aQogCiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwogCi0g
ICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJObyBkZWZhdWx0
IHZhbHVlIl9zKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIk5vIGRlZmF1bHQgdmFsdWUiX3N0cik7CiB9CiAKIEpTVmFsdWUgSlNPYmplY3Q6OnRvUHJp
bWl0aXZlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByZWZlcnJlZFByaW1pdGl2ZVR5
cGUgcHJlZmVycmVkVHlwZSkgY29uc3QKQEAgLTI0MzMsNyArMjQzMyw3IEBAIGJvb2wgSlNPYmpl
Y3Q6OmRlZmF1bHRIYXNJbnN0YW5jZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHZhbHVlLCBKCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcHJvdG8uaXNP
YmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW5zdGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdpdGggYW4gaW52YWxpZCBwcm90b3R5cGUg
cHJvcGVydHkuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRoIGFuIGludmFsaWQgcHJvdG90
eXBlIHByb3BlcnR5LiJfc3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAt
Mjg2MywxMCArMjg2MywxMCBAQCBib29sIEpTT2JqZWN0OjpkZWZpbmVPd25JbmRleGVkUHJvcGVy
dHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgdW5zaWduZWQgaQogICAgICAgICAgICAg
aWYgKCFjdXJyZW50LmNvbmZpZ3VyYWJsZSgpKSB7CiAgICAgICAgICAgICAgICAgLy8gMTEuaS4g
UmVqZWN0LCBpZiB0aGUgW1tTZXRdXSBmaWVsZCBvZiBEZXNjIGlzIHByZXNlbnQgYW5kIFNhbWVW
YWx1ZShEZXNjLltbU2V0XV0sIGN1cnJlbnQuW1tTZXRdXSkgaXMgZmFsc2UuCiAgICAgICAgICAg
ICAgICAgaWYgKGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpICYmIGRlc2NyaXB0b3Iuc2V0dGVy
KCkgIT0gY3VycmVudC5zZXR0ZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8g
Y2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUgcHJvcGVydHkuIl9zKTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5j
b25maWd1cmFibGUgcHJvcGVydHkuIl9zdHIpOwogICAgICAgICAgICAgICAgIC8vIDExLmlpLiBS
ZWplY3QsIGlmIHRoZSBbW0dldF1dIGZpZWxkIG9mIERlc2MgaXMgcHJlc2VudCBhbmQgU2FtZVZh
bHVlKERlc2MuW1tHZXRdXSwgY3VycmVudC5bW0dldF1dKSBpcyBmYWxzZS4KICAgICAgICAgICAg
ICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5nZXR0ZXIo
KSAhPSBjdXJyZW50LmdldHRlcigpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBj
aGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iX3MpOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRo
cm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdGhlIGdldHRlciBvZiBhbiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iX3N0cik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CkBAIC0zNzcxLDkgKzM3NzEsOSBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURl
c2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqCiAgICAgICAg
IEFTU0VSVChkZXNjcmlwdG9yLmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkpOwogICAgICAgICBpZiAo
IWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmIChkZXNjcmlwdG9yLnNl
dHRlclByZXNlbnQoKSAmJiBkZXNjcmlwdG9yLnNldHRlcigpICE9IGN1cnJlbnQuc2V0dGVyKCkp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0
aHJvd0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBzZXR0ZXIgb2YgYW4gdW5j
b25maWd1cmFibGUgcHJvcGVydHkuIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIHRocm93RXhjZXB0aW9uLCAiQXR0ZW1wdGluZyB0byBj
aGFuZ2UgdGhlIHNldHRlciBvZiBhbiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iX3N0cik7CiAg
ICAgICAgICAgICBpZiAoZGVzY3JpcHRvci5nZXR0ZXJQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5n
ZXR0ZXIoKSAhPSBjdXJyZW50LmdldHRlcigpKQotICAgICAgICAgICAgICAgIHJldHVybiB0eXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgdGhyb3dFeGNlcHRpb24sICJBdHRlbXB0aW5nIHRv
IGNoYW5nZSB0aGUgZ2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiJfcyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCB0aHJv
d0V4Y2VwdGlvbiwgIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25m
aWd1cmFibGUgcHJvcGVydHkuIl9zdHIpOwogCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZmEzMzM4MmVmYzgzYzA1ZjE5
NWQ1NGJlNmY0NTA4NDNjMTBhZjUyMS4uODE4ODMyOWE5ZTkxOWUwZWRlNzU2ZWViMTdiZWI1NmY3
NTY0NTM5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCkBAIC00Myw3ICs0Myw3IEBAIGNv
bnN0IENsYXNzSW5mbyBKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1
bmN0aW9uIiwgJkJhc2U6OnNfaW5mCiAKIHZvaWQgSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VHlwZWRBcnJheVZpZXdQcm90b3R5cGUqIHByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKiBzcGVjaWVz
U3ltYm9sKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiVHlwZWRBcnJheSJf
cywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlR5cGVkQXJyYXkiX3N0ciwgUHJvcGVydHlB
ZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5
cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAgICBwdXREaXJlY3ROb25J
bmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnNwZWNp
ZXNTeW1ib2wsIHNwZWNpZXNTeW1ib2wsIFByb3BlcnR5QXR0cmlidXRlOjpBY2Nlc3NvciB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiAKQEAgLTYxLDcgKzYxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFR5
cGVkQXJyYXlWaWV3LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIHsKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICIlVHlwZWRBcnJheSUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiX3MpOworICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICIlVHlwZWRBcnJh
eSUgc2hvdWxkIG5vdCBiZSBjYWxsZWQgZGlyZWN0bHkiX3N0cik7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBl
ZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcAppbmRleCA4ODI3YjNkZTk4ZmUwNWZlNThiOTE3
MDQyOWUzODY0OTk1ZTE5ZjU4Li45NzFjZWU5MjQ1MGVjZDFkMWZiOWM1YjBlNGExYWQwNDIzZmU3
YjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcApAQCAtODEsNyArODEsNyBAQCBzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3Ry
aW5nVGFnKTsKICAgICBjYXNlIE5vdFR5cGVkQXJyYXk6ICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBj
YXNlIFR5cGVEYXRhVmlldzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICJSZWNlaXZlciBzaG91bGQgYmUgYSB0
eXBlZCBhcnJheSB2aWV3Il9zKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFwKKyAgICAgICAgICAgICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3
Il9zdHIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB9ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKIH0gd2hpbGUgKGZhbHNlKQpAQCAtMTY3LDEyICsxNjcsMTIgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmEKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7
CiAgICAgaWYgKCFhcmd1bWVudC5pc0NlbGwoKSB8fCAhaXNUeXBlZFZpZXcoYXJndW1lbnQuYXND
ZWxsKCktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91
bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXciX3N0cik7CiAKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KGFyZ3VtZW50KTsKIAogICAgIGlmICh0aGlzT2JqZWN0
LT5pc0RldGFjaGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJVbmRlcmx5aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZy
b20gdGhlIHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBm
cm9tIHRoZSB2aWV3Il9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cih0aGlzT2JqZWN0LT5sZW5ndGgoKSkpOwogfQpAQCAtMTgzLDcgKzE4Myw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jQ29udGVudFR5cGUsIChK
U0dsb2JhbE9iamVjdCoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSBhcmd1bWVudCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KCFhcmd1bWVudC5pc0NlbGwoKSB8fCAhaXNUeXBlZFZpZXcoYXJndW1lbnQuYXNDZWxsKCktPmNs
YXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9yYWdlVHlwZSkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0
eXBlZCBhcnJheSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXci
X3N0cik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihzdGF0aWNfY2FzdDxp
bnQzMl90Pihjb250ZW50VHlwZShhcmd1bWVudC5hc0NlbGwoKS0+Y2xhc3NJbmZvKHZtKS0+dHlw
ZWRBcnJheVN0b3JhZ2VUeXBlKSkpKTsKIH0KIApAQCAtMjAxLDEyICsyMDEsMTIgQEAgaW5saW5l
IEVuY29kZWRKU1ZhbHVlIGNyZWF0ZVR5cGVkQXJyYXlJdGVyYXRvck9iamVjdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWMKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAKICAgICBpZiAoIWNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkuaXNDZWxsKCkgfHwgIWlzVHlw
ZWRBcnJheVR5cGUoY2FsbEZyYW1lLT50aGlzVmFsdWUoKS5hc0NlbGwoKS0+dHlwZSgpKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2Vp
dmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyJfc3RyKTsKIAogICAgIEpTQXJyYXlCdWZmZXJWaWV3KiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CiAKICAgICBpZiAodGhpc09iamVjdC0+aXNEZXRhY2hlZCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZl
ciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3Il9zKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuZGVybHlpbmcgQXJyYXlCdWZm
ZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyJfc3RyKTsKIAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+
YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpLCB0aGlzT2JqZWN0LCBqc051bWJlcihzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oa2luZCkpKSk7CiB9CkBAIC0yNDEsNyArMjQxLDcgQEAgSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0LCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamUKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmIChV
TkxJS0VMWSghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3N0cik7CiAgICAgc2NvcGUu
cmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElP
TihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQpOwogfQpAQCAtMjUyLDcgKzI1Miw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0NvcHlX
aXRoaW4sIChKU0dsb2JhbE9iamVjdCogZ2xvCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFs
dWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxk
IGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3N0cik7CiAgICAg
c2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9G
VU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKTsKIH0KQEAg
LTI3NCw3ICsyNzQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNMYXN0SW5kZXhPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbAogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVy
IHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJl
Y2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0
Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJB
WV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdElu
ZGV4T2YpOwogfQpAQCAtMjg1LDcgKzI4NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0
eXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09i
amVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBh
biBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2Fz
IG5vdCBhbiBvYmplY3QiX3N0cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VO
RVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNJbmRleE9mKTsKIH0KQEAgLTI5Niw3ICsyOTYsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iagogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0
IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZp
ZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAg
ICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jSm9pbik7CiB9CkBAIC0zMDcsNyArMzA3LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jRmlsbCwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmoKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2
aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBh
cnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfc3RyKTsKICAgICBzY29wZS5yZWxlYXNl
KCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0ZpbGwpOwogfQpAQCAtMzE4LDcgKzMxOCw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZl
ciwgKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQg
YXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3N0cik7CiAgICAgc2NvcGUu
cmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElP
TihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIpOwogfQpAQCAtMzI5
LDcgKzMyOSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5Vmlld1Byb3Rv
R2V0dGVyRnVuY0xlbmd0aCwgKEpTR2xvYmFsT2JqZWN0KiBnCiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2FsbEZyYW1l
LT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2ZXIgc2hv
dWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2
ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3N0
cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BS
T1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5n
dGgpOwogfQpAQCAtMzQwLDcgKzM0MCw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBl
ZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgsIChKU0dsb2JhbE9iamVjCiAgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1Zh
bHVlID0gY2FsbEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVj
dCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBv
YmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5v
dCBhbiBvYmplY3QiX3N0cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJ
Q19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b0dldHRlckZ1bmNCeXRlTGVuZ3RoKTsKIH0KQEAgLTM1MSw3ICszNTEsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04odHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0LCAo
SlNHbG9iYWxPYmplYwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZp
ZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFy
cmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2Uo
KTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJp
Y1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZU9mZnNldCk7CiB9CkBAIC0zNjIsNyAr
MzYyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
UmV2ZXJzZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBzaG91bGQg
YmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWNlaXZlciBz
aG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCJfc3RyKTsK
ICAgICBzY29wZS5yZWxlYXNlKCk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9U
WVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UpOwogfQpA
QCAtMzczLDcgKzM3Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0eXBlZEFycmF5Vmll
d1ByaXZhdGVGdW5jU3ViYXJyYXlDcmVhdGUsIChKU0dsb2JhbE9iamVjCiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVjZWl2
ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmpl
Y3QiX3N0cik7CiAgICAgc2NvcGUucmVsZWFzZSgpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFS
UkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY1N1
YmFycmF5Q3JlYXRlKTsKIH0KQEAgLTM4NCw3ICszODQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBKU1Zh
bHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFs
dWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdh
cyBub3QgYW4gb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0Il9zdHIpOwogICAgIHNjb3BlLnJlbGVhc2UoKTsKICAgICBD
QUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG9GdW5jU2xpY2UpOwogfQpAQCAtMzk4LDI3ICszOTgsMjcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jVG9TdHJpbmdUYWcs
IChKU0dsb2JhbE9iamUKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgc3dp
dGNoICh0aGlzVmFsdWUuZ2V0T2JqZWN0KCktPmNsYXNzSW5mbyh2bSktPnR5cGVkQXJyYXlTdG9y
YWdlVHlwZSkgewogICAgIGNhc2UgVHlwZVVpbnQ4Q2xhbXBlZDoKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJVaW50OENsYW1wZWRBcnJheSJf
cykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIlVpbnQ4Q2xhbXBlZEFycmF5Il9zdHIpKTsKICAgICBjYXNlIFR5cGVJbnQzMjoKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJJbnQzMkFy
cmF5Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3Ry
aW5nKHZtLCAiSW50MzJBcnJheSJfc3RyKSk7CiAgICAgY2FzZSBUeXBlVWludDMyOgotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlVpbnQzMkFy
cmF5Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVWludDMyQXJyYXkiX3N0cikpOwogICAgIGNhc2UgVHlwZUZsb2F0NjQ6Ci0gICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCAiRmxvYXQ2
NEFycmF5Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFs
U3RyaW5nKHZtLCAiRmxvYXQ2NEFycmF5Il9zdHIpKTsKICAgICBjYXNlIFR5cGVGbG9hdDMyOgot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkZs
b2F0MzJBcnJheSJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgIkZsb2F0MzJBcnJheSJfc3RyKSk7CiAgICAgY2FzZSBUeXBlSW50ODoK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJJ
bnQ4QXJyYXkiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJJbnQ4QXJyYXkiX3N0cikpOwogICAgIGNhc2UgVHlwZVVpbnQ4OgotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlVpbnQ4
QXJyYXkiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJVaW50OEFycmF5Il9zdHIpKTsKICAgICBjYXNlIFR5cGVJbnQxNjoKLSAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICJJbnQxNkFy
cmF5Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3Ry
aW5nKHZtLCAiSW50MTZBcnJheSJfc3RyKSk7CiAgICAgY2FzZSBUeXBlVWludDE2OgotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlVpbnQxNkFy
cmF5Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVWludDE2QXJyYXkiX3N0cikpOwogICAgIGNhc2UgVHlwZUJpZ0ludDY0OgotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkJpZ0lu
dDY0QXJyYXkiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJCaWdJbnQ2NEFycmF5Il9zdHIpKTsKICAgICBjYXNlIFR5cGVCaWdVaW50
NjQ6Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZt
LCAiQmlnVWludDY0QXJyYXkiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJCaWdVaW50NjRBcnJheSJfc3RyKSk7CiAgICAgY2FzZSBO
b3RUeXBlZEFycmF5OgogICAgIGNhc2UgVHlwZURhdGFWaWV3OgogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDc3LDcgKzQ3Nyw3IEBAIHZvaWQgSlNU
eXBlZEFycmF5Vmlld1Byb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqCiAgICAgaWYgKE9wdGlvbnM6OnVzZUF0TWV0aG9kKCkpCiAgICAgICAg
IEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTih2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5hdFB1YmxpY05hbWUoKSwgdHlwZWRBcnJheVByb3RvdHlwZUF0Q29k
ZUdlbmVyYXRvciwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogCi0gICAgSlNGdW5jdGlvbiogdG9TdHJpbmdUYWdGdW5jdGlvbiA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWdd
Il9zLCB0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY1RvU3RyaW5nVGFnLCBOb0ludHJpbnNp
Yyk7CisgICAgSlNGdW5jdGlvbiogdG9TdHJpbmdUYWdGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCAwLCAiZ2V0IFtTeW1ib2wudG9TdHJpbmdUYWddIl9zdHIs
IHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jVG9TdHJpbmdUYWcsIE5vSW50cmluc2ljKTsK
ICAgICBHZXR0ZXJTZXR0ZXIqIHRvU3RyaW5nVGFnQWNjZXNzb3IgPSBHZXR0ZXJTZXR0ZXI6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCB0b1N0cmluZ1RhZ0Z1bmN0aW9uLCBudWxscHRyKTsKICAg
ICBwdXREaXJlY3ROb25JbmRleEFjY2Vzc29yV2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnRvU3RyaW5nVGFnU3ltYm9sLCB0b1N0cmluZ1RhZ0FjY2Vzc29yLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0xpdGVyYWxQYXJzZXIuY3BwCmluZGV4IDQxMmUyNThhYjA5NTlmMThiMzJkYTk5MWRi
M2Y5NjA0ZjI5OGI3ZjQuLjUzNzMxZjdlMzUyZjU2MmRlMzRiMWZhNTUzZjYzMzY1MTVjNWI1OWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0xpdGVyYWxQYXJzZXIuY3Bw
CkBAIC03MjgsNyArNzI4LDcgQEAgQUxXQVlTX0lOTElORSBUb2tlblR5cGUgTGl0ZXJhbFBhcnNl
cjxDaGFyVHlwZT46OkxleGVyOjpsZXgoTGl0ZXJhbFBhcnNlclRva2VuPEMKICAgICAgICAgc3dp
dGNoICh0b2tlblR5cGUpIHsKICAgICAgICAgY2FzZSBUb2tTdHJpbmc6CiAgICAgICAgICAgICBp
ZiAoVU5MSUtFTFkoY2hhcmFjdGVyID09ICdcJycgJiYgbV9tb2RlID09IFN0cmljdEpTT04pKSB7
Ci0gICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiU2luZ2xlIHF1b3RlcyAoXCcp
IGFyZSBub3QgYWxsb3dlZCBpbiBKU09OIl9zOworICAgICAgICAgICAgICAgIG1fbGV4RXJyb3JN
ZXNzYWdlID0gIlNpbmdsZSBxdW90ZXMgKFwnKSBhcmUgbm90IGFsbG93ZWQgaW4gSlNPTiJfc3Ry
OwogICAgICAgICAgICAgICAgIHJldHVybiBUb2tFcnJvcjsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIHJldHVybiBsZXhTdHJpbmcodG9rZW4sIGNoYXJhY3Rlcik7CkBAIC05MTAsNyArOTEw
LDcgQEAgc2xvd1BhdGhCZWdpbjoKICAgICAgICAgICAgICAgICBtX2J1aWxkZXIuYXBwZW5kQ2hh
cmFjdGVycyhydW5TdGFydCwgbV9wdHIgLSBydW5TdGFydCk7CiAgICAgICAgICAgICArK21fcHRy
OwogICAgICAgICAgICAgaWYgKG1fcHRyID49IG1fZW5kKSB7Ci0gICAgICAgICAgICAgICAgbV9s
ZXhFcnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmluZyJfczsKKyAgICAgICAgICAgICAg
ICBtX2xleEVycm9yTWVzc2FnZSA9ICJVbnRlcm1pbmF0ZWQgc3RyaW5nIl9zdHI7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dp
dGNoICgqbV9wdHIpIHsKQEAgLTk0OSw3ICs5NDksNyBAQCBzbG93UGF0aEJlZ2luOgogCiAgICAg
ICAgICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgICAgICAgICAgICAgIGlmICgobV9lbmQgLSBt
X3B0cikgPCA1KSB7IAotICAgICAgICAgICAgICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2Ug
PSAiXFx1IG11c3QgYmUgZm9sbG93ZWQgYnkgNCBoZXggZGlnaXRzIl9zOworICAgICAgICAgICAg
ICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiXFx1IG11c3QgYmUgZm9sbG93ZWQgYnkg
NCBoZXggZGlnaXRzIl9zdHI7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVG9rRXJy
b3I7CiAgICAgICAgICAgICAgICAgICAgIH0gLy8gdU5OTk4gPT0gNSBjaGFyYWN0ZXJzCiAgICAg
ICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgNTsgaSsrKSB7CkBAIC05NzUsNyAr
OTc1LDcgQEAgc2xvd1BhdGhCZWdpbjoKICAgICB9IHdoaWxlICgobV9tb2RlICE9IE5vblN0cmlj
dEpTT04pICYmIG1fcHRyICE9IHJ1blN0YXJ0ICYmIChtX3B0ciA8IG1fZW5kKSAmJiAqbV9wdHIg
IT0gdGVybWluYXRvcik7CiAKICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgKm1fcHRyICE9IHRl
cm1pbmF0b3IpIHsKLSAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0
cmluZyJfczsKKyAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiVW50ZXJtaW5hdGVkIHN0cmlu
ZyJfc3RyOwogICAgICAgICByZXR1cm4gVG9rRXJyb3I7CiAgICAgfQogCkBAIC0xMDI2LDcgKzEw
MjYsNyBAQCBUb2tlblR5cGUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OkxleGVyOjpsZXhOdW1i
ZXIoTGl0ZXJhbFBhcnNlclRva2VuPENoYXJUeXBlPgogICAgICAgICB3aGlsZSAobV9wdHIgPCBt
X2VuZCAmJiBpc0FTQ0lJRGlnaXQoKm1fcHRyKSkKICAgICAgICAgICAgICsrbV9wdHI7CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiSW52YWxpZCBudW1iZXIiX3M7
CisgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdlID0gIkludmFsaWQgbnVtYmVyIl9zdHI7CiAgICAg
ICAgIHJldHVybiBUb2tFcnJvcjsKICAgICB9CiAKQEAgLTEwMzYsNyArMTAzNiw3IEBAIFRva2Vu
VHlwZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleE51bWJlcihMaXRlcmFsUGFy
c2VyVG9rZW48Q2hhclR5cGU+CiAgICAgICAgICsrbV9wdHI7CiAgICAgICAgIC8vIFswLTldKwog
ICAgICAgICBpZiAobV9wdHIgPj0gbV9lbmQgfHwgIWlzQVNDSUlEaWdpdCgqbV9wdHIpKSB7Ci0g
ICAgICAgICAgICBtX2xleEVycm9yTWVzc2FnZSA9ICJJbnZhbGlkIGRpZ2l0cyBhZnRlciBkZWNp
bWFsIHBvaW50Il9zOworICAgICAgICAgICAgbV9sZXhFcnJvck1lc3NhZ2UgPSAiSW52YWxpZCBk
aWdpdHMgYWZ0ZXIgZGVjaW1hbCBwb2ludCJfc3RyOwogICAgICAgICAgICAgcmV0dXJuIFRva0Vy
cm9yOwogICAgICAgICB9CiAKQEAgLTEwNzksNyArMTA3OSw3IEBAIFRva2VuVHlwZSBMaXRlcmFs
UGFyc2VyPENoYXJUeXBlPjo6TGV4ZXI6OmxleE51bWJlcihMaXRlcmFsUGFyc2VyVG9rZW48Q2hh
clR5cGU+CiAKICAgICAgICAgLy8gWzAtOV0rCiAgICAgICAgIGlmIChtX3B0ciA+PSBtX2VuZCB8
fCAhaXNBU0NJSURpZ2l0KCptX3B0cikpIHsKLSAgICAgICAgICAgIG1fbGV4RXJyb3JNZXNzYWdl
ID0gIkV4cG9uZW50IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxvd2VkIGJ5IGFuIG9wdGlvbmFsICcr
JyBvciAnLScgYW5kIHRoZW4gYnkgYXQgbGVhc3Qgb25lIG51bWJlciJfczsKKyAgICAgICAgICAg
IG1fbGV4RXJyb3JNZXNzYWdlID0gIkV4cG9uZW50IHN5bWJvbHMgc2hvdWxkIGJlIGZvbGxvd2Vk
IGJ5IGFuIG9wdGlvbmFsICcrJyBvciAnLScgYW5kIHRoZW4gYnkgYXQgbGVhc3Qgb25lIG51bWJl
ciJfc3RyOwogICAgICAgICAgICAgcmV0dXJuIFRva0Vycm9yOwogICAgICAgICB9CiAgICAgICAg
IApAQCAtMTEwMCwxMyArMTEwMCwxMyBAQCB2b2lkIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+Ojpz
ZXRFcnJvck1lc3NhZ2VGb3JUb2tlbihUb2tlblR5cGUgdG9rZW5UeXBlKQogewogICAgIHN3aXRj
aCAodG9rZW5UeXBlKSB7CiAgICAgY2FzZSBUb2tSQnJhY2U6Ci0gICAgICAgIG1fcGFyc2VFcnJv
ck1lc3NhZ2UgPSAiRXhwZWN0ZWQgJ30nIl9zOworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdl
ID0gIkV4cGVjdGVkICd9JyJfc3RyOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFRva1JCcmFj
a2V0OgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICddJyJfczsKKyAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJFeHBlY3RlZCAnXSciX3N0cjsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBUb2tDb2xvbjoKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJFeHBlY3RlZCAnOicgYmVmb3JlIHZhbHVlIGluIG9iamVjdCBwcm9wZXJ0eSBkZWZpbml0aW9u
Il9zOworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkV4cGVjdGVkICc6JyBiZWZvcmUg
dmFsdWUgaW4gb2JqZWN0IHByb3BlcnR5IGRlZmluaXRpb24iX3N0cjsKICAgICAgICAgYnJlYWs7
CiAgICAgZGVmYXVsdDogewogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpA
QCAtMTEzOCwxMCArMTEzOCwxMCBAQCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgTGl0ZXJhbFBhcnNl
cjxDaGFyVHlwZT46OnBhcnNlUHJpbWl0aXZlVmFsdWUoVk0mIHZtKQogICAgICAgICBtX2xleGVy
Lm5leHQoKTsKICAgICAgICAgcmV0dXJuIGpzQm9vbGVhbihmYWxzZSk7CiAgICAgY2FzZSBUb2tS
QnJhY2tldDoKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICddJyJfczsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICddJyJfc3RyOwogICAgICAgICByZXR1cm4geyB9OwogICAgIGNhc2UgVG9rUkJyYWNlOgotICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIl9zOworICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIl9zdHI7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgY2FzZSBUb2tJZGVudGlmaWVyOiB7CiAgICAgICAgIGF1
dG8gdG9rZW4gPSBtX2xleGVyLmN1cnJlbnRUb2tlbigpOwpAQCAtMTE2OCwzMyArMTE2OCwzMyBA
QCBBTFdBWVNfSU5MSU5FIEpTVmFsdWUgTGl0ZXJhbFBhcnNlcjxDaGFyVHlwZT46OnBhcnNlUHJp
bWl0aXZlVmFsdWUoVk0mIHZtKQogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBjYXNl
IFRva0NvbG9uOgotICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9r
ZW4gJzonIl9zOworICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9r
ZW4gJzonIl9zdHI7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgY2FzZSBUb2tMUGFyZW46Ci0g
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKCciX3M7Cisg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKCciX3N0cjsK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBjYXNlIFRva1JQYXJlbjoKLSAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcpJyJfczsKKyAgICAgICAgbV9wYXJz
ZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcpJyJfc3RyOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIGNhc2UgVG9rQ29tbWE6Ci0gICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAnLCciX3M7CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAnLCciX3N0cjsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBj
YXNlIFRva0RvdDoKLSAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRv
a2VuICcuJyJfczsKKyAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRv
a2VuICcuJyJfc3RyOwogICAgICAgICByZXR1cm4geyB9OwogICAgIGNhc2UgVG9rQXNzaWduOgot
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIl9zOwor
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJz0nIl9zdHI7
CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgY2FzZSBUb2tTZW1pOgotICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIl9zOworICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIl9zdHI7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgY2FzZSBUb2tFbmQ6Ci0gICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAi
VW5leHBlY3RlZCBFT0YiX3M7CisgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBl
Y3RlZCBFT0YiX3N0cjsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBjYXNlIFRva0Vycm9yOgog
ICAgIGRlZmF1bHQ6CiAgICAgICAgIC8vIEVycm9yCi0gICAgICAgIG1fcGFyc2VFcnJvck1lc3Nh
Z2UgPSAiQ291bGQgbm90IHBhcnNlIHZhbHVlIGV4cHJlc3Npb24iX3M7CisgICAgICAgIG1fcGFy
c2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBhcnNlIHZhbHVlIGV4cHJlc3Npb24iX3N0cjsK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiB9CkBAIC0xMjI0LDcgKzEyMjQsNyBAQCBKU1Zh
bHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0aWFsU3Rh
dGUpCiAgICAgICAgICAgICBUb2tlblR5cGUgbGFzdFRva2VuID0gbV9sZXhlci5jdXJyZW50VG9r
ZW4oKS0+dHlwZTsKICAgICAgICAgICAgIGlmIChtX2xleGVyLm5leHQoKSA9PSBUb2tSQnJhY2tl
dCkgewogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShsYXN0VG9rZW4gPT0gVG9rQ29tbWEp
KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3Rl
ZCBjb21tYSBhdCB0aGUgZW5kIG9mIGFycmF5IGV4cHJlc3Npb24iX3M7CisgICAgICAgICAgICAg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBjb21tYSBhdCB0aGUgZW5k
IG9mIGFycmF5IGV4cHJlc3Npb24iX3N0cjsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbV9sZXhlci5uZXh0KCk7CkBA
IC0xMjg0LDcgKzEyODQsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJz
ZShQYXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAKICAgICAgICAgICAgICAgICAgICAgaWYgKG1f
bW9kZSAhPSBTdHJpY3RKU09OICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2Nv
cmVQcm90bykgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFVOTElLRUxZKCF2aXNpdGVk
VW5kZXJzY29yZVByb3RvLmFkZChvYmplY3QpLmlzTmV3RW50cnkpKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJBdHRlbXB0ZWQgdG8gcmVkZWZp
bmUgX19wcm90b19fIHByb3BlcnR5Il9zOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiQXR0ZW1wdGVkIHRvIHJlZGVmaW5lIF9fcHJvdG9fXyBwcm9w
ZXJ0eSJfc3RyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpIDogZmFsc2UpOwpAQCAtMTMw
Myw3ICsxMzAzLDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2UoUGFy
c2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogCiAgICAgICAgICAgICAgICAgICAgIG5leHRUeXBlID0g
bV9sZXhlci5uZXh0KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShuZXh0VHlw
ZSAhPSBUb2tTdHJpbmcgJiYgKG1fbW9kZSA9PSBTdHJpY3RKU09OIHx8IG5leHRUeXBlICE9IFRv
a0lkZW50aWZpZXIpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9ICJQcm9wZXJ0eSBuYW1lIG11c3QgYmUgYSBzdHJpbmcgbGl0ZXJhbCJfczsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiUHJvcGVydHkgbmFtZSBt
dXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwiX3N0cjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0x
MzMwLDcgKzEzMzAsNyBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQ
YXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgIGNhc2UgRG9QYXJzZU9iamVjdFN0YXJ0
RXhwcmVzc2lvbjogewogICAgICAgICAgICAgVG9rZW5UeXBlIHR5cGUgPSBtX2xleGVyLm5leHQo
KTsKICAgICAgICAgICAgIGlmIChVTkxJS0VMWSh0eXBlICE9IFRva1N0cmluZyAmJiAobV9tb2Rl
ID09IFN0cmljdEpTT04gfHwgdHlwZSAhPSBUb2tJZGVudGlmaWVyKSkpIHsKLSAgICAgICAgICAg
ICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlByb3BlcnR5IG5hbWUgbXVzdCBiZSBhIHN0cmlu
ZyBsaXRlcmFsIl9zOworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiUHJv
cGVydHkgbmFtZSBtdXN0IGJlIGEgc3RyaW5nIGxpdGVyYWwiX3N0cjsKICAgICAgICAgICAgICAg
ICByZXR1cm4geyB9OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWRlbnRpZmllclN0YWNr
LmFwcGVuZChtYWtlSWRlbnRpZmllcih2bSwgbV9sZXhlci5jdXJyZW50VG9rZW4oKSkpOwpAQCAt
MTM1MSw3ICsxMzUxLDcgQEAgSlNWYWx1ZSBMaXRlcmFsUGFyc2VyPENoYXJUeXBlPjo6cGFyc2Uo
UGFyc2VyU3RhdGUgaW5pdGlhbFN0YXRlKQogICAgICAgICAgICAgSWRlbnRpZmllciBpZGVudCA9
IGlkZW50aWZpZXJTdGFjay50YWtlTGFzdCgpOwogICAgICAgICAgICAgaWYgKG1fbW9kZSAhPSBT
dHJpY3RKU09OICYmIGlkZW50ID09IHZtLnByb3BlcnR5TmFtZXMtPnVuZGVyc2NvcmVQcm90bykg
ewogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWSghdmlzaXRlZFVuZGVyc2NvcmVQcm90by5h
ZGQob2JqZWN0KS5pc05ld0VudHJ5KSkgewotICAgICAgICAgICAgICAgICAgICBtX3BhcnNlRXJy
b3JNZXNzYWdlID0gIkF0dGVtcHRlZCB0byByZWRlZmluZSBfX3Byb3RvX18gcHJvcGVydHkiX3M7
CisgICAgICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiQXR0ZW1wdGVkIHRv
IHJlZGVmaW5lIF9fcHJvdG9fXyBwcm9wZXJ0eSJfc3RyOwogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBQdXRQcm9wZXJ0
eVNsb3Qgc2xvdChvYmplY3QsIG1fbnVsbE9yQ29kZUJsb2NrID8gbV9udWxsT3JDb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpLT5pc0luU3RyaWN0Q29udGV4dCgpIDogZmFsc2UpOwpAQCAtMTQw
Myw1MCArMTQwMyw1MCBAQCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQ
YXJzZXJTdGF0ZSBpbml0aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgZ290byBzdGFydFBhcnNl
RXhwcmVzc2lvbjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgVG9rUkJyYWNrZXQ6
Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICddJyJfczsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0
ZWQgdG9rZW4gJ10nIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAg
ICAgIGNhc2UgVG9rTEJyYWNlOgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2Ug
PSAiVW5leHBlY3RlZCB0b2tlbiAneyciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9y
TWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICd7JyJfc3RyOwogICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgICAgICAgICBjYXNlIFRva1JCcmFjZToKLSAgICAgICAgICAgICAgICBt
X3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ30nIl9zOworICAgICAgICAg
ICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnfSciX3N0cjsK
ICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2FzZSBUb2tJZGVudGlm
aWVyOgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBp
ZGVudGlmaWVyIl9zOworICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5l
eHBlY3RlZCBpZGVudGlmaWVyIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgICAgIGNhc2UgVG9rQ29sb246Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICc6JyJfczsKKyAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzonIl9zdHI7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIGNhc2UgVG9rUlBhcmVuOgotICAgICAgICAgICAg
ICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tlbiAnKSciX3M7CisgICAg
ICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcpJyJf
c3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAgICAgICBjYXNlIFRva0Nv
bW1hOgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0
b2tlbiAnLCciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4
cGVjdGVkIHRva2VuICcsJyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAg
ICAgICAgICBjYXNlIFRva1RydWU6Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2Fn
ZSA9ICJVbmV4cGVjdGVkIHRva2VuICd0cnVlJyJfczsKKyAgICAgICAgICAgICAgICBtX3BhcnNl
RXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJ3RydWUnIl9zdHI7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIGNhc2UgVG9rRmFsc2U6Ci0gICAgICAgICAg
ICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICdmYWxzZSciX3M7
CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2Vu
ICdmYWxzZSciX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAg
Y2FzZSBUb2tOdWxsOgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5l
eHBlY3RlZCB0b2tlbiAnbnVsbCciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVz
c2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICdudWxsJyJfc3RyOwogICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgICAgICAgICBjYXNlIFRva0VuZDoKLSAgICAgICAgICAgICAgICBtX3Bh
cnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgRU9GIl9zOworICAgICAgICAgICAgICAgIG1f
cGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBFT0YiX3N0cjsKICAgICAgICAgICAgICAg
ICByZXR1cm4geyB9OwogICAgICAgICAgICAgY2FzZSBUb2tEb3Q6Ci0gICAgICAgICAgICAgICAg
bV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVjdGVkIHRva2VuICcuJyJfczsKKyAgICAgICAg
ICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJy4nIl9zdHI7
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIGNhc2UgVG9rQXNzaWdu
OgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCB0b2tl
biAnPSciX3M7CisgICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9ICJVbmV4cGVj
dGVkIHRva2VuICc9JyJfc3RyOwogICAgICAgICAgICAgICAgIHJldHVybiB7IH07CiAgICAgICAg
ICAgICBjYXNlIFRva1NlbWk6Ci0gICAgICAgICAgICAgICAgbV9wYXJzZUVycm9yTWVzc2FnZSA9
ICJVbmV4cGVjdGVkIHRva2VuICc7JyJfczsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JN
ZXNzYWdlID0gIlVuZXhwZWN0ZWQgdG9rZW4gJzsnIl9zdHI7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKICAgICAgICAgICAgIGNhc2UgVG9rRXJyb3I6CiAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiQ291bGQgbm90IHBhcnNl
IHN0YXRlbWVudCJfczsKKyAgICAgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNzYWdlID0gIkNv
dWxkIG5vdCBwYXJzZSBzdGF0ZW1lbnQiX3N0cjsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CkBAIC0xNDU3LDcgKzE0NTcsNyBA
QCBKU1ZhbHVlIExpdGVyYWxQYXJzZXI8Q2hhclR5cGU+OjpwYXJzZShQYXJzZXJTdGF0ZSBpbml0
aWFsU3RhdGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAgICAgICAgICAgIGlmICht
X2xleGVyLm5leHQoKSA9PSBUb2tFbmQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RWYWx1
ZTsKLSAgICAgICAgICAgIG1fcGFyc2VFcnJvck1lc3NhZ2UgPSAiVW5leHBlY3RlZCBjb250ZW50
IGF0IGVuZCBvZiBKU09OIGxpdGVyYWwiX3M7CisgICAgICAgICAgICBtX3BhcnNlRXJyb3JNZXNz
YWdlID0gIlVuZXhwZWN0ZWQgY29udGVudCBhdCBlbmQgb2YgSlNPTiBsaXRlcmFsIl9zdHI7CiAg
ICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgICAgIGRlZmF1bHQ6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9MaXRlcmFsUGFyc2VyLmgKaW5kZXggMmUyYWIw
MjVkYmQxYjkzNmIzMzBlNTY3ZmViODI1MTEyNTUxMTllOC4uMWEzZGU0YzdmNzE4ODA1NjFlMzBh
OWY5Njk5NTNkNGFiM2RhNWJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvTGl0ZXJhbFBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0xpdGVyYWxQYXJzZXIuaApAQCAtMTA5LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
IHJldHVybiAiSlNPTiBQYXJzZSBlcnJvcjogIiArIG1fbGV4ZXIuZ2V0RXJyb3JNZXNzYWdlKCk7
CiAgICAgICAgIGlmICghbV9wYXJzZUVycm9yTWVzc2FnZS5pc0VtcHR5KCkpCiAgICAgICAgICAg
ICByZXR1cm4gIkpTT04gUGFyc2UgZXJyb3I6ICIgKyBtX3BhcnNlRXJyb3JNZXNzYWdlOwotICAg
ICAgICByZXR1cm4gIkpTT04gUGFyc2UgZXJyb3I6IFVuYWJsZSB0byBwYXJzZSBKU09OIHN0cmlu
ZyJfczsKKyAgICAgICAgcmV0dXJuICJKU09OIFBhcnNlIGVycm9yOiBVbmFibGUgdG8gcGFyc2Ug
SlNPTiBzdHJpbmciX3N0cjsKICAgICB9CiAgICAgCiAgICAgSlNWYWx1ZSB0cnlMaXRlcmFsUGFy
c2UoKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IGU1YTI4OTg2NzU4NDgyOWZlYTIxNDFmOTY4ODI0OTUwNjA4Y2I3OGIuLmJlYmQz
YWRhMmJmY2Q1MTRmMWRlM2M4ZGVhYTE3ZDE4ZGU2MjYyMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9NYXBDb25zdHJ1Y3Rvci5jcHAKQEAgLTM3LDcgKzM3LDcgQEAg
Y29uc3QgQ2xhc3NJbmZvIE1hcENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG4KIAogdm9pZCBNYXBDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtLCBNYXBQcm90b3R5cGUqIG1hcFByb3RvdHlwZSwgR2V0dGVyU2V0dGVyKiBz
cGVjaWVzU3ltYm9sKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiTWFwIl9z
LCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiTWFwIl9zdHIsIFByb3BlcnR5QWRkaXRpb25N
b2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgbWFwUHJvdG90eXBlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgcHV0RGlyZWN0Tm9uSW5kZXhB
Y2Nlc3NvcldpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3lt
Ym9sLCBzcGVjaWVzU3ltYm9sLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6QWNjZXNzb3IgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogfQpA
QCAtODcsNyArODcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0TWFwLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKgogCiAgICAgICAgIGFkZGVy
RnVuY3Rpb25DYWxsRGF0YSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uKTsKICAgICAg
ICAgaWYgKFVOTElLRUxZKGFkZGVyRnVuY3Rpb25DYWxsRGF0YS50eXBlID09IENhbGxEYXRhOjpU
eXBlOjpOb25lKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICInc2V0JyBwcm9wZXJ0eSBvZiBhIE1hcCBzaG91bGQgYmUgY2FsbGFibGUu
Il9zKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICInc2V0JyBwcm9wZXJ0eSBvZiBhIE1hcCBzaG91bGQgYmUgY2FsbGFibGUuIl9zdHIp
OwogICAgIH0KIAogICAgIHNjb3BlLnJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9NYXBQcm90b3R5cGUuY3BwCmluZGV4IDkzZWJlMDAzYzQ3MmJjODk0M2E4NThk
YTgzNTM0ZjJiYjdhMTgwNmUuLjQ0YTExNjNlNGY4NWZjMDAyOWU0ZTg2MmZkNmI4ZDhlNzAzZDUz
NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL01hcFByb3RvdHlw
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWFwUHJvdG90eXBlLmNw
cApAQCAtOTMsNyArOTMsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU01hcCogZ2V0TWFwKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGhpc1ZhbAogICAgIGF1dG8qIG1h
cCA9IGpzRHluYW1pY0Nhc3Q8SlNNYXAqPih2bSwgdGhpc1ZhbHVlLmFzQ2VsbCgpKTsKICAgICBp
ZiAoTElLRUxZKG1hcCkpCiAgICAgICAgIHJldHVybiBtYXA7Ci0gICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIk1hcCBvcGVyYXRpb24gY2FsbGVkIG9uIG5vbi1NYXAgb2Jq
ZWN0Il9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiTWFwIG9w
ZXJhdGlvbiBjYWxsZWQgb24gbm9uLU1hcCBvYmplY3QiX3N0cik7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90
b3R5cGUuY3BwCmluZGV4IDg4ODU5MWRkYzA2ZmZhY2FkMmYwYTA5NzNiZjAyNTU0ZDY1MTgwYjYu
LmY2YzA1YzQ1NWMxNWJiMDUyODRlOGQ4NjNiMTNiYWYyYjk0OWQ4Y2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtNDAxLDcg
KzQwMSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihudW1iZXJQcm90b0Z1bmNUb0V4cG9u
ZW50aWFsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOb250cml2aWFsU3RyaW5nKHZtLCBTdHJpbmc6Om51bWJlcih4KSkpOwogCiAg
ICAgaWYgKGRlY2ltYWxQbGFjZXMgPCAwIHx8IGRlY2ltYWxQbGFjZXMgPiAxMDApCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidG9FeHBvbmVu
dGlhbCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDAiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvRXhwb25lbnRp
YWwoKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwIl9zdHIpOwogCiAgICAgLy8g
Um91bmQgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdCB1bmRlZmluZWQsIGFsd2F5cyBmb3JtYXQgYXMg
ZXhwb25lbnRpYWwuCiAgICAgTnVtYmVyVG9TdHJpbmdCdWZmZXIgYnVmZmVyOwpAQCAtNDMxLDcg
KzQzMSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihudW1iZXJQcm90b0Z1bmNUb0ZpeGVk
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBpbnQgZGVjaW1hbFBsYWNlcyA9
IHN0YXRpY19jYXN0PGludD4oY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b0ludGVnZXJPckluZmlu
aXR5KGdsb2JhbE9iamVjdCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CiAgICAgaWYgKGRlY2ltYWxQbGFjZXMgPCAwIHx8IGRlY2ltYWxQbGFjZXMgPiAxMDApCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidG9GaXhl
ZCgpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAwIGFuZCAxMDAiX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvRml4ZWQoKSBhcmd1
bWVudCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwIl9zdHIpOwogCiAgICAgLy8gMTUuNy40LjUu
NyBzdGF0ZXMgIklmIHggPj0gMTBeMjEsIHRoZW4gbGV0IG0gPSBUb1N0cmluZyh4KSIKICAgICAv
LyBUaGlzIGFsc28gY292ZXJzIEluaW5pdHksIGFuZCBzdHJ1Y3R1cmUgdGhlIGNoZWNrIHNvIHRo
YXQgTmFOCkBAIC00NzYsNyArNDc2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG51bWJl
clByb3RvRnVuY1RvUHJlY2lzaW9uLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sIFN0cmluZzo6
bnVtYmVyKHgpKSk7CiAKICAgICBpZiAoc2lnbmlmaWNhbnRGaWd1cmVzIDwgMSB8fCBzaWduaWZp
Y2FudEZpZ3VyZXMgPiAxMDApCi0gICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAidG9QcmVjaXNpb24oKSBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MSBhbmQgMTAwIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJ0b1ByZWNpc2lvbigpIGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAxIGFu
ZCAxMDAiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBT
dHJpbmc6Om51bWJlclRvU3RyaW5nRml4ZWRQcmVjaXNpb24oeCwgc2lnbmlmaWNhbnRGaWd1cmVz
LCBLZWVwVHJhaWxpbmdaZXJvcykpKTsKIH0KQEAgLTYwNyw3ICs2MDcsNyBAQCBpbnQzMl90IGV4
dHJhY3RUb1N0cmluZ1JhZGl4QXJndW1lbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSByYWRpeAogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGludDMyX3Q+KHJh
ZGl4RG91YmxlKTsgICAKICAgICB9CiAKLSAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCAidG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4g
MiBhbmQgMzYiX3MpOworICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHRocm93U2Nv
cGUsICJ0b1N0cmluZygpIHJhZGl4IGFyZ3VtZW50IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAzNiJf
c3RyKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDU4NDA2ZWE3MzFjOTRhZWI3NDkx
MTkyZWJlNmQxNGM5M2EyMzhjNzcuLjIwNmI5YWIwYmM2NmViODhiM2ZiNzk2NTJhZDIyYjU5ZWU5
YjkyZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHAKQEAgLTE1NiwxMSArMTU2LDExIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTihvYmplY3RDb25zdHJ1Y3RvclNldFByb3RvdHlwZU9mLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhCiAKICAgICBKU1ZhbHVlIG9iamVjdFZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsK
ICAgICBpZiAob2JqZWN0VmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBzZXQgcHJvdG90
eXBlIG9mIHVuZGVmaW5lZCBvciBudWxsIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBzZXQgcHJvdG90eXBlIG9mIHVuZGVm
aW5lZCBvciBudWxsIl9zdHIpOwogCiAgICAgSlNWYWx1ZSBwcm90b1ZhbHVlID0gY2FsbEZyYW1l
LT5hcmd1bWVudCgxKTsKICAgICBpZiAoIXByb3RvVmFsdWUuaXNPYmplY3QoKSAmJiAhcHJvdG9W
YWx1ZS5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3RvdHlwZSB2YWx1ZSBjYW4gb25seSBiZSBhbiBvYmplY3Qgb3IgbnVs
bCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJQcm90b3R5cGUgdmFsdWUgY2FuIG9ubHkgYmUgYW4gb2JqZWN0IG9yIG51bGwiX3N0cik7
CiAKICAgICBKU09iamVjdCogb2JqZWN0ID0gb2JqZWN0VmFsdWUudG9PYmplY3QoZ2xvYmFsT2Jq
ZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
QEAgLTMxMCw3ICszMTAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29uc3Ry
dWN0b3JBc3NpZ24sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogCiAgICAgSlNWYWx1
ZSB0YXJnZXRWYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKHRhcmdldFZh
bHVlLmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QuYXNzaWduIHJlcXVpcmVzIHRoYXQgaW5wdXQg
cGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QuYXNzaWduIHJlcXVp
cmVzIHRoYXQgaW5wdXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJfc3RyKTsK
ICAgICBKU09iamVjdCogdGFyZ2V0ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCkBAIC0zNTQsNyArMzU0
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yRW50cmllcywg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QKIAogICAgIEpTVmFsdWUgdGFyZ2V0VmFsdWUg
PSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmICh0YXJnZXRWYWx1ZS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiT2JqZWN0LmVudHJpZXMgcmVxdWlyZXMgdGhhdCBpbnB1dCBwYXJhbWV0ZXIgbm90
IGJlIG51bGwgb3IgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdC5lbnRyaWVzIHJlcXVpcmVzIHRoYXQgaW5w
dXQgcGFyYW1ldGVyIG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCJfc3RyKTsKICAgICBKU09iamVj
dCogdGFyZ2V0ID0gdGFyZ2V0VmFsdWUudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCkBAIC00MTMsNyArNDEzLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yVmFsdWVzLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKIAogICAgIEpTVmFsdWUgdGFyZ2V0VmFsdWUgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmICh0YXJnZXRWYWx1ZS5pc1VuZGVmaW5lZE9yTnVsbCgpKQot
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiT2Jq
ZWN0LnZhbHVlcyByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBub3QgYmUgbnVsbCBvciB1
bmRlZmluZWQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiT2JqZWN0LnZhbHVlcyByZXF1aXJlcyB0aGF0IGlucHV0IHBhcmFtZXRlciBu
b3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3N0cik7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRh
cmdldFZhbHVlLnRvT2JqZWN0KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKIApAQCAtNDYwLDcgKzQ2MCw3IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2Ny
aXB0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpbiwgUHJvcGVydHlE
ZXNjCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCiAgICAgaWYg
KCFpbi5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJQcm9wZXJ0eSBkZXNjcmlwdGlvbiBtdXN0IGJlIGFuIG9iamVjdC4iX3MpOworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJvcGVydHkgZGVzY3Jp
cHRpb24gbXVzdCBiZSBhbiBvYmplY3QuIl9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogICAgIEpTT2JqZWN0KiBkZXNjcmlwdGlvbiA9IGFzT2JqZWN0KGluKTsKQEAgLTUwOCw3
ICs1MDgsNyBAQCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzYwogICAgICAgICBKU1ZhbHVlIGdldCA9
IGRlc2NyaXB0aW9uLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5nZXQpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICgh
Z2V0LmlzVW5kZWZpbmVkKCkgJiYgIWdldC5pc0NhbGxhYmxlKHZtKSkgewotICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkdldHRlciBtdXN0IGJlIGEgZnVu
Y3Rpb24uIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJHZXR0ZXIgbXVzdCBiZSBhIGZ1bmN0aW9uLiJfc3RyKTsKICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBkZXNjLnNldEdldHRlcihnZXQpOwpAQCAtNTIx
LDcgKzUyMSw3IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjCiAgICAgICAgIEpTVmFsdWUgc2V0
ID0gZGVzY3JpcHRpb24tPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnNldCk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYg
KCFzZXQuaXNVbmRlZmluZWQoKSAmJiAhc2V0LmlzQ2FsbGFibGUodm0pKSB7Ci0gICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0dGVyIG11c3QgYmUgYSBm
dW5jdGlvbi4iX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlNldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIl9zdHIpOwogICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIGRlc2Muc2V0U2V0dGVyKHNldCk7CkBAIC01
MzIsMTIgKzUzMiwxMiBAQCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaW4sIFByb3BlcnR5RGVzYwogICAgICAgICByZXR1cm4g
dHJ1ZTsKIAogICAgIGlmIChkZXNjLnZhbHVlKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgcHJvcGVydHkuICAndmFsdWUnIHByZXNlbnQg
b24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiJfcyk7CisgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlkIHByb3BlcnR5LiAgJ3ZhbHVlJyBw
cmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iX3N0cik7CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoZGVzYy53cml0YWJsZVByZXNlbnQoKSkg
ewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW52YWxpZCBw
cm9wZXJ0eS4gICd3cml0YWJsZScgcHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBz
ZXR0ZXIuIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHByZXNlbnQgb24gcHJvcGVydHkgd2l0aCBn
ZXR0ZXIgb3Igc2V0dGVyLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAg
ICByZXR1cm4gdHJ1ZTsKQEAgLTU0OSw3ICs1NDksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04ob2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmICgh
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJvcGVydGllcyBjYW4gb25seSBiZSBk
ZWZpbmVkIG9uIE9iamVjdHMuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBP
YmplY3RzLiJfc3RyKTsKICAgICBKU09iamVjdCogb2JqID0gYXNPYmplY3QoY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDEpLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTYxNiw3ICs2MTYsNyBAQCBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04ob2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0aWVzLCAoSlNHbG9i
YWxPYmplY3QqIGdsbwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
IAogICAgIGlmICghY2FsbEZyYW1lLT5hcmd1bWVudCgwKS5pc09iamVjdCgpKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJvcGVydGllcyBj
YW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3BlcnRpZXMgY2FuIG9ubHkgYmUg
ZGVmaW5lZCBvbiBPYmplY3RzLiJfc3RyKTsKICAgICBKU09iamVjdCogdGFyZ2V0T2JqID0gYXNP
YmplY3QoY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgSlNPYmplY3QqIHByb3BzID0gY2Fs
bEZyYW1lLT5hcmd1bWVudCgxKS50b09iamVjdChnbG9iYWxPYmplY3QpOwogICAgIEVYQ0VQVElP
Tl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24oKSA9PSAhcHJvcHMpOwpAQCAtNjMyLDcgKzYzMiw3
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAKICAgICBKU1ZhbHVlIHByb3RvID0gY2FsbEZy
YW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkgJiYgIXByb3RvLmlz
TnVsbCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iX3Mp
OworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
T2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3IgbnVsbC4iX3N0cik7CiAg
ICAgSlNPYmplY3QqIG5ld09iamVjdCA9IHByb3RvLmlzT2JqZWN0KCkKICAgICAgICAgPyBjb25z
dHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHByb3RvKSkKICAgICAgICAg
OiBjb25zdHJ1Y3RFbXB0eU9iamVjdCh2bSwgZ2xvYmFsT2JqZWN0LT5udWxsUHJvdG90eXBlT2Jq
ZWN0U3RydWN0dXJlKCkpOwpAQCAtNzUzLDcgKzc1Myw3IEBAIEpTT2JqZWN0KiBvYmplY3RDb25z
dHJ1Y3RvclNlYWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9iamVj
dCkKICAgICBib29sIHN1Y2Nlc3MgPSBzZXRJbnRlZ3JpdHlMZXZlbDxJbnRlZ3JpdHlMZXZlbDo6
U2VhbGVkPihnbG9iYWxPYmplY3QsIHZtLCBvYmplY3QpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIG51bGxwdHIpOwogICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlVuYWJsZSB0byBwcmV2ZW50
IGV4dGVuc2lvbiBpbiBPYmplY3Quc2VhbCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJVbmFibGUgdG8gcHJldmVudCBleHRlbnNpb24gaW4gT2JqZWN0
LnNlYWwiX3N0cik7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNzg2LDcg
Kzc4Niw3IEBAIEpTT2JqZWN0KiBvYmplY3RDb25zdHJ1Y3RvckZyZWV6ZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb2JqZWN0CiAgICAgYm9vbCBzdWNjZXNzID0gc2V0
SW50ZWdyaXR5TGV2ZWw8SW50ZWdyaXR5TGV2ZWw6OkZyb3plbj4oZ2xvYmFsT2JqZWN0LCB2bSwg
b2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKICAgICBp
ZiAoVU5MSUtFTFkoIXN1Y2Nlc3MpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJVbmFibGUgdG8gcHJldmVudCBleHRlbnNpb24gaW4gT2JqZWN0LmZyZWV6
ZSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJVbmFi
bGUgdG8gcHJldmVudCBleHRlbnNpb24gaW4gT2JqZWN0LmZyZWV6ZSJfc3RyKTsKICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgfQogICAgIHJldHVybiBvYmplY3Q7CkBAIC04MTcsNyArODE3
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKG9iamVjdENvbnN0cnVjdG9yUHJldmVudEV4
dGVuc2lvbnMsIChKU0dsb2JhbE9iamVjdCogZ2wKICAgICBib29sIHN0YXR1cyA9IG9iamVjdC0+
bWV0aG9kVGFibGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGdsb2JhbE9iamVjdCk7
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoVU5MSUtFTFko
IXN0YXR1cykpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJVbmFibGUgdG8gcHJldmVudCBleHRlbnNpb24gaW4gT2JqZWN0LnByZXZlbnRFeHRl
bnNpb25zIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlVuYWJsZSB0byBwcmV2ZW50IGV4dGVuc2lvbiBpbiBPYmplY3QucHJldmVudEV4
dGVuc2lvbnMiX3N0cik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3QpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5
cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90eXBlLmNw
cAppbmRleCA5NWJiYTNjYjMyMGVhNWM3MGY5ODA0M2ZlMGQyNjcwMTc3M2EwZTJjLi5jMDhmYzRi
N2MwN2E1NjYyMjUwYzE4YWMyOWE1MjU2ZmM4MWIxMjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAKQEAgLTE1OSw3ICsxNTksNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ob2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgSlNWYWx1ZSBnZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpOwogICAgIGlmICghZ2V0LmlzQ2FsbGFibGUodm0pKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCBnZXR0ZXIg
dXNhZ2UiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaW52YWxpZCBnZXR0ZXIgdXNhZ2UiX3N0cik7CiAKICAgICBhdXRvIHByb3BlcnR5
TmFtZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkudG9Qcm9wZXJ0eUtleShnbG9iYWxPYmplY3Qp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwpAQCAt
MTg2LDcgKzE4Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihvYmplY3RQcm90b0Z1bmNE
ZWZpbmVTZXR0ZXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKICAgICBKU1ZhbHVlIHNl
dCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgaWYgKCFzZXQuaXNDYWxsYWJsZSh2bSkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJp
bnZhbGlkIHNldHRlciB1c2FnZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIHNldHRlciB1c2FnZSJfc3RyKTsKIAogICAg
IGF1dG8gcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKS50b1Byb3BlcnR5S2V5
KGdsb2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpT
VmFsdWUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVy
YXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgKaW5k
ZXggMDkxOWU3MjE4NmQzOWQ2ZDU2ZWRkNzE4YTljZmI4YTMwNGY1OTE3MS4uYjc0NDg5OWIzYjlh
MjdiYjQ5NjRiNTU3ZDU4NDM0MDQ3ODBiNDQ2MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wZXJhdGlvbnMuaApAQCAtODA3LDcgKzgwNyw3IEBAIEFMV0FZU19JTkxJTkUgSlNW
YWx1ZSBqc1VSU2hpZnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBsZWZ0
LCBKU1ZhCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChV
TkxJS0VMWSghbGVmdFVpbnQzMiB8fCAhcmlnaHRVaW50MzIpKSB7Ci0gICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJCaWdJbnQgZG9lcyBub3Qgc3VwcG9ydCA+Pj4g
b3BlcmF0b3IiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiQmlnSW50IGRvZXMgbm90IHN1cHBvcnQgPj4+IG9wZXJhdG9yIl9zdHIpOwogICAgICAgICBy
ZXR1cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJvZ3JhbUV4ZWN1dGFibGUuY3BwCmluZGV4IGVhYmZhODVhY2EzN2VmMGFhN2M3ZGY4OTVl
YWU0MTczOWQxNTQ5MGUuLjgzNzMzYTViZjE0YjMxZjVlYTM5ZDYzYThkNTMyYmFhMDkwNjBmZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb2dyYW1FeGVjdXRh
YmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm9ncmFtRXhlY3V0
YWJsZS5jcHAKQEAgLTg4LDcgKzg4LDcgQEAgSlNPYmplY3QqIFByb2dyYW1FeGVjdXRhYmxlOjpp
bml0aWFsaXplR2xvYmFsUHJvcGVydGllcyhWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KgogICAgIEpT
VmFsdWUgbmV4dFByb3RvdHlwZSA9IGdsb2JhbE9iamVjdC0+Z2V0UHJvdG90eXBlRGlyZWN0KHZt
KTsKICAgICB3aGlsZSAobmV4dFByb3RvdHlwZSAmJiBuZXh0UHJvdG90eXBlLmlzT2JqZWN0KCkp
IHsKICAgICAgICAgaWYgKFVOTElLRUxZKGFzT2JqZWN0KG5leHRQcm90b3R5cGUpLT50eXBlKCkg
PT0gUHJveHlPYmplY3RUeXBlKSkKLSAgICAgICAgICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCAiUHJveHkgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGdsb2JhbCBwcm90b3R5
cGUgY2hhaW4uIl9zKTsKKyAgICAgICAgICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCAiUHJveHkgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGdsb2JhbCBwcm90b3R5cGUgY2hh
aW4uIl9zdHIpOwogICAgICAgICBuZXh0UHJvdG90eXBlID0gYXNPYmplY3QobmV4dFByb3RvdHlw
ZSktPmdldFByb3RvdHlwZURpcmVjdCh2bSk7CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUHJveHlDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAppbmRleCBmNzJmOGY3
YWVlNTMwOTA3MTg2Mzk2YzIzMTQ1Y2JhYmRmYmIxZjNjLi45MWQ0OGRmMDlmYzEyYWRlZTY5ODc5
N2VlMzRjMWZkNWYzYzNhNzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Qcm94eUNvbnN0cnVjdG9yLmNwcApAQCAtNTgsNyArNTgsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04obWFrZVJldm9jYWJsZVByb3h5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKGNhbGxGcmFtZS0+YXJndW1l
bnRDb3VudCgpIDwgMikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5LnJldm9jYWJsZSBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCB0d28g
YXJndW1lbnRzOiB0aGUgdGFyZ2V0IGFuZCB0aGUgaGFuZGxlciJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eS5yZXZvY2FibGUg
bmVlZHMgdG8gYmUgY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogdGhlIHRhcmdldCBhbmQgdGhl
IGhhbmRsZXIiX3N0cik7CiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CiAgICAgSlNWYWx1ZSBoYW5kbGVyID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Byb3h5T2JqZWN0LmNwcAppbmRleCA0NWY1
OGQ5OWQzNWQ1YTEzZGRiOTllMGE2NGNmOTFmYjY2ZDkzOGRmLi44ZTU4OWJmYWYwOTQxOWVmNjhi
YzU5Njg1ZTM0NThhNjViMGRlYjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9Qcm94eU9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUHJveHlPYmplY3QuY3BwCkBAIC02MCwxMSArNjAsMTEgQEAgdm9pZCBQcm94eU9iamVjdDo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHQKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKHR5cGUoKSA9
PSBQcm94eU9iamVjdFR5cGUpOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpIHsKLSAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkEgUHJveHkncyAndGFyZ2V0
JyBzaG91bGQgYmUgYW4gT2JqZWN0Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkEgUHJveHkncyAndGFyZ2V0JyBzaG91bGQgYmUgYW4gT2JqZWN0Il9z
dHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmICghaGFuZGxlci5pc09iamVjdCgp
KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJBIFByb3h5
J3MgJ2hhbmRsZXInIHNob3VsZCBiZSBhbiBPYmplY3QiX3MpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQSBQcm94eSdzICdoYW5kbGVyJyBzaG91bGQgYmUg
YW4gT2JqZWN0Il9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTcsNyArMTE3
LDcgQEAgc3RhdGljIEpTVmFsdWUgcGVyZm9ybVByb3h5R2V0KEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFByb3h5T2JqZWN0KiBwcm94eU8KIAogICAgIEpTT2JqZWN0KiBoYW5kbGVyID0g
anNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxsRGF0YTsK
LSAgICBKU1ZhbHVlIGdldEhhbmRsZXIgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0
LCBjYWxsRGF0YSwgdm0ucHJvcGVydHlOYW1lcy0+Z2V0LCAiJ2dldCcgcHJvcGVydHkgb2YgYSBQ
cm94eSdzIGhhbmRsZXIgb2JqZWN0IHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1
ZSBnZXRIYW5kbGVyID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEs
IHZtLnByb3BlcnR5TmFtZXMtPmdldCwgIidnZXQnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5k
bGVyIG9iamVjdCBzaG91bGQgYmUgY2FsbGFibGUiX3N0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChnZXRIYW5kbGVyLmlzVW5kZWZpbmVkKCkpCkBA
IC0xMzksMTAgKzEzOSwxMCBAQCBzdGF0aWMgSlNWYWx1ZSBwZXJmb3JtUHJveHlHZXQoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJveHlPYmplY3QqIHByb3h5TwogICAgICAgICAgICAg
Ym9vbCBpc1NhbWUgPSBzYW1lVmFsdWUoZ2xvYmFsT2JqZWN0LCBkZXNjcmlwdG9yLnZhbHVlKCks
IHRyYXBSZXN1bHQpOwogICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICAgICAgICAgIGlmICghaXNTYW1lKQotICAgICAgICAgICAgICAgIHJldHVybiB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidzICdnZXQnIHJl
c3VsdCBvZiBhIG5vbi1jb25maWd1cmFibGUgYW5kIG5vbi13cml0YWJsZSBwcm9wZXJ0eSBzaG91
bGQgYmUgdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHRhcmdldCdzIHByb3BlcnR5Il9zKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBy
b3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24tY29uZmlndXJhYmxlIGFuZCBub24t
d3JpdGFibGUgcHJvcGVydHkgc2hvdWxkIGJlIHRoZSBzYW1lIHZhbHVlIGFzIHRoZSB0YXJnZXQn
cyBwcm9wZXJ0eSJfc3RyKTsKICAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9yLmlzQWNjZXNz
b3JEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYgZGVzY3JpcHRv
ci5nZXR0ZXIoKS5pc1VuZGVmaW5lZCgpKSB7CiAgICAgICAgICAgICBpZiAoIXRyYXBSZXN1bHQu
aXNVbmRlZmluZWQoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnZ2V0JyByZXN1bHQgb2YgYSBub24t
Y29uZmlndXJhYmxlIGFjY2Vzc29yIHByb3BlcnR5IHdpdGhvdXQgYSBnZXR0ZXIgc2hvdWxkIGJl
IHVuZGVmaW5lZCJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ2dldCcgcmVzdWx0IG9mIGEgbm9u
LWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEgZ2V0dGVyIHNob3VsZCBi
ZSB1bmRlZmluZWQiX3N0cik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTIxMSw3ICsyMTEsNyBA
QCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtSW50ZXJuYWxNZXRob2RHZXRPd25Qcm9wZXJ0eShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nh
c3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAg
IEpTVmFsdWUgZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0
aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAiZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yIiksICInZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBwcm9wZXJ0eSBv
ZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yTWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2Jh
bE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAiZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yIiksICInZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBwcm9wZXJ0eSBvZiBhIFByb3h5
J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3N0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgZmFsc2UpOwogICAgIGlmIChnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JNZXRo
b2QuaXNVbmRlZmluZWQoKSkKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBwZXJm
b3JtRGVmYXVsdEdldE93blByb3BlcnR5KCkpOwpAQCAtMjI0LDcgKzIyNCw3IEBAIGJvb2wgUHJv
eHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93blByb3BlcnR5KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwog
CiAgICAgaWYgKCF0cmFwUmVzdWx0LmlzVW5kZWZpbmVkKCkgJiYgIXRyYXBSZXN1bHQuaXNPYmpl
Y3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAicmVz
dWx0IG9mICdnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3InIGNhbGwgc2hvdWxkIGVpdGhlciBiZSBh
biBPYmplY3Qgb3IgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInJlc3VsdCBvZiAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBjYWxs
IHNob3VsZCBlaXRoZXIgYmUgYW4gT2JqZWN0IG9yIHVuZGVmaW5lZCJfc3RyKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMjM2LDEzICsyMzYsMTMgQEAgYm9vbCBQcm94eU9i
amVjdDo6cGVyZm9ybUludGVybmFsTWV0aG9kR2V0T3duUHJvcGVydHkoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamUKICAgICAgICAgaWYgKCFpc1RhcmdldFByb3BlcnR5RGVzY3JpcHRvckRlZmlu
ZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghdGFyZ2V0UHJvcGVy
dHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2hlbiB0aGUgcmVzdWx0IG9mICdnZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3InIGlzIHVuZGVmaW5lZCB0aGUgdGFyZ2V0IG11c3QgYmUgY29uZmlndXJhYmxl
Il9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJX
aGVuIHRoZSByZXN1bHQgb2YgJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgaXMgdW5kZWZpbmVk
IHRoZSB0YXJnZXQgbXVzdCBiZSBjb25maWd1cmFibGUiX3N0cik7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0YXJnZXQt
PmlzRXh0ZW5zaWJsZShnbG9iYWxPYmplY3QpOwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CiAgICAgICAgIGlmICghaXNFeHRlbnNpYmxlKSB7Ci0gICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiV2hlbiAnZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yJyByZXR1cm5zIHVuZGVmaW5lZCwgdGhlICd0YXJnZXQnIG9mIGEgUHJveHkg
c2hvdWxkIGJlIGV4dGVuc2libGUiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIldoZW4gJ2dldE93blByb3BlcnR5RGVzY3JpcHRvcicgcmV0dXJu
cyB1bmRlZmluZWQsIHRoZSAndGFyZ2V0JyBvZiBhIFByb3h5IHNob3VsZCBiZSBleHRlbnNpYmxl
Il9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAKQEAgLTI2MCwx
NyArMjYwLDE3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1JbnRlcm5hbE1ldGhvZEdldE93
blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgICAgIHRyYXBSZXN1bHRB
c0Rlc2NyaXB0b3IsIGlzVGFyZ2V0UHJvcGVydHlEZXNjcmlwdG9yRGVmaW5lZCwgdGFyZ2V0UHJv
cGVydHlEZXNjcmlwdG9yLCB0aHJvd0V4Y2VwdGlvbik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgZmFsc2UpOwogICAgIGlmICghdmFsaWQpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlc3VsdCBmcm9tICdnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3InIGZhaWxzIHRoZSBJc0NvbXBhdGlibGVQcm9wZXJ0eURlc2NyaXB0b3IgdGVzdCJfcyk7
CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZXN1bHQgZnJv
bSAnZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yJyBmYWlscyB0aGUgSXNDb21wYXRpYmxlUHJvcGVy
dHlEZXNjcmlwdG9yIHRlc3QiX3N0cik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAK
ICAgICBpZiAoIXRyYXBSZXN1bHRBc0Rlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAg
ICAgaWYgKCFpc1RhcmdldFByb3BlcnR5RGVzY3JpcHRvckRlZmluZWQgfHwgdGFyZ2V0UHJvcGVy
dHlEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3Jp
cHRvcicgY2FuJ3QgYmUgbm9uLWNvbmZpZ3VyYWJsZSB3aGVuIHRoZSAndGFyZ2V0JyBkb2Vzbid0
IGhhdmUgaXQgYXMgYW4gb3duIHByb3BlcnR5IG9yIGlmIGl0IGlzIGEgY29uZmlndXJhYmxlIG93
biBwcm9wZXJ0eSBvbiAndGFyZ2V0JyJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRv
cicgY2FuJ3QgYmUgbm9uLWNvbmZpZ3VyYWJsZSB3aGVuIHRoZSAndGFyZ2V0JyBkb2Vzbid0IGhh
dmUgaXQgYXMgYW4gb3duIHByb3BlcnR5IG9yIGlmIGl0IGlzIGEgY29uZmlndXJhYmxlIG93biBw
cm9wZXJ0eSBvbiAndGFyZ2V0JyJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICBpZiAodHJhcFJlc3VsdEFzRGVzY3JpcHRvci53cml0YWJsZVByZXNl
bnQoKSAmJiAhdHJhcFJlc3VsdEFzRGVzY3JpcHRvci53cml0YWJsZSgpICYmIHRhcmdldFByb3Bl
cnR5RGVzY3JpcHRvci53cml0YWJsZSgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVzdWx0IGZyb20gJ2dldE93blByb3BlcnR5RGVzY3JpcHRv
cicgY2FuJ3QgYmUgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHdoZW4gdGhlIHRh
cmdldCdzIHByb3BlcnR5IGlzIHdyaXRhYmxlIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZXN1bHQgZnJvbSAnZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yJyBjYW4ndCBiZSBub24tY29uZmlndXJhYmxlIGFuZCBub24td3JpdGFibGUgd2hlbiB0
aGUgdGFyZ2V0J3MgcHJvcGVydHkgaXMgd3JpdGFibGUiX3N0cik7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC0zMTUsNyArMzE1LDcgQEAgYm9vbCBQcm94
eU9iamVjdDo6cGVyZm9ybUhhc1Byb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IFByb3BlcnR5TmFtZQogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3Qq
PihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTVmFsdWUgaGFz
TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIHZtLnBy
b3BlcnR5TmFtZXMtPmhhcywgIidoYXMnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNo
b3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBoYXNNZXRob2QgPSBoYW5kbGVyLT5n
ZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgdm0ucHJvcGVydHlOYW1lcy0+aGFzLCAi
J2hhcycgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9z
dHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBpZiAoaGFz
TWV0aG9kLmlzVW5kZWZpbmVkKCkpCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
cGVyZm9ybURlZmF1bHRIYXNQcm9wZXJ0eSgpKTsKQEAgLTMzNiwxMyArMzM2LDEzIEBAIGJvb2wg
UHJveHlPYmplY3Q6OnBlcmZvcm1IYXNQcm9wZXJ0eShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBQcm9wZXJ0eU5hbWUKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFs
c2UpOwogICAgICAgICBpZiAoaXNQcm9wZXJ0eURlc2NyaXB0b3JEZWZpbmVkKSB7CiAgICAgICAg
ICAgICBpZiAoIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKLSAgICAgICAgICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgJ2hhcycgbXVzdCByZXR1
cm4gJ3RydWUnIGZvciBub24tY29uZmlndXJhYmxlIHByb3BlcnRpZXMiX3MpOworICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSAnaGFzJyBt
dXN0IHJldHVybiAndHJ1ZScgZm9yIG5vbi1jb25maWd1cmFibGUgcHJvcGVydGllcyJfc3RyKTsK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICBib29sIGlzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlKGdsb2JhbE9iamVjdCk7
CiAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgICAg
ICAgICBpZiAoIWlzRXh0ZW5zaWJsZSkgewotICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9y
IGEgbm9uLWV4dGVuc2libGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1cmFibGUgcHJv
cGVydHkiX3MpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJQcm94eSAnaGFzJyBtdXN0IHJldHVybiAndHJ1ZScgZm9yIGEgbm9uLWV4dGVuc2li
bGUgJ3RhcmdldCcgb2JqZWN0IHdpdGggYSBjb25maWd1cmFibGUgcHJvcGVydHkiX3N0cik7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBA
IC00MTksNyArNDE5LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVB1dChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHB1dFZhbHVlLCBKU1YKIAogICAgIEpTT2JqZWN0
KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIHNldE1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChn
bG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5zZXQsICInc2V0JyBwcm9w
ZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpT
VmFsdWUgc2V0TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERh
dGEsIHZtLnByb3BlcnR5TmFtZXMtPnNldCwgIidzZXQnIHByb3BlcnR5IG9mIGEgUHJveHkncyBo
YW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBmYWxzZSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwog
ICAgIGlmIChzZXRNZXRob2QuaXNVbmRlZmluZWQoKSkKQEAgLTQ0OSwxMSArNDQ5LDExIEBAIGJv
b2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QdXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwdXRWYWx1ZSwgSlNWCiAgICAgICAgICAgICBib29sIGlzU2FtZSA9IHNhbWVWYWx1
ZShnbG9iYWxPYmplY3QsIGRlc2NyaXB0b3IudmFsdWUoKSwgcHV0VmFsdWUpOwogICAgICAgICAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogICAgICAgICAgICAgaWYgKCFp
c1NhbWUpIHsKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUHJveHkgaGFuZGxlcidzICdzZXQnIG9uIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9u
LXdyaXRhYmxlIHByb3BlcnR5IG9uICd0YXJnZXQnIHNob3VsZCBlaXRoZXIgcmV0dXJuIGZhbHNl
IG9yIGJlIHRoZSBzYW1lIHZhbHVlIGFscmVhZHkgb24gdGhlICd0YXJnZXQnIl9zKTsKKyAgICAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFu
ZGxlcidzICdzZXQnIG9uIGEgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgbm9uLXdyaXRhYmxlIHByb3Bl
cnR5IG9uICd0YXJnZXQnIHNob3VsZCBlaXRoZXIgcmV0dXJuIGZhbHNlIG9yIGJlIHRoZSBzYW1l
IHZhbHVlIGFscmVhZHkgb24gdGhlICd0YXJnZXQnIl9zdHIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkZXNjcmlwdG9y
LmlzQWNjZXNzb3JEZXNjcmlwdG9yKCkgJiYgIWRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkgJiYg
ZGVzY3JpcHRvci5zZXR0ZXIoKS5pc1VuZGVmaW5lZCgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidzICdzZXQnIG1ldGhv
ZCBvbiBhIG5vbi1jb25maWd1cmFibGUgYWNjZXNzb3IgcHJvcGVydHkgd2l0aG91dCBhIHNldHRl
ciBzaG91bGQgcmV0dXJuIGZhbHNlIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ3NldCcgbWV0aG9kIG9uIGEgbm9u
LWNvbmZpZ3VyYWJsZSBhY2Nlc3NvciBwcm9wZXJ0eSB3aXRob3V0IGEgc2V0dGVyIHNob3VsZCBy
ZXR1cm4gZmFsc2UiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0K
ICAgICB9CkBAIC01MTIsNyArNTEyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHBlcmZv
cm1Qcm94eUNhbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKIAogICAg
IEpTT2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAg
ICBDYWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGFwcGx5TWV0aG9kID0gaGFuZGxlci0+
Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAiYXBw
bHkiKSwgIidhcHBseScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNh
bGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGFwcGx5TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9k
KGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZtLCAiYXBwbHkiKSwgIidh
cHBseScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9z
dHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwog
ICAgIEpTT2JqZWN0KiB0YXJnZXQgPSBwcm94eS0+dGFyZ2V0KCk7CiAgICAgaWYgKGFwcGx5TWV0
aG9kLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTU1OSw3ICs1NTksNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04ocGVyZm9ybVByb3h5Q29uc3RydWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQwogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5k
bGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTVmFsdWUgY29uc3RydWN0
TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJ
ZGVudGlmaWVyKHZtLCAiY29uc3RydWN0IiksICInY29uc3RydWN0JyBwcm9wZXJ0eSBvZiBhIFBy
b3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpTVmFsdWUgY29uc3Ry
dWN0TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1h
a2VJZGVudGlmaWVyKHZtLCAiY29uc3RydWN0IiksICInY29uc3RydWN0JyBwcm9wZXJ0eSBvZiBh
IFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3N0cik7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgSlNPYmplY3QqIHRhcmdl
dCA9IHByb3h5LT50YXJnZXQoKTsKICAgICBpZiAoY29uc3RydWN0TWV0aG9kLmlzVW5kZWZpbmVk
KCkpIHsKQEAgLTU3OCw3ICs1NzgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocGVyZm9y
bVByb3h5Q29uc3RydWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQwogICAgIEpT
VmFsdWUgcmVzdWx0ID0gY2FsbChnbG9iYWxPYmplY3QsIGNvbnN0cnVjdE1ldGhvZCwgY2FsbERh
dGEsIGhhbmRsZXIsIGFyZ3VtZW50cyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKCFyZXN1bHQuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlc3VsdCBmcm9t
IFByb3h5IGhhbmRsZXIncyAnY29uc3RydWN0JyBtZXRob2Qgc2hvdWxkIGJlIGFuIG9iamVjdCJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJSZXN1bHQgZnJvbSBQcm94eSBoYW5kbGVyJ3MgJ2NvbnN0cnVjdCcgbWV0aG9kIHNob3VsZCBi
ZSBhbiBvYmplY3QiX3N0cik7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpOwog
fQogCkBAIC02MTYsNyArNjE2LDcgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlbGV0ZShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBQcm9wZXJ0eU5hbWUgcHJvcGUKIAogICAgIEpT
T2JqZWN0KiBoYW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBD
YWxsRGF0YSBjYWxsRGF0YTsKLSAgICBKU1ZhbHVlIGRlbGV0ZVByb3BlcnR5TWV0aG9kID0gaGFu
ZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEsIG1ha2VJZGVudGlmaWVyKHZt
LCAiZGVsZXRlUHJvcGVydHkiKSwgIidkZWxldGVQcm9wZXJ0eScgcHJvcGVydHkgb2YgYSBQcm94
eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGRlbGV0ZVBy
b3BlcnR5TWV0aG9kID0gaGFuZGxlci0+Z2V0TWV0aG9kKGdsb2JhbE9iamVjdCwgY2FsbERhdGEs
IG1ha2VJZGVudGlmaWVyKHZtLCAiZGVsZXRlUHJvcGVydHkiKSwgIidkZWxldGVQcm9wZXJ0eScg
cHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zdHIpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICBKU09iamVjdCogdGFy
Z2V0ID0gdGhpcy0+dGFyZ2V0KCk7CiAgICAgaWYgKGRlbGV0ZVByb3BlcnR5TWV0aG9kLmlzVW5k
ZWZpbmVkKCkpCkBAIC02NDAsMTMgKzY0MCwxMyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3Jt
RGVsZXRlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnR5TmFtZSBwcm9wZQog
ICAgIEVYQ0VQVElPTl9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpIHx8ICFyZXN1bHQpOwogICAg
IGlmIChyZXN1bHQpIHsKICAgICAgICAgaWYgKCFkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSgpKSB7
Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkg
aGFuZGxlcidzICdkZWxldGVQcm9wZXJ0eScgbWV0aG9kIHNob3VsZCByZXR1cm4gZmFsc2Ugd2hl
biB0aGUgdGFyZ2V0J3MgcHJvcGVydHkgaXMgbm90IGNvbmZpZ3VyYWJsZSJfcyk7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidz
ICdkZWxldGVQcm9wZXJ0eScgbWV0aG9kIHNob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0aGUgdGFy
Z2V0J3MgcHJvcGVydHkgaXMgbm90IGNvbmZpZ3VyYWJsZSJfc3RyKTsKICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBib29sIHRhcmdldElzRXh0ZW5zaWJsZSA9
IHRhcmdldC0+aXNFeHRlbnNpYmxlKGdsb2JhbE9iamVjdCk7CiAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKCF0YXJnZXRJc0V4dGVuc2libGUp
IHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94
eSBoYW5kbGVyJ3MgJ2RlbGV0ZVByb3BlcnR5JyBtZXRob2Qgc2hvdWxkIHJldHVybiBmYWxzZSB3
aGVuIHRoZSB0YXJnZXQgaGFzIHByb3BlcnR5IGFuZCBpcyBub3QgZXh0ZW5zaWJsZSJfcyk7Cisg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFu
ZGxlcidzICdkZWxldGVQcm9wZXJ0eScgbWV0aG9kIHNob3VsZCByZXR1cm4gZmFsc2Ugd2hlbiB0
aGUgdGFyZ2V0IGhhcyBwcm9wZXJ0eSBhbmQgaXMgbm90IGV4dGVuc2libGUiX3N0cik7CiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC02OTcsNyArNjk3LDcg
QEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybVByZXZlbnRFeHRlbnNpb25zKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09i
amVjdCo+KGhhbmRsZXJWYWx1ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1
ZSBwcmV2ZW50RXh0ZW5zaW9uc01ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmpl
Y3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgInByZXZlbnRFeHRlbnNpb25zIiksICIn
cHJldmVudEV4dGVuc2lvbnMnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBi
ZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBwcmV2ZW50RXh0ZW5zaW9uc01ldGhvZCA9IGhh
bmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2
bSwgInByZXZlbnRFeHRlbnNpb25zIiksICIncHJldmVudEV4dGVuc2lvbnMnIHByb3BlcnR5IG9m
IGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfc3RyKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgSlNPYmplY3QqIHRhcmdldCA9IHRoaXMt
PnRhcmdldCgpOwogICAgIGlmIChwcmV2ZW50RXh0ZW5zaW9uc01ldGhvZC5pc1VuZGVmaW5lZCgp
KQpAQCAtNzE2LDcgKzcxNiw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1QcmV2ZW50RXh0
ZW5zaW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBib29sIHRhcmdl
dElzRXh0ZW5zaWJsZSA9IHRhcmdldC0+aXNFeHRlbnNpYmxlKGdsb2JhbE9iamVjdCk7CiAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGZhbHNlKTsKICAgICAgICAgaWYgKHRhcmdl
dElzRXh0ZW5zaWJsZSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlByb3h5J3MgJ3ByZXZlbnRFeHRlbnNpb25zJyB0cmFwIHJldHVybmVkIHRydWUg
ZXZlbiB0aG91Z2ggaXRzIHRhcmdldCBpcyBleHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1
cm5lZCBmYWxzZSJfcyk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiUHJveHkncyAncHJldmVudEV4dGVuc2lvbnMnIHRyYXAgcmV0dXJuZWQgdHJ1ZSBl
dmVuIHRob3VnaCBpdHMgdGFyZ2V0IGlzIGV4dGVuc2libGUuIEl0IHNob3VsZCBoYXZlIHJldHVy
bmVkIGZhbHNlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgfQpAQCAtNzQ4LDcgKzc0OCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVu
c2libGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIEpTT2JqZWN0KiBoYW5k
bGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBjYWxs
RGF0YTsKLSAgICBKU1ZhbHVlIGlzRXh0ZW5zaWJsZU1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhv
ZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgImlzRXh0ZW5zaWJs
ZSIpLCAiJ2lzRXh0ZW5zaWJsZScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxk
IGJlIGNhbGxhYmxlIl9zKTsKKyAgICBKU1ZhbHVlIGlzRXh0ZW5zaWJsZU1ldGhvZCA9IGhhbmRs
ZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwg
ImlzRXh0ZW5zaWJsZSIpLCAiJ2lzRXh0ZW5zaWJsZScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhh
bmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGZhbHNlKTsKIAogICAgIEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsK
QEAgLTc3MCwxMSArNzcwLDExIEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZvcm1Jc0V4dGVuc2li
bGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBpZiAodHJhcFJlc3VsdEFzQm9v
bCAhPSBpc1RhcmdldEV4dGVuc2libGUpIHsKICAgICAgICAgaWYgKGlzVGFyZ2V0RXh0ZW5zaWJs
ZSkgewogICAgICAgICAgICAgQVNTRVJUKCF0cmFwUmVzdWx0QXNCb29sKTsKLSAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBvYmplY3QncyAnaXNF
eHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIGZhbHNlIHdoZW4gdGhlIHRhcmdldCBpcyBleHRlbnNp
YmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCB0cnVlIl9zKTsKKyAgICAgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBvYmplY3QncyAnaXNFeHRlbnNp
YmxlJyB0cmFwIHJldHVybmVkIGZhbHNlIHdoZW4gdGhlIHRhcmdldCBpcyBleHRlbnNpYmxlLiBJ
dCBzaG91bGQgaGF2ZSByZXR1cm5lZCB0cnVlIl9zdHIpOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgQVNTRVJUKCFpc1RhcmdldEV4dGVuc2libGUpOwogICAgICAgICAgICAgQVNTRVJU
KHRyYXBSZXN1bHRBc0Jvb2wpOwotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5IG9iamVjdCdzICdpc0V4dGVuc2libGUnIHRyYXAgcmV0dXJuZWQg
dHJ1ZSB3aGVuIHRoZSB0YXJnZXQgaXMgbm9uLWV4dGVuc2libGUuIEl0IHNob3VsZCBoYXZlIHJl
dHVybmVkIGZhbHNlIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJQcm94eSBvYmplY3QncyAnaXNFeHRlbnNpYmxlJyB0cmFwIHJldHVybmVkIHRy
dWUgd2hlbiB0aGUgdGFyZ2V0IGlzIG5vbi1leHRlbnNpYmxlLiBJdCBzaG91bGQgaGF2ZSByZXR1
cm5lZCBmYWxzZSJfc3RyKTsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTgxMyw3ICs4MTMs
NyBAQCBib29sIFByb3h5T2JqZWN0OjpwZXJmb3JtRGVmaW5lT3duUHJvcGVydHkoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGVydAogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBq
c0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVyVmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwot
ICAgIEpTVmFsdWUgZGVmaW5lUHJvcGVydHlNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xv
YmFsT2JqZWN0LCBjYWxsRGF0YSwgdm0ucHJvcGVydHlOYW1lcy0+ZGVmaW5lUHJvcGVydHksICIn
ZGVmaW5lUHJvcGVydHknIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBj
YWxsYWJsZSJfcyk7CisgICAgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0eU1ldGhvZCA9IGhhbmRsZXIt
PmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCB2bS5wcm9wZXJ0eU5hbWVzLT5kZWZp
bmVQcm9wZXJ0eSwgIidkZWZpbmVQcm9wZXJ0eScgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRs
ZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9zdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGZhbHNlKTsKIAogICAgIGlmIChkZWZpbmVQcm9wZXJ0eU1ldGhvZC5pc1VuZGVmaW5lZCgp
KQpAQCAtODUwLDExICs4NTAsMTEgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93
blByb3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnQKIAogICAgIGlm
ICghaXNUYXJnZXREZXNjcmlwdG9yRGVmaW5lZCkgewogICAgICAgICBpZiAoIXRhcmdldElzRXh0
ZW5zaWJsZSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91
Z2ggZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIG9mIHRoZSBQcm94eSdzIHRhcmdldCByZXR1cm5l
ZCB1bmRlZmluZWQgYW5kIHRoZSB0YXJnZXQgaXMgbm9uLWV4dGVuc2libGUiX3MpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ2RlZmlu
ZVByb3BlcnR5JyB0cmFwIHJldHVybmVkIHRydWUgZXZlbiB0aG91Z2ggZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yIG9mIHRoZSBQcm94eSdzIHRhcmdldCByZXR1cm5lZCB1bmRlZmluZWQgYW5kIHRo
ZSB0YXJnZXQgaXMgbm9uLWV4dGVuc2libGUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHNldHRpbmdDb25maWd1cmFibGVUb0ZhbHNlKSB7
Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkn
cyAnZGVmaW5lUHJvcGVydHknIHRyYXAgcmV0dXJuZWQgdHJ1ZSBmb3IgYSBub24tY29uZmlndXJh
YmxlIGZpZWxkIGV2ZW4gdGhvdWdoIGdldE93blByb3BlcnR5RGVzY3JpcHRvciBvZiB0aGUgUHJv
eHkncyB0YXJnZXQgcmV0dXJuZWQgdW5kZWZpbmVkIl9zKTsKKyAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJh
cCByZXR1cm5lZCB0cnVlIGZvciBhIG5vbi1jb25maWd1cmFibGUgZmllbGQgZXZlbiB0aG91Z2gg
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIG9mIHRoZSBQcm94eSdzIHRhcmdldCByZXR1cm5lZCB1
bmRlZmluZWQiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIApA
QCAtODY4LDE2ICs4NjgsMTYgQEAgYm9vbCBQcm94eU9iamVjdDo6cGVyZm9ybURlZmluZU93blBy
b3BlcnR5KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3BlcnQKICAgICBib29sIGlz
Q29tcGF0aWJsZURlc2NyaXB0b3IgPSB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9y
KGdsb2JhbE9iamVjdCwgbnVsbHB0ciwgcHJvcGVydHlOYW1lLCB0YXJnZXRJc0V4dGVuc2libGUs
IGRlc2NyaXB0b3IsIGlzQ3VycmVudERlZmluZWQsIGN1cnJlbnQsIHRocm93RXhjZXB0aW9uKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7ICAgIAogICAgIGlmICghaXND
b21wYXRpYmxlRGVzY3JpcHRvcikgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiUHJveHkncyAnZGVmaW5lUHJvcGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUg
YSBwcm9wZXJ0eSBvbiBpdHMgdGFyZ2V0IHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB0cmFw
J3MgaW5wdXQgZGVzY3JpcHRvciJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCBkaWQgbm90IGRlZmlu
ZSBhIHByb3BlcnR5IG9uIGl0cyB0YXJnZXQgdGhhdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHRy
YXAncyBpbnB1dCBkZXNjcmlwdG9yIl9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIGlmIChzZXR0aW5nQ29uZmlndXJhYmxlVG9GYWxzZSAmJiB0YXJnZXREZXNjcmlwdG9y
LmNvbmZpZ3VyYWJsZSgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJQcm94eSdzICdkZWZpbmVQcm9wZXJ0eScgdHJhcCBkaWQgbm90IGRlZmluZSBhIG5v
bi1jb25maWd1cmFibGUgcHJvcGVydHkgb24gaXRzIHRhcmdldCBldmVuIHRob3VnaCB0aGUgaW5w
dXQgZGVzY3JpcHRvciB0byB0aGUgdHJhcCBzYWlkIGl0IG11c3QgZG8gc28iX3MpOworICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkncyAnZGVmaW5lUHJv
cGVydHknIHRyYXAgZGlkIG5vdCBkZWZpbmUgYSBub24tY29uZmlndXJhYmxlIHByb3BlcnR5IG9u
IGl0cyB0YXJnZXQgZXZlbiB0aG91Z2ggdGhlIGlucHV0IGRlc2NyaXB0b3IgdG8gdGhlIHRyYXAg
c2FpZCBpdCBtdXN0IGRvIHNvIl9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIGlmICh0YXJnZXREZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAmJiAhdGFyZ2V0RGVz
Y3JpcHRvci5jb25maWd1cmFibGUoKSAmJiB0YXJnZXREZXNjcmlwdG9yLndyaXRhYmxlKCkpIHsK
ICAgICAgICAgaWYgKGRlc2NyaXB0b3Iud3JpdGFibGVQcmVzZW50KCkgJiYgIWRlc2NyaXB0b3Iu
d3JpdGFibGUoKSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0cmFwIHJldHVybmVkIHRydWUgZm9yIGEg
bm9uLXdyaXRhYmxlIGlucHV0IGRlc2NyaXB0b3Igd2hlbiB0aGUgdGFyZ2V0J3MgcHJvcGVydHkg
aXMgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgd3JpdGFibGUiX3MpOworICAgICAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5J3MgJ2RlZmluZVByb3BlcnR5JyB0
cmFwIHJldHVybmVkIHRydWUgZm9yIGEgbm9uLXdyaXRhYmxlIGlucHV0IGRlc2NyaXB0b3Igd2hl
biB0aGUgdGFyZ2V0J3MgcHJvcGVydHkgaXMgbm9uLWNvbmZpZ3VyYWJsZSBhbmQgd3JpdGFibGUi
X3N0cik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC05
MDksNyArOTA5LDcgQEAgdm9pZCBQcm94eU9iamVjdDo6cGVyZm9ybUdldE93blByb3BlcnR5TmFt
ZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUHJvcGUKIAogICAgIEpTT2JqZWN0KiBo
YW5kbGVyID0ganNDYXN0PEpTT2JqZWN0Kj4oaGFuZGxlclZhbHVlKTsKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKLSAgICBKU1ZhbHVlIG93bktleXNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2Qo
Z2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJvd25LZXlzIiksICIn
b3duS2V5cycgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxl
Il9zKTsKKyAgICBKU1ZhbHVlIG93bktleXNNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xv
YmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJvd25LZXlzIiksICInb3du
S2V5cycgcHJvcGVydHkgb2YgYSBQcm94eSdzIGhhbmRsZXIgc2hvdWxkIGJlIGNhbGxhYmxlIl9z
dHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHZvaWQoKSk7CiAgICAgSlNPYmpl
Y3QqIHRhcmdldCA9IHRoaXMtPnRhcmdldCgpOwogICAgIGlmIChvd25LZXlzTWV0aG9kLmlzVW5k
ZWZpbmVkKCkpIHsKQEAgLTkyNSwxNCArOTI1LDE0IEBAIHZvaWQgUHJveHlPYmplY3Q6OnBlcmZv
cm1HZXRPd25Qcm9wZXJ0eU5hbWVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFByb3Bl
CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgdm9pZCgpKTsKIAogICAgIGlmICghdHJh
cFJlc3VsdC5pc09iamVjdCgpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3MgJ293bktleXMnIG1ldGhvZCBtdXN0IHJldHVybiBh
biBvYmplY3QiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUHJveHkgaGFuZGxlcidzICdvd25LZXlzJyBtZXRob2QgbXVzdCByZXR1cm4gYW4gb2JqZWN0
Il9zdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgSGFzaFNldDxVbmlxdWVkU3Ry
aW5nSW1wbCo+IHVuY2hlY2tlZFJlc3VsdEtleXM7CiAgICAgZm9yRWFjaEluQXJyYXlMaWtlKGds
b2JhbE9iamVjdCwgYXNPYmplY3QodHJhcFJlc3VsdCksIFsmXSAoSlNWYWx1ZSB2YWx1ZSkgLT4g
Ym9vbCB7CiAgICAgICAgIGlmICghdmFsdWUuaXNTdHJpbmcoKSAmJiAhdmFsdWUuaXNTeW1ib2wo
KSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlBy
b3h5IGhhbmRsZXIncyAnb3duS2V5cycgbWV0aG9kIG11c3QgcmV0dXJuIGFuIGFycmF5LWxpa2Ug
b2JqZWN0IGNvbnRhaW5pbmcgb25seSBTdHJpbmdzIGFuZCBTeW1ib2xzIl9zKTsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSBoYW5kbGVyJ3Mg
J293bktleXMnIG1ldGhvZCBtdXN0IHJldHVybiBhbiBhcnJheS1saWtlIG9iamVjdCBjb250YWlu
aW5nIG9ubHkgU3RyaW5ncyBhbmQgU3ltYm9scyJfc3RyKTsKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgfQogCkBAIC05NDAsNyArOTQwLDcgQEAgdm9pZCBQcm94eU9iamVjdDo6
cGVyZm9ybUdldE93blByb3BlcnR5TmFtZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
UHJvcGUKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZmFsc2UpOwogCiAgICAg
ICAgIGlmICghdW5jaGVja2VkUmVzdWx0S2V5cy5hZGQoaWRlbnQuaW1wbCgpKS5pc05ld0VudHJ5
KSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJv
eHkgaGFuZGxlcidzICdvd25LZXlzJyB0cmFwIHJlc3VsdCBtdXN0IG5vdCBjb250YWluIGFueSBk
dXBsaWNhdGUgbmFtZXMiX3MpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlByb3h5IGhhbmRsZXIncyAnb3duS2V5cycgdHJhcCByZXN1bHQgbXVzdCBu
b3QgY29udGFpbiBhbnkgZHVwbGljYXRlIG5hbWVzIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICB9CiAKQEAgLTk4Myw3ICs5ODMsNyBAQCB2b2lkIFByb3h5T2JqZWN0
OjpwZXJmb3JtR2V0T3duUHJvcGVydHlOYW1lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBQcm9wZQogICAgICAgICB9CiAKICAgICAgICAgaWYgKHVuY2hlY2tlZFJlc3VsdEtleXMuc2l6
ZSgpKSB7Ci0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UHJveHkgaGFuZGxlcidzICdvd25LZXlzJyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMg
bm90IHByZXNlbnQgaW4gaXRzIG5vbi1leHRlbnNpYmxlIHRhcmdldCJfcyk7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgaGFuZGxlcidzICdv
d25LZXlzJyBtZXRob2QgcmV0dXJuZWQgYSBrZXkgdGhhdCB3YXMgbm90IHByZXNlbnQgaW4gaXRz
IG5vbi1leHRlbnNpYmxlIHRhcmdldCJfc3RyKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgfQogICAgIH0KQEAgLTEwNDAsNyArMTA0MCw3IEBAIGJvb2wgUHJveHlPYmplY3Q6OnBlcmZv
cm1TZXRQcm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90
CiAKICAgICBKU09iamVjdCogaGFuZGxlciA9IGpzQ2FzdDxKU09iamVjdCo+KGhhbmRsZXJWYWx1
ZSk7CiAgICAgQ2FsbERhdGEgY2FsbERhdGE7Ci0gICAgSlNWYWx1ZSBzZXRQcm90b3R5cGVPZk1l
dGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3QsIGNhbGxEYXRhLCBtYWtlSWRl
bnRpZmllcih2bSwgInNldFByb3RvdHlwZU9mIiksICInc2V0UHJvdG90eXBlT2YnIHByb3BlcnR5
IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJsZSJfcyk7CisgICAgSlNWYWx1
ZSBzZXRQcm90b3R5cGVPZk1ldGhvZCA9IGhhbmRsZXItPmdldE1ldGhvZChnbG9iYWxPYmplY3Qs
IGNhbGxEYXRhLCBtYWtlSWRlbnRpZmllcih2bSwgInNldFByb3RvdHlwZU9mIiksICInc2V0UHJv
dG90eXBlT2YnIHByb3BlcnR5IG9mIGEgUHJveHkncyBoYW5kbGVyIHNob3VsZCBiZSBjYWxsYWJs
ZSJfc3RyKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CiAKICAgICBK
U09iamVjdCogdGFyZ2V0ID0gdGhpcy0+dGFyZ2V0KCk7CkBAIC0xMDU5LDcgKzEwNTksNyBAQCBi
b29sIFByb3h5T2JqZWN0OjpwZXJmb3JtU2V0UHJvdG90eXBlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdAogICAgIAogICAgIGlmICghdHJhcFJlc3VsdEFzQm9vbCkg
ewogICAgICAgICBpZiAoc2hvdWxkVGhyb3dJZkNhbnRTZXQpCi0gICAgICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgJ3NldFByb3RvdHlwZU9mJyByZXR1
cm5lZCBmYWxzZSBpbmRpY2F0aW5nIGl0IGNvdWxkIG5vdCBzZXQgdGhlIHByb3RvdHlwZSB2YWx1
ZS4gVGhlIG9wZXJhdGlvbiB3YXMgZXhwZWN0ZWQgdG8gc3VjY2VlZCJfcyk7CisgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgJ3NldFByb3RvdHlw
ZU9mJyByZXR1cm5lZCBmYWxzZSBpbmRpY2F0aW5nIGl0IGNvdWxkIG5vdCBzZXQgdGhlIHByb3Rv
dHlwZSB2YWx1ZS4gVGhlIG9wZXJhdGlvbiB3YXMgZXhwZWN0ZWQgdG8gc3VjY2VlZCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTA3Myw3ICsxMDczLDcgQEAgYm9v
bCBQcm94eU9iamVjdDo6cGVyZm9ybVNldFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3QKICAgICBib29sIGlzU2FtZSA9IHNhbWVWYWx1ZShnbG9iYWxP
YmplY3QsIHByb3RvdHlwZSwgdGFyZ2V0UHJvdG90eXBlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBmYWxzZSk7CiAgICAgaWYgKCFpc1NhbWUpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5ICdzZXRQcm90b3R5cGVPZicgdHJhcCBy
ZXR1cm5lZCB0cnVlIHdoZW4gaXRzIHRhcmdldCBpcyBub24tZXh0ZW5zaWJsZSBhbmQgdGhlIG5l
dyBwcm90b3R5cGUgdmFsdWUgaXMgbm90IHRoZSBzYW1lIGFzIHRoZSBjdXJyZW50IHByb3RvdHlw
ZSB2YWx1ZS4gSXQgc2hvdWxkIGhhdmUgcmV0dXJuZWQgZmFsc2UiX3MpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkgJ3NldFByb3RvdHlwZU9mJyB0
cmFwIHJldHVybmVkIHRydWUgd2hlbiBpdHMgdGFyZ2V0IGlzIG5vbi1leHRlbnNpYmxlIGFuZCB0
aGUgbmV3IHByb3RvdHlwZSB2YWx1ZSBpcyBub3QgdGhlIHNhbWUgYXMgdGhlIGN1cnJlbnQgcHJv
dG90eXBlIHZhbHVlLiBJdCBzaG91bGQgaGF2ZSByZXR1cm5lZCBmYWxzZSJfc3RyKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtMTEwNCw3ICsxMTA0LDcgQEAgSlNWYWx1ZSBQ
cm94eU9iamVjdDo6cGVyZm9ybUdldFByb3RvdHlwZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogCiAgICAgSlNPYmplY3QqIGhhbmRsZXIgPSBqc0Nhc3Q8SlNPYmplY3QqPihoYW5kbGVy
VmFsdWUpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwotICAgIEpTVmFsdWUgZ2V0UHJvdG90eXBl
T2ZNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2JqZWN0LCBjYWxsRGF0YSwgbWFr
ZUlkZW50aWZpZXIodm0sICJnZXRQcm90b3R5cGVPZiIpLCAiJ2dldFByb3RvdHlwZU9mJyBwcm9w
ZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2FsbGFibGUiX3MpOworICAgIEpT
VmFsdWUgZ2V0UHJvdG90eXBlT2ZNZXRob2QgPSBoYW5kbGVyLT5nZXRNZXRob2QoZ2xvYmFsT2Jq
ZWN0LCBjYWxsRGF0YSwgbWFrZUlkZW50aWZpZXIodm0sICJnZXRQcm90b3R5cGVPZiIpLCAiJ2dl
dFByb3RvdHlwZU9mJyBwcm9wZXJ0eSBvZiBhIFByb3h5J3MgaGFuZGxlciBzaG91bGQgYmUgY2Fs
bGFibGUiX3N0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAg
IEpTT2JqZWN0KiB0YXJnZXQgPSB0aGlzLT50YXJnZXQoKTsKQEAgLTExMTgsNyArMTExOCw3IEBA
IEpTVmFsdWUgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQcm90b3R5cGUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgaWYgKCF0cmFwUmVzdWx0LmlzT2JqZWN0KCkgJiYgIXRyYXBSZXN1bHQuaXNOdWxsKCkpIHsK
LSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlByb3h5IGhhbmRs
ZXIncyAnZ2V0UHJvdG90eXBlT2YnIHRyYXAgc2hvdWxkIGVpdGhlciByZXR1cm4gYW4gb2JqZWN0
IG9yIG51bGwiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUHJveHkgaGFuZGxlcidzICdnZXRQcm90b3R5cGVPZicgdHJhcCBzaG91bGQgZWl0aGVyIHJl
dHVybiBhbiBvYmplY3Qgb3IgbnVsbCJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKQEAgLTExMzIsNyArMTEzMiw3IEBAIEpTVmFsdWUgUHJveHlPYmplY3Q6OnBlcmZvcm1HZXRQ
cm90b3R5cGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBib29sIGlzU2FtZSA9
IHNhbWVWYWx1ZShnbG9iYWxPYmplY3QsIHRhcmdldFByb3RvdHlwZSwgdHJhcFJlc3VsdCk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoIWlzU2FtZSkgewot
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUHJveHkncyAnZ2V0
UHJvdG90eXBlT2YnIHRyYXAgZm9yIGEgbm9uLWV4dGVuc2libGUgdGFyZ2V0IHNob3VsZCByZXR1
cm4gdGhlIHNhbWUgdmFsdWUgYXMgdGhlIHRhcmdldCdzIHByb3RvdHlwZSJfcyk7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQcm94eSdzICdnZXRQcm90b3R5
cGVPZicgdHJhcCBmb3IgYSBub24tZXh0ZW5zaWJsZSB0YXJnZXQgc2hvdWxkIHJldHVybiB0aGUg
c2FtZSB2YWx1ZSBhcyB0aGUgdGFyZ2V0J3MgcHJvdG90eXBlIl9zdHIpOwogICAgICAgICByZXR1
cm4geyB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVmbGVjdE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZs
ZWN0T2JqZWN0LmNwcAppbmRleCAwODczN2RhYTc1NjIzN2Y2Y2EyZTA5ZGM4YzFhZDc1ZDFkYjhj
NTE2Li5iYTgwMzUyMjc5NzIyYzQ3ODI5ZDljYWUwNmY2NzI4NWViNWRlZTJjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcApAQCAtOTIsMjMg
KzkyLDIzIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2JqZWN0Q29uc3RydWN0
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKIAogICAgIEpTVmFsdWUgdGFyZ2V0ID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUg
YSBjb25zdHJ1Y3RvciJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJl
cyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYSBjb25zdHJ1Y3RvciJfc3RyKSk7CiAKICAgICBhdXRv
IGNvbnN0cnVjdERhdGEgPSBnZXRDb25zdHJ1Y3REYXRhKHZtLCB0YXJnZXQpOwogICAgIGlmIChj
b25zdHJ1Y3REYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJl
ZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhIGNvbnN0cnVj
dG9yIl9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3QuY29uc3RydWN0IHJlcXVpcmVzIHRoZSBmaXJz
dCBhcmd1bWVudCBiZSBhIGNvbnN0cnVjdG9yIl9zdHIpKTsKIAogICAgIEpTVmFsdWUgbmV3VGFy
Z2V0ID0gdGFyZ2V0OwogICAgIGlmIChjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7
CiAgICAgICAgIG5ld1RhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMik7CiAgICAgICAgIGlm
ICghbmV3VGFyZ2V0LmlzQ29uc3RydWN0b3Iodm0pKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5j
b25zdHJ1Y3QgcmVxdWlyZXMgdGhlIHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYg
cHJlc2VudCJfcykpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5jb25zdHJ1Y3QgcmVxdWlyZXMg
dGhlIHRoaXJkIGFyZ3VtZW50IGJlIGEgY29uc3RydWN0b3IgaWYgcHJlc2VudCJfc3RyKSk7CiAg
ICAgfQogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJndW1lbnRzOwogICAgIEpTT2JqZWN0
KiBhcmd1bWVudHNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4odm0sIGNhbGxGcmFt
ZS0+YXJndW1lbnQoMSkpOwogICAgIGlmICghYXJndW1lbnRzT2JqZWN0KQotICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJS
ZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGFuIG9iamVj
dCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmNvbnN0cnVjdCByZXF1aXJlcyB0aGUgc2Vjb25k
IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfc3RyKSk7CiAKICAgICBmb3JFYWNoSW5BcnJheUxpa2Uo
Z2xvYmFsT2JqZWN0LCBhcmd1bWVudHNPYmplY3QsIFsmXSAoSlNWYWx1ZSB2YWx1ZSkgLT4gYm9v
bCB7CiAgICAgICAgIGFyZ3VtZW50cy5hcHBlbmQodmFsdWUpOwpAQCAtMTMxLDcgKzEzMSw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2JqZWN0RGVmaW5lUHJvcGVydHksIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKICAgICBKU1ZhbHVlIHRhcmdldCA9IGNhbGxGcmFt
ZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVmbGVjdC5kZWZpbmVQcm9wZXJ0eSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4g
b2JqZWN0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3QuZGVmaW5lUHJvcGVydHkgcmVxdWlyZXMg
dGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfc3RyKSk7CiAgICAgYXV0byBwcm9wZXJ0
eU5hbWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKIApA
QCAtMTU3LDcgKzE1Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2JqZWN0
R2V0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBKU1ZhbHVl
IHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNPYmpl
Y3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5nZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50
IGJlIGFuIG9iamVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmdldCByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zdHIpKTsKIAogICAgIGNvbnN0IElkZW50aWZp
ZXIgcHJvcGVydHlOYW1lID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKS50b1Byb3BlcnR5S2V5KGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CkBAIC0xNzgsNyArMTc4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZmxl
Y3RPYmplY3RHZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IsIChKU0dsb2JhbE9iamVjdCoKIAogICAg
IEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdl
dC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
ciByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CisgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlJlZmxlY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIHJlcXVpcmVzIHRoZSBmaXJzdCBh
cmd1bWVudCBiZSBhbiBvYmplY3QiX3N0cikpOwogCiAgICAgYXV0byBrZXkgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTE5NCw3ICsxOTQsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVmbGVjdE9iamVjdEdldFByb3RvdHlwZU9mLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iagogCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJl
ZmxlY3QuZ2V0UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9i
amVjdCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LmdldFByb3RvdHlwZU9mIHJlcXVpcmVzIHRo
ZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3N0cikpOwogICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRhcmdldCktPmdldFByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KSkpOwogfQogCkBAIC0yMDYsNyArMjA2LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHJlZmxlY3RPYmplY3RJc0V4dGVuc2libGUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWMKIAogICAgIEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0Lmlz
RXh0ZW5zaWJsZSByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7
CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlJlZmxlY3QuaXNFeHRlbnNpYmxlIHJlcXVpcmVzIHRoZSBmaXJzdCBhcmd1
bWVudCBiZSBhbiBvYmplY3QiX3N0cikpOwogCiAgICAgYm9vbCBpc0V4dGVuc2libGUgPSBhc09i
amVjdCh0YXJnZXQpLT5pc0V4dGVuc2libGUoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKQEAgLTIyMSw3ICsyMjEsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVmbGVjdE9iamVjdE93bktleXMsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDYQogCiAgICAgSlNWYWx1ZSB0YXJnZXQgPSBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApOwogICAgIGlmICghdGFyZ2V0LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJl
ZmxlY3Qub3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9z
KSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlJlZmxlY3Qub3duS2V5cyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1l
bnQgYmUgYW4gb2JqZWN0Il9zdHIpKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShvd25Qcm9wZXJ0eUtleXMoZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8SlNPYmpl
Y3QqPih0YXJnZXQpLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdzQW5kU3ltYm9scywgRG9udEVu
dW1Qcm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSwgc3RkOjpudWxsb3B0KSkpOwogfQogCkBAIC0yMzMs
NyArMjMzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZmxlY3RPYmplY3RQcmV2ZW50
RXh0ZW5zaW9ucywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWwKIAogICAgIEpTVmFsdWUgdGFyZ2V0
ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQot
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJSZWZsZWN0LnByZXZlbnRFeHRlbnNpb25zIHJlcXVpcmVzIHRoZSBmaXJzdCBh
cmd1bWVudCBiZSBhbiBvYmplY3QiX3MpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5wcmV2ZW50RXh0
ZW5zaW9ucyByZXF1aXJlcyB0aGUgZmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zdHIpKTsK
ICAgICBKU09iamVjdCogb2JqZWN0ID0gYXNPYmplY3QodGFyZ2V0KTsKICAgICBib29sIHJlc3Vs
dCA9IG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5wcmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGds
b2JhbE9iamVjdCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CkBAIC0yNDgsNyArMjQ4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZmxl
Y3RPYmplY3RTZXQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKIAogICAg
IEpTVmFsdWUgdGFyZ2V0ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXRhcmdl
dC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LnNldCByZXF1aXJlcyB0aGUgZmlyc3Qg
YXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3Quc2V0IHJlcXVp
cmVzIHRoZSBmaXJzdCBhcmd1bWVudCBiZSBhbiBvYmplY3QiX3N0cikpOwogICAgIEpTT2JqZWN0
KiB0YXJnZXRPYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwogCiAgICAgYXV0byBwcm9wZXJ0eU5h
bWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZ2xvYmFsT2JqZWN0KTsK
QEAgLTI3MiwxMCArMjcyLDEwIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWZsZWN0T2Jq
ZWN0U2V0UHJvdG90eXBlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAKICAgICBKU1Zh
bHVlIHRhcmdldCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0YXJnZXQuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVjdC5zZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUg
Zmlyc3QgYXJndW1lbnQgYmUgYW4gb2JqZWN0Il9zKSk7CisgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZmxlY3Quc2V0
UHJvdG90eXBlT2YgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9iamVjdCJfc3Ry
KSk7CiAgICAgSlNWYWx1ZSBwcm90byA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7CiAgICAgaWYg
KCFwcm90by5pc09iamVjdCgpICYmICFwcm90by5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVmbGVj
dC5zZXRQcm90b3R5cGVPZiByZXF1aXJlcyB0aGUgc2Vjb25kIGFyZ3VtZW50IGJlIGVpdGhlciBh
biBvYmplY3Qgb3IgbnVsbCJfcykpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWZsZWN0LnNldFByb3RvdHlwZU9m
IHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUgZWl0aGVyIGFuIG9iamVjdCBvciBudWxs
Il9zdHIpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJnZXQpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHAuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwLmNwcAppbmRleCA0NDkwOWQxNjk0YmM1
NWM3NWIyNzdjYzUxNjAwMDAyODRiNGFkMzJmLi5jOTQxMDE3NjUzMjA0NGVmZWUxOThkNmU5OWM3
MDc3Yzc2ZjhhZjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cC5jcHAK
QEAgLTUxNCw3ICs1MTQsNyBAQCBzdGF0aWMgaW5saW5lIFN0cmluZyBlc2NhcGVQYXR0ZXJuKGNv
bnN0IFN0cmluZyYgcGF0dGVybiwgY29uc3QgQ2hhcmFjdGVyVHlwZSogYwogICAgIC8vIHNvdXJj
ZSBjYW5ub3QgZXZlciB2YWxpZGx5IGJlICIiLiBJZiB0aGUgc291cmNlIGlzIGVtcHR5LCByZXR1
cm4gYSBkaWZmZXJlbnQgUGF0dGVybgogICAgIC8vIHRoYXQgd291bGQgbWF0Y2ggdGhlIHNhbWUg
dGhpbmcuCiAgICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiAiKD86KSJfczsKKyAgICAg
ICAgcmV0dXJuICIoPzopIl9zdHI7CiAKICAgICAvLyBlYXJseSByZXR1cm4gZm9yIHN0cmluZ3Mg
dGhhdCBkb24ndCBjb250YWluIGEgZm9yd2FyZHMgc2xhc2ggYW5kIExpbmVUZXJtaW5hdG9yCiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBDb25zdHJ1Y3Rvci5jcHAKaW5kZXggZmQ0
YzkyYjM0MTFjNTlkZWJhYTZmYjgwYmY5MDJjMTkzZjhjODhjYS4uZWE1YTYxZTcyMGEyYmRmMDc0
YzExMGI0OTQ4NDVlYWI0NTQyZWM3YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvUmVnRXhwQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZ0V4cENvbnN0cnVjdG9yLmNwcApAQCAtOTcsNyArOTcsNyBAQCBKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIocmVnRXhwQ29uc3RydWN0b3JEb2xsYXIsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKEpTVmFsdWU6OmRl
Y29kZSh0aGlzVmFsdWUpICE9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKSkKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4
cC4kTiBnZXR0ZXJzIHJlcXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdF
eHAuJE4gZ2V0dGVycyByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3N0cik7
CiAgICAgdW5zaWduZWQgTiA9IHByb3BlcnR5TmFtZS51aWQoKS0+YXQoMSkgLSAnMCc7CiAgICAg
QVNTRVJUKE4gPj0gMSAmJiBOIDw9IDkpOwogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwg
SlNWYWx1ZTo6ZW5jb2RlKGdsb2JhbE9iamVjdC0+cmVnRXhwR2xvYmFsRGF0YSgpLmdldEJhY2ty
ZWYoZ2xvYmFsT2JqZWN0LCBOKSkpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIEpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUihyZWdFeHBDb25zdHJ1Y3RvcklucHV0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUodGhp
c1ZhbHVlKSAhPSBnbG9iYWxPYmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAuaW5wdXQg
Z2V0dGVyIHJlcXVpcmVzIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3MpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLmlu
cHV0IGdldHRlciByZXF1aXJlcyBSZWdFeHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9zdHIpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxEYXRh
KCkuaW5wdXQoKSk7CiB9CiAKQEAgLTExNyw3ICsxMTcsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIocmVnRXhwQ29uc3RydWN0b3JNdWx0aWxpbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZQogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgaWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpICE9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29uc3RydWN0b3IoKSkKLSAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5tdWx0aWxpbmUg
Z2V0dGVyIHJlcXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAubXVs
dGlsaW5lIGdldHRlciByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3N0cik7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZ2xvYmFsT2JqZWN0LT5yZWdF
eHBHbG9iYWxEYXRhKCkubXVsdGlsaW5lKCkpKTsKIH0KIApAQCAtMTI2LDcgKzEyNiw3IEBAIEpT
Q19ERUZJTkVfQ1VTVE9NX0dFVFRFUihyZWdFeHBDb25zdHJ1Y3Rvckxhc3RNYXRjaCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkgIT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25zdHJ1Y3Rvcigp
KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
UmVnRXhwLmxhc3RNYXRjaCBnZXR0ZXIgcmVxdWlyZSBSZWdFeHAgY29uc3RydWN0b3IgYXMgfHRo
aXN8Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlJlZ0V4cC5sYXN0TWF0Y2ggZ2V0dGVyIHJlcXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9y
IGFzIHx0aGlzfCJfc3RyKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShnbG9iYWxPYmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRCYWNrcmVmKGdsb2Jh
bE9iamVjdCwgMCkpKTsKIH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9N
X0dFVFRFUihyZWdFeHBDb25zdHJ1Y3Rvckxhc3RQYXJlbiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBpZiAoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNW
YWx1ZSkgIT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25zdHJ1Y3RvcigpKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVnRXhwLmxhc3RQYXJl
biBnZXR0ZXIgcmVxdWlyZSBSZWdFeHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5s
YXN0UGFyZW4gZ2V0dGVyIHJlcXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfc3Ry
KTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnbG9iYWxP
YmplY3QtPnJlZ0V4cEdsb2JhbERhdGEoKS5nZXRMYXN0UGFyZW4oZ2xvYmFsT2JqZWN0KSkpOwog
fQogCkBAIC0xNDQsNyArMTQ0LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHJlZ0V4cENv
bnN0cnVjdG9yTGVmdENvbnRleHQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2IKICAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOwogICAgIGlmIChKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSAhPSBnbG9iYWxP
YmplY3QtPnJlZ0V4cENvbnN0cnVjdG9yKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAubGVmdENvbnRleHQgZ2V0dGVyIHJlcXVp
cmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfcyk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAubGVmdENvbnRleHQgZ2V0
dGVyIHJlcXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfc3RyKTsKICAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShnbG9iYWxPYmplY3QtPnJlZ0V4
cEdsb2JhbERhdGEoKS5nZXRMZWZ0Q29udGV4dChnbG9iYWxPYmplY3QpKSk7CiB9CiAKQEAgLTE1
Myw3ICsxNTMsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIocmVnRXhwQ29uc3RydWN0b3JS
aWdodENvbnRleHQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CiAgICAgaWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpICE9IGdsb2JhbE9iamVjdC0+cmVn
RXhwQ29uc3RydWN0b3IoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5yaWdodENvbnRleHQgZ2V0dGVyIHJlcXVpcmUgUmVnRXhw
IGNvbnN0cnVjdG9yIGFzIHx0aGlzfCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJSZWdFeHAucmlnaHRDb250ZXh0IGdldHRlciByZXF1
aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhpc3wiX3N0cik7CiAgICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoZ2xvYmFsT2JqZWN0LT5yZWdFeHBHbG9iYWxE
YXRhKCkuZ2V0UmlnaHRDb250ZXh0KGdsb2JhbE9iamVjdCkpKTsKIH0KIApAQCAtMTYyLDcgKzE2
Miw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX1NFVFRFUihzZXRSZWdFeHBDb25zdHJ1Y3RvcklucHV0
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBp
ZiAoSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkgIT0gZ2xvYmFsT2JqZWN0LT5yZWdFeHBDb25z
dHJ1Y3RvcigpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJSZWdFeHAuaW5wdXQgc2V0dGVycyByZXF1aXJlIFJlZ0V4cCBjb25zdHJ1Y3RvciBhcyB8dGhp
c3wiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVn
RXhwLmlucHV0IHNldHRlcnMgcmVxdWlyZSBSZWdFeHAgY29uc3RydWN0b3IgYXMgfHRoaXN8Il9z
dHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGF1dG8qIHN0cmluZyA9IEpT
VmFsdWU6OmRlY29kZSh2YWx1ZSkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKQEAgLTE3Nyw3ICsx
NzcsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9TRVRURVIoc2V0UmVnRXhwQ29uc3RydWN0b3JNdWx0
aWxpbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsTwogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAg
aWYgKEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpICE9IGdsb2JhbE9iamVjdC0+cmVnRXhwQ29u
c3RydWN0b3IoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiUmVnRXhwLm11bHRpbGluZSBzZXR0ZXJzIHJlcXVpcmUgUmVnRXhwIGNvbnN0cnVjdG9yIGFz
IHx0aGlzfCJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJSZWdFeHAubXVsdGlsaW5lIHNldHRlcnMgcmVxdWlyZSBSZWdFeHAgY29uc3RydWN0b3IgYXMg
fHRoaXN8Il9zdHIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGJvb2wgbXVs
dGlsaW5lID0gSlNWYWx1ZTo6ZGVjb2RlKHZhbHVlKS50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsK
QEAgLTIxMyw3ICsyMTMsNyBAQCBpbmxpbmUgT3B0aW9uU2V0PFlhcnI6OkZsYWdzPiB0b0ZsYWdz
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgZmxhZwogICAgIGF1dG8gcmVz
dWx0ID0gWWFycjo6cGFyc2VGbGFncyhmbGFncy50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIGlmICghcmVzdWx0KSB7
Ci0gICAgICAgIHRocm93U3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQg
ZmxhZ3Mgc3VwcGxpZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiJfcyk7CisgICAgICAgIHRocm93
U3ludGF4RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgZmxhZ3Mgc3VwcGxpZWQg
dG8gUmVnRXhwIGNvbnN0cnVjdG9yLiJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUu
Y3BwCmluZGV4IDU4MjRhNDJjM2I2YTE1NzNmMDAxNjU1YTY5MmQ2NzlmZGZhMDA5ZjQuLmQwMTQw
Y2QxZGMwMDY4NWVmMWM0MWU5YTliY2Q2NDM1OWVkNWMyNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcApAQCAtMTMzLDEwICsxMzMs
MTAgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlKTsKIAogICAgIGlmICh0aGlzUmVnRXhwLT5nbG9iYWxP
YmplY3Qodm0pICE9IGdsb2JhbE9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlJlZ0V4cC5wcm90b3R5cGUuY29tcGlsZSBmdW5jdGlv
bidzIFJlYWxtIG11c3QgYmUgdGhlIHNhbWUgdG8gfHRoaXN8IFJlZ0V4cCBvYmplY3QiX3MpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUmVn
RXhwLnByb3RvdHlwZS5jb21waWxlIGZ1bmN0aW9uJ3MgUmVhbG0gbXVzdCBiZSB0aGUgc2FtZSB0
byB8dGhpc3wgUmVnRXhwIG9iamVjdCJfc3RyKTsKIAogICAgIGlmICghdGhpc1JlZ0V4cC0+YXJl
TGVnYWN5RmVhdHVyZXNFbmFibGVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJ8dGhpc3wgUmVnRXhwIG9iamVjdCdzIGxlZ2FjeSBmZWF0
dXJlcyBhcmUgbm90IGVuYWJsZWQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAifHRoaXN8IFJlZ0V4cCBvYmplY3QncyBsZWdhY3kgZmVh
dHVyZXMgYXJlIG5vdCBlbmFibGVkIl9zdHIpOwogCiAgICAgUmVnRXhwKiByZWdFeHA7CiAgICAg
SlNWYWx1ZSBhcmcwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKQEAgLTE0NCw3ICsxNDQsNyBA
QCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9GdW5jQ29tcGlsZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgCiAgICAgaWYgKGF1dG8qIHJlZ0V4cE9iamVj
dCA9IGpzRHluYW1pY0Nhc3Q8UmVnRXhwT2JqZWN0Kj4odm0sIGFyZzApKSB7CiAgICAgICAgIGlm
ICghYXJnMS5pc1VuZGVmaW5lZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1
Y3Rpbmcgb25lIFJlZ0V4cCBmcm9tIGFub3RoZXIuIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qgc3VwcGx5IGZsYWdz
IHdoZW4gY29uc3RydWN0aW5nIG9uZSBSZWdFeHAgZnJvbSBhbm90aGVyLiJfc3RyKTsKICAgICAg
ICAgcmVnRXhwID0gcmVnRXhwT2JqZWN0LT5yZWdFeHAoKTsKICAgICB9IGVsc2UgewogICAgICAg
ICBTdHJpbmcgcGF0dGVybiA9IGFyZzAuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5nKCkgOiBh
cmcwLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CkBAIC0xNTMsNyArMTUzLDcgQEAgSlNDX0RF
RklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvRnVuY0NvbXBpbGUsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LAogICAgICAgICBhdXRvIGZsYWdzID0gYXJnMS5pc1VuZGVmaW5lZCgp
ID8gc3RkOjptYWtlX29wdGlvbmFsKE9wdGlvblNldDxZYXJyOjpGbGFncz4geyB9KSA6IFlhcnI6
OnBhcnNlRmxhZ3MoYXJnMS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpKTsKICAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmICgh
ZmxhZ3MpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2JhbE9iamVjdCwgIkludmFsaWQgZmxhZ3Mgc3VwcGxp
ZWQgdG8gUmVnRXhwIGNvbnN0cnVjdG9yLiJfcykpOworICAgICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVTeW50YXhFcnJvcihnbG9iYWxPYmpl
Y3QsICJJbnZhbGlkIGZsYWdzIHN1cHBsaWVkIHRvIFJlZ0V4cCBjb25zdHJ1Y3Rvci4iX3N0cikp
OwogCiAgICAgICAgIHJlZ0V4cCA9IFJlZ0V4cDo6Y3JlYXRlKHZtLCBwYXR0ZXJuLCBmbGFncy52
YWx1ZSgpKTsKICAgICB9CkBAIC0yMjksNyArMjI5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZSA9
PSBnbG9iYWxPYmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQogICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmdsb2JhbCBn
ZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhw
LnByb3RvdHlwZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBv
YmplY3QiX3N0cik7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xl
YW4ocmVnZXhwLT5yZWdFeHAoKS0+Z2xvYmFsKCkpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJIYXNJbmRpY2VzLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iagogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgewogICAgICAg
ICBpZiAodGhpc1ZhbHVlID09IGdsb2JhbE9iamVjdC0+cmVnRXhwUHJvdG90eXBlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5w
cm90b3R5cGUuaGFzSW5kaWNlcyBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhw
IG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5oYXNJbmRpY2VzIGdldHRlciBjYW4gb25s
eSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zdHIpOwogICAgIH0KIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHJlZ2V4cC0+cmVnRXhwKCktPmhhc0luZGljZXMo
KSkpOwpAQCAtMjYxLDcgKzI2MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdFeHBQ
cm90b0dldHRlcklnbm9yZUNhc2UsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiAgICAgaWYg
KFVOTElLRUxZKCFyZWdleHApKSB7CiAgICAgICAgIGlmICh0aGlzVmFsdWUgPT0gZ2xvYmFsT2Jq
ZWN0LT5yZWdFeHBQcm90b3R5cGUoKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90
eXBlLmlnbm9yZUNhc2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmpl
Y3QiX3N0cik7CiAgICAgfQogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4o
cmVnZXhwLT5yZWdFeHAoKS0+aWdub3JlQ2FzZSgpKSk7CkBAIC0yNzcsNyArMjc3LDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHJlZ0V4cFByb3RvR2V0dGVyTXVsdGlsaW5lLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamUKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAg
ICAgaWYgKHRoaXNWYWx1ZSA9PSBnbG9iYWxPYmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAu
cHJvdG90eXBlLm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhw
IG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUgZ2V0dGVyIGNhbiBvbmx5
IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiX3N0cik7CiAgICAgfQogCiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+bXVsdGlsaW5lKCkp
KTsKQEAgLTI5Myw3ICsyOTMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJv
dG9HZXR0ZXJEb3RBbGwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAogICAgIGlmIChV
TkxJS0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlID09IGdsb2JhbE9iamVj
dC0+cmVnRXhwUHJvdG90eXBlKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZG90QWxsIGdldHRlciBjYW4gb25s
eSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLmRv
dEFsbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfc3RyKTsK
ICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocmVnZXhw
LT5yZWdFeHAoKS0+ZG90QWxsKCkpKTsKQEAgLTMwOSw3ICszMDksNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJTdGlja3ksIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LAogICAgIGlmIChVTkxJS0VMWSghcmVnZXhwKSkgewogICAgICAgICBpZiAodGhp
c1ZhbHVlID09IGdsb2JhbE9iamVjdC0+cmVnRXhwUHJvdG90eXBlKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGhlIFJlZ0V4cC5wcm90b3R5cGUu
c3RpY2t5IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRo
ZSBSZWdFeHAucHJvdG90eXBlLnN0aWNreSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEg
UmVnRXhwIG9iamVjdCJfc3RyKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc0Jvb2xlYW4ocmVnZXhwLT5yZWdFeHAoKS0+c3RpY2t5KCkpKTsKQEAgLTMyNSw3ICsz
MjUsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04ocmVnRXhwUHJvdG9HZXR0ZXJVbmljb2Rl
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdAogICAgIGlmIChVTkxJS0VMWSghcmVnZXhw
KSkgewogICAgICAgICBpZiAodGhpc1ZhbHVlID09IGdsb2JhbE9iamVjdC0+cmVnRXhwUHJvdG90
eXBlKCkpCiAgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGhlIFJlZ0V4cC5wcm90b3R5cGUudW5pY29kZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9u
IGEgUmVnRXhwIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS51bmljb2RlIGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Il9zdHIpOwogICAgIH0KICAgICAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihyZWdleHAtPnJlZ0V4cCgpLT51
bmljb2RlKCkpKTsKQEAgLTMzOCw3ICszMzgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
cmVnRXhwUHJvdG9HZXR0ZXJGbGFncywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAK
ICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCk7CiAgICAgaWYg
KFVOTElLRUxZKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFn
cyBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhwLnBy
b3RvdHlwZS5mbGFncyBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCJfc3Ry
KTsKIAogICAgIGF1dG8gZmxhZ3MgPSBmbGFnc1N0cmluZyhnbG9iYWxPYmplY3QsIGFzT2JqZWN0
KHRoaXNWYWx1ZSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwpAQCAtMzU1LDggKzM1NSw4IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihyZWdF
eHBQcm90b0dldHRlclNvdXJjZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAg
YXV0byogcmVnZXhwID0ganNEeW5hbWljQ2FzdDxSZWdFeHBPYmplY3QqPih2bSwgdGhpc1ZhbHVl
KTsKICAgICBpZiAoVU5MSUtFTFkoIXJlZ2V4cCkpIHsKICAgICAgICAgaWYgKHRoaXNWYWx1ZSA9
PSBnbG9iYWxPYmplY3QtPnJlZ0V4cFByb3RvdHlwZSgpKQotICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc05vbnRyaXZpYWxTdHJpbmcodm0sICIoPzopIl9zKSk7Ci0gICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUaGUgUmVnRXhw
LnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBv
YmplY3QiX3MpOworICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc05vbnRyaXZp
YWxTdHJpbmcodm0sICIoPzopIl9zdHIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRoZSBSZWdFeHAucHJvdG90eXBlLnNvdXJjZSBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCJfc3RyKTsKICAgICB9CiAK
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCByZWdleHAtPnJlZ0V4cCgp
LT5lc2NhcGVkUGF0dGVybigpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9SdW50aW1lVHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
dW50aW1lVHlwZS5jcHAKaW5kZXggMzcxOTQ3M2I0M2JhN2U0NmNmOGIwMWEyMGNkYjhmOTcxMWQy
MjQyYy4uOGJhNjJlNWQ2NGQ3ODcyN2RlMzg5YTU5ZDg4OWFhNWMzNjRjZmRiNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUnVudGltZVR5cGUuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1J1bnRpbWVUeXBlLmNwcApAQCAtNjQsMjcgKzY0
LDI3IEBAIFJ1bnRpbWVUeXBlIHJ1bnRpbWVUeXBlRm9yVmFsdWUoVk0mIHZtLCBKU1ZhbHVlIHZh
bHVlKQogU3RyaW5nIHJ1bnRpbWVUeXBlQXNTdHJpbmcoUnVudGltZVR5cGUgdHlwZSkKIHsKICAg
ICBpZiAodHlwZSA9PSBUeXBlVW5kZWZpbmVkKQotICAgICAgICByZXR1cm4gIlVuZGVmaW5lZCJf
czsKKyAgICAgICAgcmV0dXJuICJVbmRlZmluZWQiX3N0cjsKICAgICBpZiAodHlwZSA9PSBUeXBl
TnVsbCkKLSAgICAgICAgcmV0dXJuICJOdWxsIl9zOworICAgICAgICByZXR1cm4gIk51bGwiX3N0
cjsKICAgICBpZiAodHlwZSA9PSBUeXBlQW55SW50KQotICAgICAgICByZXR1cm4gIkludGVnZXIi
X3M7CisgICAgICAgIHJldHVybiAiSW50ZWdlciJfc3RyOwogICAgIGlmICh0eXBlID09IFR5cGVO
dW1iZXIpCi0gICAgICAgIHJldHVybiAiTnVtYmVyIl9zOworICAgICAgICByZXR1cm4gIk51bWJl
ciJfc3RyOwogICAgIGlmICh0eXBlID09IFR5cGVTdHJpbmcpCi0gICAgICAgIHJldHVybiAiU3Ry
aW5nIl9zOworICAgICAgICByZXR1cm4gIlN0cmluZyJfc3RyOwogICAgIGlmICh0eXBlID09IFR5
cGVPYmplY3QpCi0gICAgICAgIHJldHVybiAiT2JqZWN0Il9zOworICAgICAgICByZXR1cm4gIk9i
amVjdCJfc3RyOwogICAgIGlmICh0eXBlID09IFR5cGVCb29sZWFuKQotICAgICAgICByZXR1cm4g
IkJvb2xlYW4iX3M7CisgICAgICAgIHJldHVybiAiQm9vbGVhbiJfc3RyOwogICAgIGlmICh0eXBl
ID09IFR5cGVGdW5jdGlvbikKLSAgICAgICAgcmV0dXJuICJGdW5jdGlvbiJfczsKKyAgICAgICAg
cmV0dXJuICJGdW5jdGlvbiJfc3RyOwogICAgIGlmICh0eXBlID09IFR5cGVTeW1ib2wpCi0gICAg
ICAgIHJldHVybiAiU3ltYm9sIl9zOworICAgICAgICByZXR1cm4gIlN5bWJvbCJfc3RyOwogICAg
IGlmICh0eXBlID09IFR5cGVCaWdJbnQpCi0gICAgICAgIHJldHVybiAiQmlnSW50Il9zOworICAg
ICAgICByZXR1cm4gIkJpZ0ludCJfc3RyOwogICAgIGlmICh0eXBlID09IFR5cGVOb3RoaW5nKQot
ICAgICAgICByZXR1cm4gIihOb3RoaW5nKSJfczsKKyAgICAgICAgcmV0dXJuICIoTm90aGluZyki
X3N0cjsKIAogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
YW1wbGluZ1Byb2ZpbGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBs
aW5nUHJvZmlsZXIuY3BwCmluZGV4IGQ5MzExYzJmYzYyNTQ3MmZlNmY2ZTI2ZWQ4MjIzOGU3ZDRk
MWY4NjAuLmI1M2JmMjYxMzcwMjIxZDUzOThhNTVmZTJjZGFhODY1MWJiYTI2ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NhbXBsaW5nUHJvZmlsZXIuY3BwCkBA
IC04MjAsMjMgKzgyMCwyMyBAQCBTdHJpbmcgU2FtcGxpbmdQcm9maWxlcjo6U3RhY2tGcmFtZTo6
ZGlzcGxheU5hbWUoVk0mIHZtKQogICAgICAgICAgICAgV1RGOjpkYXRhTG9nKCJjb3VsZG4ndCBn
ZXQgYSBuYW1lIik7CiAgICAgICAgIH0KICNlbmRpZgotICAgICAgICByZXR1cm4gIih1bmtub3du
IEMgUEMpIl9zOworICAgICAgICByZXR1cm4gIih1bmtub3duIEMgUEMpIl9zdHI7CiAKICAgICBj
YXNlIEZyYW1lVHlwZTo6VW5rbm93bjoKLSAgICAgICAgcmV0dXJuICIodW5rbm93bikiX3M7Cisg
ICAgICAgIHJldHVybiAiKHVua25vd24pIl9zdHI7CiAKICAgICBjYXNlIEZyYW1lVHlwZTo6SG9z
dDoKLSAgICAgICAgcmV0dXJuICIoaG9zdCkiX3M7CisgICAgICAgIHJldHVybiAiKGhvc3QpIl9z
dHI7CiAKICAgICBjYXNlIEZyYW1lVHlwZTo6UmVnRXhwOgotICAgICAgICByZXR1cm4gIihyZWdl
eHApIl9zOworICAgICAgICByZXR1cm4gIihyZWdleHApIl9zdHI7CiAKICAgICBjYXNlIEZyYW1l
VHlwZTo6V2FzbToKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgICAgIGlmICh3YXNtSW5k
ZXhPck5hbWUpCiAgICAgICAgICAgICByZXR1cm4gbWFrZVN0cmluZyh3YXNtSW5kZXhPck5hbWUu
dmFsdWUoKSk7CiAjZW5kaWYKLSAgICAgICAgcmV0dXJuICIod2FzbSkiX3M7CisgICAgICAgIHJl
dHVybiAiKHdhc20pIl9zdHI7CiAKICAgICBjYXNlIEZyYW1lVHlwZTo6RXhlY3V0YWJsZToKICAg
ICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCkBAIC04NDUsOSArODQ1LDkg
QEAgU3RyaW5nIFNhbXBsaW5nUHJvZmlsZXI6OlN0YWNrRnJhbWU6OmRpc3BsYXlOYW1lKFZNJiB2
bSkKICAgICAgICAgaWYgKGV4ZWN1dGFibGUtPmlzRnVuY3Rpb25FeGVjdXRhYmxlKCkpCiAgICAg
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJs
ZSktPmVjbWFOYW1lKCkuc3RyaW5nKCk7CiAgICAgICAgIGlmIChleGVjdXRhYmxlLT5pc1Byb2dy
YW1FeGVjdXRhYmxlKCkgfHwgZXhlY3V0YWJsZS0+aXNFdmFsRXhlY3V0YWJsZSgpKQotICAgICAg
ICAgICAgcmV0dXJuICIocHJvZ3JhbSkiX3M7CisgICAgICAgICAgICByZXR1cm4gIihwcm9ncmFt
KSJfc3RyOwogICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNNb2R1bGVQcm9ncmFtRXhlY3V0YWJs
ZSgpKQotICAgICAgICAgICAgcmV0dXJuICIobW9kdWxlKSJfczsKKyAgICAgICAgICAgIHJldHVy
biAiKG1vZHVsZSkiX3N0cjsKIAogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CkBAIC0xMTU4LDE3ICsxMTU4LDE3IEBAIHZvaWQg
U2FtcGxpbmdQcm9maWxlcjo6cmVwb3J0VG9wQnl0ZWNvZGVzKFByaW50U3RyZWFtJiBvdXQpCiAg
ICAgSGFzaE1hcDxTdHJpbmcsIHNpemVfdD4gYnl0ZWNvZGVDb3VudHM7CiAgICAgSGFzaE1hcDxT
dHJpbmcsIHNpemVfdD4gdGllckNvdW50czsKIAotICAgIFN0cmluZyBsbGludCA9ICJMTEludCJf
czsKLSAgICBTdHJpbmcgYmFzZWxpbmUgPSAiQmFzZWxpbmUiX3M7Ci0gICAgU3RyaW5nIGRmZyA9
ICJERkciX3M7Ci0gICAgU3RyaW5nIGZ0bCA9ICJGVEwiX3M7Ci0gICAgU3RyaW5nIGJ1aWx0aW4g
PSAianMgYnVpbHRpbiJfczsKLSAgICBTdHJpbmcgd2FzbSA9ICJXYXNtIl9zOwotICAgIFN0cmlu
ZyBob3N0ID0gIkhvc3QiX3M7Ci0gICAgU3RyaW5nIHJlZ2V4cCA9ICJSZWdFeHAiX3M7Ci0gICAg
U3RyaW5nIGNwcCA9ICJDL0MrKyJfczsKLSAgICBTdHJpbmcgdW5rbm93bkZyYW1lID0gIlVua25v
d24gRnJhbWUiX3M7Ci0gICAgU3RyaW5nIHVua25vd25FeGVjdXRhYmxlID0gIlVua25vd24gRXhl
Y3V0YWJsZSJfczsKKyAgICBTdHJpbmcgbGxpbnQgPSAiTExJbnQiX3N0cjsKKyAgICBTdHJpbmcg
YmFzZWxpbmUgPSAiQmFzZWxpbmUiX3N0cjsKKyAgICBTdHJpbmcgZGZnID0gIkRGRyJfc3RyOwor
ICAgIFN0cmluZyBmdGwgPSAiRlRMIl9zdHI7CisgICAgU3RyaW5nIGJ1aWx0aW4gPSAianMgYnVp
bHRpbiJfc3RyOworICAgIFN0cmluZyB3YXNtID0gIldhc20iX3N0cjsKKyAgICBTdHJpbmcgaG9z
dCA9ICJIb3N0Il9zdHI7CisgICAgU3RyaW5nIHJlZ2V4cCA9ICJSZWdFeHAiX3N0cjsKKyAgICBT
dHJpbmcgY3BwID0gIkMvQysrIl9zdHI7CisgICAgU3RyaW5nIHVua25vd25GcmFtZSA9ICJVbmtu
b3duIEZyYW1lIl9zdHI7CisgICAgU3RyaW5nIHVua25vd25FeGVjdXRhYmxlID0gIlVua25vd24g
RXhlY3V0YWJsZSJfc3RyOwogCiAgICAgYXV0byBmb3JFYWNoVGllciA9IFsmXSAoYXV0byBmdW5j
KSB7CiAgICAgICAgIGZ1bmMobGxpbnQpOwpAQCAtMTIwOCwxNyArMTIwOCwxNyBAQCB2b2lkIFNh
bXBsaW5nUHJvZmlsZXI6OnJlcG9ydFRvcEJ5dGVjb2RlcyhQcmludFN0cmVhbSYgb3V0KQogICAg
ICAgICAgICAgaWYgKGxvY2F0aW9uLmhhc0J5dGVjb2RlSW5kZXgoKSkKICAgICAgICAgICAgICAg
ICBieXRlY29kZUluZGV4ID0gdG9TdHJpbmcobG9jYXRpb24uYnl0ZWNvZGVJbmRleCk7CiAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYnl0ZWNvZGVJbmRleCA9ICI8bmlsPiJfczsK
KyAgICAgICAgICAgICAgICBieXRlY29kZUluZGV4ID0gIjxuaWw+Il9zdHI7CiAKICAgICAgICAg
ICAgIGlmIChsb2NhdGlvbi5oYXNDb2RlQmxvY2tIYXNoKCkpIHsKICAgICAgICAgICAgICAgICBT
dHJpbmdQcmludFN0cmVhbSBzdHJlYW07CiAgICAgICAgICAgICAgICAgbG9jYXRpb24uY29kZUJs
b2NrSGFzaC5kdW1wKHN0cmVhbSk7CiAgICAgICAgICAgICAgICAgY29kZUJsb2NrSGFzaCA9IHN0
cmVhbS50b1N0cmluZygpOwogICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgY29k
ZUJsb2NrSGFzaCA9ICI8bmlsPiJfczsKKyAgICAgICAgICAgICAgICBjb2RlQmxvY2tIYXNoID0g
IjxuaWw+Il9zdHI7CiAKICAgICAgICAgICAgIGlmIChsb2NhdGlvbi5pc1JlZ0V4cCkKLSAgICAg
ICAgICAgICAgICBqaXRUeXBlID0gIlJlZ0V4cCJfczsKKyAgICAgICAgICAgICAgICBqaXRUeXBl
ID0gIlJlZ0V4cCJfc3RyOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGppdFR5
cGUgPSBKSVRDb2RlOjp0eXBlTmFtZShsb2NhdGlvbi5qaXRUeXBlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2NyaXB0RXhlY3V0YWJsZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAppbmRleCA0MjFk
NzAwZTQ2YWZiODA4ZTdkNWE1NzBkY2FmNWY1YzdiYTliNDFmLi4wY2JkOWYzMWM0NTE2OGQxZWJi
Njk4M2NkZDAzMGYxNTI0MmZkNWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TY3JpcHRFeGVjdXRhYmxlLmNwcApAQCAtMzg1LDcgKzM4NSw3IEBAIHZvaWQgU2Ny
aXB0RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4ZWN1dGlvbkltcGwoVk0mIHZtLCBKU0Z1bmN0aW9u
KiBmdW5jdGlvbiwgSlNTCiAKICAgICBpZiAoVU5MSUtFTFkodm0uZ2V0QW5kQ2xlYXJGYWlsTmV4
dE5ld0NvZGVCbG9jaygpKSkgewogICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
ID0gc2NvcGUtPmdsb2JhbE9iamVjdCh2bSk7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRm9yY2VkIEZh
aWx1cmUiX3MpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJGb3JjZWQgRmFpbHVyZSJfc3RyKSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1NldENvbnN0cnVjdG9yLmNwcAppbmRleCBkNTQ0MzNiZmVlNGZkZGRhNWY0NzA2NzdhZjQ1
N2Y5YmY0Zjc0ZTQ1Li4wOGM0ZWU4NzI4NDQ5MTRmZmQ1ZGI1Yjg5NDMwYmRiMWJkZWZmYzhmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3IuY3Bw
CkBAIC04Nyw3ICs4Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RTZXQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqCiAKICAgICAgICAgYWRk
ZXJGdW5jdGlvbkNhbGxEYXRhID0gZ2V0Q2FsbERhdGEodm0sIGFkZGVyRnVuY3Rpb24pOwogICAg
ICAgICBpZiAoVU5MSUtFTFkoYWRkZXJGdW5jdGlvbkNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6
OlR5cGU6Ok5vbmUpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIidhZGQnIHByb3BlcnR5IG9mIGEgU2V0IHNob3VsZCBiZSBjYWxsYWJs
ZS4iX3MpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIidhZGQnIHByb3BlcnR5IG9mIGEgU2V0IHNob3VsZCBiZSBjYWxsYWJsZS4iX3N0
cik7CiAgICAgfQogCiAgICAgc2NvcGUucmVsZWFzZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NldFByb3RvdHlwZS5jcHAKaW5kZXggYTZlZmMyZmJiMzE0NDZlODJhNDYz
NDIxMmYyN2I2ZDBkNGQ1OTJjZS4uZmYyMDVhMmM3OGNkOTcxNWFiYWIwMzIzZjM1NTc2YzQxYzE2
N2ZjZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0UHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TZXRQcm90b3R5cGUu
Y3BwCkBAIC04OSw3ICs4OSw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTU2V0KiBnZXRTZXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aGlzVmFsCiAgICAgYXV0byog
c2V0ID0ganNEeW5hbWljQ2FzdDxKU1NldCo+KHZtLCB0aGlzVmFsdWUuYXNDZWxsKCkpOwogICAg
IGlmIChMSUtFTFkoc2V0KSkKICAgICAgICAgcmV0dXJuIHNldDsKLSAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU2V0IG9wZXJhdGlvbiBjYWxsZWQgb24gbm9uLVNldCBv
YmplY3QiX3MpOworICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJTZXQg
b3BlcmF0aW9uIGNhbGxlZCBvbiBub24tU2V0IG9iamVjdCJfc3RyKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hh
ZG93UmVhbG1Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2hh
ZG93UmVhbG1Qcm90b3R5cGUuY3BwCmluZGV4IDhlODg2NjYzOTgzYWYzYTU3YzYzMTFlN2EwODhm
YzY1ZTdkYTNhNTIuLjFjYmJhOWZjY2E1ZGIzOTUyNDIzZDQ3ZDQ0ZjI5ZmIzMjRkNzM3ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NoYWRvd1JlYWxtUHJvdG90
eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TaGFkb3dSZWFsbVBy
b3RvdHlwZS5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
ZXZhbEluUmVhbG0sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqCiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAg
dGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVN5bnRheEVycm9yKGdsb2Jh
bE9iamVjdCwgc3ludGF4RXJyb3JNZXNzYWdlKSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfcykpOworICAg
ICAgICAgICAgdGhyb3dWTUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsICJFcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZXZhbHVhdGlvbiJfc3Ry
KSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
fQogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0xMTksNyArMTE5LDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGV2YWxJblJlYWxtLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKgogICAgIEpTVmFsdWUgcmVzdWx0ID0gdm0uaW50ZXJw
cmV0ZXItPmV4ZWN1dGUoZXZhbCwgcmVhbG1HbG9iYWxPYmplY3QsIHJlYWxtR2xvYmFsT2JqZWN0
LT5nbG9iYWxUaGlzKCksIHJlYWxtR2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZSgpKTsKICAgICBp
ZiAoVU5MSUtFTFkoc2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIHNjb3BlLmNsZWFyRXhj
ZXB0aW9uKCk7Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkVycm9yIGVuY291bnRlcmVkIGR1cmlu
ZyBldmFsdWF0aW9uIl9zKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgIkVycm9yIGVuY291bnRl
cmVkIGR1cmluZyBldmFsdWF0aW9uIl9zdHIpKTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShyZXN1bHQpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0YWNrRnJhbWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAKaW5kZXggNmI4ZjNkZjYzMzUwNDVkNWFjMjFl
ZjVhMDgyZDQ4NjgwNGZhM2U2Yi4uYzk0YTFiOTQ3OThkMmQxZGU3ZTQ4YzFhYjYyNzJjZmZmMzhi
YjkwOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFt
ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RhY2tGcmFtZS5jcHAK
QEAgLTYxLDEwICs2MSwxMCBAQCBTb3VyY2VJRCBTdGFja0ZyYW1lOjpzb3VyY2VJRCgpIGNvbnN0
CiBTdHJpbmcgU3RhY2tGcmFtZTo6c291cmNlVVJMKCkgY29uc3QKIHsKICAgICBpZiAobV9pc1dh
c21GcmFtZSkKLSAgICAgICAgcmV0dXJuICJbd2FzbSBjb2RlXSJfczsKKyAgICAgICAgcmV0dXJu
ICJbd2FzbSBjb2RlXSJfc3RyOwogCiAgICAgaWYgKCFtX2NvZGVCbG9jaykgewotICAgICAgICBy
ZXR1cm4gIltuYXRpdmUgY29kZV0iX3M7CisgICAgICAgIHJldHVybiAiW25hdGl2ZSBjb2RlXSJf
c3RyOwogICAgIH0KIAogICAgIFN0cmluZyBzb3VyY2VVUkwgPSBtX2NvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCktPnNvdXJjZVVSTCgpOwpAQCAtODEsMTMgKzgxLDEzIEBAIFN0cmluZyBTdGFj
a0ZyYW1lOjpmdW5jdGlvbk5hbWUoVk0mIHZtKSBjb25zdAogICAgIGlmIChtX2NvZGVCbG9jaykg
ewogICAgICAgICBzd2l0Y2ggKG1fY29kZUJsb2NrLT5jb2RlVHlwZSgpKSB7CiAgICAgICAgIGNh
c2UgRXZhbENvZGU6Ci0gICAgICAgICAgICByZXR1cm4gImV2YWwgY29kZSJfczsKKyAgICAgICAg
ICAgIHJldHVybiAiZXZhbCBjb2RlIl9zdHI7CiAgICAgICAgIGNhc2UgTW9kdWxlQ29kZToKLSAg
ICAgICAgICAgIHJldHVybiAibW9kdWxlIGNvZGUiX3M7CisgICAgICAgICAgICByZXR1cm4gIm1v
ZHVsZSBjb2RlIl9zdHI7CiAgICAgICAgIGNhc2UgRnVuY3Rpb25Db2RlOgogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgR2xvYmFsQ29kZToKLSAgICAgICAgICAgIHJldHVybiAiZ2xv
YmFsIGNvZGUiX3M7CisgICAgICAgICAgICByZXR1cm4gImdsb2JhbCBjb2RlIl9zdHI7CiAgICAg
ICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nQ29uc3RydWN0
b3IuY3BwCmluZGV4IDkyZGM5NDY5ZDJhODRjNTQ5MjIwZTIxZjVmMTZmNzdhMDA1NWZkODUuLjRk
N2ExYjliM2JlODkxZDM2NjNjMDhkNDhkY2NkYWQ5NGI5MmRjZDkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHAKQEAgLTEyMSw3
ICsxMjEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3RyaW5nRnJvbUNvZGVQb2ludCwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbAogICAgICAgICB1aW50MzJfdCBjb2Rl
UG9pbnQgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oY29kZVBvaW50QXNEb3VibGUpOwogCiAgICAg
ICAgIGlmIChjb2RlUG9pbnQgIT0gY29kZVBvaW50QXNEb3VibGUgfHwgY29kZVBvaW50ID4gVUNI
QVJfTUFYX1ZBTFVFKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgIkFyZ3VtZW50cyBjb250
YWluIGEgdmFsdWUgdGhhdCBpcyBvdXQgb2YgcmFuZ2Ugb2YgY29kZSBwb2ludHMiX3MpKTsKKyAg
ICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsICJBcmd1bWVudHMgY29udGFpbiBhIHZhbHVlIHRoYXQg
aXMgb3V0IG9mIHJhbmdlIG9mIGNvZGUgcG9pbnRzIl9zdHIpKTsKIAogICAgICAgICBpZiAoVV9J
U19CTVAoY29kZVBvaW50KSkKICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0
PFVDaGFyPihjb2RlUG9pbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGYzYjM4M2RjYmE0MjUzYTRhYzkyNTU4NGQxOWJj
ODA3NmI5NGE1NGEuLjc4NDJmOWEwMjAyYzU3N2UyYTM0YjliMDNlYzY2MjllYjJiODc2YjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNw
cApAQCAtMTU0LDE0ICsxNTQsMTQgQEAgdm9pZCBTdHJpbmdQcm90b3R5cGU6OmZpbmlzaENyZWF0
aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAgICBpZiAoT3B0aW9u
czo6dXNlQXRNZXRob2QoKSkKICAgICAgICAgSlNDX0JVSUxUSU5fRlVOQ1RJT05fV0lUSE9VVF9U
UkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmF0UHVibGljTmFtZSgp
LCBzdHJpbmdQcm90b3R5cGVBdENvZGVHZW5lcmF0b3IsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIAotICAgIEpTRnVuY3Rpb24qIHRyaW1TdGFy
dEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJ0cmlt
U3RhcnQiX3MsIHN0cmluZ1Byb3RvRnVuY1RyaW1TdGFydCwgTm9JbnRyaW5zaWMpOwotICAgIEpT
RnVuY3Rpb24qIHRyaW1FbmRGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LCAwLCAidHJpbUVuZCJfcywgc3RyaW5nUHJvdG9GdW5jVHJpbUVuZCwgTm9JbnRyaW5z
aWMpOworICAgIEpTRnVuY3Rpb24qIHRyaW1TdGFydEZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3Jl
YXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJ0cmltU3RhcnQiX3N0ciwgc3RyaW5nUHJvdG9GdW5j
VHJpbVN0YXJ0LCBOb0ludHJpbnNpYyk7CisgICAgSlNGdW5jdGlvbiogdHJpbUVuZEZ1bmN0aW9u
ID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJ0cmltRW5kIl9zdHIs
IHN0cmluZ1Byb3RvRnVuY1RyaW1FbmQsIE5vSW50cmluc2ljKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwgInRyaW1TdGFydCIp
LCB0cmltU3RhcnRGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKHZtLCAidHJpbUxlZnQiKSwgdHJpbVN0YXJ0RnVuY3Rpb24sIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKICAgICBw
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2bSwg
InRyaW1FbmQiKSwgdHJpbUVuZEZ1bmN0aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sICJ0cmltUmlnaHQiKSwgdHJpbUVuZEZ1bmN0
aW9uLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7
CiAKLSAgICBKU0Z1bmN0aW9uKiBpdGVyYXRvckZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIDAsICJbU3ltYm9sLml0ZXJhdG9yXSJfcywgc3RyaW5nUHJvdG9G
dW5jSXRlcmF0b3IsIE5vSW50cmluc2ljKTsKKyAgICBKU0Z1bmN0aW9uKiBpdGVyYXRvckZ1bmN0
aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIDAsICJbU3ltYm9sLml0
ZXJhdG9yXSJfc3RyLCBzdHJpbmdQcm90b0Z1bmNJdGVyYXRvciwgTm9JbnRyaW5zaWMpOwogICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pdGVyYXRv
clN5bWJvbCwgaXRlcmF0b3JGdW5jdGlvbiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSkpOwogCiAgICAgLy8gVGhlIGNvbnN0cnVjdG9yIHdpbGwgYmUg
YWRkZWQgbGF0ZXIsIGFmdGVyIFN0cmluZ0NvbnN0cnVjdG9yIGhhcyBiZWVuIGJ1aWx0CkBAIC0x
NTE2LDcgKzE1MTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oc3RyaW5nUHJvdG9GdW5j
TG9jYWxlQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYgogICAgIC8vIDEuIExldCBP
IGJlIFJlcXVpcmVPYmplY3RDb2VyY2libGUodGhpcyB2YWx1ZSkuCiAgICAgSlNWYWx1ZSB0aGlz
VmFsdWUgPSBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghY2hlY2tPYmplY3RDb2Vy
Y2libGUodGhpc1ZhbHVlKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlN0cmluZy5wcm90b3R5cGUubG9jYWxlQ29tcGFyZSByZXF1aXJlcyB0
aGF0IHx0aGlzfCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiU3RyaW5nLnByb3RvdHlwZS5s
b2NhbGVDb21wYXJlIHJlcXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5l
ZCJfc3RyKTsKIAogICAgIC8vIDIuIExldCBTIGJlIFRvU3RyaW5nKE8pLgogICAgIC8vIDMuIFJl
dHVybklmQWJydXB0KFMpLgpAQCAtMTYwNiw3ICsxNjA2LDcgQEAgc3RhdGljIEVuY29kZWRKU1Zh
bHVlIHRvTG9jYWxlQ2FzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
IGNhbGwKIAogICAgIC8vIDEyLiBJZiBsb2NhbGUgaXMgdW5kZWZpbmVkLCBsZXQgbG9jYWxlIGJl
ICJ1bmQiLgogICAgIGlmIChsb2NhbGUuaXNOdWxsKCkpCi0gICAgICAgIGxvY2FsZSA9ICJ1bmQi
X3M7CisgICAgICAgIGxvY2FsZSA9ICJ1bmQiX3N0cjsKIAogICAgIC8vIERlbGVnYXRlIHRoZSBm
b2xsb3dpbmcgc3RlcHMgdG8gaWN1IHVfc3RyVG9Mb3dlciBvciB1X3N0clRvVXBwZXIuCiAgICAg
Ly8gMTMuIExldCBjcExpc3QgYmUgYSBMaXN0IGNvbnRhaW5pbmcgaW4gb3JkZXIgdGhlIGNvZGUg
cG9pbnRzIG9mIFMgYXMgZGVmaW5lZCBpbiBFUzIwMTUsIDYuMS40LCBzdGFydGluZyBhdCB0aGUg
Zmlyc3QgZWxlbWVudCBvZiBTLgpAQCAtMTk1Miw3ICsxOTUyLDcgQEAgSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHN0cmluZ1Byb3RvRnVuY05vcm1hbGl6ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QKICAgICAgICAgZWxzZSBpZiAoZm9ybVN0cmluZyA9PSAiTkZLRCIpCiAgICAgICAg
ICAgICBmb3JtID0gTm9ybWFsaXphdGlvbkZvcm06Ok5GS0Q7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJn
dW1lbnQgZG9lcyBub3QgbWF0Y2ggYW55IG5vcm1hbGl6YXRpb24gZm9ybSJfcyk7CisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3Vt
ZW50IGRvZXMgbm90IG1hdGNoIGFueSBub3JtYWxpemF0aW9uIGZvcm0iX3N0cik7CiAgICAgfQog
CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobm9ybWFsaXpl
KGdsb2JhbE9iamVjdCwgc3RyaW5nLCBmb3JtKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1N5bWJvbC5jcHAKaW5kZXggYzNkYjE5NmZiOTM0NmUwNmUwYzVjMWYwZmU0OWI0MWJmMGEz
ZjdlYi4uNWY5YTI0N2UxNWFhYjg5YWM0OTkyYmQ0YTg2MjI4MzZmNDVmOWYzMyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCkBAIC04MSw3ICs4MSw3IEBAIGRvdWJs
ZSBTeW1ib2w6OnRvTnVtYmVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiB7
CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKLSAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2Fubm90IGNvbnZlcnQgYSBzeW1ib2wgdG8gYSBudW1iZXIiX3MpOworICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3QgY29udmVydCBhIHN5bWJvbCB0
byBhIG51bWJlciJfc3RyKTsKICAgICByZXR1cm4gMC4wOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2xQcm90b3R5cGUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvU3ltYm9sUHJvdG90eXBlLmNwcAppbmRleCBiY2YxNjM1MTY5
YzAyNDc3MjRjNzEwMzkxNTUzMWMxMjBkODljMzg4Li5lZDZmY2NkY2JiMWE0MTRjODMyNjg2NDBi
ZWRmMzMwMWVjNjk0Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TeW1ib2xQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1N5bWJvbFByb3RvdHlwZS5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBTeW1ib2xQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBp
bmZvKCkpKTsKIAotICAgIEpTRnVuY3Rpb24qIHRvUHJpbWl0aXZlRnVuY3Rpb24gPSBKU0Z1bmN0
aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgMSwgIltTeW1ib2wudG9QcmltaXRpdmVdIl9z
LCBzeW1ib2xQcm90b0Z1bmNWYWx1ZU9mLCBOb0ludHJpbnNpYyk7CisgICAgSlNGdW5jdGlvbiog
dG9QcmltaXRpdmVGdW5jdGlvbiA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LCAxLCAiW1N5bWJvbC50b1ByaW1pdGl2ZV0iX3N0ciwgc3ltYm9sUHJvdG9GdW5jVmFsdWVPZiwg
Tm9JbnRyaW5zaWMpOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT50b1ByaW1pdGl2ZVN5bWJvbCwgdG9QcmltaXRpdmVGdW5jdGlvbiwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKICAg
ICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXIuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHAKaW5kZXggMDZk
ZjI1NWI5OTg3YmVmYjNmNDFlNTkxMTU2YWE1MmExZmNiYmRkMi4uNmFjY2IyNjBhZmU0NTg2ZmQw
OTJlMTNmNTRiM2NhNDljOGVkOWE0ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhci5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgc3RhdGljIHN0
ZDo6b3B0aW9uYWw8Q2FsZW5kYXJJRD4gcGFyc2VUZW1wb3JhbENhbGVuZGFyU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiBnbG8KICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHBhcnNpbmcgdGVtcG9yYWwg
Y2FsZW5kYXIgc3RyaW5nLCB3aGljaCByZXF1aXJlcyBmdWxsIElTTyA4NjAxIHBhcnNlci4KICAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwotICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiaW52YWxpZCBjYWxlbmRhciBJRCJfcyk7CisgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJpbnZhbGlkIGNhbGVuZGFyIElEIl9zdHIpOwogICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwCmluZGV4IGQ5Nzk5MzE1NjQ2
ZDg3NDc1MGNiMDRiZjVlZmQzNTgzNzc3MWFhNzEuLjA2YzA0NjBlNzdkNGVmZTViYzI5ZmM3N2Qw
NWFlMmMzZjE0OGM4OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcApAQCAtNzEsNyArNzEs
NyBAQCBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1
Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RydQogCiB2b2lkIFRlbXBvcmFsQ2FsZW5kYXJDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbENhbGVuZGFyUHJvdG90eXBl
KiB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCAwLCAiQ2FsZW5kYXIiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0
dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJDYWxlbmRh
ciJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24p
OwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KTsKICAgICB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLT5wdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMs
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0K
QEAgLTkwLDcgKzkwLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBv
cmFsQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAogICAgIHN0ZDo6b3B0
aW9uYWw8Q2FsZW5kYXJJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFsQ2FsZW5kYXI6OmlzQnVpbHRp
bkNhbGVuZGFyKGNhbGVuZGFyU3RyaW5nKTsKICAgICBpZiAoIWlkZW50aWZpZXIpIHsKLSAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIGNhbGVuZGFy
IElEIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJp
bnZhbGlkIGNhbGVuZGFyIElEIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmNwcAppbmRleCA4ZmIzYTUzNGNkZTQ4YTMzNDNmODEyOTc2NGY1MmVi
YzhjN2FiOTM1Li4yMTBhZTljODM4ZTFkMWVhZDc4MDMzYTMzNTlkYWI5ODNlNTZlOGI3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLmNwcApAQCAtOTYsNyArOTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNGaWVsZHMsIChKU0dsb2JhbE9iamVj
dCogZwogCiAgICAgYXV0byogY2FsZW5kYXIgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsQ2FsZW5k
YXIqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFjYWxlbmRhcikKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLkNhbGVuZGFyLnByb3RvdHlwZS5maWVsZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBDYWxlbmRhciJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5DYWxlbmRhci5wcm90b3R5cGUuZmllbGRzIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgQ2FsZW5kYXIiX3N0cik7CiAKICAgICBib29sIGlzSVNPODYw
MSA9IGNhbGVuZGFyLT5pc0lTTzg2MDEoKTsKICAgICBib29sIHNob3VsZEFkZEVyYUFuZEVyYVll
YXIgPSBmYWxzZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZUZ1bmNGaWVsZHMsIChKU0dsb2JhbE9iamVjdCogZwog
ICAgIGZvckVhY2hJbkl0ZXJhYmxlKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgw
KSwgW2lzSVNPODYwMSwgJnNob3VsZEFkZEVyYUFuZEVyYVllYXIsICZmaWVsZE5hbWVzXShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsdWUpIHsKICAgICAg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICBpZiAoIXZh
bHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJmaWVsZHMgaW5jbHVkZSBub24gc3RyaW5nIHZhbHVlIl9zKTsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJmaWVsZHMgaW5jbHVkZSBu
b24gc3RyaW5nIHZhbHVlIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAg
ICAgICAgIGlmICghaXNJU084NjAxICYmICFzaG91bGRBZGRFcmFBbmRFcmFZZWFyKSB7CkBAIC0y
MDIsNyArMjAyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsQ2FsZW5kYXJQ
cm90b3R5cGVGdW5jTWVyZ2VGaWVsZHMsIChKU0dsb2JhbE9iamUKIAogICAgIGF1dG8qIGNhbGVu
ZGFyID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbENhbGVuZGFyKj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOwogICAgIGlmICghY2FsZW5kYXIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5DYWxlbmRhci5wcm90b3R5cGUu
bWVyZ2VGaWVsZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBDYWxlbmRhciJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5DYWxlbmRhci5wcm90b3R5cGUubWVyZ2VGaWVsZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBDYWxlbmRhciJfc3RyKTsKIAogICAgIGF1dG8qIGZpZWxkcyA9IGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkudG9PYmplY3QoZ2xvYmFsT2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwpAQCAtMzE3LDcgKzMxNyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmpl
Y3QqCiAKICAgICBhdXRvKiBjYWxlbmRhciA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxDYWxlbmRh
cio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWNhbGVuZGFyKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuQ2FsZW5kYXIucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgQ2FsZW5kYXIiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgQ2FsZW5kYXIiX3N0cik7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBpbnRsQXZhaWxhYmxlQ2FsZW5kYXJzKClbY2FsZW5k
YXItPmlkZW50aWZpZXIoKV0pKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKaW5kZXggNzdkOTlhYTNkMGM3ZmQ4MzkzOTQxNjYy
ZDEyNWExYmI3YmQxOWEwYy4uMmFmMTZiMzM1Y2ExYjYyZTRmZjMyZTk2ZDRkOWYwN2JmMmM3Nzlk
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHAKQEAgLTcxLDcgKzcxLDcgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxEdXJh
dGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIUlTTzg2MDE6
OmlzVmFsaWREdXJhdGlvbihkdXJhdGlvbikpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUg
ZmluaXRlIGFuZCBvZiBjb25zaXN0ZW50IHNpZ24iX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVz
dCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfc3RyKTsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAKQEAgLTEwNCwxMyArMTA0LDEzIEBAIElTTzg2MDE6OkR1cmF0aW9uIFRl
bXBvcmFsRHVyYXRpb246OmZyb21EdXJhdGlvbkxpa2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAg
aWYgKCFpc0ludGVnZXIocmVzdWx0W3VuaXRdKSkgewotICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11
c3QgYmUgaW50ZWdlcnMiX3MpOworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgaW50ZWdl
cnMiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICB9CiAgICAgfQogCiAg
ICAgaWYgKCFoYXNSZWxldmFudFByb3BlcnR5KSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJPYmplY3QgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBUZW1w
b3JhbC5EdXJhdGlvbiBwcm9wZXJ0eSJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJPYmplY3QgbXVzdCBjb250YWluIGF0IGxlYXN0IG9uZSBUZW1wb3Jh
bC5EdXJhdGlvbiBwcm9wZXJ0eSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAK
QEAgLTE0Myw3ICsxNDMsNyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbER1cmF0aW9uOjp0
b0lTTzg2MDFEdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZQogICAgIH0KIAogICAg
IGlmICghSVNPODYwMTo6aXNWYWxpZER1cmF0aW9uKGR1cmF0aW9uKSkgewotICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3Bl
cnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24g
cHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2YgY29uc2lzdGVudCBzaWduIl9zdHIpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMTc3LDcgKzE3Nyw3IEBAIElTTzg2MDE6
OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OnRvTGltaXRlZER1cmF0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplCiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAog
ICAgIGlmICghaXNWYWxpZER1cmF0aW9uKGR1cmF0aW9uKSkgewotICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMg
bXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CisgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVy
dGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2YgY29uc2lzdGVudCBzaWduIl9zdHIpOwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMjI4LDcgKzIyOCw3IEBAIEpTVmFsdWUgVGVtcG9y
YWxEdXJhdGlvbjo6Y29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHZhbHVlT25lCiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHJlbGF0aXZlVG8gcGFyYW1ldGVy
IGFmdGVyIFBsYWluRGF0ZVRpbWUgLyBab25lZERhdGVUaW1lLgogICAgIGlmIChvbmUtPnllYXJz
KCkgfHwgdHdvLT55ZWFycygpIHx8IG9uZS0+bW9udGhzKCkgfHwgdHdvLT5tb250aHMoKSB8fCBv
bmUtPndlZWtzKCkgfHwgdHdvLT53ZWVrcygpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IGNvbXBhcmUgYSBkdXJhdGlvbiBvZiB5ZWFycywg
bW9udGhzLCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRpdmVUbyBvcHRpb24iX3MpOworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBjb21wYXJlIGEg
ZHVyYXRpb24gb2YgeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgd2l0aG91dCBhIHJlbGF0aXZlVG8g
b3B0aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMjcxLDEzICsy
NzEsMTMgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6d2l0aChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCoKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKIAogICAgICAgICBpZiAoIWlzSW50ZWdlcihyZXN1bHRbdW5pdF0p
KSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBpbnRlZ2VycyJfcyk7CisgICAgICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0
aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBpbnRlZ2VycyJfc3RyKTsKICAgICAgICAgICAgIHJldHVy
biB7IH07CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIWhhc1JlbGV2YW50UHJvcGVydHkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdCBt
dXN0IGNvbnRhaW4gYXQgbGVhc3Qgb25lIFRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnR5Il9zKTsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIk9iamVjdCBtdXN0
IGNvbnRhaW4gYXQgbGVhc3Qgb25lIFRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnR5Il9zdHIpOwog
ICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMzYzLDcgKzM2Myw3IEBAIElTTzg2MDE6
OkR1cmF0aW9uIFRlbXBvcmFsRHVyYXRpb246OmFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIG90CiAgICAgLy8gRklYTUU6IEltcGxlbWVudCByZWxhdGl2ZVRvIHBhcmFt
ZXRlciBhZnRlciBQbGFpbkRhdGVUaW1lIC8gWm9uZWREYXRlVGltZS4KICAgICBhdXRvIGxhcmdl
c3RVbml0ID0gc3RkOjptaW4obGFyZ2VzdFN1YmR1cmF0aW9uKG1fZHVyYXRpb24pLCBsYXJnZXN0
U3ViZHVyYXRpb24ob3RoZXIpKTsKICAgICBpZiAobGFyZ2VzdFVuaXQgPD0gVGVtcG9yYWxVbml0
OjpXZWVrKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
Q2Fubm90IGFkZCBhIGR1cmF0aW9uIG9mIHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHdpdGhvdXQg
YSByZWxhdGl2ZVRvIG9wdGlvbiJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQ2Fubm90IGFkZCBhIGR1cmF0aW9uIG9mIHllYXJzLCBtb250aHMsIG9y
IHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfc3RyKTsKICAgICAgICAgcmV0dXJu
IHsgfTsKICAgICB9CiAKQEAgLTM4OCw3ICszODgsNyBAQCBJU084NjAxOjpEdXJhdGlvbiBUZW1w
b3JhbER1cmF0aW9uOjpzdWJ0cmFjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bAogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgcmVsYXRpdmVUbyBwYXJhbWV0ZXIgYWZ0ZXIgUGxh
aW5EYXRlVGltZSAvIFpvbmVkRGF0ZVRpbWUuCiAgICAgYXV0byBsYXJnZXN0VW5pdCA9IHN0ZDo6
bWluKGxhcmdlc3RTdWJkdXJhdGlvbihtX2R1cmF0aW9uKSwgbGFyZ2VzdFN1YmR1cmF0aW9uKG90
aGVyKSk7CiAgICAgaWYgKGxhcmdlc3RVbml0IDw9IFRlbXBvcmFsVW5pdDo6V2VlaykgewotICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCBzdWJ0cmFj
dCBhIGR1cmF0aW9uIG9mIHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2
ZVRvIG9wdGlvbiJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2Fubm90IHN1YnRyYWN0IGEgZHVyYXRpb24gb2YgeWVhcnMsIG1vbnRocywgb3Igd2Vl
a3Mgd2l0aG91dCBhIHJlbGF0aXZlVG8gb3B0aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KIApAQCAtNDczLDEyICs0NzMsMTIgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9y
YWxEdXJhdGlvbjo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZQog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoIXNtYWxsZXN0
ICYmICFsYXJnZXN0KSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiQ2Fubm90IHJvdW5kIHdpdGhvdXQgYSBzbWFsbGVzdFVuaXQgb3IgbGFyZ2VzdFVuaXQg
b3B0aW9uIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJDYW5ub3Qgcm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvciBsYXJnZXN0VW5pdCBvcHRp
b24iX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCiAgICAgaWYgKHNtYWxsZXN0
ICYmIGxhcmdlc3QgJiYgc21hbGxlc3QudmFsdWUoKSA8IGxhcmdlc3QudmFsdWUoKSkgewotICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBt
dXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfcyk7CisgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxlciB0
aGFuIGxhcmdlc3RVbml0Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAt
NDkzLDExICs0OTMsMTEgQEAgSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxEdXJhdGlvbjo6cm91
bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZQogCiAgICAgLy8gRklYTUU6
IEltcGxlbWVudCByZWxhdGl2ZVRvIHBhcmFtZXRlciBhZnRlciBQbGFpbkRhdGVUaW1lIC8gWm9u
ZWREYXRlVGltZS4KICAgICBpZiAobGFyZ2VzdFVuaXQgPiBUZW1wb3JhbFVuaXQ6OlllYXIgJiYg
KHllYXJzKCkgfHwgbW9udGhzKCkgfHwgd2Vla3MoKSB8fCAoZGF5cygpICYmIGxhcmdlc3RVbml0
IDwgVGVtcG9yYWxVbml0OjpEYXkpKSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCBhIGR1cmF0aW9uIG9mIHllYXJzLCBtb250aHMs
IG9yIHdlZWtzIHdpdGhvdXQgYSByZWxhdGl2ZVRvIG9wdGlvbiJfcyk7CisgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHJvdW5kIGEgZHVyYXRpb24g
b2YgeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgd2l0aG91dCBhIHJlbGF0aXZlVG8gb3B0aW9uIl9z
dHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBpZiAobGFyZ2VzdFVuaXQgPD0g
VGVtcG9yYWxVbml0OjpXZWVrKSB7Ci0gICAgICAgIHRocm93Vk1FcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRklYTUU6IHllYXJzLCBtb250aHMsIG9yIHdlZWtzIHJvdW5kaW5nIHdpdGggcmVs
YXRpdmVUbyBub3QgaW1wbGVtZW50ZWQgeWV0Il9zKTsKKyAgICAgICAgdGhyb3dWTUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGSVhNRTogeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgcm91bmRp
bmcgd2l0aCByZWxhdGl2ZVRvIG5vdCBpbXBsZW1lbnRlZCB5ZXQiX3N0cik7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogCkBAIC01MjAsMTQgKzUyMCwxNCBAQCBkb3VibGUgVGVtcG9yYWxE
dXJhdGlvbjo6dG90YWwoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRp
b25zVmFsdQogCiAgICAgYXV0byB1bml0VHlwZSA9IHRlbXBvcmFsVW5pdFR5cGUodW5pdFN0cmlu
Zyk7CiAgICAgaWYgKCF1bml0VHlwZSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInVuaXQgaXMgYW4gaW52YWxpZCBUZW1wb3JhbCB1bml0Il9zKTsKKyAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ1bml0IGlzIGFuIGlu
dmFsaWQgVGVtcG9yYWwgdW5pdCJfc3RyKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAg
IFRlbXBvcmFsVW5pdCB1bml0ID0gdW5pdFR5cGUudmFsdWUoKTsKIAogICAgIC8vIEZJWE1FOiBJ
bXBsZW1lbnQgcmVsYXRpdmVUbyBwYXJhbWV0ZXIgYWZ0ZXIgUGxhaW5EYXRlVGltZSAvIFpvbmVk
RGF0ZVRpbWUuCiAgICAgaWYgKHVuaXQgPiBUZW1wb3JhbFVuaXQ6OlllYXIgJiYgKHllYXJzKCkg
fHwgbW9udGhzKCkgfHwgd2Vla3MoKSB8fCAoZGF5cygpICYmIHVuaXQgPCBUZW1wb3JhbFVuaXQ6
OkRheSkpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
Q2Fubm90IHRvdGFsIGEgZHVyYXRpb24gb2YgeWVhcnMsIG1vbnRocywgb3Igd2Vla3Mgd2l0aG91
dCBhIHJlbGF0aXZlVG8gb3B0aW9uIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJDYW5ub3QgdG90YWwgYSBkdXJhdGlvbiBvZiB5ZWFycywgbW9udGhz
LCBvciB3ZWVrcyB3aXRob3V0IGEgcmVsYXRpdmVUbyBvcHRpb24iX3N0cik7CiAgICAgICAgIHJl
dHVybiB7IH07CiAgICAgfQogCkBAIC01NTEsNyArNTUxLDcgQEAgU3RyaW5nIFRlbXBvcmFsRHVy
YXRpb246OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0
aW9uc1YKICAgICBQcmVjaXNpb25EYXRhIGRhdGEgPSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGds
b2JhbE9iamVjdCwgb3B0aW9ucyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKICAgICBpZiAoZGF0YS51bml0IDwgVGVtcG9yYWxVbml0OjpTZWNvbmQpIHsKLSAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBu
b3QgYmUgXCJtaW51dGVcIiJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3Qgbm90IGJlIFwibWludXRlXCIiX3N0cik7CiAg
ICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAppbmRl
eCBkZDNjZWYxMDU2NjNiNzM4M2ZjOTM4YThkNDY4Yjk3OTZhNThjNjBjLi5hNmFjYzM2ODNiMjhm
NzQxNzk0YTQwMzAzZDA1NDQ1ZTU4MzUxZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAK
QEAgLTc1LDcgKzc1LDcgQEAgVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpUZW1wb3JhbER1
cmF0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnUKIAogdm9pZCBUZW1wb3Jh
bER1cmF0aW9uQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxEdXJh
dGlvblByb3RvdHlwZSogZHVyYXRpb25Qcm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0sIDAsICJEdXJhdGlvbiJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRT
dHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIkR1
cmF0aW9uIl9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNp
dGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgZHVyYXRpb25Qcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KTsKICAgICBkdXJhdGlvblByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CkBAIC05Niw3ICs5
Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbER1cmF0aW9u
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHJlc3VsdFtpXSkp
Ci0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3MpOworICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zdHIpOwogICAgIH0K
IAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFs
RHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJlc3VsdCks
IHN0cnVjdHVyZSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKaW5kZXggMGNiNDQyZTI5MGJmOGZh
MWEyZDZkZTg4Zjk2MTlkNzZiMmJhZjNjNC4uMTRkMmY0YzkyNjNlNzc4ZjQxM2M0NjRhYzY5OGY5
ZTA5MDk3Y2E4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKQEAgLTEyMywxMSArMTIzLDExIEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY1dp
dGgsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAg
ICBpZiAoIWR1cmF0aW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLndpdGggY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5
cGUud2l0aCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zdHIpOwogICAg
IAogICAgIEpTVmFsdWUgZHVyYXRpb25MaWtlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAg
ICBpZiAoIWR1cmF0aW9uTGlrZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gVGVtcG9yYWwu
RHVyYXRpb24ucHJvdG90eXBlLndpdGggbXVzdCBiZSBhbiBvYmplY3QiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1l
bnQgdG8gVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLndpdGggbXVzdCBiZSBhbiBvYmplY3Qi
X3N0cik7CiAKICAgICBhdXRvIHJlc3VsdCA9IGR1cmF0aW9uLT53aXRoKGdsb2JhbE9iamVjdCwg
YXNPYmplY3QoZHVyYXRpb25MaWtlKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKQEAgLTE0Miw3ICsxNDIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZUZ1bmNOZWdhdGVkLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBh
dXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24u
cHJvdG90eXBlLm5lZ2F0ZWQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJf
cyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubmVnYXRlZCBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIER1cmF0aW9uIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShU
ZW1wb3JhbER1cmF0aW9uOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1
cmUoKSwgZHVyYXRpb24tPm5lZ2F0ZWQoKSkpOwogfQpAQCAtMTU0LDcgKzE1NCw3IEBAIEpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY0FicywgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8
VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAo
IWR1cmF0aW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLmFicyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5hYnMg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPmR1cmF0aW9uU3RydWN0dXJlKCksIGR1cmF0aW9uLT5hYnMoKSkpOwogfQpAQCAtMTY2LDcg
KzE2Niw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90
eXBlRnVuY0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9
IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLmFkZCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9u
LnByb3RvdHlwZS5hZGQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3Ry
KTsKIAogICAgIGF1dG8gcmVzdWx0ID0gZHVyYXRpb24tPmFkZChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CkBAIC0xODEsNyArMTgxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVy
YXRpb25Qcm90b3R5cGVGdW5jU3VidHJhY3QsIChKU0dsb2JhbE9iamVjdCoKIAogICAgIGF1dG8q
IGR1cmF0aW9uID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90
b3R5cGUuc3VidHJhY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuc3VidHJhY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gZHVyYXRpb24tPnN1
YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTE5NiwxMSArMTk2LDExIEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY1JvdW5kLCAoSlNH
bG9iYWxPYmplY3QqIGdsCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxEdXJhdGlvbio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWR1
cmF0aW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLnJvdW5kIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLnJvdW5k
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICBhdXRv
IG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChvcHRpb25zLmlzVW5k
ZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUucm91bmQgcmVxdWlyZXMgYW4gb3B0
aW9ucyBhcmd1bWVudCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUucm91bmQgcmVxdWly
ZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJfc3RyKTsKIAogICAgIGF1dG8gcmVzdWx0ID0gZHVyYXRp
b24tPnJvdW5kKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKQEAgLTIxNSwxMSArMjE1LDExIEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY1RvdGFsLCAoSlNHbG9iYWxPYmplY3Qq
IGdsCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlv
bio+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24ucHJvdG90eXBlLnRvdGFsIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
RHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLnRvdGFsIGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICBhdXRvIG9wdGlvbnMgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVkKCkpCi0g
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5EdXJhdGlvbi5wcm90b3R5cGUudG90YWwgcmVxdWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVu
dCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUudG90YWwgcmVxdWlyZXMgYW4gb3B0aW9u
cyBhcmd1bWVudCJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT50b3RhbChnbG9iYWxPYmplY3QsIG9wdGlvbnMp
KSkpOwogfQpAQCAtMjMxLDcgKzIzMSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbER1cmF0aW9uUHJvdG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqCiAKICAg
ICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRp
b24ucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRp
b24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
c2NvcGUsIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgZHVyYXRpb24tPnRvU3RyaW5nKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKSk7CiB9CkBAIC0yNDMsNyArMjQz
LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVG
dW5jVG9KU09OLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8qIGR1cmF0aW9uID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUudG9KU09OIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24u
cHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9z
dHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgZHVyYXRpb24t
PnRvU3RyaW5nKCkpKTsKIH0KQEAgLTI1Niw3ICsyNTYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZywgKEpTR2xv
YmFsTwogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRp
b24qPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLkR1cmF0aW9uLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS50b0xvY2Fs
ZVN0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zdHIpOwogCiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgZHVyYXRpb24tPnRvU3RyaW5n
KCkpKTsKIH0KQEAgLTI2Niw3ICsyNjYsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxEdXJhdGlvblByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAoSlNHbG9iYWxPYmplY3QqCiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBi
ZSBjYWxsZWQuIFRvIGNvbXBhcmUgRHVyYXRpb24gdmFsdWVzLCB1c2UgVGVtcG9yYWwuRHVyYXRp
b24uY29tcGFyZSJfcyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJl
IGNhbGxlZC4gVG8gY29tcGFyZSBEdXJhdGlvbiB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5EdXJhdGlv
bi5jb21wYXJlIl9zdHIpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZUdldHRlclllYXJzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQpAQCAtMjc2LDcgKzI3
Niw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
R2V0dGVyWWVhcnMsIChKU0dsb2JhbE9iamVjdCoKIAogICAgIGF1dG8qIGR1cmF0aW9uID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFs
dWUpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLnllYXJz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRp
b24ucHJvdG90eXBlLnllYXJzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24i
X3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT55
ZWFycygpKSk7CiB9CkBAIC0yODgsNyArMjg4LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVHZXR0ZXJNb250aHMsIChKU0dsb2JhbE9iamVjdCoK
IAogICAgIGF1dG8qIGR1cmF0aW9uID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4o
dm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuRHVyYXRpb24ucHJvdG90eXBlLm1vbnRocyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5tb250aHMgY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoZHVyYXRpb24tPm1vbnRocygpKSk7CiB9CkBAIC0zMDAsNyArMzAw
LDcgQEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGVH
ZXR0ZXJXZWVrcywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5
bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUud2Vla3Mg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlv
bi5wcm90b3R5cGUud2Vla3MgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJf
c3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZHVyYXRpb24tPndl
ZWtzKCkpKTsKIH0KQEAgLTMxMiw3ICszMTIsNyBAQCBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
dGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlckRheXMsIChKU0dsb2JhbE9iamVjdCogZwog
CiAgICAgYXV0byogZHVyYXRpb24gPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih2
bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICghZHVyYXRpb24pCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5EdXJhdGlvbi5wcm90b3R5cGUuZGF5cyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1
cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5kYXlzIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5kYXlzKCkpKTsKIH0KQEAgLTMyNCw3ICszMjQsNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZUdldHRlckhv
dXJzLCAoSlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nh
c3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5ob3VycyBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3Rv
dHlwZS5ob3VycyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zdHIpOwog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihkdXJhdGlvbi0+aG91cnMoKSkp
OwogfQpAQCAtMzM2LDcgKzMzNiw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3Jh
bER1cmF0aW9uUHJvdG90eXBlR2V0dGVyTWludXRlcywgKEpTR2xvYmFsT2JqZWN0CiAKICAgICBh
dXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0
aW9uLnByb3RvdHlwZS5taW51dGVzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRp
b24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLm1pbnV0ZXMgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoZHVyYXRpb24tPm1pbnV0ZXMoKSkpOwogfQpAQCAtMzQ4LDcgKzM0OCw3IEBA
IEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlR2V0dGVy
U2Vjb25kcywgKEpTR2xvYmFsT2JqZWN0CiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5zZWNvbmRzIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24u
cHJvdG90eXBlLnNlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJf
c3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZHVyYXRpb24tPnNl
Y29uZHMoKSkpOwogfQpAQCAtMzYwLDcgKzM2MCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlR2V0dGVyTWlsbGlzZWNvbmRzLCAoSlNHbG9iYWxP
CiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLkR1cmF0aW9uLnByb3RvdHlwZS5taWxsaXNlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBEdXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubWlsbGlzZWNv
bmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5taWxsaXNlY29uZHMoKSkp
OwogfQpAQCAtMzcyLDcgKzM3Miw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3Jh
bER1cmF0aW9uUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmRzLCAoSlNHbG9iYWxPCiAKICAgICBh
dXRvKiBkdXJhdGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0
aW9uLnByb3RvdHlwZS5taWNyb3NlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBE
dXJhdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUubWljcm9zZWNvbmRzIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGR1cmF0aW9uLT5taWNyb3NlY29uZHMoKSkpOwogfQpAQCAt
Mzg0LDcgKzM4NCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbER1cmF0aW9u
UHJvdG90eXBlR2V0dGVyTmFub3NlY29uZHMsIChKU0dsb2JhbE9iCiAKICAgICBhdXRvKiBkdXJh
dGlvbiA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNv
ZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3Rv
dHlwZS5uYW5vc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIER1cmF0aW9uIl9z
KTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5uYW5vc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIER1cmF0aW9uIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihkdXJhdGlvbi0+bmFub3NlY29uZHMoKSkpOwogfQpAQCAtMzk2LDcgKzM5Niw3
IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlR2V0
dGVyU2lnbiwgKEpTR2xvYmFsT2JqZWN0KiBnCiAKICAgICBhdXRvKiBkdXJhdGlvbiA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CiAgICAgaWYgKCFkdXJhdGlvbikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5zaWduIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRpb24iX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24u
cHJvdG90eXBlLnNpZ24gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBEdXJhdGlvbiJfc3Ry
KTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoZHVyYXRpb24tPnNpZ24o
KSkpOwogfQpAQCAtNDA4LDcgKzQwOCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1w
b3JhbER1cmF0aW9uUHJvdG90eXBlR2V0dGVyQmxhbmssIChKU0dsb2JhbE9iamVjdCoKIAogICAg
IGF1dG8qIGR1cmF0aW9uID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIWR1cmF0aW9uKQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVy
YXRpb24ucHJvdG90eXBlLmJsYW5rIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgRHVyYXRp
b24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLmJsYW5rIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgRHVyYXRpb24iX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzQm9vbGVhbighZHVyYXRpb24tPnNpZ24oKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudC5jcHAKaW5kZXggNmY2OGNmMGZmM2NkMmM4
NTcxMzc0YWJiM2UwMmM3MTNjMjA1ZmY1MC4uOTE4ZmY0NzFmZmJlN2JlNDE3YzJkYjMyY2Y0Mzk5
M2NhNjUxNzE2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbEluc3RhbnQuY3BwCkBAIC0xMjQsNyArMTI0LDcgQEAgVGVtcG9yYWxJbnN0YW50KiBUZW1w
b3JhbEluc3RhbnQ6OnRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwKICAgICAgICAgU3RyaW5nIGFyZ0FzU3RyaW5nID0gYmlnaW50LT50b1N0cmluZyhnbG9iYWxP
YmplY3QsIDEwKTsKICAgICAgICAgaWYgKHNjb3BlLmV4Y2VwdGlvbigpKSB7CiAgICAgICAgICAg
ICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOwotICAgICAgICAgICAgYXJnQXNTdHJpbmcgPSAiVGhl
IGdpdmVuIG51bWJlciBvZiJfczsKKyAgICAgICAgICAgIGFyZ0FzU3RyaW5nID0gIlRoZSBnaXZl
biBudW1iZXIgb2YiX3N0cjsKICAgICAgICAgfQogCiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKGVsbGlwc2l6ZUF0KDEwMCwgYXJnQXNTdHJp
bmcpLCAiIGVwb2NoIG5hbm9zZWNvbmRzIGlzIG91dHNpZGUgb2YgdGhlIHN1cHBvcnRlZCByYW5n
ZSBmb3IgVGVtcG9yYWwuSW5zdGFudCJfcykpOwpAQCAtMjU2LDcgKzI1Niw3IEBAIFRlbXBvcmFs
SW5zdGFudCogVGVtcG9yYWxJbnN0YW50Ojpmcm9tRXBvY2hNaWNyb3NlY29uZHMoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iCiAgICAgICAgIFN0cmluZyBhcmdBc1N0cmluZyA9IGJpZ2ludC0+dG9T
dHJpbmcoZ2xvYmFsT2JqZWN0LCAxMCk7CiAgICAgICAgIGlmIChzY29wZS5leGNlcHRpb24oKSkg
ewogICAgICAgICAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKLSAgICAgICAgICAgIGFyZ0Fz
U3RyaW5nID0gIlRoZSBnaXZlbiBudW1iZXIgb2YiX3M7CisgICAgICAgICAgICBhcmdBc1N0cmlu
ZyA9ICJUaGUgZ2l2ZW4gbnVtYmVyIG9mIl9zdHI7CiAgICAgICAgIH0KIAogICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZyhlbGxpcHNpemVBdCgx
MDAsIGFyZ0FzU3RyaW5nKSwgIiBlcG9jaCBtaWNyb3NlY29uZHMgaXMgb3V0c2lkZSBvZiBzdXBw
b3J0ZWQgcmFuZ2UgZm9yIFRlbXBvcmFsLkluc3RhbnQiX3MpKTsKQEAgLTMxMSw3ICszMTEsNyBA
QCBJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbEluc3RhbnQ6OmRpZmZlcmVuY2UoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGVtcAogICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0VW5pdCA9
IGxhcmdlc3QudmFsdWVfb3IoZGVmYXVsdExhcmdlc3RVbml0KTsKIAogICAgIGlmIChzbWFsbGVz
dCAmJiBsYXJnZXN0ICYmIHNtYWxsZXN0IDwgbGFyZ2VzdCkgewotICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBtdXN0IGJlIHNtYWxsZXIg
dGhhbiBsYXJnZXN0VW5pdCJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxlciB0aGFuIGxhcmdlc3RVbml0
Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAtMzY3LDcgKzM2Nyw3IEBA
IElTTzg2MDE6OkV4YWN0VGltZSBUZW1wb3JhbEluc3RhbnQ6OnJvdW5kKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwogCiAgICAgaWYgKCFzbWFsbGVzdCkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0IGEgc21hbGxlc3RVbml0IG9w
dGlvbiJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
Q2Fubm90IHJvdW5kIHdpdGhvdXQgYSBzbWFsbGVzdFVuaXQgb3B0aW9uIl9zdHIpOwogICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KICAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21h
bGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKQEAgLTQyMyw3ICs0MjMs
NyBAQCBTdHJpbmcgVGVtcG9yYWxJbnN0YW50Ojp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYQogICAgIC8vIDEuIExldCBfZGF0ZVRpbWVfIGJl
ID8gQnVpbHRpblRpbWVab25lR2V0UGxhaW5EYXRlVGltZUZvcihfb3V0cHV0VGltZVpvbmVfLCBf
aW5zdGFudF8sIF9pc29DYWxlbmRhcl8pLgogICAgIEpTT2JqZWN0KiBvdXRwdXRUaW1lWm9uZSA9
IHRpbWVab25lOwogICAgIGlmIChvdXRwdXRUaW1lWm9uZSkgewotICAgICAgICB0aHJvd1ZNRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZJWE1FOiBUZW1wb3JhbC5JbnN0YW50LnRvU3RyaW5n
KHt0aW1lWm9uZX0pIG5vdCBpbXBsZW1lbnRlZCB5ZXQiX3MpOworICAgICAgICB0aHJvd1ZNRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZJWE1FOiBUZW1wb3JhbC5JbnN0YW50LnRvU3RyaW5n
KHt0aW1lWm9uZX0pIG5vdCBpbXBsZW1lbnRlZCB5ZXQiX3N0cik7CiAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggODYxZDgwYzE4ODdlMjY1
MGYwY2Q3NzJhNzM3NWY5OWNkNjRhZTUzZi4uMWZlMGQxZjk0MjJlYzgwNzBjNzhkOWE2MTU0YzBl
MGMzMmRkMGJiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxJbnN0YW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9yLmNwcApAQCAtODMsNyArODMsNyBAQCBU
ZW1wb3JhbEluc3RhbnRDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxJbnN0YW50Q29uc3RydWN0b3IoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdAogCiB2b2lkIFRlbXBvcmFsSW5zdGFudENvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsSW5zdGFudFByb3RvdHlwZSogaW5zdGFu
dFByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgIkluc3RhbnQi
X3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsICJJbnN0YW50Il9zdHIsIFByb3BlcnR5QWRk
aXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgaW5zdGFudFBy
b3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogICAgIGluc3RhbnRQ
cm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSkpOwogfQpAQCAtOTgsNyArOTgsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04oY29uc3RydWN0VGVtcG9yYWxJbnN0YW50LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoY2Fs
bEZyYW1lLT5hcmd1bWVudENvdW50KCkgPCAxKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiTWlzc2luZyByZXF1aXJlZCBlcG9jaE5hbm9zZWNv
bmRzIGFyZ3VtZW50IHRvIFRlbXBvcmFsLkluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiTWlzc2luZyByZXF1aXJlZCBlcG9j
aE5hbm9zZWNvbmRzIGFyZ3VtZW50IHRvIFRlbXBvcmFsLkluc3RhbnQiX3N0cik7CiAKICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbEluc3RhbnQ6
OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApLCBzdHJ1Y3R1cmUpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxJbnN0YW50UHJvdG90eXBlLmNwcAppbmRleCBhNDI2YmUw
NmZmZDM5NDEwNjNjMWZmMmI1MTg3Yjk5YzYxNTY1YzMzLi44YzA1ZjFkYzhhYTUxNWUzNjRlNTk3
ZjM4YTNkYjNlNTQ0MjcyM2U5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbEluc3RhbnRQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsSW5zdGFudFByb3RvdHlwZS5jcHAKQEAgLTExNCwxNCArMTE0
LDE0IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVG
dW5jQWRkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGlu
c3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIWluc3RhbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5h
ZGQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3N0
cik7CiAKICAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiA9IFRlbXBvcmFsRHVyYXRpb246
OnRvTGltaXRlZER1cmF0aW9uKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwg
ZGlzYWxsb3dlZEFkZGl0aW9uVW5pdHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPElTTzg2MDE6OkV4YWN0VGltZT4gbmV3RXhhY3RU
aW1lID0gaW5zdGFudC0+ZXhhY3RUaW1lKCkuYWRkKGR1cmF0aW9uKTsKICAgICBpZiAoIW5ld0V4
YWN0VGltZSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkFkZGl0aW9uIGlzIG91dHNpZGUgb2Ygc3VwcG9ydGVkIHJhbmdlIGZvciBUZW1wb3JhbC5JbnN0
YW50Il9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJB
ZGRpdGlvbiBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVtcG9yYWwuSW5zdGFu
dCJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAKQEAgLTEzNSwxNCArMTM1LDE0
IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5j
U3VidHJhY3QsIChKU0dsb2JhbE9iamVjdCoKIAogICAgIFRlbXBvcmFsSW5zdGFudCogaW5zdGFu
dCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnN1YnRy
YWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0
YW50LnByb3RvdHlwZS5zdWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3Rh
bnQiX3N0cik7CiAKICAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiA9IFRlbXBvcmFsRHVy
YXRpb246OnRvTGltaXRlZER1cmF0aW9uKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSwgZGlzYWxsb3dlZEFkZGl0aW9uVW5pdHMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CiAKICAgICBzdGQ6Om9wdGlvbmFsPElTTzg2MDE6OkV4YWN0VGltZT4gbmV3
RXhhY3RUaW1lID0gaW5zdGFudC0+ZXhhY3RUaW1lKCkuYWRkKC1kdXJhdGlvbik7CiAgICAgaWYg
KCFuZXdFeGFjdFRpbWUpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJTdWJ0cmFjdGlvbiBpcyBvdXRzaWRlIG9mIHN1cHBvcnRlZCByYW5nZSBmb3IgVGVt
cG9yYWwuSW5zdGFudCJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiU3VidHJhY3Rpb24gaXMgb3V0c2lkZSBvZiBzdXBwb3J0ZWQgcmFuZ2UgZm9yIFRl
bXBvcmFsLkluc3RhbnQiX3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCkBAIC0x
NTYsNyArMTU2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsSW5zdGFudFBy
b3RvdHlwZUZ1bmNVbnRpbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG8KIAogICAgIFRlbXBvcmFsSW5z
dGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJv
dG90eXBlLnVudGlsIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7Cisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5JbnN0YW50LnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IEluc3RhbnQiX3N0cik7CiAKICAgICBUZW1wb3JhbEluc3RhbnQqIG90aGVyID0gVGVtcG9yYWxJ
bnN0YW50Ojp0b0luc3RhbnQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMTc1LDcgKzE3NSw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jU2lu
Y2UsIChKU0dsb2JhbE9iamVjdCogZ2xvCiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQg
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKICAgICBpZiAoIWluc3RhbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5zaW5jZSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5w
cm90b3R5cGUuc2luY2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIp
OwogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0
YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTE5NCwxMSArMTk0LDExIEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jUm91bmQsIChKU0dsb2Jh
bE9iamVjdCogZ2xvCiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBp
ZiAoIWluc3RhbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUucm91
bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgSlNW
YWx1ZSBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBpZiAob3B0aW9ucy5p
c1VuZGVmaW5lZCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUucm91bmQgcmVxdWlyZXMgYW4g
b3B0aW9ucyBhcmd1bWVudCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5yb3VuZCByZXF1
aXJlcyBhbiBvcHRpb25zIGFyZ3VtZW50Il9zdHIpOwogCiAgICAgSVNPODYwMTo6RXhhY3RUaW1l
IG5ld0V4YWN0VGltZSA9IGluc3RhbnQtPnJvdW5kKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTIxMyw3ICsyMTMsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY0VxdWFs
cywgKEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBpbnN0YW50ID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbEluc3RhbnQqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXF1YWxzIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnBy
b3RvdHlwZS5lcXVhbHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIp
OwogCiAgICAgVGVtcG9yYWxJbnN0YW50KiBvdGhlciA9IFRlbXBvcmFsSW5zdGFudDo6dG9JbnN0
YW50KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTIzMCw3ICsyMzAsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxJbnN0YW50UHJvdG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9i
YWxPYmplY3QqCiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAo
IWluc3RhbnQpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9T
dHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIGlu
c3RhbnQtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKSk7
CiB9CkBAIC0yNDIsNyArMjQyLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
SW5zdGFudFByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2wKIAogICAgIFRl
bXBvcmFsSW5zdGFudCogaW5zdGFudCA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxJbnN0YW50Kj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghaW5zdGFudCkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLklu
c3RhbnQucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3Rh
bnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9KU09OIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBpbnN0YW50LT50b1N0cmluZygpKSkpOwog
fQpAQCAtMjU1LDcgKzI1NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbElu
c3RhbnRQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2JhbE9iCiAKICAgICBUZW1w
b3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWluc3RhbnQpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0
YW50LnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IEluc3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgSW50bERhdGVU
aW1lRm9ybWF0KiBmb3JtYXR0ZXIgPSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LT5kYXRlVGltZUZvcm1hdFN0cnVjdHVyZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAtMjcyLDcgKzI3Miw3IEBAIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVGdW5jVmFsdWVPZiwgKEpTR2xvYmFsT2Jq
ZWN0KiBnCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS52YWx1ZU9m
IG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFyZSBJbnN0YW50IHZhbHVlcywgdXNlIFRlbXBv
cmFsLkluc3RhbnQuY29tcGFyZSJfcyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLnZhbHVlT2YgbXVz
dCBub3QgYmUgY2FsbGVkLiBUbyBjb21wYXJlIEluc3RhbnQgdmFsdWVzLCB1c2UgVGVtcG9yYWwu
SW5zdGFudC5jb21wYXJlIl9zdHIpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVt
cG9yYWxJbnN0YW50UHJvdG90eXBlR2V0dGVyRXBvY2hTZWNvbmRzLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQpA
QCAtMjgyLDcgKzI4Miw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3Rh
bnRQcm90b3R5cGVHZXR0ZXJFcG9jaFNlY29uZHMsIChKU0dsb2JhbE9iCiAKICAgICBUZW1wb3Jh
bEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5z
dGFudC5wcm90b3R5cGUuZXBvY2hTZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
SW5zdGFudCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5JbnN0YW50LnByb3RvdHlwZS5lcG9jaFNlY29uZHMgY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaFNlY29uZHMoKSkp
OwogfQpAQCAtMjk0LDcgKzI5NCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3Jh
bEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pbGxpc2Vjb25kcywgKEpTR2xvCiAKICAgICBU
ZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+
KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFpbnN0YW50KQotICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWxsaXNlY29uZHMgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3RhbnQucHJvdG90eXBlLmVwb2NoTWls
bGlzZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgSW5zdGFudCJfc3RyKTsKIAog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoaW5zdGFudC0+ZXhhY3RUaW1lKCku
ZXBvY2hNaWxsaXNlY29uZHMoKSkpOwogfQpAQCAtMzA2LDcgKzMwNiw3IEBAIEpTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90b3R5cGVHZXR0ZXJFcG9jaE1pY3Jvc2Vj
b25kcywgKEpTR2xvCiAKICAgICBUZW1wb3JhbEluc3RhbnQqIGluc3RhbnQgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAg
ICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hNaWNyb3NlY29u
ZHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBJbnN0YW50Il9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkluc3Rh
bnQucHJvdG90eXBlLmVwb2NoTWljcm9zZWNvbmRzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgSW5zdGFudCJfc3RyKTsKIAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKEpTQmlnSW50OjptYWtlSGVhcEJpZ0ludE9yQmlnSW50MzIoZ2xvYmFsT2JqZWN0
LCBpbnN0YW50LT5leGFjdFRpbWUoKS5lcG9jaE1pY3Jvc2Vjb25kcygpKSkpOwogfQpAQCAtMzE4
LDcgKzMxOCw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbEluc3RhbnRQcm90
b3R5cGVHZXR0ZXJFcG9jaE5hbm9zZWNvbmRzLCAoSlNHbG9iCiAKICAgICBUZW1wb3JhbEluc3Rh
bnQqIGluc3RhbnQgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsSW5zdGFudCo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFpbnN0YW50KQotICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5w
cm90b3R5cGUuZXBvY2hOYW5vc2Vjb25kcyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIElu
c3RhbnQiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuSW5zdGFudC5wcm90b3R5cGUuZXBvY2hOYW5vc2Vjb25kcyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIEluc3RhbnQiX3N0cik7CiAKICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShKU0JpZ0ludDo6Y3JlYXRlRnJvbShnbG9i
YWxPYmplY3QsIGluc3RhbnQtPmV4YWN0VGltZSgpLmVwb2NoTmFub3NlY29uZHMoKSkpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcApp
bmRleCAzY2QyZmEzNzMzYmE3MDBmYjZhZTcyZGIwOTkyMDRlMTkzODdiYTIwLi44Y2RmZTlhMjMw
OTZkMmU3MzI3Mzg3ZGYyMThhZjFjNzk5ZmU4NWU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCkBAIC0yNDEsMTIgKzI0MSwxMiBAQCBz
dGQ6Om9wdGlvbmFsPFRlbXBvcmFsVW5pdD4gdGVtcG9yYWxMYXJnZXN0VW5pdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKUwogCiAgICAgYXV0byB1bml0VHlwZSA9IHRlbXBvcmFsVW5p
dFR5cGUobGFyZ2VzdFVuaXQpOwogICAgIGlmICghdW5pdFR5cGUpIHsKLSAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJsYXJnZXN0VW5pdCBpcyBhbiBpbnZhbGlk
IFRlbXBvcmFsIHVuaXQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImxhcmdlc3RVbml0IGlzIGFuIGludmFsaWQgVGVtcG9yYWwgdW5pdCJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKICAgICBpZiAoZGlzYWxsb3dl
ZFVuaXRzLnNpemUoKSAmJiBzdGQ6OmZpbmQoZGlzYWxsb3dlZFVuaXRzLmJlZ2luKCksIGRpc2Fs
bG93ZWRVbml0cy5lbmQoKSwgdW5pdFR5cGUudmFsdWUoKSkgIT0gZGlzYWxsb3dlZFVuaXRzLmVu
ZCgpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibGFy
Z2VzdFVuaXQgaXMgYSBkaXNhbGxvd2VkIHVuaXQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImxhcmdlc3RVbml0IGlzIGEgZGlzYWxsb3dlZCB1bml0
Il9zdHIpOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIApAQCAtMjY4LDEy
ICsyNjgsMTIgQEAgc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+IHRlbXBvcmFsU21hbGxlc3RV
bml0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEoKIAogICAgIGF1dG8gdW5pdFR5cGUg
PSB0ZW1wb3JhbFVuaXRUeXBlKHNtYWxsZXN0VW5pdCk7CiAgICAgaWYgKCF1bml0VHlwZSkgewot
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5p
dCBpcyBhbiBpbnZhbGlkIFRlbXBvcmFsIHVuaXQiX3MpOworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBpcyBhbiBpbnZhbGlkIFRlbXBv
cmFsIHVuaXQiX3N0cik7CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgfQogCiAg
ICAgaWYgKGRpc2FsbG93ZWRVbml0cy5zaXplKCkgJiYgc3RkOjpmaW5kKGRpc2FsbG93ZWRVbml0
cy5iZWdpbigpLCBkaXNhbGxvd2VkVW5pdHMuZW5kKCksIHVuaXRUeXBlLnZhbHVlKCkpICE9IGRp
c2FsbG93ZWRVbml0cy5lbmQoKSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBpcyBhIGRpc2FsbG93ZWQgdW5pdCJfcyk7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IGlz
IGEgZGlzYWxsb3dlZCB1bml0Il9zdHIpOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxQbGFpblRpbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQ
bGFpblRpbWUuY3BwCmluZGV4IGYzM2Y2YWZmYjkwODBmNjAwODhkYzEwNGE5NDU0ZjIyM2JlYjk2
ZTUuLjM1MmIyMmNlYzRlMjIyOGI2NWRmNTliNTRhNjBhNjY3N2I4M2Q4YjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKQEAg
LTk2LDI3ICs5NiwyNyBAQCBzdGF0aWMgSVNPODYwMTo6UGxhaW5UaW1lIHRvUGxhaW5UaW1lKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkR1cgogICAgIGRvdWJsZSBtaWNy
b3NlY29uZCA9IGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpOwogICAgIGRvdWJsZSBuYW5vc2Vjb25k
ID0gZHVyYXRpb24ubmFub3NlY29uZHMoKTsKICAgICBpZiAoIShob3VyID49IDAgJiYgaG91ciA8
PSAyMykpIHsKLSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJo
b3VyIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiaG91ciBpcyBvdXQgb2YgcmFuZ2UiX3N0cik7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQogICAgIGlmICghKG1pbnV0ZSA+PSAwICYmIG1pbnV0ZSA8PSA1OSkpIHsK
LSAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaW51dGUgaXMg
b3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJtaW51dGUgaXMgb3V0IG9mIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KICAgICBpZiAoIShzZWNvbmQgPj0gMCAmJiBzZWNvbmQgPD0gNTkpKSB7Ci0gICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic2Vjb25kIGlzIG91dCBv
ZiByYW5nZSJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAic2Vjb25kIGlzIG91dCBvZiByYW5nZSJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAgICAgaWYgKCEobWlsbGlzZWNvbmQgPj0gMCAmJiBtaWxsaXNlY29uZCA8PSA5OTkpKSB7
Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibWlsbGlzZWNv
bmQgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJtaWxsaXNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3N0cik7CiAgICAgICAg
IHJldHVybiB7IH07CiAgICAgfQogICAgIGlmICghKG1pY3Jvc2Vjb25kID49IDAgJiYgbWljcm9z
ZWNvbmQgPD0gOTk5KSkgewotICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIm1pY3Jvc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibWljcm9zZWNvbmQgaXMgb3V0IG9mIHJhbmdl
Il9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBpZiAoIShuYW5vc2Vjb25k
ID49IDAgJiYgbmFub3NlY29uZCA8PSA5OTkpKSB7Ci0gICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAibmFub3NlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm5hbm9zZWNvbmQgaXMg
b3V0IG9mIHJhbmdlIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1
cm4gSVNPODYwMTo6UGxhaW5UaW1lIHsKQEAgLTIzNCw3ICsyMzQsNyBAQCBJU084NjAxOjpQbGFp
blRpbWUgVGVtcG9yYWxQbGFpblRpbWU6OnJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdQogICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1v
bnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5IH0pOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgaWYgKCFzbWFsbGVzdCkgewotICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRo
b3V0IGEgc21hbGxlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiQ2Fubm90IHJvdW5kIHdpdGhvdXQgYSBzbWFsbGVzdFVuaXQg
b3B0aW9uIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICBUZW1wb3JhbFVu
aXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWUoKTsKQEAgLTMwMCw3ICszMDAsNyBAQCBz
dGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9UZW1wb3JhbFRpbWVSZWNvcmQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNPYgogICAgICAgICBkb3VibGUgaW50ZWdlciA9IHZhbHVlLnRv
SW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGludGVnZXIpKSB7
Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICAgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1l
IHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3N0cik7CiAgICAgICAgICAgICByZXR1cm4geyB9
OwogICAgICAgICB9CiAgICAgICAgIGR1cmF0aW9uW3VuaXRdID0gaW50ZWdlcjsKQEAgLTMyNywx
NCArMzI3LDE0IEBAIHN0YXRpYyBzdGQ6OmFycmF5PHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwgbnVt
YmVyT2ZUZW1wb3JhbFBsYWluVGltZVVuaXRzPiB0b1BhcnRpCiAgICAgICAgICAgICBkb3VibGUg
ZG91YmxlVmFsdWUgPSB2YWx1ZS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CiAg
ICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgICAgICAgICAg
aWYgKCFzdGQ6OmlzZmluaXRlKGRvdWJsZVZhbHVlKSkgewotICAgICAgICAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidG9QYXJ0aWFsVGltZSBwcm9wZXJ0aWVz
IG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInRvUGFydGlhbFRpbWUgcHJvcGVydGllcyBtdXN0IGJlIGZpbml0
ZSJfc3RyKTsKICAgICAgICAgICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgcGFydGlhbFRpbWVbc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHVuaXQpIC0gc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KFRlbXBvcmFsVW5pdDo6SG91cildID0gZG91YmxlVmFsdWU7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgaWYgKCFoYXNBbnlGaWVsZHMpIHsKLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInRvUGFydGlhbFRpbWUgcmVxdWlyZXMgYXQgbGVh
c3Qgb25lIHByb3BlcnR5Il9zKTsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgInRvUGFydGlhbFRpbWUgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHByb3BlcnR5Il9z
dHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KICAgICByZXR1cm4gcGFydGlhbFRpbWU7
CkBAIC00MDUsNyArNDA1LDcgQEAgVGVtcG9yYWxQbGFpblRpbWUqIFRlbXBvcmFsUGxhaW5UaW1l
Ojpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUKICAgICAgICAgU3Ry
aW5nIGNhbGVuZGFyV1RGU3RyaW5nID0gY2FsZW5kYXJTdHJpbmctPnZhbHVlKGdsb2JhbE9iamVj
dCk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAgICAgICAgIGlm
IChjYWxlbmRhcldURlN0cmluZyAhPSAiaXNvODYwMSJfcykgewotICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRhciBpcyBub3QgaXNvODYwMSJf
cyk7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNh
bGVuZGFyIGlzIG5vdCBpc284NjAxIl9zdHIpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICAgICAgfQogICAgICAgICBhdXRvIGR1cmF0aW9uID0gdG9UZW1wb3JhbFRpbWVSZWNvcmQoZ2xv
YmFsT2JqZWN0LCBqc0Nhc3Q8SlNPYmplY3QqPihpdGVtVmFsdWUpKTsKQEAgLTQzOSw3ICs0Mzks
NyBAQCBUZW1wb3JhbFBsYWluVGltZSogVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZQogICAgICAgICB9CiAgICAgfQogCi0gICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIHRpbWUgc3RyaW5nIl9z
KTsKKyAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgdGlt
ZSBzdHJpbmciX3N0cik7CiAgICAgcmV0dXJuIHsgfTsKIH0KIApAQCAtNTE0LDIxICs1MTQsMjEg
QEAgSVNPODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjp3aXRoKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWMKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CiAKICAgICBpZiAodGVtcG9yYWxUaW1lTGlrZS0+aW5oZXJpdHM8VGVtcG9y
YWxQbGFpblRpbWU+KHZtKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiYXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNhcnJ5IGNhbGVuZGFyIl9zKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVj
dCBtdXN0IG5vdCBjYXJyeSBjYWxlbmRhciJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAg
ICB9CiAKICAgICBKU1ZhbHVlIGNhbGVuZGFyUHJvcGVydHkgPSB0ZW1wb3JhbFRpbWVMaWtlLT5n
ZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhcik7CiAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoIWNhbGVuZGFyUHJvcGVydHkuaXNV
bmRlZmluZWQoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiYXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNhcnJ5IGNhbGVuZGFyIl9zKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0
IG5vdCBjYXJyeSBjYWxlbmRhciJfc3RyKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAK
ICAgICBKU1ZhbHVlIHRpbWVab25lUHJvcGVydHkgPSB0ZW1wb3JhbFRpbWVMaWtlLT5nZXQoZ2xv
YmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lWm9uZSk7CiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKICAgICBpZiAoIXRpbWVab25lUHJvcGVydHkuaXNVbmRlZmlu
ZWQoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJn
dW1lbnQgb2JqZWN0IG11c3Qgbm90IGNhcnJ5IHRpbWUgem9uZSJfcyk7CisgICAgICAgIHRocm93
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBvYmplY3QgbXVzdCBub3Qg
Y2FycnkgdGltZSB6b25lIl9zdHIpOwogICAgICAgICByZXR1cm4geyB9OwogICAgIH0KIApAQCAt
NTg2LDcgKzU4Niw3IEBAIHN0YXRpYyBzdGQ6OnR1cGxlPFRlbXBvcmFsVW5pdCwgVGVtcG9yYWxV
bml0LCBSb3VuZGluZ01vZGUsIGRvdWJsZT4gZXh0cmFjdERpZmZlCiAgICAgVGVtcG9yYWxVbml0
IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6OkhvdXIpOwogCiAg
ICAgaWYgKHNtYWxsZXN0VW5pdCA8IGxhcmdlc3RVbml0KSB7Ci0gICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxlciB0
aGFuIGxhcmdlc3RVbml0Il9zKTsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2VzdFVuaXQi
X3N0cik7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0
b3IuY3BwCmluZGV4IGQ2N2NmYzlhNTBhNmZiZmY5ODJmMjgwNjZjZWE3NzJhMThjMTMxYTguLmVi
NGQyOThmNjkwZDk1MzMzOWZkMmNmNGI0MzQ4OGIwNzFiMzllNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29u
c3RydWN0b3IuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0
b3I6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0CiAK
IHZvaWQgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogcGxhaW5UaW1lUHJvdG90eXBlKQogewotICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiUGxhaW5UaW1lIl9zLCBQcm9wZXJ0eUFkZGl0
aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENy
ZWF0aW9uKHZtLCAwLCAiUGxhaW5UaW1lIl9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRo
b3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcGxhaW5UaW1lUHJvdG90eXBlLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgcGxhaW5UaW1lUHJvdG90eXBlLT5w
dXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0
b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pKTsKIH0KQEAgLTk2LDcgKzk2LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0
cnVjdFRlbXBvcmFsUGxhaW5UaW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamUKICAgICAg
ICAgZHVyYXRpb25bZHVyYXRpb25JbmRleF0gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50
KGkpLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKICAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGR1cmF0
aW9uW2R1cmF0aW9uSW5kZXhdKSkKLSAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lIHByb3BlcnRpZXMgbXVz
dCBiZSBmaW5pdGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUgcHJvcGVydGllcyBtdXN0IGJl
IGZpbml0ZSJfc3RyKTsKICAgICB9CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIFdURk1vdmUoZHVyYXRpb24pKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGUuY3BwCmluZGV4IGU0OTY3ZDRmOTQ5NThkM2NjM2EyYjc1N2M3MDNjMWI4NDg0ZGQ1NDguLjM1
ZTgzMDZiZmEyMDU4NjEwMGQ2OWUwNWJiMTIxZTlkNmQzZTAwYWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZS5jcHAKQEAgLTExNyw3ICsxMTcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jQWRkLCAoSlNHbG9iYWxPYmplY3QqIGdsbwogCiAg
ICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZt
LCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBs
YWluVGltZS5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5U
aW1lIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgYXV0byByZXN1bHQgPSBwbGFpblRp
bWUtPmFkZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0xMzMsNyArMTMzLDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1N1YnRyYWN0LCAo
SlNHbG9iYWxPYmplY3QKIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFw
bGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnN1YnRyYWN0IGNhbGxlZCBvbiB2
YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5
cGUuc3VidHJhY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3N0cik7
CiAKICAgICBhdXRvIHJlc3VsdCA9IHBsYWluVGltZS0+c3VidHJhY3QoZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwpAQCAtMTQ5LDExICsxNDksMTEgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGgsIChKU0dsb2JhbE9iamVjdCogZ2wKIAogICAg
IGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFp
blRpbWUucHJvdG90eXBlLndpdGggY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRp
bWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS53aXRoIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgSlNWYWx1ZSB0ZW1wb3JhbFRpbWVM
aWtlICA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCF0ZW1wb3JhbFRpbWVMaWtl
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJGaXJzdCBhcmd1bWVudCB0byBUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBl
LndpdGggbXVzdCBiZSBhbiBvYmplY3QiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgdG8gVGVtcG9yYWwuUGxh
aW5UaW1lLnByb3RvdHlwZS53aXRoIG11c3QgYmUgYW4gb2JqZWN0Il9zdHIpOwogCiAgICAgYXV0
byByZXN1bHQgPSBwbGFpblRpbWUtPndpdGgoZ2xvYmFsT2JqZWN0LCBhc09iamVjdCh0ZW1wb3Jh
bFRpbWVMaWtlKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKQEAgLTE2OSw3ICsxNjksNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVW50aWwsIChKU0dsb2JhbE9iamVj
dCogZwogCiAgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWlu
VGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXBsYWluVGltZSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudW50aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS51bnRpbCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAgIGF1dG8qIG90
aGVyID0gVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CkBAIC0xODgsNyArMTg4LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1NpbmNlLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAg
IGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFp
blRpbWUucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5U
aW1lIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuc2luY2UgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICBhdXRvKiBvdGhlciA9IFRlbXBv
cmFsUGxhaW5UaW1lOjpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwg
c3RkOjpudWxsb3B0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwpAQCAt
MjA3LDExICsyMDcsMTEgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1JvdW5kLCAoSlNHbG9iYWxPYmplY3QqIGcKIAogICAgIGF1dG8qIHBs
YWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1l
LT50aGlzVmFsdWUoKSk7CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJv
dG90eXBlLnJvdW5kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICBhdXRvIG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApOwogICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRp
bWUucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuUGxhaW5UaW1lLnByb3RvdHlwZS5yb3VuZCByZXF1aXJlcyBhbiBvcHRpb25zIGFyZ3VtZW50
Il9zdHIpOwogCiAgICAgYXV0byByb3VuZGVkID0gcGxhaW5UaW1lLT5yb3VuZChnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CkBAIC0y
MjcsNyArMjI3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlRnVuY0VxdWFscywgKEpTR2xvYmFsT2JqZWN0KgogCiAgICAgYXV0byogcGxhaW5U
aW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5
cGUuZXF1YWxzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLlBsYWluVGltZS5wcm90b3R5cGUuZXF1YWxzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgYXV0byogb3RoZXIgPSBUZW1wb3JhbFBsYWluVGlt
ZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9w
dCk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKQEAgLTI0Myw3ICsyNDMs
NyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVG
dW5jR2V0SVNPRmllbGRzLCAoSlNHbG9iYWxPYgogCiAgICAgYXV0byogcGxhaW5UaW1lID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuZXF1YWxz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWlu
VGltZS5wcm90b3R5cGUuZXF1YWxzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5U
aW1lIl9zdHIpOwogCiAgICAgSlNPYmplY3QqIGZpZWxkcyA9IGNvbnN0cnVjdEVtcHR5T2JqZWN0
KGdsb2JhbE9iamVjdCk7CiAgICAgZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmNhbGVuZGFyLCBwbGFpblRpbWUtPmNhbGVuZGFyKCkpOwpAQCAtMjY0LDcgKzI2NCw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNU
b1N0cmluZywgKEpTR2xvYmFsT2JqZWN0CiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwog
ICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b1N0cmluZyBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRp
bWUucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5U
aW1lIl9zdHIpOwogCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoanNTdHJpbmcodm0sIHBsYWluVGltZS0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKSkpKTsKIH0KQEAgLTI3Nyw3ICsyNzcsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9KU09OLCAoSlNHbG9i
YWxPYmplY3QqCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFs
UGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwogICAgIGlmICghcGxhaW5U
aW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b0pTT04gY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b0pT
T04gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3N0cik7CiAKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkp
KTsKIH0KQEAgLTI5MCw3ICsyOTAsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2JhbAogCiAgICAg
YXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBj
YWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWlu
VGltZS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b0xvY2FsZVN0cmlu
ZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHBsYWluVGltZS0+dG9TdHJpbmcoKSkp
OwogfQpAQCAtMzAxLDcgKzMwMSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAoSlNHbG9iYWxPYmplY3QqCiAgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAotICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnZhbHVlT2YgbXVzdCBub3QgYmUg
Y2FsbGVkLiBUbyBjb21wYXJlIFBsYWluVGltZSB2YWx1ZXMsIHVzZSBUZW1wb3JhbC5QbGFpblRp
bWUuY29tcGFyZSJfcyk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBi
ZSBjYWxsZWQuIFRvIGNvbXBhcmUgUGxhaW5UaW1lIHZhbHVlcywgdXNlIFRlbXBvcmFsLlBsYWlu
VGltZS5jb21wYXJlIl9zdHIpOwogfQogCiBKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQpAQCAtMzExLDcg
KzMxMSw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZUdldHRlckhvdXIsIChKU0dsb2JhbE9iamVjdCoKIAogICAgIGF1dG8qIHBsYWluVGltZSA9
IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOwogICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlw
ZS5ob3VyIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFs
LlBsYWluVGltZS5wcm90b3R5cGUuaG91ciBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBs
YWluVGltZSJfc3RyKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxh
aW5UaW1lLT5ob3VyKCkpKTsKIH0KQEAgLTMyMyw3ICszMjMsNyBAQCBKU0NfREVGSU5FX0NVU1RP
TV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUsIChKU0dsb2Jh
bE9iamVjdAogCiAgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBs
YWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CiAgICAgaWYgKCFwbGFp
blRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pbnV0ZSBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1p
bnV0ZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfc3RyKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5taW51dGUoKSkpOwog
fQpAQCAtMzM1LDcgKzMzNSw3IEBAIEpTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUdldHRlclNlY29uZCwgKEpTR2xvYmFsT2JqZWN0CiAKICAgICBhdXRv
KiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAgICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWlu
VGltZS5wcm90b3R5cGUuc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5U
aW1lIl9zKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuc2Vjb25kIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihwbGFpblRpbWUtPnNlY29uZCgpKSk7CiB9CkBAIC0zNDcsNyArMzQ3LDcg
QEAgSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0
dGVyTWlsbGlzZWNvbmQsIChKU0dsb2JhbE8KIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOwogICAgIGlmICghcGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWxs
aXNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5QbGFpblRpbWUucHJvdG90eXBlLm1pbGxpc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgcGxhaW5UaW1lIl9zdHIpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihwbGFpblRpbWUtPm1pbGxpc2Vjb25kKCkpKTsKIH0KQEAgLTM1OSw3ICszNTksNyBAQCBK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJN
aWNyb3NlY29uZCwgKEpTR2xvYmFsTwogCiAgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWlj
Q2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CiAgICAgaWYgKCFwbGFpblRpbWUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pY3Jvc2Vj
b25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBs
YWluVGltZS5wcm90b3R5cGUubWljcm9zZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVy
KHBsYWluVGltZS0+bWljcm9zZWNvbmQoKSkpOwogfQpAQCAtMzcxLDcgKzM3MSw3IEBAIEpTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck5hbm9z
ZWNvbmQsIChKU0dsb2JhbE9iCiAKICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKICAg
ICBpZiAoIXBsYWluVGltZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUubmFub3NlY29uZCBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRp
bWUucHJvdG90eXBlLm5hbm9zZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFp
blRpbWUiX3N0cik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWlu
VGltZS0+bmFub3NlY29uZCgpKSk7CiB9CkBAIC0zODMsNyArMzgzLDcgQEAgSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIsIChK
U0dsb2JhbE9iamUKIAogICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwogICAgIGlmICgh
cGxhaW5UaW1lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90
eXBlLmNhbGVuZGFyIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zdHIp
OwogCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShwbGFpblRpbWUtPmNhbGVuZGFyKCkpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1l
Wm9uZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25l
LmNwcAppbmRleCAxMDFhZDc2ZTc2NjY0MDc2Njk1OTA2NWFhNWM3NGRlNjk2YWM4MWU0Li5jOTc0
NWMyYjE2NWJkYzkzNGU3NjliMTMwMzlhMGZhNjNlMTZhZjZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcApAQCAtMTA4LDcgKzEw
OCw3IEBAIEpTT2JqZWN0KiBUZW1wb3JhbFRpbWVab25lOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdGltZVpvbmVMCiAgICAgaWYgKHV0Y09mZnNldEZyb21JbnN0
YW50KQogICAgICAgICByZXR1cm4gVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbVVUQ09mZnNl
dCh2bSwgZ2xvYmFsT2JqZWN0LT50aW1lWm9uZVN0cnVjdHVyZSgpLCB1dGNPZmZzZXRGcm9tSW5z
dGFudC52YWx1ZSgpKTsKIAotICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiYXJndW1lbnQgbmVlZHMgdG8gYmUgVVRDIG9mZnNldCBzdHJpbmcsIFRpbWVab25lIGlkZW50
aWZpZXIsIG9yIHRlbXBvcmFsIEluc3RhbnQgc3RyaW5nIl9zKTsKKyAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVUQyBvZmZzZXQg
c3RyaW5nLCBUaW1lWm9uZSBpZGVudGlmaWVyLCBvciB0ZW1wb3JhbCBJbnN0YW50IHN0cmluZyJf
c3RyKTsKICAgICByZXR1cm4geyB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcAppbmRl
eCBkZDc1M2MwMzFlMWNkYjdkYTIwMzJjZTg4MDgwYTMzOWVjNGI0MGFmLi5mODgwYjc2MzJkOWE4
YmZmYWE1M2JkYjhlMDI4NmI1OWRhYzFjM2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAK
QEAgLTcyLDcgKzcyLDcgQEAgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpUZW1wb3JhbFRp
bWVab25lQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnUKIAogdm9pZCBUZW1wb3Jh
bFRpbWVab25lQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxUaW1l
Wm9uZVByb3RvdHlwZSogdGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpm
aW5pc2hDcmVhdGlvbih2bSwgMCwgIlRpbWVab25lIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6
V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCAwLCAiVGltZVpvbmUiX3N0ciwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1
cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCB0ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CiAgICAgdGVtcG9yYWxUaW1lWm9uZVByb3RvdHlw
ZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKSk7CiB9CkBAIC05NSw3ICs5NSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihj
b25zdHJ1Y3RUZW1wb3JhbFRpbWVab25lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAK
ICAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjpwYXJz
ZVRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7CiAgICAgaWYgKCFpZGVudGlmaWVyKSB7Ci0g
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgbmVl
ZHMgdG8gYmUgVVRDIG9mZnNldCBzdHJpbmcgb3IgVGltZVpvbmUgaWRlbnRpZmllciJfcyk7Cisg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgbmVl
ZHMgdG8gYmUgVVRDIG9mZnNldCBzdHJpbmcgb3IgVGltZVpvbmUgaWRlbnRpZmllciJfc3RyKTsK
ICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShU
ZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tSUQodm0sIHN0cnVjdHVyZSwgaWRlbnRpZmllci52
YWx1ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbFRpbWVab25lUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuY3BwCmluZGV4IDZmNTc1NTc5ZTNlYWZiNjEzOTNm
MTUxYzZiZmJiNGEzY2FjZjdhODEuLmVlNWEwNDJhMjRkOTQ3Y2FlOGRmOWNmNWU0MGNhZDUyMjY3
ZmNlNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
VGltZVpvbmVQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuY3BwCkBAIC05MSw3ICs5MSw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlRnVuY1RvU3RyaW5nLCAo
SlNHbG9iYWxPYmplY3QqCiAKICAgICBhdXRvKiB0aW1lWm9uZSA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxUaW1lWm9uZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRp
bWVab25lKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuVGltZVpvbmUucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgVGltZVpvbmUiX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuVGltZVpvbmUucHJvdG90eXBlLnRv
U3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgVGltZVpvbmUiX3N0cik7CiAKICAg
ICBhdXRvIHZhcmlhbnQgPSB0aW1lWm9uZS0+dGltZVpvbmUoKTsKICAgICBhdXRvIHN0cmluZyA9
IFdURjo6c3dpdGNoT24odmFyaWFudCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1R5cGVTZXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlw
ZVNldC5jcHAKaW5kZXggZDg4YmEyOGMzZjMwOTI3MmUzZGEyZWM0MjZiOTM5ZWQxZTk5NTFjZi4u
NWRiZDk3ODU2NzJiYzc5YjllZGIxNzYwOTMxYTY3M2M5MzM2N2MwYyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBUeXBl
U2V0OjppbnZhbGlkYXRlQ2FjaGUoVk0mIHZtKQogU3RyaW5nIFR5cGVTZXQ6OmR1bXBUeXBlcygp
IGNvbnN0CiB7CiAgICAgaWYgKG1fc2VlblR5cGVzID09IFR5cGVOb3RoaW5nKQotICAgICAgICBy
ZXR1cm4gIihVbnJlYWNoZWQgU3RhdGVtZW50KSJfczsKKyAgICAgICAgcmV0dXJuICIoVW5yZWFj
aGVkIFN0YXRlbWVudCkiX3N0cjsKIAogICAgIFN0cmluZ0J1aWxkZXIgc2VlbjsKIApAQCAtMTY3
LDQ4ICsxNjcsNDggQEAgU3RyaW5nIFR5cGVTZXQ6OmRpc3BsYXlOYW1lKCkgY29uc3QKICAgICAv
LyBUaGVyZWZvcmUsIG1vcmUgc3BlY2lmaWMgdHlwZXMgbXVzdCBiZSBjaGVja2VkIGZpcnN0Lgog
CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVGdW5jdGlvbikpCi0gICAgICAgIHJldHVy
biAiRnVuY3Rpb24iX3M7CisgICAgICAgIHJldHVybiAiRnVuY3Rpb24iX3N0cjsKICAgICBpZiAo
ZG9lc1R5cGVDb25mb3JtVG8oVHlwZVVuZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiVW5kZWZp
bmVkIl9zOworICAgICAgICByZXR1cm4gIlVuZGVmaW5lZCJfc3RyOwogICAgIGlmIChkb2VzVHlw
ZUNvbmZvcm1UbyhUeXBlTnVsbCkpCi0gICAgICAgIHJldHVybiAiTnVsbCJfczsKKyAgICAgICAg
cmV0dXJuICJOdWxsIl9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVCb29sZWFu
KSkKLSAgICAgICAgcmV0dXJuICJCb29sZWFuIl9zOworICAgICAgICByZXR1cm4gIkJvb2xlYW4i
X3N0cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZUFueUludCkpCi0gICAgICAgIHJl
dHVybiAiSW50ZWdlciJfczsKKyAgICAgICAgcmV0dXJuICJJbnRlZ2VyIl9zdHI7CiAgICAgaWYg
KGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVOdW1iZXIgfCBUeXBlQW55SW50KSkKLSAgICAgICAgcmV0
dXJuICJOdW1iZXIiX3M7CisgICAgICAgIHJldHVybiAiTnVtYmVyIl9zdHI7CiAgICAgaWYgKGRv
ZXNUeXBlQ29uZm9ybVRvKFR5cGVTdHJpbmcpKQotICAgICAgICByZXR1cm4gIlN0cmluZyJfczsK
KyAgICAgICAgcmV0dXJuICJTdHJpbmciX3N0cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8o
VHlwZVN5bWJvbCkpCi0gICAgICAgIHJldHVybiAiU3ltYm9sIl9zOworICAgICAgICByZXR1cm4g
IlN5bWJvbCJfc3RyOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBlQmlnSW50KSkKLSAg
ICAgICAgcmV0dXJuICJCaWdJbnQiX3M7CisgICAgICAgIHJldHVybiAiQmlnSW50Il9zdHI7CiAK
ICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAg
ICAgICAgcmV0dXJuICIoPykiX3M7CisgICAgICAgIHJldHVybiAiKD8pIl9zdHI7CiAKICAgICBp
ZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZUZ1bmN0aW9uIHwgVHlwZU51bGwgfCBUeXBlVW5kZWZp
bmVkKSkKLSAgICAgICAgcmV0dXJuICJGdW5jdGlvbj8iX3M7CisgICAgICAgIHJldHVybiAiRnVu
Y3Rpb24/Il9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVCb29sZWFuIHwgVHlw
ZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuICJCb29sZWFuPyJfczsKKyAg
ICAgICAgcmV0dXJuICJCb29sZWFuPyJfc3RyOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhU
eXBlQW55SW50IHwgVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuICJJ
bnRlZ2VyPyJfczsKKyAgICAgICAgcmV0dXJuICJJbnRlZ2VyPyJfc3RyOwogICAgIGlmIChkb2Vz
VHlwZUNvbmZvcm1UbyhUeXBlTnVtYmVyIHwgVHlwZUFueUludCB8IFR5cGVOdWxsIHwgVHlwZVVu
ZGVmaW5lZCkpCi0gICAgICAgIHJldHVybiAiTnVtYmVyPyJfczsKKyAgICAgICAgcmV0dXJuICJO
dW1iZXI/Il9zdHI7CiAgICAgaWYgKGRvZXNUeXBlQ29uZm9ybVRvKFR5cGVTdHJpbmcgfCBUeXBl
TnVsbCB8IFR5cGVVbmRlZmluZWQpKQotICAgICAgICByZXR1cm4gIlN0cmluZz8iX3M7CisgICAg
ICAgIHJldHVybiAiU3RyaW5nPyJfc3RyOwogICAgIGlmIChkb2VzVHlwZUNvbmZvcm1UbyhUeXBl
U3ltYm9sIHwgVHlwZU51bGwgfCBUeXBlVW5kZWZpbmVkKSkKLSAgICAgICAgcmV0dXJuICJTeW1i
b2w/Il9zOworICAgICAgICByZXR1cm4gIlN5bWJvbD8iX3N0cjsKICAgICBpZiAoZG9lc1R5cGVD
b25mb3JtVG8oVHlwZUJpZ0ludCB8IFR5cGVOdWxsIHwgVHlwZVVuZGVmaW5lZCkpCi0gICAgICAg
IHJldHVybiAiQmlnSW50PyJfczsKKyAgICAgICAgcmV0dXJuICJCaWdJbnQ/Il9zdHI7CiAgICAK
ICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU9iamVjdCB8IFR5cGVGdW5jdGlvbiB8IFR5
cGVTdHJpbmcpKQotICAgICAgICByZXR1cm4gIk9iamVjdCJfczsKKyAgICAgICAgcmV0dXJuICJP
YmplY3QiX3N0cjsKICAgICBpZiAoZG9lc1R5cGVDb25mb3JtVG8oVHlwZU9iamVjdCB8IFR5cGVG
dW5jdGlvbiB8IFR5cGVTdHJpbmcgfCBUeXBlTnVsbCB8IFR5cGVVbmRlZmluZWQpKQotICAgICAg
ICByZXR1cm4gIk9iamVjdD8iX3M7CisgICAgICAgIHJldHVybiAiT2JqZWN0PyJfc3RyOwogCi0g
ICAgcmV0dXJuICIobWFueSkiX3M7CisgICAgcmV0dXJuICIobWFueSkiX3N0cjsKIH0KIAogU3Ry
aW5nIFR5cGVTZXQ6OmxlYXN0Q29tbW9uQW5jZXN0b3IoKSBjb25zdApAQCAtMzgxLDcgKzM4MSw3
IEBAIFN0cmluZyBTdHJ1Y3R1cmVTaGFwZTo6bGVhc3RDb21tb25BbmNlc3Rvcihjb25zdCBWZWN0
b3I8UmVmPFN0cnVjdHVyZVNoYXBlPj4mIHNoCiAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1
bmxpa2VseSB0byBoYXBwZW4sIGJlY2F1c2Ugd2UgdXN1YWxseSBib3R0b20gb3V0IGF0ICJPYmpl
Y3QiLCBidXQgdGhlcmUgYXJlIHNvbWUgc2V0cyBvZiBPYmplY3RzCiAgICAgICAgICAgICAgICAg
Ly8gdGhhdCBtYXkgY2F1c2UgdGhpcyBiZWhhdmlvci4gV2UgZmFsbCBiYWNrIHRvICJPYmplY3Qi
IGJlY2F1c2UgaXQncyBvdXIgdmVyc2lvbiBvZiBUb3AuCiAgICAgICAgICAgICAgICAgaWYgKCFv
cmlnaW4tPm1fcHJvdG8pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiAiT2JqZWN0Il9zOwor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gIk9iamVjdCJfc3RyOwogICAgICAgICAgICAgICAg
IG9yaWdpbiA9IG9yaWdpbi0+bV9wcm90by5nZXQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVHlwZVNldC5oCmluZGV4IDgwYmI0MDdlZjFk
MjZiODQ4ZDA2YzVlNzEwYzYwYTA5YjU4YWZiMjYuLmFjYmNlMzdiZTVkMjcxMTNjOTBlMGUyMmUw
N2VhNTdjZWViYmJiMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1R5cGVTZXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UeXBlU2V0LmgK
QEAgLTYxLDcgKzYxLDcgQEAgcHVibGljOgogICAgIFN0cmluZyBzdHJpbmdSZXByZXNlbnRhdGlv
bigpOwogICAgIFN0cmluZyB0b0pTT05TdHJpbmcoKSBjb25zdDsKICAgICBSZWY8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6U3RydWN0dXJlRGVzY3JpcHRpb24+IGluc3BlY3RvclJlcHJl
c2VudGF0aW9uKCk7Ci0gICAgdm9pZCBzZXRDb25zdHJ1Y3Rvck5hbWUoU3RyaW5nIG5hbWUpIHsg
bV9jb25zdHJ1Y3Rvck5hbWUgPSAobmFtZS5pc0VtcHR5KCkgPyAiT2JqZWN0Il9zIDogbmFtZSk7
IH0KKyAgICB2b2lkIHNldENvbnN0cnVjdG9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpIHsgbV9j
b25zdHJ1Y3Rvck5hbWUgPSAobmFtZS5pc0VtcHR5KCkgPyAiT2JqZWN0Il9zdHIgOiBuYW1lKTsg
fQogICAgIFN0cmluZyBjb25zdHJ1Y3Rvck5hbWUoKSB7IHJldHVybiBtX2NvbnN0cnVjdG9yTmFt
ZTsgfQogICAgIHZvaWQgc2V0UHJvdG8oUmVmPFN0cnVjdHVyZVNoYXBlPiYmIHNoYXBlKSB7IG1f
cHJvdG8gPSBXVEZNb3ZlKHNoYXBlKTsgfQogICAgIHZvaWQgZW50ZXJEaWN0aW9uYXJ5TW9kZSgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IGUzMmRjYjBhZDM0YjIzYmNk
YTI0NzFhMDNlZTkyY2I1MjMzMzgyMzguLmY2NDJmOTJkZDI4YjNkNTg0ZTU3ZDQwNWEwYjQwZjc2
ZTA0NzA2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTEyMTksNyAr
MTIxOSw3IEBAIHZvaWQgVk06OmR1bXBUeXBlUHJvZmlsZXJEYXRhKCkKICAgICBpZiAoIXR5cGVQ
cm9maWxlcigpKQogICAgICAgICByZXR1cm47CiAKLSAgICB0eXBlUHJvZmlsZXJMb2coKS0+cHJv
Y2Vzc0xvZ0VudHJpZXMoKnRoaXMsICJWTSBEdW1wIFR5cGVzIl9zKTsKKyAgICB0eXBlUHJvZmls
ZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoKnRoaXMsICJWTSBEdW1wIFR5cGVzIl9zdHIpOwog
ICAgIHR5cGVQcm9maWxlcigpLT5kdW1wVHlwZVByb2ZpbGVyRGF0YSgqdGhpcyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IDdlYjBmZTQ1NTQxNzlhNTE0YjMzMjhmM2QyZDc2MjQ0ZGJhNGVlNGYuLmY1ZmI2
OWU5YTY3ZTc0NzhjNzhmZjAxYjc2ZGY0MTAwYTY3N2JmNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtNYXBDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcENvbnN0cnVjdG9yLmNwcApAQCAtMzcsNyAr
MzcsNyBAQCBjb25zdCBDbGFzc0luZm8gV2Vha01hcENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJG
dW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdAogCiB2b2lkIFdlYWtNYXBDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWFrTWFwUHJvdG90eXBlKiBwcm90b3R5cGUpCiB7
Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJXZWFrTWFwIl9zLCBQcm9wZXJ0eUFk
ZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZpbmlz
aENyZWF0aW9uKHZtLCAwLCAiV2Vha01hcCJfc3RyLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0
aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCkBAIC03NSw3ICs3NSw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXZWFrTWFwLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsbEZyCiAKICAgICBhdXRvIGFkZGVyRnVuY3Rpb25DYWxsRGF0YSA9IGdldENhbGxE
YXRhKHZtLCBhZGRlckZ1bmN0aW9uKTsKICAgICBpZiAoYWRkZXJGdW5jdGlvbkNhbGxEYXRhLnR5
cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICInc2V0JyBwcm9wZXJ0eSBvZiBhIFdlYWtNYXAgc2hv
dWxkIGJlIGNhbGxhYmxlLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICInc2V0JyBwcm9wZXJ0eSBvZiBhIFdlYWtNYXAgc2hvdWxkIGJl
IGNhbGxhYmxlLiJfc3RyKTsKIAogICAgIGJvb2wgY2FuUGVyZm9ybUZhc3RTZXQgPSBhZGRlckZ1
bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZlICYmIGFkZGVyRnVu
Y3Rpb25DYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPT0gcHJvdG9GdW5jV2Vha01hcFNldDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha01hcFByb3RvdHlw
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNw
cAppbmRleCBiODU2ZDc2MTM1YmY2MWJmYTNkMzgzNGI2Y2UwNTNkN2JjNGY2ZjgzLi4xYzgwYTZk
NzU5MjYwN2IyMmE3ZmIzNjJjMGE2MWMzNjA1NzkyNjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrTWFwUHJvdG90eXBlLmNwcApAQCAtNTgsNyArNTgsNyBA
QCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtNYXAqIGdldFdlYWtNYXAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmplY3QoKSkpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBXZWFrTWFw
IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rpb24gb24gbm9uLW9iamVjdCJf
c3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC02Niw3ICs2Niw3IEBA
IEFMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha01hcCogZ2V0V2Vha01hcChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlCiAgICAgaWYgKExJS0VMWShtYXApKQogICAgICAgICBy
ZXR1cm4gbWFwOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNh
bGxlZCBXZWFrTWFwIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtNYXAgb2JqZWN0Il9zKTsKKyAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIFdlYWtNYXAgZnVuY3Rp
b24gb24gYSBub24tV2Vha01hcCBvYmplY3QiX3N0cik7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RS
ZWZDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2Jq
ZWN0UmVmQ29uc3RydWN0b3IuY3BwCmluZGV4IGZiZmFmMzVjNzhiZjZlOTY4NzFjYzBkNzQxMDFm
Y2ZiYjA3ZGU5ODYuLmI2N2VlYWFjMWM1NmRmYmQxYWU5MDhlNDA1ZTVmNjM4ZGVmMWJiYmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtPYmplY3RSZWZDb25z
dHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVj
dFJlZkNvbnN0cnVjdG9yLmNwcApAQCAtMzYsNyArMzYsNyBAQCBjb25zdCBDbGFzc0luZm8gV2Vh
a09iamVjdFJlZkNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2lu
Zm8sCiAKIHZvaWQgV2Vha09iamVjdFJlZkNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFdlYWtPYmplY3RSZWZQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsKLSAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMSwgIldlYWtSZWYiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRo
b3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEs
ICJXZWFrUmVmIl9zdHIsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJh
bnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgcHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CiB9CiAKQEAgLTYxLDcgKzYxLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNv
bnN0cnVjdFdlYWtSZWYsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnIKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBpZiAoIWNhbGxG
cmFtZS0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFdlYWtSZWYgc2hv
dWxkIGJlIGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJGaXJzdCBhcmd1bWVudCB0byBXZWFrUmVmIHNob3VsZCBiZSBh
biBvYmplY3QiX3N0cik7CiAKICAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2Fs
bEZyYW1lLT5uZXdUYXJnZXQoKSk7CiAgICAgU3RydWN0dXJlKiB3ZWFrT2JqZWN0UmVmU3RydWN0
dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2bSwgd2Vha09iamVjdFJlZlN0cnVjdHVy
ZSwgbmV3VGFyZ2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha09iamVjdFJlZlByb3RvdHlwZS5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmNwcAppbmRl
eCA4M2EyMDQ2MDlkOWFkN2JhZThhYTg4YjEyMjhjMWNiNzY0OWVmODA4Li5hNmFmZGI0YWRjNGI4
YTI2MTAwMWRmN2Y2NmY1NTFmMzUwOWJjNTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9XZWFrT2JqZWN0UmVmUHJvdG90eXBlLmNwcApAQCAtNTIsNyAr
NTIsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtPYmplY3RSZWYqIGdldFdlYWtSZWYo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSgogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmplY3QoKSkp
IHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbGxlZCBX
ZWFrUmVmIGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3MpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIFdlYWtSZWYgZnVuY3Rpb24gb24gbm9uLW9i
amVjdCJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC02MCw3ICs2
MCw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha09iamVjdFJlZiogZ2V0V2Vha1JlZihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKCiAgICAgaWYgKExJS0VMWShyZWYpKQogICAg
ICAgICByZXR1cm4gcmVmOwogCi0gICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIkNhbGxlZCBXZWFrUmVmIGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtSZWYgb2JqZWN0Il9zKTsK
KyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIFdlYWtSZWYg
ZnVuY3Rpb24gb24gYSBub24tV2Vha1JlZiBvYmplY3QiX3N0cik7CiAgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtT
ZXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0
Q29uc3RydWN0b3IuY3BwCmluZGV4IGM4ZGFhYjQ2YjAzZGIwM2UwZTdhYWFmNzEwZjkxMzQ4NDE1
ZjZhYjAuLjMzZDcwYTAxODM4MTdkNTc1YTZmY2IwZTIyZjkyYmI4NjY2ZTQ5OGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1dlYWtTZXRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vha1NldENvbnN0cnVjdG9yLmNw
cApAQCAtMzgsNyArMzgsNyBAQCBjb25zdCBDbGFzc0luZm8gV2Vha1NldENvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sIG51bGxwdAogCiB2b2lkIFdlYWtT
ZXRDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBXZWFrU2V0UHJvdG90eXBlKiBw
cm90b3R5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJXZWFrU2V0Il9z
LCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAg
IEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiV2Vha1NldCJfc3RyLCBQcm9wZXJ0eUFkZGl0
aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhv
dXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwogfQogCkBAIC03Niw3ICs3Niw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RXZWFrU2V0LCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyCiAKICAgICBhdXRvIGFkZGVyRnVuY3Rpb25DYWxsRGF0
YSA9IGdldENhbGxEYXRhKHZtLCBhZGRlckZ1bmN0aW9uKTsKICAgICBpZiAoYWRkZXJGdW5jdGlv
bkNhbGxEYXRhLnR5cGUgPT0gQ2FsbERhdGE6OlR5cGU6Ok5vbmUpCi0gICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICInYWRkJyBwcm9wZXJ0eSBvZiBh
IFdlYWtTZXQgc2hvdWxkIGJlIGNhbGxhYmxlLiJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICInYWRkJyBwcm9wZXJ0eSBvZiBhIFdlYWtT
ZXQgc2hvdWxkIGJlIGNhbGxhYmxlLiJfc3RyKTsKIAogICAgIGJvb2wgY2FuUGVyZm9ybUZhc3RB
ZGQgPSBhZGRlckZ1bmN0aW9uQ2FsbERhdGEudHlwZSA9PSBDYWxsRGF0YTo6VHlwZTo6TmF0aXZl
ICYmIGFkZGVyRnVuY3Rpb25DYWxsRGF0YS5uYXRpdmUuZnVuY3Rpb24gPT0gcHJvdG9GdW5jV2Vh
a1NldEFkZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvV2Vh
a1NldFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0
UHJvdG90eXBlLmNwcAppbmRleCBjMTdmZmNmMDdiNjgxZWM4YWFkZmM4YTE5ZmYzNzUwMDAwOGNl
MGQ3Li4wZWFiOTNhOTJjZmE1MjUxNGJkZjEyNjZkNzFhYWY2ZTNjZTM0OTlkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9XZWFrU2V0UHJvdG90eXBlLmNwcApAQCAt
NTgsNyArNTgsNyBAQCBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU1dlYWtTZXQqIGdldFdlYWtTZXQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZQogICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAogICAgIGlmIChVTkxJS0VMWSghdmFsdWUuaXNPYmpl
Y3QoKSkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNh
bGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIG5vbi1vYmplY3QiX3MpOworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIFdlYWtTZXQgZnVuY3Rpb24gb24g
bm9uLW9iamVjdCJfc3RyKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC02
Niw3ICs2Niw3IEBAIEFMV0FZU19JTkxJTkUgc3RhdGljIEpTV2Vha1NldCogZ2V0V2Vha1NldChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlCiAgICAgaWYgKExJS0VMWShzZXQp
KQogICAgICAgICByZXR1cm4gc2V0OwogCi0gICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIkNhbGxlZCBXZWFrU2V0IGZ1bmN0aW9uIG9uIGEgbm9uLVdlYWtTZXQgb2JqZWN0
Il9zKTsKKyAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ2FsbGVkIFdl
YWtTZXQgZnVuY3Rpb24gb24gYSBub24tV2Vha1NldCBvYmplY3QiX3N0cik7CiAgICAgcmV0dXJu
IG51bGxwdHI7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9G
dW5jdGlvbk92ZXJyaWRlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvRnVuY3Rp
b25PdmVycmlkZXMuY3BwCmluZGV4IDdhM2IzNzkyNGJlNTYwNTQ3ZmMyZGZmZTMzMmQzZTY2YmY4
YTk1ZjYuLmY4NTFkN2M0ZDE4NGVlZWI0NjNmN2Q5NjM3MzlmMzY1NmUzMTNkNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90b29scy9GdW5jdGlvbk92ZXJyaWRlcy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rvb2xzL0Z1bmN0aW9uT3ZlcnJpZGVzLmNwcApAQCAt
MTM5LDcgKzEzOSw3IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVPdmVycmlkZUluZm8oY29uc3Qg
U291cmNlQ29kZSYgb3JpZ0NvZGUsIGNvbnN0IFN0cmluZyYgbmV3CiAgICAgbmV3UHJvdmlkZXJT
dHIuYXBwZW5kKG9yaWdIZWFkZXIpOwogICAgIG5ld1Byb3ZpZGVyU3RyLmFwcGVuZChuZXdCb2R5
KTsKIAotICAgIGF1dG8gb3ZlcnJpZGRlbiA9ICI8b3ZlcnJpZGRlbj4iX3M7CisgICAgYXV0byBv
dmVycmlkZGVuID0gIjxvdmVycmlkZGVuPiJfc3RyOwogICAgIFVSTCB1cmwoeyB9LCBvdmVycmlk
ZGVuKTsKICAgICBSZWY8U291cmNlUHJvdmlkZXI+IG5ld1Byb3ZpZGVyID0gU3RyaW5nU291cmNl
UHJvdmlkZXI6OmNyZWF0ZShuZXdQcm92aWRlclN0ciwgU291cmNlT3JpZ2luIHsgdXJsIH0sIG92
ZXJyaWRkZW4pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNE
b2xsYXJWTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvdG9vbHMvSlNEb2xsYXJWTS5jcHAK
aW5kZXggM2ZjNzExODZiZTIzYzQ3ODYxOWYzNzg1MDZkZTQxMmJiZDU3YWM2Ni4uNGQzZDE2YTMy
YTZiODFiZjQ4ZGRiZGM2NDU2ZGRlMjg3NDBjZmRkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3Rvb2xzL0pTRG9sbGFyVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS90b29scy9KU0RvbGxhclZNLmNwcApAQCAtMTI4Nyw3ICsxMjg3LDcgQEAgSlNDX0RFRklORV9D
VVNUT01fR0VUVEVSKGRvbUpJVEdldHRlckNvbXBsZXhDdXN0b21HZXR0ZXIsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmEKICAgICBpZiAoIXRoaXNPYmplY3QpCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUpOwogICAgIGlmICh0aGlzT2JqZWN0LT5tX2Vu
YWJsZUV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2Vw
dGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJET01K
SVRHZXR0ZXJDb21wbGV4IHNsb3cgY2FsbCBleGNlcHRpb24iX3MpKSk7CisgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3Jl
YXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRE9NSklUR2V0dGVyQ29tcGxleCBzbG93IGNhbGwgZXhj
ZXB0aW9uIl9zdHIpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcih0aGlz
T2JqZWN0LT52YWx1ZSgpKSk7CiB9CiAKQEAgLTEzMDIsNyArMTMwMiw3IEBAIEpTQ19ERUZJTkVf
SklUX09QRVJBVElPTihkb21KSVRHZXR0ZXJDb21wbGV4U2xvd0NhbGwsIEVuY29kZWRKU1ZhbHVl
LCAoSlNHbG9iYWxPCiAgICAgYXV0byogZG9taml0R2V0dGVyQ29tcGxleCA9IGpzRHluYW1pY0Nh
c3Q8RE9NSklUR2V0dGVyQ29tcGxleCo+KHZtLCBvYmplY3QpOwogICAgIGlmIChkb21qaXRHZXR0
ZXJDb21wbGV4KSB7CiAgICAgICAgIGlmIChkb21qaXRHZXR0ZXJDb21wbGV4LT5tX2VuYWJsZUV4
Y2VwdGlvbikKLSAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRXJyb3IoZ2xvYmFsT2JqZWN0LCAiRE9NSklU
R2V0dGVyQ29tcGxleCBzbG93IGNhbGwgZXhjZXB0aW9uIl9zKSkpOworICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJET01KSVRHZXR0ZXJDb21wbGV4IHNsb3cgY2FsbCBl
eGNlcHRpb24iX3N0cikpKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihvYmplY3QtPnZhbHVlKCkpKTsKIH0KQEAgLTMwMzAsNyArMzAzMCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkNyZWF0ZVdhc21TdHJlYW1pbmdDb21waWxlckZvckNv
bXBpbGUsIChKU0dsb2JhCiAKICAgICBhdXRvIGNhbGxiYWNrID0ganNEeW5hbWljQ2FzdDxKU0Z1
bmN0aW9uKj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghY2FsbGJhY2sp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJG
aXJzdCBhcmd1bWVudCBpcyBub3QgYSBKUyBmdW5jdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaXJzdCBhcmd1bWVudCBpcyBu
b3QgYSBKUyBmdW5jdGlvbiJfc3RyKTsKIAogICAgIGF1dG8gY29tcGlsZXIgPSBXYXNtU3RyZWFt
aW5nQ29tcGlsZXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBXYXNtOjpDb21waWxlck1vZGU6
OlZhbGlkYXRpb24sIG51bGxwdHIpOwogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CkBA
IC0zMDUyLDcgKzMwNTIsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25DcmVh
dGVXYXNtU3RyZWFtaW5nQ29tcGlsZXJGb3JJbnN0YW50aWF0ZSwgKEpTRwogCiAgICAgYXV0byBj
YWxsYmFjayA9IGpzRHluYW1pY0Nhc3Q8SlNGdW5jdGlvbio+KHZtLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDApKTsKICAgICBpZiAoIWNhbGxiYWNrKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgSlMgZnVu
Y3Rpb24iX3MpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiRmlyc3QgYXJndW1lbnQgaXMgbm90IGEgSlMgZnVuY3Rpb24iX3N0cik7CiAKICAg
ICBKU1ZhbHVlIGltcG9ydEFyZ3VtZW50ID0gY2FsbEZyYW1lLT5hcmd1bWVudCgxKTsKICAgICBK
U09iamVjdCogaW1wb3J0T2JqZWN0ID0gaW1wb3J0QXJndW1lbnQuZ2V0T2JqZWN0KCk7CkBAIC0z
MTMxLDcgKzMxMzEsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25TZXRJbXB1
cmVHZXR0ZXJEZWxlZ2F0ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIEltcHVyZUdldHRlciogaW1wdXJl
R2V0dGVyID0ganNEeW5hbWljQ2FzdDxJbXB1cmVHZXR0ZXIqPih2bSwgYXNPYmplY3QoYmFzZS5h
c0NlbGwoKSkpOwogICAgIGlmIChVTkxJS0VMWSghaW1wdXJlR2V0dGVyKSkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgaXMgbm90IGFuIElt
cHVyZUdldHRlciJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJhcmd1bWVudCBpcyBub3QgYW4gSW1wdXJlR2V0dGVyIl9zdHIpOwogICAgICAgICByZXR1
cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAgICAgaW1wdXJlR2V0dGVyLT5zZXREZWxlZ2F0
ZSh2bSwgYXNPYmplY3QoZGVsZWdhdGUuYXNDZWxsKCkpKTsKQEAgLTMxOTIsNyArMzE5Miw3IEBA
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvbkNyZWF0ZUVsZW1lbnQsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDCiAKICAgICBSb290KiByb290ID0ganNEeW5hbWljQ2Fz
dDxSb290Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghcm9vdCkKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IHNjb3BlLCBjcmVhdGVFcnJvcihnbG9iYWxPYmplY3QsICJDYW5ub3QgY3JlYXRlIEVsZW1lbnQg
d2l0aG91dCBhIFJvb3QuIl9zKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVycm9yKGdsb2JhbE9iamVj
dCwgIkNhbm5vdCBjcmVhdGUgRWxlbWVudCB3aXRob3V0IGEgUm9vdC4iX3N0cikpKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEVsZW1lbnQ6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBy
b290KSk7CiB9CiAKQEAgLTMyMjUsNyArMzIyNSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
TihmdW5jdGlvbkdldEhpZGRlblZhbHVlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwK
IAogICAgIFNpbXBsZU9iamVjdCogc2ltcGxlT2JqZWN0ID0ganNEeW5hbWljQ2FzdDxTaW1wbGVP
YmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKFVOTElLRUxZKCFz
aW1wbGVPYmplY3QpKSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJJbnZhbGlkIHVzZSBvZiBnZXRIaWRkZW5WYWx1ZSB0ZXN0IGZ1bmN0aW9uIl9zKTsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgdXNlIG9m
IGdldEhpZGRlblZhbHVlIHRlc3QgZnVuY3Rpb24iX3N0cik7CiAgICAgICAgIHJldHVybiBlbmNv
ZGVkSlNWYWx1ZSgpOwogICAgIH0KICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNpbXBsZU9i
amVjdC0+aGlkZGVuVmFsdWUoKSk7CkBAIC0zMjQwLDcgKzMyNDAsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oZnVuY3Rpb25TZXRIaWRkZW5WYWx1ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAKICAgICBTaW1wbGVPYmplY3QqIHNpbXBsZU9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8U2ltcGxlT2JqZWN0Kj4odm0sIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmIChV
TkxJS0VMWSghc2ltcGxlT2JqZWN0KSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiSW52YWxpZCB1c2Ugb2Ygc2V0SGlkZGVuVmFsdWUgdGVzdCBmdW5jdGlv
biJfcyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZh
bGlkIHVzZSBvZiBzZXRIaWRkZW5WYWx1ZSB0ZXN0IGZ1bmN0aW9uIl9zdHIpOwogICAgICAgICBy
ZXR1cm4gZW5jb2RlZEpTVmFsdWUoKTsKICAgICB9CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGxG
cmFtZS0+YXJndW1lbnQoMSk7CkBAIC0zMjg4LDcgKzMyODgsNyBAQCBKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04oZnVuY3Rpb25GaW5kVHlwZUZvckV4cHJlc3Npb24sIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsTwogICAgIERvbGxhclZNQXNzZXJ0U2NvcGUgYXNzZXJ0U2NvcGU7CiAgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIFJFTEVBU0VfQVNTRVJUKHZtLnR5cGVQcm9maWxl
cigpKTsKLSAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJq
c2MgVGVzdGluZyBBUEk6IGZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uIl9zKTsKKyAgICB2
bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJqc2MgVGVzdGluZyBB
UEk6IGZ1bmN0aW9uRmluZFR5cGVGb3JFeHByZXNzaW9uIl9zdHIpOwogCiAgICAgSlNWYWx1ZSBm
dW5jdGlvblZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBSRUxFQVNFX0FTU0VS
VChmdW5jdGlvblZhbHVlLmlzQ2FsbGFibGUodm0pKTsKQEAgLTMzMDgsNyArMzMwOCw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlvblJldHVyblR5cGVGb3IsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBDCiAgICAgRG9sbGFyVk1Bc3NlcnRTY29wZSBhc3NlcnRTY29w
ZTsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
dm0udHlwZVByb2ZpbGVyKCkpOwotICAgIHZtLnR5cGVQcm9maWxlckxvZygpLT5wcm9jZXNzTG9n
RW50cmllcyh2bSwgImpzYyBUZXN0aW5nIEFQSTogZnVuY3Rpb25SZXR1cm5UeXBlRm9yIl9zKTsK
KyAgICB2bS50eXBlUHJvZmlsZXJMb2coKS0+cHJvY2Vzc0xvZ0VudHJpZXModm0sICJqc2MgVGVz
dGluZyBBUEk6IGZ1bmN0aW9uUmV0dXJuVHlwZUZvciJfc3RyKTsKIAogICAgIEpTVmFsdWUgZnVu
Y3Rpb25WYWx1ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CiAgICAgUkVMRUFTRV9BU1NFUlQo
ZnVuY3Rpb25WYWx1ZS5pc0NhbGxhYmxlKHZtKSk7CkBAIC0zNDk4LDcgKzM0OTgsNyBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Mb2FkR2V0dGVyRnJvbUdldHRlclNldHRlciwg
KEpTR2xvYmFsT2JqZWN0KiBnbAogCiAgICAgR2V0dGVyU2V0dGVyKiBnZXR0ZXJTZXR0ZXIgPSBq
c0R5bmFtaWNDYXN0PEdldHRlclNldHRlcio+KHZtLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsK
ICAgICBpZiAoVU5MSUtFTFkoIWdldHRlclNldHRlcikpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludmFsaWQgdXNlIG9mIGxvYWRHZXR0ZXJGcm9tR2V0
dGVyU2V0dGVyIHRlc3QgZnVuY3Rpb246IGFyZ3VtZW50IGlzIG5vdCBhIEdldHRlclNldHRlciJf
cyk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnZhbGlk
IHVzZSBvZiBsb2FkR2V0dGVyRnJvbUdldHRlclNldHRlciB0ZXN0IGZ1bmN0aW9uOiBhcmd1bWVu
dCBpcyBub3QgYSBHZXR0ZXJTZXR0ZXIiX3N0cik7CiAgICAgICAgIHJldHVybiBlbmNvZGVkSlNW
YWx1ZSgpOwogICAgIH0KIApAQCAtMzY1OSw3ICszNjU5LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKGZ1bmN0aW9uU2V0VXNlclByZWZlcnJlZExhbmd1YWdlcywgKEpTR2xvYmFsT2JqZWN0
KiBnbG8KIAogICAgIEpTQXJyYXkqIGFycmF5ID0ganNEeW5hbWljQ2FzdDxKU0FycmF5Kj4odm0s
IGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOwogICAgIGlmICghYXJyYXkpCi0gICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJFeHBlY3RlZCBmaXJzdCBh
cmd1bWVudCB0byBiZSBhbiBhcnJheSJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJFeHBlY3RlZCBmaXJzdCBhcmd1bWVudCB0byBiZSBh
biBhcnJheSJfc3RyKTsKIAogICAgIFZlY3RvcjxTdHJpbmc+IGxhbmd1YWdlczsKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7CkBAIC0zNzM3LDcgKzM3MzcsNyBAQCBKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04oZnVuY3Rpb25Ub0NhY2hlYWJsZURpY3Rpb25hcnksIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsTwogCiAgICAgSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNPYmplY3QqPih2bSwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFvYmpl
Y3QpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJFeHBlY3RlZCBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3QiX3MpOworICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRXhwZWN0ZWQgZmly
c3QgYXJndW1lbnQgdG8gYmUgYW4gb2JqZWN0Il9zdHIpOwogICAgIGlmICghb2JqZWN0LT5zdHJ1
Y3R1cmUodm0pLT5pc1VuY2FjaGVhYmxlRGljdGlvbmFyeSgpKQogICAgICAgICBvYmplY3QtPmNv
bnZlcnRUb0RpY3Rpb25hcnkodm0pOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0
KTsKQEAgLTM3NTEsNyArMzc1MSw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihmdW5jdGlv
blRvVW5jYWNoZWFibGVEaWN0aW9uYXJ5LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhCiAKICAgICBK
U09iamVjdCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZtLCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApKTsKICAgICBpZiAoIW9iamVjdCkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkV4cGVjdGVkIGZpcnN0IGFyZ3VtZW50IHRv
IGJlIGFuIG9iamVjdCJfcyk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJFeHBlY3RlZCBmaXJzdCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3Qi
X3N0cik7CiAgICAgb2JqZWN0LT5jb252ZXJ0VG9VbmNhY2hlYWJsZURpY3Rpb25hcnkodm0pOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL0luZGVudGVyLmggYi9Tb3VyY2UvV1RGL3d0Zi9JbmRlbnRlci5oCmluZGV4IGNk
ZWQ3YzI2MTVmYWQ4OTdmZmM2ZWJjNjYyYjg4ZmEzYjQ1NTJkYjIuLjE2MjU2MTk2NWExNjhiOGIx
OTBiODllMWQxNjI2ZGEyOWNjNWVlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0luZGVu
dGVyLmgKKysrIGIvU291cmNlL1dURi93dGYvSW5kZW50ZXIuaApAQCAtMzMsNyArMzMsNyBAQCBu
YW1lc3BhY2UgV1RGIHsKIGNsYXNzIEluZGVudGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKIHB1YmxpYzoKLSAgICBJbmRlbnRlcih1bnNpZ25lZCBjb3VudCA9IDAsIFN0cmluZyBz
dHJpbmcgPSAiICAiX3MpCisgICAgSW5kZW50ZXIodW5zaWduZWQgY291bnQgPSAwLCBTdHJpbmcg
c3RyaW5nID0gIiAgIl9zdHIpCiAgICAgICAgIDogbV9jb3VudChjb3VudCkKICAgICAgICAgLCBt
X3N0cmluZyhzdHJpbmcpCiAgICAgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9Mb2dn
ZXIuaCBiL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5oCmluZGV4IGU3NDRhNzg3NzdlZDM0ZTMxOTJk
Y2VjM2VjNWNjZWRiMTk5ZTM0ZjEuLjExZjE5OTJmZjY2YTQ1NTljMzAyODY3NTRmNzZkY2ZhOTRl
N2RkY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0xvZ2dlci5oCisrKyBiL1NvdXJjZS9X
VEYvd3RmL0xvZ2dlci5oCkBAIC0zOSw3ICszOSw3IEBAIG5hbWVzcGFjZSBXVEYgewogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogc3RydWN0IExvZ0FyZ3VtZW50IHsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBVID0gVD4gc3RhdGljIHR5cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfc2FtZTxV
LCBib29sPjo6dmFsdWUsIFN0cmluZz46OnR5cGUgdG9TdHJpbmcoYm9vbCBhcmd1bWVudCkgeyBy
ZXR1cm4gYXJndW1lbnQgPyAidHJ1ZSJfcyA6ICJmYWxzZSJfczsgfQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjppc19zYW1l
PFUsIGJvb2w+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyhib29sIGFyZ3VtZW50KSB7
IHJldHVybiBhcmd1bWVudCA/ICJ0cnVlIl9zdHIgOiAiZmFsc2UiX3N0cjsgfQogICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFUgPSBUPiBzdGF0aWMgdHlwZW5hbWUgc3RkOjplbmFibGVfaWY8c3RkOjpp
c19zYW1lPFUsIGludD46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKGludCBhcmd1bWVu
dCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9CiAgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3NhbWU8
VSwgdW5zaWduZWQ+Ojp2YWx1ZSwgU3RyaW5nPjo6dHlwZSB0b1N0cmluZyh1bnNpZ25lZCBhcmd1
bWVudCkgeyByZXR1cm4gU3RyaW5nOjpudW1iZXIoYXJndW1lbnQpOyB9CiAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVSA9IFQ+IHN0YXRpYyB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX3Nh
bWU8VSwgdW5zaWduZWQgbG9uZz46OnZhbHVlLCBTdHJpbmc+Ojp0eXBlIHRvU3RyaW5nKHVuc2ln
bmVkIGxvbmcgYXJndW1lbnQpIHsgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGFyZ3VtZW50KTsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcCBiL1NvdXJjZS9XVEYvd3Rm
L01lZGlhVGltZS5jcHAKaW5kZXggNGI4MjhhNmY2ZmU4MGI4NjQxMDk3YjliOTRmNzAyZDhiOWYx
MDc1Mi4uY2I1NDcxZGM3MzU2NmViNWM0Njg5YTUzMDhiM2I1MjI4MzBhMjU3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvTWVkaWFUaW1lLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi9NZWRp
YVRpbWUuY3BwCkBAIC01NjQsMjQgKzU2NCwyNCBAQCBSZWY8SlNPTjo6T2JqZWN0PiBNZWRpYVRp
bWU6OnRvSlNPTk9iamVjdCgpIGNvbnN0CiAgICAgYXV0byBvYmplY3QgPSBKU09OOjpPYmplY3Q6
OmNyZWF0ZSgpOwogCiAgICAgaWYgKGhhc0RvdWJsZVZhbHVlKCkpIHsKLSAgICAgICAgb2JqZWN0
LT5zZXREb3VibGUoInZhbHVlIl9zLCB0b0RvdWJsZSgpKTsKKyAgICAgICAgb2JqZWN0LT5zZXRE
b3VibGUoInZhbHVlIl9zdHIsIHRvRG91YmxlKCkpOwogICAgICAgICByZXR1cm4gb2JqZWN0Owog
ICAgIH0KIAogICAgIGlmIChpc0ludmFsaWQoKSkKLSAgICAgICAgb2JqZWN0LT5zZXRCb29sZWFu
KCJpbnZhbGlkIl9zLCB0cnVlKTsKKyAgICAgICAgb2JqZWN0LT5zZXRCb29sZWFuKCJpbnZhbGlk
Il9zdHIsIHRydWUpOwogICAgIGVsc2UgaWYgKGlzSW5kZWZpbml0ZSgpKQotICAgICAgICBvYmpl
Y3QtPnNldFN0cmluZygidmFsdWUiX3MsICJOYU4iX3MpOworICAgICAgICBvYmplY3QtPnNldFN0
cmluZygidmFsdWUiX3N0ciwgIk5hTiJfc3RyKTsKICAgICBlbHNlIGlmIChpc1Bvc2l0aXZlSW5m
aW5pdGUoKSkKLSAgICAgICAgb2JqZWN0LT5zZXRTdHJpbmcoInZhbHVlIl9zLCAiUE9TSVRJVkVf
SU5GSU5JVFkiX3MpOworICAgICAgICBvYmplY3QtPnNldFN0cmluZygidmFsdWUiX3N0ciwgIlBP
U0lUSVZFX0lORklOSVRZIl9zdHIpOwogICAgIGVsc2UgaWYgKGlzTmVnYXRpdmVJbmZpbml0ZSgp
KQotICAgICAgICBvYmplY3QtPnNldFN0cmluZygidmFsdWUiX3MsICJORUdBVElWRV9JTkZJTklU
WSJfcyk7CisgICAgICAgIG9iamVjdC0+c2V0U3RyaW5nKCJ2YWx1ZSJfc3RyLCAiTkVHQVRJVkVf
SU5GSU5JVFkiX3N0cik7CiAgICAgZWxzZQotICAgICAgICBvYmplY3QtPnNldERvdWJsZSgidmFs
dWUiX3MsIHRvRG91YmxlKCkpOworICAgICAgICBvYmplY3QtPnNldERvdWJsZSgidmFsdWUiX3N0
ciwgdG9Eb3VibGUoKSk7CiAKLSAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9yIl9zLCBz
dGF0aWNfY2FzdDxkb3VibGU+KG1fdGltZVZhbHVlKSk7Ci0gICAgb2JqZWN0LT5zZXRJbnRlZ2Vy
KCJkZW5vbWluYXRvciJfcywgbV90aW1lU2NhbGUpOwotICAgIG9iamVjdC0+c2V0SW50ZWdlcigi
ZmxhZ3MiX3MsIG1fdGltZUZsYWdzKTsKKyAgICBvYmplY3QtPnNldERvdWJsZSgibnVtZXJhdG9y
Il9zdHIsIHN0YXRpY19jYXN0PGRvdWJsZT4obV90aW1lVmFsdWUpKTsKKyAgICBvYmplY3QtPnNl
dEludGVnZXIoImRlbm9taW5hdG9yIl9zdHIsIG1fdGltZVNjYWxlKTsKKyAgICBvYmplY3QtPnNl
dEludGVnZXIoImZsYWdzIl9zdHIsIG1fdGltZUZsYWdzKTsKIAogICAgIHJldHVybiBvYmplY3Q7
CiB9CkBAIC02MDksOCArNjA5LDggQEAgU3RyaW5nIE1lZGlhVGltZVJhbmdlOjp0b0pTT05TdHJp
bmcoKSBjb25zdAogewogICAgIGF1dG8gb2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsK
IAotICAgIG9iamVjdC0+c2V0T2JqZWN0KCJzdGFydCJfcywgc3RhcnQudG9KU09OT2JqZWN0KCkp
OwotICAgIG9iamVjdC0+c2V0T2JqZWN0KCJlbmQiX3MsIGVuZC50b0pTT05PYmplY3QoKSk7Cisg
ICAgb2JqZWN0LT5zZXRPYmplY3QoInN0YXJ0Il9zdHIsIHN0YXJ0LnRvSlNPTk9iamVjdCgpKTsK
KyAgICBvYmplY3QtPnNldE9iamVjdCgiZW5kIl9zdHIsIGVuZC50b0pTT05PYmplY3QoKSk7CiAK
ICAgICByZXR1cm4gb2JqZWN0LT50b0pTT05TdHJpbmcoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XVEYvd3RmL1VSTC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi9VUkwuY3BwCmluZGV4IDQ4MGZlYzY0
NDI2YjA4NmE4NWZjMGQxOGMyOWU3ODE5N2U0ZmQ0N2IuLmQ5N2Y3MjdmMzI4NjNjYThjY2MzODQ2
ZDkxYmFjZTY1ZDkzYjViNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1VSTC5jcHAKKysr
IGIvU291cmNlL1dURi93dGYvVVJMLmNwcApAQCAtMTA0NCw3ICsxMDQ0LDcgQEAgU3RyaW5nIG1p
bWVUeXBlRnJvbURhdGFVUkwoU3RyaW5nVmlldyBkYXRhVVJMKQogICAgICAgICByZXR1cm4gZW1w
dHlTdHJpbmcoKTsKICAgICB9CiAgICAgaWYgKGluZGV4ID09IDUpCi0gICAgICAgIHJldHVybiAi
dGV4dC9wbGFpbiJfczsKKyAgICAgICAgcmV0dXJuICJ0ZXh0L3BsYWluIl9zdHI7CiAgICAgQVNT
RVJUKGluZGV4ID49IDUpOwogICAgIHJldHVybiBkYXRhVVJMLnN1YnN0cmluZyg1LCBpbmRleCAt
IDUpLmNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi9jZi9MYW5ndWFnZUNGLmNwcCBiL1NvdXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0YuY3Bw
CmluZGV4IGMwNGM1NWJjNjAzZDI4MWQwY2EzODkyMGViYThjNzllNWU2OTI5ODEuLmU1ZGVkZTI3
NmM4ODUyZWYxY2U5NmFjMjIxZmJlN2M4YTVmMGRmNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL2NmL0xhbmd1YWdlQ0YuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL2NmL0xhbmd1YWdlQ0Yu
Y3BwCkBAIC05OSw3ICs5OSw3IEBAIFZlY3RvcjxTdHJpbmc+IHBsYXRmb3JtVXNlclByZWZlcnJl
ZExhbmd1YWdlcyhTaG91bGRNaW5pbWl6ZUxhbmd1YWdlcyBzaG91bGRNaW5pCiAKICAgICBDRklu
ZGV4IHBsYXRmb3JtTGFuZ3VhZ2VzQ291bnQgPSBDRkFycmF5R2V0Q291bnQocGxhdGZvcm1MYW5n
dWFnZXMuZ2V0KCkpOwogICAgIGlmICghcGxhdGZvcm1MYW5ndWFnZXNDb3VudCkKLSAgICAgICAg
cmV0dXJuIHsgImVuIl9zIH07CisgICAgICAgIHJldHVybiB7ICJlbiJfc3RyIH07CiAKICAgICBW
ZWN0b3I8U3RyaW5nPiBsYW5ndWFnZXM7CiAgICAgbGFuZ3VhZ2VzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkocGxhdGZvcm1MYW5ndWFnZXNDb3VudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAK
aW5kZXggM2E5MWE2NzdkNWMwMzhlMDNiN2M1ZWIzMmYzNzMzYmVmYzA4Y2E1NS4uMzQ4NWU4ZmVh
Y2JkZmRmZWEzMTU1YzhjMzE2YTY2OGNiM2M5MmE1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmNwcApAQCAtOTA2LDcgKzkwNiw3IEBAIFN0cmluZyogc3RyaW5nKGNvbnN0IGNoYXIqIHMpCiBW
ZWN0b3I8Y2hhcj4gYXNjaWlEZWJ1ZyhTdHJpbmdJbXBsKiBpbXBsKQogewogICAgIGlmICghaW1w
bCkKLSAgICAgICAgcmV0dXJuIGFzY2lpRGVidWcoU3RyaW5nKCJbbnVsbF0iX3MpLmltcGwoKSk7
CisgICAgICAgIHJldHVybiBhc2NpaURlYnVnKCJbbnVsbF0iX3N0ci5pbXBsKCkpOwogCiAgICAg
U3RyaW5nQnVpbGRlciBidWZmZXI7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGltcGwt
Pmxlbmd0aCgpOyArK2kpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUxMWI5YzE2NGEx
YTU4YzExZDRjZmQ1MzIxZTMyZjUyN2I0YzllZDYuLjJlNjUwZTdhZTA3N2FlMzExZjc5ODQzYTA5
ZWYwN2ZmM2NlNDhkMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5n
LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtOTksMTAgKzk5LDkg
QEAgcHVibGljOgogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyBmcm9tIGEgY29uc3RhbnQgc3Ry
aW5nIGxpdGVyYWwuCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhBU0NJSUxpdGVyYWwp
OwogCi0gICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZyb20gYSBjb25zdGFudCBzdHJpbmcgbGl0
ZXJhbC4KLSAgICAvLyBUaGlzIGlzIHRoZSAiYmlnIiB2ZXJzaW9uOiBwdXRzIHRoZSBsZW5ndGgg
aW4gdGhlIGZ1bmN0aW9uIGNhbGwgYW5kIGdlbmVyYXRlcyBiaWdnZXIgY29kZS4KLSAgICBlbnVt
IENvbnN0cnVjdEZyb21MaXRlcmFsVGFnIHsgQ29uc3RydWN0RnJvbUxpdGVyYWwgfTsKLSAgICB0
ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3RyaW5nKGNvbnN0IGNoYXIgKCZjaGFy
YWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnKSA6IG1faW1w
bChTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbDxjaGFyYWN0ZXJDb3VudD4oY2hhcmFjdGVy
cykpIHsgfQorICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyBmcm9tIGEgY29uc3RhbnQgc3RyaW5n
IGxpdGVyYWwsIHVzZSAic3RyaW5nIl9zdHIgaW5zdGVhZCBvZiBjYWxsaW5nIHRoaXMgY29uc3Ry
dWN0b3IgZGlyZWN0bHkuCisgICAgZW51bSBjbGFzcyBDb25zdHJ1Y3RGcm9tTGl0ZXJhbCB7IFll
cyB9OworICAgIFN0cmluZyhjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgs
IENvbnN0cnVjdEZyb21MaXRlcmFsKSA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbChjaGFyYWN0ZXJzLCBsZW5ndGgpKSB7IH0KIAogICAgIFN0cmluZyhjb25zdCBTdHJpbmcm
KSA9IGRlZmF1bHQ7CiAgICAgU3RyaW5nKFN0cmluZyYmKSA9IGRlZmF1bHQ7CkBAIC02MjgsOSAr
NjI3LDkgQEAgdGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRo
TGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKGNvbnN0IFMKIAogaW5saW5lIG5hbWVzcGFjZSBTdHJp
bmdMaXRlcmFscyB7CiAKLWlubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNoYXIq
IGNoYXJhY3RlcnMsIHNpemVfdCkKK2lubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0
IGNoYXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2hhcmFjdGVycyk7CisgICAgcmV0dXJuIFN0cmluZyhj
aGFyYWN0ZXJzLCBsZW5ndGgsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWw6Olllcyk7CiB9
CiAKIH0gLy8gaW5saW5lIFN0cmluZ0xpdGVyYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi91bml4L0xhbmd1YWdlVW5peC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi91bml4L0xhbmd1YWdlVW5p
eC5jcHAKaW5kZXggYWY5NGJiMDZjYzM4ZGQyYTg1OTViZmJiNzcxNjkwZjkyZGI0OGFlMi4uZDY5
OGUwNzgxNTc3N2UwYWFlOTczOWY4NzY4MzE3OTdjNDkxNTIyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdW5peC9MYW5ndWFnZVVuaXguY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3VuaXgv
TGFuZ3VhZ2VVbml4LmNwcApAQCAtMzQsNyArMzQsNyBAQCBzdGF0aWMgU3RyaW5nIHBsYXRmb3Jt
TGFuZ3VhZ2UoKQogewogICAgIFN0cmluZyBsb2NhbGVEZWZhdWx0KHNldGxvY2FsZShMQ19DVFlQ
RSwgbnVsbHB0cikpOwogICAgIGlmIChsb2NhbGVEZWZhdWx0LmlzRW1wdHkoKSB8fCBlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKGxvY2FsZURlZmF1bHQsICJDIikgfHwgZXF1YWxJZ25vcmluZ0FTQ0lJ
Q2FzZShsb2NhbGVEZWZhdWx0LCAiUE9TSVgiKSkKLSAgICAgICAgcmV0dXJuICJlbi1VUyJfczsK
KyAgICAgICAgcmV0dXJuICJlbi1VUyJfc3RyOwogCiAgICAgU3RyaW5nIG5vcm1hbGl6ZWREZWZh
dWx0ID0gbG9jYWxlRGVmYXVsdDsKICAgICBub3JtYWxpemVkRGVmYXVsdC5yZXBsYWNlKCdfJywg
Jy0nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KaW5kZXggZWEwNmVjZTdiYzU2MDI4MDI5NTg2NDJiMzVlY2I5YzkxNTU4NDc2Mi4u
Y2I1YWVhYWU2Njc2NzFiNTQxZWVkNDYxY2NmNmRjZDFlNDgzYzMyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAgLTI1MzUs
NyArMjUzNSw3IEBAIHN1YiBHZW5lcmF0ZURlZmF1bHRWYWx1ZQogICAgICAgICAgICAgaWYgKCRk
ZWZhdWx0VmFsdWUgZXEgIlwiXCIiKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuICR1c2VBdG9t
U3RyaW5nID8gImVtcHR5QXRvbSgpIiA6ICJlbXB0eVN0cmluZygpIjsKICAgICAgICAgICAgIH0g
ZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICR1c2VBdG9tU3RyaW5nID8gIkF0b21TdHJp
bmcoJHtkZWZhdWx0VmFsdWV9LCBBdG9tU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCkiIDog
IiR7ZGVmYXVsdFZhbHVlfV9zIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gJHVzZUF0b21TdHJp
bmcgPyAiQXRvbVN0cmluZygke2RlZmF1bHRWYWx1ZX0sIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZy
b21MaXRlcmFsKSIgOiAiJHtkZWZhdWx0VmFsdWV9X3N0ciI7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIApAQCAtNzcxNSw3ICs3NzE1LDcgQEAgc3ViIEdlbmVyYXRlQ29uc3RydWN0b3JEZWZp
bml0aW9uCiAgICAgICAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0VuYWJsZWRCeVNldHRpbmd9KSB7CiAgICAgICAgICAgICAgICAgIG15ICRydW50aW1lRW5hYmxl
Q29uZGl0aW9uYWxTdHJpbmcgPSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmlu
ZygkaW50ZXJmYWNlLCAkb3BlcmF0aW9uLCAibGV4aWNhbEdsb2JhbE9iamVjdCIpOwogICAgICAg
ICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCEke3J1bnRpbWVFbmFibGVD
b25kaXRpb25hbFN0cmluZ30pIHtcbiIpOwotICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIgICAgICAgIHRocm93VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93
U2NvcGUsIFwiSWxsZWdhbCBjb25zdHJ1Y3RvclwiX3MpO1xuIik7CisgICAgICAgICAgICAgICAg
IHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgdGhyb3dUeXBlRXJyb3IobGV4aWNhbEdsb2Jh
bE9iamVjdCwgdGhyb3dTY29wZSwgXCJJbGxlZ2FsIGNvbnN0cnVjdG9yXCJfc3RyKTtcbiIpOwog
ICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNOdWxsKCkpO1xuIik7CiAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICB9XG4iKTsKICAgICAgICAgICAgICB9CkBAIC03ODc0LDcgKzc4NzQsNyBA
QCBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKICAgICAgICAgICAgIHB1c2go
QCRvdXRwdXRBcnJheSwgIiAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0
aCwganNOdW1iZXIoJHtsZWFzdENvbnN0cnVjdG9yTGVuZ3RofSksIEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pO1xuIik7
CiAgICAgICAgIH0KIAotICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgSlNTdHJpbmcq
IG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sIFwiJHZpc2libGVJbnRlcmZhY2VO
YW1lXCJfcyk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIEpTU3RyaW5n
KiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCBcIiR2aXNpYmxlSW50ZXJmYWNl
TmFtZVwiX3N0cik7XG4iKTsKICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIG1fb3Jp
Z2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7XG4iKTsKICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
bmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7XG4iKTsKIApAQCAtODA5OCw3ICs4MDk4LDcgQEAgc3Vi
IEdlbmVyYXRlQ2FsbFRyYWNlcigpCiAgICAgQWRkVG9JbXBsSW5jbHVkZXMoJGNhbGxUcmFjZXIg
LiAiLmgiKTsKIAogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJpZiAoVU5MSUtF
TFkoaW1wbC5oYXNBY3RpdmUiIC4gJGNhbGxUcmFjZXIgLiAiKCkpKVxuIik7Ci0gICAgcHVzaChA
JG91dHB1dEFycmF5LCAkaW5kZW50IC4gIiAgICAiIC4gJGNhbGxUcmFjZXIgLiAiOjpyZWNvcmRB
Y3Rpb24oaW1wbCwgXCIiIC4gJG5hbWUgLiAiXCJfcyIpOworICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgJGluZGVudCAuICIgICAgIiAuICRjYWxsVHJhY2VyIC4gIjo6cmVjb3JkQWN0aW9uKGltcGws
IFwiIiAuICRuYW1lIC4gIlwiX3N0ciIpOwogICAgIGlmIChzY2FsYXIoQCRhcmd1bWVudHMpKSB7
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiwgeyAiIC4gam9pbigiLCAiLCBtYXAgeyAk
Y2FsbFRyYWNlciAuICI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCAiIC4gJF8gLiAiKSIgfSBAJGFy
Z3VtZW50cykgLiAiIH0iKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRE9NV2luZG93LmNwcAppbmRleCA3Nzg3ZTFkZjA3ZDhi
NTM1NWE3ODgyNThjODg4Y2Y1MDU5MjM4NTgyLi42MTUxNDhhNTU2NzE5NWEyMTZiZjg1YmQyMTE3
NzdkN2IxNTU5Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU0RPTVdpbmRvdy5jcHAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNET01XaW5kb3dET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0
dXJlKEpTQzo6Vk0mIHZtLAogdGVtcGxhdGU8PiB2b2lkIEpTRE9NV2luZG93RE9NQ29uc3RydWN0
b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2Jh
bE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNO
b250cml2aWFsU3RyaW5nKHZtLCAiRE9NV2luZG93Il9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0
cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkRPTVdpbmRvdyJfc3RyKTsKICAgICBtX29y
aWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQ
cm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5j
cHAKaW5kZXggMmRjYmE5ZjY0MGZhMTAwODRlOGNiNWRhMGI4MDUzZjVkMWI4ODk5OS4uZTZiZDgy
OTU2MjE3MjgwZGE1Y2IxNTk0YjM2NDhhYWFiOGU0NjdkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0Rl
ZGljYXRlZFdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtODQsNyArODQsNyBAQCB0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjpwcm90
b3R5cGVGb3JTdHJ1YwogdGVtcGxhdGU8PiB2b2lkIEpTRGVkaWNhdGVkV29ya2VyR2xvYmFsU2Nv
cGVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2Jh
bE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5h
bWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxT
Y29wZSJfcyk7CisgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZSJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFt
ZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5nZXRQcm90b3R5cGVE
aXJlY3Qodm0pLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNFeHBvc2VkU3Rhci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNFeHBvc2VkU3Rhci5jcHAKaW5kZXggZTVmYzM1YzhhZTljMzFiMGQxODcyNjZmZjE5N2I5
MzAwMDM2MjcyYi4uYzI5OTExNWQ4ZWU3Nzg5M2MzYTE3ZTIxNTA2YjgwZDBiYzE3MmY1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3Nl
ZFN0YXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U0V4cG9zZWRTdGFyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBK
U0V4cG9zZWRTdGFyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZN
JiB2CiB0ZW1wbGF0ZTw+IHZvaWQgSlNFeHBvc2VkU3RhckRPTUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIkV4cG9zZWRTdGFyIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIkV4cG9zZWRTdGFyIl9zdHIpOwogICAgIG1fb3JpZ2luYWxO
YW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNFeHBvc2VkU3Rhcjo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93LmNwcApp
bmRleCBlYjg3ZDZjODdmYjVlMDhkMzBhODg3ZTc3MzM1MWRhZTZmNTg4YTc0Li5hZmFkMDIxZGQy
ZmVmMmYwMTFhYzhjYjNkZGFmYjY4ZDdhNDQ4NTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3cuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0V4cG9zZWRU
b1dvcmtlckFuZFdpbmRvdy5jcHAKQEAgLTE2Miw3ICsxNjIsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNFeHBvc2VkVG9Xb3JrZXJBbmRXaW5kb3dET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9y
U3RydWN0dQogdGVtcGxhdGU8PiB2b2lkIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93RE9NQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5n
ID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Il9zKTsK
KyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIkV4cG9z
ZWRUb1dvcmtlckFuZFdpbmRvdyJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRo
aXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFt
ZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5wcm90b3R5cGUsIEpTRXhwb3NlZFRvV29ya2VyQW5kV2luZG93Ojpwcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1BhaW50V29ya2xldEdsb2JhbFNjb3BlLmNwcAppbmRl
eCA3YTU2YTc5YjZiYTFmZjllNTZiNGEyNzFjMjIxOGQ0ZDRmNjgyNmE1Li43MGEzZmE1MWE5MWVh
NjU3ZWNkMDllY2M1ODVmNWMwODI5MTk4OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTUGFpbnRXb3JrbGV0
R2xvYmFsU2NvcGUuY3BwCkBAIC04Myw3ICs4Myw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Bh
aW50V29ya2xldEdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
CiB0ZW1wbGF0ZTw+IHZvaWQgSlNQYWludFdvcmtsZXRHbG9iYWxTY29wZURPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlBhaW50V29ya2xldEdsb2JhbFNjb3BlIl9zKTsKKyAgICBKU1N0
cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlBhaW50V29ya2xldEds
b2JhbFNjb3BlIl9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0
cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3Ry
aW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTZXJ2
aWNlV29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDk5ODY1ZDFlMGJmYmI0NTllYTNkMmIyZjE3
MGUwNDgwZjBhMWU4MzQuLjA2OTY2N2MzYjI3MGE2OGYzNWU2YWY4YTY1YzMxOTM2OWQwYTMyMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Nl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTU2VydmljZVdvcmtlckdsb2JhbFNjb3BlLmNwcApAQCAtODMsNyAr
ODMsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGVET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dQogdGVtcGxhdGU8PiB2b2lkIEpTU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwot
ICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiU2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSJfc3RyKTsKICAgICBt
X29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9iamVjdC5n
ZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGUuY3BwCmlu
ZGV4IDg5MWEyMzJkYTllN2ViZGI5ZjMzMWNlOTIxN2RkZDBiYzM3NTkzYWEuLjljN2VkZTU1M2Jk
YjA4NmZjOTBjMzI0NjU2NGE0MDlkYmNkYTViMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYWRvd1JlYWxtR2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYWRvd1JlYWxt
R2xvYmFsU2NvcGUuY3BwCkBAIC04Niw3ICs4Niw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1No
YWRvd1JlYWxtR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJl
CiB0ZW1wbGF0ZTw+IHZvaWQgSlNTaGFkb3dSZWFsbUdsb2JhbFNjb3BlRE9NQ29uc3RydWN0b3I6
OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250
cml2aWFsU3RyaW5nKHZtLCAiU2hhZG93UmVhbG1HbG9iYWxTY29wZSJfcyk7CisgICAgSlNTdHJp
bmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJTaGFkb3dSZWFsbUdsb2Jh
bFNjb3BlIl9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmlu
Zyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5n
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdvcmtlckdsb2JhbFNjb3Bl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1NoYXJlZFdv
cmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCBhMDI0OTQwNjJkZDdkZDYyMzJkMWViYTQwMjU2YjMw
ZGEzNTBjYjBjLi5jZjUzMGUwMDExNThiNDE2ZGQ1NmQ0MTUxMWU0YTdhM2RlMzNiZGM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNTaGFyZWRX
b3JrZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTU2hhcmVkV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC04NCw3ICs4NCw3IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1NoYXJlZFdvcmtlckdsb2JhbFNjb3BlRE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyCiB0ZW1wbGF0ZTw+IHZvaWQgSlNTaGFyZWRXb3JrZXJH
bG9iYWxTY29wZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0
cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlNoYXJlZFdvcmtlckds
b2JhbFNjb3BlIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIlNoYXJlZFdvcmtlckdsb2JhbFNjb3BlIl9zdHIpOwogICAgIG1fb3JpZ2luYWxO
YW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LmdldFByb3RvdHlw
ZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnMuY3BwCmluZGV4IDFiOGY2MWE2ZmEwYjVmMDk4OGI0
MWQ1OGIwMWE1MmM3NjgzNGIxZTIuLmM1NTkzZjBiNDlhYTk2YmEzYzIwZWFlZTcyNGY0ODhiMTI5
Zjc0ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RDRVJlYWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rpb25zLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHRl
bXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDRVJlYWN0aW9uc0RPTUNvbnN0cnVjdG9yOjpwcm90b3R5
cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q0VSZWFjdGlvbnNE
T01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVT
dHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q0VSZWFjdGlvbnMiX3MpOworICAg
IEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdENFUmVh
Y3Rpb25zIl9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmlu
Zyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5n
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0Q0VSZWFjdGlvbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENFUmVhY3Rp
b25zU3RyaW5naWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXIuY3BwCmluZGV4IGQwMzNlZjgzZjkxYzI5
NDk3NmMxZmM3ZDlkZjU0MGUzNTE0ZThkZDUuLjc4OWViNTRlMTQ5OWUxNzJhM2NjYWM0NmZjMTQz
MjUzZTgyOWU1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDRVJlYWN0aW9uc1N0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmll
ci5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q0VSZWFj
dGlvbnNTdHJpbmdpZmllckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1YwogdGVtcGxh
dGU8PiB2b2lkIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJUZXN0Q0VSZWFjdGlvbnNTdHJpbmdpZmllciJfcyk7CisgICAgSlNTdHJp
bmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q0VSZWFjdGlvbnNT
dHJpbmdpZmllciJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVT
dHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0
cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5w
cm90b3R5cGUsIEpTVGVzdENFUmVhY3Rpb25zU3RyaW5naWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxUcmFjZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCmluZGV4IDg3NzNmNDE0OTE2YjViZjBlZmNhNWNh
YmQyZjk2YTljYzljMDY5YWUuLmEwMzAzM2E4YTFkN2FlN2Q1YzhiMjNjMjEwY2QxZDk1ZWE1ZmNi
ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RDYWxsVHJhY2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKQEAgLTEzNyw3ICsxMzcsNyBAQCB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0Q2FsbFRyYWNlckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTQogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdENhbGxUcmFjZXJET01Db25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcg
PSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q2FsbFRyYWNlciJfcyk7CisgICAgSlNTdHJp
bmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q2FsbFRyYWNlciJf
c3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdENhbGxUcmFjZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpAQCAtMjI2LDcgKzIyNiw3IEBA
IHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVJbnRl
cmZhY2VHZXR0ZXIoSlNHbG9iYWxPYmplCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwog
ICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0FjdGl2ZVRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyKCkp
KQotICAgICAgICBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0
ZXN0QXR0cmlidXRlSW50ZXJmYWNlIl9zKTsKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFj
ZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJfc3RyKTsKICAg
ICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMQm9vbGVhbj4obGV4aWNh
bEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC50ZXN0QXR0cmlidXRlSW50ZXJmYWNlKCkp
KSk7CiB9CiAKQEAgLTI0Myw3ICsyNDMsNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0
Q2FsbFRyYWNlcl90ZXN0QXR0cmlidXRlSW50ZXJmYWNlU2V0dGVyKEpTR2xvYmFsT2JqZQogICAg
IGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0PElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
ICAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigp
KSkKLSAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAi
dGVzdEF0dHJpYnV0ZUludGVyZmFjZSJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJv
Y2Vzc0FyZ3VtZW50KGltcGwsIG5hdGl2ZVZhbHVlKSB9KTsKKyAgICAgICAgVGVzdEludGVyZmFj
ZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJf
c3RyLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgbmF0
aXZlVmFsdWUpIH0pOwogICAgIGludm9rZUZ1bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVj
ZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgIHJl
dHVybiBpbXBsLnNldFRlc3RBdHRyaWJ1dGVJbnRlcmZhY2UoV1RGTW92ZShuYXRpdmVWYWx1ZSkp
OwogICAgIH0pOwpAQCAtMjYxLDcgKzI2MSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rl
c3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVTcGVjaWZpZWRHZXR0ZXIoSlNHbG9iYWxPYmplCiAg
ICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYg
aW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0Fj
dGl2ZVRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyKCkpKQotICAgICAgICBUZXN0QXR0cmlidXRlQ2Fs
bFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0QXR0cmlidXRlU3BlY2lmaWVkIl9zKTsK
KyAgICAgICAgVGVzdEF0dHJpYnV0ZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVz
dEF0dHJpYnV0ZVNwZWNpZmllZCJfc3RyKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dT
Y29wZSwgKHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
aW1wbC50ZXN0QXR0cmlidXRlU3BlY2lmaWVkKCkpKSk7CiB9CiAKQEAgLTI3OCw3ICsyNzgsNyBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q2FsbFRyYWNlcl90ZXN0QXR0cmlidXRlU3Bl
Y2lmaWVkU2V0dGVyKEpTR2xvYmFsT2JqZQogICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBjb252ZXJ0
PElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNB
Y3RpdmVUZXN0QXR0cmlidXRlQ2FsbFRyYWNlcigpKSkKLSAgICAgICAgVGVzdEF0dHJpYnV0ZUNh
bGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJpYnV0ZVNwZWNpZmllZCJfcywg
eyBUZXN0QXR0cmlidXRlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIG5hdGl2ZVZh
bHVlKSB9KTsKKyAgICAgICAgVGVzdEF0dHJpYnV0ZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihp
bXBsLCAidGVzdEF0dHJpYnV0ZVNwZWNpZmllZCJfc3RyLCB7IFRlc3RBdHRyaWJ1dGVDYWxsVHJh
Y2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgbmF0aXZlVmFsdWUpIH0pOwogICAgIGludm9rZUZ1
bmN0b3JQcm9wYWdhdGluZ0V4Y2VwdGlvbklmTmVjZXNzYXJ5KGxleGljYWxHbG9iYWxPYmplY3Qs
IHRocm93U2NvcGUsIFsmXSB7CiAgICAgICAgIHJldHVybiBpbXBsLnNldFRlc3RBdHRyaWJ1dGVT
cGVjaWZpZWQoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgIH0pOwpAQCAtMjk2LDcgKzI5Niw3
IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVX
aXRoVmFyaWFudEdldHRlcihKU0dsb2JhbE9iCiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgp
OwogICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0FjdGl2ZVRlc3RJbnRlcmZhY2VDYWxsVHJhY2Vy
KCkpKQotICAgICAgICBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGws
ICJ0ZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQiX3MpOworICAgICAgICBUZXN0SW50ZXJmYWNlQ2Fs
bFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQiX3N0
cik7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETFVuaW9uPElE
TEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJpbmc+PihsZXhpY2FsR2xvYmFsT2JqZWN0LCAq
dGhpc09iamVjdC5nbG9iYWxPYmplY3QoKSwgdGhyb3dTY29wZSwgaW1wbC50ZXN0QXR0cmlidXRl
V2l0aFZhcmlhbnQoKSkpKTsKIH0KIApAQCAtMzEzLDcgKzMxMyw3IEBAIHN0YXRpYyBpbmxpbmUg
Ym9vbCBzZXRKU1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVXaXRoVmFyaWFudFNldHRlcihK
U0dsb2JhbE9iCiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMVW5pb248SURMQm9v
bGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVl
KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKICAgICBpZiAo
VU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKLSAgICAg
ICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJp
YnV0ZVdpdGhWYXJpYW50Il9zLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJn
dW1lbnQoaW1wbCwgbmF0aXZlVmFsdWUpIH0pOworICAgICAgICBUZXN0SW50ZXJmYWNlQ2FsbFRy
YWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQiX3N0ciwg
eyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIG5hdGl2ZVZh
bHVlKSB9KTsKICAgICBpbnZva2VGdW5jdG9yUHJvcGFnYXRpbmdFeGNlcHRpb25JZk5lY2Vzc2Fy
eShsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4g
aW1wbC5zZXRUZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwog
ICAgIH0pOwpAQCAtMzQ2LDcgKzM0Niw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNW
YWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvCiAgICAg
VU5VU0VEX1BBUkFNKGNhbGxGcmFtZSk7CiAgICAgYXV0byYgaW1wbCA9IGNhc3RlZFRoaXMtPndy
YXBwZWQoKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2Fs
bFRyYWNlcigpKSkKLSAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlv
bihpbXBsLCAidGVzdE9wZXJhdGlvbkludGVyZmFjZSJfcyk7CisgICAgICAgIFRlc3RJbnRlcmZh
Y2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25JbnRlcmZhY2Ui
X3N0cik7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdE9wZXJhdGlvbkludGVyZmFj
ZSgpOyB9KSkpOwogfQogCkBAIC0zNjMsNyArMzYzLDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0
aW8KICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVk
VGhpcy0+d3JhcHBlZCgpOwogICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0FjdGl2ZVRlc3RPcGVy
YXRpb25DYWxsVHJhY2VyKCkpKQotICAgICAgICBUZXN0T3BlcmF0aW9uQ2FsbFRyYWNlcjo6cmVj
b3JkQWN0aW9uKGltcGwsICJ0ZXN0T3BlcmF0aW9uU3BlY2lmaWVkIl9zKTsKKyAgICAgICAgVGVz
dE9wZXJhdGlvbkNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvblNw
ZWNpZmllZCJfc3RyKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dT
Y29wZSwgWyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9u
U3BlY2lmaWVkKCk7IH0pKSk7CiB9CiAKQEAgLTM5MSw3ICszOTEsNyBAQCBzdGF0aWMgaW5saW5l
IEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rl
c3RPcGVyYXRpbwogICAgIGF1dG8gYyA9IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEds
b2JhbE9iamVjdCwgYXJndW1lbnQyLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
dGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGltcGwuaGFz
QWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCi0gICAgICAgIFRlc3RJbnRlcmZhY2VD
YWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRz
Il9zLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgYSks
IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgYiksIFRlc3RJ
bnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgYykgfSk7CisgICAgICAg
IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRp
b25XaXRoQXJndW1lbnRzIl9zdHIsIHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NB
cmd1bWVudChpbXBsLCBhKSwgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVu
dChpbXBsLCBiKSwgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBs
LCBjKSB9KTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uV2l0aEFy
Z3VtZW50cyhXVEZNb3ZlKGEpLCBXVEZNb3ZlKGIpLCBXVEZNb3ZlKGMpKTsgfSkpKTsKIH0KIApA
QCAtNDEzLDcgKzQxMyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rl
c3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvCiAgICAgYXV0byBub2Rl
TnVsbGFibGVBcmcgPSBjb252ZXJ0PElETE51bGxhYmxlPElETEludGVyZmFjZTxOb2RlPj4+KCps
ZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSwgW10oSlNDOjpKU0dsb2JhbE9i
amVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSkgeyB0aHJv
d0FyZ3VtZW50VHlwZUVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCAwLCAibm9kZU51
bGxhYmxlQXJnIiwgIlRlc3RDYWxsVHJhY2VyIiwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVB
cmd1bWVudCIsICJOb2RlIik7IH0pOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVz
dEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCi0gICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2Vy
OjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCJf
cywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIG5vZGVO
dWxsYWJsZUFyZykgfSk7CisgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRB
Y3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCJfc3RyLCB7IFRl
c3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgbm9kZU51bGxhYmxl
QXJnKSB9KTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKHRvSlM8SURMVW5kZWZpbmVkPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwg
WyZdKCkgLT4gZGVjbHR5cGUoYXV0bykgeyByZXR1cm4gaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51
bGxhYmxlQXJndW1lbnQoV1RGTW92ZShub2RlTnVsbGFibGVBcmcpKTsgfSkpKTsKIH0KIApAQCAt
NDM1LDcgKzQzNSw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RD
YWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvCiAgICAgYXV0byB2YXJpYW50
QXJnID0gY29udmVydDxJRExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwgSURMRE9NU3RyaW5n
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChVTkxJ
S0VMWShpbXBsLmhhc0FjdGl2ZVRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyKCkpKQotICAgICAgICBU
ZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0T3BlcmF0aW9u
V2l0aFZhcmlhbnRBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vz
c0FyZ3VtZW50KGltcGwsIHZhcmlhbnRBcmcpIH0pOworICAgICAgICBUZXN0SW50ZXJmYWNlQ2Fs
bFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0aFZhcmlhbnRBcmd1
bWVudCJfc3RyLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1w
bCwgdmFyaWFudEFyZykgfSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdE9wZXJh
dGlvbldpdGhWYXJpYW50QXJndW1lbnQoV1RGTW92ZSh2YXJpYW50QXJnKSk7IH0pKSk7CiB9CiAK
QEAgLTQ1Nyw3ICs0NTcsNyBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNU
ZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpbwogICAgIGF1dG8gdmFy
aWFudE51bGxhYmxlQXJnID0gY29udmVydDxJRExOdWxsYWJsZTxJRExVbmlvbjxJRExCb29sZWFu
LCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVu
dDAudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNl
Q2FsbFRyYWNlcigpKSkKLSAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFj
dGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudCJfcywg
eyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIHZhcmlhbnRO
dWxsYWJsZUFyZykgfSk7CisgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRB
Y3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVWYXJpYW50QXJndW1lbnQiX3N0
ciwgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIHZhcmlh
bnROdWxsYWJsZUFyZykgfSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpT
VmFsdWU6OmVuY29kZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRo
cm93U2NvcGUsIFsmXSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwudGVzdE9wZXJh
dGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnROdWxsYWJsZUFy
ZykpOyB9KSkpOwogfQogCkBAIC00NzcsNyArNDc3LDcgQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0
aW8KICAgICBhdXRvIHZhcmlhbnRPcHRpb25hbEFyZyA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5k
ZWZpbmVkKCkgPyBzdGQ6Om9wdGlvbmFsPENvbnZlcnRlcjxJRExVbmlvbjxJRExCb29sZWFuLCBJ
RExGbG9hdCwgSURMRE9NU3RyaW5nPj46OlJldHVyblR5cGU+KCkgOiBzdGQ6Om9wdGlvbmFsPENv
bnZlcnRlcjxJRExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj46OlJl
dHVyblR5cGU+KGNvbnZlcnQ8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0
cmluZz4+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcmd1bWVudDAudmFsdWUoKSkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgaWYg
KFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCi0gICAg
ICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVy
YXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQiX3MsIHsgVGVzdEludGVyZmFjZUNhbGxU
cmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCB2YXJpYW50T3B0aW9uYWxBcmcpIH0pOworICAg
ICAgICBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0T3Bl
cmF0aW9uV2l0aE9wdGlvbmFsVmFyaWFudEFyZ3VtZW50Il9zdHIsIHsgVGVzdEludGVyZmFjZUNh
bGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCB2YXJpYW50T3B0aW9uYWxBcmcpIH0pOwog
ICAgIFJFTEVBU0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJ
RExVbmRlZmluZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBk
ZWNsdHlwZShhdXRvKSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJp
YW50QXJndW1lbnQoV1RGTW92ZSh2YXJpYW50T3B0aW9uYWxBcmcpKTsgfSkpKTsKIH0KIApAQCAt
NDk3LDcgKzQ5Nyw3IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RD
YWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvCiAgICAgYXV0byB2YXJpYW50
RGVmYXVsdEFyZyA9IGFyZ3VtZW50MC52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyBlbXB0eVN0cmlu
ZygpIDogY29udmVydDxJRExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwgSURMRE9NU3RyaW5n
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGlmIChVTkxJ
S0VMWShpbXBsLmhhc0FjdGl2ZVRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyKCkpKQotICAgICAgICBU
ZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0T3BlcmF0aW9u
V2l0aERlZmF1bHRWYXJpYW50QXJndW1lbnQiX3MsIHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6
OnByb2Nlc3NBcmd1bWVudChpbXBsLCB2YXJpYW50RGVmYXVsdEFyZykgfSk7CisgICAgICAgIFRl
c3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25X
aXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCJfc3RyLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2Vy
Ojpwcm9jZXNzQXJndW1lbnQoaW1wbCwgdmFyaWFudERlZmF1bHRBcmcpIH0pOwogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTih0aHJvd1Njb3BlLCBKU1ZhbHVlOjplbmNvZGUodG9KUzxJRExVbmRlZmlu
ZWQ+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0oKSAtPiBkZWNsdHlwZShh
dXRvKSB7IHJldHVybiBpbXBsLnRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVu
dChXVEZNb3ZlKHZhcmlhbnREZWZhdWx0QXJnKSk7IH0pKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsYmFja0ludGVy
ZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q2FsbGJhY2tJbnRlcmZhY2UuY3BwCmluZGV4IDg1NjkyYWFhZWNlODBkODcwYjNiYWQ3NWZhYmFh
ZWQyZDNkMmU2MTIuLmMxNDIwMDQ4YjE3ZWE5ZDRkMDkwY2VjZjM2M2VkZGNjMTE3NTQ2YWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RD
YWxsYmFja0ludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdENhbGxiYWNrSW50ZXJmYWNlLmNwcApAQCAtMTY0LDcgKzE2NCw3IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RDYWxsYmFja0ludGVyZmFjZURPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0Q2FsbGJhY2tJ
bnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJp
bmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0Q2FsbGJhY2tJbnRl
cmZhY2UiX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5n
KHZtLCAiVGVzdENhbGxiYWNrSW50ZXJmYWNlIl9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNl
dCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBVTlVTRURfUEFSQU0oZ2xv
YmFsT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDbGFzc1dpdGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2xhc3NXaXRoSlNCdWlsdGlu
Q29uc3RydWN0b3IuY3BwCmluZGV4IGEzMmIyZDhiODk1NGFhMTZkMjRhZWFlOWY4MGI0NDQ4MTE5
NmUwZWUuLmQxZmZlNGFkZWQ3MTNhMDJmZGZhMGJkZTQwYjk0N2IwNjRjYzk0MWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yLmNwcApA
QCAtOTUsNyArOTUsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0Q2xhc3NXaXRoSlNCdWls
dGluQ29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRgogdGVtcGxhdGU8PiB2b2lk
IEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFs
U3RyaW5nKHZtLCAiVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9yIl9zKTsKKyAgICBK
U1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RDbGFzc1dp
dGhKU0J1aWx0aW5Db25zdHJ1Y3RvciJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0s
IHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdENsYXNzV2l0aEpTQnVpbHRpbkNvbnN0cnVjdG9y
Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbEluY2x1
ZGVzLmNwcAppbmRleCAwNDZmNzNjNjRlODk5ODJiNDhmYjFiN2M1MjY5NDNhZTMxNDA5NTlmLi5k
MDQ1MDZlNDE3M2YzM2IwOTNhOTBhMTZiYTQxMTc3Y2U0NGJjMjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxJbmNs
dWRlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXMuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgdGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdENvbmRpdGlvbmFsSW5jbHVkZXNET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXIKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVz
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1l
U3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdENvbmRpdGlvbmFsSW5jbHVkZXMi
X3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAi
VGVzdENvbmRpdGlvbmFsSW5jbHVkZXMiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZt
LCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDb25kaXRpb25hbEluY2x1ZGVzOjpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDb25kaXRpb25hbGx5UmVhZFdyaXRl
LmNwcAppbmRleCBjNWM3YjZiYTk4MmQyNDlkODliYjczZTk2Mjk3MWQ5Y2Q0ZjY0OGJmLi5jODQ0
ZmVkNThiMjlmYmU1ODUxNGY3YTAwMzJhODBmMDlhM2VmNzdhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q29uZGl0aW9uYWxseVJlYWRX
cml0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGVET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWMKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5n
KiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdENvbmRpdGlvbmFsbHlS
ZWFkV3JpdGUiX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVGVzdENvbmRpdGlvbmFsbHlSZWFkV3JpdGUiX3N0cik7CiAgICAgbV9vcmlnaW5h
bE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RDb25kaXRpb25hbGx5UmVh
ZFdyaXRlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RET01KSVQuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKaW5kZXggNzNlNDQ0
M2MxZTA2NzBkMTkwZjI0MmI5OTY3ODRmNDA5ZjdiZjc4ZS4uYzA3ZmRmZTAzNjk0YTI1ZjYzODQ1
YWUxOGUzY2QzODkxZjlkZWUyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERPTUpJVC5jcHAKQEAgLTUxMSw3ICs1MTEsNyBA
QCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RE9NSklURE9NQ29uc3RydWN0b3I6OnByb3RvdHlw
ZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bQogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdERPTUpJVERP
TUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2Jq
ZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0
cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RET01KSVQiX3MpOworICAgIEpTU3Ry
aW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERPTUpJVCJfc3Ry
KTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVz
dERPTUpJVDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTi5j
cHAKaW5kZXggZWE1YTI1NGRhODFlYzRkNGViMmRkZjUyNWI2MmE4YjBjZjQzY2RkYS4uZTc4MTgy
ZGNhYzdhMmQyMTUyYTFjZWZiNTk1ODA0M2JmNmUxYjhhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT04uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0
VG9KU09OLmNwcApAQCAtMTU1LDcgKzE1NSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RE
ZWZhdWx0VG9KU09ORE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6CiB0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkRPTUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIlRlc3REZWZhdWx0VG9KU09OIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmlu
ZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3REZWZhdWx0VG9KU09OIl9zdHIpOwogICAg
IG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RGVmYXVs
dFRvSlNPTjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkZpbHRlcmVkQnlF
eHBvc2VkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCmluZGV4IDk1ODU3NGJjNmQ4NzA2
OTk0OTdhMDE5ZDYyODQ1MjU3N2I2YTM4MzEuLjRkZTI4NGYwZGJhMDk4ZmE3NWE1Y2FkNDlhNTI5
NWZlNDRjMGYzNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09O
RmlsdGVyZWRCeUV4cG9zZWQuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdERlZmF1bHRUb0pTT05GaWx0ZXJlZEJ5RXhwb3NlZERPTUNvbnN0cnVjdG9yOjpw
cm90b3R5cGUKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4
cG9zZWRET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUds
b2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcq
IG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0RGVmYXVsdFRvSlNPTkZp
bHRlcmVkQnlFeHBvc2VkIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgIlRlc3REZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQiX3N0cik7
CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RE
ZWZhdWx0VG9KU09ORmlsdGVyZWRCeUV4cG9zZWQ6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERl
ZmF1bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJlY3RJbmhlcml0YW5j
ZS5jcHAKaW5kZXggMzIzZWYwODJjMWJjN2YxNWY2ZTJkNmQxMmM4NWM1MjYwM2UyMWQ0ZS4uYjRi
MmRkNjIyZjkyMDEwY2I1MjdkZjdkZjFkNWQzY2RiMGFhNjJhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05JbmRp
cmVjdEluaGVyaXRhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UuY3BwCkBAIC05
Miw3ICs5Miw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9KU09OSW5kaXJl
Y3RJbmhlcml0YW5jZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5CiB0ZW1wbGF0ZTw+IHZvaWQgSlNU
ZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2VET01Db25zdHJ1Y3Rvcjo6aW5pdGlh
bGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQog
ewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigw
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxT
dHJpbmcodm0sICJUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5oZXJpdGFuY2UiX3MpOworICAg
IEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERlZmF1
bHRUb0pTT05JbmRpcmVjdEluaGVyaXRhbmNlIl9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNl
dCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluZGlyZWN0SW5o
ZXJpdGFuY2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdC5jcHAKaW5kZXggZGU5N2QyM2RkYzU4M2MwOWEzNjQ3N2I1ZmU3YjIwMGUw
NGFkZTVmZS4uNDI0YTM0ZDg0MmQ3ZDQ4YTRlNGIxNDhmNGQyMTgwOWFhMGZmOWFjZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdERlZmF1
bHRUb0pTT05Jbmhlcml0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQuY3BwCkBAIC0xMTksNyArMTE5LDcg
QEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHUKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3REZWZhdWx0
VG9KU09OSW5oZXJpdERPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBK
U1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3REZWZhdWx0
VG9KU09OSW5oZXJpdCJfcyk7CisgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXQiX3N0cik7CiAgICAgbV9vcmln
aW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3REZWZhdWx0VG9KU09O
SW5oZXJpdDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5h
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVm
YXVsdFRvSlNPTkluaGVyaXRGaW5hbC5jcHAKaW5kZXggNzgzYzlkYjk0ZDM2M2UxYzExYTk4NmYz
ZjgzOGE4MDZlZjRmN2FkNi4uZjRjNmNlOTkxNjNjOGU0ZWE3MWQ3ODM4ZWY0NTFlMTEwNzE3ZWFh
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlZmF1bHRUb0pTT05Jbmhlcml0RmluYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsLmNw
cApAQCAtMTIxLDcgKzEyMSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0CiB0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbERPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIlRlc3REZWZhdWx0VG9KU09OSW5oZXJpdEZpbmFsIl9zKTsKKyAgICBKU1N0
cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3REZWZhdWx0VG9K
U09OSW5oZXJpdEZpbmFsIl9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywg
bmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBu
YW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPnByb3RvdHlwZSwgSlNUZXN0RGVmYXVsdFRvSlNPTkluaGVyaXRGaW5hbDo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RGVsZWdhdGVUb1No
YXJlZFN5bnRoZXRpY0F0dHJpYnV0ZS5jcHAKaW5kZXggOGU2ZmUzOTFiZTEwMGYzNjJkZjMyMGZm
OTY1MDg0MjE0ODY5ZDY1OC4uNzliYTZlNzNiOThkN2MzZDk3NjkxOGE3NDMyYWZkMDAxNjVhNjM3
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdERlbGVnYXRlVG9TaGFyZWRTeW50aGV0aWNBdHRyaWJ1dGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3lu
dGhldGljQXR0cmlidXRlLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmlidXRlRE9NQ29uc3RydWN0b3I6
OnByb3RvCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0
dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9N
R2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmlu
ZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3REZWxlZ2F0ZVRvU2hh
cmVkU3ludGhldGljQXR0cmlidXRlIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3REZWxlZ2F0ZVRvU2hhcmVkU3ludGhldGljQXR0cmli
dXRlIl9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwgSlNUZXN0RGVsZWdhdGVUb1NoYXJlZFN5bnRoZXRpY0F0dHJpYnV0ZTo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdERvbWFpblNlY3VyaXR5LmNwcAppbmRleCA1YzUwNDBjZTYz
ZWNhMmZmMDkzYmE5MjBlOGY0ZDM3MzEzNTM5MDAyLi4xNmU0NmRlZjM5ZjdmZTRiYjFmNzRjNDE3
YzllZTVkNmI1NzkyODdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0RG9tYWluU2VjdXJpdHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3REb21haW5TZWN1cml0eS5jcHAKQEAgLTEy
NSw3ICsxMjUsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RG9tYWluU2VjdXJpdHlET01D
b25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQwogdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdERvbWFpblNlY3VyaXR5RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZN
JiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwot
ICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdERv
bWFpblNlY3VyaXR5Il9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIlRlc3REb21haW5TZWN1cml0eSJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFt
ZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdERvbWFpblNlY3VyaXR5Ojpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkQnlTZXR0aW5nLmNwcAppbmRl
eCA5ZjI2ODg5Nzg0NDE0NGUwZDE4ZDU5YzEyZDJmY2Y5OGYyMDZhMmZiLi5kYTJmNmYzMjM1Y2Iw
MTBmOWVjN2UzNDZmZTdiOTU4ZmNhNDJkOWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RW5hYmxlZEJ5U2V0dGluZy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRCeVNl
dHRpbmcuY3BwCkBAIC0xNDYsNyArMTQ2LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEVu
YWJsZWRCeVNldHRpbmdET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEoKIHRl
bXBsYXRlPD4gdm9pZCBKU1Rlc3RFbmFibGVkQnlTZXR0aW5nRE9NQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFs
U3RyaW5nKHZtLCAiVGVzdEVuYWJsZWRCeVNldHRpbmciX3MpOworICAgIEpTU3RyaW5nKiBuYW1l
U3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEVuYWJsZWRCeVNldHRpbmciX3N0
cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rl
c3RFbmFibGVkQnlTZXR0aW5nOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFbmFibGVkRm9yQ29u
dGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
RW5hYmxlZEZvckNvbnRleHQuY3BwCmluZGV4IDNhZjdkYjM0MzE5NzFiZjY0NThiNWEzZTdmMjZi
YjgyMTI3NTAzNzguLjY1NGUwYjc0ODEzMWNhODc3N2YwNTU1NDY0MmM5OGRkOGM4Nzg4MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RF
bmFibGVkRm9yQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEVuYWJsZWRGb3JDb250ZXh0LmNwcApAQCAtOTcsNyArOTcsNyBAQCB0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RW5hYmxlZEZvckNvbnRleHRET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3RydWN0dXJlKAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEVuYWJsZWRGb3JD
b250ZXh0RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5n
KiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEVuYWJsZWRGb3JDb250
ZXh0Il9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIlRlc3RFbmFibGVkRm9yQ29udGV4dCJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQo
dm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEVuYWJsZWRGb3JDb250ZXh0Ojpwcm90b3R5
cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCBj
ODhlZDIxY2NmOWEwOTZhMzM2YmI0MzBjNzA3YzMyZmQzZWFiOWI2Li5iZGVlYTI5ZGUxNzFkMjk3
N2ZiZTJmODUzZWJmNTgxNDYzMGE0MWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCkBAIC0yMDQsNyArMjA0LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEV2ZW50
Q29uc3RydWN0b3JET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEoKIHRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RFdmVudENvbnN0cnVjdG9yRE9NQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMSks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3Ry
aW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEV2ZW50Q29uc3RydWN0b3IiX3N0cik7
CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0p
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RF
dmVudENvbnN0cnVjdG9yOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJn
ZXQuY3BwCmluZGV4IDdiZmQxZTkyMDQxODg1ZTJhZjZjMmQ1MGJjMDMyMGM0NmM5OTNlMjAuLmMw
ZmU4NTVkOTM4YzQ1YzQwMGE1MjU1MWFjODkxZWYyOTlmY2U5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50
VGFyZ2V0LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RF
dmVudFRhcmdldERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWCiB0
ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0RXZlbnRUYXJnZXRET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJUZXN0RXZlbnRUYXJnZXQiX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0g
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEV2ZW50VGFyZ2V0Il9zdHIpOwogICAgIG1fb3Jp
Z2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0RXZlbnRUYXJnZXQ6
OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAppbmRleCAxMWRjNWVh
ZWZmNzNlNWYzZjBkZjA4MWJkYzZkMTU5Y2IwMTkwNzNmLi45ODEwODE4MDc5ZDEzMjIxMGI0M2U4
YjUzMmMwOGU3NjBlOTZjMjY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXhjZXB0aW9uLmNwcApAQCAtOTcsNyArOTcs
NyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0RXhjZXB0aW9uRE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJgogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEV4Y2Vw
dGlvbkRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyog
bmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RFeGNlcHRpb24iX3MpOwor
ICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEV4
Y2VwdGlvbiJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJp
bmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmlu
ZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIEpTVGVzdEV4Y2VwdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2VuZXJhdGVB
ZGRPcGFxdWVSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCmluZGV4IGVlM2FmMWYxZjU5Mjg5Nzg3
YTlkZTUwYWYxNzk4NDFlYTExZWJiNjQuLmM4YjJkYmMyNGFjYzMxMmExZGI0NDA5YmVhZmUzMTJk
MWRlOTA0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5lcmF0ZUFkZE9wYXF1ZVJvb3QuY3Bw
CkBAIC05Nyw3ICs5Nyw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RHZW5lcmF0ZUFkZE9w
YXF1ZVJvb3RET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0CiB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5n
KHZtLCAiVGVzdEdlbmVyYXRlQWRkT3BhcXVlUm9vdCJfcyk7CisgICAgSlNTdHJpbmcqIG5hbWVT
dHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290
Il9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
SlNUZXN0R2VuZXJhdGVBZGRPcGFxdWVSb290Ojpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHZW5l
cmF0ZUlzUmVhY2hhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlLmNwcAppbmRleCA1ZjU5NTg1OGVkZGM5Y2I4
OGVmN2UxNDFmNTE3MTc0NTA5MzlkMDNkLi44YjQ1M2E0MGQ1ODdkZDQwOGM3NWQwMDg5Y2E0MDM1
NDQxYjFlMTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdlbmVyYXRlSXNSZWFjaGFibGUuY3BwCkBA
IC05Nyw3ICs5Nyw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RHZW5lcmF0ZUlzUmVhY2hh
YmxlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyCiB0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0R2VuZXJhdGVJc1JlYWNoYWJsZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVy
dGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
IlRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RHZW5lcmF0ZUlzUmVhY2hhYmxlIl9zdHIpOwog
ICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0R2Vu
ZXJhdGVJc1JlYWNoYWJsZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxP
YmplY3QuY3BwCmluZGV4IDRmMTRhNjlhMjBmMGEzMDEzOTk0MDdkYzAwYmM4MDY1ZWQyZGI5MGQu
LmY5OWQ0OTA1NWRkYWE5NzVlNjM0MzZiOGZmZDM5YjA5NTQxNjY4ODYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RH
bG9iYWxPYmplY3QuY3BwCkBAIC02MzIsNyArNjMyLDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpT
VGVzdEdsb2JhbE9iamVjdERPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OjoKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3RET01Db25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJUZXN0R2xvYmFsT2JqZWN0Il9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0
cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RHbG9iYWxPYmplY3QiX3N0cik7CiAg
ICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBnbG9iYWxPYmpl
Y3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJO
b0lkZW50aWZpZXIuY3BwCmluZGV4IGE3NjRjOGYyNzQ1NTI2YTg5ZDIzODhhYTI1YmFmNDhlZTBj
ZThjMjcuLmY3NDM3ZjM1YzEyMjIzZWIzNmY4YTIzNGM1MGI1ZjU3MzlkN2M1ZGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbmRleGVk
U2V0dGVyTm9JZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlck5vSWRlbnRpZmllci5jcHAKQEAgLTk2LDcg
Kzk2LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3QKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJ
bmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAi
VGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIiX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3Ry
aW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3RJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlv
bi5jcHAKaW5kZXggODgyZmYwNDdiOGJkMjgwYzZjODY1NjExZGQxZjU1ZWY5Mzc3NmIwYi4uYjc2
ZDFlNjZmYmE1Yjg2ZGU1OTFhZjc4MzBjM2IyZDhlY2UxOTNmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJv
d2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTk2LDcg
Kzk2LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4
Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGUKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJUZXN0SW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uIl9zKTsKKyAgICBKU1N0cmlu
ZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RJbmRleGVkU2V0dGVy
VGhyb3dpbmdFeGNlcHRpb24iX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlz
LCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAppbmRleCAyYWM2ZDcxZDU2MzI3ZDlhNmNjZDgwNjIwNWE1MjVh
M2ZjZmM2NDM1Li5iMjFlZDc3MzRlMjU4N2IxOGRiZDljMjdlYzlhNDdlYWU4ODY4YWM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5k
ZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyLmNwcApA
QCAtMTA0LDcgKzEwNCw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbmRleGVkU2V0dGVy
V2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yCiB0ZW1wbGF0ZTw+IHZv
aWQgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OmluaXRp
YWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkK
IHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIo
MCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFs
U3RyaW5nKHZtLCAiVGVzdEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllciJfcyk7CisgICAgSlNT
dHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0SW5kZXhlZFNl
dHRlcldpdGhJZGVudGlmaWVyIl9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhp
cywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SW5kZXhlZFNldHRlcldpdGhJZGVudGlmaWVyOjpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKaW5kZXggZWNiMDU0ODQwNmYx
ZGU0ZmRhNGJkYTVkOTY0N2RmYTc5MzMzMjEzMy4uNTM0NDcxMjBkOWY2ZjE5YjkzYTExYWZkYTk1
OWUzMDllMDBkYWNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZS5jcHAKQEAgLTI3OCw3ICsyNzgsNyBA
QCB0ZW1wbGF0ZTw+IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTExfQVRUUklCVVRFUyBKU1Rl
c3RJbnRlcmZhY2VET01Db25zdHJ1Y3RvcgogICAgIGF1dG8gc3RyMSA9IGNvbnZlcnQ8SURMRE9N
U3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgRW5z
dXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMSk7Ci0g
ICAgYXV0byBzdHIyID0gYXJndW1lbnQxLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/ICJkZWZhdWx0
U3RyaW5nIl9zIDogY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDEudmFsdWUoKSk7CisgICAgYXV0byBzdHIyID0gYXJndW1lbnQxLnZhbHVlKCkuaXNV
bmRlZmluZWQoKSA/ICJkZWZhdWx0U3RyaW5nIl9zdHIgOiBjb252ZXJ0PElETERPTVN0cmluZz4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MS52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIGF1dG8gb2JqZWN0
ID0gVGVzdEludGVyZmFjZTo6Y3JlYXRlKCpjb250ZXh0LCBXVEZNb3ZlKHN0cjEpLCBXVEZNb3Zl
KHN0cjIpKTsKICAgICBpZiBjb25zdGV4cHIgKElzRXhjZXB0aW9uT3I8ZGVjbHR5cGUob2JqZWN0
KT4pCkBAIC0zMDQsNyArMzA0LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdEludGVyZmFj
ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlNDOjpWTSYKIHRlbXBsYXRl
PD4gdm9pZCBKU1Rlc3RJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJU
ZXN0SW50ZXJmYWNlIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIlRlc3RJbnRlcmZhY2UiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0
KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RJbnRlcmZhY2U6OnByb3RvdHlwZSh2bSwg
Z2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRE
ZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29y
ZS5jcHAKaW5kZXggYTgzM2M4NDRkYTAwMjNkZDUxZWI3NzdjOTg1ZTU2MmJmNTFhOGNiMi4uYTY3
Nzg4MzZmMTNhYjJjZWFhNjBkN2I1Y2UzYjQxYzIwYjg2OThjYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEludGVyZmFjZUxlYWRpbmdV
bmRlcnNjb3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUuY3BwCkBAIC05Nyw3ICs5Nyw3IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RJbnRlcmZhY2VMZWFkaW5nVW5kZXJzY29yZURPTUNv
bnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SW50ZXJmYWNl
TGVhZGluZ1VuZGVyc2NvcmVET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0g
ICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0SW50
ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmUiX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0g
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEludGVyZmFjZUxlYWRpbmdVbmRlcnNjb3JlIl9z
dHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0SW50ZXJmYWNlTGVhZGluZ1VuZGVyc2NvcmU6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0
KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0
ZXJhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RJdGVyYWJsZS5jcHAKaW5kZXggNWY0ZmE2OWZhOGQxYjAxMTkxZDdhNDg0MjFiZWM5MzFhODk1
NmFmMi4uOGVmMTU5OGQ3ZmUyNTY4ODMxMjkwNDAzZTY1NmNiMzI3ZjQ2YzIyZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEl0ZXJhYmxl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
SXRlcmFibGUuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVz
dEl0ZXJhYmxlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJgog
dGVtcGxhdGU8PiB2b2lkIEpTVGVzdEl0ZXJhYmxlRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQ
cm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5n
KHZtLCAiVGVzdEl0ZXJhYmxlIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlRlc3RJdGVyYWJsZSJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFt
ZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdEl0ZXJhYmxlOjpwcm90b3R5cGUo
dm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IuY3BwCmlu
ZGV4IDcxZjYxYzJhNjBmYTk4NjJjMTM4N2NlNmJiZTE2ZjY5NDIzZDM2ZTkuLmNhYmY3N2ExMjRh
NjI2OTI1MGQ5NWRkZjQ0MWY1ODc4ZjEwM2M1ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEpTQnVp
bHRpbkNvbnN0cnVjdG9yLmNwcApAQCAtMTAwLDcgKzEwMCw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3RKU0J1aWx0aW5Db25zdHJ1Y3RvckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1CiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3JET01Db25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcg
PSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0SlNCdWlsdGluQ29uc3RydWN0b3IiX3MpOwor
ICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdEpT
QnVpbHRpbkNvbnN0cnVjdG9yIl9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhp
cywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0SlNCdWlsdGluQ29uc3RydWN0b3I6OnByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNwcApp
bmRleCBiYjY4OGZjYjRhOGY3MjM3ZWU5Nzk2YWQxOTNhOTg2NzQ0YWRkZDUwLi5iYjQ5NTk3ZmU1
MGZhMjUwOGYwMjY4NDk1NzczY2IyMzBjMTM1YWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TGVn
YWN5RmFjdG9yeUZ1bmN0aW9uLmNwcApAQCAtOTksNyArOTksNyBAQCB0ZW1wbGF0ZTw+IEpTVmFs
dWUgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbkRPTUNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDEpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmlu
ZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RMZWdhY3lGYWN0b3J5RnVuY3Rpb24iX3Mp
OworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVz
dExlZ2FjeUZhY3RvcnlGdW5jdGlvbiJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0s
IHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6cHJvdG90
eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSk7CkBAIC0xMjIsNyArMTIyLDcgQEAgdGVtcGxhdGU8PiBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMX0FUVFJJQlVURVMgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9u
TGUKICAgICBhdXRvIHN0cjEgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDEgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpOwotICAgIGF1dG8gc3RyMiA9IGFyZ3VtZW50
MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyAiZGVmYXVsdFN0cmluZyJfcyA6IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQxLnZhbHVlKCkpOworICAg
IGF1dG8gc3RyMiA9IGFyZ3VtZW50MS52YWx1ZSgpLmlzVW5kZWZpbmVkKCkgPyAiZGVmYXVsdFN0
cmluZyJfc3RyIDogY29udmVydDxJRExET01TdHJpbmc+KCpsZXhpY2FsR2xvYmFsT2JqZWN0LCBh
cmd1bWVudDEudmFsdWUoKSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgyKTsKICAgICBhdXRvIHN0cjMgPSBhcmd1bWVudDIudmFsdWUo
KS5pc1VuZGVmaW5lZCgpID8gU3RyaW5nKCkgOiBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGlj
YWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpKTsKQEAgLTE1MSw3ICsxNTEsNyBAQCB0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TGVnYWN5RmFjdG9yeUZ1bmN0aW9uTGVnYWN5RmFjdG9y
eUZ1bmN0aW9uOjpwcm90b3R5cGVGbwogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdExlZ2FjeUZhY3Rv
cnlGdW5jdGlvbkxlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigxKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0g
ICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJBdWRpbyJf
cyk7CisgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJB
dWRpbyJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcp
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdExlZ2FjeUZhY3RvcnlGdW5jdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKaW5kZXggZTJiMWY4
MDQ5NjkwMWU2ZTg3MmEwNmJjZGJlYTAwZDQ5ODk5YTRhMi4uMjY1NjljZDBjMzJjNDFkMTEwOGMw
YWMxOTVmMzYyNjdiMjdjODdkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RMZWdhY3lPdmVycmlk
ZUJ1aWx0SW5zLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rl
c3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVj
CiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVj
dG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9i
YWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgs
IGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIl9zKTsKKyAg
ICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RMZWdh
Y3lPdmVycmlkZUJ1aWx0SW5zIl9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhp
cywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1l
LCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TGVnYWN5T3ZlcnJpZGVCdWlsdEluczo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZS5jcHAKaW5kZXggZDVlYTE0YzEyOTYzNTBjYWY1Y2U4
MTc5YmFiOWIzNGE1NTFkYjMxNS4uYTFiOTFlMDM4NTI4ZTUwMDJiZGQ5YTg5MGQyZTI2MTM5NTc0
ZmNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1hcExpa2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RNYXBMaWtlLmNwcApAQCAtMTEzLDcgKzExMyw3IEBAIHRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3RNYXBMaWtlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVy
ZShKU0M6OlZNJiB2CiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TWFwTGlrZURPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlRlc3RNYXBMaWtlIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0
cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RNYXBMaWtlIl9zdHIpOwogICAgIG1f
b3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TWFwTGlrZTo6
cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TWFwTGlr
ZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKaW5kZXggMjA4MGU3ZTZkZTE2MzkwOTlkZmI4
YTVhM2FkMmUyYmZkNzBlYzlhNy4uODM0MGVhMGU1NTIzMzQ5ZjE1NjcyNDMwM2Y3MjY1Mzc5NzU3
NDFjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE1hcExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zLmNwcApAQCAtMTE3LDcgKzExNyw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zRE9NQ29uc3RydWN0b3I6OnByb3Rv
dHlwCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TWFwTGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9u
c0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFt
ZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RNYXBMaWtlV2l0aE92ZXJyaWRk
ZW5PcGVyYXRpb25zIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIlRlc3RNYXBMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zIl9zdHIpOwog
ICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TWFw
TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3Qp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFt
ZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZp
ZXIuY3BwCmluZGV4IDI0NzAyZWYxNThmZGZjZTgxZGJiNGZjYTE1OGFlNjM2ODdhOGU0ZjEuLjQy
NzIwMDUyOWQzOGQ3MmQ3YzMxZGJhN2JmYTU1Y2U4Y2UzNmFkODIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCkBA
IC05Nyw3ICs5Nyw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJOb0lkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6cHJvdG90CiB0ZW1wbGF0ZTw+IHZvaWQg
SlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlck5vSWRlbnRpZmllciJfcyk7
CisgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0
TmFtZWRBbmRJbmRleGVkU2V0dGVyTm9JZGVudGlmaWVyIl9zdHIpOwogICAgIG1fb3JpZ2luYWxO
YW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qo
dm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0
dGVyTm9JZGVudGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRT
ZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb24u
Y3BwCmluZGV4IDFjZTIzMzYxYjM3OGQ3YjE3NzJhOTk3ZGY3ZWJmYTk5NjA4NTg3NjYuLjUxYjQz
M2Y3MGVhYjVkNGUxMmI1ZTMxZmIwNzg2YjRlODkwMDFkNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0
ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9u
LmNwcApAQCAtOTcsNyArOTcsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRBbmRJ
bmRleGVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6cAogdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5n
ID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93
aW5nRXhjZXB0aW9uIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIlRlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiJf
c3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlclRocm93aW5nRXhjZXB0aW9uOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRBbmRJbmRleGVk
U2V0dGVyV2l0aElkZW50aWZpZXIuY3BwCmluZGV4IDhmMjRiYTE2YjZiM2I1YWMyMDNkMmY2NDE2
NDUwNGUyNjIwZjU1YzkuLjJhZWViNTU1YjMwZjk5ZmIxYTlhZDM2NzgzZThjZDdmOGNlNzUxNWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcApAQCAtMTA2LDcgKzEwNiw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1
ZSBKU1Rlc3ROYW1lZEFuZEluZGV4ZWRTZXR0ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9y
Ojpwcm90CiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElk
ZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJp
bmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRBbmRJbmRl
eGVkU2V0dGVyV2l0aElkZW50aWZpZXIiX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0g
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkQW5kSW5kZXhlZFNldHRlcldpdGhJZGVu
dGlmaWVyIl9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmlu
Zyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5n
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwgSlNUZXN0TmFtZWRBbmRJbmRleGVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlw
ZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlm
aWVyLmNwcAppbmRleCBmNGNlMGU0MWU1ZTNhMDI2YmNjNWIzZTA0NzBlZjE0MzFjODdhNGVjLi5h
MGE4M2ZiNjRkNjI2Yzk5NjkzNmU4NGU5ZDQyOTZjMjI2ZTRlZDk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyTm9J
ZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyLmNwcApAQCAtOTYsNyArOTYsNyBAQCB0
ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWREZWxldGVyTm9JZGVudGlmaWVyRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cgogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRl
ck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0s
IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2
bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBK
U1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZERl
bGV0ZXJOb0lkZW50aWZpZXIiX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250
cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkRGVsZXRlck5vSWRlbnRpZmllciJfc3RyKTsKICAg
ICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVk
RGVsZXRlck5vSWRlbnRpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVy
VGhyb3dpbmdFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uLmNwcAppbmRleCA3OTFj
ZGEyMWVmNTMzZDFkNWM2YzE0MDQ5MDVjMjg4ZmZkOTJmNWFlLi40MzNiZWI5NmFiZWQ2ZDg4YTlk
OWMxMDFjNzk0ZWE0NDY0YjRlNjI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1l
ZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdE5hbWVkRGVsZXRlclRocm93aW5nRXhjZXB0aW9uRE9NQ29uc3RydWN0
b3I6OnByb3RvdHlwZUYKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZERlbGV0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpT
RE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0
cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZERlbGV0
ZXJUaHJvd2luZ0V4Y2VwdGlvbiJfcyk7CisgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWREZWxldGVyVGhyb3dpbmdFeGNlcHRpb24iX3N0
cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rl
c3ROYW1lZERlbGV0ZXJUaHJvd2luZ0V4Y2VwdGlvbjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkRGVsZXRlcldpdGhJZGVudGlmaWVyLmNwcAppbmRl
eCAzYTk4ZDU5ZDM4YjcxYjAxNjVjMWIyYWVmMjNiZWY4MDlhZGVjNzQ2Li5iNDIxM2RlOTQ5NzI5
NjU0NzcwODQzMmY3YTdjZTkzZDhhM2QxOGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RO
YW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWREZWxldGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rv
cjo6cHJvdG90eXBlRm9yUwogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
ZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNE
T01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3Ry
aW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkRGVsZXRl
cldpdGhJZGVudGlmaWVyIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSWRlbnRpZmllciJfc3RyKTsKICAg
ICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVk
RGVsZXRlcldpdGhJZGVudGlmaWVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0
ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwCmluZGV4IDJl
YWMxNmY0OTk2Y2RhZDc2Y2ZjMWNhZjA3YWY4YTI2YjIwN2ZlMTkuLjg3YTM4NGQ1NjM5ZGRlNjlj
NmFiMGI4MzA3ZGFlNTZmMDU0ODA0YmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5h
bWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyLmNwcApAQCAtOTcsNyArOTcsNyBAQCB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWREZWxldGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRgogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkRGVsZXRlcldpdGhJ
bmRleGVkR2V0dGVyRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpT
U3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkRGVs
ZXRlcldpdGhJbmRleGVkR2V0dGVyIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZERlbGV0ZXJXaXRoSW5kZXhlZEdldHRlciJf
c3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdE5hbWVkRGVsZXRlcldpdGhJbmRleGVkR2V0dGVyOjpwcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlckNhbGxXaXRoLmNwcAppbmRleCBjYzEwMjBjM2Rj
Y2ZhMmRiZGU2MGNkNjc5NTQyYzdjZWQ3ZWMzYzA1Li5jNTNjOWYwY2EwZjQzYTAwM2I4MDllNTg0
ZTRjZjNjMTA5YzMzOGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyQ2FsbFdpdGgu
Y3BwCkBAIC05Niw3ICs5Niw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEdldHRl
ckNhbGxXaXRoRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyCiB0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aERPTUNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIlRlc3ROYW1lZEdldHRlckNhbGxXaXRoIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0
cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZEdldHRlckNhbGxXaXRoIl9z
dHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNU
ZXN0TmFtZWRHZXR0ZXJDYWxsV2l0aDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE5hbWVkR2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBhMTlkZjlkZWVkODg5
NjgxMWFkNWYyZDJkMzU5YmZiNzdlY2NiMWZhLi45NGM0ZjcyMjA3ZTAyNTg1ZjQzYjNjMDgxMzU1
NWE2YmY5NTg3ZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRp
Zmllci5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVk
R2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnUKIHRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjpp
bml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmpl
Y3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVt
YmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJp
dmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllciJfcyk7CisgICAgSlNT
dHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRHZXR0
ZXJOb0lkZW50aWZpZXIiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBu
YW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5h
bWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZEdldHRlck5vSWRlbnRpZmllcjo6cHJvdG90eXBlKHZt
LCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmll
ci5jcHAKaW5kZXggOGIzNDhhYzRlMmU3YjZkZTgzNGNkNzUxOTk3ODRjZTcxODY2MzZmYi4uMDQw
ZWEyZDdhN2Y0NDAyNDc3NDVmYWRjM2JjZTJkY2U5NzEyYjMwOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkR2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyLmNwcApAQCAtMTAxLDcgKzEwMSw3IEBA
IHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyRE9NQ29u
c3RydWN0b3I6OnByb3RvdHlwZUZvclN0CiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRHZXR0
ZXJXaXRoSWRlbnRpZmllckRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYg
dm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAg
ICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1l
ZEdldHRlcldpdGhJZGVudGlmaWVyIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZEdldHRlcldpdGhJZGVudGlmaWVyIl9zdHIp
OwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0
TmFtZWRHZXR0ZXJXaXRoSWRlbnRpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyTm9JZGVudGlmaWVyLmNwcAppbmRleCBlYTJlZGVlOWFi
ODQ1YjA1M2FhY2YwOGZlYjU3NzE3MjkxZDE2YmQ5Li43ZjE3MjE5ZTI5ZWJlODFiN2VjYzcyN2Zi
MTcxNzE0YjgwNjg3NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJOb0lkZW50aWZpZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlck5vSWRl
bnRpZmllci5jcHAKQEAgLTk2LDcgKzk2LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5h
bWVkU2V0dGVyTm9JZGVudGlmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnUKIHRl
bXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllckRPTUNvbnN0cnVjdG9y
Ojppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxP
YmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpz
TnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9u
dHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllciJfcyk7CisgICAg
SlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRT
ZXR0ZXJOb0lkZW50aWZpZXIiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlz
LCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlck5vSWRlbnRpZmllcjo6cHJvdG90eXBl
KHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbi5jcHAKaW5kZXggODI5NDJkYjUyOTcxN2MyMDBhNWFjNTJiMjZlMTQyN2EzMzhl
NzFmNC4uZWJhNzgzYjA2MmFiYTMyOGQ4OGU2OGFjZTU4ODMxNWMyZWI0N2M2MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyVGhyb3dpbmdFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlclRocm93aW5nRXhjZXB0aW9uLmNwcApAQCAt
OTYsNyArOTYsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJUaHJvd2lu
Z0V4Y2VwdGlvbkRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGbwogdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb25ET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6
ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJp
bmcodm0sICJUZXN0TmFtZWRTZXR0ZXJUaHJvd2luZ0V4Y2VwdGlvbiJfcyk7CisgICAgSlNTdHJp
bmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJU
aHJvd2luZ0V4Y2VwdGlvbiJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMs
IG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
bmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyVGhyb3dpbmdFeGNlcHRpb246OnByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElk
ZW50aWZpZXIuY3BwCmluZGV4IGM3ZDcyYTdjYTgyNTgwYWFmNjYzYTkxOTY1YTJmOGQyMDEzZGY5
MTQuLjNlNTg2MjYwMjAwMzU3NjQ5NGJiYWE0ODEzMTkwM2I2MDdjYWQ0ZGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhJZGVudGlmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllci5jcHAKQEAgLTEwMyw3ICsx
MDMsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5h
bWVkU2V0dGVyV2l0aElkZW50aWZpZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRp
ZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJU
ZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmllciJfcyk7CisgICAgSlNTdHJpbmcqIG5hbWVTdHJp
bmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoSWRlbnRpZmll
ciJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdE5hbWVkU2V0dGVyV2l0aElkZW50aWZpZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2Jq
ZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXIuY3Bw
CmluZGV4IDdkMzQ1ZmY0NjJiOTJmMWRmMGU2OWY0Mzc0Y2YyMjA0MWUxYWE0NDMuLmY2ODE3ZGY5
NDEzNjgxMDY1ODBjY2JmYzNkYjcxMjhmMmZiZTViMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhJbmRleGVk
R2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlci5jcHAKQEAgLTEwNiw3ICsxMDYsNyBA
QCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckRP
TUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGbwogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0
dGVyV2l0aEluZGV4ZWRHZXR0ZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMo
Vk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0
TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlciJfcyk7CisgICAgSlNTdHJpbmcqIG5hbWVTdHJp
bmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdl
dHRlciJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcp
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXI6OnByb3RvdHlwZSh2bSwgZ2xv
YmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxl
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aElu
ZGV4ZWRHZXR0ZXJBbmRTZXR0ZXIuY3BwCmluZGV4IDQ3OTY2ODAzNjRjMmU2MzI4NTM0ZjA5ZDQ0
MTE2YWE0NWY0NmIxZjUuLmQxYzRjNWZiNTJhOTQ0MWU3YjhmZTA0YmQzODBmNGE1ODdmMzFiODIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhJbmRleGVkR2V0dGVyQW5kU2V0dGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5k
ZXhlZEdldHRlckFuZFNldHRlci5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCB0ZW1wbGF0ZTw+IEpT
VmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlckRPTUNvbnN0
cnVjdG9yOjpwcgogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRH
ZXR0ZXJBbmRTZXR0ZXJET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZt
LCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwg
dm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAg
SlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRT
ZXR0ZXJXaXRoSW5kZXhlZEdldHRlckFuZFNldHRlciJfcyk7CisgICAgSlNTdHJpbmcqIG5hbWVT
dHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0TmFtZWRTZXR0ZXJXaXRoSW5kZXhl
ZEdldHRlckFuZFNldHRlciJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMs
IG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwg
bmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5h
bWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aEluZGV4ZWRHZXR0ZXJBbmRTZXR0
ZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRl
QnVpbHRJbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMuY3BwCmluZGV4IGUwMWM3
MDU0MTZhODMzOGUyNjY5YWIxNzQ1NWMxZWNmNmFhMDQ1NTcuLmU5OTZiZjlmMWRmZmJjYzI0OTU4
MmJlY2Q1MGFjOWY4NjgxZjE4ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0
SW5zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5T3ZlcnJpZGVCdWlsdElucy5jcHAKQEAgLTk2LDcgKzk2
LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJy
aWRlQnVpbHRJbnNET01Db25zdHJ1Y3Rvcjo6cHIKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROYW1l
ZFNldHRlcldpdGhMZWdhY3lPdmVycmlkZUJ1aWx0SW5zRE9NQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiX3MpOwor
ICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5h
bWVkU2V0dGVyV2l0aExlZ2FjeU92ZXJyaWRlQnVpbHRJbnMiX3N0cik7CiAgICAgbV9vcmlnaW5h
bE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROYW1lZFNldHRlcldpdGhM
ZWdhY3lPdmVycmlkZUJ1aWx0SW5zOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3ROYW1lZFNldHRl
cldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2Vh
YmxlUHJvcGVydGllcy5jcHAKaW5kZXggZjg1OWRlZGI2YmQxNDI5ZmFkYWVkM2Q0ZDNkOGQ5ZTE0
ZGIxODdjNy4uZDBhNDI4Nzk4YTExMTRjZWEyMzY4MGU4Y2IzNWM2OTBjMGU5ZWEzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVk
U2V0dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllcy5jcHAKQEAgLTEyMiw3ICsxMjIsNyBAQCB0ZW1wbGF0ZTw+
IEpTVmFsdWUgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVz
RE9NQ29uc3RydWN0bwogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExlZ2Fj
eVVuZm9yZ2VhYmxlUHJvcGVydGllc0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGll
cyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGly
ZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3Bl
cnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
KTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXMiX3MpOworICAgIEpT
U3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllcyJfc3RyKTsKICAgICBtX29yaWdpbmFs
TmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE5hbWVkU2V0dGVyV2l0aExl
Z2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0TmFtZWRT
ZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWls
dElucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJp
ZGVCdWlsdElucy5jcHAKaW5kZXggNmZhZDc1YjczNGU5ZjkxMmY5MzJlOTgzNjkxZjcwMTAzY2Ri
YjZjYS4uOGRhMjk3MTJjMmNhMWVhNzYyNDRhZGUwODY1MmJmNGFiMTJmMDg4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE5hbWVkU2V0
dGVyV2l0aExlZ2FjeVVuZm9yZ2VhYmxlUHJvcGVydGllc0FuZExlZ2FjeU92ZXJyaWRlQnVpbHRJ
bnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVy
cmlkZUJ1aWx0SW5zLmNwcApAQCAtMTIyLDcgKzEyMiw3IEBAIHRlbXBsYXRlPD4gSlNWYWx1ZSBK
U1Rlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lP
dmVyCiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0TmFtZWRTZXR0ZXJXaXRoTGVnYWN5VW5mb3JnZWFi
bGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdEluc0RPTUNvbnN0cnVjdG9yOjppbml0
aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlh
bFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZvcmdlYWJsZVByb3BlcnRp
ZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmlu
ZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3ROYW1lZFNldHRlcldpdGhMZWdhY3lVbmZv
cmdlYWJsZVByb3BlcnRpZXNBbmRMZWdhY3lPdmVycmlkZUJ1aWx0SW5zIl9zdHIpOwogICAgIG1f
b3JpZ2luYWxOYW1lLnNldCh2bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZt
LCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0TmFtZWRTZXR0
ZXJXaXRoTGVnYWN5VW5mb3JnZWFibGVQcm9wZXJ0aWVzQW5kTGVnYWN5T3ZlcnJpZGVCdWlsdElu
czo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Tm9kZS5jcHAKaW5kZXggMmY0ZWE2NWNjODAyMzM0
MzRjMzdiZWI0MTNmY2MxZTQ2M2MxNWJiYy4uMjg1OGMyNmI0MGZmZGE3MzIxYjgxZTIzYWIxMzJl
MWQ0YjMyMTNlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3ROb2RlLmNwcApAQCAtMTQ0LDcgKzE0NCw3IEBAIHRlbXBsYXRlPD4g
SlNWYWx1ZSBKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShK
U0M6OlZNJiB2bSwKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3ROb2RlRE9NQ29uc3RydWN0b3I6Omlu
aXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1i
ZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2
aWFsU3RyaW5nKHZtLCAiVGVzdE5vZGUiX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0g
anNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE5vZGUiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5h
bWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3ROb2RlOjpwcm90b3R5cGUodm0s
IGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggYjQ0NzM5NWVlMzdjNjQyMGEyODQxMWIyNmM3YzUwZGIy
Njc3OWFkYy4uZTYyMzU2MjA2NWRmNDY5MmE2ZmM2Zjg2MzUyNTk0Zjk3OWMzNTkxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9i
ai5jcHAKQEAgLTg3OCw3ICs4NzgsNyBAQCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnkg
Y29udmVydERpY3Rpb25hcnk8VGVzdE9iajo6RGljdGlvbmFyeT4oSlNHbG9iYWxPYgogICAgICAg
ICByZXN1bHQuc3RyaW5nV2l0aERlZmF1bHQgPSBjb252ZXJ0PElETERPTVN0cmluZz4obGV4aWNh
bEdsb2JhbE9iamVjdCwgc3RyaW5nV2l0aERlZmF1bHRWYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgeyB9KTsKICAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0
LnN0cmluZ1dpdGhEZWZhdWx0ID0gImRlZmF1bHRTdHJpbmciX3M7CisgICAgICAgIHJlc3VsdC5z
dHJpbmdXaXRoRGVmYXVsdCA9ICJkZWZhdWx0U3RyaW5nIl9zdHI7CiAgICAgSlNWYWx1ZSBzdHJp
bmdXaXRob3V0RGVmYXVsdFZhbHVlOwogICAgIGlmIChpc051bGxPclVuZGVmaW5lZCkKICAgICAg
ICAgc3RyaW5nV2l0aG91dERlZmF1bHRWYWx1ZSA9IGpzVW5kZWZpbmVkKCk7CkBAIC0yMDc0LDcg
KzIwNzQsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T2JqRE9NQ29uc3RydWN0b3I6OnBy
b3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJiB2bSwgYwogdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dE9iakRPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0
eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDIpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyog
bmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RPYmplY3QiX3MpOworICAg
IEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE9iamVj
dCJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUs
IEpTVGVzdE9iajo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CkBAIC02NTgzLDcgKzY1ODMsNyBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rp
b25fbWV0aG9kV2l0aE9wdGlvbmFsUwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAg
IGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7CiAgICAgRW5zdXJlU3RpbGxBbGl2
ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7Ci0gICAgYXV0byBzdHIg
PSBhcmd1bWVudDAudmFsdWUoKS5pc1VuZGVmaW5lZCgpID8gImZvbyJfcyA6IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOworICAg
IGF1dG8gc3RyID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/ICJmb28iX3N0ciA6
IGNvbnZlcnQ8SURMRE9NU3RyaW5nPigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsIEpTVmFsdWU6OmVuY29k
ZSh0b0pTPElETFVuZGVmaW5lZD4oKmxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIFsm
XSgpIC0+IGRlY2x0eXBlKGF1dG8pIHsgcmV0dXJuIGltcGwubWV0aG9kV2l0aE9wdGlvbmFsU3Ry
aW5nQW5kRGVmYXVsdFZhbHVlKFdURk1vdmUoc3RyKSk7IH0pKSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3BlcmF0aW9uQ29u
ZGl0aW9uYWwuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsLmNwcAppbmRleCAyZTA3MGRjOTIzNTA3YTRlNzk5MWJl
YTJhNjhmNTY0ZWQyYzA5Y2FlLi5mMmQ5ODljNDljMDdiNWFjNWRiYmI1ODJiYTU5ZWQ3N2Q3ZDBk
ZGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9uYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPcGVyYXRpb25Db25kaXRpb25hbC5jcHAKQEAgLTEx
Miw3ICsxMTIsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0T3BlcmF0aW9uQ29uZGl0aW9u
YWxET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dQogdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAi
VGVzdE9wZXJhdGlvbkNvbmRpdGlvbmFsIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RPcGVyYXRpb25Db25kaXRpb25hbCJfc3RyKTsK
ICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdE9w
ZXJhdGlvbkNvbmRpdGlvbmFsOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCA0OTIxMDQ2NTkzMjNlMTc3MzBl
Nzg4MTYxZWJmNTdkNjBiOTVjN2YyLi5jNmY5MWJmODdmNTk2NGE0NTczNmFlZjZkM2Y2MGIyYTMw
NmNjN2E1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3Bw
CkBAIC0yMjksNyArMjI5LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnNET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWMKIHRlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzRE9NQ29uc3RydWN0b3I6OmluaXRpYWxp
emVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMiX3MpOworICAgIEpTU3RyaW5nKiBu
YW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5n
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpwcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0
aFNlcXVlbmNlLmNwcAppbmRleCBkN2YxMzc0NjdkMjVhMDlmMjYyZjcxYjVlMDNjN2RkYTI4ODM2
OWRmLi40ODBjNzAxY2Y3YWJmMTUwNTMyNDUwNzc0ZjRiZTcwZGFhOTliYjEyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1dpdGhTZXF1ZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVu
Y2UuY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2VET01Db25zdHJ1Y3Rvcjo6cHJvdG8KIHRlbXBs
YXRlPD4gdm9pZCBKU1Rlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlRE9NQ29u
c3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3Qm
IGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxl
bmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5n
ID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRo
U2VxdWVuY2UiX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3Ry
aW5nKHZtLCAiVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNXaXRoU2VxdWVuY2UiX3N0cik7CiAg
ICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJl
Y3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwog
ICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzV2l0aFNlcXVlbmNlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVj
dCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RQ
bHVnaW5JbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKaW5kZXggZDUzN2FhYjhiNGU0ZGRmZDBiMWQ2
YTE4YzgwNWZhMGI3MWMwOTU0MC4uMTU2ZTJlMDVmNDE1NmNkZTVhZjlhNGM3ZmMyZWNlYmU5ODcx
OTVjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFBsdWdpbkludGVyZmFjZS5jcHAKQEAgLTk1LDcgKzk1LDcg
QEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFBsdWdpbkludGVyZmFjZURPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlMKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RQbHVnaW5J
bnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJp
bmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0UGx1Z2luSW50ZXJm
YWNlIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIlRlc3RQbHVnaW5JbnRlcmZhY2UiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZt
LCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RQbHVnaW5JbnRlcmZhY2U6OnByb3RvdHlwZSh2
bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFByb21pc2VSZWplY3Rpb25FdmVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNwcApp
bmRleCAwN2Q5YzcxZmI3NTM3NWE1YzUxNmMzMWJmYTc5MjAwODExM2ZlNzQ1Li5iMjliNzI3ZDZi
YTRmYWZkZWQxYzE3YTAwNTgzMTk0OWViNTExMzk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UHJv
bWlzZVJlamVjdGlvbkV2ZW50LmNwcApAQCAtMjA1LDcgKzIwNSw3IEBAIHRlbXBsYXRlPD4gSlNW
YWx1ZSBKU1Rlc3RQcm9taXNlUmVqZWN0aW9uRXZlbnRET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0CiB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50RE9N
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMiksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3Ry
aW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFByb21pc2VSZWplY3Rpb25FdmVudCJf
cyk7CisgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJU
ZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Il9zdHIpOwogICAgIG1fb3JpZ2luYWxOYW1lLnNldCh2
bSwgdGhpcywgbmFtZVN0cmluZyk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBuYW1lU3RyaW5nLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgSlNUZXN0UHJvbWlzZVJlamVjdGlvbkV2ZW50Ojpwcm90
b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seU1hcExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKaW5kZXgg
NGY5NjMwNTk1ZmQxN2UyMmFmZDQwMWU1YTA4NWIzYzdmZjkxMWM4Yy4uOTAxZjg4MDIzYWNiNWM0
ZDZlMjZiNjdkODc3MjRmZWNhYTdkZWVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlrZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlYWRPbmx5TWFwTGlr
ZS5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UmVhZE9u
bHlNYXBMaWtlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKUwogdGVtcGxh
dGU8PiB2b2lkIEpTVGVzdFJlYWRPbmx5TWFwTGlrZURPTUNvbnN0cnVjdG9yOjppbml0aWFsaXpl
UHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmlu
Zyh2bSwgIlRlc3RSZWFkT25seU1hcExpa2UiX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5n
ID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFJlYWRPbmx5TWFwTGlrZSJfc3RyKTsKICAg
ICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAg
ICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFJlYWRP
bmx5TWFwTGlrZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVhZE9ubHlTZXRMaWtlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNl
dExpa2UuY3BwCmluZGV4IDM0ZmU4NTdkMjNlOWE2YTVhZDhmZTIxY2UwZjFkYWY5ZDU5ZmJmODku
LjY5ZjEzODk3ZmYxMTRlZTJhZTRlZDU3ODkyZmQwNGI2YWIyZWFlYTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RSZWFkT25seVNldExp
a2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RSZWFkT25seVNldExpa2UuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdGVtcGxhdGU8PiBKU1Zh
bHVlIEpTVGVzdFJlYWRPbmx5U2V0TGlrZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlMKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RSZWFkT25seVNldExpa2VET01Db25zdHJ1
Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xv
YmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3Ro
LCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBq
c05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0UmVhZE9ubHlTZXRMaWtlIl9zKTsKKyAgICBKU1N0
cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RSZWFkT25seVNl
dExpa2UiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5n
KTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcs
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBKU1Rlc3RSZWFkT25seVNldExpa2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFJlcG9y
dEV4dHJhTWVtb3J5Q29zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAppbmRleCAwN2Y1ZjkxMTEwZTk2
MjUzMWY1YWFiM2UxZWY5NzI2Nzg5MzBlMDk5Li44YzkxN2RhZTFhNjI5ZGQzZjRiMjc4N2NhNWMz
N2QzNTBkZDQzOTI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0UmVwb3J0RXh0cmFNZW1vcnlDb3N0
LmNwcApAQCAtOTQsNyArOTQsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0UmVwb3J0RXh0
cmFNZW1vcnlDb3N0RE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdAogdGVtcGxhdGU8
PiB2b2lkIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdERPTUNvbnN0cnVjdG9yOjppbml0aWFs
aXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDAp
LCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0
cmluZyh2bSwgIlRlc3RSZXBvcnRFeHRyYU1lbW9yeUNvc3QiX3MpOworICAgIEpTU3RyaW5nKiBu
YW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFJlcG9ydEV4dHJhTWVtb3J5
Q29zdCJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcp
OwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIEpTVGVzdFJlcG9ydEV4dHJhTWVtb3J5Q29zdDo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmpl
Y3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwCmluZGV4IGJjYTBiZTU1NWFlNmVhMmU5NDk5NjU4ZjU1MjcyNjNmM2U5ZmQ1YTIuLjMwOGVj
NTQ2NDk0NDhmNmVlNGU4YzJhNDE4MzZhZTYxNGIxN2FmMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0xMjAsNyAr
MTIwLDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUlu
dGVyZmFjZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGUKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVBy
b3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmco
dm0sICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIl9zKTsKKyAgICBKU1N0cmlu
ZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2UiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlz
LCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OnBy
b3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2UuY3BwCmluZGV4IGU3ZDQ3NmJjYzM0M2I1
ODI3YTQ3NGIxOTk5YmQwMzU3YTcyM2UyMmUuLmMwYzIwZTZjYzIwNjkxNzE5ZDczZjNiY2M4NmQ1
ZTRiMDc5MzY4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXRMaWtlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB0ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNUZXN0U2V0TGlrZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JT
dHJ1Y3R1cmUoSlNDOjpWTSYgdgogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNldExpa2VET01Db25z
dHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYg
Z2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcg
PSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U2V0TGlrZSJfcyk7CisgICAgSlNTdHJpbmcq
IG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U2V0TGlrZSJfc3RyKTsK
ICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFNl
dExpa2U6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJh
dGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnMuY3BwCmluZGV4IDQwMjQzOWFiMGNkOTQ3
YWUyYjcyMDk3NDkwNzgwZmYxM2I4YTk3MTguLjA3MjRlOWQ3YmUwNDY1ODUwNDIwYmI0ZjE0NjE3
NmQ5NWI1YWJkM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RTZXRMaWtlV2l0aE92ZXJyaWRkZW5PcGVyYXRpb25zLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucy5jcHAKQEAgLTExNiw3ICsxMTYsNyBAQCB0ZW1wbGF0ZTw+IEpT
VmFsdWUgSlNUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9uc0RPTUNvbnN0cnVjdG9y
Ojpwcm90b3R5cAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9w
ZXJhdGlvbnNET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
TUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJp
bmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U2V0TGlrZVdpdGhP
dmVycmlkZGVuT3BlcmF0aW9ucyJfcyk7CisgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05v
bnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U2V0TGlrZVdpdGhPdmVycmlkZGVuT3BlcmF0aW9ucyJf
c3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdFNldExpa2VXaXRoT3ZlcnJpZGRlbk9wZXJhdGlvbnM6OnByb3RvdHlwZSh2bSwgZ2xvYmFs
T2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RTdHJpbmdpZmllci5jcHAKaW5kZXggZWEyOTEzNGYzMmE1ZTJlZDQyYmVmMWUy
M2VmMjdlZjc4ZjlmNTk4NC4uMzljM2VhNWRlZTRmNzY2M2VkOTllNzVhOGM3OTg4OWNjZDVmODFh
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXIuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUZv
clN0cnVjdHVyZShKU0M6OlYKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllckRPTUNv
bnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0
JiBnbG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmlu
ZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RTdHJpbmdpZmllciJfcyk7CisgICAgSlNT
dHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U3RyaW5naWZp
ZXIiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsK
ICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBl
LCBKU1Rlc3RTdHJpbmdpZmllcjo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJB
bm9ueW1vdXNPcGVyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uLmNwcAppbmRleCAwYmM2
YzgyOWI2NzVhZmY3OTMxZTBmMmVmYWRlNDViMWNhMmVlODRhLi5kODc0NzY0ZjAwOWNjOWIzNjQz
ZTYzZWVmZWRkNmI5MGU4OTBmNjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllckFub255bW91c09wZXJhdGlvbi5jcHAKQEAgLTEwMCw3ICsxMDAsNyBAQCB0ZW1wbGF0
ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJBbm9ueW1vdXNPcGVyYXRpb25ET01Db25zdHJ1
Y3Rvcjo6cHJvdG90eXBlRgogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmluZ2lmaWVyQW5vbnlt
b3VzT3BlcmF0aW9uRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpT
U3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lm
aWVyQW5vbnltb3VzT3BlcmF0aW9uIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpz
Tm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RTdHJpbmdpZmllckFub255bW91c09wZXJhdGlvbiJf
c3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAg
IHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQ
cm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpT
VGVzdFN0cmluZ2lmaWVyQW5vbnltb3VzT3BlcmF0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck5hbWVkT3BlcmF0aW9uLmNwcAppbmRl
eCA3YzFlMjY5YjkzZmQyNWZjODE1Y2YzMGVmMDI3ZWRjNDZkZDM4Njc4Li42ZDQ1YTRiMTI5Y2Yz
MmZkODQwOWI2OGNjMmU5NTljMDNiOWE1M2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJOYW1lZE9wZXJhdGlvbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0
cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24uY3BwCkBAIC0xMDEsNyArMTAxLDcgQEAgdGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb25ET01Db25zdHJ1Y3Rvcjo6
cHJvdG90eXBlRm9yU3QKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllck5hbWVkT3Bl
cmF0aW9uRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01H
bG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3Bl
cnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5n
KiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lmaWVyTmFt
ZWRPcGVyYXRpb24iX3MpOworICAgIEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFs
U3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lmaWVyTmFtZWRPcGVyYXRpb24iX3N0cik7CiAgICAgbV9v
cmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmll
ck5hbWVkT3BlcmF0aW9uOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCksIEpTQzo6UHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbkltcGxlbWVudGVkQXMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKaW5kZXgg
NTUzMzY3OWM4NjYyNjEwZjI4MWQyZmViMTBlNTUxZGYxM2FmMzBjYi4uMWRkMDY0OWJhZTNjMDYx
MzY3ZDk4YTQzNGIyMjA5MjM5NTk5NGVkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBcy5jcHAKQEAgLTEwMSw3ICsxMDEs
NyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25JbXBsZW1l
bnRlZEFzRE9NQ29uc3RydWN0b3I6OnByb3RvdAogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFN0cmlu
Z2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50ZWRBc0RPTUNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJv
cGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCiB7CiAgICAg
cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2
bSwgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbkltcGxlbWVudGVkQXMiX3MpOworICAgIEpTU3Ry
aW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFN0cmluZ2lmaWVy
T3BlcmF0aW9uSW1wbGVtZW50ZWRBcyJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0s
IHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uSW1wbGVtZW50
ZWRBczo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJPcGVyYXRpb25OYW1lZFRv
U3RyaW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rl
c3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCmluZGV4IGMwNjVkNzJhN2Zi
MTBiOWY2NmUwYjc5ZTg3NDYxZWJjYzY4YTk1NjcuLjRkZjU5YmUxNjBiNDgyMGMxZmI1OWM5OWZi
YzYzYzcxZjc0ZWNiNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
Zmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmcuY3BwCkBAIC0xMDAsNyArMTAwLDcgQEAgdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTVGVzdFN0cmluZ2lmaWVyT3BlcmF0aW9uTmFtZWRUb1N0cmluZ0RPTUNv
bnN0cnVjdG9yOjpwcm90b3QKIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllck9wZXJh
dGlvbk5hbWVkVG9TdHJpbmdET01Db25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0m
IHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIHB1dERpcmVjdCh2
bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7Ci0g
ICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U3Ry
aW5naWZpZXJPcGVyYXRpb25OYW1lZFRvU3RyaW5nIl9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0
cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5h
bWVkVG9TdHJpbmciX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1l
U3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVT
dHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllck9wZXJhdGlvbk5hbWVkVG9TdHJpbmc6OnByb3Rv
dHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVh
ZE9ubHlBdHRyaWJ1dGUuY3BwCmluZGV4IDliZGM0ZTMwMjk3MGE2MjI5NzBjZTVmZGM2MGMwMjIw
MDJjYTAzMGYuLjdmOTBlNjY1YjdlMGJmY2I5ZWI2ZGRmMWViNDQ2NGE4ZTc5ZjljNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJp
bmdpZmllclJlYWRPbmx5QXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZS5jcHAK
QEAgLTEwMiw3ICsxMDIsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNUZXN0U3RyaW5naWZpZXJS
ZWFkT25seUF0dHJpYnV0ZURPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGbwogdGVtcGxhdGU8PiB2
b2lkIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGVET01Db25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJUZXN0U3RyaW5naWZpZXJSZWFkT25seUF0dHJpYnV0ZSJfcyk7CisgICAg
SlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0U3RyaW5n
aWZpZXJSZWFkT25seUF0dHJpYnV0ZSJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0s
IHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+
bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFN0cmluZ2lmaWVyUmVhZE9ubHlBdHRyaWJ1dGU6
OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpTQzo6UHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RTdHJpbmdp
ZmllclJlYWRXcml0ZUF0dHJpYnV0ZS5jcHAKaW5kZXggZWZiYzRlNjM1YWY4ZDk2MjJjNTBjM2Iy
MDdjOWU5YmU1YWVhNDBhYS4uMWZiMmRiMDBkYmZkOTQ3NDg4NDM5NzBjZDhjZDk3YzkzNzI0MTU4
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pT
VGVzdFN0cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRy
aWJ1dGUuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFN0
cmluZ2lmaWVyUmVhZFdyaXRlQXR0cmlidXRlRE9NQ29uc3RydWN0b3I6OnByb3RvdHlwZUYKIHRl
bXBsYXRlPD4gdm9pZCBKU1Rlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0ZURPTUNvbnN0
cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCiB7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5n
dGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKLSAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9
IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIlRlc3RTdHJpbmdpZmllclJlYWRXcml0ZUF0dHJpYnV0
ZSJfcyk7CisgICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0s
ICJUZXN0U3RyaW5naWZpZXJSZWFkV3JpdGVBdHRyaWJ1dGUiX3N0cik7CiAgICAgbV9vcmlnaW5h
bE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3RyaW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnBy
b3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJpbmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJl
YWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBKU1Rlc3RTdHJpbmdpZmllclJlYWRX
cml0ZUF0dHJpYnV0ZTo6cHJvdG90eXBlKHZtLCBnbG9iYWxPYmplY3QpLCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VGFnZ2VkV3JhcHBlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VGFnZ2VkV3Jh
cHBlci5jcHAKaW5kZXggZGRiOTY1ZGQ2ZmU2NTQ5MTNkOTJkZjlmODIzYzFhM2JjY2ZiOTdlMi4u
NjhkMTJmOGU3NDE3ZDAzMTA3NmZmYmFmNjY2ZDAxYTY3ZWIwMWRhNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFRhZ2dlZFdyYXBwZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RU
YWdnZWRXcmFwcGVyLmNwcApAQCAtOTQsNyArOTQsNyBAQCB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0VGFnZ2VkV3JhcHBlckRPTUNvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1Y3R1cmUoSlND
OgogdGVtcGxhdGU8PiB2b2lkIEpTVGVzdFRhZ2dlZFdyYXBwZXJET01Db25zdHJ1Y3Rvcjo6aW5p
dGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
KQogewogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJl
cigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7Ci0gICAgSlNTdHJpbmcqIG5hbWVTdHJpbmcgPSBqc05vbnRyaXZp
YWxTdHJpbmcodm0sICJUZXN0VGFnZ2VkV3JhcHBlciJfcyk7CisgICAgSlNTdHJpbmcqIG5hbWVT
dHJpbmcgPSBqc05vbnRyaXZpYWxTdHJpbmcodm0sICJUZXN0VGFnZ2VkV3JhcHBlciJfc3RyKTsK
ICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5hbWVTdHJpbmcpOwogICAgIHB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFtZVN0cmluZywgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIEpTVGVzdFRh
Z2dlZFdyYXBwZXI6OnByb3RvdHlwZSh2bSwgZ2xvYmFsT2JqZWN0KSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAKaW5k
ZXggYzJiY2VlYTEyZjY3YWY1NjU3ZGU1ZTllOGVhYWI3YWQ1Y2NjMmFjMC4uMmRlMDk2NjdkMjZh
M2IzOWM2MWY5MmM2YjE4MjFmMzMzOWUxYThhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVkZWZzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlwZWRlZnMuY3BwCkBAIC0x
OTgsNyArMTk4LDcgQEAgdGVtcGxhdGU8PiBKU1ZhbHVlIEpTVGVzdFR5cGVkZWZzRE9NQ29uc3Ry
dWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZNJgogdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdFR5cGVkZWZzRE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwg
SlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZt
LnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMyksIEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpT
U3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiVGVzdFR5cGVkZWZz
Il9zKTsKKyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwg
IlRlc3RUeXBlZGVmcyJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5h
bWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFt
ZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIEpTVGVzdFR5cGVkZWZzOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtlckds
b2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCAzZDk0N2EzMTlhNTBiMjQwYzFlNmRlMWU4NzM1
ZmEzZmZkMjljMTEyLi5hNzBjMWRkZTY2OWRiZWMwMzI5ZTkyMDgyN2NjZmFhYmY4ODNiNGNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNXb3Jr
ZXJHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC0xMDksNyArMTA5LDcgQEAgdGVtcGxh
dGU8PiBKU1ZhbHVlIEpTV29ya2VyR2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90eXBl
Rm9yU3RydWN0dXJlKEpTQzoKIHRlbXBsYXRlPD4gdm9pZCBKU1dvcmtlckdsb2JhbFNjb3BlRE9N
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1lU3Ry
aW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiV29ya2VyR2xvYmFsU2NvcGUiX3MpOworICAg
IEpTU3RyaW5nKiBuYW1lU3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiV29ya2VyR2xv
YmFsU2NvcGUiX3N0cik7CiAgICAgbV9vcmlnaW5hbE5hbWUuc2V0KHZtLCB0aGlzLCBuYW1lU3Ry
aW5nKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIG5hbWVTdHJp
bmcsIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCBKU1dvcmtlckdsb2JhbFNjb3BlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9iamVjdCks
IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dvcmtsZXRH
bG9iYWxTY29wZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNXb3JrbGV0R2xvYmFsU2NvcGUuY3BwCmluZGV4IGVkZjFmMTZmYzFhMDA3N2MwMzc5NDFhMWJm
ZDIyZGJjZTI0NzUzMzQuLjllZjc0YjkwYWZlMTg1MmMyZWI0ZmI4YjI4YjZlYjJhZGQ4NzJjZTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1dv
cmtsZXRHbG9iYWxTY29wZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTV29ya2xldEdsb2JhbFNjb3BlLmNwcApAQCAtNzgsNyArNzgsNyBAQCB0ZW1w
bGF0ZTw+IEpTVmFsdWUgSlNXb3JrbGV0R2xvYmFsU2NvcGVET01Db25zdHJ1Y3Rvcjo6cHJvdG90
eXBlRm9yU3RydWN0dXJlKEpTQwogdGVtcGxhdGU8PiB2b2lkIEpTV29ya2xldEdsb2JhbFNjb3Bl
RE9NQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKFZNJiB2bSwgSlNET01HbG9iYWxP
YmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmxlbmd0aCwganNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5
IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwotICAgIEpTU3RyaW5nKiBuYW1l
U3RyaW5nID0ganNOb250cml2aWFsU3RyaW5nKHZtLCAiV29ya2xldEdsb2JhbFNjb3BlIl9zKTsK
KyAgICBKU1N0cmluZyogbmFtZVN0cmluZyA9IGpzTm9udHJpdmlhbFN0cmluZyh2bSwgIldvcmts
ZXRHbG9iYWxTY29wZSJfc3RyKTsKICAgICBtX29yaWdpbmFsTmFtZS5zZXQodm0sIHRoaXMsIG5h
bWVTdHJpbmcpOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bmFtZSwgbmFt
ZVN0cmluZywgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsIEpTV29ya2xldEdsb2JhbFNjb3BlOjpwcm90b3R5cGUodm0sIGdsb2JhbE9i
amVjdCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0gfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250RmFjZVJ1bGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAKaW5kZXggZGU0NTlkZDg5NjBjNzg2
NTQ0NjcwMzkzN2E4ZTg2MWMwZmRmNjY5Yi4uNWU4ZjM3MmEwYjEzYjU0ZGZhNjEwOTMxMjk3Njg3
ODBhYWNhZmRkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRGYWNlUnVsZS5jcHAKQEAgLTUy
LDcgKzUyLDcgQEAgU3RyaW5nIENTU0ZvbnRGYWNlUnVsZTo6Y3NzVGV4dCgpIGNvbnN0CiB7CiAg
ICAgU3RyaW5nIGRlY2xhcmF0aW9ucyA9IG1fZm9udEZhY2VSdWxlLT5wcm9wZXJ0aWVzKCkuYXNU
ZXh0KCk7CiAgICAgaWYgKGRlY2xhcmF0aW9ucy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAi
QGZvbnQtZmFjZSB7IH0iX3M7CisgICAgICAgIHJldHVybiAiQGZvbnQtZmFjZSB7IH0iX3N0cjsK
ICAgICByZXR1cm4gbWFrZVN0cmluZygiQGZvbnQtZmFjZSB7ICIsIGRlY2xhcmF0aW9ucywgIiB9
Iik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGb250UGFsZXR0ZVZh
bHVlc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVs
ZS5jcHAKaW5kZXggZTRjMmEwZDlhNjIyNzU4ODU2MWMzZWE4M2Q2Y2VmZGEyMDc1YjFhMy4uNDlh
MzRhZTk5ZGJmMGJiZTNkMzUxOWRmYTEyMzNiY2M4YmIwN2ZhZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZS5jcHAKQEAgLTYzLDkgKzYzLDkgQEAg
U3RyaW5nIENTU0ZvbnRQYWxldHRlVmFsdWVzUnVsZTo6YmFzZVBhbGV0dGUoKSBjb25zdAogCiAg
ICAgc3dpdGNoIChtX2ZvbnRQYWxldHRlVmFsdWVzUnVsZS0+YmFzZVBhbGV0dGUoKS0+dHlwZSkg
ewogICAgIGNhc2UgRm9udFBhbGV0dGVJbmRleDo6VHlwZTo6TGlnaHQ6Ci0gICAgICAgIHJldHVy
biAibGlnaHQiX3M7CisgICAgICAgIHJldHVybiAibGlnaHQiX3N0cjsKICAgICBjYXNlIEZvbnRQ
YWxldHRlSW5kZXg6OlR5cGU6OkRhcms6Ci0gICAgICAgIHJldHVybiAiZGFyayJfczsKKyAgICAg
ICAgcmV0dXJuICJkYXJrIl9zdHI7CiAgICAgY2FzZSBGb250UGFsZXR0ZUluZGV4OjpUeXBlOjpJ
bnRlZ2VyOgogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhtX2ZvbnRQYWxldHRlVmFsdWVzUnVs
ZS0+YmFzZVBhbGV0dGUoKS0+aW50ZWdlcik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL0NTU0tleWZyYW1lc1J1bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0tl
eWZyYW1lc1J1bGUuY3BwCmluZGV4IGExNmU2Y2NkYjc1ZWZmOGNhZTY5NzM4ODVlM2FhMTRhYjg1
NTU0NzAuLjBiZDE3NDBiYTVjYzNjNjM2NmY4MWRmOGE2ODQ2Y2JjNDg5NTQzMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NLZXlmcmFtZXNSdWxlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTS2V5ZnJhbWVzUnVsZS5jcHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lk
IENTU0tleWZyYW1lc1J1bGU6Omluc2VydFJ1bGUoY29uc3QgU3RyaW5nJiBydWxlVGV4dCkKIHsK
ICAgICBpZiAoQ1NTU3R5bGVTaGVldCogcGFyZW50ID0gcGFyZW50U3R5bGVTaGVldCgpKSB7CiAg
ICAgICAgIGlmIChEb2N1bWVudCogb3duZXJEb2N1bWVudCA9IHBhcmVudC0+b3duZXJEb2N1bWVu
dCgpKQotICAgICAgICAgICAgb3duZXJEb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgIkNTU0tleWZyYW1lc1J1bGUgJ2lu
c2VydFJ1bGUnIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQuICBVc2UgJ2FwcGVuZFJ1bGUnIGluc3Rl
YWQuIl9zKTsKKyAgICAgICAgICAgIG93bmVyRG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsICJDU1NLZXlmcmFtZXNSdWxl
ICdpbnNlcnRSdWxlJyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLiAgVXNlICdhcHBlbmRSdWxlJyBp
bnN0ZWFkLiJfc3RyKTsKICAgICB9CiAgICAgYXBwZW5kUnVsZShydWxlVGV4dCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhZ2VSdWxlLmNwcAppbmRleCBkMWY2ZDBhNTE1YTVkYjlkYjc1MGNiZjFlMmY3
OWQ0YTlmMGYyZjU0Li5kOTRjZmE4YTViMzE5ZGVlNjYxMmU3ODIxY2M5MjliYTJlYzdhOTZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFnZVJ1bGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYWdlUnVsZS5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgU3RyaW5nIENT
U1BhZ2VSdWxlOjpzZWxlY3RvclRleHQoKSBjb25zdAogICAgICAgICBpZiAoIXBhZ2VTcGVjaWZp
Y2F0aW9uLmlzRW1wdHkoKSAmJiBwYWdlU3BlY2lmaWNhdGlvbiAhPSBzdGFyQXRvbSgpKQogICAg
ICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoIkBwYWdlICIsIHBhZ2VTcGVjaWZpY2F0aW9uKTsK
ICAgICB9Ci0gICAgcmV0dXJuICJAcGFnZSJfczsKKyAgICByZXR1cm4gIkBwYWdlIl9zdHI7CiB9
CiAKIHZvaWQgQ1NTUGFnZVJ1bGU6OnNldFNlbGVjdG9yVGV4dChjb25zdCBTdHJpbmcmIHNlbGVj
dG9yVGV4dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNoZWV0LmNwcAppbmRleCBiNGJmOWYzNGE4
OTU3N2E4YzA3OTBjZTg4ZmE4YTQ0YjljODA2YjlmLi4xYzk3ZWVhYjY0NjIxZTE0NTg4MmUxYWVl
ZDg4MzVkZDQyMDBlMzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVT
aGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2hlZXQuY3BwCkBAIC0z
MTYsNyArMzE2LDcgQEAgRXhjZXB0aW9uT3I8UmVmPENTU1J1bGVMaXN0Pj4gQ1NTU3R5bGVTaGVl
dDo6Y3NzUnVsZXNGb3JCaW5kaW5ncygpCiB7CiAgICAgYXV0byBjc3NSdWxlcyA9IHRoaXMtPmNz
c1J1bGVzKCk7CiAgICAgaWYgKCFjc3NSdWxlcykKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IFNlY3VyaXR5RXJyb3IsICJOb3QgYWxsb3dlZCB0byBhY2Nlc3MgY3Jvc3Mtb3JpZ2luIHN0eWxl
c2hlZXQiX3MgfTsKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJO
b3QgYWxsb3dlZCB0byBhY2Nlc3MgY3Jvc3Mtb3JpZ2luIHN0eWxlc2hlZXQiX3N0ciB9OwogICAg
IHJldHVybiBjc3NSdWxlcy5yZWxlYXNlTm9uTnVsbCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0
eWxlU2hlZXQuaAppbmRleCBiNGYzZDg3OGQ3NWFhZTdjMTNjNmM1YjM3ZjExY2EzNzk5ZjYxZDMw
Li5mYWMwNjYxMzc2ODc4Zjk5YzBhOWEyODVhZWZkYjI4ZTg1ZTczNTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNoZWV0LmgKQEAgLTEzOCw3ICsxMzgsNyBAQCBwcml2YXRlOgogICAgIENTU1N0
eWxlU2hlZXQoUmVmPFN0eWxlU2hlZXRDb250ZW50cz4mJiwgTm9kZSYgb3duZXJOb2RlLCBjb25z
dCBUZXh0UG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGJvb2wgaXNJbmxpbmVTdHlsZXNoZWV0LCBj
b25zdCBzdGQ6Om9wdGlvbmFsPGJvb2w+Jik7CiAKICAgICBib29sIGlzQ1NTU3R5bGVTaGVldCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLSAgICBTdHJpbmcgdHlwZSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuICJ0ZXh0L2NzcyJfczsgfQorICAgIFN0cmluZyB0eXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gInRleHQvY3NzIl9zdHI7IH0KIAogICAgIFJlZjxTdHlsZVNoZWV0Q29udGVu
dHM+IG1fY29udGVudHM7CiAgICAgYm9vbCBtX2lzSW5saW5lU3R5bGVzaGVldCB7IGZhbHNlIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTVmFsdWVMaXN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCmluZGV4IDJiMjQzM2Y3MjYxMjAzYjY2YTk1
ZGI3NWIyNDk1MGM3ZTBmZDhhZjEuLjAzZTFjZDQzN2Y4ZTQ1MzRmNzFhY2I1YzhiNTg4YzM3MDJi
Y2VhYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUxpc3QuY3BwCkBAIC04OCw3ICs4OCw3IEBA
IFN0cmluZyBDU1NWYWx1ZUxpc3Q6OmN1c3RvbUNTU1RleHQoKSBjb25zdAogICAgIFN0cmluZ0J1
aWxkZXIgcmVzdWx0OwogICAgIGF1dG8gc2VwYXJhdG9yID0gc2VwYXJhdG9yQ1NTVGV4dCgpOwog
ICAgIGZvciAoYXV0byYgdmFsdWUgOiBtX3ZhbHVlcykKLSAgICAgICAgcmVzdWx0LmFwcGVuZChy
ZXN1bHQuaXNFbXB0eSgpID8gIiJfcyA6IHNlcGFyYXRvciwgdmFsdWUuZ2V0KCkuY3NzVGV4dCgp
KTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZChyZXN1bHQuaXNFbXB0eSgpID8gZW1wdHlTdHJpbmco
KSA6IHNlcGFyYXRvciwgdmFsdWUuZ2V0KCkuY3NzVGV4dCgpKTsKICAgICByZXR1cm4gcmVzdWx0
LnRvU3RyaW5nKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvRm9udEZhY2UuY3BwCmluZGV4IGVmZmQ2MDdjMzQ2
ZjliY2ZiYzljMjg4OWJmODMxNjk0ZGEzNDAzMDUuLmMyMDM0OWIwNTQ1NDEyNDA3ODczYzNlZjFj
NzM4ODI0OTk4ZDc2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9Gb250RmFjZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0ZvbnRGYWNlLmNwcApAQCAtMTAyLDMyICsxMDIs
MzIgQEAgUmVmPEZvbnRGYWNlPiBGb250RmFjZTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgZmEKICAgICB9CiAKICAgICAvLyBUaGVzZSB0ZXJu
YXJpZXMgbWF0Y2ggdGhlIGRlZmF1bHQgc3RyaW5ncyBpbnNpZGUgdGhlIEZvbnRGYWNlRGVzY3Jp
cHRvcnMgZGljdGlvbmFyeSBpbnNpZGUgRm9udEZhY2UuaWRsLgotICAgIGF1dG8gc2V0U3R5bGVS
ZXN1bHQgPSByZXN1bHQtPnNldFN0eWxlKGNvbnRleHQsIGRlc2NyaXB0b3JzLnN0eWxlLmlzRW1w
dHkoKSA/ICJub3JtYWwiX3MgOiBkZXNjcmlwdG9ycy5zdHlsZSk7CisgICAgYXV0byBzZXRTdHls
ZVJlc3VsdCA9IHJlc3VsdC0+c2V0U3R5bGUoY29udGV4dCwgZGVzY3JpcHRvcnMuc3R5bGUuaXNF
bXB0eSgpID8gIm5vcm1hbCJfc3RyIDogZGVzY3JpcHRvcnMuc3R5bGUpOwogICAgIGlmIChzZXRT
dHlsZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkgewogICAgICAgICByZXN1bHQtPnNldEVycm9yU3Rh
dGUoKTsKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9Ci0gICAgYXV0byBzZXRXZWlnaHRS
ZXN1bHQgPSByZXN1bHQtPnNldFdlaWdodChjb250ZXh0LCBkZXNjcmlwdG9ycy53ZWlnaHQuaXNF
bXB0eSgpID8gIm5vcm1hbCJfcyA6IGRlc2NyaXB0b3JzLndlaWdodCk7CisgICAgYXV0byBzZXRX
ZWlnaHRSZXN1bHQgPSByZXN1bHQtPnNldFdlaWdodChjb250ZXh0LCBkZXNjcmlwdG9ycy53ZWln
aHQuaXNFbXB0eSgpID8gIm5vcm1hbCJfc3RyIDogZGVzY3JpcHRvcnMud2VpZ2h0KTsKICAgICBp
ZiAoc2V0V2VpZ2h0UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0
RXJyb3JTdGF0ZSgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBhdXRvIHNl
dFN0cmV0Y2hSZXN1bHQgPSByZXN1bHQtPnNldFN0cmV0Y2goY29udGV4dCwgZGVzY3JpcHRvcnMu
c3RyZXRjaC5pc0VtcHR5KCkgPyAibm9ybWFsIl9zIDogZGVzY3JpcHRvcnMuc3RyZXRjaCk7Cisg
ICAgYXV0byBzZXRTdHJldGNoUmVzdWx0ID0gcmVzdWx0LT5zZXRTdHJldGNoKGNvbnRleHQsIGRl
c2NyaXB0b3JzLnN0cmV0Y2guaXNFbXB0eSgpID8gIm5vcm1hbCJfc3RyIDogZGVzY3JpcHRvcnMu
c3RyZXRjaCk7CiAgICAgaWYgKHNldFN0cmV0Y2hSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgcmVzdWx0LT5zZXRFcnJvclN0YXRlKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAg
ICAgfQotICAgIGF1dG8gc2V0VW5pY29kZVJhbmdlUmVzdWx0ID0gcmVzdWx0LT5zZXRVbmljb2Rl
UmFuZ2UoY29udGV4dCwgZGVzY3JpcHRvcnMudW5pY29kZVJhbmdlLmlzRW1wdHkoKSA/ICJVKzAt
MTBGRkZGIl9zIDogZGVzY3JpcHRvcnMudW5pY29kZVJhbmdlKTsKKyAgICBhdXRvIHNldFVuaWNv
ZGVSYW5nZVJlc3VsdCA9IHJlc3VsdC0+c2V0VW5pY29kZVJhbmdlKGNvbnRleHQsIGRlc2NyaXB0
b3JzLnVuaWNvZGVSYW5nZS5pc0VtcHR5KCkgPyAiVSswLTEwRkZGRiJfc3RyIDogZGVzY3JpcHRv
cnMudW5pY29kZVJhbmdlKTsKICAgICBpZiAoc2V0VW5pY29kZVJhbmdlUmVzdWx0Lmhhc0V4Y2Vw
dGlvbigpKSB7CiAgICAgICAgIHJlc3VsdC0+c2V0RXJyb3JTdGF0ZSgpOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KLSAgICBhdXRvIHNldEZlYXR1cmVTZXR0aW5nc1Jlc3VsdCA9IHJl
c3VsdC0+c2V0RmVhdHVyZVNldHRpbmdzKGNvbnRleHQsIGRlc2NyaXB0b3JzLmZlYXR1cmVTZXR0
aW5ncy5pc0VtcHR5KCkgPyAibm9ybWFsIl9zIDogZGVzY3JpcHRvcnMuZmVhdHVyZVNldHRpbmdz
KTsKKyAgICBhdXRvIHNldEZlYXR1cmVTZXR0aW5nc1Jlc3VsdCA9IHJlc3VsdC0+c2V0RmVhdHVy
ZVNldHRpbmdzKGNvbnRleHQsIGRlc2NyaXB0b3JzLmZlYXR1cmVTZXR0aW5ncy5pc0VtcHR5KCkg
PyAibm9ybWFsIl9zdHIgOiBkZXNjcmlwdG9ycy5mZWF0dXJlU2V0dGluZ3MpOwogICAgIGlmIChz
ZXRGZWF0dXJlU2V0dGluZ3NSZXN1bHQuaGFzRXhjZXB0aW9uKCkpIHsKICAgICAgICAgcmVzdWx0
LT5zZXRFcnJvclN0YXRlKCk7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIGF1
dG8gc2V0RGlzcGxheVJlc3VsdCA9IHJlc3VsdC0+c2V0RGlzcGxheShjb250ZXh0LCBkZXNjcmlw
dG9ycy5kaXNwbGF5LmlzRW1wdHkoKSA/ICJhdXRvIl9zIDogZGVzY3JpcHRvcnMuZGlzcGxheSk7
CisgICAgYXV0byBzZXREaXNwbGF5UmVzdWx0ID0gcmVzdWx0LT5zZXREaXNwbGF5KGNvbnRleHQs
IGRlc2NyaXB0b3JzLmRpc3BsYXkuaXNFbXB0eSgpID8gImF1dG8iX3N0ciA6IGRlc2NyaXB0b3Jz
LmRpc3BsYXkpOwogICAgIGlmIChzZXREaXNwbGF5UmVzdWx0Lmhhc0V4Y2VwdGlvbigpKSB7CiAg
ICAgICAgIHJlc3VsdC0+c2V0RXJyb3JTdGF0ZSgpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwpA
QCAtMjcxLDcgKzI3MSw3IEBAIFN0cmluZyBGb250RmFjZTo6ZmFtaWx5KCkgY29uc3QKIAogICAg
IGNvbnN0IGF1dG8mIGZhbWlsaWVzID0gbV9iYWNraW5nLT5mYW1pbGllcygpOwogICAgIGlmICgh
ZmFtaWxpZXMpCi0gICAgICAgIHJldHVybiAibm9ybWFsIl9zOworICAgICAgICByZXR1cm4gIm5v
cm1hbCJfc3RyOwogICAgIGF1dG8gZmFtaWxpZXNVbnJ3YXBwZWQgPSBmYW1pbGllcy52YWx1ZSgp
OwogICAgIC8vIEZJWE1FOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTk2MzgxIFRoaXMgaXMgb25seSBoZXJlIGJlY2F1c2UgQ1NTRm9udEZhY2UgZXJyb25lb3VzbHkg
dXNlcyBhIGxpc3Qgb2YgdmFsdWVzIGluc3RlYWQgb2YgYSBzaW5nbGUgdmFsdWUuCiAgICAgLy8g
U2VlIGNvbnN1bWVGb250RmFtaWx5RGVzY3JpcHRvcigpIGluIENTU1Byb3BlcnR5UGFyc2VyLmNw
cC4KQEAgLTI5Niw3ICsyOTYsNyBAQCBTdHJpbmcgRm9udEZhY2U6OnN0eWxlKCkgY29uc3QKICAg
ICBjb25zdCBhdXRvJiBzdHlsZVdyYXBwZWQgPSBtX2JhY2tpbmctPml0YWxpYygpOwogICAgIAog
ICAgIGlmICghc3R5bGVXcmFwcGVkKQotICAgICAgICByZXR1cm4gIm5vcm1hbCJfczsKKyAgICAg
ICAgcmV0dXJuICJub3JtYWwiX3N0cjsKICAgICBhdXRvIHN0eWxlID0gc3R5bGVXcmFwcGVkLnZh
bHVlKCk7CiAgICAgYXV0byBtaW5pbXVtID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Zm9udFN0
eWxlRnJvbVN0eWxlVmFsdWUoc3R5bGUubWluaW11bSwgRm9udFN0eWxlQXhpczo6aXRhbCk7CiAg
ICAgYXV0byBtYXhpbXVtID0gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6Zm9udFN0eWxlRnJvbVN0
eWxlVmFsdWUoc3R5bGUubWF4aW11bSwgRm9udFN0eWxlQXhpczo6aXRhbCk7CkBAIC0zMjksNyAr
MzI5LDcgQEAgU3RyaW5nIEZvbnRGYWNlOjp3ZWlnaHQoKSBjb25zdAogICAgIG1fYmFja2luZy0+
dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIGNvbnN0IGF1dG8mIHdlaWdodFdyYXBwZWQgPSBt
X2JhY2tpbmctPndlaWdodCgpOwogICAgIGlmICghd2VpZ2h0V3JhcHBlZCkKLSAgICAgICAgcmV0
dXJuICJub3JtYWwiX3M7CisgICAgICAgIHJldHVybiAibm9ybWFsIl9zdHI7CiAgICAgYXV0byB3
ZWlnaHQgPSB3ZWlnaHRXcmFwcGVkLnZhbHVlKCk7CiAgICAgYXV0byBtaW5pbXVtID0gQ29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6Zm9udFdlaWdodEZyb21TdHlsZVZhbHVlKHdlaWdodC5taW5pbXVt
KTsKICAgICBhdXRvIG1heGltdW0gPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250V2VpZ2h0
RnJvbVN0eWxlVmFsdWUod2VpZ2h0Lm1heGltdW0pOwpAQCAtMzUyLDcgKzM1Miw3IEBAIFN0cmlu
ZyBGb250RmFjZTo6c3RyZXRjaCgpIGNvbnN0CiAgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlm
TmVlZGVkKCk7CiAgICAgY29uc3QgYXV0byYgc3RyZXRjaFdyYXBwZWQgPSBtX2JhY2tpbmctPnN0
cmV0Y2goKTsKICAgICBpZiAoIXN0cmV0Y2hXcmFwcGVkKQotICAgICAgICByZXR1cm4gIm5vcm1h
bCJfczsKKyAgICAgICAgcmV0dXJuICJub3JtYWwiX3N0cjsKICAgICBhdXRvIHN0cmV0Y2ggPSBz
dHJldGNoV3JhcHBlZC52YWx1ZSgpOwogICAgIGF1dG8gbWluaW11bSA9IENvbXB1dGVkU3R5bGVF
eHRyYWN0b3I6OmZvbnRTdHJldGNoRnJvbVN0eWxlVmFsdWUoc3RyZXRjaC5taW5pbXVtKTsKICAg
ICBhdXRvIG1heGltdW0gPSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpmb250U3RyZXRjaEZyb21T
dHlsZVZhbHVlKHN0cmV0Y2gubWF4aW11bSk7CkBAIC0zNzgsNyArMzc4LDcgQEAgU3RyaW5nIEZv
bnRGYWNlOjp1bmljb2RlUmFuZ2UoKSBjb25zdAogICAgICAgICByZXR1cm4gIlUrMC0xMEZGRkYi
OwogICAgIGF1dG8gcmFuZ2VzID0gcmFuZ2VzV3JhcHBlZC52YWx1ZSgpOwogICAgIGlmICghcmFu
Z2VzLnNpemUoKSkKLSAgICAgICAgcmV0dXJuICJVKzAtMTBGRkZGIl9zOworICAgICAgICByZXR1
cm4gIlUrMC0xMEZGRkYiX3N0cjsKICAgICBhdXRvIHZhbHVlcyA9IENTU1ZhbHVlTGlzdDo6Y3Jl
YXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBmb3IgKGF1dG8mIHJhbmdlIDogcmFuZ2VzKQogICAg
ICAgICB2YWx1ZXMtPmFwcGVuZChDU1NVbmljb2RlUmFuZ2VWYWx1ZTo6Y3JlYXRlKHJhbmdlLmZy
b20sIHJhbmdlLnRvKSk7CkBAIC0zOTAsMTAgKzM5MCwxMCBAQCBTdHJpbmcgRm9udEZhY2U6OmZl
YXR1cmVTZXR0aW5ncygpIGNvbnN0CiAgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CiAgICAgY29uc3QgYXV0byYgZmVhdHVyZVNldHRpbmdzV3JhcHBlZCA9IG1fYmFja2luZy0+
ZmVhdHVyZVNldHRpbmdzKCk7CiAgICAgaWYgKCFmZWF0dXJlU2V0dGluZ3NXcmFwcGVkKQotICAg
ICAgICByZXR1cm4gIm5vcm1hbCJfczsKKyAgICAgICAgcmV0dXJuICJub3JtYWwiX3N0cjsKICAg
ICBhdXRvIGZlYXR1cmVTZXR0aW5ncyA9IGZlYXR1cmVTZXR0aW5nc1dyYXBwZWQudmFsdWUoKTsK
ICAgICBpZiAoIWZlYXR1cmVTZXR0aW5ncy5zaXplKCkpCi0gICAgICAgIHJldHVybiAibm9ybWFs
Il9zOworICAgICAgICByZXR1cm4gIm5vcm1hbCJfc3RyOwogICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKICAgICBmb3IgKGF1dG8mIGZlYXR1cmUg
OiBmZWF0dXJlU2V0dGluZ3MpCiAgICAgICAgIGxpc3QtPmFwcGVuZChDU1NGb250RmVhdHVyZVZh
bHVlOjpjcmVhdGUoRm9udFRhZyhmZWF0dXJlLnRhZygpKSwgZmVhdHVyZS52YWx1ZSgpKSk7CkBA
IC00MDUsNyArNDA1LDcgQEAgU3RyaW5nIEZvbnRGYWNlOjpkaXNwbGF5KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgbV9iYWNraW5nLT51cGRhdGVTdHlsZUlmTmVl
ZGVkKCk7CiAgICAgY29uc3QgYXV0byYgbG9hZGluZ0JlaGF2aW9yV3JhcHBlZCA9IG1fYmFja2lu
Zy0+bG9hZGluZ0JlaGF2aW9yKCk7CiAgICAgaWYgKCFsb2FkaW5nQmVoYXZpb3JXcmFwcGVkKQot
ICAgICAgICByZXR1cm4gImF1dG8iX3M7CisgICAgICAgIHJldHVybiAiYXV0byJfc3RyOwogICAg
IHJldHVybiBjb250ZXh0LmNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGxvYWRpbmdCZWhhdmlv
cldyYXBwZWQudmFsdWUoKSktPmNzc1RleHQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnku
Y3BwCmluZGV4IDQ5NzkwZDM2YTFlYTBkNmQzYzc2YTBiNmIzNjZiZWIyYmE4YWFjYWMuLjBhMDRl
MTRlOWU4ZDk0YTA1NWUwY2RhZGY3YTBkOTQxNmQ3NzM4ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFR
dWVyeS5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgU3RyaW5nIE1lZGlhUXVlcnk6OnNlcmlhbGl6ZSgp
IGNvbnN0CiB7CiAgICAgaWYgKG1faWdub3JlZCkgewogICAgICAgICAvLyBJZiBxdWVyeSBpcyBp
bnZhbGlkLCBzZXJpYWxpemVkIHRleHQgc2hvdWxkIHR1cm4gaW50byAibm90IGFsbCIuCi0gICAg
ICAgIHJldHVybiAibm90IGFsbCJfczsKKyAgICAgICAgcmV0dXJuICJub3QgYWxsIl9zdHI7CiAg
ICAgfQogCiAgICAgYm9vbCBzaG91bGRPbWl0TWVkaWFUeXBlID0gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCmlu
ZGV4IDE1N2NiYjA3ZDYwYjZmZGViZDcxZDNmOTk5YTUwODNmMWMzNDY0ZDMuLjk1NWY2OGNmY2M3
OTYzMGRiMWZkOWU0NjM3OTI4NjBiNDhmOWU5MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0yMDUsMTIgKzIw
NSwxMiBAQCBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0
eVZhbHVlKGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYQogU3RyaW5nIFByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbjo6Z2V0UHJvcGVydHlQcmlvcml0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5
TmFtZSkKIHsKICAgICBpZiAoaXNDdXN0b21Qcm9wZXJ0eU5hbWUocHJvcGVydHlOYW1lKSkKLSAg
ICAgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQtPmN1c3RvbVByb3BlcnR5SXNJbXBvcnRhbnQocHJv
cGVydHlOYW1lKSA/ICJpbXBvcnRhbnQiX3MgOiBlbXB0eVN0cmluZygpOworICAgICAgICByZXR1
cm4gbV9wcm9wZXJ0eVNldC0+Y3VzdG9tUHJvcGVydHlJc0ltcG9ydGFudChwcm9wZXJ0eU5hbWUp
ID8gImltcG9ydGFudCJfc3RyIDogZW1wdHlTdHJpbmcoKTsKIAogICAgIENTU1Byb3BlcnR5SUQg
cHJvcGVydHlJRCA9IGNzc1Byb3BlcnR5SUQocHJvcGVydHlOYW1lKTsKICAgICBpZiAoIXByb3Bl
cnR5SUQpCiAgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOwotICAgIHJldHVybiBtX3Byb3Bl
cnR5U2V0LT5wcm9wZXJ0eUlzSW1wb3J0YW50KHByb3BlcnR5SUQpID8gImltcG9ydGFudCJfcyA6
IGVtcHR5U3RyaW5nKCk7CisgICAgcmV0dXJuIG1fcHJvcGVydHlTZXQtPnByb3BlcnR5SXNJbXBv
cnRhbnQocHJvcGVydHlJRCkgPyAiaW1wb3J0YW50Il9zdHIgOiBlbXB0eVN0cmluZygpOwogfQog
CiBTdHJpbmcgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpnZXRQcm9wZXJ0eVNob3J0
aGFuZChjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJv
cGVydGllcy5jcHAKaW5kZXggZjA0MTNjMTdmZmZhMjgzODExZmUyNTE3ZmRmZDYxYmNkY2Y4YjI1
OS4uMTYxMWViMmYwNTdlY2YyNzE4YzJkYzk5N2U5MzI4ZDYyN2RhMDhkNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUHJvcGVydGllcy5jcHAKQEAgLTEwMDAsNyArMTAwMCw3IEBAIFN0cmluZyBT
dHlsZVByb3BlcnRpZXM6OnBhZ2VCcmVha1Byb3BlcnR5VmFsdWUoY29uc3QgU3R5bGVQcm9wZXJ0
eVNob3J0aGFuZCYgc2hvCiAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlkID0gZG93bmNhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWU+KCp2YWx1ZSkudmFsdWVJRCgpOwogICAgIHN3aXRjaCAodmFsdWVJZCkgewog
ICAgIGNhc2UgQ1NTVmFsdWVQYWdlOgotICAgICAgICByZXR1cm4gImFsd2F5cyJfczsKKyAgICAg
ICAgcmV0dXJuICJhbHdheXMiX3N0cjsKICAgICBjYXNlIENTU1ZhbHVlQXV0bzoKICAgICBjYXNl
IENTU1ZhbHVlQXZvaWQ6CiAgICAgY2FzZSBDU1NWYWx1ZUxlZnQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3Mv
cGFyc2VyL0NTU1BhcnNlci5jcHAKaW5kZXggOWRkZWMxNDc2Yjk3YjM3OTE3MDg5OTAwYzMyMmYz
ZmM3YjRhM2Y4My4uZjcyOTI0ZTE0NmU0Yjk5YmFhOTk0MWY5ZmM3NzVlZTIzZmVlMjA2MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcApAQCAtMjMzLDcgKzIzMyw3IEBA
IFJlZlB0cjxDU1NWYWx1ZT4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlV2l0aFZhcmlhYmxlUmVmZXJl
bmNlcyhDU1NQcm9wZXJ0eUlEIHByb3BJCiAKICAgICBhdXRvJiBuYW1lID0gZG93bmNhc3Q8Q1NT
Q3VzdG9tUHJvcGVydHlWYWx1ZT4odmFsdWUpLm5hbWUoKTsKICAgICBhdXRvKiByZWdpc3RlcmVk
ID0gYnVpbGRlclN0YXRlLmRvY3VtZW50KCkuZ2V0Q1NTUmVnaXN0ZXJlZEN1c3RvbVByb3BlcnR5
U2V0KCkuZ2V0KG5hbWUpOwotICAgIGF1dG8mIHN5bnRheCA9IHJlZ2lzdGVyZWQgPyByZWdpc3Rl
cmVkLT5zeW50YXggOiAiKiJfczsKKyAgICBhdXRvJiBzeW50YXggPSByZWdpc3RlcmVkID8gcmVn
aXN0ZXJlZC0+c3ludGF4IDogIioiX3N0cjsKICAgICBhdXRvIHJlc29sdmVkRGF0YSA9IHZhbHVl
V2l0aFJlZmVyZW5jZXMucmVzb2x2ZVZhcmlhYmxlUmVmZXJlbmNlcyhidWlsZGVyU3RhdGUpOwog
ICAgIGlmICghcmVzb2x2ZWREYXRhKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvTWVkaWFRdWVyeVBhcnNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL01lZGlhUXVlcnlQYXJzZXIuY3BwCmluZGV4IGNiNWEwOGFh
M2ViN2Q2YjhjODI1N2RjODQ4ZGNlYzExMzQxOWM5Y2QuLmVkY2Y3MzcxYTNhOTExOWMxYjZkNzcy
ODYzNDhhNjkzYjM5NGUxMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIv
TWVkaWFRdWVyeVBhcnNlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9NZWRp
YVF1ZXJ5UGFyc2VyLmNwcApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgTWVkaWFRdWVyeVBhcnNl
cjo6Y29tbWl0TWVkaWFRdWVyeSgpCiB7CiAgICAgLy8gRklYTUUtTkVXUEFSU0VSOiBDb252b2x1
dGVkIGFuZCBhd2Z1bCwgYnV0IHdlIGNhbid0IGNoYW5nZSB0aGUgTWVkaWFRdWVyeVNldCB5ZXQg
YmVjYXVzZSBvZiB0aGUKICAgICAvLyBvbGQgcGFyc2VyLgotICAgIHN0YXRpYyBjb25zdCBOZXZl
ckRlc3Ryb3llZDxTdHJpbmc+IGRlZmF1bHRNZWRpYVR5cGUgeyAiYWxsIl9zIH07CisgICAgc3Rh
dGljIGNvbnN0IE5ldmVyRGVzdHJveWVkPFN0cmluZz4gZGVmYXVsdE1lZGlhVHlwZSB7ICJhbGwi
X3N0ciB9OwogICAgIE1lZGlhUXVlcnkgbWVkaWFRdWVyeSB7IG1fbWVkaWFRdWVyeURhdGEucmVz
dHJpY3RvcigpLCBtX21lZGlhUXVlcnlEYXRhLm1lZGlhVHlwZSgpLnZhbHVlX29yKGRlZmF1bHRN
ZWRpYVR5cGUpLCBXVEZNb3ZlKG1fbWVkaWFRdWVyeURhdGEuZXhwcmVzc2lvbnMoKSkgfTsKICAg
ICBtX21lZGlhUXVlcnlEYXRhLmNsZWFyKCk7CiAgICAgbV9xdWVyeVNldC0+YWRkTWVkaWFRdWVy
eShXVEZNb3ZlKG1lZGlhUXVlcnkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9D
REFUQVNlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5jcHAKaW5k
ZXggNzU0ZjQ4Mjg4ZmUxOTZhM2QyODJhMjk2ZDg3OGQyMzM0ZDM5Nzg0Yi4uOTNkYjVjZWYyMDc5
NTUxYjA4OWQwMjdjYTNhN2UyZTVhZGI4M2ZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NEQVRBU2VjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0NEQVRBU2VjdGlv
bi5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgUmVmPENEQVRBU2VjdGlvbj4gQ0RBVEFTZWN0aW9uOjpj
cmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGRhdGEpCiAKIFN0cmluZyBD
REFUQVNlY3Rpb246Om5vZGVOYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gIiNjZGF0YS1zZWN0
aW9uIl9zOworICAgIHJldHVybiAiI2NkYXRhLXNlY3Rpb24iX3N0cjsKIH0KIAogTm9kZTo6Tm9k
ZVR5cGUgQ0RBVEFTZWN0aW9uOjpub2RlVHlwZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vQ29tbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29tbWVudC5jcHAK
aW5kZXggOGEzZTMyZjc3MzkzNDkxZjI1MzIyMzA3ZGQxNjQ4ZmVjMTZlYmY5Yi4uMjEyMzlkMGZk
NzE5ZjMzZmJjMjYxMWY4MzE1ZTA2NGIyZGVhMWJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0NvbW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db21tZW50LmNwcApA
QCAtNDEsNyArNDEsNyBAQCBSZWY8Q29tbWVudD4gQ29tbWVudDo6Y3JlYXRlKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0KQogCiBTdHJpbmcgQ29tbWVudDo6bm9kZU5hbWUo
KSBjb25zdAogewotICAgIHJldHVybiAiI2NvbW1lbnQiX3M7CisgICAgcmV0dXJuICIjY29tbWVu
dCJfc3RyOwogfQogCiBOb2RlOjpOb2RlVHlwZSBDb21tZW50Ojpub2RlVHlwZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24uY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNwcAppbmRleCA1ODQzNWJjM2ZjYWQz
Y2RhNzg5NzBhMjExZTc2MmJmY2NmMDEyZjc1Li42ZTBhYTUzMzVkZTAwOTdjYzljNDU1Y2Q4ZDM1
MTMwYzc5YjI0OGFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAK
QEAgLTEyNyw3ICsxMjcsNyBAQCBSZWY8SFRNTERvY3VtZW50PiBET01JbXBsZW1lbnRhdGlvbjo6
Y3JlYXRlSFRNTERvY3VtZW50KGNvbnN0IFN0cmluZyYgdGl0bGUpCiB7CiAgICAgYXV0byBkb2N1
bWVudCA9IEhUTUxEb2N1bWVudDo6Y3JlYXRlKG51bGxwdHIsIG1fZG9jdW1lbnQuc2V0dGluZ3Mo
KSwgVVJMKCksIHsgfSk7CiAgICAgZG9jdW1lbnQtPm9wZW4oKTsKLSAgICBkb2N1bWVudC0+d3Jp
dGUobnVsbHB0ciwgeyAiPCFkb2N0eXBlIGh0bWw+PGh0bWw+PGhlYWQ+PC9oZWFkPjxib2R5Pjwv
Ym9keT48L2h0bWw+Il9zIH0pOworICAgIGRvY3VtZW50LT53cml0ZShudWxscHRyLCB7ICI8IWRv
Y3R5cGUgaHRtbD48aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+PC9ib2R5PjwvaHRtbD4iX3N0ciB9
KTsKICAgICBpZiAoIXRpdGxlLmlzTnVsbCgpKSB7CiAgICAgICAgIGF1dG8gdGl0bGVFbGVtZW50
ID0gSFRNTFRpdGxlRWxlbWVudDo6Y3JlYXRlKHRpdGxlVGFnLCBkb2N1bWVudCk7CiAgICAgICAg
IHRpdGxlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZG9jdW1lbnQtPmNyZWF0ZVRleHROb2RlKHRpdGxl
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCA5NThhMDg1NGNjNDhhZWUwNDgyNTQ2ZTc3
MzliNTUwNWY4YzBmMjgxLi43OGM2ZTkzMTk3NzMyZTljZTVlMGQ3MDQ4MjdmMDI3OWI0NjQzODhl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTU3Niw3ICs1NzYsNyBAQCBEb2N1bWVudDo6
RG9jdW1lbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MsIGNvbnN0IFVS
TCYgdXJsLCBEb2N1bQogI2lmIEVOQUJMRShYU0xUKQogICAgICwgbV9hcHBseVBlbmRpbmdYU0xU
cmFuc2Zvcm1zVGltZXIoKnRoaXMsICZEb2N1bWVudDo6YXBwbHlQZW5kaW5nWFNMVHJhbnNmb3Jt
c1RpbWVyRmlyZWQpCiAjZW5kaWYKLSAgICAsIG1feG1sVmVyc2lvbigiMS4wIl9zKQorICAgICwg
bV94bWxWZXJzaW9uKCIxLjAiX3N0cikKICAgICAsIG1fY29uc3RhbnRQcm9wZXJ0eU1hcChtYWtl
VW5pcXVlPENvbnN0YW50UHJvcGVydHlNYXA+KCp0aGlzKSkKICAgICAsIG1fZG9jdW1lbnRDbGFz
c2VzKGRvY3VtZW50Q2xhc3NlcykKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCkBAIC0xNTUw
LDEzICsxNTUwLDEzIEBAIHZvaWQgRG9jdW1lbnQ6OnNldENvbnRlbnQoY29uc3QgU3RyaW5nJiBj
b250ZW50KQogU3RyaW5nIERvY3VtZW50OjpzdWdnZXN0ZWRNSU1FVHlwZSgpIGNvbnN0CiB7CiAg
ICAgaWYgKGlzWEhUTUxEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gImFwcGxpY2F0aW9uL3ho
dG1sK3htbCJfczsKKyAgICAgICAgcmV0dXJuICJhcHBsaWNhdGlvbi94aHRtbCt4bWwiX3N0cjsK
ICAgICBpZiAoaXNTVkdEb2N1bWVudCgpKQotICAgICAgICByZXR1cm4gImltYWdlL3N2Zyt4bWwi
X3M7CisgICAgICAgIHJldHVybiAiaW1hZ2Uvc3ZnK3htbCJfc3RyOwogICAgIGlmICh4bWxTdGFu
ZGFsb25lKCkpCi0gICAgICAgIHJldHVybiAidGV4dC94bWwiX3M7CisgICAgICAgIHJldHVybiAi
dGV4dC94bWwiX3N0cjsKICAgICBpZiAoaXNIVE1MRG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJu
ICJ0ZXh0L2h0bWwiX3M7CisgICAgICAgIHJldHVybiAidGV4dC9odG1sIl9zdHI7CiAgICAgaWYg
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIgPSB0aGlzLT5sb2FkZXIoKSkKICAgICAgICAgcmV0dXJu
IGxvYWRlci0+cmVzcG9uc2VNSU1FVHlwZSgpOwogICAgIHJldHVybiBTdHJpbmcoKTsKQEAgLTE1
NzksNyArMTU3OSw3IEBAIFN0cmluZyBEb2N1bWVudDo6Y29udGVudFR5cGUoKSBjb25zdAogICAg
IGlmICghbWltZVR5cGUuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBtaW1lVHlwZTsKIAotICAg
IHJldHVybiAiYXBwbGljYXRpb24veG1sIl9zOworICAgIHJldHVybiAiYXBwbGljYXRpb24veG1s
Il9zdHI7CiB9CiAKIFJlZlB0cjxSYW5nZT4gRG9jdW1lbnQ6OmNhcmV0UmFuZ2VGcm9tUG9pbnQo
aW50IHgsIGludCB5KQpAQCAtMTkwNSw3ICsxOTA1LDcgQEAgdm9pZCBEb2N1bWVudDo6Zm9yRWFj
aE1lZGlhRWxlbWVudChjb25zdCBGdW5jdGlvbjx2b2lkKEhUTUxNZWRpYUVsZW1lbnQmKT4mIGZ1
bmMKIAogU3RyaW5nIERvY3VtZW50Ojpub2RlTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICIj
ZG9jdW1lbnQiX3M7CisgICAgcmV0dXJuICIjZG9jdW1lbnQiX3N0cjsKIH0KIAogTm9kZTo6Tm9k
ZVR5cGUgRG9jdW1lbnQ6Om5vZGVUeXBlKCkgY29uc3QKQEAgLTMzODgsNyArMzM4OCw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IERvY3VtZW50Ojp3cml0ZWxuKERvY3VtZW50KiBlbnRyeURvY3VtZW50
LCBGaXhlZFZlY3RvcjxTdHJpbmc+CiAgICAgZm9yIChhdXRvJiBzdHJpbmcgOiBzdHJpbmdzKQog
ICAgICAgICB0ZXh0LmFwcGVuZChXVEZNb3ZlKHN0cmluZykpOwogCi0gICAgdGV4dC5hcHBlbmQo
IlxuIl9zKTsKKyAgICB0ZXh0LmFwcGVuZCgiXG4iX3N0cik7CiAgICAgcmV0dXJuIHdyaXRlKGVu
dHJ5RG9jdW1lbnQsIFdURk1vdmUodGV4dCkpOwogfQogCkBAIC02MDAwLDcgKzYwMDAsNyBAQCB2
b2lkIERvY3VtZW50OjpzZXREZXNpZ25Nb2RlKEluaGVyaXRlZEJvb2wgdmFsdWUpCiAKIFN0cmlu
ZyBEb2N1bWVudDo6ZGVzaWduTW9kZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIGluRGVzaWduTW9k
ZSgpID8gIm9uIl9zIDogIm9mZiJfczsKKyAgICByZXR1cm4gaW5EZXNpZ25Nb2RlKCkgPyAib24i
X3N0ciA6ICJvZmYiX3N0cjsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0RGVzaWduTW9kZShjb25z
dCBTdHJpbmcmIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50
RnJhZ21lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuY3BwCmlu
ZGV4IDljZTFlYmQxYWVlZGNiMzMyNmVjNDA2ZTI0Y2ZkNjRhY2I1ZWQ3N2YuLmNkNTUwOTIyMmJl
ZjBhYmM1ZmUzOWQ0MzkwNGJiMDkzYmIyMmFiZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudEZyYWdtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnRGcmFnbWVudC5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgUmVmPERvY3VtZW50RnJhZ21lbnQ+IERv
Y3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAKIFN0cmluZyBEb2N1
bWVudEZyYWdtZW50Ojpub2RlTmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICIjZG9jdW1lbnQt
ZnJhZ21lbnQiX3M7CisgICAgcmV0dXJuICIjZG9jdW1lbnQtZnJhZ21lbnQiX3N0cjsKIH0KIAog
Tm9kZTo6Tm9kZVR5cGUgRG9jdW1lbnRGcmFnbWVudDo6bm9kZVR5cGUoKSBjb25zdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0ZyYWdtZW50RGlyZWN0aXZlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9GcmFnbWVudERpcmVjdGl2ZVBhcnNlci5jcHAKaW5kZXggMmE0NDQy
YWNkY2Q4ZmE3ZWUxYzk0MmYyOGUwY2YzNDRhN2Y3ZGFjMy4uNjAzZTY0ZGE2ZGRlMGJmYWNkOWNj
N2VjMGY0NWFhZDUzMDBhZGJlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0ZyYWdt
ZW50RGlyZWN0aXZlUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRnJhZ21lbnRE
aXJlY3RpdmVQYXJzZXIuY3BwCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgRnJhZ21lbnREaXJlY3Rp
dmVQYXJzZXI6OnBhcnNlRnJhZ21lbnREaXJlY3RpdmUoU3RyaW5nVmlldyBmcmFnbWVudERpcmVj
dGl2CiAgICAgTE9HX1dJVEhfU1RSRUFNKFRleHRGcmFnbWVudCwgc3RyZWFtIDw8ICIgcGFyc2VG
cmFnbWVudERpcmVjdGl2ZTogIik7CiAgICAgCiAgICAgVmVjdG9yPFBhcnNlZFRleHREaXJlY3Rp
dmU+IHBhcnNlZFRleHREaXJlY3RpdmVzOwotICAgIFN0cmluZyB0ZXh0RGlyZWN0aXZlUHJlZml4
ID0gInRleHQ9Il9zOworICAgIFN0cmluZyB0ZXh0RGlyZWN0aXZlUHJlZml4ID0gInRleHQ9Il9z
dHI7CiAKICAgICBhdXRvIGRpcmVjdGl2ZXMgPSBmcmFnbWVudERpcmVjdGl2ZS5zcGxpdCgnJicp
OwogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1RleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RleHQuY3BwCmluZGV4IDY4YTZmYmIzNTg0NDE0NDFhMmIxMWI1OGZjNmYx
OTQyOWYxZjBlZWEuLmNkZjk4MmMzM2Q1YmQzNjJkY2RmZDBhNTExOGNiYTE4Yzc0NzRlNWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dC5jcHAKQEAgLTE1Myw3ICsxNTMsNyBAQCBSZWZQdHI8VGV4dD4gVGV4dDo6cmVw
bGFjZVdob2xlVGV4dChjb25zdCBTdHJpbmcmIG5ld1RleHQpCiAKIFN0cmluZyBUZXh0Ojpub2Rl
TmFtZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICIjdGV4dCJfczsKKyAgICByZXR1cm4gIiN0ZXh0
Il9zdHI7CiB9CiAKIE5vZGU6Ok5vZGVUeXBlIFRleHQ6Om5vZGVUeXBlKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVGV4dEVuY29kZXIuY3BwCmluZGV4IGFlMjM0NzUyNzkyNzIzN2MxM2UwZGY2MDdjMDUx
NTZkNTk5ZGMxOTIuLmY3NzRjNjJkY2VjOTEzZDVmNWRhZGIwMGZiMGFmMGYxYjk2YzlmMmMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UZXh0RW5jb2Rlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1RleHRFbmNvZGVyLmNwcApAQCAtMzMsNyArMzMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFN0cmluZyBUZXh0RW5jb2Rlcjo6ZW5jb2RpbmcoKSBjb25zdAogewotICAg
IHJldHVybiAidXRmLTgiX3M7CisgICAgcmV0dXJuICJ1dGYtOCJfc3RyOwogfQogCiBSZWZQdHI8
VWludDhBcnJheT4gVGV4dEVuY29kZXI6OmVuY29kZShTdHJpbmcmJiBpbnB1dCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VDaGVja2FibGVJbnB1dFR5cGUuY3BwCmluZGV4IDhh
NTRjYTA1MzU0YTkzMDI3NTlhYjc1YmEzYTE3NTVmN2I5ZjQ1NWQuLjJhZGQ1NmY3OWU4NTM4YzYw
NTlhZGZiZmFjMGEyODU1Yjg4Mzg5ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
QmFzZUNoZWNrYWJsZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9CYXNl
Q2hlY2thYmxlSW5wdXRUeXBlLmNwcApAQCAtNDYsNyArNDYsNyBAQCB1c2luZyBuYW1lc3BhY2Ug
SFRNTE5hbWVzOwogRm9ybUNvbnRyb2xTdGF0ZSBCYXNlQ2hlY2thYmxlSW5wdXRUeXBlOjpzYXZl
Rm9ybUNvbnRyb2xTdGF0ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGVsZW1lbnQoKSk7Ci0gICAg
cmV0dXJuIHsgZWxlbWVudCgpLT5jaGVja2VkKCkgPyAib24iX3MgOiAib2ZmIl9zIH07CisgICAg
cmV0dXJuIHsgZWxlbWVudCgpLT5jaGVja2VkKCkgPyAib24iX3N0ciA6ICJvZmYiX3N0ciB9Owog
fQogCiB2b2lkIEJhc2VDaGVja2FibGVJbnB1dFR5cGU6OnJlc3RvcmVGb3JtQ29udHJvbFN0YXRl
KGNvbnN0IEZvcm1Db250cm9sU3RhdGUmIHN0YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9CYXNlRGF0ZUFuZFRpbWVJbnB1dFR5cGUuY3BwCmluZGV4IDM3NTUyODFkMTgyZTNhYWJlMThj
NzlkOWQzNTEzNjlhYzczNTRlODIuLjFlMTRiZWZiNGI0OTAxOGMwNjc3MDMzZjc4OGJlYWY4MzNm
NmY0ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQmFzZURhdGVBbmRUaW1lSW5w
dXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0Jhc2VEYXRlQW5kVGltZUlucHV0
VHlwZS5jcHAKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIEJhc2VEYXRlQW5kVGltZUlucHV0VHlw
ZTo6dXBkYXRlSW5uZXJUZXh0VmFsdWUoKQogICAgICAgICBhdXRvIGRpc3BsYXlWYWx1ZSA9IHZp
c2libGVWYWx1ZSgpOwogICAgICAgICBpZiAoZGlzcGxheVZhbHVlLmlzRW1wdHkoKSkgewogICAg
ICAgICAgICAgLy8gTmVlZCB0byBwdXQgc29tZXRoaW5nIHRvIGtlZXAgdGV4dCBiYXNlbGluZS4K
LSAgICAgICAgICAgIGRpc3BsYXlWYWx1ZSA9ICIgIl9zOworICAgICAgICAgICAgZGlzcGxheVZh
bHVlID0gIiAiX3N0cjsKICAgICAgICAgfQogICAgICAgICBkb3duY2FzdDxIVE1MRWxlbWVudD4o
Km5vZGUpLnNldElubmVyVGV4dChkaXNwbGF5VmFsdWUpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NvbG9ySW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCmluZGV4IDE3MGZiYzUxNDAxNmE0NDE0ODg0
MDk2MDVjOThkNzI0ZTViNTZmZmQuLjZmOTc2ZTg4MjA1MzRkNjg0NTkyNmFjOWFhNDBlMzY3N2Uz
YzNmMjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ29sb3JJbnB1dFR5cGUuY3BwCkBAIC0xMTksNyAr
MTE5LDcgQEAgYm9vbCBDb2xvcklucHV0VHlwZTo6c3VwcG9ydHNSZXF1aXJlZCgpIGNvbnN0CiAK
IFN0cmluZyBDb2xvcklucHV0VHlwZTo6ZmFsbGJhY2tWYWx1ZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuICIjMDAwMDAwIl9zOworICAgIHJldHVybiAiIzAwMDAwMCJfc3RyOwogfQogCiBTdHJpbmcg
Q29sb3JJbnB1dFR5cGU6OnNhbml0aXplVmFsdWUoY29uc3QgU3RyaW5nJiBwcm9wb3NlZFZhbHVl
KSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9ET01Gb3JtRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcAppbmRleCA2ZjQ1ZTFjYzRmYmIy
NmNkOWM3YzJkZjE2MzJiNjUyYmYxNjY1ZjgxLi5kMzVjNWExZTY3NTg0MDczMDE1MTNiZjA3Zjc1
YzhmYmRlNzFkNmRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RPTUZvcm1EYXRhLmNwcApAQCAtODQsNyAr
ODQsNyBAQCBzdGF0aWMgYXV0byBjcmVhdGVGaWxlRW50cnkoY29uc3QgU3RyaW5nJiBuYW1lLCBC
bG9iJiBibG9iLCBjb25zdCBTdHJpbmcmIGZpbGVuYQogICAgIGF1dG8gdXN2TmFtZSA9IHJlcGxh
Y2VVbnBhaXJlZFN1cnJvZ2F0ZXNXaXRoUmVwbGFjZW1lbnRDaGFyYWN0ZXIoU3RyaW5nKG5hbWUp
KTsKIAogICAgIGlmICghYmxvYi5pc0ZpbGUoKSkKLSAgICAgICAgcmV0dXJuIHsgdXN2TmFtZSwg
RmlsZTo6Y3JlYXRlKGJsb2Iuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBibG9iLCBmaWxlbmFt
ZS5pc051bGwoKSA/ICJibG9iIl9zIDogZmlsZW5hbWUpIH07CisgICAgICAgIHJldHVybiB7IHVz
dk5hbWUsIEZpbGU6OmNyZWF0ZShibG9iLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgYmxvYiwg
ZmlsZW5hbWUuaXNOdWxsKCkgPyAiYmxvYiJfc3RyIDogZmlsZW5hbWUpIH07CiAKICAgICBpZiAo
IWZpbGVuYW1lLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4geyB1c3ZOYW1lLCBGaWxlOjpjcmVh
dGUoYmxvYi5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIGRvd25jYXN0PEZpbGU+KGJsb2IpLCBm
aWxlbmFtZSkgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0ZUlucHV0VHlw
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVJbnB1dFR5cGUuY3BwCmluZGV4IDAwY2Yw
Mjk5ZDc0OTc3NzIxMjBkZGYyMzU4ODE1OGYwYWFiY2U4MjQuLjIyZTE3NzVjNjQ2MmQ2YWZjNzk2
YmU3Mjg2YjhmMzZlYmViOGU1OWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvRGF0
ZUlucHV0VHlwZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlSW5wdXRUeXBlLmNw
cApAQCAtMTAxLDcgKzEwMSw3IEBAIFN0cmluZyBEYXRlSW5wdXRUeXBlOjpmb3JtYXREYXRlVGlt
ZUZpZWxkc1N0YXRlKGNvbnN0IERhdGVUaW1lRmllbGRzU3RhdGUmIHN0YXRlCiB2b2lkIERhdGVJ
bnB1dFR5cGU6OnNldHVwTGF5b3V0UGFyYW1ldGVycyhEYXRlVGltZUVkaXRFbGVtZW50OjpMYXlv
dXRQYXJhbWV0ZXJzJiBsYXlvdXRQYXJhbWV0ZXJzLCBjb25zdCBEYXRlQ29tcG9uZW50cyYpIGNv
bnN0CiB7CiAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFt
ZXRlcnMubG9jYWxlLmRhdGVGb3JtYXQoKTsKLSAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNr
RGF0ZVRpbWVGb3JtYXQgPSAieXl5eS1NTS1kZCJfczsKKyAgICBsYXlvdXRQYXJhbWV0ZXJzLmZh
bGxiYWNrRGF0ZVRpbWVGb3JtYXQgPSAieXl5eS1NTS1kZCJfc3RyOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9j
YWxJbnB1dFR5cGUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9EYXRlVGltZUxvY2FsSW5wdXRU
eXBlLmNwcAppbmRleCBhZWI0YTEyZDE5NWJmYzA4MDRhMDgxNTNhYzliOGY0YzE4NDgzMThkLi45
YmM3ODU0YzE0YzBlOGM0ZjdjNjE3MzA4ZmY1ZmI4MWMxNjE3NWQxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0RhdGVUaW1lTG9jYWxJbnB1dFR5cGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvRGF0ZVRpbWVMb2NhbElucHV0VHlwZS5jcHAKQEAgLTEzMSwxMCArMTMxLDEw
IEBAIHZvaWQgRGF0ZVRpbWVMb2NhbElucHV0VHlwZTo6c2V0dXBMYXlvdXRQYXJhbWV0ZXJzKERh
dGVUaW1lRWRpdEVsZW1lbnQ6OkxheW91dFBhCiAKICAgICBpZiAobGF5b3V0UGFyYW1ldGVycy5z
aG91bGRIYXZlTWlsbGlzZWNvbmRGaWVsZCB8fCBzaG91bGRIYXZlU2Vjb25kRmllbGQoZGF0ZSkp
IHsKICAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFt
ZXRlcnMubG9jYWxlLmRhdGVUaW1lRm9ybWF0V2l0aFNlY29uZHMoKTsKLSAgICAgICAgbGF5b3V0
UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gInl5eXktTU0tZGQnVCdISDptbTpz
cyJfczsKKyAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0g
Inl5eXktTU0tZGQnVCdISDptbTpzcyJfc3RyOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGxheW91
dFBhcmFtZXRlcnMuZGF0ZVRpbWVGb3JtYXQgPSBsYXlvdXRQYXJhbWV0ZXJzLmxvY2FsZS5kYXRl
VGltZUZvcm1hdFdpdGhvdXRTZWNvbmRzKCk7Ci0gICAgICAgIGxheW91dFBhcmFtZXRlcnMuZmFs
bGJhY2tEYXRlVGltZUZvcm1hdCA9ICJ5eXl5LU1NLWRkJ1QnSEg6bW0iX3M7CisgICAgICAgIGxh
eW91dFBhcmFtZXRlcnMuZmFsbGJhY2tEYXRlVGltZUZvcm1hdCA9ICJ5eXl5LU1NLWRkJ1QnSEg6
bW0iX3N0cjsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKaW5kZXgg
MWIzNmQ1YjM2ZjAwMWFkMDdlOWU2YWEwMjg2ODE2MjcyMjQ2NGQzMC4uNWMwMTc3ZjhhM2Q2YTZh
ZjUxNjY5ZjFhOGQxZWY5YWQ4YmRmNWU4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRWxlbWVudC5j
cHAKQEAgLTU3MiwxNSArNTcyLDE1IEBAIFN0cmluZyBIVE1MRWxlbWVudDo6Y29udGVudEVkaXRh
YmxlKCkgY29uc3QKIHsKICAgICBzd2l0Y2ggKGNvbnRlbnRFZGl0YWJsZVR5cGUoKnRoaXMpKSB7
CiAgICAgY2FzZSBDb250ZW50RWRpdGFibGVUeXBlOjpJbmhlcml0OgotICAgICAgICByZXR1cm4g
ImluaGVyaXQiX3M7CisgICAgICAgIHJldHVybiAiaW5oZXJpdCJfc3RyOwogICAgIGNhc2UgQ29u
dGVudEVkaXRhYmxlVHlwZTo6VHJ1ZToKLSAgICAgICAgcmV0dXJuICJ0cnVlIl9zOworICAgICAg
ICByZXR1cm4gInRydWUiX3N0cjsKICAgICBjYXNlIENvbnRlbnRFZGl0YWJsZVR5cGU6OkZhbHNl
OgotICAgICAgICByZXR1cm4gImZhbHNlIl9zOworICAgICAgICByZXR1cm4gImZhbHNlIl9zdHI7
CiAgICAgY2FzZSBDb250ZW50RWRpdGFibGVUeXBlOjpQbGFpbnRleHRPbmx5OgotICAgICAgICBy
ZXR1cm4gInBsYWludGV4dC1vbmx5Il9zOworICAgICAgICByZXR1cm4gInBsYWludGV4dC1vbmx5
Il9zdHI7CiAgICAgfQotICAgIHJldHVybiAiaW5oZXJpdCJfczsKKyAgICByZXR1cm4gImluaGVy
aXQiX3N0cjsKIH0KIAogc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIHRydWVOYW1lKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDc5OGZlODZiYzRmMzIwMjY3
MWNkMmQ3MTQ2NjAwMGI2ZWJhYmI2YmYuLjQ2Y2U2NmMyNzhlMjc1NmQ1MDk4MjRhNTI5Mjk4ZmI1
ZWEzMTllNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcApAQCAt
NjU1LDEzICs2NTUsMTMgQEAgU3RyaW5nIEhUTUxJbWFnZUVsZW1lbnQ6OmRlY29kaW5nKCkgY29u
c3QKIHsKICAgICBzd2l0Y2ggKGRlY29kaW5nTW9kZSgpKSB7CiAgICAgY2FzZSBEZWNvZGluZ01v
ZGU6OlN5bmNocm9ub3VzOgotICAgICAgICByZXR1cm4gInN5bmMiX3M7CisgICAgICAgIHJldHVy
biAic3luYyJfc3RyOwogICAgIGNhc2UgRGVjb2RpbmdNb2RlOjpBc3luY2hyb25vdXM6Ci0gICAg
ICAgIHJldHVybiAiYXN5bmMiX3M7CisgICAgICAgIHJldHVybiAiYXN5bmMiX3N0cjsKICAgICBj
YXNlIERlY29kaW5nTW9kZTo6QXV0bzoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIHJldHVy
biAiYXV0byJfczsKKyAgICByZXR1cm4gImF1dG8iX3N0cjsKIH0KIAogRGVjb2RpbmdNb2RlIEhU
TUxJbWFnZUVsZW1lbnQ6OmRlY29kaW5nTW9kZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MVGV4dEFyZWFFbGVtZW50LmNwcAppbmRleCAyZjEwY2VkODQxMzFlZDdlOWRkMTg3YTM0
MDFjZmRjZGVjNGJhNDNlLi5lYmU3NDMwNzVkMTE1N2JjYTNiMGNhMmEzZDZkZTIzNDMzMzIwZjA5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTM5
NSw3ICszOTUsNyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKGNv
bnN0IFN0cmluZyYgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QgogICAgIC8vIENvZGUgZWxzZXdo
ZXJlIG5vcm1hbGl6ZXMgbGluZSBlbmRpbmdzIGFkZGVkIGJ5IHRoZSB1c2VyIHZpYSB0aGUga2V5
Ym9hcmQgb3IgcGFzdGluZy4KICAgICAvLyBXZSBub3JtYWxpemUgbGluZSBlbmRpbmdzIGNvbWlu
ZyBmcm9tIEphdmFTY3JpcHQgaGVyZS4KICAgICBTdHJpbmcgbm9ybWFsaXplZFZhbHVlID0gbmV3
VmFsdWUuaXNOdWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmV3VmFsdWU7Ci0gICAgbm9ybWFsaXpl
ZFZhbHVlLnJlcGxhY2UoIlxyXG4iLCAiXG4iKTsKKyAgICBub3JtYWxpemVkVmFsdWUucmVwbGFj
ZSgiXHJcbiJfc3RyLCAiXG4iX3N0cik7CiAgICAgbm9ybWFsaXplZFZhbHVlLnJlcGxhY2UoJ1xy
JywgJ1xuJyk7CiAKICAgICAvLyBSZXR1cm4gZWFybHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRv
IG1vdmUgdGhlIGNhcmV0IG9yIHRyaWdnZXIgb3RoZXIgc2lkZSBlZmZlY3RzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IDU3
MGIzM2U4NDg5YjA1MTU0ZTNkNjNjMTljODg0NmM0MmUzYWIyNjMuLmVhMDM4NDgzZjQ5MmMxZWY2
NmI0MmM3MTQ5NWFmYzdiMTE4NTUwZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwCkBAIC03OTksNyArNzk5LDcgQEAgU3RyaW5n
IEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50OjpkaXJlY3Rpb25Gb3JGb3JtRGF0YSgpIGNvbnN0
CiAgICAgICAgIHJldHVybiBUZXh0RGlyZWN0aW9uOjpMVFI7CiAgICAgfSgpOwogCi0gICAgcmV0
dXJuIGRpcmVjdGlvbiA9PSBUZXh0RGlyZWN0aW9uOjpMVFIgPyAibHRyIl9zIDogInJ0bCJfczsK
KyAgICByZXR1cm4gZGlyZWN0aW9uID09IFRleHREaXJlY3Rpb246OkxUUiA/ICJsdHIiX3N0ciA6
ICJydGwiX3N0cjsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gSFRNTFRleHRGb3JtQ29udHJvbEVs
ZW1lbnQ6OnNldE1heExlbmd0aChpbnQgbWF4TGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9Nb250aElucHV0VHlwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRo
SW5wdXRUeXBlLmNwcAppbmRleCAxOTgzYzQwOTk4ZjA2NTdiMTdkMWQ4MGRlYjI4MGJkNjJlNzQ1
ODExLi5kZWZmZWNhOTdlNzY4MjUwMGYwMmI5OWNlY2Q0NTA2NDczZGJkODA3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL01vbnRoSW5wdXRUeXBlLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFN0cmluZyBN
b250aElucHV0VHlwZTo6Zm9ybWF0RGF0ZVRpbWVGaWVsZHNTdGF0ZShjb25zdCBEYXRlVGltZUZp
ZWxkc1N0YXRlJiBzdGF0CiB2b2lkIE1vbnRoSW5wdXRUeXBlOjpzZXR1cExheW91dFBhcmFtZXRl
cnMoRGF0ZVRpbWVFZGl0RWxlbWVudDo6TGF5b3V0UGFyYW1ldGVycyYgbGF5b3V0UGFyYW1ldGVy
cywgY29uc3QgRGF0ZUNvbXBvbmVudHMmKSBjb25zdAogewogICAgIGxheW91dFBhcmFtZXRlcnMu
ZGF0ZVRpbWVGb3JtYXQgPSBsYXlvdXRQYXJhbWV0ZXJzLmxvY2FsZS5zaG9ydE1vbnRoRm9ybWF0
KCk7Ci0gICAgbGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gInl5eXkt
TU0iX3M7CisgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxsYmFja0RhdGVUaW1lRm9ybWF0ID0gInl5
eXktTU0iX3N0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGltZUlucHV0VHlwZS5jcHAKaW5kZXggYjM4ODBlOTIyODMyNWE2NTBkNTI4OWEzMDUyNzg4N2Jk
NjE4NWMyNi4uZmYyODIzZWI1ODkyNGE5ZDBmZGExMDM5NWE2OGZkODcwMzhhYWQzYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9UaW1lSW5wdXRUeXBlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RpbWVJbnB1dFR5cGUuY3BwCkBAIC0xMzQsMTAgKzEzNCwxMCBAQCB2b2lk
IFRpbWVJbnB1dFR5cGU6OnNldHVwTGF5b3V0UGFyYW1ldGVycyhEYXRlVGltZUVkaXRFbGVtZW50
OjpMYXlvdXRQYXJhbWV0ZXJzJgogCiAgICAgaWYgKGxheW91dFBhcmFtZXRlcnMuc2hvdWxkSGF2
ZU1pbGxpc2Vjb25kRmllbGQgfHwgc2hvdWxkSGF2ZVNlY29uZEZpZWxkKGRhdGUpKSB7CiAgICAg
ICAgIGxheW91dFBhcmFtZXRlcnMuZGF0ZVRpbWVGb3JtYXQgPSBsYXlvdXRQYXJhbWV0ZXJzLmxv
Y2FsZS50aW1lRm9ybWF0KCk7Ci0gICAgICAgIGxheW91dFBhcmFtZXRlcnMuZmFsbGJhY2tEYXRl
VGltZUZvcm1hdCA9ICJISDptbTpzcyJfczsKKyAgICAgICAgbGF5b3V0UGFyYW1ldGVycy5mYWxs
YmFja0RhdGVUaW1lRm9ybWF0ID0gIkhIOm1tOnNzIl9zdHI7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgbGF5b3V0UGFyYW1ldGVycy5kYXRlVGltZUZvcm1hdCA9IGxheW91dFBhcmFtZXRlcnMubG9j
YWxlLnNob3J0VGltZUZvcm1hdCgpOwotICAgICAgICBsYXlvdXRQYXJhbWV0ZXJzLmZhbGxiYWNr
RGF0ZVRpbWVGb3JtYXQgPSAiSEg6bW0iX3M7CisgICAgICAgIGxheW91dFBhcmFtZXRlcnMuZmFs
bGJhY2tEYXRlVGltZUZvcm1hdCA9ICJISDptbSJfc3RyOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVVJMRGVjb21wb3NpdGlvbi5jcHAKaW5kZXggZTRlMzBhOWI2MDRlZjFhODRkNzc1
MmJiZDhiMzcwODQ1MmExZTA4Zi4uNmViODc2ODQ4MzJmZDRmMzdjZWIyZmE4NGRhMWM2M2VkYTE1
YzFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9VUkxEZWNvbXBvc2l0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1VSTERlY29tcG9zaXRpb24uY3BwCkBAIC00MCw3
ICs0MCw3IEBAIFN0cmluZyBVUkxEZWNvbXBvc2l0aW9uOjpwcm90b2NvbCgpIGNvbnN0CiB7CiAg
ICAgYXV0byBmdWxsVVJMID0gdGhpcy0+ZnVsbFVSTCgpOwogICAgIGlmIChXVEY6OnByb3RvY29s
SXNKYXZhU2NyaXB0KGZ1bGxVUkwuc3RyaW5nKCkpKQotICAgICAgICByZXR1cm4gImphdmFzY3Jp
cHQ6Il9zOworICAgICAgICByZXR1cm4gImphdmFzY3JpcHQ6Il9zdHI7CiAgICAgcmV0dXJuIG1h
a2VTdHJpbmcoZnVsbFVSTC5wcm90b2NvbCgpLCAnOicpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VySWRpb21zLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJJZGlvbXMuY3BwCmluZGV4IDlkNmE2Y2NhZGUwYjRk
NWVhNDAwMmI1MjJjZmZiZDQxM2YwNTZlMWUuLjAxNzE4ZDU3M2ExOWExMDIxYTc5YzNhOGU2NmEy
YjY0MDE1ZjUyMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQ
YXJzZXJJZGlvbXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJz
ZXJJZGlvbXMuY3BwCkBAIC0zNTQsOCArMzU0LDggQEAgU3RyaW5nIHBhcnNlQ09SU1NldHRpbmdz
QXR0cmlidXRlKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQogICAgIGlmICh2YWx1ZS5pc051bGwo
KSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHZhbHVlLCAidXNlLWNyZWRlbnRpYWxzIikpCi0gICAgICAgIHJldHVybiAidXNlLWNyZWRl
bnRpYWxzIl9zOwotICAgIHJldHVybiAiYW5vbnltb3VzIl9zOworICAgICAgICByZXR1cm4gInVz
ZS1jcmVkZW50aWFscyJfc3RyOworICAgIHJldHVybiAiYW5vbnltb3VzIl9zdHI7CiB9CiAKIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlbWFudGljcy5odG1sI2F0
dHItbWV0YS1odHRwLWVxdWl2LXJlZnJlc2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nhbm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Bh
cnNlci9IVE1MUHJlbG9hZFNjYW5uZXIuY3BwCmluZGV4IDI4OTYyOGFlYTg5NWJiMjhjZDA2MzI2
NWI1ZTQ1YjY1M2E1MDU4ZjUuLjQ1NzIwZWU1OTRiOTcwODk0ZGZjOGYyN2VhM2RlNjg1OGQwZTQ0
NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQcmVsb2FkU2Nh
bm5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFByZWxvYWRTY2Fu
bmVyLmNwcApAQCAtODIsMTMgKzgyLDEzIEBAIFN0cmluZyBUb2tlblByZWxvYWRTY2FubmVyOjpp
bml0aWF0b3JGb3IoVGFnSWQgdGFnSWQpCiAgICAgc3dpdGNoICh0YWdJZCkgewogICAgIGNhc2Ug
VGFnSWQ6OlNvdXJjZToKICAgICBjYXNlIFRhZ0lkOjpJbWc6Ci0gICAgICAgIHJldHVybiAiaW1n
Il9zOworICAgICAgICByZXR1cm4gImltZyJfc3RyOwogICAgIGNhc2UgVGFnSWQ6OklucHV0Ogot
ICAgICAgICByZXR1cm4gImlucHV0Il9zOworICAgICAgICByZXR1cm4gImlucHV0Il9zdHI7CiAg
ICAgY2FzZSBUYWdJZDo6TGluazoKLSAgICAgICAgcmV0dXJuICJsaW5rIl9zOworICAgICAgICBy
ZXR1cm4gImxpbmsiX3N0cjsKICAgICBjYXNlIFRhZ0lkOjpTY3JpcHQ6Ci0gICAgICAgIHJldHVy
biAic2NyaXB0Il9zOworICAgICAgICByZXR1cm4gInNjcmlwdCJfc3RyOwogICAgIGNhc2UgVGFn
SWQ6OlVua25vd246CiAgICAgY2FzZSBUYWdJZDo6U3R5bGU6CiAgICAgY2FzZSBUYWdJZDo6QmFz
ZToKQEAgLTk2LDEwICs5NiwxMCBAQCBTdHJpbmcgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6aW5pdGlh
dG9yRm9yKFRhZ0lkIHRhZ0lkKQogICAgIGNhc2UgVGFnSWQ6Ok1ldGE6CiAgICAgY2FzZSBUYWdJ
ZDo6UGljdHVyZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biAidW5rbm93biJfczsKKyAgICAgICAgcmV0dXJuICJ1bmtub3duIl9zdHI7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiAidW5rbm93biJfczsKKyAgICByZXR1
cm4gInVua25vd24iX3N0cjsKIH0KIAogY2xhc3MgVG9rZW5QcmVsb2FkU2Nhbm5lcjo6U3RhcnRU
YWdTY2FubmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJpdHlPcmln
aW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdpbi5jcHAKaW5kZXggNGJh
NTE5MWU2YjNlNDA5ODc5YzIxOWMxNjZhODNmZTcxMmEzNTg3YS4uZTE4YTU0YzdlNzFiNzBkODRh
NzVjOTllNjg1YjU2Yjg4ZDM3NjU0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9T
ZWN1cml0eU9yaWdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eU9yaWdp
bi5jcHAKQEAgLTUzOCw5ICs1MzgsOSBAQCB2b2lkIFNlY3VyaXR5T3JpZ2luOjpzZXRFbmZvcmNl
c0ZpbGVQYXRoU2VwYXJhdGlvbigpCiBTdHJpbmcgU2VjdXJpdHlPcmlnaW46OnRvU3RyaW5nKCkg
Y29uc3QKIHsKICAgICBpZiAoaXNVbmlxdWUoKSkKLSAgICAgICAgcmV0dXJuICJudWxsIl9zOwor
ICAgICAgICByZXR1cm4gIm51bGwiX3N0cjsKICAgICBpZiAobV9kYXRhLnByb3RvY29sID09ICJm
aWxlIiAmJiBtX2VuZm9yY2VzRmlsZVBhdGhTZXBhcmF0aW9uKQotICAgICAgICByZXR1cm4gIm51
bGwiX3M7CisgICAgICAgIHJldHVybiAibnVsbCJfc3RyOwogICAgIHJldHVybiB0b1Jhd1N0cmlu
ZygpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2lu
RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NlY3VyaXR5T3JpZ2luRGF0YS5jcHAKaW5k
ZXggMmQzODZkYjFmZjNjNjJjYWZhNzk5ZTU4MmY3ZTVjMDI1YmYwZGMzYy4uOTE4OTgzN2Y0ZmY5
MjhhYzM5OTZkZDllNjI5YTk2MTcyODZmZGMxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eU9yaWdpbkRhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2Vj
dXJpdHlPcmlnaW5EYXRhLmNwcApAQCAtMzksNyArMzksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBTdHJpbmcgU2VjdXJpdHlPcmlnaW5EYXRhOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgaWYg
KHByb3RvY29sID09ICJmaWxlIikKLSAgICAgICAgcmV0dXJuICJmaWxlOi8vIl9zOworICAgICAg
ICByZXR1cm4gImZpbGU6Ly8iX3N0cjsKIAogICAgIGlmIChwcm90b2NvbC5pc0VtcHR5KCkgJiYg
aG9zdC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB7IH07CkBAIC04MSw3ICs4MSw3IEBAIFN0
cmluZyBTZWN1cml0eU9yaWdpbkRhdGE6OmRhdGFiYXNlSWRlbnRpZmllcigpIGNvbnN0CiAgICAg
Ly8gTm93IHRoYXQgd2UndmUgZml4ZWQgdGhhdCBidWcsIHdlIHByb2R1Y2UgdGhpcyBzdHJpbmcg
Zm9yIGNvbXBhdGliaWxpdHkKICAgICAvLyB3aXRoIGV4aXN0aW5nIHBlcnNpc3RlbnQgc3RhdGUu
CiAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocHJvdG9jb2wsICJmaWxlIikpCi0gICAg
ICAgIHJldHVybiAiZmlsZV9fMCJfczsKKyAgICAgICAgcmV0dXJuICJmaWxlX18wIl9zdHI7CiAK
ICAgICByZXR1cm4gbWFrZVN0cmluZyhwcm90b2NvbCwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBGaWxl
U3lzdGVtOjplbmNvZGVGb3JGaWxlTmFtZShob3N0KSwgc2VwYXJhdG9yQ2hhcmFjdGVyLCBwb3J0
LnZhbHVlX29yKDApKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2VjdXJp
dHlQb2xpY3kuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0eVBvbGljeS5jcHAKaW5k
ZXggZGIwOTRhMDJkMzFjZjNiYzMzZDc5ZThlNzFkODBjOWQzNmE3ZGM4MC4uNzgwYTIxNDRjYzQ5
ODhjZTJiNDRkMDBhM2Q5MTljNTY3YWZlZTY2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9TZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZWN1cml0
eVBvbGljeS5jcHAKQEAgLTE0NiwxNiArMTQ2LDE2IEBAIFN0cmluZyBTZWN1cml0eVBvbGljeTo6
Z2VuZXJhdGVPcmlnaW5IZWFkZXIoUmVmZXJyZXJQb2xpY3kgcmVmZXJyZXJQb2xpY3ksIGNvbnN0
CiB7CiAgICAgc3dpdGNoIChyZWZlcnJlclBvbGljeSkgewogICAgIGNhc2UgUmVmZXJyZXJQb2xp
Y3k6Ok5vUmVmZXJyZXI6Ci0gICAgICAgIHJldHVybiAibnVsbCJfczsKKyAgICAgICAgcmV0dXJu
ICJudWxsIl9zdHI7CiAgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6Tm9SZWZlcnJlcldoZW5Eb3du
Z3JhZGU6CiAgICAgY2FzZSBSZWZlcnJlclBvbGljeTo6U3RyaWN0T3JpZ2luOgogICAgIGNhc2Ug
UmVmZXJyZXJQb2xpY3k6OlN0cmljdE9yaWdpbldoZW5Dcm9zc09yaWdpbjoKICAgICAgICAgaWYg
KHByb3RvY29sSXMoc2VjdXJpdHlPcmlnaW4ucHJvdG9jb2woKSwgImh0dHBzIikgJiYgIXVybC5w
cm90b2NvbElzKCJodHRwcyIpKQotICAgICAgICAgICAgcmV0dXJuICJudWxsIl9zOworICAgICAg
ICAgICAgcmV0dXJuICJudWxsIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVmZXJy
ZXJQb2xpY3k6OlNhbWVPcmlnaW46CiAgICAgICAgIGlmICghc2VjdXJpdHlPcmlnaW4uY2FuUmVx
dWVzdCh1cmwpKQotICAgICAgICAgICAgcmV0dXJuICJudWxsIl9zOworICAgICAgICAgICAgcmV0
dXJuICJudWxsIl9zdHI7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgUmVmZXJyZXJQb2xpY3k6
OkVtcHR5U3RyaW5nOgogICAgIGNhc2UgUmVmZXJyZXJQb2xpY3k6Ok9yaWdpbjoKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL0NvbnRlbnRUeXBlLmNwcAppbmRleCA3NTEyYjAyM2Q1YTI0MTY5Zjg1ZTQ4
MGMxZTBiMDg2N2IxNmEwYzY5Li5kODRhODBjODA2ODFhYjQ1ODgzMzVlYjJiOTljZTljN2ZmZTE4
YjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Db250ZW50VHlwZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vQ29udGVudFR5cGUuY3BwCkBAIC00NSwxMyAr
NDUsMTMgQEAgQ29udGVudFR5cGU6OkNvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5
cGUpCiAKIGNvbnN0IFN0cmluZyYgQ29udGVudFR5cGU6OmNvZGVjc1BhcmFtZXRlcigpCiB7Ci0g
ICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gY29kZWNzIHsgImNvZGVjcyJfcyB9Owor
ICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IGNvZGVjcyB7ICJjb2RlY3MiX3N0ciB9
OwogICAgIHJldHVybiBjb2RlY3M7CiB9CiAKIGNvbnN0IFN0cmluZyYgQ29udGVudFR5cGU6OnBy
b2ZpbGVzUGFyYW1ldGVyKCkKIHsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBw
cm9maWxlcyB7ICJwcm9maWxlcyJfcyB9OworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJp
bmc+IHByb2ZpbGVzIHsgInByb2ZpbGVzIl9zdHIgfTsKICAgICByZXR1cm4gcHJvZmlsZXM7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0RlY2ltYWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKaW5kZXggOWVjMDE3MmEyMWE5OGRjODA3
YTRjMTY3NzU3ZTczNWFiZTIzNTg0OC4uYzc0ZDA5YTUxNTMyOGJlYzA4NmFlN2Q5MDU2ZWQ4NDY5
ZmE4MTg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRGVjaW1hbC5jcHAKQEAgLTk1MiwxMCArOTUy
LDEwIEBAIFN0cmluZyBEZWNpbWFsOjp0b1N0cmluZygpIGNvbnN0CiB7CiAgICAgc3dpdGNoICht
X2RhdGEuZm9ybWF0Q2xhc3MoKSkgewogICAgIGNhc2UgRW5jb2RlZERhdGE6OkNsYXNzSW5maW5p
dHk6Ci0gICAgICAgIHJldHVybiBzaWduKCkgPyAiLUluZmluaXR5Il9zIDogIkluZmluaXR5Il9z
OworICAgICAgICByZXR1cm4gc2lnbigpID8gIi1JbmZpbml0eSJfc3RyIDogIkluZmluaXR5Il9z
dHI7CiAKICAgICBjYXNlIEVuY29kZWREYXRhOjpDbGFzc05hTjoKLSAgICAgICAgcmV0dXJuICJO
YU4iX3M7CisgICAgICAgIHJldHVybiAiTmFOIl9zdHI7CiAKICAgICBjYXNlIEVuY29kZWREYXRh
OjpDbGFzc05vcm1hbDoKICAgICBjYXNlIEVuY29kZWREYXRhOjpDbGFzc1plcm86CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3RyYWJsZURvbWFpbi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vUmVnaXN0cmFibGVEb21haW4uaAppbmRleCBiY2U4YzQzMDM0MGZl
NjcwYmMyNDljZGYxN2I5ODY5YTQ0YWI4NjIwLi40ZTljMTZhYzBkZDFmZmIzYWE4MTRiNDQ3ZDky
ZmE2MDhjNmNlODVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9SZWdpc3Ry
YWJsZURvbWFpbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1JlZ2lzdHJhYmxlRG9t
YWluLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgUmVnaXN0cmFibGVEb21haW4oU3RyaW5nJiYgZG9tYWluKQotICAgICAgICA6IG1fcmVn
aXN0cmFibGVEb21haW4geyBkb21haW4uaXNFbXB0eSgpID8gIm51bGxPcmlnaW4iX3MgOiBXVEZN
b3ZlKGRvbWFpbikgfQorICAgICAgICA6IG1fcmVnaXN0cmFibGVEb21haW4geyBkb21haW4uaXNF
bXB0eSgpID8gIm51bGxPcmlnaW4iX3N0ciA6IFdURk1vdmUoZG9tYWluKSB9CiAgICAgewogICAg
IH0KIApAQCAtMTI4LDcgKzEyOCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGF1dG8gZG9tYWluID0g
aG9zdDsKICNlbmRpZgogICAgICAgICBpZiAoaG9zdC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBk
b21haW4gPSAibnVsbE9yaWdpbiJfczsKKyAgICAgICAgICAgIGRvbWFpbiA9ICJudWxsT3JpZ2lu
Il9zdHI7CiAgICAgICAgIGVsc2UgaWYgKGRvbWFpbi5pc0VtcHR5KCkpCiAgICAgICAgICAgICBk
b21haW4gPSBob3N0OwogICAgICAgICByZXR1cm4gZG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAKaW5kZXggOTdiMjA1
N2Y2YTQwZmRlYmU0ZGQzNTZkZjNjMzc0YjA4NmU1YWY3Ni4uZWI1MGQxYzE1ODVlN2RhYmVhZWVm
Mjk3Njg5Mzg0ODgxYWFmZjYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwCkBAIC0xOTgsMTMgKzE5OCwxMyBAQCBTdHJp
bmcgVGltaW5nRnVuY3Rpb246OmNzc1RleHQoKSBjb25zdAogICAgIGlmIChtX3R5cGUgPT0gVGlt
aW5nRnVuY3Rpb246OkN1YmljQmV6aWVyRnVuY3Rpb24pIHsKICAgICAgICAgYXV0byYgZnVuY3Rp
b24gPSBkb3duY2FzdDxDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uPigqdGhpcyk7CiAgICAgICAg
IGlmIChmdW5jdGlvbi54MSgpID09IDAuMjUgJiYgZnVuY3Rpb24ueTEoKSA9PSAwLjEgJiYgZnVu
Y3Rpb24ueDIoKSA9PSAwLjI1ICYmIGZ1bmN0aW9uLnkyKCkgPT0gMS4wKQotICAgICAgICAgICAg
cmV0dXJuICJlYXNlIjsKKyAgICAgICAgICAgIHJldHVybiAiZWFzZSJfc3RyOwogICAgICAgICBp
ZiAoZnVuY3Rpb24ueDEoKSA9PSAwLjQyICYmICFmdW5jdGlvbi55MSgpICYmIGZ1bmN0aW9uLngy
KCkgPT0gMS4wICYmIGZ1bmN0aW9uLnkyKCkgPT0gMS4wKQotICAgICAgICAgICAgcmV0dXJuICJl
YXNlLWluIjsKKyAgICAgICAgICAgIHJldHVybiAiZWFzZS1pbiJfc3RyOwogICAgICAgICBpZiAo
IWZ1bmN0aW9uLngxKCkgJiYgIWZ1bmN0aW9uLnkxKCkgJiYgZnVuY3Rpb24ueDIoKSA9PSAwLjU4
ICYmIGZ1bmN0aW9uLnkyKCkgPT0gMS4wKQotICAgICAgICAgICAgcmV0dXJuICJlYXNlLW91dCI7
CisgICAgICAgICAgICByZXR1cm4gImVhc2Utb3V0Il9zdHI7CiAgICAgICAgIGlmIChmdW5jdGlv
bi54MSgpID09IDAuNDIgJiYgIWZ1bmN0aW9uLnkxKCkgJiYgZnVuY3Rpb24ueDIoKSA9PSAwLjU4
ICYmIGZ1bmN0aW9uLnkyKCkgPT0gMS4wKQotICAgICAgICAgICAgcmV0dXJuICJlYXNlLWluLW91
dCI7CisgICAgICAgICAgICByZXR1cm4gImVhc2UtaW4tb3V0Il9zdHI7CiAgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKCJjdWJpYy1iZXppZXIoIiwgZnVuY3Rpb24ueDEoKSwgIiwgIiwgZnVuY3Rp
b24ueTEoKSwgIiwgIiwgZnVuY3Rpb24ueDIoKSwgIiwgIiwgZnVuY3Rpb24ueTIoKSwgJyknKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2lu
L0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggNjE5OWE0YzgwNmRhNGRmZjQ3ZDc4ZDVjZjViNWRlODA5
MDE3NjI5YS4uNDUwNGQwMThmMWQ3N2QyNDRiMzdjOWFiOGVlNmJiZjQ4MzIxMjE0YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDYWNoZVdp
bi5jcHAKQEAgLTM3OCwxMSArMzc4LDExIEBAIFJlZjxGb250PiBGb250Q2FjaGU6Omxhc3RSZXNv
cnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3JpcHRpCiAgICAg
ICAgIC8vIFNvcnRlZCBieSBtb3N0IHRvIGxlYXN0IGdseXBocyBhY2NvcmRpbmcgdG8gaHR0cDov
L2VuLndpa2lwZWRpYS5vcmcvd2lraS9Vbmljb2RlX3R5cGVmYWNlcwogICAgICAgICAvLyBTdGFy
dCB3aXRoIFRpbWVzIE5ldyBSb21hbiBhbHNvIHNpbmNlIGl0IGlzIHRoZSBkZWZhdWx0IGlmIHRo
ZSB1c2VyIGRvZXNuJ3QgY2hhbmdlIHByZWZzLgogICAgICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95
ZWQ8Y29uc3QgU3RyaW5nPiBmYWxsYmFja0ZvbnRzW10gPSB7Ci0gICAgICAgICAgICBTdHJpbmco
IlRpbWVzIE5ldyBSb21hbiIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLAotICAgICAg
ICAgICAgU3RyaW5nKCJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIFN0cmluZzo6Q29uc3RydWN0RnJv
bUxpdGVyYWwpLAotICAgICAgICAgICAgU3RyaW5nKCJUYWhvbWEiLCBTdHJpbmc6OkNvbnN0cnVj
dEZyb21MaXRlcmFsKSwKLSAgICAgICAgICAgIFN0cmluZygiTHVjaWRhIFNhbnMgVW5pY29kZSIs
IFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLAotICAgICAgICAgICAgU3RyaW5nKCJBcmlh
bCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpCisgICAgICAgICAgICAiVGltZXMgTmV3
IFJvbWFuIl9zdHIsCisgICAgICAgICAgICAiTWljcm9zb2Z0IFNhbnMgU2VyaWYiX3N0ciwKKyAg
ICAgICAgICAgICJUYWhvbWEiX3N0ciwKKyAgICAgICAgICAgICJMdWNpZGEgU2FucyBVbmljb2Rl
Il9zdHIsCisgICAgICAgICAgICAiQXJpYWwiX3N0cgogICAgICAgICB9OwogICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZmFsbGJhY2tGb250cyk7ICsraSkg
ewogICAgICAgICAgICAgaWYgKGZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9uLCBmYWxsYmFj
a0ZvbnRzW2ldKSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
RmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVt
LmNwcAppbmRleCA1Zjk2Yjc1NmQzOTZlMGQ5OTIxOGNkYjQxNGY5MzhjOTZkOTk0NmE5Li45OTk1
NzVhNmVjMjcyZjhiNDIxYmJlMDI0MTI3MGQ5NjQzMGJjZTM0IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtODQwLDcgKzg0MCw3IEBAIFRFU1Rf
RihGaWxlU3lzdGVtVGVzdCwgcmVhZEVudGlyZUZpbGUpCiBURVNUX0YoRmlsZVN5c3RlbVRlc3Qs
IG1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKQogewogICAgIEVYUEVDVF9UUlVFKEZpbGVT
eXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHRlbXBGaWxlUGF0aCgpKSk7Ci0g
ICAgYXV0byByZXN1bHQgPSBGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0
aChTdHJpbmcoIlRoaXNpc25vdGFyZWFsZmlsZSIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVy
YWwpKTsKKyAgICBhdXRvIHJlc3VsdCA9IEZpbGVTeXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlN
YXBGb3JQYXRoKCJUaGlzaXNub3RhcmVhbGZpbGUiX3N0cik7CiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogICAgIC8vIE5TRmlsZVBy
b3RlY3Rpb25LZXkgb25seSBhY3R1YWxseSBtZWFucyBhbnl0aGluZyBvbi1kZXZpY2UuCiAgICAg
RVhQRUNUX0ZBTFNFKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dURi9XVEZTdHJpbmcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RG
U3RyaW5nLmNwcAppbmRleCAwZTBlOWM3Zjg4N2YzZWFmN2M0Nzc1YTAxNGYxZTZjY2E4ZDQxMGYx
Li5mMWU3MzQ5N2NmNzM5N2VlNTNjNjUzMWY5Yzc3NDJiYTdmYmVkMjY4IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcuY3BwCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKQEAgLTQ3LDEyICs0Nyw2IEBAIFRF
U1QoV1RGLCBTdHJpbmdDcmVhdGlvbkZyb21MaXRlcmFsKQogICAgIEVYUEVDVF9FUSgiU3RyaW5n
IExpdGVyYWwiLCBzdHJpbmdGcm9tTGl0ZXJhbCk7CiAgICAgRVhQRUNUX1RSVUUoc3RyaW5nRnJv
bUxpdGVyYWwuaXM4Qml0KCkpOwogICAgIEVYUEVDVF9FUShTdHJpbmcoIlN0cmluZyBMaXRlcmFs
IiksIHN0cmluZ0Zyb21MaXRlcmFsKTsKLQotICAgIFN0cmluZyBzdHJpbmdXaXRoVGVtcGxhdGUo
IlRlbXBsYXRlIExpdGVyYWwiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsKLSAgICBF
WFBFQ1RfRVEoc3RybGVuKCJUZW1wbGF0ZSBMaXRlcmFsIiksIHN0cmluZ1dpdGhUZW1wbGF0ZS5s
ZW5ndGgoKSk7Ci0gICAgRVhQRUNUX0VRKCJUZW1wbGF0ZSBMaXRlcmFsIiwgc3RyaW5nV2l0aFRl
bXBsYXRlKTsKLSAgICBFWFBFQ1RfVFJVRShzdHJpbmdXaXRoVGVtcGxhdGUuaXM4Qml0KCkpOwot
ICAgIEVYUEVDVF9FUShTdHJpbmcoIlRlbXBsYXRlIExpdGVyYWwiKSwgc3RyaW5nV2l0aFRlbXBs
YXRlKTsKIH0KIAogVEVTVChXVEYsIFN0cmluZ0FTQ0lJKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455460</attachid>
            <date>2022-03-22 17:49:40 -0700</date>
            <delta_ts>2022-03-22 17:52:47 -0700</delta_ts>
            <desc>Geoff&apos;s alternative proposal</desc>
            <filename>238162_s_suffix_no_strlen_geoff_proposal_wip.patch</filename>
            <type>text/plain</type>
            <size>149929</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZWYwZmY2MmE3OGEzLi42Nzkx
ZmFlYzI0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDAsOSAr
MTAwLDkgQEAgc3RhdGljIFQgcGFyc2VCcmVha3BvaW50T3B0aW9ucyhQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNPTjoKICAgICBzaXplX3QgaWdub3JlQ291bnQg
PSAwOwogCiAgICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgY29uZGl0aW9uID0gb3B0aW9ucy0+
Z2V0U3RyaW5nKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmNvbmRpdGlv
bktleSk7CisgICAgICAgIGNvbmRpdGlvbiA9IG9wdGlvbnMtPmdldFN0cmluZyhTdHJpbmcgeyBQ
cm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjpjb25kaXRpb25LZXkgfSk7CiAK
LSAgICAgICAgYXV0byBhY3Rpb25zUGF5bG9hZCA9IG9wdGlvbnMtPmdldEFycmF5KFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmFjdGlvbnNLZXkpOworICAgICAgICBhdXRv
IGFjdGlvbnNQYXlsb2FkID0gb3B0aW9ucy0+Z2V0QXJyYXkoU3RyaW5nIHsgUHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6YWN0aW9uc0tleSB9KTsKICAgICAgICAgaWYgKGF1
dG8gY291bnQgPSBhY3Rpb25zUGF5bG9hZCA/IGFjdGlvbnNQYXlsb2FkLT5sZW5ndGgoKSA6IDAp
IHsKICAgICAgICAgICAgIGFjdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CiAK
QEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgVCBwYXJzZUJyZWFrcG9pbnRPcHRpb25zKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGF1dG8gYWN0aW9uVHlwZVN0cmluZyA9IGFjdGlvbk9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6dHlwZUtleSk7CisgICAgICAgICAgICAgICAg
YXV0byBhY3Rpb25UeXBlU3RyaW5nID0gYWN0aW9uT2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsg
UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjp0eXBlS2V5IH0pOwogICAgICAg
ICAgICAgICAgIGlmICghYWN0aW9uVHlwZVN0cmluZykgewogICAgICAgICAgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHR5cGUgZm9yIGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEyNSwyMCArMTI1LDIwIEBAIHN0
YXRpYyBUIHBhcnNlQnJlYWtwb2ludE9wdGlvbnMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgUmVmUHRyPEpTT046CiAKICAgICAgICAgICAgICAgICBKU0M6OkJyZWFrcG9pbnQ6
OkFjdGlvbiBhY3Rpb24oKmFjdGlvblR5cGUpOwogCi0gICAgICAgICAgICAgICAgYWN0aW9uLmRh
dGEgPSBhY3Rpb25PYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9p
bnRBY3Rpb246OmRhdGFLZXkpOworICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gYWN0aW9u
T2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
QWN0aW9uOjpkYXRhS2V5IH0pOwogCiAgICAgICAgICAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBp
ZGVudGlmaWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBz
YW1wbGVzCiAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0aXBs
ZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgotICAg
ICAgICAgICAgICAgIGFjdGlvbi5pZCA9IGFjdGlvbk9iamVjdC0+Z2V0SW50ZWdlcihQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OmlkS2V5KS52YWx1ZV9vcihKU0M6Om5vQnJl
YWtwb2ludEFjdGlvbklEKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uaWQgPSBhY3Rpb25PYmpl
Y3QtPmdldEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0
aW9uOjppZEtleSB9KS52YWx1ZV9vcihKU0M6Om5vQnJlYWtwb2ludEFjdGlvbklEKTsKIAotICAg
ICAgICAgICAgICAgIGFjdGlvbi5lbXVsYXRlVXNlckdlc3R1cmUgPSBhY3Rpb25PYmplY3QtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjplbXVsYXRlVXNl
ckdlc3R1cmVLZXkpLnZhbHVlX29yKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uZW11
bGF0ZVVzZXJHZXN0dXJlID0gYWN0aW9uT2JqZWN0LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6ZW11bGF0ZVVzZXJHZXN0dXJlS2V5IH0p
LnZhbHVlX29yKGZhbHNlKTsKIAogICAgICAgICAgICAgICAgIGFjdGlvbnMudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFByb3RvY29sOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSkudmFsdWVfb3IoZmFsc2UpOwotICAg
ICAgICBpZ25vcmVDb3VudCA9IG9wdGlvbnMtPmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50T3B0aW9uczo6aWdub3JlQ291bnRLZXkpLnZhbHVlX29yKDApOworICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSB9KS52YWx1ZV9vcihm
YWxzZSk7CisgICAgICAgIGlnbm9yZUNvdW50ID0gb3B0aW9ucy0+Z2V0SW50ZWdlcihTdHJpbmcg
eyBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjppZ25vcmVDb3VudEtleSB9
KS52YWx1ZV9vcigwKTsKICAgICB9CiAKICAgICByZXR1cm4gY2FsbGJhY2soY29uZGl0aW9uLCBX
VEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKQEAgLTUxOCw3ICs1
MTgsNyBAQCBzdGF0aWMgUmVmPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGJ1aWxkRGVi
dWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcAogCiBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0
aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVj
dCYgbG9jYXRpb24sIEpTQzo6U291cmNlSUQmIHNvdXJjZUlELCB1bnNpZ25lZCYgbGluZU51bWJl
ciwgdW5zaWduZWQmIGNvbHVtbk51bWJlcikKIHsKLSAgICBhdXRvIGxpbmVOdW1iZXJWYWx1ZSA9
IGxvY2F0aW9uLmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6bGluZU51
bWJlcktleSk7CisgICAgYXV0byBsaW5lTnVtYmVyVmFsdWUgPSBsb2NhdGlvbi5nZXRJbnRlZ2Vy
KFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmxpbmVOdW1iZXJLZXkgfSk7
CiAgICAgaWYgKCFsaW5lTnVtYmVyVmFsdWUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5l
eHBlY3RlZCBub24taW50ZWdlciBsaW5lTnVtYmVyIGluIGdpdmVuIGxvY2F0aW9uIl9zOwogICAg
ICAgICBzb3VyY2VJRCA9IEpTQzo6bm9Tb3VyY2VJRDsKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0
aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IEpTT046Ok9iamVjdAogCiAgICAgbGluZU51bWJlciA9ICpsaW5lTnVtYmVyVmFsdWU7
CiAKLSAgICBhdXRvIHNjcmlwdElEU3RyID0gbG9jYXRpb24uZ2V0U3RyaW5nKFByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb246OnNjcmlwdElkS2V5KTsKKyAgICBhdXRvIHNjcmlwdElEU3RyID0g
bG9jYXRpb24uZ2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246
OnNjcmlwdElkS2V5IH0pOwogICAgIGlmICghc2NyaXB0SURTdHIpIHsKICAgICAgICAgc291cmNl
SUQgPSBKU0M6Om5vU291cmNlSUQ7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhlcGN0ZWQg
bm9uLXN0cmluZyBzY3JpcHRJZCBpbiBnaXZlbiBsb2NhdGlvbiJfczsKQEAgLTUzNSw3ICs1MzUs
NyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdAogICAgIH0KIAogICAgIHNvdXJjZUlEID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SURTdHIp
LnZhbHVlX29yKDApOwotICAgIGNvbHVtbk51bWJlciA9IGxvY2F0aW9uLmdldEludGVnZXIoUHJv
dG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y29sdW1uTnVtYmVyS2V5KS52YWx1ZV9vcigwKTsK
KyAgICBjb2x1bW5OdW1iZXIgPSBsb2NhdGlvbi5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29s
OjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNvbHVtbk51bWJlcktleSB9KS52YWx1ZV9vcigwKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
NmU5NzY2MjExODYzLi5kMWM5YWEyNjc1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6b3B0
aW9uYWw8aW50PiAvKiBzYXZlUmVzdWx0SW5kZXggKi8+IEluc3BlY3RvclJ1bnRpCiAKICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdDsKIAotICAgIGF1dG8gb2JqZWN0SWQgPSBjYWxs
QXJndW1lbnQtPmdldFN0cmluZyhQcm90b2NvbDo6UnVudGltZTo6Q2FsbEFyZ3VtZW50OjpvYmpl
Y3RJZEtleSk7CisgICAgYXV0byBvYmplY3RJZCA9IGNhbGxBcmd1bWVudC0+Z2V0U3RyaW5nKFN0
cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpDYWxsQXJndW1lbnQ6Om9iamVjdElkS2V5IH0pOwog
ICAgIGlmICghb2JqZWN0SWQpIHsKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNj
cmlwdEZvckV2YWwoZXJyb3JTdHJpbmcsIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSk7CiAg
ICAgICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCkBAIC00MDgsOSArNDA4LDkg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1
bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+PgogICAgICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmV4cGVjdGVkIG5vbi1vYmplY3QgaXRlbSBp
biBsb2NhdGlvbnMiX3MpOwogCi0gICAgICAgIGF1dG8gZGVzY3JpcHRvciA9IGxvY2F0aW9uLT5n
ZXRJbnRlZ2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OnR5cGVJbmZvcm1hdGlv
bkRlc2NyaXB0b3JLZXkpLnZhbHVlX29yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3Jt
YWwpOwotICAgICAgICBhdXRvIHNvdXJjZUlEU3RyaW5nID0gbG9jYXRpb24tPmdldFN0cmluZyhQ
cm90b2NvbDo6UnVudGltZTo6VHlwZUxvY2F0aW9uOjpzb3VyY2VJREtleSk7Ci0gICAgICAgIGF1
dG8gZGl2b3QgPSBsb2NhdGlvbi0+Z2V0SW50ZWdlcihQcm90b2NvbDo6UnVudGltZTo6VHlwZUxv
Y2F0aW9uOjpkaXZvdEtleSkudmFsdWVfb3IoMCk7CisgICAgICAgIGF1dG8gZGVzY3JpcHRvciA9
IGxvY2F0aW9uLT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0b3JLZXkgfSkudmFsdWVfb3IoVHlwZVByb2Zp
bGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCk7CisgICAgICAgIGF1dG8gc291cmNlSURTdHJpbmcg
PSBsb2NhdGlvbi0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnNvdXJjZUlES2V5IH0pOworICAgICAgICBhdXRvIGRpdm90ID0gbG9jYXRpb24tPmdl
dEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVMb2NhdGlvbjo6ZGl2b3RL
ZXkgfSkudmFsdWVfb3IoMCk7CiAKICAgICAgICAgYXV0byB0eXBlTG9jYXRpb24gPSBtX3ZtLnR5
cGVQcm9maWxlcigpLT5maW5kTG9jYXRpb24oZGl2b3QsIHBhcnNlSW50ZWdlcjx1aW50cHRyX3Q+
KHNvdXJjZUlEU3RyaW5nKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yPihkZXNjcmlwdG9yKSwgbV92bSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weQppbmRleCBkZWYyMWFjYWNmODguLjlkYTE0ZWM0NzM5YyAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weQpAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5
cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMu
YXBwZW5kKCd9OycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCdTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsnKQotICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICByZXR1cm4gZW51bV9jb25zdGFudF92YWx1ZXNbY29kZV07JykKKyAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIFN0cmluZyB7IGVudW1fY29uc3RhbnRfdmFs
dWVzW2NvZGVdIH07JykKICAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgcmV0dXJu
IFsnXG4nLmpvaW4obGluZXMpXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCBkYTYwMGVhMDBmMGMuLjFkZTg4YjE3YmRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ1
LDcgKzEwNDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQog
ICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7
CisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFN0cmlu
ZyB7IFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvciB9KSk7CiAgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihjb3VsZERlbGV0ZSkpOwogfQogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKIAogICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5p
c1N0cmljdCgpKQotICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKKyAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgVW5hYmxlVG9EZWxldGVQcm9w
ZXJ0eUVycm9yIH0pKTsKICAgICAKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGU5YmRiN2M4NWRhYS4uMGVkMTM2
YTc1NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDksNyArNDksNyBAQCBBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yOjpBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cgogCiB2b2lkIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6
OkFnZ3JlZ2F0ZUVycm9yKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgU3RyaW5nIHsgZXJy
b3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9LCBQcm9wZXJ0eUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIEFTU0VSVChpbmhlcml0cyh2
bSwgaW5mbygpKSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcAppbmRleCAxMTljZDVhMzliMTEuLjY5ZjZlMzg5
MTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRl
RXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBBZ2dyZWdhdGVFcnJv
clByb3RvdHlwZTo6QWdncmVnYXRlRXJyb3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIAogdm9pZCBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBlcnJvclR5cGVOYW1lKEVy
cm9yVHlwZTo6QWdncmVnYXRlRXJyb3IpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
U3RyaW5nIHsgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9KTsKICAg
ICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKaW5kZXggNDVh
MDAxM2FmMWM3Li43NWYyYWUwYjA3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyU2hhcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAg
ZW51bSBjbGFzcyBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIDogdWludDhfdCB7CiAgICAgU2hhcmVk
CiB9OwogCi1pbmxpbmUgQVNDSUlMaXRlcmFsIGFycmF5QnVmZmVyU2hhcmluZ01vZGVOYW1lKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUpCitpbmxpbmUgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBhcnJheUJ1ZmZlclNoYXJpbmdNb2RlTmFtZShBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
IHNoYXJpbmdNb2RlKQogewogICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKICAgICBjYXNlIEFy
cmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQ6CkBAIC00NCw3ICs0NCw3IEBAIGlubGluZSBB
U0NJSUxpdGVyYWwgYXJyYXlCdWZmZXJTaGFyaW5nTW9kZU5hbWUoQXJyYXlCdWZmZXJTaGFyaW5n
TW9kZSBzaGFyaW5nTW9kCiAgICAgICAgIHJldHVybiAiU2hhcmVkQXJyYXlCdWZmZXIiX3M7CiAg
ICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxs
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDE4MTVlMTQ3Yjk2NS4uZmUyZDJhODA2
M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCB1bnNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlzT2JqLCB1aW50NjRfdCBoZWFkZXIsIHUKICAgICBp
ZiAoaXNKU0FycmF5KHRoaXNPYmopKSB7CiAgICAgICAgIC8vIFNwZWMgc2F5cyBpZiB3ZSB3b3Vs
ZCBwcm9kdWNlIGFuIGFycmF5IG9mIHRoaXMgc2l6ZSwgd2UgbXVzdCB0aHJvdyBhIHJhbmdlIGVy
cm9yLgogICAgICAgICBpZiAoY291bnQgKyBsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCkpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKTsKKyAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBM
ZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExNDgsNyArMTE0OCw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NsaWNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsCiAgICAgICAgIHJlc3VsdCA9IHNwZWNpZXNSZXN1bHQuc2Vjb25kOwogICAgIGVs
c2UgewogICAgICAgICBpZiAoVU5MSUtFTFkoZW5kIC0gYmVnaW4gPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJv
cik7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgU3Ry
aW5nIHsgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KTsKICAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgICAgIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZW5kIC0gYmVnaW4pKTsKQEAgLTEyNDAsNyArMTI0MCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NwbGljZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhCiAgICAgICAgICAgICByZXN1bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29u
ZDsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYWN0dWFsRGVsZXRl
Q291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIExlbmd0aEV4Y2Vl
ZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1h
eGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gSlNBcnJheTo6
dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYWN0dWFsRGVsZXRlQ291bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDFlZWVlMmNiOWU0Ni4uMGIxZmEzZjgxNjA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2NoZWNrX3RkeikKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
dGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCiB7CiAgICAg
QkVHSU4oKTsKLSAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIFN0cmluZyB7IFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yIH0pKTsKIH0KIAogSlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9ub3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggZjYzOGI2NmRlYWUwLi5lMmFhOGRmMmMyOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTI3MiwxNiArMjcyLDIx
IEBAIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGhyb3dTY29wZSYgc2NvcGUpCiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QpKTsKIH0KIAotRXhjZXB0
aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dU
eXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgU3RyaW5nKGVycm9yTWVzc2FnZSkpOworICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBtZXNzYWdlKSk7CiB9CiAKLUV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbWVzc2FnZSkK
IHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWVzc2FnZSkpOwogfQogCitFeGNlcHRpb24qIHRocm93
VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3Bl
LCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsg
bWVzc2FnZSB9KSk7Cit9CisKIEV4Y2VwdGlvbiogdGhyb3dTeW50YXhFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFs
T2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAppbmRleCA1NGIxNDk0
NThmZjIuLmE3ZDgxNDNjN2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
CkBAIC03OCw4ICs3OCw5IEBAIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oVk0mLCBKU09iamVjdCog
ZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CiAvLyBDb252ZW5pZW5jZSB3cmFw
cGVycywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdl
LgogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVD
YWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IHRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwotSlNfRVhQT1JU
X1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93
U2NvcGUmLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKTsKIEpTX0VYUE9SVF9QUklWQVRFIEV4
Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0
aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRo
cm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIEFTQ0lJTGl0ZXJhbCBl
cnJvck1lc3NhZ2UpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1N5bnRheEVy
cm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhj
ZXB0aW9uKiB0aHJvd1N5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIGlubGluZSBFeGNlcHRpb24qIHRocm93UmFuZ2VF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBlcnJvck1lc3NhZ2Up
KTsgfQpAQCAtOTUsOCArOTYsOSBAQCBpbmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEV4Y2VwdAogaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
aHJvd1Njb3BlJiBzY29wZSwgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yKSk7IH0KIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVy
cm9yKGdsb2JhbE9iamVjdCwgZXJyb3JNZXNzYWdlKSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgdGhyb3dWTVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JN
ZXNzYWdlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBTdHJpbmcgeyBlcnJvck1lc3NhZ2UgfSk7IH0KK2lubGluZSBFbmNvZGVk
SlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRo
cm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN0cmluZyB7IGVycm9yTWVzc2FnZSB9
KTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRo
cm93Vk1ET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01B
dHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBw
cm9wZXJ0eU5hbWUpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1ET01BdHRyaWJ1
dGVTZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29w
ZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01BdHRyaWJ1dGVTZXR0ZXJU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKaW5kZXggYTE3NjQ3YWM5YWEyLi4zZTJhM2Q5MzRmODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIEpTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xv
dyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHN3aXRjaCAocGFyc2VNb2RlKCkp
IHsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9k
ZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6
Ci0gICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0aW9uKiAiOworICAgICAgICBmdW5jdGlv
bkhlYWRlciA9ICJmdW5jdGlvbiogIl9zOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CkBAIC0xNTksMjYgKzE1OSwyNiBAQCBK
U1N0cmluZyogRnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JC
b2R5TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZToK
LSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiZnVuY3Rpb24gIjsKKyAgICAgICAgZnVuY3Rpb25I
ZWFkZXIgPSAiZnVuY3Rpb24gIl9zOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiIjsK
KyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSBlbXB0eVN0cmluZygpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRl
ciA9ICJhc3luYyBmdW5jdGlvbiAiOworICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBm
dW5jdGlvbiAiX3M7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6Ci0gICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5j
ICI7CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jICJfczsKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyRnVuY3Rp
b25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJN
ZXRob2RNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBmdW5jdGlvbiogIjsK
KyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5bmMgZnVuY3Rpb24qICJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmgKaW5kZXggMWM5ZmU1NTY1MDFmLi41YTllNTMzYmRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgogICAgIHN0YXRpYyBJZGVudGlm
aWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0Nv
dW50XSk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIEFTQ0lJTGl0ZXJh
bCk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGgpOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBM
Q2hhciosIGludCBsZW5ndGgpOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0m
LCBjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21T
dHJpbmcoVk0mLCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCmluZGV4IGE1NzJmNTdhNWM5Yy4uNTdkMDFkYTFi
M2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKQEAgLTkxLDYgKzkxLDExIEBAIGlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoVk0mIHZtLCBBU0NJSUxpdGVyYWwgcykKICAgICByZXR1cm4gSWRlbnRpZmll
cih2bSwgU3RyaW5nKHMpKTsKIH0KIAoraW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhWTSYgdm0sIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggcykKK3sKKyAgICByZXR1cm4g
SWRlbnRpZmllcih2bSwgU3RyaW5nKHMpKTsKK30KKwogaW5saW5lIElkZW50aWZpZXIgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhWTSYgdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKQogewog
ICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBzLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXggYjZiYjc1MTU4MGQ3Li41OWNm
NTM3MTE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxh
dG9yLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIEpTVmFsdWUgSW50bENvbGxhdG9yOjpjb21wYXJl
U3RyaW5ncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHgsCiAgICAg
cmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0b3I6
OnVzYWdlU3RyaW5nKFVzYWdlIHVzYWdlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsQ29s
bGF0b3I6OnVzYWdlU3RyaW5nKFVzYWdlIHVzYWdlKQogewogICAgIHN3aXRjaCAodXNhZ2UpIHsK
ICAgICBjYXNlIFVzYWdlOjpTb3J0OgpAQCAtMzMwLDEwICszMzAsMTAgQEAgQVNDSUlMaXRlcmFs
IEludGxDb2xsYXRvcjo6dXNhZ2VTdHJpbmcoVXNhZ2UgdXNhZ2UpCiAgICAgICAgIHJldHVybiAi
c2VhcmNoIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6
Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxDb2xsYXRvcjo6c2Vuc2l0aXZpdHlTdHJp
bmcoU2Vuc2l0aXZpdHkgc2Vuc2l0aXZpdHkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxD
b2xsYXRvcjo6c2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkgc2Vuc2l0aXZpdHkpCiB7CiAg
ICAgc3dpdGNoIChzZW5zaXRpdml0eSkgewogICAgIGNhc2UgU2Vuc2l0aXZpdHk6OkJhc2U6CkBA
IC0zNDYsMTAgKzM0NiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bENvbGxhdG9yOjpzZW5zaXRpdml0
eVN0cmluZyhTZW5zaXRpdml0eSBzZW5zaXRpdml0eSkKICAgICAgICAgcmV0dXJuICJ2YXJpYW50
Il9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwo
KTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxDb2xsYXRvcjo6Y2FzZUZpcnN0U3RyaW5nKENhc2VG
aXJzdCBjYXNlRmlyc3QpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxDb2xsYXRvcjo6Y2Fz
ZUZpcnN0U3RyaW5nKENhc2VGaXJzdCBjYXNlRmlyc3QpCiB7CiAgICAgc3dpdGNoIChjYXNlRmly
c3QpIHsKICAgICBjYXNlIENhc2VGaXJzdDo6RmFsc2U6CkBAIC0zNjAsNyArMzYwLDcgQEAgQVND
SUlMaXRlcmFsIEludGxDb2xsYXRvcjo6Y2FzZUZpcnN0U3RyaW5nKENhc2VGaXJzdCBjYXNlRmly
c3QpCiAgICAgICAgIHJldHVybiAidXBwZXIiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLWludGwuY29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCA4MGFhN2MzNmJh
NmMuLmE3ZTBjYjE1OTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yLmgKQEAgLTk0LDkgKzk0LDkgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIFVDb2xs
YXRvckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVjb2xfY2xvc2U+OwogCi0gICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCB1c2FnZVN0cmluZyhVc2FnZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzZW5z
aXRpdml0eVN0cmluZyhTZW5zaXRpdml0eSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjYXNl
Rmlyc3RTdHJpbmcoQ2FzZUZpcnN0KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0
aCB1c2FnZVN0cmluZyhVc2FnZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgg
c2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGNhc2VGaXJzdFN0cmluZyhDYXNlRmlyc3QpOwogCiAgICAgV3JpdGVCYXJyaWVy
PEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZENvbXBhcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVD
b2xsYXRvciwgVUNvbGxhdG9yRGVsZXRlcj4gbV9jb2xsYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGMyZDQ5
ZGE5OGE2Ni4uZTYxZmU4ZWI3MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZv
aWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICB1Y2FsX3NldEdyZWdvcmlhbkNoYW5nZShjYWwsIG1p
bkVDTUFTY3JpcHRUaW1lLCAmc3RhdHVzKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGlt
ZUZvcm1hdDo6aG91ckN5Y2xlU3RyaW5nKEhvdXJDeWNsZSBob3VyQ3ljbGUpCitBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6aG91ckN5Y2xlU3RyaW5nKEhvdXJDeWNs
ZSBob3VyQ3ljbGUpCiB7CiAgICAgc3dpdGNoIChob3VyQ3ljbGUpIHsKICAgICBjYXNlIEhvdXJD
eWNsZTo6SDExOgpAQCAtMTAxOSwxMyArMTAxOSwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0Ojpob3VyQ3ljbGVTdHJpbmcoSG91ckN5Y2xlIGhvdXJDeWNsZSkKICAgICAgICAg
cmV0dXJuICJoMjQiX3M7CiAgICAgY2FzZSBIb3VyQ3ljbGU6Ok5vbmU6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsK
KyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxp
dGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojp3ZWVrZGF5U3RyaW5nKFdlZWtkYXkgd2Vla2RheSkK
K0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojp3ZWVrZGF5U3RyaW5n
KFdlZWtkYXkgd2Vla2RheSkKIHsKICAgICBzd2l0Y2ggKHdlZWtkYXkpIHsKICAgICBjYXNlIFdl
ZWtkYXk6Ok5hcnJvdzoKQEAgLTEwMzYsMTMgKzEwMzYsMTMgQEAgQVNDSUlMaXRlcmFsIEludGxE
YXRlVGltZUZvcm1hdDo6d2Vla2RheVN0cmluZyhXZWVrZGF5IHdlZWtkYXkpCiAgICAgICAgIHJl
dHVybiAibG9uZyJfczsKICAgICBjYXNlIFdlZWtkYXk6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVy
YWwgSW50bERhdGVUaW1lRm9ybWF0OjplcmFTdHJpbmcoRXJhIGVyYSkKK0FTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0OjplcmFTdHJpbmcoRXJhIGVyYSkKIHsKICAgICBz
d2l0Y2ggKGVyYSkgewogICAgIGNhc2UgRXJhOjpOYXJyb3c6CkBAIC0xMDUzLDEzICsxMDUzLDEz
IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmVyYVN0cmluZyhFcmEgZXJhKQog
ICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2FzZSBFcmE6Ok5vbmU6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwo
KTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJ
SUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojp5ZWFyU3RyaW5nKFllYXIgeWVhcikKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojp5ZWFyU3RyaW5nKFllYXIgeWVh
cikKIHsKICAgICBzd2l0Y2ggKHllYXIpIHsKICAgICBjYXNlIFllYXI6OlR3b0RpZ2l0OgpAQCAt
MTA2OCwxMyArMTA2OCwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojp5ZWFy
U3RyaW5nKFllYXIgeWVhcikKICAgICAgICAgcmV0dXJuICJudW1lcmljIl9zOwogICAgIGNhc2Ug
WWVhcjo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1vbnRo
U3RyaW5nKE1vbnRoIG1vbnRoKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVG
b3JtYXQ6Om1vbnRoU3RyaW5nKE1vbnRoIG1vbnRoKQogewogICAgIHN3aXRjaCAobW9udGgpIHsK
ICAgICBjYXNlIE1vbnRoOjpUd29EaWdpdDoKQEAgLTEwODksMTMgKzEwODksMTMgQEAgQVNDSUlM
aXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6bW9udGhTdHJpbmcoTW9udGggbW9udGgpCiAgICAg
ICAgIHJldHVybiAibG9uZyJfczsKICAgICBjYXNlIE1vbnRoOjpOb25lOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlM
aXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6ZGF5U3RyaW5nKERheSBkYXkpCitBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6ZGF5U3RyaW5nKERheSBkYXkpCiB7CiAg
ICAgc3dpdGNoIChkYXkpIHsKICAgICBjYXNlIERheTo6VHdvRGlnaXQ6CkBAIC0xMTA0LDEzICsx
MTA0LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRheVN0cmluZyhEYXkg
ZGF5KQogICAgICAgICByZXR1cm4gIm51bWVyaWMiX3M7CiAgICAgY2FzZSBEYXk6Ok5vbmU6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwog
fQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0OjpkYXlQZXJpb2RTdHJpbmcoRGF5
UGVyaW9kIGRheVBlcmlvZCkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9y
bWF0OjpkYXlQZXJpb2RTdHJpbmcoRGF5UGVyaW9kIGRheVBlcmlvZCkKIHsKICAgICBzd2l0Y2gg
KGRheVBlcmlvZCkgewogICAgIGNhc2UgRGF5UGVyaW9kOjpOYXJyb3c6CkBAIC0xMTIxLDEzICsx
MTIxLDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRheVBlcmlvZFN0cmlu
ZyhEYXlQZXJpb2QgZGF5UGVyaW9kKQogICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2Fz
ZSBEYXlQZXJpb2Q6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFs
V2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0
Ojpob3VyU3RyaW5nKEhvdXIgaG91cikKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVU
aW1lRm9ybWF0Ojpob3VyU3RyaW5nKEhvdXIgaG91cikKIHsKICAgICBzd2l0Y2ggKGhvdXIpIHsK
ICAgICBjYXNlIEhvdXI6OlR3b0RpZ2l0OgpAQCAtMTEzNiwxMyArMTEzNiwxMyBAQCBBU0NJSUxp
dGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojpob3VyU3RyaW5nKEhvdXIgaG91cikKICAgICAgICAg
cmV0dXJuICJudW1lcmljIl9zOwogICAgIGNhc2UgSG91cjo6Tm9uZToKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0
ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1pbnV0ZVN0cmluZyhNaW51dGUgbWludXRlKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1pbnV0ZVN0cmluZyhNaW51
dGUgbWludXRlKQogewogICAgIHN3aXRjaCAobWludXRlKSB7CiAgICAgY2FzZSBNaW51dGU6OlR3
b0RpZ2l0OgpAQCAtMTE1MSwxMyArMTE1MSwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1l
Rm9ybWF0OjptaW51dGVTdHJpbmcoTWludXRlIG1pbnV0ZSkKICAgICAgICAgcmV0dXJuICJudW1l
cmljIl9zOwogICAgIGNhc2UgTWludXRlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxE
YXRlVGltZUZvcm1hdDo6c2Vjb25kU3RyaW5nKFNlY29uZCBzZWNvbmQpCitBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6c2Vjb25kU3RyaW5nKFNlY29uZCBzZWNvbmQp
CiB7CiAgICAgc3dpdGNoIChzZWNvbmQpIHsKICAgICBjYXNlIFNlY29uZDo6VHdvRGlnaXQ6CkBA
IC0xMTY2LDEzICsxMTY2LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNl
Y29uZFN0cmluZyhTZWNvbmQgc2Vjb25kKQogICAgICAgICByZXR1cm4gIm51bWVyaWMiX3M7CiAg
ICAgY2FzZSBTZWNvbmQ6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRl
cmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9y
bWF0Ojp0aW1lWm9uZU5hbWVTdHJpbmcoVGltZVpvbmVOYW1lIHRpbWVab25lTmFtZSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojp0aW1lWm9uZU5hbWVTdHJpbmco
VGltZVpvbmVOYW1lIHRpbWVab25lTmFtZSkKIHsKICAgICBzd2l0Y2ggKHRpbWVab25lTmFtZSkg
ewogICAgIGNhc2UgVGltZVpvbmVOYW1lOjpTaG9ydDoKQEAgLTExODksMTMgKzExODksMTMgQEAg
QVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6dGltZVpvbmVOYW1lU3RyaW5nKFRpbWVa
b25lTmFtZSB0aW1lWm9uZU5hbWUpCiAgICAgICAgIHJldHVybiAibG9uZ0dlbmVyaWMiX3M7CiAg
ICAgY2FzZSBUaW1lWm9uZU5hbWU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0Ojpmb3JtYXRTdHlsZVN0cmluZyhEYXRlVGltZVN0eWxlIHN0eWxlKQorQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFN0eWxlU3RyaW5nKERh
dGVUaW1lU3R5bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgRGF0
ZVRpbWVTdHlsZTo6RnVsbDoKQEAgLTEyMDgsMTAgKzEyMDgsMTAgQEAgQVNDSUlMaXRlcmFsIElu
dGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0U3R5bGVTdHJpbmcoRGF0ZVRpbWVTdHlsZSBzdHlsZSkK
ICAgICAgICAgcmV0dXJuICJzaG9ydCJfczsKICAgICBjYXNlIERhdGVUaW1lU3R5bGU6Ok5vbmU6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxs
KCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgp
OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwuZGF0ZXRpbWVmb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwpAQCAtMTI5Myw3ICsxMjkzLDcgQEAgSlNWYWx1
ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsdWUpIGMKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQp
KTsKIH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVRGF0ZUZvcm1hdEZp
ZWxkIGZpZWxkKQorc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggcGFydFR5cGVTdHJpbmco
VURhdGVGb3JtYXRGaWVsZCBmaWVsZCkKIHsKICAgICBzd2l0Y2ggKGZpZWxkKSB7CiAgICAgY2Fz
ZSBVREFUX0VSQV9GSUVMRDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggOGJmNjc3ZjRhODc5Li4yMTFmZjVjMDgyNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCkBAIC0xMDksMTggKzEwOSwxOCBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRGF0ZVRp
bWVTdHlsZSA6IHVpbnQ4X3QgeyBOb25lLCBGdWxsLCBMb25nLCBNZWRpdW0sIFNob3J0IH07CiAK
ICAgICB2b2lkIHNldEZvcm1hdHNGcm9tUGF0dGVybihTdHJpbmdWaWV3KTsKLSAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsIGhvdXJDeWNsZVN0cmluZyhIb3VyQ3ljbGUpOwotICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgd2Vla2RheVN0cmluZyhXZWVrZGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IGVyYVN0cmluZyhFcmEpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgeWVhclN0cmluZyhZZWFy
KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG1vbnRoU3RyaW5nKE1vbnRoKTsKLSAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIGRheVN0cmluZyhEYXkpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwg
ZGF5UGVyaW9kU3RyaW5nKERheVBlcmlvZCk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBob3Vy
U3RyaW5nKEhvdXIpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbWludXRlU3RyaW5nKE1pbnV0
ZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzZWNvbmRTdHJpbmcoU2Vjb25kKTsKLSAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHRpbWVab25lTmFtZVN0cmluZyhUaW1lWm9uZU5hbWUpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgZm9ybWF0U3R5bGVTdHJpbmcoRGF0ZVRpbWVTdHlsZSk7Cisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggaG91ckN5Y2xlU3RyaW5nKEhvdXJDeWNs
ZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggd2Vla2RheVN0cmluZyhXZWVr
ZGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlcmFTdHJpbmcoRXJhKTsK
KyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB5ZWFyU3RyaW5nKFllYXIpOworICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG1vbnRoU3RyaW5nKE1vbnRoKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBkYXlTdHJpbmcoRGF5KTsKKyAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBkYXlQZXJpb2RTdHJpbmcoRGF5UGVyaW9kKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBob3VyU3RyaW5nKEhvdXIpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG1pbnV0ZVN0cmluZyhNaW51dGUpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNlY29uZFN0cmluZyhTZWNvbmQpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHRpbWVab25lTmFtZVN0cmluZyhUaW1lWm9uZU5hbWUp
OworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGZvcm1hdFN0eWxlU3RyaW5nKERh
dGVUaW1lU3R5bGUpOwogCiAgICAgc3RhdGljIEhvdXJDeWNsZSBob3VyQ3ljbGVGcm9tU3ltYm9s
KFVDaGFyKTsKICAgICBzdGF0aWMgSG91ckN5Y2xlIHBhcnNlSG91ckN5Y2xlKGNvbnN0IFN0cmlu
ZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzLmNwcAppbmRleCBmYmU4NmU0YjdlYWEuLjk5NTY0YmRiZTc2MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKQEAgLTM2Niw3
ICszNjYsNyBAQCBKU09iamVjdCogSW50bERpc3BsYXlOYW1lczo6cmVzb2x2ZWRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9
CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpzdHlsZVN0cmluZyhTdHlsZSBzdHls
ZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJpbmco
U3R5bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgU3R5bGU6Ok5h
cnJvdzoKQEAgLTM3NywxMCArMzc3LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVz
OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJsb25nIl9zOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpu
dWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAot
QVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OnR5cGVTdHJpbmcoVHlwZSB0eXBlKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKFR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFR5cGU6Okxhbmd1YWdlOgpAQCAt
Mzk3LDEwICszOTcsMTAgQEAgQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OnR5cGVTdHJp
bmcoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gImRhdGVUaW1lRmllbGQiX3M7CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwo
KTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJ
SUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2sgZmFsbGJh
Y2spCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3Ry
aW5nKEZhbGxiYWNrIGZhbGxiYWNrKQogewogICAgIHN3aXRjaCAoZmFsbGJhY2spIHsKICAgICBj
YXNlIEZhbGxiYWNrOjpDb2RlOgpAQCAtNDA5LDEwICs0MDksMTAgQEAgQVNDSUlMaXRlcmFsIElu
dGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNrKQogICAgICAg
ICByZXR1cm4gIm5vbmUiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0
aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6bGFu
Z3VhZ2VEaXNwbGF5U3RyaW5nKExhbmd1YWdlRGlzcGxheSBsYW5ndWFnZURpc3BsYXkpCitBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEaXNwbGF5TmFtZXM6Omxhbmd1YWdlRGlzcGxheVN0cmlu
ZyhMYW5ndWFnZURpc3BsYXkgbGFuZ3VhZ2VEaXNwbGF5KQogewogICAgIHN3aXRjaCAobGFuZ3Vh
Z2VEaXNwbGF5KSB7CiAgICAgY2FzZSBMYW5ndWFnZURpc3BsYXk6OkRpYWxlY3Q6CkBAIC00MjEs
NyArNDIxLDcgQEAgQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6Omxhbmd1YWdlRGlzcGxh
eVN0cmluZyhMYW5ndWFnZURpc3BsYXkgbGFuZ3VhZ2VEaXMKICAgICAgICAgcmV0dXJuICJzdGFu
ZGFyZCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpu
dWxsKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCmluZGV4IGQ4MGRjM2Q4M2ExNS4uZmIyYjY4
Nzc0ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lcy5oCkBAIC02OSwxMCArNjksMTAgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZh
bGxiYWNrIDogdWludDhfdCB7IENvZGUsIE5vbmUgfTsKICAgICBlbnVtIGNsYXNzIExhbmd1YWdl
RGlzcGxheSA6IHVpbnQ4X3QgeyBEaWFsZWN0LCBTdGFuZGFyZCB9OwogCi0gICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0
eXBlU3RyaW5nKFR5cGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgZmFsbGJhY2tTdHJpbmco
RmFsbGJhY2spOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbGFuZ3VhZ2VEaXNwbGF5U3RyaW5n
KExhbmd1YWdlRGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggc3R5
bGVTdHJpbmcoU3R5bGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHR5cGVT
dHJpbmcoVHlwZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZmFsbGJhY2tT
dHJpbmcoRmFsbGJhY2spOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGxhbmd1
YWdlRGlzcGxheVN0cmluZyhMYW5ndWFnZURpc3BsYXkpOwogCiAgICAgdXNpbmcgVUxvY2FsZURp
c3BsYXlOYW1lc0RlbGV0ZXIgPSBJQ1VEZWxldGVyPHVsZG5fY2xvc2U+OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4g
bV9kaXNwbGF5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TGlzdEZvcm1hdC5jcHAKaW5kZXggZjVjMzA1NzA5OGM5Li40NmQ3MGYzOWRiMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5jcHAKQEAgLTM0
Miw3ICszNDIsNyBAQCBKU09iamVjdCogSW50bExpc3RGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBvcHRpb25zOwog
fQogCi1BU0NJSUxpdGVyYWwgSW50bExpc3RGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxl
KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTGlzdEZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5
bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgU3R5bGU6Okxvbmc6
CkBAIC0zNTMsMTAgKzM1MywxMCBAQCBBU0NJSUxpdGVyYWwgSW50bExpc3RGb3JtYXQ6OnN0eWxl
U3RyaW5nKFN0eWxlIHN0eWxlKQogICAgICAgICByZXR1cm4gIm5hcnJvdyJfczsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgp
OworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJ
TGl0ZXJhbCBJbnRsTGlzdEZvcm1hdDo6dHlwZVN0cmluZyhUeXBlIHR5cGUpCitBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIEludGxMaXN0Rm9ybWF0Ojp0eXBlU3RyaW5nKFR5cGUgdHlwZSkKIHsKICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFR5cGU6OkNvbmp1bmN0aW9uOgpAQCAtMzY3LDcg
KzM2Nyw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTGlzdEZvcm1hdDo6dHlwZVN0cmluZyhUeXBlIHR5
cGUpCiAgICAgICAgIHJldHVybiAidW5pdCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmgKaW5kZXggOGIy
NzQwMmY5ZDQwLi4yNDdhNTRjMDhkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bExpc3RGb3JtYXQuaApAQCAtNzksOCArNzksOCBAQCBwcml2YXRlOgogICAgIGVu
dW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBDb25qdW5jdGlvbiwgRGlzanVuY3Rpb24sIFVuaXQg
fTsKICAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IFNob3J0LCBMb25nLCBOYXJyb3cg
fTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdHlwZVN0cmluZyhUeXBlKTsKLSAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCB0eXBlU3RyaW5nKFR5cGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIHN0eWxlU3RyaW5nKFN0eWxlKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTGlz
dEZvcm1hdHRlciwgVUxpc3RGb3JtYXR0ZXJEZWxldGVyPiBtX2xpc3RGb3JtYXQ7CiAgICAgU3Ry
aW5nIG1fbG9jYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0LmNwcAppbmRleCA5NTNjMzlmZTY0YTkuLmEwNmUzYjlkZDU5YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
QEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4g
d2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgdW5pdElkZQogICAgIHJldHVybiBX
ZWxsRm9ybWVkVW5pdChudW1lcmF0b3JVbml0LnZhbHVlKCksIGRlbm9taW5hdG9yVW5pdC52YWx1
ZSgpKTsKIH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9y
bWF0RmllbGRzIGZpZWxkLCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwgYm9vbCBzaWdu
LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGUgdHlwZSkKK3N0YXRpYyBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQs
IEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGlj
YWxWYWx1ZTo6TnVtYmVyVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAoZmllbGQpIHsKICAgICBj
YXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKQEAgLTEyNDUsNyArMTI0NSw3IEBAIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEludGxNCiB9CiAjZW5kaWYKIAotQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6
OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVt
YmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxl
KSB7CiAgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTEyNTgsMTAgKzEyNTgsMTAgQEAgQVND
SUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogICAg
ICAgICByZXR1cm4gInVuaXQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFs
V2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6
Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJyZW5jeURpc3BsYXkpCitB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0
cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXNwbGF5KQogewogICAgIHN3aXRjaCAoY3Vy
cmVuY3lEaXNwbGF5KSB7CiAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OkNvZGU6CkBAIC0xMjc0
LDEwICsxMjc0LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURp
c3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAgICAgICAgIHJldHVybiAi
bmFtZSJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpu
dWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0cmlu
ZyhJbnRsTm90YXRpb24gbm90YXRpb24pCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1i
ZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlvbiBub3RhdGlvbikKIHsKICAgICBz
d2l0Y2ggKG5vdGF0aW9uKSB7CiAgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgpAQCAt
MTI5MCwxMCArMTI5MCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6bm90YXRp
b25TdHJpbmcoSW50bE5vdGF0aW9uIG5vdGF0aW9uKQogICAgICAgICByZXR1cm4gImNvbXBhY3Qi
X3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgp
OwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5n
KEN1cnJlbmN5U2lnbiBjdXJyZW5jeVNpZ24pCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxO
dW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24gY3VycmVuY3lTaWdu
KQogewogICAgIHN3aXRjaCAoY3VycmVuY3lTaWduKSB7CiAgICAgY2FzZSBDdXJyZW5jeVNpZ246
OlN0YW5kYXJkOgpAQCAtMTMwMiwxMCArMTMwMiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJl
ckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKEN1cnJlbmN5U2lnbiBjdXJyZW5jeVNpZ24pCiAg
ICAgICAgIHJldHVybiAiYWNjb3VudGluZyJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVy
Rm9ybWF0Ojp1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSB1bml0RGlzcGxheSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcoVW5p
dERpc3BsYXkgdW5pdERpc3BsYXkpCiB7CiAgICAgc3dpdGNoICh1bml0RGlzcGxheSkgewogICAg
IGNhc2UgVW5pdERpc3BsYXk6OlNob3J0OgpAQCAtMTMxNiwxMCArMTMxNiwxMCBAQCBBU0NJSUxp
dGVyYWwgSW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkgdW5p
dERpc3BsYXkpCiAgICAgICAgIHJldHVybiAibG9uZyJfczsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRs
TnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSBjb21wYWN0
RGlzcGxheSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bE51bWJlckZvcm1hdDo6Y29tcGFj
dERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYXkpCiB7CiAgICAgc3dp
dGNoIChjb21wYWN0RGlzcGxheSkgewogICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6OlNob3J0OgpA
QCAtMTMyOCwxMCArMTMyOCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y29t
cGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYQogICAgICAgICBy
ZXR1cm4gImxvbmciX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExl
bmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRp
c3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5IHNpZ25E
aXNwbGF5KQogewogICAgIHN3aXRjaCAoc2lnbkRpc3BsYXkpIHsKICAgICBjYXNlIFNpZ25EaXNw
bGF5OjpBdXRvOgpAQCAtMTM0NiwxMCArMTM0NiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJl
ckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkpCiAgICAg
ICAgIHJldHVybiAibmVnYXRpdmUiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRl
cmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1h
dDo6cm91bmRpbmdNb2RlU3RyaW5nKFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCitBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nTW9kZVN0cmluZyhSb3Vu
ZGluZ01vZGUgcm91bmRpbmdNb2RlKQogewogICAgIHN3aXRjaCAocm91bmRpbmdNb2RlKSB7CiAg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkNlaWw6CkBAIC0xMzcyLDEwICsxMzcyLDEwIEBAIEFTQ0lJ
TGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2Rl
IHJvdW5kaW5nTW9kZSkKICAgICAgICAgcmV0dXJuICJoYWxmRXZlbiJfczsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0
ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5n
WmVyb0Rpc3BsYXkgdHJhaWxpbmdaZXJvRGlzcGxheSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgg
SW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9E
aXNwbGF5IHRyYWlsaW5nWmVyb0Rpc3BsYXkpCiB7CiAgICAgc3dpdGNoICh0cmFpbGluZ1plcm9E
aXNwbGF5KSB7CiAgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvOgpAQCAtMTM4NCwx
MCArMTM4NCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJv
RGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5IHRyYQogICAgICAgICByZXR1cm4gInN0
cmlwSWZJbnRlZ2VyIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5k
aW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSByb3VuZGluZ1R5cGUpCitBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmco
SW50bFJvdW5kaW5nVHlwZSByb3VuZGluZ1R5cGUpCiB7CiAgICAgc3dpdGNoIChyb3VuZGluZ1R5
cGUpIHsKICAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgpAQCAtMTM5
OSw3ICsxMzk5LDcgQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJp
b3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSByb3VuZGluZ1QKICAgICAgICAgcmV0dXJuICJs
ZXNzUHJlY2lzaW9uIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGlu
Z1ZhbHVlKFZNJiB2bSwgVXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5kZXggNjk5MTRlYWYzMzM2
Li41ODZjYTliYTM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmgKQEAgLTIwNiwxMSArMjA2LDExIEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmllbmQgdm9pZCBhcHBlbmROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnNUb1NrZWxldG9uKEludGxUeXBlKiwgU3RyaW5nQnVpbGRlciYpOwogCi0g
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24pOworICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlv
bik7CiAKICAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdCogdW53cmFwRm9yT2xkRnVuY3Rpb25z
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJv
dW5kaW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSk7CisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggcm91bmRpbmdQcmlvcml0eVN0cmluZyhJbnRsUm91bmRpbmdUeXBl
KTsKIAogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CkBA
IC0yMjcsMTQgKzIyNywxNCBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgVHJhaWxpbmdaZXJv
RGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBTdHJpcElmSW50ZWdlciB9OwogICAgIGVudW0gY2xh
c3MgVXNlR3JvdXBpbmcgOiB1aW50OF90IHsgRmFsc2UsIE1pbjIsIEF1dG8sIEFsd2F5cyB9Owog
Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7Ci0gICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5KTsKLSAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24pOwot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkpOwot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3Bs
YXkpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3Bs
YXkpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdNb2RlU3RyaW5nKFJvdW5kaW5n
TW9kZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5n
KFRyYWlsaW5nWmVyb0Rpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBj
dXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCBjdXJyZW5jeVNpZ25TdHJpbmcoQ3VycmVuY3lTaWduKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxh
eSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggY29tcGFjdERpc3BsYXlTdHJp
bmcoQ29tcGFjdERpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNp
Z25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCByb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlKTsKKyAgICBzdGF0aWMgQVND
SUlMaXRlcmFsV2l0aExlbmd0aCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVy
b0Rpc3BsYXkpOwogICAgIHN0YXRpYyBKU1ZhbHVlIHVzZUdyb3VwaW5nVmFsdWUoVk0mLCBVc2VH
cm91cGluZyk7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9y
bWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxp
bmVzLmgKaW5kZXggNDFjMmJmZGY2ZWU1Li4zNmNiMzkyOGU2MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaApAQCAtMTIwLDcgKzEy
MCw3IEBAIEluc3RhbmNlVHlwZSogdW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJl
c3VsdFR5cGU+Ci1SZXN1bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgc3RkOjppbml0
aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMs
IEFTQ0lJTGl0ZXJhbCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCitSZXN1
bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgc3RkOjppbml0aWFsaXplcl9saXN0PHN0
ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggbm90Rm91bmRNZXNzYWdlLCBSZXN1bHRUeXBlIGZhbGxiYWNrKQogewogICAgIC8v
IEdldE9wdGlvbiAob3B0aW9ucywgcHJvcGVydHksIHR5cGU9InN0cmluZyIsIHZhbHVlcywgZmFs
bGJhY2spCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtZ2V0b3B0
aW9uCkBAIC0xNTIsNyArMTUyLDcgQEAgUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU4KIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KLVJlc3VsdFR5cGUgaW50bFN0cmluZ09yQm9vbGVh
bk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywg
UHJvcGVydHlOYW1lIHByb3BlcnR5LCBSZXN1bHRUeXBlIHRydWVWYWx1ZSwgUmVzdWx0VHlwZSBm
YWxzeVZhbHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwg
UmVzdWx0VHlwZT4+IHZhbHVlcywgQVNDSUlMaXRlcmFsIG5vdEZvdW5kTWVzc2FnZSwgUmVzdWx0
VHlwZSBmYWxsYmFjaykKK1Jlc3VsdFR5cGUgaW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1l
IHByb3BlcnR5LCBSZXN1bHRUeXBlIHRydWVWYWx1ZSwgUmVzdWx0VHlwZSBmYWxzeVZhbHVlLCBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwgUmVzdWx0VHlwZT4+
IHZhbHVlcywgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5
cGUgZmFsbGJhY2spCiB7CiAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVt
YmVyZm9ybWF0LXYzL291dC9uZWdvdGlhdGlvbi9kaWZmLmh0bWwjc2VjLWdldHN0cmluZ29yYm9v
bGVhbm9wdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGUzMjhhMWMxZjQwYy4uZWI5ODU1MTQ4
Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsCiAgICAgfQogfQogCi1BU0NJSUxpdGVyYWwgSW50bFJlbGF0aXZlVGltZUZvcm1h
dDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogewogICAgIHN3aXRj
aCAoc3R5bGUpIHsKICAgICBjYXNlIFN0eWxlOjpMb25nOgpAQCAtMTg1LDcgKzE4NSw3IEBAIEFT
Q0lJTGl0ZXJhbCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHls
ZSkKICAgICAgICAgcmV0dXJuICJuYXJyb3ciX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLWludGwucmVsYXRpdmV0aW1lZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaAppbmRleCA5ZWQwNjE1ODAzZjYuLmEwMjhkMzQ1ZGJkYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFVSZWxhdGl2ZURhdGVU
aW1lRm9ybWF0dGVyRGVsZXRlciA9IElDVURlbGV0ZXI8dXJlbGRhdGVmbXRfY2xvc2U+OwogICAg
IHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKIAot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOworICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0eWxlU3RyaW5nKFN0eWxlKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciwgVVJlbGF0aXZlRGF0ZVRpbWVGb3Jt
YXR0ZXJEZWxldGVyPiBtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1h
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAK
aW5kZXggOGQ4NWZlN2M5Y2MyLi43YzFlY2EyYTE0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgSlNP
YmplY3QqIEludGxTZWdtZW50ZXI6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBvcHRpb25zOwogfQogCi1BU0NJSUxpdGVyYWwg
SW50bFNlZ21lbnRlcjo6Z3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkp
CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxTZWdtZW50ZXI6OmdyYW51bGFyaXR5U3RyaW5n
KEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsK
ICAgICBjYXNlIEdyYW51bGFyaXR5OjpHcmFwaGVtZToKQEAgLTE2MSw3ICsxNjEsNyBAQCBBU0NJ
SUxpdGVyYWwgSW50bFNlZ21lbnRlcjo6Z3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHkpCiAgICAgICAgIHJldHVybiAic2VudGVuY2UiX3M7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiBKU09iamVjdCogSW50
bFNlZ21lbnRlcjo6Y3JlYXRlU2VnbWVudERhdGFPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZywgaW50MzJfdCBzdGFydEluZGV4LCBpbnQzMl90IGVu
ZEluZGV4LCBVQnJlYWtJdGVyYXRvciYgc2VnbWVudGVyLCBHcmFudWxhcml0eSBncmFudWxhcml0
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuaAppbmRl
eCBlNzMxMWFmODFiYTIuLjBjYmFhMzYzNmQyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAg
IEludGxTZWdtZW50ZXIoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGdyYW51bGFyaXR5U3RyaW5nKEdyYW51
bGFyaXR5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBncmFudWxhcml0eVN0
cmluZyhHcmFudWxhcml0eSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3Is
IFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4gbV9zZWdtZW50ZXI7CiAgICAgU3RyaW5nIG1fbG9jYWxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAzMTc5ODVm
ZmVkNmEuLmE3YTJiMjkwMjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIHVuc2lnbmVkIHN0YXJ0SQogICAg
IGNoZWNrZWROZXdMZW5ndGggKz0gb3RoZXJMZW5ndGg7CiAKICAgICBpZiAoY2hlY2tlZE5ld0xl
bmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVk
VGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIFN0cmluZyB7
IExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IgfSkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IGNoZWNrZWROZXdM
ZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMu
aAppbmRleCBlZGU0ZGYwMjkwMzguLjBmMThhZTFmMTg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5SW5saW5lcy5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IE1BWF9B
UlJBWV9JTkRFWCkpIHsKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0
aGlzLCBnbG9iYWxPYmplY3QsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYg
KCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVuZ3RoRXhj
ZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNjcsNyArMTY3LDcgQEAg
QUxXQVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IE1B
WF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRl
eCh0aGlzLCBnbG9iYWxPYmplY3QsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAg
aWYgKCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVuZ3Ro
RXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9y
IH0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMDIsNyArMjAyLDcg
QEAgQUxXQVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+
IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAg
ICAgaWYgKCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVu
Z3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAg
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVy
cm9yIH0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDMsNyArMjQz
LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZt
KS0+cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHN0b3JhZ2UtPmxlbmd0aCgpLCB2YWx1
ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAvLyBQZXIgRVM1LjEgMTUuNC40Ljcgc3RlcCA2ICYgMTUu
NC41LjEgc3RlcCAzLmQuCiAgICAgICAgICAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpKQotICAg
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0
aEVycm9yKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIFN0cmluZyB7IExlbmd0aEV4Y2Vl
ZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IgfSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBmYTYyM2UwOTA3NGMuLmQ5ZDJhZjNhNjI1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjkxLDcg
KzY5MSw3IEBAIHN0YXRpYyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBzZXR1cEFkYXB0aXZlV2F0
Y2hwb2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB0ZW1wbGF0ZTxFcnJvclR5cGUgZXJy
b3JUeXBlPgogdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3Io
TGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkKIHsKLSAgICBpbml0LnNldFBy
b3RvdHlwZShOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIE5hdGl2ZUVycm9y
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9lcnJvclN0cnVjdHVy
ZS5wcm90b3R5cGUodGhpcykpLCBlcnJvclR5cGVOYW1lKGVycm9yVHlwZSkpKTsKKyAgICBpbml0
LnNldFByb3RvdHlwZShOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIE5hdGl2
ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9lcnJvclN0
cnVjdHVyZS5wcm90b3R5cGUodGhpcykpLCBTdHJpbmcgeyBlcnJvclR5cGVOYW1lKGVycm9yVHlw
ZSkgfSkpOwogICAgIGluaXQuc2V0U3RydWN0dXJlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVj
dHVyZShpbml0LnZtLCB0aGlzLCBpbml0LnByb3RvdHlwZSkpOwogICAgIGluaXQuc2V0Q29uc3Ry
dWN0b3IoTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGUoaW5pdC52bSwg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgdGhpcywgbV9lcnJvclN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKSksIGpzQ2FzdDxOYXRp
dmVFcnJvclByb3RvdHlwZSo+KGluaXQucHJvdG90eXBlKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZDMzYjcyMjg2NGE4Li4yNmJkZjEyZTliNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNzUsNiArNzUs
OCBAQCBzdHJ1Y3QgSGFzaFRhYmxlOwogc3RydWN0IEhhc2hUYWJsZVZhbHVlOwogCiBKU19FWFBP
UlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhy
b3dTY29wZSYsIGNvbnN0IFN0cmluZyYpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0
aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWwp
OworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9i
amVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoKTsKIGV4dGVybiBKU19F
WFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgTm9uRXh0ZW5zaWJsZU9iamVjdFByb3Bl
cnR5RGVmaW5lRXJyb3I7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRl
cmFsIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRF
IGNvbnN0IEFTQ0lJTGl0ZXJhbCBSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuY3BwCmluZGV4IDIxM2Q5ZmI3YTY4YS4uM2I1MTgwOWJjZTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNw
cApAQCAtMTU1LDcgKzE1NSw3IEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RyCiAKIHZvaWQgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvckJhc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXJy
b3JQcm90b3R5cGUqIHByb3RvdHlwZSwgRXJyb3JUeXBlIGVycm9yVHlwZSkKIHsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgZXJyb3JUeXBlTmFtZShlcnJvclR5cGUpLCBQcm9wZXJ0
eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCAxLCBTdHJpbmcgeyBlcnJvclR5cGVOYW1lKGVycm9yVHlwZSkgfSwg
UHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBB
U1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIAogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggZjIxOWI5MzI2YmJk
Li44YmExMTIyMjE0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcApAQCAtOTQsNyArOTQsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oY2FsbFRocm93RXJyb3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGZyb20gSUMuIEFuZCB3ZSBkbyBub3Qg
d2FudCB0byBpbmNsdWRlIHRoaXMgZnJhbWUgaW4gRXJyb3IncyBzdGFjay4KICAgICBjb25zdGV4
cHIgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSBmYWxzZTsKLSAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwg
Z2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OlR5cGVFcnJvciksIFJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yLCBKU1ZhbHVlKCksIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBF
cnJvclR5cGU6OlR5cGVFcnJvciwgdXNlQ3VycmVudEZyYW1lKSk7CisgICAgdGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVj
dCwgdm0sIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpUeXBlRXJyb3Ip
LCBTdHJpbmcgeyBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvciB9LCBKU1ZhbHVlKCksIG51bGxw
dHIsIFR5cGVOb3RoaW5nLCBFcnJvclR5cGU6OlR5cGVFcnJvciwgdXNlQ3VycmVudEZyYW1lKSk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IDNjZTc2MTI0MmMzMi4uOWU5NjE0
NDMwODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNl
L1dURi93dGYvRm9yd2FyZC5oCkBAIC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgV1RGIHsKIAog
Y2xhc3MgQVNDSUlMaXRlcmFsOworY2xhc3MgQVNDSUlMaXRlcmFsV2l0aExlbmd0aDsKIGNsYXNz
IEFic3RyYWN0TG9ja2VyOwogY2xhc3MgQXRvbVN0cmluZzsKIGNsYXNzIEF0b21TdHJpbmdJbXBs
OwpAQCAtMTIxLDYgKzEyMiw3IEBAIHRlbXBsYXRlPGNsYXNzPiBjbGFzcyB1bmV4cGVjdGVkOwog
fX19IC8vIG5hbWVzcGFjZSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzCiAKIHVz
aW5nIFdURjo6QVNDSUlMaXRlcmFsOwordXNpbmcgV1RGOjpBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
OwogdXNpbmcgV1RGOjpBYnN0cmFjdExvY2tlcjsKIHVzaW5nIFdURjo6QXRvbVN0cmluZzsKIHVz
aW5nIFdURjo6QXRvbVN0cmluZ0ltcGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0FTQ0lJTGl0ZXJhbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5jcHAK
aW5kZXggNjg3YzE3OWE1YzE0Li41NWRjMzI5OTA5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQVNDSUlMaXRlcmFsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJ
TGl0ZXJhbC5jcHAKQEAgLTMwLDYgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCit2b2lk
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sK
KyAgICBvdXQucHJpbnQobV9jaGFyYWN0ZXJzKTsKK30KKwogdm9pZCBBU0NJSUxpdGVyYWw6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQobV9jaGFyYWN0ZXJz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCmluZGV4IDVjMjM3ZjMwOWUxYi4uNTE5Njdl
YThiNWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKQEAgLTMzLDggKzMzLDQ2IEBA
IG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBQcmludFN0cmVhbTsKIAorY2xhc3MgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCBmaW5hbCB7CitwdWJsaWM6CisgICAgb3BlcmF0b3IgY29uc3QgY2hhcioo
KSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIg
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBmcm9tTGl0ZXJhbFVuc2FmZShjb25zdCBjaGFyKiBzdHJp
bmcsIHNpemVfdCBsZW5ndGgpCisgICAgeworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCB7IHN0cmluZywgbGVuZ3RoIH07CisgICAgfQorCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKworICAgIHN0YXRpYyBjb25z
dGV4cHIgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBudWxsKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHsgbnVsbHB0ciwgMCB9OworICAgIH0KKworICAgIGNv
bnN0ZXhwciBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2NoYXJhY3RlcnM7IH0KKwor
ICAgIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFyYWN0ZXJzOyB9CisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PGNvbnN0IExDaGFyKj4obV9jaGFyYWN0ZXJzKTsgfQorICAgIHNpemVf
dCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgY29uc3RleHByIGNo
YXIgY2hhcmFjdGVyQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVy
c1tpbmRleF07IH0KKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgQVNDSUlMaXRlcmFsV2l0aExl
bmd0aChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQorICAgICAgICA6IG1f
Y2hhcmFjdGVycyhjaGFyYWN0ZXJzKQorICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICB7
IH0KKworICAgIGNvbnN0IGNoYXIqIG1fY2hhcmFjdGVyczsKKyAgICBzaXplX3QgbV9sZW5ndGg7
Cit9OworCiBjbGFzcyBBU0NJSUxpdGVyYWwgZmluYWwgewogcHVibGljOgorICAgIGNvbnN0ZXhw
ciBBU0NJSUxpdGVyYWwoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBvdGhlcikKKyAgICAgICAgOiBt
X2NoYXJhY3RlcnMob3RoZXIuY2hhcmFjdGVycygpKQorICAgIHsgfQorCiAgICAgb3BlcmF0b3Ig
Y29uc3QgY2hhciooKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KIAogICAgIHN0YXRp
YyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGZyb21MaXRlcmFsVW5zYWZlKGNvbnN0IGNoYXIqIHN0
cmluZykKQEAgLTY1LDE1ICsxMDMsMTUgQEAgcHJpdmF0ZToKIAogaW5saW5lIG5hbWVzcGFjZSBT
dHJpbmdMaXRlcmFscyB7CiAKLWNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgb3BlcmF0b3IiIiBfcyhj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbikKK2NvbnN0ZXhwciBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIG9wZXJhdG9yIiIgX3MoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxl
bmd0aCkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bjsgKytpKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAg
IEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChpc0FTQ0lJKGNoYXJhY3RlcnNbaV0pKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKG4pOwogI2VuZGlmCi0gICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2hhcmFjdGVycyk7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbFdpdGhMZW5ndGg6OmZyb21MaXRlcmFsVW5zYWZlKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9
CiAKIH0gLy8gaW5saW5lIFN0cmluZ0xpdGVyYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmlu
ZGV4IDMzYjBlNTk1OGQ4My4uMmI0ZjMzNzc0OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcu
aApAQCAtNzMsNyArNzMsMTIgQEAgcHVibGljOgogICAgICAgICBDT01QSUxFX0FTU0VSVCgoY2hh
cmFjdGVyQ291bnQgLSAxIDw9ICgodW5zaWduZWQofjApIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAv
IHNpemVvZihMQ2hhcikpKSwgQXRvbVN0cmluZ0Zyb21MaXRlcmFsQ2Fubm90T3ZlcmZsb3cpOwog
ICAgIH0KIAotICAgIEF0b21TdHJpbmcoQVNDSUlMaXRlcmFsIGxpdGVyYWwpCisgICAgZXhwbGlj
aXQgQXRvbVN0cmluZyhBU0NJSUxpdGVyYWwgbGl0ZXJhbCkKKyAgICAgICAgOiBtX3N0cmluZyhB
dG9tU3RyaW5nSW1wbDo6YWRkTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0ZXJhbC5s
ZW5ndGgoKSkpCisgICAgeworICAgIH0KKworICAgIEF0b21TdHJpbmcoQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBsaXRlcmFsKQogICAgICAgICA6IG1fc3RyaW5nKEF0b21TdHJpbmdJbXBsOjphZGRM
aXRlcmFsKGxpdGVyYWwuY2hhcmFjdGVycygpLCBsaXRlcmFsLmxlbmd0aCgpKSkKICAgICB7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCmluZGV4IGUyYzI1NGE3
NjU2MC4uYjk0NGZiY2M5OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZS5oCkBAIC03NSw2ICs3NSwyMyBAQCBwcml2YXRlOgogICAgIFVDaGFyIG1fY2hhcmFjdGVyOwog
fTsKIAordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoLCB2b2lkPiB7CitwdWJsaWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXIoQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCBsaXRlcmFsKQorICAgICAgICA6IG1fY2hhcmFjdGVycyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4obGl0ZXJhbC5jaGFyYWN0ZXJzKCkpKQorICAgICAgICAsIG1f
bGVuZ3RoKGxpdGVyYWwubGVuZ3RoKCkpCisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgYm9vbCBpczhCaXQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
dm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKSBjb25zdCB7IFN0cmluZ0lt
cGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCBtX2NoYXJhY3RlcnMsIG1fbGVuZ3RoKTsg
fQorCitwcml2YXRlOgorICAgIGNvbnN0IExDaGFyKiBtX2NoYXJhY3RlcnM7CisgICAgdW5zaWdu
ZWQgbV9sZW5ndGg7Cit9OworCiB0ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPGNv
bnN0IExDaGFyKiwgdm9pZD4gewogcHVibGljOgogICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggZDU4
NDUxMDBjZTI2Li40NjIwMTNkZTViNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApA
QCAtMTYzLDExICsxNjMsNiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycykKICAgICByZXR1cm4gY3JlYXRlRnJvbUxp
dGVyYWwoY2hhcmFjdGVycywgc3RybGVuKGNoYXJhY3RlcnMpKTsKIH0KIAotUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKEFTQ0lJTGl0ZXJhbCBsaXRlcmFsKQot
ewotICAgIHJldHVybiBjcmVhdGVGcm9tTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0
ZXJhbC5sZW5ndGgoKSk7Ci19Ci0KIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVX
aXRob3V0Q29weWluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQog
ewogICAgIGlmICghbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBjNzZjZDUy
MzY3NjEuLjIyMjliY2UzODFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTI1MCw3
ICsyNTAsOCBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFJlcGxhY2UgY2FsbHMgdG8gdGhlc2Ug
b3ZlcmxvYWRzIG9mIGNyZWF0ZUZyb21MaXRlcmFsIHRvIGNyZWF0ZVdpdGhvdXRDb3B5aW5nIGlu
c3RlYWQuCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29u
c3QgY2hhciopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZUZyb21MaXRlcmFsKEFTQ0lJTGl0ZXJhbCk7CisgICAgc3RhdGljIFJlZjxTdHJpbmdJ
bXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChBU0NJSUxpdGVyYWwgbGl0ZXJhbCkgeyByZXR1cm4gY3Jl
YXRlRnJvbUxpdGVyYWwobGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpOyB9
CisgICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIGxpdGVyYWwpIHsgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGxpdGVyYWwu
Y2hhcmFjdGVycygpLCBsaXRlcmFsLmxlbmd0aCgpKTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3Jz
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oCmluZGV4IDI1NTRiYjRk
M2YyYy4uMjJmMTNjODNiYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z09wZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3JzLmgK
QEAgLTE2NCw2ICsxNjQsMjggQEAgaW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIFN0
cmluZ0FwcGVuZDxVLCBWPj4gb3BlcmF0b3IrKGNvbnN0IEFTQ0lJTGl0ZXIKICAgICByZXR1cm4g
U3RyaW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbCwgU3RyaW5nQXBwZW5kPFUsIFY+PihzdHJpbmcxLCBz
dHJpbmcyKTsKIH0KIAoraW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
LCBTdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoJiBzdHJpbmcx
LCBjb25zdCBTdHJpbmcmIHN0cmluZzIpCit7CisgICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoLCBTdHJpbmc+KHN0cmluZzEsIHN0cmluZzIpOworfQorCitpbmxp
bmUgU3RyaW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIEF0b21TdHJpbmc+IG9wZXJh
dG9yKyhjb25zdCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoJiBzdHJpbmcxLCBjb25zdCBBdG9tU3Ry
aW5nJiBzdHJpbmcyKQoreworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsV2l0
aExlbmd0aCwgQXRvbVN0cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8c3RkOjpk
ZWNheV90PFQ+LCBTdHJpbmdWaWV3Pjo6dmFsdWU+PgoraW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoLCBTdHJpbmdWaWV3PiBvcGVyYXRvcisoY29uc3QgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCYgc3RyaW5nMSwgVCBzdHJpbmcyKQoreworICAgIHJldHVybiBTdHJpbmdB
cHBlbmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nVmlldz4oc3RyaW5nMSwgc3RyaW5n
Mik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CitpbmxpbmUgU3RyaW5n
QXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIFN0cmluZ0FwcGVuZDxVLCBWPj4gb3BlcmF0
b3IrKGNvbnN0IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgmIHN0cmluZzEsIGNvbnN0IFN0cmluZ0Fw
cGVuZDxVLCBWPiYgc3RyaW5nMikKK3sKKyAgICByZXR1cm4gU3RyaW5nQXBwZW5kPEFTQ0lJTGl0
ZXJhbFdpdGhMZW5ndGgsIFN0cmluZ0FwcGVuZDxVLCBWPj4oc3RyaW5nMSwgc3RyaW5nMik7Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBTdHJpbmdBcHBlbmQ8U3RyaW5nLCBUPiBvcGVyYXRv
cisoY29uc3QgU3RyaW5nJiBzdHJpbmcxLCBUIHN0cmluZzIpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oCmluZGV4IDQ0OGFmNzY4OWY3NC4uMzEzMWY1YWM1YmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nVmlldyhjb25z
dCBjaGFyKik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsK
ICAgICBleHBsaWNpdCBTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCk7CisgICAgZXhwbGljaXQgU3Ry
aW5nVmlldyhBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoKTsKIAogICAgIHN0YXRpYyBTdHJpbmdWaWV3
IGVtcHR5KCk7CiAKQEAgLTM2MCw2ICszNjEsMTEgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcoQVNDSUlMaXRlcmFsIHN0cmluZykKICAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0
ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogfQogCitpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5n
VmlldyhBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0cmluZykKK3sKKyAgICBpbml0aWFsaXplKHN0
cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgU3RyaW5n
Vmlldzo6U3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgc2V0VW5k
ZXJseWluZ1N0cmluZygmc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUxMWI5
YzE2NGExYS4uM2ZjZTY4NDUzODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTk3LDcg
Kzk3LDggQEAgcHVibGljOgogICAgIFN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKik7CiAKICAgICAv
LyBDb25zdHJ1Y3QgYSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoQVNDSUlMaXRlcmFsKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKEFTQ0lJTGl0ZXJhbCk7CisgICAgU3RyaW5nKEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggc3RyaW5nKSA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVGcm9t
TGl0ZXJhbChzdHJpbmcpKSB7IH0KIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyBmcm9tIGEg
Y29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCiAgICAgLy8gVGhpcyBpcyB0aGUgImJpZyIgdmVyc2lv
bjogcHV0cyB0aGUgbGVuZ3RoIGluIHRoZSBmdW5jdGlvbiBjYWxsIGFuZCBnZW5lcmF0ZXMgYmln
Z2VyIGNvZGUuCkBAIC0zNjEsOSArMzYyLDExIEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpCiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgTENoYXIqIGIpIHsg
cmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYi5jaGFyYWN0ZXJzKCkpKTsgfQoraW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGggYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuY2hhcmFjdGVycygpLCBiLmxlbmd0aCgp
KTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMQ2hhciogYSwgY29uc3QgU3RyaW5n
JiBiKSB7IHJldHVybiBlcXVhbChhLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgY2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYSksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShBU0NJSUxpdGVyYWwgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYS5jaGFyYWN0ZXJzKCkpLCBiLmltcGwoKSk7
IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhLCBjb25z
dCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmNoYXJhY3RlcnMoKSwgYS5s
ZW5ndGgoKSk7IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBT
dHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmRhdGEoKSwgYS5zaXplKCkpOyB9
CiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBiKSB7
IHJldHVybiBiID09IGE7IH0KIApAQCAtMzcxLDkgKzM3NCwxMSBAQCBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwo
YS5pbXBsKAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IExD
aGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEu
aW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CiBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuICFl
cXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIuY2hhcmFjdGVy
cygpKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5jaGFyYWN0ZXJz
KCksIGIubGVuZ3RoKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKiBh
LCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLCBiLmltcGwoKSk7IH0KIGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVy
biAhZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpLCBiLmltcGwoKSk7IH0K
IGlubGluZSBib29sIG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IFN0cmluZyYgYikg
eyByZXR1cm4gIWVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhLmNoYXJhY3Rl
cnMoKSksIGIuaW1wbCgpKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGIuaW1wbCgpLCBh
LmNoYXJhY3RlcnMoKSwgYS5sZW5ndGgoKSk7IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2Fw
YWNpdHk+JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogdGVtcGxh
dGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0
cmluZyYgYSwgY29uc3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYikgeyByZXR1cm4g
YiAhPSBhOyB9CiAKQEAgLTYyOCw5ICs2MzMsOSBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+
IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgUwog
CiBpbmxpbmUgbmFtZXNwYWNlIFN0cmluZ0xpdGVyYWxzIHsKIAotaW5saW5lIFN0cmluZyBvcGVy
YXRvciIiIF9zdHIoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90KQoraW5saW5lIFN0cmlu
ZyBvcGVyYXRvciIiIF9zdHIoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkK
IHsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpmcm9tTGl0ZXJhbFVuc2FmZShjaGFyYWN0ZXJz
KTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6ZnJvbUxpdGVyYWxVbnNhZmUo
Y2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAogfSAvLyBpbmxpbmUgU3RyaW5nTGl0ZXJhbHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCBiMGQx
ZDgyZThlZWMuLjFhMjg4NTZhOTJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZU9wdGlvbnMoY29uc3QgSW5pdCYgaW5pdCkKIAogc3Rh
dGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gcHJvY2Vzc0ludmFsaWRTaWduYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBBU0NJSUxpdGVyYWwgbWVz
c2FnZSB7ICJGZXRjaFJlcXVlc3RJbml0LnNpZ25hbCBzaG91bGQgYmUgdW5kZWZpbmVkLCBudWxs
IG9yIGFuIEFib3J0U2lnbmFsIG9iamVjdC4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJl
bGVhc2UuIl9zIH07CisgICAgYXV0byBtZXNzYWdlID0gIkZldGNoUmVxdWVzdEluaXQuc2lnbmFs
IHNob3VsZCBiZSB1bmRlZmluZWQsIG51bGwgb3IgYW4gQWJvcnRTaWduYWwgb2JqZWN0LiBUaGlz
IHdpbGwgdGhyb3cgaW4gYSBmdXR1cmUgcmVsZWFzZS4iX3M7CiAgICAgY29udGV4dC5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNz
YWdlKTsKIAogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkgJiYgZG93bmNhc3Q8RG9jdW1l
bnQ+KGNvbnRleHQpLnF1aXJrcygpLnNob3VsZElnbm9yZUludmFsaWRTaWduYWwoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5k
ZXggY2QzNzJmNDM2OTFhLi43MjYyYTUyZmMxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0zODMsNyArMzgzLDcgQEAg
Ym9vbCBHZW9sb2NhdGlvbjo6c2hvdWxkQmxvY2tHZW9sb2NhdGlvblJlcXVlc3RzKCkKIHZvaWQg
R2VvbG9jYXRpb246OnN0YXJ0UmVxdWVzdChHZW9Ob3RpZmllciogbm90aWZpZXIpCiB7CiAgICAg
aWYgKHNob3VsZEJsb2NrR2VvbG9jYXRpb25SZXF1ZXN0cygpKSB7Ci0gICAgICAgIG5vdGlmaWVy
LT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0
aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIG9yaWdpbkNhbm5vdFJlcXVlc3RH
ZW9sb2NhdGlvbkVycm9yTWVzc2FnZSkpOworICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJv
cihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJy
b3I6OlBFUk1JU1NJT05fREVOSUVELCBTdHJpbmcgeyBvcmlnaW5DYW5ub3RSZXF1ZXN0R2VvbG9j
YXRpb25FcnJvck1lc3NhZ2UgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGRvY3Vt
ZW50KCktPnNldEdlb2xvY2F0aW9uQWNjZXNzZWQoKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lk
IEdlb2xvY2F0aW9uOjpzdGFydFJlcXVlc3QoR2VvTm90aWZpZXIqIG5vdGlmaWVyKQogICAgIC8v
IENoZWNrIHdoZXRoZXIgcGVybWlzc2lvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gZGVuaWVkLiBOb3Rl
IHRoYXQgaWYgdGhpcyBpcyB0aGUgY2FzZSwKICAgICAvLyB0aGUgcGVybWlzc2lvbiBzdGF0ZSBj
YW4gbm90IGNoYW5nZSBhZ2FpbiBpbiB0aGUgbGlmZXRpbWUgb2YgdGhpcyBwYWdlLgogICAgIGlm
IChpc0RlbmllZCgpKQotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlv
blBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJ
T05fREVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIG5vdGlm
aWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xv
Y2F0aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIFN0cmluZyB7IHBlcm1pc3Np
b25EZW5pZWRFcnJvck1lc3NhZ2UgfSkpOwogICAgIGVsc2UgaWYgKGhhdmVTdWl0YWJsZUNhY2hl
ZFBvc2l0aW9uKG5vdGlmaWVyLT5vcHRpb25zKCkpKQogICAgICAgICBub3RpZmllci0+c2V0VXNl
Q2FjaGVkUG9zaXRpb24oKTsKICAgICBlbHNlIGlmIChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQo
KSkKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzdGFydFJlcXVlc3QoR2Vv
Tm90aWZpZXIqIG5vdGlmaWVyKQogICAgIH0gZWxzZSBpZiAoc3RhcnRVcGRhdGluZyhub3RpZmll
cikpCiAgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKICAgICBlbHNlCi0g
ICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6
Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIGZh
aWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIG5vdGlmaWVyLT5zZXRG
YXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9z
aXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIFN0cmluZyB7IGZhaWxlZFRvU3RhcnRT
ZXJ2aWNlRXJyb3JNZXNzYWdlIH0pKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbjo6ZmF0YWxFcnJv
ck9jY3VycmVkKEdlb05vdGlmaWVyKiBub3RpZmllcikKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lk
IEdlb2xvY2F0aW9uOjpyZXF1ZXN0VXNlc0NhY2hlZFBvc2l0aW9uKEdlb05vdGlmaWVyKiBub3Rp
ZmllcikKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhc3luY2hyb25vdXNseSwgc28gdGhlIHBlcm1p
c3Npb25zIGNvdWxkIGhhdmUgYmVlbiBkZW5pZWQKICAgICAvLyBzaW5jZSB3ZSBsYXN0IGNoZWNr
ZWQgaW4gc3RhcnRSZXF1ZXN0LgogICAgIGlmIChpc0RlbmllZCgpKSB7Ci0gICAgICAgIG5vdGlm
aWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xv
Y2F0aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1pc3Npb25EZW5pZWRF
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQRVJNSVNT
SU9OX0RFTklFRCwgU3RyaW5nIHsgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSB9KSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEdlb2xvY2F0
aW9uOjptYWtlQ2FjaGVkUG9zaXRpb25DYWxsYmFja3MoKQogICAgICAgICAgICAgaWYgKG5vdGlm
aWVyLT5oYXNaZXJvVGltZW91dCgpIHx8IHN0YXJ0VXBkYXRpbmcobm90aWZpZXIuZ2V0KCkpKQog
ICAgICAgICAgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2Nh
dGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBPU0lU
SU9OX1VOQVZBSUxBQkxFLCBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSkpOworICAg
ICAgICAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25F
cnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFC
TEUsIFN0cmluZyB7IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlIH0pKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnNldElz
QWxsb3dlZChib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQog
ICAgIH0KIAogICAgIGlmICghaXNBbGxvd2VkKCkpIHsKLSAgICAgICAgYXV0byBlcnJvciA9IEdl
b2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6
UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1pc3Npb25EZW5pZWRFcnJvck1lc3NhZ2UpOworICAgICAg
ICBhdXRvIGVycm9yID0gR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgU3RyaW5nIHsgcGVybWlzc2lvbkRl
bmllZEVycm9yTWVzc2FnZSB9KTsKICAgICAgICAgZXJyb3ItPnNldElzRmF0YWwodHJ1ZSk7CiAg
ICAgICAgIGhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgbV9yZXF1ZXN0c0F3YWl0aW5nQ2Fj
aGVkUG9zaXRpb24uY2xlYXIoKTsKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
OjpzdG9wVGltZXJzKCkKIHZvaWQgR2VvbG9jYXRpb246OmNhbmNlbFJlcXVlc3RzKEdlb05vdGlm
aWVyVmVjdG9yJiBub3RpZmllcnMpCiB7CiAgICAgZm9yIChhdXRvJiBub3RpZmllciA6IG5vdGlm
aWVycykKLSAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlv
bkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlM
QUJMRSwgZnJhbWVsZXNzRG9jdW1lbnRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgbm90aWZpZXIt
PnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRSwgU3RyaW5nIHsgZnJhbWVsZXNz
RG9jdW1lbnRFcnJvck1lc3NhZ2UgfSkpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uOjpjYW5jZWxB
bGxSZXF1ZXN0cygpCkBAIC03NTEsOSArNzUxLDkgQEAgdm9pZCBHZW9sb2NhdGlvbjo6aGFuZGxl
UGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMoKQogICAgICAgICAgICAgaWYgKHN0YXJ0VXBkYXRp
bmcobm90aWZpZXIuZ2V0KCkpKQogICAgICAgICAgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVy
SWZOZWVkZWQoKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBub3RpZmllci0+
c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlv
blBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBmYWlsZWRUb1N0YXJ0U2Vydmlj
ZUVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9y
KEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJv
cjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIFN0cmluZyB7IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJy
b3JNZXNzYWdlIH0pKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBub3RpZmllci0+c2V0
RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNz
YWdlKSk7CisgICAgICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05f
REVOSUVELCBTdHJpbmcgeyBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlIH0pKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hs
aWdodFJlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hs
aWdodFJlZ2lzdGVyLmNwcAppbmRleCBkY2E3ZTQ2YzQ4YTguLmMzZDUzYTZiMTRkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lz
dGVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEhpZ2hsaWdodFJlZ2lzdGVyOjpzZXRIaWdo
bGlnaHRWaXNpYmlsaXR5KEhpZ2hsaWdodFZpc2liaWxpdHkgaGlnaGxpZ2h0VmlzaQogICAgICAg
ICBoaWdobGlnaHQudmFsdWUtPnJlcGFpbnQoKTsKIH0KICNlbmRpZgotc3RhdGljIEFTQ0lJTGl0
ZXJhbCBhbm5vdGF0aW9uSGlnaGxpZ2h0S2V5KCkKK3N0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIGFubm90YXRpb25IaWdobGlnaHRLZXkoKQogewogICAgIHJldHVybiAiYW5ub3RhdGlvbkhp
Z2hsaWdodEtleSJfczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
MzljMTQ3ZGFhNzhjLi42YTZmZDI2ZDAxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjplbnN1cmVWYWxpZEJsb2JUYWJsZXMoKQogICAgICAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1
dGVDb21tYW5kKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSkpCiAgICAgICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkVycm9yIGNyZWF0aW5nIEJsb2JS
ZWNvcmRzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgIikgLSAiLCBtX3NxbGl0
ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKIAotICAgICAgICByZWNvcmRzVGFibGVTdGF0ZW1lbnQg
PSBibG9iUmVjb3Jkc1RhYmxlU2NoZW1hKCk7CisgICAgICAgIHJlY29yZHNUYWJsZVN0YXRlbWVu
dCA9IFN0cmluZyB7IGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSB9OwogICAgIH0KIAogICAgIFJF
TEVBU0VfQVNTRVJUKHJlY29yZHNUYWJsZVN0YXRlbWVudCA9PSBibG9iUmVjb3Jkc1RhYmxlU2No
ZW1hKCkgfHwgcmVjb3Jkc1RhYmxlU3RhdGVtZW50ID09IGJsb2JSZWNvcmRzVGFibGVTY2hlbWFB
bHRlcm5hdGUoKSk7CkBAIC0zMDksNyArMzA5LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjplbnN1cmVWYWxpZEJsb2JUYWJsZXMoKQogICAgICAgICBpZiAoIW1fc3FsaXRlREIt
PmV4ZWN1dGVDb21tYW5kKGJsb2JGaWxlc1RhYmxlU2NoZW1hKCkpKQogICAgICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJFcnJvciBjcmVhdGluZyBC
bG9iRmlsZXMgdGFibGUgKCIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCAiKSAtICIsIG1fc3Fs
aXRlREItPmxhc3RFcnJvck1zZygpKSB9OwogCi0gICAgICAgIGZpbGVzVGFibGVTdGF0ZW1lbnQg
PSBibG9iRmlsZXNUYWJsZVNjaGVtYSgpOworICAgICAgICBmaWxlc1RhYmxlU3RhdGVtZW50ID0g
U3RyaW5nIHsgYmxvYkZpbGVzVGFibGVTY2hlbWEoKSB9OwogICAgIH0KIAogICAgIFJFTEVBU0Vf
QVNTRVJUKGZpbGVzVGFibGVTdGF0ZW1lbnQgPT0gYmxvYkZpbGVzVGFibGVTY2hlbWEoKSB8fCBm
aWxlc1RhYmxlU3RhdGVtZW50ID09IGJsb2JGaWxlc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVy
cm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJv
ci5jcHAKaW5kZXggMThlZDdlMjFiMzU1Li5hZDFlMzg2MzczZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcApAQCAtNDAs
MTQgKzQwLDE0IEBAIFN0cmluZyBJREJFcnJvcjo6bmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NvZGUpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIERPTUV4Y2VwdGlvbjo6bmFt
ZShtX2NvZGUudmFsdWUoKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IERPTUV4Y2VwdGlvbjo6bmFt
ZShtX2NvZGUudmFsdWUoKSkgfTsKIH0KIAogU3RyaW5nIElEQkVycm9yOjptZXNzYWdlKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fY29kZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4g
RE9NRXhjZXB0aW9uOjptZXNzYWdlKG1fY29kZS52YWx1ZSgpKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgRE9NRXhjZXB0aW9uOjptZXNzYWdlKG1fY29kZS52YWx1ZSgpKSB9OwogfQogCiBSZWZQdHI8
RE9NRXhjZXB0aW9uPiBJREJFcnJvcjo6dG9ET01FeGNlcHRpb24oKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcApp
bmRleCA3M2Y2Y2M2NWQ1NGMuLmU4MTg5YjQzMzM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKQEAgLTIxNywxOSAr
MjE3LDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPiBzdGF0aWMgU3RyaW5n
IG1ha2VBcmd1bWVudFR5cGVFcnJvck1lc3NhZ2UodW5zCiB2b2lkIHRocm93Tm90U3VwcG9ydGVk
RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCiB7CiAgICAgc2NvcGUuYXNzZXJ0
Tm9FeGNlcHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBOb3RTdXBwb3J0ZWRFcnJvciwgbWVzc2FnZSkpOworICAgIHRocm93RXhjZXB0aW9u
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBOb3RTdXBwb3J0ZWRFcnJvciwgU3RyaW5nIHsgbWVzc2FnZSB9KSk7CiB9
CiAKIHZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVz
c2FnZSkKIHsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0aW9uKCk7
Ci0gICAgdGhyb3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVE
T01FeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIEludmFsaWRTdGF0ZUVycm9yLCBtZXNz
YWdlKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVET01FeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIEludmFsaWRTdGF0ZUVycm9y
LCBTdHJpbmcgeyBtZXNzYWdlIH0pKTsKIH0KIAogdm9pZCB0aHJvd1NlY3VyaXR5RXJyb3IoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uRXhjZXB0VGVybWluYXRpb24oKTsKLSAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwg
U2VjdXJpdHlFcnJvciwgbWVzc2FnZSkpOworICAgIHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBTZWN1cml0eUVycm9yLCBTdHJpbmcgeyBtZXNzYWdlIH0pKTsKIH0KIAogSlNDOjpFbmNvZGVk
SlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIHVuc2lnbmVkIGFy
Z3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rp
b25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4
cGVjdGVkVmFsdWVzKQpAQCAtMzExLDcgKzMxMSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgcmVq
ZWN0UHJvbWlzZVdpdGhUaGlzVHlwZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
CiB2b2lkIHRocm93RE9NU3ludGF4RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2Up
CiB7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwotICAg
IHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhj
ZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBTeW50YXhFcnJvciwgbWVzc2FnZSkpOworICAg
IHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhj
ZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBTeW50YXhFcnJvciwgU3RyaW5nIHsgbWVzc2Fn
ZSB9KSk7CiB9CiAKIHZvaWQgdGhyb3dEYXRhQ2xvbmVFcnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKaW5kZXggNzAx
ZDM5YzA4YjBiLi44MjgzZjljOTlmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTQzo6SWRl
bnRpZmllciBTY3JpcHRNb2R1bGVMb2FkZXI6OnJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCog
anNHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVzdWx0LT5zdHJpbmcoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlamVjdFRvUHJvcGFnYXRl
TmV0d29ya0Vycm9yKERlZmVycmVkUHJvbWlzZSYgZGVmZXJyZWQsIE1vZHVsZUZldGNoRmFpbHVy
ZUtpbmQgZmFpbHVyZUtpbmQsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQorc3RhdGljIHZvaWQgcmVq
ZWN0VG9Qcm9wYWdhdGVOZXR3b3JrRXJyb3IoRGVmZXJyZWRQcm9taXNlJiBkZWZlcnJlZCwgTW9k
dWxlRmV0Y2hGYWlsdXJlS2luZCBmYWlsdXJlS2luZCwgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBt
ZXNzYWdlKQogewogICAgIGRlZmVycmVkLnJlamVjdFdpdGhDYWxsYmFjayhbJl0gKEpTRE9NR2xv
YmFsT2JqZWN0JiBqc0dsb2JhbE9iamVjdCkgewogICAgICAgICAvLyBXZSBhbm5vdGF0ZSBleGNl
cHRpb24gd2l0aCBzcGVjaWFsIHByaXZhdGUgc3ltYm9sLiBJdCBhbGxvd3MgdXMgdG8gZGlzdGlu
Z3Vpc2ggdGhlc2UgZXJyb3JzIGZyb20gdGhlIHVzZXIgdGhyb3duIG9uZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
QWN0aW9ucy5jcHAKaW5kZXggMGNhNjFjMTAxNGQyLi43ZGZlYTBkNWQwODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uQWN0aW9ucy5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIHZvaWQgd3JpdGVMZW5ndGhU
b1ZlY3RvckF0T2Zmc2V0KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCBzaXplX3Qgb2Zmc2V0KQog
CiBFeHBlY3RlZDxNb2RpZnlIZWFkZXJzQWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IE1vZGlmeUhl
YWRlcnNBY3Rpb246OnBhcnNlKGNvbnN0IEpTT046Ok9iamVjdCYgbW9kaWZ5SGVhZGVycykKIHsK
LSAgICBhdXRvIHBhcnNlSGVhZGVycyA9IFtdIChjb25zdCBKU09OOjpPYmplY3QmIG1vZGlmeUhl
YWRlcnMsIEFTQ0lJTGl0ZXJhbCBhcnJheU5hbWUpIC0+IEV4cGVjdGVkPFZlY3RvcjxNb2RpZnlI
ZWFkZXJJbmZvPiwgc3RkOjplcnJvcl9jb2RlPiB7CisgICAgYXV0byBwYXJzZUhlYWRlcnMgPSBb
XSAoY29uc3QgSlNPTjo6T2JqZWN0JiBtb2RpZnlIZWFkZXJzLCBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIGFycmF5TmFtZSkgLT4gRXhwZWN0ZWQ8VmVjdG9yPE1vZGlmeUhlYWRlckluZm8+LCBzdGQ6
OmVycm9yX2NvZGU+IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1vZGlmeUhlYWRlcnMuZ2V0VmFs
dWUoYXJyYXlOYW1lKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCmluZGV4IDUxM2ZkOTM5ZTY2ZC4uNGM0ZTk2NDY3YmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBFeHBl
Y3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRUcmlnZ2VyKGNvbnN0IEpTT046Ok9i
amVjdCYgcnVsZU9iCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3IpOwog
ICAgIH0KIAotICAgIGF1dG8gY2hlY2tDb25kaXRpb24gPSBbJl0gKEFTQ0lJTGl0ZXJhbCBrZXks
IEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBzdGQ6OmVycm9yX2NvZGU+ICgqbGlzdFJlYWRlciko
Y29uc3QgSlNPTjo6QXJyYXkmKSwgQWN0aW9uQ29uZGl0aW9uIGFjdGlvbkNvbmRpdGlvbikgLT4g
c3RkOjplcnJvcl9jb2RlIHsKKyAgICBhdXRvIGNoZWNrQ29uZGl0aW9uID0gWyZdIChBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIGtleSwgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3Jf
Y29kZT4gKCpsaXN0UmVhZGVyKShjb25zdCBKU09OOjpBcnJheSYpLCBBY3Rpb25Db25kaXRpb24g
YWN0aW9uQ29uZGl0aW9uKSAtPiBzdGQ6OmVycm9yX2NvZGUgewogICAgICAgICBpZiAoYXV0byB2
YWx1ZSA9IHRyaWdnZXJPYmplY3QtPmdldFZhbHVlKGtleSkpIHsKICAgICAgICAgICAgIGlmICh0
cmlnZ2VyLmZsYWdzICYgQWN0aW9uQ29uZGl0aW9uTWFzaykKICAgICAgICAgICAgICAgICByZXR1
cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCmluZGV4IGQzNmQzNDBmNzBhOC4u
YzcxMjQ2ZTMxNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9Dcnlw
dG9LZXlFQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMu
Y3BwCkBAIC0xNTEsMTMgKzE1MSwxMyBAQCBFeGNlcHRpb25PcjxKc29uV2ViS2V5PiBDcnlwdG9L
ZXlFQzo6ZXhwb3J0SndrKCkgY29uc3QKICAgICByZXN1bHQua3R5ID0gIkVDIjsKICAgICBzd2l0
Y2ggKG1fY3VydmUpIHsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlAyNTY6Ci0gICAgICAgIHJlc3Vs
dC5jcnYgPSBQMjU2OworICAgICAgICByZXN1bHQuY3J2ID0gU3RyaW5nIHsgUDI1NiB9OwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlAzODQ6Ci0gICAgICAgIHJlc3VsdC5j
cnYgPSBQMzg0OworICAgICAgICByZXN1bHQuY3J2ID0gU3RyaW5nIHsgUDM4NCB9OwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlA1MjE6Ci0gICAgICAgIHJlc3VsdC5jcnYg
PSBQNTIxOworICAgICAgICByZXN1bHQuY3J2ID0gU3RyaW5nIHsgUDUyMSB9OwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgcmVzdWx0LmtleV9vcHMgPSB1c2FnZXMoKTsKQEAgLTIxNiwxMyAr
MjE2LDEzIEBAIGF1dG8gQ3J5cHRvS2V5RUM6OmFsZ29yaXRobSgpIGNvbnN0IC0+IEtleUFsZ29y
aXRobQogCiAgICAgc3dpdGNoIChtX2N1cnZlKSB7CiAgICAgY2FzZSBOYW1lZEN1cnZlOjpQMjU2
OgotICAgICAgICByZXN1bHQubmFtZWRDdXJ2ZSA9IFAyNTY7CisgICAgICAgIHJlc3VsdC5uYW1l
ZEN1cnZlID0gU3RyaW5nIHsgUDI1NiB9OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5hbWVk
Q3VydmU6OlAzODQ6Ci0gICAgICAgIHJlc3VsdC5uYW1lZEN1cnZlID0gUDM4NDsKKyAgICAgICAg
cmVzdWx0Lm5hbWVkQ3VydmUgPSBTdHJpbmcgeyBQMzg0IH07CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTmFtZWRDdXJ2ZTo6UDUyMToKLSAgICAgICAgcmVzdWx0Lm5hbWVkQ3VydmUgPSBQNTIx
OworICAgICAgICByZXN1bHQubmFtZWRDdXJ2ZSA9IFN0cmluZyB7IFA1MjEgfTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uY3BwCmluZGV4IDAwYWI3
NDlmM2I4Yi4uZWU3NDljYzQxNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmNwcApA
QCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgRE9NRXhjZXB0aW9uOjpMZWdhY3lDb2RlIGxlZ2FjeUNv
ZGVGcm9tTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiBSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNl
cHRpb246OmNyZWF0ZShFeGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
CiAgICAgYXV0byYgZGVzY3JpcHRpb24gPSBET01FeGNlcHRpb246OmRlc2NyaXB0aW9uKGVjKTsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01FeGNlcHRpb24oZGVzY3JpcHRpb24ubGVnYWN5
Q29kZSwgZGVzY3JpcHRpb24ubmFtZSwgIW1lc3NhZ2UuaXNFbXB0eSgpID8gbWVzc2FnZSA6IGRl
c2NyaXB0aW9uLm1lc3NhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01FeGNlcHRp
b24oZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgU3RyaW5nIHsgZGVzY3JpcHRpb24ubmFtZSB9LCAh
bWVzc2FnZS5pc0VtcHR5KCkgPyBtZXNzYWdlIDogU3RyaW5nIHsgZGVzY3JpcHRpb24ubWVzc2Fn
ZSB9KSk7CiB9CiAKIFJlZjxET01FeGNlcHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTA0LDcgKzEwNCw3IEBA
IFJlZjxET01FeGNlcHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBuYW1lCiBSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNlcHRpb246
OmNyZWF0ZShjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKIHsKICAgICBhdXRvJiBkZXNjcmlw
dGlvbiA9IERPTUV4Y2VwdGlvbjo6ZGVzY3JpcHRpb24oZXhjZXB0aW9uLmNvZGUoKSk7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRXhjZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUs
IGRlc2NyaXB0aW9uLm5hbWUsIGV4Y2VwdGlvbi5tZXNzYWdlKCkuaXNFbXB0eSgpID8gZGVzY3Jp
cHRpb24ubWVzc2FnZSA6IGV4Y2VwdGlvbi5tZXNzYWdlKCkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBET01FeGNlcHRpb24oZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgU3RyaW5nIHsgZGVz
Y3JpcHRpb24ubmFtZSB9LCBleGNlcHRpb24ubWVzc2FnZSgpLmlzRW1wdHkoKSA/IFN0cmluZyB7
IGRlc2NyaXB0aW9uLm1lc3NhZ2UgfSA6IGV4Y2VwdGlvbi5tZXNzYWdlKCkpKTsKIH0KIAogRE9N
RXhjZXB0aW9uOjpET01FeGNlcHRpb24oTGVnYWN5Q29kZSBsZWdhY3lDb2RlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmNwcAppbmRleCAzM2I2MmMzYTljMmUuLjMzMDY0YjU0MjNhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzIzLDcgKzMyMyw3IEBAIGJvb2wgU2NyaXB0RWxlbWVu
dDo6cmVxdWVzdE1vZHVsZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9z
aXRpb24pCiAgICAgU3RyaW5nIG5vbmNlID0gbV9lbGVtZW50Lm5vbmNlKCk7CiAgICAgU3RyaW5n
IGNyb3NzT3JpZ2luTW9kZSA9IG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKTsKICAgICBpZiAoY3Jvc3NPcmlnaW5Nb2Rl
LmlzTnVsbCgpKQotICAgICAgICBjcm9zc09yaWdpbk1vZGUgPSBTY3JpcHRFbGVtZW50Q2FjaGVk
U2NyaXB0RmV0Y2hlcjo6ZGVmYXVsdENyb3NzT3JpZ2luTW9kZUZvck1vZHVsZTsKKyAgICAgICAg
Y3Jvc3NPcmlnaW5Nb2RlID0gU3RyaW5nIHsgU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNo
ZXI6OmRlZmF1bHRDcm9zc09yaWdpbk1vZGVGb3JNb2R1bGUgfTsKIAogICAgIGlmIChoYXNTb3Vy
Y2VBdHRyaWJ1dGUoKSkgewogICAgICAgICBBU1NFUlQobV9lbGVtZW50LmlzQ29ubmVjdGVkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnRDYWNoZWRTY3Jp
cHRGZXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50Q2FjaGVkU2Ny
aXB0RmV0Y2hlci5jcHAKaW5kZXggMTA0M2I3MzcyZmIxLi4zNzQwNjM4MzkyNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRj
aGVyLmNwcApAQCAtMzksNyArMzksNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3Jp
cHQ+IFNjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0TW9kdQogICAgIC8v
IElmIHRoZSBmZXRjaGVyIGlzIG5vdCBtb2R1bGUgc2NyaXB0LCBjcmVkZW50aWFsIG1vZGUgaXMg
YWx3YXlzICJzYW1lLW9yaWdpbiIgKCJhbm9ueW1vdXMiKS4KICAgICAvLyBUaGlzIGNvZGUgaXMg
Zm9yIGR5bmFtaWMgbW9kdWxlIGltcG9ydCAoYGltcG9ydGAgb3BlcmF0b3IpLgogCi0gICAgcmV0
dXJuIHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNvdXJjZVVSTCwgaXNDbGFzc2lj
U2NyaXB0KCkgPyBkZWZhdWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9kdWxlIDogbV9jcm9zc09yaWdp
bk1vZGUsIFdURk1vdmUoaW50ZWdyaXR5KSwgeyB9KTsKKyAgICByZXR1cm4gcmVxdWVzdFNjcmlw
dFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNlVVJMLCBpc0NsYXNzaWNTY3JpcHQoKSA/IEF0b21T
dHJpbmcgeyBkZWZhdWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9kdWxlIH0gOiBtX2Nyb3NzT3JpZ2lu
TW9kZSwgV1RGTW92ZShpbnRlZ3JpdHkpLCB7IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCA2MWExZWE2Yjk3NTcuLjJkYzY5YzkyNmQ5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xODI4LDggKzE4
MjgsOSBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1hcCYgY3JlYXRlQ29tbWFuZE1hcCgpCiAgICAg
Q29tbWFuZE1hcCYgY29tbWFuZE1hcCA9ICpuZXcgQ29tbWFuZE1hcDsKIAogICAgIGZvciAoYXV0
byYgY29tbWFuZCA6IGNvbW1hbmRzKSB7Ci0gICAgICAgIEFTU0VSVCghY29tbWFuZE1hcC5nZXQo
Y29tbWFuZC5uYW1lKSk7Ci0gICAgICAgIGNvbW1hbmRNYXAuc2V0KGNvbW1hbmQubmFtZSwgJmNv
bW1hbmQuY29tbWFuZCk7CisgICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSB7IGNvbW1hbmQubmFt
ZSB9OworICAgICAgICBBU1NFUlQoIWNvbW1hbmRNYXAuZ2V0KGNvbW1hbmROYW1lKSk7CisgICAg
ICAgIGNvbW1hbmRNYXAuc2V0KGNvbW1hbmROYW1lLCAmY29tbWFuZC5jb21tYW5kKTsKICAgICB9
CiAKICAgICByZXR1cm4gY29tbWFuZE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCmluZGV4IDJmMTBjZWQ4NDEzMS4uZDU3N2VhNjZlYWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTM5NSw3ICszOTUs
NyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKGNvbnN0IFN0cmlu
ZyYgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QgogICAgIC8vIENvZGUgZWxzZXdoZXJlIG5vcm1h
bGl6ZXMgbGluZSBlbmRpbmdzIGFkZGVkIGJ5IHRoZSB1c2VyIHZpYSB0aGUga2V5Ym9hcmQgb3Ig
cGFzdGluZy4KICAgICAvLyBXZSBub3JtYWxpemUgbGluZSBlbmRpbmdzIGNvbWluZyBmcm9tIEph
dmFTY3JpcHQgaGVyZS4KICAgICBTdHJpbmcgbm9ybWFsaXplZFZhbHVlID0gbmV3VmFsdWUuaXNO
dWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmV3VmFsdWU7Ci0gICAgbm9ybWFsaXplZFZhbHVlLnJl
cGxhY2UoIlxyXG4iLCAiXG4iKTsKKyAgICBub3JtYWxpemVkVmFsdWUucmVwbGFjZSgiXHJcbiJf
cywgIlxuIl9zKTsKICAgICBub3JtYWxpemVkVmFsdWUucmVwbGFjZSgnXHInLCAnXG4nKTsKIAog
ICAgIC8vIFJldHVybiBlYXJseSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gbW92ZSB0aGUgY2Fy
ZXQgb3IgdHJpZ2dlciBvdGhlciBzaWRlIGVmZmVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5k
ZXggMGU3ODA2M2UzYTQxLi45ZjAwM2VmODQzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBA
IC0yOTUsNyArMjk1LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6U3RhdGU6OlN0
YXRlKCkKIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdGF0ZTo6Zm9udFN0
cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFmb250LnJlYWxpemVkKCkpCi0gICAgICAgIHJldHVy
biBEZWZhdWx0Rm9udDsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7IERlZmF1bHRGb250IH07CiAK
ICAgICBTdHJpbmdCdWlsZGVyIHNlcmlhbGl6ZWRGb250OwogICAgIGNvbnN0IGF1dG8mIGZvbnQg
PSB0aGlzLT5mb250LmZvbnREZXNjcmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKaW5kZXggYTUxMzAwMjE2MWI5
Li45MGVhODJlOGRmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxSZXNvdXJjZVByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcApAQCAtNTksNyArNTksNyBAQCBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgUHJlbG9hZFJlcXVlc3Q6OnJlc291cmNlUmVxdWVzdChEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgU3RyaW5nIGNyb3NzT3JpZ2luTW9kZSA9IG1fY3Jvc3NPcmlnaW5Nb2RlOwogICAg
IGlmIChtX21vZHVsZVNjcmlwdCA9PSBNb2R1bGVTY3JpcHQ6OlllcykgewogICAgICAgICBpZiAo
Y3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpKQotICAgICAgICAgICAgY3Jvc3NPcmlnaW5Nb2RlID0g
U2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6OmRlZmF1bHRDcm9zc09yaWdpbk1vZGVG
b3JNb2R1bGU7CisgICAgICAgICAgICBjcm9zc09yaWdpbk1vZGUgPSBTdHJpbmcgeyBTY3JpcHRF
bGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6ZGVmYXVsdENyb3NzT3JpZ2luTW9kZUZvck1vZHVs
ZSB9OwogICAgIH0KICAgICBpZiAobV9yZXNvdXJjZVR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5
cGU6OlNjcmlwdCB8fCBtX3Jlc291cmNlVHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SW1h
Z2VSZXNvdXJjZSkKICAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IG1fcmVmZXJyZXJQ
b2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXgg
MTlmYzg1Y2Q4OTdhLi5mYTQzYWEzODlkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAKQEAgLTM5MSw3ICszOTEsNyBAQCBib29sIFRleHRUcmFja0N1ZTo6
aGFzRXF1aXZhbGVudFN0YXJ0VGltZShjb25zdCBUZXh0VHJhY2tDdWUmIGN1ZSkgY29uc3QKIAog
dm9pZCBUZXh0VHJhY2tDdWU6OnRvSlNPTihKU09OOjpPYmplY3QmIHZhbHVlKSBjb25zdAogewot
ICAgIEFTQ0lJTGl0ZXJhbCB0eXBlID0gIkdlbmVyaWMiX3M7CisgICAgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCB0eXBlID0gIkdlbmVyaWMiX3M7CiAgICAgc3dpdGNoIChjdWVUeXBlKCkpIHsKICAg
ICBjYXNlIFRleHRUcmFja0N1ZTo6Q29udmVydGVkVG9XZWJWVFQ6CiAgICAgICAgIHR5cGUgPSAi
Q29udmVydGVkVG9XZWJWVFQiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3Bw
CmluZGV4IDgzODkwOGRjOTM2ZS4uZGFjNjE3NGRiMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NRWRpdG9yLmNwcApAQCAtNDM3LDcgKzQzNyw3IEBAIHN0YXRpYyBib29sIHBvcHVsYXRl
RXJyb3JTdHJpbmcoRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQsIEVycm9yU3RyaW5nJiBlcnJv
clN0CiB7CiAgICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIGVycm9yU3RyaW5nID0gRE9NRXhjZXB0aW9uOjpuYW1lKHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkuY29kZSgpKTsKKyAgICBlcnJvclN0cmluZyA9IFN0cmluZyB7IERPTUV4Y2Vw
dGlvbjo6bmFtZShyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSkgfTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5jcHAKaW5kZXggYmJjYzc5YWJjMzg2Li5jZTIzNGUyNTU4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMzMyLDcgKzEzMzIsNyBAQCBS
ZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rp
b24oU3RyaW5nJiYgbmFtZSwgSW5zcAogCiBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+
IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc0dyYWRpZW50KGNvbnN0IENhbnZh
c0dyYWRpZW50JiBjYW52YXNHcmFkaWVudCkKIHsKLSAgICBBU0NJSUxpdGVyYWwgdHlwZSA9ICJs
aW5lYXItZ3JhZGllbnQiX3M7CisgICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0eXBlID0gImxp
bmVhci1ncmFkaWVudCJfczsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpBcnJheU9mPGRv
dWJsZT46OmNyZWF0ZSgpOwogICAgIFdURjo6c3dpdGNoT24oY2FudmFzR3JhZGllbnQuZ3JhZGll
bnQoKS5kYXRhKCksCiAgICAgICAgIFsmXSAoY29uc3QgR3JhZGllbnQ6OkxpbmVhckRhdGEmIGRh
dGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcAppbmRleCBhMGIyMzIxMGIyMzguLmIyYzE4NDEzMjIwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNzEzLDExICs3MTMs
MTEgQEAgUmVmPFByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVX
aXRoUHJvcGVydGllcygpIGNvbnN0CiAgICAgICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT4+OjppdGVyYXRvciBhY3RpdmVJdCA9IHBy
b3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5maW5kKGNhbm9uaWNhbFByb3BlcnR5
TmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ICE9IHByb3BlcnR5TmFtZVRvUHJl
dmlvdXNBY3RpdmVQcm9wZXJ0eS5lbmQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAocHJv
cGVydHlFbnRyeS5wYXJzZWRPaykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdQ
cmlvcml0eSA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKFByb3RvY29sOjpDU1M6OkNTU1By
b3BlcnR5Ojpwcmlvcml0eUtleSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld1By
aW9yaXR5ID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkNT
Uzo6Q1NTUHJvcGVydHk6OnByaW9yaXR5S2V5IH0pOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCEhbmV3UHJpb3JpdHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNQ
cmlvcml0eSA9IG5ld1ByaW9yaXR5OwogCi0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG5l
d1N0YXR1cyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKFByb3RvY29sOjpDU1M6OkNTU1By
b3BlcnR5OjpzdGF0dXNLZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdTdGF0
dXMgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6Q1NTOjpD
U1NQcm9wZXJ0eTo6c3RhdHVzS2V5IH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEh
bmV3U3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTdGF0dXMg
PSBuZXdTdGF0dXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU3Rh
dHVzICE9IFByb3RvY29sOjpIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6
Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpKSB7CkBAIC03MzAsNyArNzMwLDcgQEAg
UmVmPFByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJv
cGVydGllcygpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c1BhcnNlZE9rID0gYWN0aXZlSXQtPnZhbHVlLT5n
ZXRCb29sZWFuKFByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpwYXJzZWRPa0tleSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIHByZXZpb3VzUGFyc2VkT2sgPSBhY3RpdmVJdC0+dmFs
dWUtPmdldEJvb2xlYW4oU3RyaW5nIHsgUHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OnBhcnNl
ZE9rS2V5IH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzUGFyc2VkT2sg
JiYgIXByZXZpb3VzUGFyc2VkT2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
SW5hY3RpdmF0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXgg
MGUxODZiY2VhNzAxLi5jNjc4Y2E1MmE2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMzksMTMgKzEzOSwx
MyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb2xvcj4gcGFyc2VDb2xvcihSZWZQdHI8SlNPTjo6
T2JqZWN0PiYmIGNvbG9yT2JqZWN0KQogICAgIGlmICghY29sb3JPYmplY3QpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdl
cihQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OnJLZXkpOwotICAgIGF1dG8gZyA9IGNvbG9yT2Jq
ZWN0LT5nZXRJbnRlZ2VyKFByb3RvY29sOjpET006OlJHQkFDb2xvcjo6Z0tleSk7Ci0gICAgYXV0
byBiID0gY29sb3JPYmplY3QtPmdldEludGVnZXIoUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpi
S2V5KTsKKyAgICBhdXRvIHIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihTdHJpbmcgeyBQcm90
b2NvbDo6RE9NOjpSR0JBQ29sb3I6OnJLZXkgfSk7CisgICAgYXV0byBnID0gY29sb3JPYmplY3Qt
PmdldEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpnS2V5IH0pOwor
ICAgIGF1dG8gYiA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpE
T006OlJHQkFDb2xvcjo6YktleSB9KTsKICAgICBpZiAoIXIgfHwgIWcgfHwgIWIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGEgPSBjb2xvck9iamVjdC0+Z2V0RG91
YmxlKFByb3RvY29sOjpET006OlJHQkFDb2xvcjo6YUtleSk7CisgICAgYXV0byBhID0gY29sb3JP
YmplY3QtPmdldERvdWJsZShTdHJpbmcgeyBQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OmFLZXkg
fSk7CiAgICAgaWYgKCFhKQogICAgICAgICByZXR1cm4geyBtYWtlRnJvbUNvbXBvbmVudHNDbGFt
cGluZzxTUkdCQTx1aW50OF90Pj4oKnIsICpnLCAqYikgfTsKICAgICByZXR1cm4geyBtYWtlRnJv
bUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFNSR0JBPHVpbnQ4X3Q+PigqciwgKmcsICpi
LCBjb252ZXJ0RmxvYXRBbHBoYVRvPHVpbnQ4X3Q+KCphKSkgfTsKQEAgLTI4MSw3ICsyODEsNyBA
QCBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoRXhjZXB0aW9uQ29kZSBl
YykKIAogU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKEV4Y2VwdGlvbiYm
IGV4Y2VwdGlvbikKIHsKLSAgICByZXR1cm4gRE9NRXhjZXB0aW9uOjpuYW1lKGV4Y2VwdGlvbi5j
b2RlKCkpOworICAgIHJldHVybiBTdHJpbmcgeyBET01FeGNlcHRpb246Om5hbWUoZXhjZXB0aW9u
LmNvZGUoKSkgfTsKIH0KIAogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBh
Z2VBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCkBAIC0x
MjgyLDExICsxMjgyLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JPdmVybGF5OjpIaWdo
bGlnaHQ6OkNvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdoCiAgICAgfQogCiAgICAg
YXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hs
aWdodDo6Q29uZmlnPigpOwotICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSBoaWdobGln
aHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4oUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29u
ZmlnOjpzaG93SW5mb0tleSkudmFsdWVfb3IoZmFsc2UpOwotICAgIGhpZ2hsaWdodENvbmZpZy0+
Y29udGVudCA9IHBhcnNlQ29uZmlnQ29sb3IoUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmln
Ojpjb250ZW50Q29sb3JLZXksICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwotICAgIGhpZ2hs
aWdodENvbmZpZy0+cGFkZGluZyA9IHBhcnNlQ29uZmlnQ29sb3IoUHJvdG9jb2w6OkRPTTo6SGln
aGxpZ2h0Q29uZmlnOjpwYWRkaW5nQ29sb3JLZXksICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3Qp
OwotICAgIGhpZ2hsaWdodENvbmZpZy0+Ym9yZGVyID0gcGFyc2VDb25maWdDb2xvcihQcm90b2Nv
bDo6RE9NOjpIaWdobGlnaHRDb25maWc6OmJvcmRlckNvbG9yS2V5LCAqaGlnaGxpZ2h0SW5zcGVj
dG9yT2JqZWN0KTsKLSAgICBoaWdobGlnaHRDb25maWctPm1hcmdpbiA9IHBhcnNlQ29uZmlnQ29s
b3IoUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjptYXJnaW5Db2xvcktleSwgKmhpZ2hs
aWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IGhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6RE9N
OjpIaWdobGlnaHRDb25maWc6OnNob3dJbmZvS2V5IH0pLnZhbHVlX29yKGZhbHNlKTsKKyAgICBo
aWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmluZyB7IFByb3Rv
Y29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6Y29udGVudENvbG9yS2V5IH0sICpoaWdobGlnaHRJ
bnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hsaWdodENvbmZpZy0+cGFkZGluZyA9IHBhcnNlQ29u
ZmlnQ29sb3IoU3RyaW5nIHsgUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpwYWRkaW5n
Q29sb3JLZXkgfSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxpZ2h0Q29u
ZmlnLT5ib3JkZXIgPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmluZyB7IFByb3RvY29sOjpET006Okhp
Z2hsaWdodENvbmZpZzo6Ym9yZGVyQ29sb3JLZXkgfSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVj
dCk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5tYXJnaW4gPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmlu
ZyB7IFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6bWFyZ2luQ29sb3JLZXkgfSwgKmhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAgICAgcmV0dXJuIGhpZ2hsaWdodENvbmZpZzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDEzZmMwYjgxZWY4Ny4uYThlZDUzMTExZDE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzZXRET01TdG9y
YWdlSXRlbShSZWY8SlMKICAgICBib29sIHF1b3RhRXhjZXB0aW9uID0gZmFsc2U7CiAgICAgc3Rv
cmFnZUFyZWEtPnNldEl0ZW0oKmZyYW1lLCBrZXksIHZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CiAg
ICAgaWYgKHF1b3RhRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRE9N
RXhjZXB0aW9uOjpuYW1lKFF1b3RhRXhjZWVkZWRFcnJvcikpOworICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoU3RyaW5nIHsgRE9NRXhjZXB0aW9uOjpuYW1lKFF1b3RhRXhjZWVkZWRFcnJv
cikgfSk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMTk1LDEzICsxOTUsMTMgQEAgdm9pZCBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0
IFN0cmluZyYga2V5LCBjb24KIAogUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHN0b3JhZ2VJZCwgRnJhbWUqJiB0YXJnZXRGcmFtZSkK
IHsKLSAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gc3RvcmFnZUlkLT5nZXRTdHJpbmcoUHJvdG9j
b2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6c2VjdXJpdHlPcmlnaW5LZXkpOworICAgIGF1dG8g
c2VjdXJpdHlPcmlnaW4gPSBzdG9yYWdlSWQtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6
RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpzZWN1cml0eU9yaWdpbktleSB9KTsKICAgICBpZiAoIXNl
Y3VyaXR5T3JpZ2luKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcgc2VjdXJpdHlP
cmlnaW4gaW4gZ2l2ZW4gc3RvcmFnZUlkIjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgYXV0byBpc0xvY2FsU3RvcmFnZSA9IHN0b3JhZ2VJZC0+Z2V0Qm9vbGVhbihQcm90
b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjppc0xvY2FsU3RvcmFnZUtleSk7CisgICAgYXV0
byBpc0xvY2FsU3RvcmFnZSA9IHN0b3JhZ2VJZC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2Nv
bDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjppc0xvY2FsU3RvcmFnZUtleSB9KTsKICAgICBpZiAo
IWlzTG9jYWxTdG9yYWdlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaXNMb2Nh
bFN0b3JhZ2UgaW4gZ2l2ZW4gc3RvcmFnZUlkIjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDVkNTEyZTc4ZTIwMC4uMWMxMzUxYWI4ZTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcApAQCAtMjU1LDcgKzI1NSw3IEBAIHByaXZhdGU6CiAKIHN0YXRp
YyBSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KFJlZjxKU09OOjpPYmpl
Y3Q+JiYga2V5KQogewotICAgIGF1dG8gdHlwZVN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFByb3Rv
Y29sOjpJbmRleGVkREI6OktleTo6dHlwZUtleSk7CisgICAgYXV0byB0eXBlU3RyaW5nID0ga2V5
LT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5Ojp0eXBlS2V5IH0p
OwogICAgIGlmICghdHlwZVN0cmluZykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI2
NSwyOCArMjY1LDI4IEBAIHN0YXRpYyBSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9y
T2JqZWN0KFJlZjxKU09OOjpPYmplY3Q+JiYga2V5KQogCiAgICAgc3dpdGNoICgqdHlwZSkgewog
ICAgIGNhc2UgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpUeXBlOjpOdW1iZXI6IHsKLSAgICAg
ICAgYXV0byBudW1iZXIgPSBrZXktPmdldERvdWJsZShQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6
Om51bWJlcktleSk7CisgICAgICAgIGF1dG8gbnVtYmVyID0ga2V5LT5nZXREb3VibGUoU3RyaW5n
IHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpudW1iZXJLZXkgfSk7CiAgICAgICAgIGlmICgh
bnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBJREJL
ZXk6OmNyZWF0ZU51bWJlcigqbnVtYmVyKTsKICAgICB9CiAKICAgICBjYXNlIFByb3RvY29sOjpJ
bmRleGVkREI6OktleTo6VHlwZTo6U3RyaW5nOiB7Ci0gICAgICAgIGF1dG8gc3RyaW5nID0ga2V5
LT5nZXRTdHJpbmcoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpzdHJpbmdLZXkpOworICAgICAg
ICBhdXRvIHN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVk
REI6OktleTo6c3RyaW5nS2V5IH0pOwogICAgICAgICBpZiAoIXN0cmluZykKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVTdHJpbmcoc3Ry
aW5nKTsKICAgICB9CiAKICAgICBjYXNlIFByb3RvY29sOjpJbmRleGVkREI6OktleTo6VHlwZTo6
RGF0ZTogewotICAgICAgICBhdXRvIGRhdGUgPSBrZXktPmdldERvdWJsZShQcm90b2NvbDo6SW5k
ZXhlZERCOjpLZXk6OmRhdGVLZXkpOworICAgICAgICBhdXRvIGRhdGUgPSBrZXktPmdldERvdWJs
ZShTdHJpbmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OmRhdGVLZXkgfSk7CiAgICAgICAg
IGlmICghZGF0ZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4g
SURCS2V5OjpjcmVhdGVEYXRlKCpkYXRlKTsKICAgICB9CiAKICAgICBjYXNlIFByb3RvY29sOjpJ
bmRleGVkREI6OktleTo6VHlwZTo6QXJyYXk6IHsKLSAgICAgICAgYXV0byBhcnJheSA9IGtleS0+
Z2V0QXJyYXkoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjphcnJheUtleSk7CisgICAgICAgIGF1
dG8gYXJyYXkgPSBrZXktPmdldEFycmF5KFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVkREI6Oktl
eTo6YXJyYXlLZXkgfSk7CiAgICAgICAgIGlmICghYXJyYXkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApAQCAtMzA4LDI0ICszMDgsMjQgQEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGlk
YktleUZyb21JbnNwZWN0b3JPYmplY3QoUmVmPEpTT046Ok9iamVjdD4mJiBrZXkpCiBzdGF0aWMg
UmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZShKU09OOjpPYmplY3Qm
IGtleVJhbmdlKQogewogICAgIFJlZlB0cjxJREJLZXk+IGlkYkxvd2VyOwotICAgIGlmIChhdXRv
IGxvd2VyID0ga2V5UmFuZ2UuZ2V0T2JqZWN0KFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdl
Ojpsb3dlcktleSkpIHsKKyAgICBpZiAoYXV0byBsb3dlciA9IGtleVJhbmdlLmdldE9iamVjdChT
dHJpbmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5nZTo6bG93ZXJLZXkgfSkpIHsKICAg
ICAgICAgaWRiTG93ZXIgPSBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KGxvd2VyLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgICAgICBpZiAoIWlkYkxvd2VyKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCiAgICAgUmVmUHRyPElEQktleT4gaWRiVXBwZXI7Ci0gICAgaWYgKGF1
dG8gdXBwZXIgPSBrZXlSYW5nZS5nZXRPYmplY3QoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFu
Z2U6OnVwcGVyS2V5KSkgeworICAgIGlmIChhdXRvIHVwcGVyID0ga2V5UmFuZ2UuZ2V0T2JqZWN0
KFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOjp1cHBlcktleSB9KSkgewog
ICAgICAgICBpZGJVcHBlciA9IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QodXBwZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgICAgIGlmICghaWRiVXBwZXIpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGxvd2VyT3BlbiA9IGtleVJhbmdlLmdldEJvb2xl
YW4oUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFuZ2U6Omxvd2VyT3BlbktleSk7CisgICAgYXV0
byBsb3dlck9wZW4gPSBrZXlSYW5nZS5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpJbmRl
eGVkREI6OktleVJhbmdlOjpsb3dlck9wZW5LZXkgfSk7CiAgICAgaWYgKCFsb3dlck9wZW4pCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byB1cHBlck9wZW4gPSBrZXlSYW5nZS5n
ZXRCb29sZWFuKFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOjp1cHBlck9wZW5LZXkpOwor
ICAgIGF1dG8gdXBwZXJPcGVuID0ga2V5UmFuZ2UuZ2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2Nv
bDo6SW5kZXhlZERCOjpLZXlSYW5nZTo6dXBwZXJPcGVuS2V5IH0pOwogICAgIGlmICghdXBwZXJP
cGVuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDZl
NWE1ZmM4OWNjZS4uN2Q0MTMwZWI0ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC01MjgsNyAr
NTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmkKICAgICBpZiAoY2FjaGVkUmVzb3VyY2Up
IHsKICAgICAgICAgLy8gVXNlIG1pbWUgdHlwZSBmcm9tIGNhY2hlZCByZXNvdXJjZSBpbiBjYXNl
IHRoZSBvbmUgaW4gcmVzcG9uc2UgaXMgZW1wdHkuCiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3Bv
bnNlICYmIHJlc3BvbnNlLm1pbWVUeXBlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVzb3Vy
Y2VSZXNwb25zZS0+c2V0U3RyaW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6bWltZVR5
cGVLZXksIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOworICAgICAgICAg
ICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpOZXR3b3Jr
OjpSZXNwb25zZTo6bWltZVR5cGVLZXkgfSwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWlt
ZVR5cGUoKSk7CiAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkQ2FjaGVkUmVzb3VyY2UocmVx
dWVzdElkLCBjYWNoZWRSZXNvdXJjZSk7CiAgICAgfQogCkBAIC01NTEsMTIgKzU1MSwxMiBAQCB2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCi0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmco
UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjptaW1lVHlwZUtleSwgcHJldmlvdXNSZXNvdXJj
ZURhdGEtPm1pbWVUeXBlKCkpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3Ry
aW5nKFN0cmluZyB7IFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6bWltZVR5cGVLZXkgfSwg
cHJldmlvdXNSZXNvdXJjZURhdGEtPm1pbWVUeXBlKCkpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRJbnRlZ2VyKFByb3RvY29sOjpOZXR3b3JrOjpSZXNw
b25zZTo6c3RhdHVzS2V5LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0YXR1c0NvZGUoKSk7
Ci0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoUHJvdG9jb2w6Ok5ldHdv
cms6OlJlc3BvbnNlOjpzdGF0dXNUZXh0S2V5LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0
YXR1c1RleHQoKSk7CisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRJbnRlZ2VyKFN0
cmluZyB7IFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c3RhdHVzS2V5IH0sIHByZXZpb3Vz
UmVzb3VyY2VEYXRhLT5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICAgICAgICAgIHJlc291cmNlUmVz
cG9uc2UtPnNldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OnN0
YXR1c1RleHRLZXkgfSwgcHJldmlvdXNSZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNUZXh0KCkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoUHJv
dG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjpzb3VyY2VLZXksIFByb3RvY29sOjpIZWxwZXJzOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OlNvdXJjZTo6
RGlza0NhY2hlKSk7CisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoU3Ry
aW5nIHsgUHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjpzb3VyY2VLZXkgfSwgUHJvdG9jb2w6
OkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25z
ZTo6U291cmNlOjpEaXNrQ2FjaGUpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmlu
ZGV4IGQxYjI2OWY4ZmE3ZC4uNmRiNTJiN2FmY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC01NjgsMzEg
KzU2OCwzMSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llT2JqZWN0
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogewogICAgIENvb2tpZSBjb29raWU7
CiAKLSAgICBjb29raWUubmFtZSA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQ
YWdlOjpDb29raWU6Om5hbWVLZXkpOworICAgIGNvb2tpZS5uYW1lID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6bmFtZUtleSB9KTsKICAg
ICBpZiAoIWNvb2tpZS5uYW1lKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFs
dWUgZm9yIGtleSBuYW1lIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCi0gICAgY29va2llLnZhbHVlID0gY29va2llT2JqZWN0LT5nZXRTdHJp
bmcoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6dmFsdWVLZXkpOworICAgIGNvb2tpZS52YWx1ZSA9
IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6
OnZhbHVlS2V5IH0pOwogICAgIGlmICghY29va2llLnZhbHVlKSB7CiAgICAgICAgIGVycm9yU3Ry
aW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSB2YWx1ZSBpbiBnaXZlbiBjb29raWUiOwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGNvb2tpZS5kb21haW4gPSBj
b29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpkb21haW5LZXkp
OworICAgIGNvb2tpZS5kb21haW4gPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhTdHJpbmcgeyBQ
cm90b2NvbDo6UGFnZTo6Q29va2llOjpkb21haW5LZXkgfSk7CiAgICAgaWYgKCFjb29raWUuZG9t
YWluKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBkb21h
aW4gaW4gZ2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKLSAgICBjb29raWUucGF0aCA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQ
YWdlOjpDb29raWU6OnBhdGhLZXkpOworICAgIGNvb2tpZS5wYXRoID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6cGF0aEtleSB9KTsKICAg
ICBpZiAoIWNvb2tpZS5wYXRoKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFs
dWUgZm9yIGtleSBwYXRoIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCi0gICAgYXV0byBodHRwT25seSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9v
bGVhbihQcm90b2NvbDo6UGFnZTo6Q29va2llOjpodHRwT25seUtleSk7CisgICAgYXV0byBodHRw
T25seSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6
Q29va2llOjpodHRwT25seUtleSB9KTsKICAgICBpZiAoIWh0dHBPbmx5KSB7CiAgICAgICAgIGVy
cm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBodHRwT25seSBpbiBnaXZlbiBjb29r
aWUiOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjAwLDcgKzYwMCw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluCiAKICAgICBjb29raWUuaHR0cE9ubHkgPSAqaHR0cE9ubHk7
CiAKLSAgICBhdXRvIHNlY3VyZSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6
UGFnZTo6Q29va2llOjpzZWN1cmVLZXkpOworICAgIGF1dG8gc2VjdXJlID0gY29va2llT2JqZWN0
LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlY3VyZUtleSB9
KTsKICAgICBpZiAoIXNlY3VyZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZh
bHVlIGZvciBrZXkgc2VjdXJlIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC02MDgsOCArNjA4LDggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29va2ll
PiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIAog
ICAgIGNvb2tpZS5zZWN1cmUgPSAqc2VjdXJlOwogCi0gICAgYXV0byBzZXNzaW9uID0gY29va2ll
T2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlc3Npb25LZXkpOwot
ICAgIGNvb2tpZS5leHBpcmVzID0gY29va2llT2JqZWN0LT5nZXREb3VibGUoUHJvdG9jb2w6OlBh
Z2U6OkNvb2tpZTo6ZXhwaXJlc0tleSk7CisgICAgYXV0byBzZXNzaW9uID0gY29va2llT2JqZWN0
LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlc3Npb25LZXkg
fSk7CisgICAgY29va2llLmV4cGlyZXMgPSBjb29raWVPYmplY3QtPmdldERvdWJsZShTdHJpbmcg
eyBQcm90b2NvbDo6UGFnZTo6Q29va2llOjpleHBpcmVzS2V5IH0pOwogICAgIGlmICghc2Vzc2lv
biAmJiAhY29va2llLmV4cGlyZXMpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IGV4cGlyZXMgaW4gZ2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTYxNyw3ICs2MTcsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29r
aWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbgog
CiAgICAgY29va2llLnNlc3Npb24gPSAqc2Vzc2lvbjsKIAotICAgIGF1dG8gc2FtZVNpdGVTdHJp
bmcgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpzYW1l
U2l0ZUtleSk7CisgICAgYXV0byBzYW1lU2l0ZVN0cmluZyA9IGNvb2tpZU9iamVjdC0+Z2V0U3Ry
aW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNhbWVTaXRlS2V5IH0pOwogICAg
IGlmICghc2FtZVNpdGVTdHJpbmcpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IHNhbWVTaXRlIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA5OTg4ZWE5NWYzZjEuLjU3ZmFi
ZTZiZjhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC03NDQsNyArNzQ0LDcgQEAgc3RhdGlj
IFByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRU
eXBlIHR5cGUpCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YWRkUmVjb3JkVG9UaW1l
bGluZShSZWY8SlNPTjo6T2JqZWN0PiYmIHJlY29yZCwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUp
CiB7Ci0gICAgcmVjb3JkLT5zZXRTdHJpbmcoUHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2
ZW50Ojp0eXBlS2V5LCBQcm90b2NvbDo6SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUodG9Q
cm90b2NvbCh0eXBlKSkpOworICAgIHJlY29yZC0+c2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29s
OjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6dHlwZUtleSB9LCBQcm90b2NvbDo6SGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUodG9Qcm90b2NvbCh0eXBlKSkpOwogCiAgICAgaWYgKG1fcmVj
b3JkU3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBydW50aW1lQ2FzdCBpcyBh
IGhhY2suIFdlIGRvIGl0IGJlY2F1c2Ugd2UgY2FuJ3QgYnVpbGQgVGltZWxpbmVFdmVudCBkaXJl
Y3RseSBub3cuCkBAIC03NzQsOSArNzc0LDkgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpzZXRGcmFtZUlkZW50aWZpZXIoSlNPTjo6T2JqZWN0KiByZWNvcmQsIEZyYW1lKiBmcmEKIAog
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZVJlY29yZEVudHJ5KGNvbnN0
IFRpbWVsaW5lUmVjb3JkRW50cnkmIGVudHJ5KQogewotICAgIGVudHJ5LnJlY29yZC0+c2V0T2Jq
ZWN0KFByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6ZGF0YUtleSwgZW50cnkuZGF0
YS5jb3B5UmVmKCkpOworICAgIGVudHJ5LnJlY29yZC0+c2V0T2JqZWN0KFN0cmluZyB7IFByb3Rv
Y29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6ZGF0YUtleSB9LCBlbnRyeS5kYXRhLmNvcHlS
ZWYoKSk7CiAgICAgaWYgKGVudHJ5LmNoaWxkcmVuKQotICAgICAgICBlbnRyeS5yZWNvcmQtPnNl
dEFycmF5KFByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6Y2hpbGRyZW5LZXksICpl
bnRyeS5jaGlsZHJlbik7CisgICAgICAgIGVudHJ5LnJlY29yZC0+c2V0QXJyYXkoU3RyaW5nIHsg
UHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50OjpjaGlsZHJlbktleSB9LCAqZW50cnku
Y2hpbGRyZW4pOwogICAgIGVudHJ5LnJlY29yZC0+c2V0RG91YmxlKCJlbmRUaW1lIl9zLCB0aW1l
c3RhbXAoKSk7CiAgICAgYWRkUmVjb3JkVG9UaW1lbGluZShlbnRyeS5yZWNvcmQuY29weVJlZigp
LCBlbnRyeS50eXBlKTsKIH0KQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZFR5cGUgdHlw
ZSkKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YXBwZW5kUmVjb3JkKFJlZjxKU09OOjpP
YmplY3Q+JiYgZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUsIGJvb2wgY2FwdHVyZUNhbGxT
dGFjaywgRnJhbWUqIGZyYW1lKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IHJlY29yZCA9IFRp
bWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZCh0aW1lc3RhbXAoKSwgY2Fw
dHVyZUNhbGxTdGFjayA/IG1fbWF4Q2FsbFN0YWNrRGVwdGggOiAwKTsKLSAgICByZWNvcmQtPnNl
dE9iamVjdChQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmRhdGFLZXksIFdURk1v
dmUoZGF0YSkpOworICAgIHJlY29yZC0+c2V0T2JqZWN0KFN0cmluZyB7IFByb3RvY29sOjpUaW1l
bGluZTo6VGltZWxpbmVFdmVudDo6ZGF0YUtleSB9LCBXVEZNb3ZlKGRhdGEpKTsKICAgICBzZXRG
cmFtZUlkZW50aWZpZXIoJnJlY29yZC5nZXQoKSwgZnJhbWUpOwogICAgIGFkZFJlY29yZFRvVGlt
ZWxpbmUoV1RGTW92ZShyZWNvcmQpLCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwCmluZGV4IDc0YmQxMjlmMWM4MS4uMzZl
NThjNzE0YWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9w
ZW5lclBvbGljeS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgQVNDSUlMaXRlcmFsIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5VG9TdHJpbmcoY29u
c3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSYgY29vcCkKK3N0YXRpYyBBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5VG9TdHJpbmcoY29uc3QgQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSYgY29vcCkKIHsKICAgICBzd2l0Y2ggKGNvb3ApIHsKICAg
ICBjYXNlIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlNhbWVPcmlnaW46CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRleCBjZWU4MmEzZjA3MTMuLmJjMDk5
MmY0ZDIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBAIC04
NSw3ICs4NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKFVS
TCYgdXJsLCBjb25zdCBGb3JtRGF0YSYgZGF0YSwgY29uc3QKICAgICAgICAgdXJsLnNldFF1ZXJ5
KG1ha2VTdHJpbmcocXVlcnksICcmJywgYm9keSkpOwogfQogCi1BU0NJSUxpdGVyYWwgRm9ybVN1
Ym1pc3Npb246OkF0dHJpYnV0ZXM6Om1ldGhvZFN0cmluZyhNZXRob2QgbWV0aG9kLCBib29sIGRp
YWxvZ0VsZW1lbnRFbmFibGVkKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBGb3JtU3VibWlzc2lv
bjo6QXR0cmlidXRlczo6bWV0aG9kU3RyaW5nKE1ldGhvZCBtZXRob2QsIGJvb2wgZGlhbG9nRWxl
bWVudEVuYWJsZWQpCiB7CiAgICAgaWYgKGRpYWxvZ0VsZW1lbnRFbmFibGVkICYmIG1ldGhvZCA9
PSBNZXRob2Q6OkRpYWxvZykKICAgICAgICAgcmV0dXJuICJkaWFsb2ciX3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCmluZGV4IGUwYzQ4ZWYxZTQzYS4uYjdkNDMzOGQwZjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIE1ldGhvZCBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX21ldGhv
ZDsgfQogICAgICAgICBzdGF0aWMgTWV0aG9kIHBhcnNlTWV0aG9kVHlwZShjb25zdCBTdHJpbmcm
LCBib29sKTsKICAgICAgICAgdm9pZCB1cGRhdGVNZXRob2RUeXBlKGNvbnN0IFN0cmluZyYsIGJv
b2wpOwotICAgICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG1ldGhvZFN0cmluZyhNZXRob2QsIGJv
b2wpOworICAgICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBtZXRob2RTdHJpbmco
TWV0aG9kLCBib29sKTsKIAogICAgICAgICBjb25zdCBTdHJpbmcmIGFjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYWN0aW9uOyB9CiAgICAgICAgIHZvaWQgcGFyc2VBY3Rpb24oY29uc3QgU3RyaW5n
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IDRhMTE0NDI1ZTExNi4u
MGI2Zjc4MjczOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcApAQCAtNzgs
NyArNzgsNyBAQCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VB
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJgogICAgIGJvb2wgYWxsb3dGYWxsYmFj
a05hbWVzcGFjZU91dHNpZGVNYW5pZmVzdFBhdGggPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtYW5pZmVzdE1JTUVUeXBlLCBjYWNoZU1hbmlmZXN0TUlNRVR5cGUpOwogICAgIGF1dG8g
bWFuaWZlc3RQYXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlmZXN0VVJMKTsKIAotICAg
IGF1dG8gbWFuaWZlc3RTdHJpbmcgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlM
aXRlcmFsOjpmcm9tTGl0ZXJhbFVuc2FmZShjYWNoZU1hbmlmZXN0TUlNRVR5cGUpLCAiVVRGLTgi
KS0+ZGVjb2RlQW5kRmx1c2goZGF0YSwgbGVuZ3RoKTsKKyAgICBhdXRvIG1hbmlmZXN0U3RyaW5n
ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6OmZy
b21MaXRlcmFsVW5zYWZlKGNhY2hlTWFuaWZlc3RNSU1FVHlwZSwgc2l6ZW9mKGNhY2hlTWFuaWZl
c3RNSU1FVHlwZSkgLSAxKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7
CiAKICAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKG1hbmlmZXN0U3RyaW5nLCBb
Jl0oYXV0byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
PiB7CiAgICAgICAgIHVzaW5nIENoYXJhY3RlclR5cGUgPSB0eXBlbmFtZSBkZWNsdHlwZShidWZm
ZXIpOjpDaGFyYWN0ZXJUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCAyYWU3OTMwZjY2YzEuLjMxYWEzZDk5
MjgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
UmVxdWVzdDo6c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oY29uc3QgU3RyaW5nJiBkb21haW4p
CiAgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oZG9tYWlu
KTsKIH0KIAotc3RhdGljIGlubGluZSBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGFjY2VwdEhlYWRl
clZhbHVlRm9ySW1hZ2VSZXNvdXJjZShib29sIHN1cHBvcnRzVmlkZW9JbWFnZSkKK3N0YXRpYyBp
bmxpbmUgY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggYWNjZXB0SGVhZGVyVmFsdWVG
b3JJbWFnZVJlc291cmNlKGJvb2wgc3VwcG9ydHNWaWRlb0ltYWdlKQogewogI2lmIEhBVkUoV0VC
UCkgfHwgVVNFKFdFQlApCiAgICAgI2RlZmluZSBXRUJQX0hFQURFUl9QQVJUICJpbWFnZS93ZWJw
LCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggN2IzZWM3
OGYzZGFmLi4zZDcwNDdlODQ1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVi
dWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAg
ICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CiAgICAg
Zm9udC51cGRhdGUobnVsbHB0cik7CiAKLSAgICBhdXRvIGRyYXdMZWdlbmQgPSBbJl0gKGNvbnN0
IENvbG9yJiBjb2xvciwgQVNDSUlMaXRlcmFsIHRleHQpIHsKKyAgICBhdXRvIGRyYXdMZWdlbmQg
PSBbJl0gKGNvbnN0IENvbG9yJiBjb2xvciwgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0ZXh0KSB7
CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKICAgICAgICAgY29udGV4dC5m
aWxsUmVjdChsZWdlbmRSZWN0KTsKICAgICAgICAgZHJhd1JpZ2h0QWxpZ25lZFRleHQodGV4dCwg
Y29udGV4dCwgZm9udCwgbGVnZW5kUmVjdC5sb2NhdGlvbigpKTsKQEAgLTE5OCw3ICsxOTgsNyBA
QCB2b2lkIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJs
YXkmIHBhZ2VPdmVybGF5LCBHcmFwaGljcwogICAgIH07CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotICAgIGF1dG8gZHJhd0V2ZW50TGVnZW5kID0gWyZdIChBU0NJSUxpdGVyYWwgY29sb3Ip
IHsKKyAgICBhdXRvIGRyYXdFdmVudExlZ2VuZCA9IFsmXSAoQVNDSUlMaXRlcmFsV2l0aExlbmd0
aCBjb2xvcikgewogICAgICAgICBkcmF3TGVnZW5kKGNvbG9ycy5nZXQoU3RyaW5nVmlldyB7IGNv
bG9yIH0pLCBjb2xvcik7CiAgICAgfTsKICAgICBkcmF3RXZlbnRMZWdlbmQoInRvdWNoc3RhcnQi
X3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IDQwMmY0ZmFhYmIzNi4uM2NlNWY3
ZTkyMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCkBAIC00NTksMTMgKzQ1OSwxMyBA
QCBGcmFtZSYgRnJhbWVUcmVlOjp0b3AoKSBjb25zdAogICAgIHJldHVybiAqZnJhbWU7CiB9CiAK
LUFTQ0lJTGl0ZXJhbCBibGFua1RhcmdldEZyYW1lTmFtZSgpCitBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIGJsYW5rVGFyZ2V0RnJhbWVOYW1lKCkKIHsKICAgICByZXR1cm4gIl9ibGFuayJfczsKIH0K
IAogLy8gRklYTUU6IElzIGl0IGltcG9ydGFudCB0byBoYXZlIHRoaXM/IENhbid0IHdlIGp1c3Qg
dXNlIHRoZSBlbXB0eSBzdHJpbmcgZXZlcnl3aGVyZSB0aGlzIGlzIHVzZWQsIGluc3RlYWQ/Ci1B
U0NJSUxpdGVyYWwgc2VsZlRhcmdldEZyYW1lTmFtZSgpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IHNlbGZUYXJnZXRGcmFtZU5hbWUoKQogewogICAgIHJldHVybiAiX3NlbGYiX3M7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVRyZWUuaAppbmRleCA2NDBjYzllODczZTguLjZkOGVlNzk3Zjc4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC0xMDcsOCArMTA3LDggQEAgcHJpdmF0ZToKICAgICBtdXRh
YmxlIHVpbnQ2NF90IG1fZnJhbWVJREdlbmVyYXRvciB7IDAgfTsKIH07CiAKLUFTQ0lJTGl0ZXJh
bCBibGFua1RhcmdldEZyYW1lTmFtZSgpOwotQVNDSUlMaXRlcmFsIHNlbGZUYXJnZXRGcmFtZU5h
bWUoKTsKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggYmxhbmtUYXJnZXRGcmFtZU5hbWUoKTsKK0FT
Q0lJTGl0ZXJhbFdpdGhMZW5ndGggc2VsZlRhcmdldEZyYW1lTmFtZSgpOwogCiBib29sIGlzQmxh
bmtUYXJnZXRGcmFtZU5hbWUoU3RyaW5nVmlldyk7CiBib29sIGlzUGFyZW50VGFyZ2V0RnJhbWVO
YW1lKFN0cmluZ1ZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnkuaAppbmRl
eCBmOTJjMmYyMDQwNjcuLmRkM2ViODBkYTYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZUVudHJ5LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0
dWFsIFR5cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBB
U0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBjb25zdCA9IDA7CiAKICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxUeXBlPiBwYXJzZUVudHJ5VHlwZVN0cmluZyhjb25zdCBTdHJpbmcmIGVudHJ5VHlw
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNYXJrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTWFyay5oCmluZGV4IDg3YTU1ODVkMWJl
My4uOTZlMzQ1OTE0YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlTWFyay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNYXJrLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICB+UGVyZm9ybWFuY2VNYXJrKCk7CiAKICAgICBU
eXBlIHBlcmZvcm1hbmNlRW50cnlUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6TWFy
azsgfQotICAgIEFTQ0lJTGl0ZXJhbCBlbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
bWFyayJfczsgfQorICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZW50cnlUeXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIm1hcmsiX3M7IH0KIAogICAgIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1fc2VyaWFsaXplZERldGFpbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTWVhc3VyZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU1lYXN1cmUuaAppbmRleCAyZDJhYTNlZTEyOTUuLjJhNTQ1Y2M2ZjcxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1lYXN1cmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlTWVhc3VyZS5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6
CiAgICAgflBlcmZvcm1hbmNlTWVhc3VyZSgpOwogCiAgICAgVHlwZSBwZXJmb3JtYW5jZUVudHJ5
VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6Ok1lYXN1cmU7IH0KLSAgICBBU0NJSUxp
dGVyYWwgZW50cnlUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIm1lYXN1cmUiX3M7IH0KKyAg
ICBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJtZWFzdXJlIl9zOyB9CiAKICAgICBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3Nlcmlh
bGl6ZWREZXRhaWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU5hdmlnYXRpb25UaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uVGltaW5nLmgKaW5kZXggYzdjMWYzNmI0YzllLi5jMDNjMDRhZDkxMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgflBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWlu
ZygpOwogCiAgICAgVHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFR5cGU6Ok5hdmlnYXRpb247IH0KLSAgICBBU0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIm5hdmlnYXRpb24iX3M7IH0KKyAgICBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJuYXZpZ2F0aW9uIl9zOyB9
CiAKICAgICBkb3VibGUgdW5sb2FkRXZlbnRTdGFydCgpIGNvbnN0OwogICAgIGRvdWJsZSB1bmxv
YWRFdmVudEVuZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZVBhaW50VGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUGFp
bnRUaW1pbmcuaAppbmRleCA3MGY4MDg1ZjljYzcuLjYwOWUzOWE4NWViNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVBhaW50VGltaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVBhaW50VGltaW5nLmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJwYWludCJfczsgfQorICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGggZW50cnlUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gInBhaW50Il9zOyB9CiAgICAgVHlw
ZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OlBhaW50
OyB9CiAKICAgICB+UGVyZm9ybWFuY2VQYWludFRpbWluZygpID0gZGVmYXVsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgKaW5kZXggNjk0MzVl
ZmIwOGE2Li5hMjRlZWYyM2U2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VSZXNvdXJjZVRpbWluZy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBWZWN0b3I8UmVmPFBlcmZvcm1hbmNlU2VydmVyVGltaW5nPj4mIHNlcnZlclRpbWluZygpIGNv
bnN0IHsgcmV0dXJuIG1fc2VydmVyVGltaW5nOyB9CiAKICAgICBUeXBlIHBlcmZvcm1hbmNlRW50
cnlUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVHlwZTo6UmVzb3VyY2U7IH0KLSAgICBB
U0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gInJlc291cmNl
Il9zOyB9CisgICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAicmVzb3VyY2UiX3M7IH0KIAogcHJvdGVjdGVkOgogICAgIFBlcmZvcm1h
bmNlUmVzb3VyY2VUaW1pbmcoTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZXNvdXJjZVRpbWlu
ZyYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5
LmNwcAppbmRleCA1YTM0Y2VhMDU0YWMuLjMzODA2MWM5NjQ3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtNTUsNyArNTUsNyBA
QCB1c2luZyBBU0NJSUxpdGVyYWxTcGFuRnVuY3Rpb24gPSBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJh
bD4gKCopKCk7CiBzdGF0aWMgdm9pZCBhZGQoVVJMU2NoZW1lc01hcCYgc2V0LCBBU0NJSUxpdGVy
YWxTcGFuRnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBmdW5j
dGlvbigpKQotICAgICAgICBzZXQuYWRkKHNjaGVtZSk7CisgICAgICAgIHNldC5hZGQoU3RyaW5n
IHsgc2NoZW1lIH0pOwogfQogCiBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4g
bWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KEFTQ0lJTGl0ZXJhbFNwYW5GdW5jdGlvbiBmdW5j
dGlvbikKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBkaXNwbGF5
SXNvbGF0ZWRVUkxTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0CiBzdGF0
aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkKIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2NoZW1lcyB7Ci0gICAgICAgICJodHRwcyJf
cywKLSAgICAgICAgImFib3V0Il9zLAotICAgICAgICAiZGF0YSJfcywKLSAgICAgICAgIndzcyJf
cywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiaHR0cHMiX3MpLAorICAgICAg
ICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJhYm91dCJfcyksCisgICAgICAgIHN0YXRpY19j
YXN0PEFTQ0lJTGl0ZXJhbD4oImRhdGEiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxp
dGVyYWw+KCJ3c3MiX3MpLAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQotICAg
ICAgICAicmVzb3VyY2UiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oInJl
c291cmNlIl9zKSwKICNlbmRpZgogI2lmIEVOQUJMRShQREZKUykKLSAgICAgICAgIndlYmtpdC1w
ZGZqcy12aWV3ZXIiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIndlYmtp
dC1wZGZqcy12aWV3ZXIiX3MpLAogI2VuZGlmCiAgICAgfTsKICAgICByZXR1cm4gc2NoZW1lczsK
QEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygp
IFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIAogc3RhdGljIFNwYW48Y29u
c3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2NoZW1lcyB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBzdGQ6OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMz4gc2NoZW1lcyB7CiAgICAgICAgICJhYm91
dCJfcywKICAgICAgICAgImphdmFzY3JpcHQiX3MsCiAgICAgICAgIC8vIFRoaXMgaXMgYW4gaW50
ZW50aW9uYWwgZGlmZmVyZW5jZSBmcm9tIHRoZSBiZWhhdmlvciB0aGUgSFRNTCBzcGVjaWZpY2F0
aW9uIGNhbGxzIGZvci4KQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYg
c2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0
cgogCiBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5FbXB0eURvY3VtZW50
U2NoZW1lcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgeyAi
YWJvdXQiX3MgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8QVNDSUlMaXRlcmFs
LCAxPiBzY2hlbWVzIHsgImFib3V0Il9zIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAg
LTE5OCw3ICsxOTgsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0ZvcmJpZGRlbkZy
b21Eb21haW5SZWxheGF0aW9uKCkKIAogc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBi
dWlsdGluQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkKIHsKLSAgICBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6YXJyYXkgc2NoZW1lcyB7ICJibG9iIl9zIH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMT4gc2NoZW1lcyB7ICJibG9iIl9zIH07
CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgVVJM
U2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2lu
ZygpCiAKIHN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNPUlNFbmFibGVk
U2NoZW1lcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgeyAi
aHR0cCJfcywgImh0dHBzIl9zIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PEFT
Q0lJTGl0ZXJhbCwgMj4gc2NoZW1lcyB7ICJodHRwIl9zLCAiaHR0cHMiX3MgfTsKICAgICByZXR1
cm4gc2NoZW1lczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcAppbmRleCA1YWNiMjljZmI0NTkuLjNjMWU3MGRmM2ExNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3Ry
eTo6c3VwcG9ydGVkTm9uSW1hZ2VNSQogICAgICAgICAvLyBUaGlzIGNhbiByZXN1bHQgaW4gY3Jv
c3Mtc2l0ZSBzY3JpcHRpbmcgdnVsbmVyYWJpbGl0aWVzLgogICAgICAgICB9OwogICAgICAgICBm
b3IgKGF1dG8mIHR5cGUgOiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVBcnJheSkKLSAgICAg
ICAgICAgIHR5cGVzLmFkZCh0eXBlLmxpdGVyYWwpOworICAgICAgICAgICAgdHlwZXMuYWRkKFN0
cmluZyB7IHR5cGUubGl0ZXJhbCB9KTsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJM
RShNSFRNTCkKICAgICAgICAgQXJjaGl2ZUZhY3Rvcnk6OnJlZ2lzdGVyS25vd25BcmNoaXZlTUlN
RVR5cGVzKHR5cGVzKTsKICNlbmRpZgpAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBjb25zdCBI
YXNoTWFwPFN0cmluZywgVmVjdG9yPFN0cmluZz4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IGNvbW1vbk1pCiAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGNvbW1vbk1lZGlhVHlwZXMpIHsK
ICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCB0eXBlID0gcGFpci50eXBlOwogICAgICAgICAgICAg
QVNDSUlMaXRlcmFsIGV4dGVuc2lvbiA9IHBhaXIuZXh0ZW5zaW9uOwotICAgICAgICAgICAgbWFw
LmVuc3VyZShleHRlbnNpb24sIFt0eXBlLCBleHRlbnNpb25dIHsKKyAgICAgICAgICAgIG1hcC5l
bnN1cmUoU3RyaW5nIHsgZXh0ZW5zaW9uIH0sIFt0eXBlLCBleHRlbnNpb25dIHsKICAgICAgICAg
ICAgICAgICAvLyBGaXJzdCB0eXBlIGluIHRoZSB2ZWN0b3IgbXVzdCBhbHdheXMgYmUgdGhlIG9u
ZSBmcm9tIG1pbWVUeXBlRm9yRXh0ZW5zaW9uLAogICAgICAgICAgICAgICAgIC8vIHNvIHdlIGNh
biB1c2UgdGhlIG1hcCB3aXRob3V0IGFsc28gY2FsbGluZyBtaW1lVHlwZUZvckV4dGVuc2lvbiBl
YWNoIHRpbWUuCiAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc3lub255bXM7CkBAIC03
NjMsNyArNzYzLDcgQEAgc3RhdGljIFN0cmluZyBub3JtYWxpemVkSW1hZ2VNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIH07CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRB
cnJheU1hcCBhc3NvY2lhdGlvbk1hcCB7IG1pbWVUeXBlQXNzb2NpYXRpb25BcnJheSB9OwogICAg
IGF1dG8gbm9ybWFsaXplZFR5cGUgPSBhc3NvY2lhdGlvbk1hcC50cnlHZXQobWltZVR5cGUpOwot
ICAgIHJldHVybiBub3JtYWxpemVkVHlwZSA/ICpub3JtYWxpemVkVHlwZSA6IG1pbWVUeXBlOwor
ICAgIHJldHVybiBub3JtYWxpemVkVHlwZSA/IFN0cmluZyB7ICpub3JtYWxpemVkVHlwZSB9IDog
bWltZVR5cGU7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAKaW5kZXggOTdiMjA1N2Y2YTQwLi4zZDI3NTM1
YmJjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1p
bmdGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1Rp
bWluZ0Z1bmN0aW9uLmNwcApAQCAtMTk4LDEzICsxOTgsMTMgQEAgU3RyaW5nIFRpbWluZ0Z1bmN0
aW9uOjpjc3NUZXh0KCkgY29uc3QKICAgICBpZiAobV90eXBlID09IFRpbWluZ0Z1bmN0aW9uOjpD
dWJpY0JlemllckZ1bmN0aW9uKSB7CiAgICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gZG93bmNhc3Q8
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4oKnRoaXMpOwogICAgICAgICBpZiAoZnVuY3Rpb24u
eDEoKSA9PSAwLjI1ICYmIGZ1bmN0aW9uLnkxKCkgPT0gMC4xICYmIGZ1bmN0aW9uLngyKCkgPT0g
MC4yNSAmJiBmdW5jdGlvbi55MigpID09IDEuMCkKLSAgICAgICAgICAgIHJldHVybiAiZWFzZSI7
CisgICAgICAgICAgICByZXR1cm4gImVhc2UiX3M7CiAgICAgICAgIGlmIChmdW5jdGlvbi54MSgp
ID09IDAuNDIgJiYgIWZ1bmN0aW9uLnkxKCkgJiYgZnVuY3Rpb24ueDIoKSA9PSAxLjAgJiYgZnVu
Y3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICByZXR1cm4gImVhc2UtaW4iOworICAgICAg
ICAgICAgcmV0dXJuICJlYXNlLWluIl9zOwogICAgICAgICBpZiAoIWZ1bmN0aW9uLngxKCkgJiYg
IWZ1bmN0aW9uLnkxKCkgJiYgZnVuY3Rpb24ueDIoKSA9PSAwLjU4ICYmIGZ1bmN0aW9uLnkyKCkg
PT0gMS4wKQotICAgICAgICAgICAgcmV0dXJuICJlYXNlLW91dCI7CisgICAgICAgICAgICByZXR1
cm4gImVhc2Utb3V0Il9zOwogICAgICAgICBpZiAoZnVuY3Rpb24ueDEoKSA9PSAwLjQyICYmICFm
dW5jdGlvbi55MSgpICYmIGZ1bmN0aW9uLngyKCkgPT0gMC41OCAmJiBmdW5jdGlvbi55MigpID09
IDEuMCkKLSAgICAgICAgICAgIHJldHVybiAiZWFzZS1pbi1vdXQiOworICAgICAgICAgICAgcmV0
dXJuICJlYXNlLWluLW91dCJfczsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImN1YmljLWJl
emllcigiLCBmdW5jdGlvbi54MSgpLCAiLCAiLCBmdW5jdGlvbi55MSgpLCAiLCAiLCBmdW5jdGlv
bi54MigpLCAiLCAiLCBmdW5jdGlvbi55MigpLCAnKScpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMTJjZTNlOTZkZDMx
Li4zYTNjOTEwN2MzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRD
YWNoZTo6Y2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
CiAgICAgICAgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBmaW5kIGEgZm9udC4gV2UgaGF2ZSBh
IHNtYWxsIHNldCBvZiBmb250cyB0aGF0IHdlIGFsaWFzIHRvIG90aGVyIG5hbWVzLAogICAgICAg
ICAgICAgLy8gZS5nLiwgQXJpYWwvSGVsdmV0aWNhLCBDb3VyaWVyL0NvdXJpZXIgTmV3LCBldGMu
IFRyeSBsb29raW5nIHVwIHRoZSBmb250IHVuZGVyIHRoZSBhbGlhc2VkIG5hbWUuCiAgICAgICAg
ICAgICBpZiAoYXV0byBhbHRlcm5hdGVOYW1lID0gYWx0ZXJuYXRlRmFtaWx5TmFtZShmYW1pbHlO
YW1lKSkgewotICAgICAgICAgICAgICAgIGF1dG8qIGFsdGVybmF0ZURhdGEgPSBjYWNoZWRGb250
UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgKmFsdGVybmF0ZU5hbWUsIGZvbnRDcmVhdGlv
bkNvbnRleHQsIHRydWUpOworICAgICAgICAgICAgICAgIGF1dG8qIGFsdGVybmF0ZURhdGEgPSBj
YWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgU3RyaW5nIHsgKmFsdGVybmF0
ZU5hbWUgfSwgZm9udENyZWF0aW9uQ29udGV4dCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgLy8g
TG9vayB1cCB0aGUga2V5IGluIHRoZSBoYXNoIHRhYmxlIGFnYWluIGFzIHRoZSBwcmV2aW91cyBp
dGVyYXRvciBtYXkgaGF2ZQogICAgICAgICAgICAgICAgIC8vIGJlZW4gaW52YWxpZGF0ZWQgYnkg
dGhlIHJlY3Vyc2l2ZSBjYWxsIHRvIGNhY2hlZEZvbnRQbGF0Zm9ybURhdGEoKS4KICAgICAgICAg
ICAgICAgICBpdCA9IG1fZm9udERhdGFDYWNoZXMtPnBsYXRmb3JtRGF0YS5maW5kKGtleSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCmluZGV4IGQ4
NDgwNWYyMzUxZS4uYTNjZWQwMzEwYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
VkFzc2V0TUlNRVR5cGVDYWNoZS5tbQpAQCAtMTUyLDcgKzE1Miw4IEBAIHZvaWQgQVZBc3NldE1J
TUVUeXBlQ2FjaGU6OmluaXRpYWxpemVDYWNoZShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVICiAjaWYgRU5BQkxFKFdFQk1fRk9STUFUX1JFQURFUikKICAgICBpZiAoU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6aXNXZWJNRm9ybWF0UmVhZGVyQXZhaWxhYmxlKCkpIHsKICAgICAg
ICAgYXV0byB0eXBlcyA9IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZE1JTUVUeXBl
cygpOwotICAgICAgICBjYWNoZS5hZGQodHlwZXMuYmVnaW4oKSwgdHlwZXMuZW5kKCkpOworICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKKyAgICAgICAgICAgIGNhY2hlLmFkZChTdHJp
bmcgeyB0eXBlIH0pOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBiODY2Yzcx
NzE4Y2IuLmZjNjc0YjlhZWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAg
c3RhdGljIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIGdldFZhbHVlRnVu
Y3Rpb25OYW1lRm9yVHJhbnNmb3JtT3AKICAgICB9CiB9CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwg
cHJvcGVydHlJZFRvU3RyaW5nKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKK3N0YXRpYyBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHByb3BlcnR5SWRUb1N0cmluZyhBbmltYXRlZFByb3BlcnR5
SUQgcHJvcGVydHkpCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgIGNhc2UgQW5pbWF0
ZWRQcm9wZXJ0eVRyYW5zbGF0ZToKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgQVNDSUlMaXRl
cmFsIHByb3BlcnR5SWRUb1N0cmluZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAogc3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3Rl
cHNUaW1pbmdGdW5jdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25z
dCBBbmltYXRpb24qIGFuaW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAx
NTczZTE2NjA0MzEuLmFkYTAyMzUxYjEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC0zNzAsNyArMzcwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0
Zm9ybUluaXRpYWxpemUoKQogICAgIGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICBHTF9FbmFi
bGUoR3JhcGhpY3NDb250ZXh0R0w6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIAot
ICAgIFZlY3RvcjxBU0NJSUxpdGVyYWwsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBWZWN0
b3I8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgND4gcmVxdWlyZWRFeHRlbnNpb25zOwogICAgIGlm
IChtX2lzRm9yV2ViR0wyKSB7CiAgICAgICAgIC8vIEZvciBXZWJHTCAyLjAgb2NjbHVzaW9uIHF1
ZXJpZXMgdG8gd29yay4KICAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhU
X29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKaW5kZXggZDhlNjYwN2Y4OWNkLi5jYWQyNWM4YjEzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVt
cGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3Qg
TG9nQXJndW1lbnQ8d2VibTo6VHJhY2tUeXBlPiB7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0
b1N0cmluZyh3ZWJtOjpUcmFja1R5cGUgdHlwZSkKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCB0b1N0cmluZyh3ZWJtOjpUcmFja1R5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3
aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIHdlYm06OlRyYWNrVHlwZTo6a1ZpZGVvOiByZXR1
cm4gIlZpZGVvIl9zOwpAQCAtNzMsNyArNzMsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1
bWVudDx3ZWJtOjpUcmFja1R5cGU+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3Vt
ZW50PHdlYm06OklkPiB7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0b1N0cmluZyh3ZWJtOjpJ
ZCBpZCkKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0b1N0cmluZyh3ZWJtOjpJ
ZCBpZCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoaWQpIHsKICAgICAgICAgY2FzZSB3ZWJtOjpJ
ZDo6a0VibWw6IHJldHVybiAiRWJtbCJfczsKQEAgLTUwMywxMCArNTAzLDEwIEBAIFNwYW48Y29u
c3QgQVNDSUlMaXRlcmFsPiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRNSU1FVHlw
ZXMoKQogI2Vsc2UKICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgdHlwZXMgewogI2lm
IEVOQUJMRShWUDkpCi0gICAgICAgICJ2aWRlby93ZWJtIl9zLAorICAgICAgICBzdGF0aWNfY2Fz
dDxBU0NJSUxpdGVyYWw+KCJ2aWRlby93ZWJtIl9zKSwKICNlbmRpZgogI2lmIEVOQUJMRShWT1JC
SVMpIHx8IEVOQUJMRShPUFVTKQotICAgICAgICAiYXVkaW8vd2VibSJfcywKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiYXVkaW8vd2VibSJfcyksCiAjZW5kaWYKICAgICB9Owog
ICAgIHJldHVybiB0eXBlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5jcHAKaW5kZXggNjI5ZjczNGZhNThh
Li5hMDY4MjY2ZTk3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IEF0b21TdHJpbmcgRmlsdGVyRnVuY3Rpb246OmZpbHRlck5hbWUoVHlwZSBmaWx0ZXJUeXBlKQog
ICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgbmFtZXNNYXAgeyBuYW1lc0FycmF5
IH07CiAgICAgCiAgICAgQVNTRVJUKG5hbWVzTWFwLnRyeUdldChmaWx0ZXJUeXBlKSk7Ci0gICAg
cmV0dXJuIG5hbWVzTWFwLmdldChmaWx0ZXJUeXBlLCAiIl9zKTsKKyAgICByZXR1cm4gQXRvbVN0
cmluZyB7IG5hbWVzTWFwLmdldChmaWx0ZXJUeXBlLCAiIl9zKSB9OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCmluZGV4IGEyYzI1MGFhMmJlZi4uMGU2YzJjMmFlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtNTU2LDcgKzU1Niw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWRJbWFnZShi
dWZmZXIucmVsZWFzZU5vbk51bGwoKSwgbWltZVR5cGUpOworICAgICAgICByZXR1cm4gcmVhZGVy
LnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgU3RyaW5nIHsgbWltZVR5cGUgfSk7
CiAgICAgfTsKIAogICAgIFZlY3RvcjxJbWFnZVJlYWRpbmdJbmZvLCA2PiB0cmFuc2NvZGVkSW1h
Z2VUeXBlc1RvUmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKaW5kZXggZjNmODdhNGY3ZTliLi4zMTAyYjQzMmY0MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC05OTUsNyAr
OTk1LDcgQEAgU3RyaW5nIG5vcm1hbGl6ZUhUVFBNZXRob2QoY29uc3QgU3RyaW5nJiBtZXRob2Qp
CiAgICAgICAgICAgICAvLyBEb24ndCBib3RoZXIgYWxsb2NhdGluZyBhIG5ldyBzdHJpbmcgaWYg
aXQncyBhbHJlYWR5IGFsbCB1cHBlcmNhc2UuCiAgICAgICAgICAgICBpZiAobWV0aG9kID09IHZh
bHVlKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZyB7IHZhbHVlIH07CiAgICAgICAgIH0KICAgICB9CiAg
ICAgcmV0dXJuIG1ldGhvZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKaW5kZXggMjM0NTUyNWIyYzgwLi4xMTdjNGQ0OWQyOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzM4
LDcgKzMzMzgsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlv
bihQYXR0ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBGb250Q2FzY2Fk
ZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CiAgICAgICAgIGZvbnQudXBk
YXRlKG51bGxwdHIpOwogCi0gICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4oZGVzY3Jp
cHRpb24ubmFtZSk7CisgICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4oU3RyaW5nIHsg
ZGVzY3JpcHRpb24ubmFtZSB9KTsKICAgICAgICAgaW1hZ2VDb250ZXh0LnNldEZpbGxDb2xvcihk
ZXNjcmlwdGlvbi5maWxsQ29sb3IpOwogCiAgICAgICAgIGNvbnN0ZXhwciBmbG9hdCB0ZXh0R2Fw
ID0gNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA1NjcwYjZiZmE2N2Uu
LmYxNWE1YTY0NDExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjYz
NSw3ICs2NjM1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JDb21tYW5kc1Nob3VsZEZhaWwoYm8KIH0KICNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU0VTU0lPTikKIAotY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdHJpbmcoUGFydGlh
bE9yZGVyaW5nIG9yZGVyaW5nKQorY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggc3Ry
aW5nKFBhcnRpYWxPcmRlcmluZyBvcmRlcmluZykKIHsKICAgICBpZiAoaXNfbHQob3JkZXJpbmcp
KQogICAgICAgICByZXR1cm4gImxlc3MiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAppbmRleCA4OTVkYzlkMDg1NTAuLmU3NzVlOWYzYjEzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCkBAIC01MjMsNyArNTIzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
WE1MSHR0cFJlcXVlc3Q6OnNlbmQoQmxvYiYgYm9keSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSB3b3VsZCBsaWtlIHRvIHN1cHBvcnQgcG9zdGluZyBCbG9icyB0byBub24taHR0cCBVUkxzIChl
LmcuIGN1c3RvbSBVUkwgc2NoZW1lcykKICAgICAgICAgICAgIC8vIGJ1dCBiZWNhdXNlIG9mIHRo
ZSBhcmNoaXRlY3R1cmUgb2YgYmxvYi1oYW5kbGluZyB0aGF0IHdpbGwgcmVxdWlyZSBhIGZhaXIg
YW1vdW50IG9mIHdvcmsuCiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCBj
b25zb2xlTWVzc2FnZSB7ICJQT1NUIG9mIGEgQmxvYiB0byBub24tSFRUUCBwcm90b2NvbHMgaW4g
WE1MSHR0cFJlcXVlc3Quc2VuZCgpIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC4iX3MgfTsKKyAg
ICAgICAgICAgIGF1dG8gY29uc29sZU1lc3NhZ2UgPSAiUE9TVCBvZiBhIEJsb2IgdG8gbm9uLUhU
VFAgcHJvdG9jb2xzIGluIFhNTEh0dHBSZXF1ZXN0LnNlbmQoKSBpcyBjdXJyZW50bHkgdW5zdXBw
b3J0ZWQuIl9zOwogICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBjb25z
b2xlTWVzc2FnZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZXF1
ZXN0KCk7CkBAIC01NjUsNyArNTY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVl
c3Q6OnNlbmQoRE9NRm9ybURhdGEmIGJvZHkpCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBS
ZXF1ZXN0OjpzZW5kKEFycmF5QnVmZmVyJiBib2R5KQogewotICAgIEFTQ0lJTGl0ZXJhbCBjb25z
b2xlTWVzc2FnZSB7ICJBcnJheUJ1ZmZlciBpcyBkZXByZWNhdGVkIGluIFhNTEh0dHBSZXF1ZXN0
LnNlbmQoKS4gVXNlIEFycmF5QnVmZmVyVmlldyBpbnN0ZWFkLiJfcyB9OworICAgIGF1dG8gY29u
c29sZU1lc3NhZ2UgPSAiQXJyYXlCdWZmZXIgaXMgZGVwcmVjYXRlZCBpbiBYTUxIdHRwUmVxdWVz
dC5zZW5kKCkuIFVzZSBBcnJheUJ1ZmZlclZpZXcgaW5zdGVhZC4iX3M7CiAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIHNlbmRCeXRl
c0RhdGEoYm9keS5kYXRhKCksIGJvZHkuYnl0ZUxlbmd0aCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IDMyMmUzYmUwZjc1ZC4uMDcyM2JlZTZjZDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTcwOSw3ICs3MDksNyBAQCBzdGF0
aWMgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgRnVuY3Rp
b25NYXBWYWx1ZT4gY3JlYXRlRgogCiAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhv
b2RIYXNoTWFwPFN0cmluZywgRnVuY3Rpb25NYXBWYWx1ZT4gbWFwOwogICAgIGZvciAoYXV0byYg
ZnVuY3Rpb24gOiBmdW5jdGlvbnMpCi0gICAgICAgIG1hcC5hZGQoZnVuY3Rpb24ubmFtZSwgZnVu
Y3Rpb24uZnVuY3Rpb24pOworICAgICAgICBtYXAuYWRkKFN0cmluZyB7IGZ1bmN0aW9uLm5hbWUg
fSwgZnVuY3Rpb24uZnVuY3Rpb24pOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhQYXJzZXIuY3BwCmluZGV4IGUzMTU2NWViZTc4ZC4uZThmOWNiOWNhM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFBhcnNlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIE1lbW9yeUNv
bXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFN0ZXA6OkF4aXM+IGNyZWF0
ZUF4aXNOYW0KICAgICB9OwogICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aE1hcDxTdHJpbmcsIFN0ZXA6OkF4aXM+IG1hcDsKICAgICBmb3IgKGF1dG8mIGF4aXNOYW1lIDog
YXhpc05hbWVMaXN0KQotICAgICAgICBtYXAuYWRkKGF4aXNOYW1lLm5hbWUsIGF4aXNOYW1lLmF4
aXMpOworICAgICAgICBtYXAuYWRkKFN0cmluZyB7IGF4aXNOYW1lLm5hbWUgfSwgYXhpc05hbWUu
YXhpcyk7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggNTE2YTJmNTAyY2M5Li41MzRk
Y2FmYTRjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIGNvbnN0IE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgUmVz
b3VyCiAKIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6c29ydGVkVGFibGVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6
YXJyYXkgc29ydGVkVGFibGVzIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8QVND
SUlMaXRlcmFsLCAxMz4gc29ydGVkVGFibGVzIHsKICAgICAgICAgIk9ic2VydmVkRG9tYWlucyJf
cywKICAgICAgICAgIlRvcExldmVsRG9tYWlucyJfcywKICAgICAgICAgIlN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWlucyJfcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKaW5kZXggMThmMTFkMzM5ZTFlLi43MTk2YzRkMDQx
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGls
aXRpZXMuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBEYXRhYmFzZVV0aWxpdGllczo6bWln
cmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKIAogICAgIC8vIE1haW50YWluIHRoZSBv
cmRlciBvZiB0YWJsZXMgdG8gbWFrZSBzdXJlIHRoZSBPYnNlcnZlZERvbWFpbnMgdGFibGUgaXMg
Y3JlYXRlZCBmaXJzdC4gT3RoZXIgdGFibGVzIGhhdmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMg
cmVmZXJlbmNpbmcgaXQuCiAgICAgZm9yIChhdXRvJiB0YWJsZSA6IHNvcnRlZFRhYmxlcygpKSB7
Ci0gICAgICAgIGF1dG8gbWlncmF0ZVRhYmxlRGF0YSA9IGluc2VydERpc3RpbmN0VmFsdWVzSW5U
YWJsZVN0YXRlbWVudChtX2RhdGFiYXNlLCB0YWJsZSk7CisgICAgICAgIGF1dG8gbWlncmF0ZVRh
YmxlRGF0YSA9IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudChtX2RhdGFiYXNl
LCBTdHJpbmcgeyB0YWJsZSB9KTsKICAgICAgICAgaWYgKCFtaWdyYXRlVGFibGVEYXRhIHx8IG1p
Z3JhdGVUYWJsZURhdGEtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgdHJh
bnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZVV0aWxpdGllczo6bWlncmF0ZURhdGFU
b05ld1RhYmxlc0lmTmVjZXNzYXJ5ICh0YWJsZSAlcykgZmFpbGVkIHRvIG1pZ3JhdGUgc2NoZW1h
LCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIHRhYmxlLmNoYXJhY3RlcnMoKSwgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAppbmRleCBjMDkwY2JlNTcx
ODQuLmFkYTkxZjhkOGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmlu
ZywgVGFibGVBbmRJbmRleFBhaXI+JiBEYXRhYmEKIAogU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+
IERhdGFiYXNlOjpzb3J0ZWRUYWJsZXMoKQogewotICAgIHN0YXRpYyBzdGQ6OmFycmF5IHNvcnRl
ZFRhYmxlcyB7CisgICAgc3RhdGljIHN0ZDo6YXJyYXk8QVNDSUlMaXRlcmFsLCAzPiBzb3J0ZWRU
YWJsZXMgewogICAgICAgICAiUENNT2JzZXJ2ZWREb21haW5zIl9zLAogICAgICAgICAiVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MsCiAgICAgICAgICJBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDJm
YjhhYzU3OGYzZC4uYjdlZDVlODQxY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBjb25zdGV4cHIg
YXV0byBvcmlnaW5GaWxlTmFtZSA9ICJvcmlnaW4iX3M7CitzdGF0aWMgY29uc3RleHByIEFTQ0lJ
TGl0ZXJhbCBvcmlnaW5GaWxlTmFtZSA9ICJvcmlnaW4iX3M7CiBlbnVtIGNsYXNzIE9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2wgeyBCZXN0RWZmb3J0LCBQZXJz
aXN0ZW50IH07CiAKIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0IHsK
QEAgLTM5MSw3ICszOTEsNyBAQCBTdHJpbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VC
dWNrZXQ6OnJlc29sdmVkSURCU3RvcmFnZVBhdGgoKQogCiBTdHJpbmcgT3JpZ2luU3RvcmFnZU1h
bmFnZXI6Om9yaWdpbkZpbGVJZGVudGlmaWVyKCkKIHsKLSAgICByZXR1cm4gb3JpZ2luRmlsZU5h
bWU7CisgICAgcmV0dXJuIFN0cmluZyB7IG9yaWdpbkZpbGVOYW1lIH07CiB9CiAKIHN0YXRpYyBS
ZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNvbnN0
IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwg
UXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcu
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAppbmRleCAw
YmUzOTVjMWMzN2MuLmU4OWMyNTA1NjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9KU0lQQ0JpbmRpbmcuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewog
Ci1zdGF0aWMgSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkU3RyaW5nQXJndW1lbnRWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IEFTQ0lJTGl0ZXJhbCB0eXBlKQorc3RhdGljIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2Rl
ZFN0cmluZ0FyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHR5cGUpCiB7CiAgICAg
YXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQppbmRleCA0N2U5ZGNhNTAwYjEuLjFmZTY4NmVhMGUyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5MjIsNyArMjkyMiw3IEBA
IHN0YXRpYyBjb25zdCBTZWxlY3Rvck5hbWVNYXAmIHNlbGVjdG9yRXhjZXB0aW9uTWFwKCkKICAg
ICB9OwogCiAgICAgZm9yIChhdXRvJiBuYW1lIDogbmFtZXMpCi0gICAgICAgIG1hcC5nZXQoKS5h
ZGQobmFtZS5zZWxlY3RvciwgbmFtZS5jb21tYW5kTmFtZSk7CisgICAgICAgIG1hcC5nZXQoKS5h
ZGQobmFtZS5zZWxlY3RvciwgU3RyaW5nIHsgbmFtZS5jb21tYW5kTmFtZSB9KTsKIAogICAgIHJl
dHVybiBtYXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAxYzdhZDQ0YzI0NmEuLmEyZTUxYjNkNmJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC04MTkyLDMxICs4MTkyLDMxIEBAIHN0YXRpYyBTcGFuPGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gZ3B1SU9LaXRDbGFzc2VzKCkKIHsKICAgICBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6YXJyYXkgc2VydmljZXMgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAg
ICJBR1hEZXZpY2VVc2VyQ2xpZW50Il9zLAotICAgICAgICAiSU9HUFUiX3MsCi0gICAgICAgICJJ
T1N1cmZhY2VSb290VXNlckNsaWVudCJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRl
cmFsPigiQUdYRGV2aWNlVXNlckNsaWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJ
TGl0ZXJhbD4oIklPR1BVIl9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigi
SU9TdXJmYWNlUm9vdFVzZXJDbGllbnQiX3MpLAogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICAgICAgIkFHUE1DbGllbnQiX3MsCi0gICAgICAg
ICJBcHBsZUdyYXBoaWNzQ29udHJvbENsaWVudCJfcywKLSAgICAgICAgIkFwcGxlR3JhcGhpY3NQ
b2xpY3lDbGllbnQiX3MsCi0gICAgICAgICJBcHBsZUludGVsTUVVc2VyQ2xpZW50Il9zLAotICAg
ICAgICAiQXBwbGVNR1BVUG93ZXJDb250cm9sQ2xpZW50Il9zLAotICAgICAgICAiQXBwbGVTTkJG
QlVzZXJDbGllbnQiX3MsCi0gICAgICAgICJBcHBsZVVwc3RyZWFtVXNlckNsaWVudCJfcywKLSAg
ICAgICAgIkF1ZGlvQVVVQyJfcywKLSAgICAgICAgIklPQWNjZWxlcmF0aW9uVXNlckNsaWVudCJf
cywKLSAgICAgICAgIklPQWNjZWxlcmF0b3IiX3MsCi0gICAgICAgICJJT0F1ZGlvQ29udHJvbFVz
ZXJDbGllbnQiX3MsCi0gICAgICAgICJJT0F1ZGlvRW5naW5lVXNlckNsaWVudCJfcywKLSAgICAg
ICAgIklPU3VyZmFjZVJvb3RVc2VyQ2xpZW50Il9zLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJ
SUxpdGVyYWw+KCJBR1BNQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRl
cmFsPigiQXBwbGVHcmFwaGljc0NvbnRyb2xDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2Fz
dDxBU0NJSUxpdGVyYWw+KCJBcHBsZUdyYXBoaWNzUG9saWN5Q2xpZW50Il9zKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQXBwbGVJbnRlbE1FVXNlckNsaWVudCJfcyksCisg
ICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIkFwcGxlTUdQVVBvd2VyQ29udHJvbENs
aWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIkFwcGxlU05CRkJV
c2VyQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQXBwbGVV
cHN0cmVhbVVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+
KCJBdWRpb0FVVUMiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJJT0Fj
Y2VsZXJhdGlvblVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVy
YWw+KCJJT0FjY2VsZXJhdG9yIl9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFs
PigiSU9BdWRpb0NvbnRyb2xVc2VyQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVND
SUlMaXRlcmFsPigiSU9BdWRpb0VuZ2luZVVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNf
Y2FzdDxBU0NJSUxpdGVyYWw+KCJJT1N1cmZhY2VSb290VXNlckNsaWVudCJfcyksCiAjZW5kaWYK
ICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgYWxzbyBuZWVkZWQgaW4gUExBVEZPUk0oTUFDQ0FU
QUxZU1QpPwogI2lmIFBMQVRGT1JNKE1BQykgJiYgQ1BVKEFSTTY0KQotICAgICAgICAiSU9Nb2Jp
bGVGcmFtZWJ1ZmZlclVzZXJDbGllbnQiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0
ZXJhbD4oIklPTW9iaWxlRnJhbWVidWZmZXJVc2VyQ2xpZW50Il9zKSwKICNlbmRpZgogI2lmIChQ
TEFURk9STShNQUMpICYmIENQVShBUk02NCkpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
ICAgICJJT1N1cmZhY2VBY2NlbGVyYXRvckNsaWVudCJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8
QVNDSUlMaXRlcmFsPigiSU9TdXJmYWNlQWNjZWxlcmF0b3JDbGllbnQiX3MpLAogI2VuZGlmCiAg
ICAgfTsKICAgICByZXR1cm4gc2VydmljZXM7CkBAIC04MjI1LDkgKzgyMjUsOSBAQCBzdGF0aWMg
U3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGdwdUlPS2l0Q2xhc3NlcygpCiBzdGF0aWMgU3Bhbjxj
b25zdCBBU0NJSUxpdGVyYWw+IGdwdU1hY2hTZXJ2aWNlcygpCiB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBzdGQ6OmFycmF5IHNlcnZpY2VzIHsKLSAgICAgICAgImNvbS5hcHBsZS5NVExDb21waWxl
clNlcnZpY2UiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oImNvbS5hcHBs
ZS5NVExDb21waWxlclNlcnZpY2UiX3MpLAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCi0gICAgICAgICJjb20uYXBwbGUuY3Ztc1NlcnYiX3MsCisgICAgICAgIHN0
YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oImNvbS5hcHBsZS5jdm1zU2VydiJfcyksCiAjZW5kaWYK
ICAgICB9OwogICAgIHJldHVybiBzZXJ2aWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggZWUxNjQ1ZWY0ZTBjLi4zZTlh
OGQ1MjBmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwCkBAIC02MSwxMSArNjEsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IG5hbWVzcGFjZSBJUENUZXN0aW5nQVBJIHsKIAotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2Nl
c3NUYXJnZXROYW1lVUkgPSAiVUkiX3M7CitzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBw
cm9jZXNzVGFyZ2V0TmFtZVVJID0gIlVJIl9zOwogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLXN0
YXRpYyBjb25zdGV4cHIgYXV0byBwcm9jZXNzVGFyZ2V0TmFtZUdQVSA9ICJHUFUiX3M7CitzdGF0
aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBwcm9jZXNzVGFyZ2V0TmFtZUdQVSA9ICJHUFUiX3M7
CiAjZW5kaWYKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9jZXNzVGFyZ2V0TmFtZU5ldHdvcmtp
bmcgPSAiTmV0d29ya2luZyJfczsKK3N0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHByb2Nl
c3NUYXJnZXROYW1lTmV0d29ya2luZyA9ICJOZXR3b3JraW5nIl9zOwogCiBzdGF0aWMgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZGVzdGluYXRpb25JREZyb21Bcmd1bWVudChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZVJlZiwgSlNWYWx1ZVJlZiopOwogc3RhdGljIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IG1lc3NhZ2VJREZyb21Bcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZVJlZiwgSlNWYWx1ZVJlZiopOwpAQCAtMjA2NSwxMyArMjA2NSwxMyBAQCBKU1ZhbHVlUmVm
IEpTSVBDOjpwcm9jZXNzVGFyZ2V0cyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgSgogICAgIEpTQzo6SlNPYmplY3QqIHByb2Nlc3NUYXJnZXRzT2JqZWN0ID0g
SlNDOjpjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwog
ICAgIGludCBpbmRleCA9IDA7Ci0gICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgcHJvY2Vzc1Rhcmdl
dE5hbWVVSSkpOworICAgIHByb2Nlc3NUYXJnZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNTdHJpbmcodm0sIFN0cmluZyB7IHByb2Nlc3NUYXJn
ZXROYW1lVUkgfSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpKTsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgcHJvY2Vz
c1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlND
Ojpqc1N0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVHUFUpKTsKKyAgICBwcm9jZXNzVGFyZ2V0
c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBKU0M6OmpzU3Ry
aW5nKHZtLCBTdHJpbmcgeyBwcm9jZXNzVGFyZ2V0TmFtZUdQVSB9KSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwogI2VuZGlm
Ci0gICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwg
aW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVOZXR3b3JraW5nKSk7
CisgICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwg
aW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nIHsgcHJvY2Vzc1RhcmdldE5hbWVOZXR3
b3JraW5nIH0pKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KSk7CiAgICAgcmV0dXJuIHRvUmVmKHZtLCBwcm9jZXNzVGFyZ2V0c09i
amVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCmluZGV4IDFhNzg5Zjk5ZDg5Zi4uMzkzMGYwYzk0ZTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
MjMwLDcgKzIzMCw3IEBAIHN0YXRpYyBTdHJpbmcgY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUo
Y29uc3QgU3RyaW5nJiBzZWxlY3Rvck5hbWUpCiAgICAgfTsKICAgICBzdGF0aWMgY29uc3RleHBy
IFNvcnRlZEFycmF5TWFwIG1hcCB7IHNlbGVjdG9yRXhjZXB0aW9ucyB9OwogICAgIGlmIChhdXRv
IGNvbW1hbmROYW1lID0gbWFwLnRyeUdldChzZWxlY3Rvck5hbWUpKQotICAgICAgICByZXR1cm4g
KmNvbW1hbmROYW1lOworICAgICAgICByZXR1cm4gU3RyaW5nIHsgKmNvbW1hbmROYW1lIH07CiAK
ICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGNvbG9uLgogICAgIC8vIE5vIG5lZWQgdG8gY2Fw
aXRhbGl6ZSB0aGUgY29tbWFuZCBuYW1lIHNpbmNlIEVkaXRvciBjb21tYW5kIG5hbWVzIGFyZSBu
b3QgY2FzZSBzZW5zaXRpdmUuCg==
</data>
<flag name="commit-queue"
          id="483462"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455462</attachid>
            <date>2022-03-22 17:52:47 -0700</date>
            <delta_ts>2022-03-22 18:43:17 -0700</delta_ts>
            <desc>Geoff&apos;s alternative proposal</desc>
            <filename>238162_s_suffix_no_strlen_geoff_proposal_wip2.patch</filename>
            <type>text/plain</type>
            <size>149929</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZWYwZmY2MmE3OGEzLi42Nzkx
ZmFlYzI0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDAsOSAr
MTAwLDkgQEAgc3RhdGljIFQgcGFyc2VCcmVha3BvaW50T3B0aW9ucyhQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNPTjoKICAgICBzaXplX3QgaWdub3JlQ291bnQg
PSAwOwogCiAgICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgY29uZGl0aW9uID0gb3B0aW9ucy0+
Z2V0U3RyaW5nKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmNvbmRpdGlv
bktleSk7CisgICAgICAgIGNvbmRpdGlvbiA9IG9wdGlvbnMtPmdldFN0cmluZyhTdHJpbmcgeyBQ
cm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjpjb25kaXRpb25LZXkgfSk7CiAK
LSAgICAgICAgYXV0byBhY3Rpb25zUGF5bG9hZCA9IG9wdGlvbnMtPmdldEFycmF5KFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmFjdGlvbnNLZXkpOworICAgICAgICBhdXRv
IGFjdGlvbnNQYXlsb2FkID0gb3B0aW9ucy0+Z2V0QXJyYXkoU3RyaW5nIHsgUHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6YWN0aW9uc0tleSB9KTsKICAgICAgICAgaWYgKGF1
dG8gY291bnQgPSBhY3Rpb25zUGF5bG9hZCA/IGFjdGlvbnNQYXlsb2FkLT5sZW5ndGgoKSA6IDAp
IHsKICAgICAgICAgICAgIGFjdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CiAK
QEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgVCBwYXJzZUJyZWFrcG9pbnRPcHRpb25zKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGF1dG8gYWN0aW9uVHlwZVN0cmluZyA9IGFjdGlvbk9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6dHlwZUtleSk7CisgICAgICAgICAgICAgICAg
YXV0byBhY3Rpb25UeXBlU3RyaW5nID0gYWN0aW9uT2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsg
UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjp0eXBlS2V5IH0pOwogICAgICAg
ICAgICAgICAgIGlmICghYWN0aW9uVHlwZVN0cmluZykgewogICAgICAgICAgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHR5cGUgZm9yIGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEyNSwyMCArMTI1LDIwIEBAIHN0
YXRpYyBUIHBhcnNlQnJlYWtwb2ludE9wdGlvbnMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgUmVmUHRyPEpTT046CiAKICAgICAgICAgICAgICAgICBKU0M6OkJyZWFrcG9pbnQ6
OkFjdGlvbiBhY3Rpb24oKmFjdGlvblR5cGUpOwogCi0gICAgICAgICAgICAgICAgYWN0aW9uLmRh
dGEgPSBhY3Rpb25PYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9p
bnRBY3Rpb246OmRhdGFLZXkpOworICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gYWN0aW9u
T2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
QWN0aW9uOjpkYXRhS2V5IH0pOwogCiAgICAgICAgICAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBp
ZGVudGlmaWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBz
YW1wbGVzCiAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0aXBs
ZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgotICAg
ICAgICAgICAgICAgIGFjdGlvbi5pZCA9IGFjdGlvbk9iamVjdC0+Z2V0SW50ZWdlcihQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OmlkS2V5KS52YWx1ZV9vcihKU0M6Om5vQnJl
YWtwb2ludEFjdGlvbklEKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uaWQgPSBhY3Rpb25PYmpl
Y3QtPmdldEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0
aW9uOjppZEtleSB9KS52YWx1ZV9vcihKU0M6Om5vQnJlYWtwb2ludEFjdGlvbklEKTsKIAotICAg
ICAgICAgICAgICAgIGFjdGlvbi5lbXVsYXRlVXNlckdlc3R1cmUgPSBhY3Rpb25PYmplY3QtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjplbXVsYXRlVXNl
ckdlc3R1cmVLZXkpLnZhbHVlX29yKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uZW11
bGF0ZVVzZXJHZXN0dXJlID0gYWN0aW9uT2JqZWN0LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6ZW11bGF0ZVVzZXJHZXN0dXJlS2V5IH0p
LnZhbHVlX29yKGZhbHNlKTsKIAogICAgICAgICAgICAgICAgIGFjdGlvbnMudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFByb3RvY29sOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSkudmFsdWVfb3IoZmFsc2UpOwotICAg
ICAgICBpZ25vcmVDb3VudCA9IG9wdGlvbnMtPmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50T3B0aW9uczo6aWdub3JlQ291bnRLZXkpLnZhbHVlX29yKDApOworICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSB9KS52YWx1ZV9vcihm
YWxzZSk7CisgICAgICAgIGlnbm9yZUNvdW50ID0gb3B0aW9ucy0+Z2V0SW50ZWdlcihTdHJpbmcg
eyBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjppZ25vcmVDb3VudEtleSB9
KS52YWx1ZV9vcigwKTsKICAgICB9CiAKICAgICByZXR1cm4gY2FsbGJhY2soY29uZGl0aW9uLCBX
VEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKQEAgLTUxOCw3ICs1
MTgsNyBAQCBzdGF0aWMgUmVmPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGJ1aWxkRGVi
dWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcAogCiBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0
aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVj
dCYgbG9jYXRpb24sIEpTQzo6U291cmNlSUQmIHNvdXJjZUlELCB1bnNpZ25lZCYgbGluZU51bWJl
ciwgdW5zaWduZWQmIGNvbHVtbk51bWJlcikKIHsKLSAgICBhdXRvIGxpbmVOdW1iZXJWYWx1ZSA9
IGxvY2F0aW9uLmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6bGluZU51
bWJlcktleSk7CisgICAgYXV0byBsaW5lTnVtYmVyVmFsdWUgPSBsb2NhdGlvbi5nZXRJbnRlZ2Vy
KFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmxpbmVOdW1iZXJLZXkgfSk7
CiAgICAgaWYgKCFsaW5lTnVtYmVyVmFsdWUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5l
eHBlY3RlZCBub24taW50ZWdlciBsaW5lTnVtYmVyIGluIGdpdmVuIGxvY2F0aW9uIl9zOwogICAg
ICAgICBzb3VyY2VJRCA9IEpTQzo6bm9Tb3VyY2VJRDsKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0
aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IEpTT046Ok9iamVjdAogCiAgICAgbGluZU51bWJlciA9ICpsaW5lTnVtYmVyVmFsdWU7
CiAKLSAgICBhdXRvIHNjcmlwdElEU3RyID0gbG9jYXRpb24uZ2V0U3RyaW5nKFByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb246OnNjcmlwdElkS2V5KTsKKyAgICBhdXRvIHNjcmlwdElEU3RyID0g
bG9jYXRpb24uZ2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246
OnNjcmlwdElkS2V5IH0pOwogICAgIGlmICghc2NyaXB0SURTdHIpIHsKICAgICAgICAgc291cmNl
SUQgPSBKU0M6Om5vU291cmNlSUQ7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhlcGN0ZWQg
bm9uLXN0cmluZyBzY3JpcHRJZCBpbiBnaXZlbiBsb2NhdGlvbiJfczsKQEAgLTUzNSw3ICs1MzUs
NyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdAogICAgIH0KIAogICAgIHNvdXJjZUlEID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SURTdHIp
LnZhbHVlX29yKDApOwotICAgIGNvbHVtbk51bWJlciA9IGxvY2F0aW9uLmdldEludGVnZXIoUHJv
dG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y29sdW1uTnVtYmVyS2V5KS52YWx1ZV9vcigwKTsK
KyAgICBjb2x1bW5OdW1iZXIgPSBsb2NhdGlvbi5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29s
OjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNvbHVtbk51bWJlcktleSB9KS52YWx1ZV9vcigwKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
NmU5NzY2MjExODYzLi5kMWM5YWEyNjc1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6b3B0
aW9uYWw8aW50PiAvKiBzYXZlUmVzdWx0SW5kZXggKi8+IEluc3BlY3RvclJ1bnRpCiAKICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdDsKIAotICAgIGF1dG8gb2JqZWN0SWQgPSBjYWxs
QXJndW1lbnQtPmdldFN0cmluZyhQcm90b2NvbDo6UnVudGltZTo6Q2FsbEFyZ3VtZW50OjpvYmpl
Y3RJZEtleSk7CisgICAgYXV0byBvYmplY3RJZCA9IGNhbGxBcmd1bWVudC0+Z2V0U3RyaW5nKFN0
cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpDYWxsQXJndW1lbnQ6Om9iamVjdElkS2V5IH0pOwog
ICAgIGlmICghb2JqZWN0SWQpIHsKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNj
cmlwdEZvckV2YWwoZXJyb3JTdHJpbmcsIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSk7CiAg
ICAgICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCkBAIC00MDgsOSArNDA4LDkg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1
bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+PgogICAgICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmV4cGVjdGVkIG5vbi1vYmplY3QgaXRlbSBp
biBsb2NhdGlvbnMiX3MpOwogCi0gICAgICAgIGF1dG8gZGVzY3JpcHRvciA9IGxvY2F0aW9uLT5n
ZXRJbnRlZ2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OnR5cGVJbmZvcm1hdGlv
bkRlc2NyaXB0b3JLZXkpLnZhbHVlX29yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3Jt
YWwpOwotICAgICAgICBhdXRvIHNvdXJjZUlEU3RyaW5nID0gbG9jYXRpb24tPmdldFN0cmluZyhQ
cm90b2NvbDo6UnVudGltZTo6VHlwZUxvY2F0aW9uOjpzb3VyY2VJREtleSk7Ci0gICAgICAgIGF1
dG8gZGl2b3QgPSBsb2NhdGlvbi0+Z2V0SW50ZWdlcihQcm90b2NvbDo6UnVudGltZTo6VHlwZUxv
Y2F0aW9uOjpkaXZvdEtleSkudmFsdWVfb3IoMCk7CisgICAgICAgIGF1dG8gZGVzY3JpcHRvciA9
IGxvY2F0aW9uLT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0b3JLZXkgfSkudmFsdWVfb3IoVHlwZVByb2Zp
bGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCk7CisgICAgICAgIGF1dG8gc291cmNlSURTdHJpbmcg
PSBsb2NhdGlvbi0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnNvdXJjZUlES2V5IH0pOworICAgICAgICBhdXRvIGRpdm90ID0gbG9jYXRpb24tPmdl
dEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVMb2NhdGlvbjo6ZGl2b3RL
ZXkgfSkudmFsdWVfb3IoMCk7CiAKICAgICAgICAgYXV0byB0eXBlTG9jYXRpb24gPSBtX3ZtLnR5
cGVQcm9maWxlcigpLT5maW5kTG9jYXRpb24oZGl2b3QsIHBhcnNlSW50ZWdlcjx1aW50cHRyX3Q+
KHNvdXJjZUlEU3RyaW5nKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yPihkZXNjcmlwdG9yKSwgbV92bSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weQppbmRleCBkZWYyMWFjYWNmODguLjlkYTE0ZWM0NzM5YyAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weQpAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5
cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMu
YXBwZW5kKCd9OycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCdTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsnKQotICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICByZXR1cm4gZW51bV9jb25zdGFudF92YWx1ZXNbY29kZV07JykKKyAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIFN0cmluZyB7IGVudW1fY29uc3RhbnRfdmFs
dWVzW2NvZGVdIH07JykKICAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgcmV0dXJu
IFsnXG4nLmpvaW4obGluZXMpXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCBkYTYwMGVhMDBmMGMuLjFkZTg4YjE3YmRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ1
LDcgKzEwNDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQog
ICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7
CisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFN0cmlu
ZyB7IFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvciB9KSk7CiAgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihjb3VsZERlbGV0ZSkpOwogfQogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKIAogICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5p
c1N0cmljdCgpKQotICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKKyAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgVW5hYmxlVG9EZWxldGVQcm9w
ZXJ0eUVycm9yIH0pKTsKICAgICAKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGU5YmRiN2M4NWRhYS4uMGVkMTM2
YTc1NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDksNyArNDksNyBAQCBBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yOjpBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cgogCiB2b2lkIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6
OkFnZ3JlZ2F0ZUVycm9yKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgU3RyaW5nIHsgZXJy
b3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9LCBQcm9wZXJ0eUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIEFTU0VSVChpbmhlcml0cyh2
bSwgaW5mbygpKSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcAppbmRleCAxMTljZDVhMzliMTEuLjY5ZjZlMzg5
MTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRl
RXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBBZ2dyZWdhdGVFcnJv
clByb3RvdHlwZTo6QWdncmVnYXRlRXJyb3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIAogdm9pZCBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBlcnJvclR5cGVOYW1lKEVy
cm9yVHlwZTo6QWdncmVnYXRlRXJyb3IpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
U3RyaW5nIHsgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9KTsKICAg
ICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKaW5kZXggNDVh
MDAxM2FmMWM3Li43NWYyYWUwYjA3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyU2hhcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAg
ZW51bSBjbGFzcyBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIDogdWludDhfdCB7CiAgICAgU2hhcmVk
CiB9OwogCi1pbmxpbmUgQVNDSUlMaXRlcmFsIGFycmF5QnVmZmVyU2hhcmluZ01vZGVOYW1lKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUpCitpbmxpbmUgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBhcnJheUJ1ZmZlclNoYXJpbmdNb2RlTmFtZShBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
IHNoYXJpbmdNb2RlKQogewogICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKICAgICBjYXNlIEFy
cmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQ6CkBAIC00NCw3ICs0NCw3IEBAIGlubGluZSBB
U0NJSUxpdGVyYWwgYXJyYXlCdWZmZXJTaGFyaW5nTW9kZU5hbWUoQXJyYXlCdWZmZXJTaGFyaW5n
TW9kZSBzaGFyaW5nTW9kCiAgICAgICAgIHJldHVybiAiU2hhcmVkQXJyYXlCdWZmZXIiX3M7CiAg
ICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxs
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDE4MTVlMTQ3Yjk2NS4uZmUyZDJhODA2
M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCB1bnNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlzT2JqLCB1aW50NjRfdCBoZWFkZXIsIHUKICAgICBp
ZiAoaXNKU0FycmF5KHRoaXNPYmopKSB7CiAgICAgICAgIC8vIFNwZWMgc2F5cyBpZiB3ZSB3b3Vs
ZCBwcm9kdWNlIGFuIGFycmF5IG9mIHRoaXMgc2l6ZSwgd2UgbXVzdCB0aHJvdyBhIHJhbmdlIGVy
cm9yLgogICAgICAgICBpZiAoY291bnQgKyBsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCkpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKTsKKyAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBM
ZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExNDgsNyArMTE0OCw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NsaWNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsCiAgICAgICAgIHJlc3VsdCA9IHNwZWNpZXNSZXN1bHQuc2Vjb25kOwogICAgIGVs
c2UgewogICAgICAgICBpZiAoVU5MSUtFTFkoZW5kIC0gYmVnaW4gPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJv
cik7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgU3Ry
aW5nIHsgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KTsKICAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgICAgIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZW5kIC0gYmVnaW4pKTsKQEAgLTEyNDAsNyArMTI0MCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NwbGljZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhCiAgICAgICAgICAgICByZXN1bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29u
ZDsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYWN0dWFsRGVsZXRl
Q291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIExlbmd0aEV4Y2Vl
ZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1h
eGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gSlNBcnJheTo6
dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYWN0dWFsRGVsZXRlQ291bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDFlZWVlMmNiOWU0Ni4uMGIxZmEzZjgxNjA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2NoZWNrX3RkeikKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
dGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCiB7CiAgICAg
QkVHSU4oKTsKLSAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIFN0cmluZyB7IFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yIH0pKTsKIH0KIAogSlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9ub3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggZjYzOGI2NmRlYWUwLi5lMmFhOGRmMmMyOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTI3MiwxNiArMjcyLDIx
IEBAIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGhyb3dTY29wZSYgc2NvcGUpCiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QpKTsKIH0KIAotRXhjZXB0
aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dU
eXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgU3RyaW5nKGVycm9yTWVzc2FnZSkpOworICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBtZXNzYWdlKSk7CiB9CiAKLUV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbWVzc2FnZSkK
IHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWVzc2FnZSkpOwogfQogCitFeGNlcHRpb24qIHRocm93
VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3Bl
LCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsg
bWVzc2FnZSB9KSk7Cit9CisKIEV4Y2VwdGlvbiogdGhyb3dTeW50YXhFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFs
T2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAppbmRleCA1NGIxNDk0
NThmZjIuLmE3ZDgxNDNjN2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
CkBAIC03OCw4ICs3OCw5IEBAIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oVk0mLCBKU09iamVjdCog
ZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CiAvLyBDb252ZW5pZW5jZSB3cmFw
cGVycywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdl
LgogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVD
YWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IHRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwotSlNfRVhQT1JU
X1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93
U2NvcGUmLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKTsKIEpTX0VYUE9SVF9QUklWQVRFIEV4
Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0
aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRo
cm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIEFTQ0lJTGl0ZXJhbCBl
cnJvck1lc3NhZ2UpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1N5bnRheEVy
cm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhj
ZXB0aW9uKiB0aHJvd1N5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIGlubGluZSBFeGNlcHRpb24qIHRocm93UmFuZ2VF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBlcnJvck1lc3NhZ2Up
KTsgfQpAQCAtOTUsOCArOTYsOSBAQCBpbmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEV4Y2VwdAogaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
aHJvd1Njb3BlJiBzY29wZSwgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yKSk7IH0KIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVy
cm9yKGdsb2JhbE9iamVjdCwgZXJyb3JNZXNzYWdlKSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgdGhyb3dWTVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JN
ZXNzYWdlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBTdHJpbmcgeyBlcnJvck1lc3NhZ2UgfSk7IH0KK2lubGluZSBFbmNvZGVk
SlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRo
cm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN0cmluZyB7IGVycm9yTWVzc2FnZSB9
KTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRo
cm93Vk1ET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01B
dHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBw
cm9wZXJ0eU5hbWUpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1ET01BdHRyaWJ1
dGVTZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29w
ZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01BdHRyaWJ1dGVTZXR0ZXJU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKaW5kZXggYTE3NjQ3YWM5YWEyLi4zZTJhM2Q5MzRmODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIEpTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xv
dyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHN3aXRjaCAocGFyc2VNb2RlKCkp
IHsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9k
ZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6
Ci0gICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0aW9uKiAiOworICAgICAgICBmdW5jdGlv
bkhlYWRlciA9ICJmdW5jdGlvbiogIl9zOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CkBAIC0xNTksMjYgKzE1OSwyNiBAQCBK
U1N0cmluZyogRnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JC
b2R5TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZToK
LSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiZnVuY3Rpb24gIjsKKyAgICAgICAgZnVuY3Rpb25I
ZWFkZXIgPSAiZnVuY3Rpb24gIl9zOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiIjsK
KyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSBlbXB0eVN0cmluZygpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRl
ciA9ICJhc3luYyBmdW5jdGlvbiAiOworICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBm
dW5jdGlvbiAiX3M7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6Ci0gICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5j
ICI7CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jICJfczsKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyRnVuY3Rp
b25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJN
ZXRob2RNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBmdW5jdGlvbiogIjsK
KyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5bmMgZnVuY3Rpb24qICJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmgKaW5kZXggMWM5ZmU1NTY1MDFmLi41YTllNTMzYmRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgogICAgIHN0YXRpYyBJZGVudGlm
aWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0Nv
dW50XSk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIEFTQ0lJTGl0ZXJh
bCk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGgpOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBM
Q2hhciosIGludCBsZW5ndGgpOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0m
LCBjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21T
dHJpbmcoVk0mLCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCmluZGV4IGE1NzJmNTdhNWM5Yy4uNTdkMDFkYTFi
M2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKQEAgLTkxLDYgKzkxLDExIEBAIGlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoVk0mIHZtLCBBU0NJSUxpdGVyYWwgcykKICAgICByZXR1cm4gSWRlbnRpZmll
cih2bSwgU3RyaW5nKHMpKTsKIH0KIAoraW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhWTSYgdm0sIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggcykKK3sKKyAgICByZXR1cm4g
SWRlbnRpZmllcih2bSwgU3RyaW5nKHMpKTsKK30KKwogaW5saW5lIElkZW50aWZpZXIgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhWTSYgdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKQogewog
ICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBzLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXggYjZiYjc1MTU4MGQ3Li41OWNm
NTM3MTE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxh
dG9yLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIEpTVmFsdWUgSW50bENvbGxhdG9yOjpjb21wYXJl
U3RyaW5ncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHgsCiAgICAg
cmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0b3I6
OnVzYWdlU3RyaW5nKFVzYWdlIHVzYWdlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsQ29s
bGF0b3I6OnVzYWdlU3RyaW5nKFVzYWdlIHVzYWdlKQogewogICAgIHN3aXRjaCAodXNhZ2UpIHsK
ICAgICBjYXNlIFVzYWdlOjpTb3J0OgpAQCAtMzMwLDEwICszMzAsMTAgQEAgQVNDSUlMaXRlcmFs
IEludGxDb2xsYXRvcjo6dXNhZ2VTdHJpbmcoVXNhZ2UgdXNhZ2UpCiAgICAgICAgIHJldHVybiAi
c2VhcmNoIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6
Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxDb2xsYXRvcjo6c2Vuc2l0aXZpdHlTdHJp
bmcoU2Vuc2l0aXZpdHkgc2Vuc2l0aXZpdHkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxD
b2xsYXRvcjo6c2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkgc2Vuc2l0aXZpdHkpCiB7CiAg
ICAgc3dpdGNoIChzZW5zaXRpdml0eSkgewogICAgIGNhc2UgU2Vuc2l0aXZpdHk6OkJhc2U6CkBA
IC0zNDYsMTAgKzM0NiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bENvbGxhdG9yOjpzZW5zaXRpdml0
eVN0cmluZyhTZW5zaXRpdml0eSBzZW5zaXRpdml0eSkKICAgICAgICAgcmV0dXJuICJ2YXJpYW50
Il9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwo
KTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxDb2xsYXRvcjo6Y2FzZUZpcnN0U3RyaW5nKENhc2VG
aXJzdCBjYXNlRmlyc3QpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxDb2xsYXRvcjo6Y2Fz
ZUZpcnN0U3RyaW5nKENhc2VGaXJzdCBjYXNlRmlyc3QpCiB7CiAgICAgc3dpdGNoIChjYXNlRmly
c3QpIHsKICAgICBjYXNlIENhc2VGaXJzdDo6RmFsc2U6CkBAIC0zNjAsNyArMzYwLDcgQEAgQVND
SUlMaXRlcmFsIEludGxDb2xsYXRvcjo6Y2FzZUZpcnN0U3RyaW5nKENhc2VGaXJzdCBjYXNlRmly
c3QpCiAgICAgICAgIHJldHVybiAidXBwZXIiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLWludGwuY29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCA4MGFhN2MzNmJh
NmMuLmE3ZTBjYjE1OTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yLmgKQEAgLTk0LDkgKzk0LDkgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIFVDb2xs
YXRvckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVjb2xfY2xvc2U+OwogCi0gICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCB1c2FnZVN0cmluZyhVc2FnZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzZW5z
aXRpdml0eVN0cmluZyhTZW5zaXRpdml0eSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjYXNl
Rmlyc3RTdHJpbmcoQ2FzZUZpcnN0KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0
aCB1c2FnZVN0cmluZyhVc2FnZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgg
c2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGNhc2VGaXJzdFN0cmluZyhDYXNlRmlyc3QpOwogCiAgICAgV3JpdGVCYXJyaWVy
PEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZENvbXBhcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVD
b2xsYXRvciwgVUNvbGxhdG9yRGVsZXRlcj4gbV9jb2xsYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGMyZDQ5
ZGE5OGE2Ni4uZTYxZmU4ZWI3MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZv
aWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICB1Y2FsX3NldEdyZWdvcmlhbkNoYW5nZShjYWwsIG1p
bkVDTUFTY3JpcHRUaW1lLCAmc3RhdHVzKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGlt
ZUZvcm1hdDo6aG91ckN5Y2xlU3RyaW5nKEhvdXJDeWNsZSBob3VyQ3ljbGUpCitBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6aG91ckN5Y2xlU3RyaW5nKEhvdXJDeWNs
ZSBob3VyQ3ljbGUpCiB7CiAgICAgc3dpdGNoIChob3VyQ3ljbGUpIHsKICAgICBjYXNlIEhvdXJD
eWNsZTo6SDExOgpAQCAtMTAxOSwxMyArMTAxOSwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0Ojpob3VyQ3ljbGVTdHJpbmcoSG91ckN5Y2xlIGhvdXJDeWNsZSkKICAgICAgICAg
cmV0dXJuICJoMjQiX3M7CiAgICAgY2FzZSBIb3VyQ3ljbGU6Ok5vbmU6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsK
KyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxp
dGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojp3ZWVrZGF5U3RyaW5nKFdlZWtkYXkgd2Vla2RheSkK
K0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojp3ZWVrZGF5U3RyaW5n
KFdlZWtkYXkgd2Vla2RheSkKIHsKICAgICBzd2l0Y2ggKHdlZWtkYXkpIHsKICAgICBjYXNlIFdl
ZWtkYXk6Ok5hcnJvdzoKQEAgLTEwMzYsMTMgKzEwMzYsMTMgQEAgQVNDSUlMaXRlcmFsIEludGxE
YXRlVGltZUZvcm1hdDo6d2Vla2RheVN0cmluZyhXZWVrZGF5IHdlZWtkYXkpCiAgICAgICAgIHJl
dHVybiAibG9uZyJfczsKICAgICBjYXNlIFdlZWtkYXk6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVy
YWwgSW50bERhdGVUaW1lRm9ybWF0OjplcmFTdHJpbmcoRXJhIGVyYSkKK0FTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0OjplcmFTdHJpbmcoRXJhIGVyYSkKIHsKICAgICBz
d2l0Y2ggKGVyYSkgewogICAgIGNhc2UgRXJhOjpOYXJyb3c6CkBAIC0xMDUzLDEzICsxMDUzLDEz
IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmVyYVN0cmluZyhFcmEgZXJhKQog
ICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2FzZSBFcmE6Ok5vbmU6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwo
KTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJ
SUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojp5ZWFyU3RyaW5nKFllYXIgeWVhcikKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojp5ZWFyU3RyaW5nKFllYXIgeWVh
cikKIHsKICAgICBzd2l0Y2ggKHllYXIpIHsKICAgICBjYXNlIFllYXI6OlR3b0RpZ2l0OgpAQCAt
MTA2OCwxMyArMTA2OCwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojp5ZWFy
U3RyaW5nKFllYXIgeWVhcikKICAgICAgICAgcmV0dXJuICJudW1lcmljIl9zOwogICAgIGNhc2Ug
WWVhcjo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1vbnRo
U3RyaW5nKE1vbnRoIG1vbnRoKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVG
b3JtYXQ6Om1vbnRoU3RyaW5nKE1vbnRoIG1vbnRoKQogewogICAgIHN3aXRjaCAobW9udGgpIHsK
ICAgICBjYXNlIE1vbnRoOjpUd29EaWdpdDoKQEAgLTEwODksMTMgKzEwODksMTMgQEAgQVNDSUlM
aXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6bW9udGhTdHJpbmcoTW9udGggbW9udGgpCiAgICAg
ICAgIHJldHVybiAibG9uZyJfczsKICAgICBjYXNlIE1vbnRoOjpOb25lOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlM
aXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6ZGF5U3RyaW5nKERheSBkYXkpCitBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6ZGF5U3RyaW5nKERheSBkYXkpCiB7CiAg
ICAgc3dpdGNoIChkYXkpIHsKICAgICBjYXNlIERheTo6VHdvRGlnaXQ6CkBAIC0xMTA0LDEzICsx
MTA0LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRheVN0cmluZyhEYXkg
ZGF5KQogICAgICAgICByZXR1cm4gIm51bWVyaWMiX3M7CiAgICAgY2FzZSBEYXk6Ok5vbmU6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwog
fQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0OjpkYXlQZXJpb2RTdHJpbmcoRGF5
UGVyaW9kIGRheVBlcmlvZCkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9y
bWF0OjpkYXlQZXJpb2RTdHJpbmcoRGF5UGVyaW9kIGRheVBlcmlvZCkKIHsKICAgICBzd2l0Y2gg
KGRheVBlcmlvZCkgewogICAgIGNhc2UgRGF5UGVyaW9kOjpOYXJyb3c6CkBAIC0xMTIxLDEzICsx
MTIxLDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRheVBlcmlvZFN0cmlu
ZyhEYXlQZXJpb2QgZGF5UGVyaW9kKQogICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2Fz
ZSBEYXlQZXJpb2Q6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFs
V2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0
Ojpob3VyU3RyaW5nKEhvdXIgaG91cikKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVU
aW1lRm9ybWF0Ojpob3VyU3RyaW5nKEhvdXIgaG91cikKIHsKICAgICBzd2l0Y2ggKGhvdXIpIHsK
ICAgICBjYXNlIEhvdXI6OlR3b0RpZ2l0OgpAQCAtMTEzNiwxMyArMTEzNiwxMyBAQCBBU0NJSUxp
dGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojpob3VyU3RyaW5nKEhvdXIgaG91cikKICAgICAgICAg
cmV0dXJuICJudW1lcmljIl9zOwogICAgIGNhc2UgSG91cjo6Tm9uZToKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0
ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1pbnV0ZVN0cmluZyhNaW51dGUgbWludXRlKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1pbnV0ZVN0cmluZyhNaW51
dGUgbWludXRlKQogewogICAgIHN3aXRjaCAobWludXRlKSB7CiAgICAgY2FzZSBNaW51dGU6OlR3
b0RpZ2l0OgpAQCAtMTE1MSwxMyArMTE1MSwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1l
Rm9ybWF0OjptaW51dGVTdHJpbmcoTWludXRlIG1pbnV0ZSkKICAgICAgICAgcmV0dXJuICJudW1l
cmljIl9zOwogICAgIGNhc2UgTWludXRlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxE
YXRlVGltZUZvcm1hdDo6c2Vjb25kU3RyaW5nKFNlY29uZCBzZWNvbmQpCitBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6c2Vjb25kU3RyaW5nKFNlY29uZCBzZWNvbmQp
CiB7CiAgICAgc3dpdGNoIChzZWNvbmQpIHsKICAgICBjYXNlIFNlY29uZDo6VHdvRGlnaXQ6CkBA
IC0xMTY2LDEzICsxMTY2LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNl
Y29uZFN0cmluZyhTZWNvbmQgc2Vjb25kKQogICAgICAgICByZXR1cm4gIm51bWVyaWMiX3M7CiAg
ICAgY2FzZSBTZWNvbmQ6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRl
cmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9y
bWF0Ojp0aW1lWm9uZU5hbWVTdHJpbmcoVGltZVpvbmVOYW1lIHRpbWVab25lTmFtZSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojp0aW1lWm9uZU5hbWVTdHJpbmco
VGltZVpvbmVOYW1lIHRpbWVab25lTmFtZSkKIHsKICAgICBzd2l0Y2ggKHRpbWVab25lTmFtZSkg
ewogICAgIGNhc2UgVGltZVpvbmVOYW1lOjpTaG9ydDoKQEAgLTExODksMTMgKzExODksMTMgQEAg
QVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6dGltZVpvbmVOYW1lU3RyaW5nKFRpbWVa
b25lTmFtZSB0aW1lWm9uZU5hbWUpCiAgICAgICAgIHJldHVybiAibG9uZ0dlbmVyaWMiX3M7CiAg
ICAgY2FzZSBUaW1lWm9uZU5hbWU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0Ojpmb3JtYXRTdHlsZVN0cmluZyhEYXRlVGltZVN0eWxlIHN0eWxlKQorQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFN0eWxlU3RyaW5nKERh
dGVUaW1lU3R5bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgRGF0
ZVRpbWVTdHlsZTo6RnVsbDoKQEAgLTEyMDgsMTAgKzEyMDgsMTAgQEAgQVNDSUlMaXRlcmFsIElu
dGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0U3R5bGVTdHJpbmcoRGF0ZVRpbWVTdHlsZSBzdHlsZSkK
ICAgICAgICAgcmV0dXJuICJzaG9ydCJfczsKICAgICBjYXNlIERhdGVUaW1lU3R5bGU6Ok5vbmU6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxs
KCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgp
OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwuZGF0ZXRpbWVmb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwpAQCAtMTI5Myw3ICsxMjkzLDcgQEAgSlNWYWx1
ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsdWUpIGMKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQp
KTsKIH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVRGF0ZUZvcm1hdEZp
ZWxkIGZpZWxkKQorc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggcGFydFR5cGVTdHJpbmco
VURhdGVGb3JtYXRGaWVsZCBmaWVsZCkKIHsKICAgICBzd2l0Y2ggKGZpZWxkKSB7CiAgICAgY2Fz
ZSBVREFUX0VSQV9GSUVMRDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggOGJmNjc3ZjRhODc5Li4yMTFmZjVjMDgyNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCkBAIC0xMDksMTggKzEwOSwxOCBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRGF0ZVRp
bWVTdHlsZSA6IHVpbnQ4X3QgeyBOb25lLCBGdWxsLCBMb25nLCBNZWRpdW0sIFNob3J0IH07CiAK
ICAgICB2b2lkIHNldEZvcm1hdHNGcm9tUGF0dGVybihTdHJpbmdWaWV3KTsKLSAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsIGhvdXJDeWNsZVN0cmluZyhIb3VyQ3ljbGUpOwotICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgd2Vla2RheVN0cmluZyhXZWVrZGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IGVyYVN0cmluZyhFcmEpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgeWVhclN0cmluZyhZZWFy
KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG1vbnRoU3RyaW5nKE1vbnRoKTsKLSAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIGRheVN0cmluZyhEYXkpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwg
ZGF5UGVyaW9kU3RyaW5nKERheVBlcmlvZCk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBob3Vy
U3RyaW5nKEhvdXIpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbWludXRlU3RyaW5nKE1pbnV0
ZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzZWNvbmRTdHJpbmcoU2Vjb25kKTsKLSAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHRpbWVab25lTmFtZVN0cmluZyhUaW1lWm9uZU5hbWUpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgZm9ybWF0U3R5bGVTdHJpbmcoRGF0ZVRpbWVTdHlsZSk7Cisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggaG91ckN5Y2xlU3RyaW5nKEhvdXJDeWNs
ZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggd2Vla2RheVN0cmluZyhXZWVr
ZGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlcmFTdHJpbmcoRXJhKTsK
KyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB5ZWFyU3RyaW5nKFllYXIpOworICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG1vbnRoU3RyaW5nKE1vbnRoKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBkYXlTdHJpbmcoRGF5KTsKKyAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBkYXlQZXJpb2RTdHJpbmcoRGF5UGVyaW9kKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBob3VyU3RyaW5nKEhvdXIpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG1pbnV0ZVN0cmluZyhNaW51dGUpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNlY29uZFN0cmluZyhTZWNvbmQpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHRpbWVab25lTmFtZVN0cmluZyhUaW1lWm9uZU5hbWUp
OworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGZvcm1hdFN0eWxlU3RyaW5nKERh
dGVUaW1lU3R5bGUpOwogCiAgICAgc3RhdGljIEhvdXJDeWNsZSBob3VyQ3ljbGVGcm9tU3ltYm9s
KFVDaGFyKTsKICAgICBzdGF0aWMgSG91ckN5Y2xlIHBhcnNlSG91ckN5Y2xlKGNvbnN0IFN0cmlu
ZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzLmNwcAppbmRleCBmYmU4NmU0YjdlYWEuLjk5NTY0YmRiZTc2MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKQEAgLTM2Niw3
ICszNjYsNyBAQCBKU09iamVjdCogSW50bERpc3BsYXlOYW1lczo6cmVzb2x2ZWRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9
CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpzdHlsZVN0cmluZyhTdHlsZSBzdHls
ZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJpbmco
U3R5bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgU3R5bGU6Ok5h
cnJvdzoKQEAgLTM3NywxMCArMzc3LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVz
OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJsb25nIl9zOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpu
dWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAot
QVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OnR5cGVTdHJpbmcoVHlwZSB0eXBlKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKFR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFR5cGU6Okxhbmd1YWdlOgpAQCAt
Mzk3LDEwICszOTcsMTAgQEAgQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OnR5cGVTdHJp
bmcoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gImRhdGVUaW1lRmllbGQiX3M7CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwo
KTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJ
SUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2sgZmFsbGJh
Y2spCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3Ry
aW5nKEZhbGxiYWNrIGZhbGxiYWNrKQogewogICAgIHN3aXRjaCAoZmFsbGJhY2spIHsKICAgICBj
YXNlIEZhbGxiYWNrOjpDb2RlOgpAQCAtNDA5LDEwICs0MDksMTAgQEAgQVNDSUlMaXRlcmFsIElu
dGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNrKQogICAgICAg
ICByZXR1cm4gIm5vbmUiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0
aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6bGFu
Z3VhZ2VEaXNwbGF5U3RyaW5nKExhbmd1YWdlRGlzcGxheSBsYW5ndWFnZURpc3BsYXkpCitBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEaXNwbGF5TmFtZXM6Omxhbmd1YWdlRGlzcGxheVN0cmlu
ZyhMYW5ndWFnZURpc3BsYXkgbGFuZ3VhZ2VEaXNwbGF5KQogewogICAgIHN3aXRjaCAobGFuZ3Vh
Z2VEaXNwbGF5KSB7CiAgICAgY2FzZSBMYW5ndWFnZURpc3BsYXk6OkRpYWxlY3Q6CkBAIC00MjEs
NyArNDIxLDcgQEAgQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6Omxhbmd1YWdlRGlzcGxh
eVN0cmluZyhMYW5ndWFnZURpc3BsYXkgbGFuZ3VhZ2VEaXMKICAgICAgICAgcmV0dXJuICJzdGFu
ZGFyZCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpu
dWxsKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCmluZGV4IGQ4MGRjM2Q4M2ExNS4uZmIyYjY4
Nzc0ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lcy5oCkBAIC02OSwxMCArNjksMTAgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZh
bGxiYWNrIDogdWludDhfdCB7IENvZGUsIE5vbmUgfTsKICAgICBlbnVtIGNsYXNzIExhbmd1YWdl
RGlzcGxheSA6IHVpbnQ4X3QgeyBEaWFsZWN0LCBTdGFuZGFyZCB9OwogCi0gICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0
eXBlU3RyaW5nKFR5cGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgZmFsbGJhY2tTdHJpbmco
RmFsbGJhY2spOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbGFuZ3VhZ2VEaXNwbGF5U3RyaW5n
KExhbmd1YWdlRGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggc3R5
bGVTdHJpbmcoU3R5bGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHR5cGVT
dHJpbmcoVHlwZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZmFsbGJhY2tT
dHJpbmcoRmFsbGJhY2spOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGxhbmd1
YWdlRGlzcGxheVN0cmluZyhMYW5ndWFnZURpc3BsYXkpOwogCiAgICAgdXNpbmcgVUxvY2FsZURp
c3BsYXlOYW1lc0RlbGV0ZXIgPSBJQ1VEZWxldGVyPHVsZG5fY2xvc2U+OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4g
bV9kaXNwbGF5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TGlzdEZvcm1hdC5jcHAKaW5kZXggZjVjMzA1NzA5OGM5Li40NmQ3MGYzOWRiMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5jcHAKQEAgLTM0
Miw3ICszNDIsNyBAQCBKU09iamVjdCogSW50bExpc3RGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBvcHRpb25zOwog
fQogCi1BU0NJSUxpdGVyYWwgSW50bExpc3RGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxl
KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTGlzdEZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5
bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgU3R5bGU6Okxvbmc6
CkBAIC0zNTMsMTAgKzM1MywxMCBAQCBBU0NJSUxpdGVyYWwgSW50bExpc3RGb3JtYXQ6OnN0eWxl
U3RyaW5nKFN0eWxlIHN0eWxlKQogICAgICAgICByZXR1cm4gIm5hcnJvdyJfczsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgp
OworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJ
TGl0ZXJhbCBJbnRsTGlzdEZvcm1hdDo6dHlwZVN0cmluZyhUeXBlIHR5cGUpCitBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIEludGxMaXN0Rm9ybWF0Ojp0eXBlU3RyaW5nKFR5cGUgdHlwZSkKIHsKICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFR5cGU6OkNvbmp1bmN0aW9uOgpAQCAtMzY3LDcg
KzM2Nyw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTGlzdEZvcm1hdDo6dHlwZVN0cmluZyhUeXBlIHR5
cGUpCiAgICAgICAgIHJldHVybiAidW5pdCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmgKaW5kZXggOGIy
NzQwMmY5ZDQwLi4yNDdhNTRjMDhkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bExpc3RGb3JtYXQuaApAQCAtNzksOCArNzksOCBAQCBwcml2YXRlOgogICAgIGVu
dW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBDb25qdW5jdGlvbiwgRGlzanVuY3Rpb24sIFVuaXQg
fTsKICAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IFNob3J0LCBMb25nLCBOYXJyb3cg
fTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdHlwZVN0cmluZyhUeXBlKTsKLSAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCB0eXBlU3RyaW5nKFR5cGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIHN0eWxlU3RyaW5nKFN0eWxlKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTGlz
dEZvcm1hdHRlciwgVUxpc3RGb3JtYXR0ZXJEZWxldGVyPiBtX2xpc3RGb3JtYXQ7CiAgICAgU3Ry
aW5nIG1fbG9jYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0LmNwcAppbmRleCA5NTNjMzlmZTY0YTkuLmEwNmUzYjlkZDU5YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
QEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4g
d2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgdW5pdElkZQogICAgIHJldHVybiBX
ZWxsRm9ybWVkVW5pdChudW1lcmF0b3JVbml0LnZhbHVlKCksIGRlbm9taW5hdG9yVW5pdC52YWx1
ZSgpKTsKIH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9y
bWF0RmllbGRzIGZpZWxkLCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwgYm9vbCBzaWdu
LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGUgdHlwZSkKK3N0YXRpYyBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQs
IEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGlj
YWxWYWx1ZTo6TnVtYmVyVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAoZmllbGQpIHsKICAgICBj
YXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKQEAgLTEyNDUsNyArMTI0NSw3IEBAIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEludGxNCiB9CiAjZW5kaWYKIAotQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6
OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVt
YmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxl
KSB7CiAgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTEyNTgsMTAgKzEyNTgsMTAgQEAgQVND
SUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogICAg
ICAgICByZXR1cm4gInVuaXQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFs
V2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6
Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJyZW5jeURpc3BsYXkpCitB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0
cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXNwbGF5KQogewogICAgIHN3aXRjaCAoY3Vy
cmVuY3lEaXNwbGF5KSB7CiAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OkNvZGU6CkBAIC0xMjc0
LDEwICsxMjc0LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURp
c3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAgICAgICAgIHJldHVybiAi
bmFtZSJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpu
dWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0cmlu
ZyhJbnRsTm90YXRpb24gbm90YXRpb24pCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1i
ZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlvbiBub3RhdGlvbikKIHsKICAgICBz
d2l0Y2ggKG5vdGF0aW9uKSB7CiAgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgpAQCAt
MTI5MCwxMCArMTI5MCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6bm90YXRp
b25TdHJpbmcoSW50bE5vdGF0aW9uIG5vdGF0aW9uKQogICAgICAgICByZXR1cm4gImNvbXBhY3Qi
X3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgp
OwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5n
KEN1cnJlbmN5U2lnbiBjdXJyZW5jeVNpZ24pCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxO
dW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24gY3VycmVuY3lTaWdu
KQogewogICAgIHN3aXRjaCAoY3VycmVuY3lTaWduKSB7CiAgICAgY2FzZSBDdXJyZW5jeVNpZ246
OlN0YW5kYXJkOgpAQCAtMTMwMiwxMCArMTMwMiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJl
ckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKEN1cnJlbmN5U2lnbiBjdXJyZW5jeVNpZ24pCiAg
ICAgICAgIHJldHVybiAiYWNjb3VudGluZyJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVy
Rm9ybWF0Ojp1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSB1bml0RGlzcGxheSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcoVW5p
dERpc3BsYXkgdW5pdERpc3BsYXkpCiB7CiAgICAgc3dpdGNoICh1bml0RGlzcGxheSkgewogICAg
IGNhc2UgVW5pdERpc3BsYXk6OlNob3J0OgpAQCAtMTMxNiwxMCArMTMxNiwxMCBAQCBBU0NJSUxp
dGVyYWwgSW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkgdW5p
dERpc3BsYXkpCiAgICAgICAgIHJldHVybiAibG9uZyJfczsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRs
TnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSBjb21wYWN0
RGlzcGxheSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bE51bWJlckZvcm1hdDo6Y29tcGFj
dERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYXkpCiB7CiAgICAgc3dp
dGNoIChjb21wYWN0RGlzcGxheSkgewogICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6OlNob3J0OgpA
QCAtMTMyOCwxMCArMTMyOCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y29t
cGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYQogICAgICAgICBy
ZXR1cm4gImxvbmciX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExl
bmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRp
c3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5IHNpZ25E
aXNwbGF5KQogewogICAgIHN3aXRjaCAoc2lnbkRpc3BsYXkpIHsKICAgICBjYXNlIFNpZ25EaXNw
bGF5OjpBdXRvOgpAQCAtMTM0NiwxMCArMTM0NiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJl
ckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkpCiAgICAg
ICAgIHJldHVybiAibmVnYXRpdmUiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRl
cmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1h
dDo6cm91bmRpbmdNb2RlU3RyaW5nKFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCitBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nTW9kZVN0cmluZyhSb3Vu
ZGluZ01vZGUgcm91bmRpbmdNb2RlKQogewogICAgIHN3aXRjaCAocm91bmRpbmdNb2RlKSB7CiAg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkNlaWw6CkBAIC0xMzcyLDEwICsxMzcyLDEwIEBAIEFTQ0lJ
TGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2Rl
IHJvdW5kaW5nTW9kZSkKICAgICAgICAgcmV0dXJuICJoYWxmRXZlbiJfczsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0
ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5n
WmVyb0Rpc3BsYXkgdHJhaWxpbmdaZXJvRGlzcGxheSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgg
SW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9E
aXNwbGF5IHRyYWlsaW5nWmVyb0Rpc3BsYXkpCiB7CiAgICAgc3dpdGNoICh0cmFpbGluZ1plcm9E
aXNwbGF5KSB7CiAgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvOgpAQCAtMTM4NCwx
MCArMTM4NCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJv
RGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5IHRyYQogICAgICAgICByZXR1cm4gInN0
cmlwSWZJbnRlZ2VyIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5k
aW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSByb3VuZGluZ1R5cGUpCitBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmco
SW50bFJvdW5kaW5nVHlwZSByb3VuZGluZ1R5cGUpCiB7CiAgICAgc3dpdGNoIChyb3VuZGluZ1R5
cGUpIHsKICAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgpAQCAtMTM5
OSw3ICsxMzk5LDcgQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJp
b3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSByb3VuZGluZ1QKICAgICAgICAgcmV0dXJuICJs
ZXNzUHJlY2lzaW9uIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGlu
Z1ZhbHVlKFZNJiB2bSwgVXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5kZXggNjk5MTRlYWYzMzM2
Li41ODZjYTliYTM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmgKQEAgLTIwNiwxMSArMjA2LDExIEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmllbmQgdm9pZCBhcHBlbmROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnNUb1NrZWxldG9uKEludGxUeXBlKiwgU3RyaW5nQnVpbGRlciYpOwogCi0g
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24pOworICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlv
bik7CiAKICAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdCogdW53cmFwRm9yT2xkRnVuY3Rpb25z
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJv
dW5kaW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSk7CisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggcm91bmRpbmdQcmlvcml0eVN0cmluZyhJbnRsUm91bmRpbmdUeXBl
KTsKIAogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CkBA
IC0yMjcsMTQgKzIyNywxNCBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgVHJhaWxpbmdaZXJv
RGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBTdHJpcElmSW50ZWdlciB9OwogICAgIGVudW0gY2xh
c3MgVXNlR3JvdXBpbmcgOiB1aW50OF90IHsgRmFsc2UsIE1pbjIsIEF1dG8sIEFsd2F5cyB9Owog
Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7Ci0gICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5KTsKLSAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24pOwot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkpOwot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3Bs
YXkpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3Bs
YXkpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdNb2RlU3RyaW5nKFJvdW5kaW5n
TW9kZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5n
KFRyYWlsaW5nWmVyb0Rpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBj
dXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCBjdXJyZW5jeVNpZ25TdHJpbmcoQ3VycmVuY3lTaWduKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxh
eSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggY29tcGFjdERpc3BsYXlTdHJp
bmcoQ29tcGFjdERpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNp
Z25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCByb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlKTsKKyAgICBzdGF0aWMgQVND
SUlMaXRlcmFsV2l0aExlbmd0aCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVy
b0Rpc3BsYXkpOwogICAgIHN0YXRpYyBKU1ZhbHVlIHVzZUdyb3VwaW5nVmFsdWUoVk0mLCBVc2VH
cm91cGluZyk7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9y
bWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxp
bmVzLmgKaW5kZXggNDFjMmJmZGY2ZWU1Li4zNmNiMzkyOGU2MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaApAQCAtMTIwLDcgKzEy
MCw3IEBAIEluc3RhbmNlVHlwZSogdW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJl
c3VsdFR5cGU+Ci1SZXN1bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgc3RkOjppbml0
aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMs
IEFTQ0lJTGl0ZXJhbCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCitSZXN1
bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgc3RkOjppbml0aWFsaXplcl9saXN0PHN0
ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggbm90Rm91bmRNZXNzYWdlLCBSZXN1bHRUeXBlIGZhbGxiYWNrKQogewogICAgIC8v
IEdldE9wdGlvbiAob3B0aW9ucywgcHJvcGVydHksIHR5cGU9InN0cmluZyIsIHZhbHVlcywgZmFs
bGJhY2spCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtZ2V0b3B0
aW9uCkBAIC0xNTIsNyArMTUyLDcgQEAgUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU4KIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KLVJlc3VsdFR5cGUgaW50bFN0cmluZ09yQm9vbGVh
bk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywg
UHJvcGVydHlOYW1lIHByb3BlcnR5LCBSZXN1bHRUeXBlIHRydWVWYWx1ZSwgUmVzdWx0VHlwZSBm
YWxzeVZhbHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwg
UmVzdWx0VHlwZT4+IHZhbHVlcywgQVNDSUlMaXRlcmFsIG5vdEZvdW5kTWVzc2FnZSwgUmVzdWx0
VHlwZSBmYWxsYmFjaykKK1Jlc3VsdFR5cGUgaW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1l
IHByb3BlcnR5LCBSZXN1bHRUeXBlIHRydWVWYWx1ZSwgUmVzdWx0VHlwZSBmYWxzeVZhbHVlLCBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwgUmVzdWx0VHlwZT4+
IHZhbHVlcywgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5
cGUgZmFsbGJhY2spCiB7CiAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVt
YmVyZm9ybWF0LXYzL291dC9uZWdvdGlhdGlvbi9kaWZmLmh0bWwjc2VjLWdldHN0cmluZ29yYm9v
bGVhbm9wdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGUzMjhhMWMxZjQwYy4uZWI5ODU1MTQ4
Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsCiAgICAgfQogfQogCi1BU0NJSUxpdGVyYWwgSW50bFJlbGF0aXZlVGltZUZvcm1h
dDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogewogICAgIHN3aXRj
aCAoc3R5bGUpIHsKICAgICBjYXNlIFN0eWxlOjpMb25nOgpAQCAtMTg1LDcgKzE4NSw3IEBAIEFT
Q0lJTGl0ZXJhbCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHls
ZSkKICAgICAgICAgcmV0dXJuICJuYXJyb3ciX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLWludGwucmVsYXRpdmV0aW1lZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaAppbmRleCA5ZWQwNjE1ODAzZjYuLmEwMjhkMzQ1ZGJkYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFVSZWxhdGl2ZURhdGVU
aW1lRm9ybWF0dGVyRGVsZXRlciA9IElDVURlbGV0ZXI8dXJlbGRhdGVmbXRfY2xvc2U+OwogICAg
IHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKIAot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOworICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0eWxlU3RyaW5nKFN0eWxlKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciwgVVJlbGF0aXZlRGF0ZVRpbWVGb3Jt
YXR0ZXJEZWxldGVyPiBtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1h
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAK
aW5kZXggOGQ4NWZlN2M5Y2MyLi43YzFlY2EyYTE0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgSlNP
YmplY3QqIEludGxTZWdtZW50ZXI6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBvcHRpb25zOwogfQogCi1BU0NJSUxpdGVyYWwg
SW50bFNlZ21lbnRlcjo6Z3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkp
CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxTZWdtZW50ZXI6OmdyYW51bGFyaXR5U3RyaW5n
KEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsK
ICAgICBjYXNlIEdyYW51bGFyaXR5OjpHcmFwaGVtZToKQEAgLTE2MSw3ICsxNjEsNyBAQCBBU0NJ
SUxpdGVyYWwgSW50bFNlZ21lbnRlcjo6Z3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHkpCiAgICAgICAgIHJldHVybiAic2VudGVuY2UiX3M7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiBKU09iamVjdCogSW50
bFNlZ21lbnRlcjo6Y3JlYXRlU2VnbWVudERhdGFPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZywgaW50MzJfdCBzdGFydEluZGV4LCBpbnQzMl90IGVu
ZEluZGV4LCBVQnJlYWtJdGVyYXRvciYgc2VnbWVudGVyLCBHcmFudWxhcml0eSBncmFudWxhcml0
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuaAppbmRl
eCBlNzMxMWFmODFiYTIuLjBjYmFhMzYzNmQyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAg
IEludGxTZWdtZW50ZXIoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGdyYW51bGFyaXR5U3RyaW5nKEdyYW51
bGFyaXR5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBncmFudWxhcml0eVN0
cmluZyhHcmFudWxhcml0eSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3Is
IFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4gbV9zZWdtZW50ZXI7CiAgICAgU3RyaW5nIG1fbG9jYWxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAzMTc5ODVm
ZmVkNmEuLmE3YTJiMjkwMjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIHVuc2lnbmVkIHN0YXJ0SQogICAg
IGNoZWNrZWROZXdMZW5ndGggKz0gb3RoZXJMZW5ndGg7CiAKICAgICBpZiAoY2hlY2tlZE5ld0xl
bmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVk
VGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIFN0cmluZyB7
IExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IgfSkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IGNoZWNrZWROZXdM
ZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMu
aAppbmRleCBlZGU0ZGYwMjkwMzguLjBmMThhZTFmMTg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5SW5saW5lcy5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IE1BWF9B
UlJBWV9JTkRFWCkpIHsKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0
aGlzLCBnbG9iYWxPYmplY3QsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYg
KCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVuZ3RoRXhj
ZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNjcsNyArMTY3LDcgQEAg
QUxXQVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IE1B
WF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRl
eCh0aGlzLCBnbG9iYWxPYmplY3QsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAg
aWYgKCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVuZ3Ro
RXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9y
IH0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMDIsNyArMjAyLDcg
QEAgQUxXQVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+
IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAg
ICAgaWYgKCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVu
Z3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAg
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVy
cm9yIH0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDMsNyArMjQz
LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZt
KS0+cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHN0b3JhZ2UtPmxlbmd0aCgpLCB2YWx1
ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAvLyBQZXIgRVM1LjEgMTUuNC40Ljcgc3RlcCA2ICYgMTUu
NC41LjEgc3RlcCAzLmQuCiAgICAgICAgICAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpKQotICAg
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0
aEVycm9yKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIFN0cmluZyB7IExlbmd0aEV4Y2Vl
ZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IgfSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBmYTYyM2UwOTA3NGMuLmQ5ZDJhZjNhNjI1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjkxLDcg
KzY5MSw3IEBAIHN0YXRpYyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBzZXR1cEFkYXB0aXZlV2F0
Y2hwb2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB0ZW1wbGF0ZTxFcnJvclR5cGUgZXJy
b3JUeXBlPgogdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3Io
TGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkKIHsKLSAgICBpbml0LnNldFBy
b3RvdHlwZShOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIE5hdGl2ZUVycm9y
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9lcnJvclN0cnVjdHVy
ZS5wcm90b3R5cGUodGhpcykpLCBlcnJvclR5cGVOYW1lKGVycm9yVHlwZSkpKTsKKyAgICBpbml0
LnNldFByb3RvdHlwZShOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIE5hdGl2
ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9lcnJvclN0
cnVjdHVyZS5wcm90b3R5cGUodGhpcykpLCBTdHJpbmcgeyBlcnJvclR5cGVOYW1lKGVycm9yVHlw
ZSkgfSkpOwogICAgIGluaXQuc2V0U3RydWN0dXJlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVj
dHVyZShpbml0LnZtLCB0aGlzLCBpbml0LnByb3RvdHlwZSkpOwogICAgIGluaXQuc2V0Q29uc3Ry
dWN0b3IoTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGUoaW5pdC52bSwg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgdGhpcywgbV9lcnJvclN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKSksIGpzQ2FzdDxOYXRp
dmVFcnJvclByb3RvdHlwZSo+KGluaXQucHJvdG90eXBlKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZDMzYjcyMjg2NGE4Li4yNmJkZjEyZTliNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNzUsNiArNzUs
OCBAQCBzdHJ1Y3QgSGFzaFRhYmxlOwogc3RydWN0IEhhc2hUYWJsZVZhbHVlOwogCiBKU19FWFBP
UlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhy
b3dTY29wZSYsIGNvbnN0IFN0cmluZyYpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0
aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWwp
OworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9i
amVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoKTsKIGV4dGVybiBKU19F
WFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgTm9uRXh0ZW5zaWJsZU9iamVjdFByb3Bl
cnR5RGVmaW5lRXJyb3I7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRl
cmFsIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRF
IGNvbnN0IEFTQ0lJTGl0ZXJhbCBSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuY3BwCmluZGV4IDIxM2Q5ZmI3YTY4YS4uM2I1MTgwOWJjZTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNw
cApAQCAtMTU1LDcgKzE1NSw3IEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RyCiAKIHZvaWQgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvckJhc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXJy
b3JQcm90b3R5cGUqIHByb3RvdHlwZSwgRXJyb3JUeXBlIGVycm9yVHlwZSkKIHsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgZXJyb3JUeXBlTmFtZShlcnJvclR5cGUpLCBQcm9wZXJ0
eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCAxLCBTdHJpbmcgeyBlcnJvclR5cGVOYW1lKGVycm9yVHlwZSkgfSwg
UHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBB
U1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIAogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggZjIxOWI5MzI2YmJk
Li44YmExMTIyMjE0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcApAQCAtOTQsNyArOTQsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oY2FsbFRocm93RXJyb3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGZyb20gSUMuIEFuZCB3ZSBkbyBub3Qg
d2FudCB0byBpbmNsdWRlIHRoaXMgZnJhbWUgaW4gRXJyb3IncyBzdGFjay4KICAgICBjb25zdGV4
cHIgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSBmYWxzZTsKLSAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwg
Z2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OlR5cGVFcnJvciksIFJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yLCBKU1ZhbHVlKCksIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBF
cnJvclR5cGU6OlR5cGVFcnJvciwgdXNlQ3VycmVudEZyYW1lKSk7CisgICAgdGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVj
dCwgdm0sIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpUeXBlRXJyb3Ip
LCBTdHJpbmcgeyBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvciB9LCBKU1ZhbHVlKCksIG51bGxw
dHIsIFR5cGVOb3RoaW5nLCBFcnJvclR5cGU6OlR5cGVFcnJvciwgdXNlQ3VycmVudEZyYW1lKSk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IDNjZTc2MTI0MmMzMi4uOWU5NjE0
NDMwODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNl
L1dURi93dGYvRm9yd2FyZC5oCkBAIC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgV1RGIHsKIAog
Y2xhc3MgQVNDSUlMaXRlcmFsOworY2xhc3MgQVNDSUlMaXRlcmFsV2l0aExlbmd0aDsKIGNsYXNz
IEFic3RyYWN0TG9ja2VyOwogY2xhc3MgQXRvbVN0cmluZzsKIGNsYXNzIEF0b21TdHJpbmdJbXBs
OwpAQCAtMTIxLDYgKzEyMiw3IEBAIHRlbXBsYXRlPGNsYXNzPiBjbGFzcyB1bmV4cGVjdGVkOwog
fX19IC8vIG5hbWVzcGFjZSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzCiAKIHVz
aW5nIFdURjo6QVNDSUlMaXRlcmFsOwordXNpbmcgV1RGOjpBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
OwogdXNpbmcgV1RGOjpBYnN0cmFjdExvY2tlcjsKIHVzaW5nIFdURjo6QXRvbVN0cmluZzsKIHVz
aW5nIFdURjo6QXRvbVN0cmluZ0ltcGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0FTQ0lJTGl0ZXJhbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5jcHAK
aW5kZXggNjg3YzE3OWE1YzE0Li41NWRjMzI5OTA5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQVNDSUlMaXRlcmFsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJ
TGl0ZXJhbC5jcHAKQEAgLTMwLDYgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCit2b2lk
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sK
KyAgICBvdXQucHJpbnQobV9jaGFyYWN0ZXJzKTsKK30KKwogdm9pZCBBU0NJSUxpdGVyYWw6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQobV9jaGFyYWN0ZXJz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCmluZGV4IDVjMjM3ZjMwOWUxYi4uNzA3MDk2
NWYxZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKQEAgLTMzLDggKzMzLDQ2IEBA
IG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBQcmludFN0cmVhbTsKIAorY2xhc3MgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCBmaW5hbCB7CitwdWJsaWM6CisgICAgb3BlcmF0b3IgY29uc3QgY2hhcioo
KSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIg
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBmcm9tTGl0ZXJhbFVuc2FmZShjb25zdCBjaGFyKiBzdHJp
bmcsIHNpemVfdCBsZW5ndGgpCisgICAgeworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCB7IHN0cmluZywgbGVuZ3RoIH07CisgICAgfQorCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKworICAgIHN0YXRpYyBjb25z
dGV4cHIgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBudWxsKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHsgbnVsbHB0ciwgMCB9OworICAgIH0KKworICAgIGNv
bnN0ZXhwciBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2NoYXJhY3RlcnM7IH0KKwor
ICAgIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFyYWN0ZXJzOyB9CisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PGNvbnN0IExDaGFyKj4obV9jaGFyYWN0ZXJzKTsgfQorICAgIHNpemVf
dCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgY29uc3RleHByIGNo
YXIgY2hhcmFjdGVyQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVy
c1tpbmRleF07IH0KKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgQVNDSUlMaXRlcmFsV2l0aExl
bmd0aChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQorICAgICAgICA6IG1f
Y2hhcmFjdGVycyhjaGFyYWN0ZXJzKQorICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICB7
IH0KKworICAgIGNvbnN0IGNoYXIqIG1fY2hhcmFjdGVyczsKKyAgICBzaXplX3QgbV9sZW5ndGg7
Cit9OworCiBjbGFzcyBBU0NJSUxpdGVyYWwgZmluYWwgewogcHVibGljOgorICAgIGNvbnN0ZXhw
ciBBU0NJSUxpdGVyYWwoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBvdGhlcikKKyAgICAgICAgOiBt
X2NoYXJhY3RlcnMob3RoZXIuY2hhcmFjdGVycygpKQorICAgIHsgfQorCiAgICAgb3BlcmF0b3Ig
Y29uc3QgY2hhciooKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KIAogICAgIHN0YXRp
YyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGZyb21MaXRlcmFsVW5zYWZlKGNvbnN0IGNoYXIqIHN0
cmluZykKQEAgLTY1LDE1ICsxMDMsMTMgQEAgcHJpdmF0ZToKIAogaW5saW5lIG5hbWVzcGFjZSBT
dHJpbmdMaXRlcmFscyB7CiAKLWNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgb3BlcmF0b3IiIiBfcyhj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbikKK2NvbnN0ZXhwciBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIG9wZXJhdG9yIiIgX3MoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxl
bmd0aCkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bjsgKytpKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAg
IEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChpc0FTQ0lJKGNoYXJhY3RlcnNbaV0pKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG4pOwogI2VuZGlmCi0gICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2hhcmFjdGVycyk7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbFdpdGhMZW5ndGg6OmZyb21MaXRlcmFsVW5zYWZlKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9
CiAKIH0gLy8gaW5saW5lIFN0cmluZ0xpdGVyYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmlu
ZGV4IDMzYjBlNTk1OGQ4My4uMmI0ZjMzNzc0OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcu
aApAQCAtNzMsNyArNzMsMTIgQEAgcHVibGljOgogICAgICAgICBDT01QSUxFX0FTU0VSVCgoY2hh
cmFjdGVyQ291bnQgLSAxIDw9ICgodW5zaWduZWQofjApIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAv
IHNpemVvZihMQ2hhcikpKSwgQXRvbVN0cmluZ0Zyb21MaXRlcmFsQ2Fubm90T3ZlcmZsb3cpOwog
ICAgIH0KIAotICAgIEF0b21TdHJpbmcoQVNDSUlMaXRlcmFsIGxpdGVyYWwpCisgICAgZXhwbGlj
aXQgQXRvbVN0cmluZyhBU0NJSUxpdGVyYWwgbGl0ZXJhbCkKKyAgICAgICAgOiBtX3N0cmluZyhB
dG9tU3RyaW5nSW1wbDo6YWRkTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0ZXJhbC5s
ZW5ndGgoKSkpCisgICAgeworICAgIH0KKworICAgIEF0b21TdHJpbmcoQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBsaXRlcmFsKQogICAgICAgICA6IG1fc3RyaW5nKEF0b21TdHJpbmdJbXBsOjphZGRM
aXRlcmFsKGxpdGVyYWwuY2hhcmFjdGVycygpLCBsaXRlcmFsLmxlbmd0aCgpKSkKICAgICB7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCmluZGV4IGUyYzI1NGE3
NjU2MC4uYjk0NGZiY2M5OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZS5oCkBAIC03NSw2ICs3NSwyMyBAQCBwcml2YXRlOgogICAgIFVDaGFyIG1fY2hhcmFjdGVyOwog
fTsKIAordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoLCB2b2lkPiB7CitwdWJsaWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXIoQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCBsaXRlcmFsKQorICAgICAgICA6IG1fY2hhcmFjdGVycyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4obGl0ZXJhbC5jaGFyYWN0ZXJzKCkpKQorICAgICAgICAsIG1f
bGVuZ3RoKGxpdGVyYWwubGVuZ3RoKCkpCisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgYm9vbCBpczhCaXQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
dm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKSBjb25zdCB7IFN0cmluZ0lt
cGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCBtX2NoYXJhY3RlcnMsIG1fbGVuZ3RoKTsg
fQorCitwcml2YXRlOgorICAgIGNvbnN0IExDaGFyKiBtX2NoYXJhY3RlcnM7CisgICAgdW5zaWdu
ZWQgbV9sZW5ndGg7Cit9OworCiB0ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPGNv
bnN0IExDaGFyKiwgdm9pZD4gewogcHVibGljOgogICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggZDU4
NDUxMDBjZTI2Li40NjIwMTNkZTViNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApA
QCAtMTYzLDExICsxNjMsNiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycykKICAgICByZXR1cm4gY3JlYXRlRnJvbUxp
dGVyYWwoY2hhcmFjdGVycywgc3RybGVuKGNoYXJhY3RlcnMpKTsKIH0KIAotUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKEFTQ0lJTGl0ZXJhbCBsaXRlcmFsKQot
ewotICAgIHJldHVybiBjcmVhdGVGcm9tTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0
ZXJhbC5sZW5ndGgoKSk7Ci19Ci0KIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVX
aXRob3V0Q29weWluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQog
ewogICAgIGlmICghbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBjNzZjZDUy
MzY3NjEuLjIyMjliY2UzODFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTI1MCw3
ICsyNTAsOCBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFJlcGxhY2UgY2FsbHMgdG8gdGhlc2Ug
b3ZlcmxvYWRzIG9mIGNyZWF0ZUZyb21MaXRlcmFsIHRvIGNyZWF0ZVdpdGhvdXRDb3B5aW5nIGlu
c3RlYWQuCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29u
c3QgY2hhciopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZUZyb21MaXRlcmFsKEFTQ0lJTGl0ZXJhbCk7CisgICAgc3RhdGljIFJlZjxTdHJpbmdJ
bXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChBU0NJSUxpdGVyYWwgbGl0ZXJhbCkgeyByZXR1cm4gY3Jl
YXRlRnJvbUxpdGVyYWwobGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpOyB9
CisgICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIGxpdGVyYWwpIHsgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGxpdGVyYWwu
Y2hhcmFjdGVycygpLCBsaXRlcmFsLmxlbmd0aCgpKTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3Jz
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oCmluZGV4IDI1NTRiYjRk
M2YyYy4uMjJmMTNjODNiYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z09wZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3JzLmgK
QEAgLTE2NCw2ICsxNjQsMjggQEAgaW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIFN0
cmluZ0FwcGVuZDxVLCBWPj4gb3BlcmF0b3IrKGNvbnN0IEFTQ0lJTGl0ZXIKICAgICByZXR1cm4g
U3RyaW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbCwgU3RyaW5nQXBwZW5kPFUsIFY+PihzdHJpbmcxLCBz
dHJpbmcyKTsKIH0KIAoraW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
LCBTdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoJiBzdHJpbmcx
LCBjb25zdCBTdHJpbmcmIHN0cmluZzIpCit7CisgICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoLCBTdHJpbmc+KHN0cmluZzEsIHN0cmluZzIpOworfQorCitpbmxp
bmUgU3RyaW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIEF0b21TdHJpbmc+IG9wZXJh
dG9yKyhjb25zdCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoJiBzdHJpbmcxLCBjb25zdCBBdG9tU3Ry
aW5nJiBzdHJpbmcyKQoreworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsV2l0
aExlbmd0aCwgQXRvbVN0cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8c3RkOjpk
ZWNheV90PFQ+LCBTdHJpbmdWaWV3Pjo6dmFsdWU+PgoraW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoLCBTdHJpbmdWaWV3PiBvcGVyYXRvcisoY29uc3QgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCYgc3RyaW5nMSwgVCBzdHJpbmcyKQoreworICAgIHJldHVybiBTdHJpbmdB
cHBlbmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nVmlldz4oc3RyaW5nMSwgc3RyaW5n
Mik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CitpbmxpbmUgU3RyaW5n
QXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIFN0cmluZ0FwcGVuZDxVLCBWPj4gb3BlcmF0
b3IrKGNvbnN0IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgmIHN0cmluZzEsIGNvbnN0IFN0cmluZ0Fw
cGVuZDxVLCBWPiYgc3RyaW5nMikKK3sKKyAgICByZXR1cm4gU3RyaW5nQXBwZW5kPEFTQ0lJTGl0
ZXJhbFdpdGhMZW5ndGgsIFN0cmluZ0FwcGVuZDxVLCBWPj4oc3RyaW5nMSwgc3RyaW5nMik7Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBTdHJpbmdBcHBlbmQ8U3RyaW5nLCBUPiBvcGVyYXRv
cisoY29uc3QgU3RyaW5nJiBzdHJpbmcxLCBUIHN0cmluZzIpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oCmluZGV4IDQ0OGFmNzY4OWY3NC4uMzEzMWY1YWM1YmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nVmlldyhjb25z
dCBjaGFyKik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsK
ICAgICBleHBsaWNpdCBTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCk7CisgICAgZXhwbGljaXQgU3Ry
aW5nVmlldyhBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoKTsKIAogICAgIHN0YXRpYyBTdHJpbmdWaWV3
IGVtcHR5KCk7CiAKQEAgLTM2MCw2ICszNjEsMTEgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcoQVNDSUlMaXRlcmFsIHN0cmluZykKICAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0
ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogfQogCitpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5n
VmlldyhBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0cmluZykKK3sKKyAgICBpbml0aWFsaXplKHN0
cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgU3RyaW5n
Vmlldzo6U3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgc2V0VW5k
ZXJseWluZ1N0cmluZygmc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUxMWI5
YzE2NGExYS4uM2ZjZTY4NDUzODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTk3LDcg
Kzk3LDggQEAgcHVibGljOgogICAgIFN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKik7CiAKICAgICAv
LyBDb25zdHJ1Y3QgYSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoQVNDSUlMaXRlcmFsKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKEFTQ0lJTGl0ZXJhbCk7CisgICAgU3RyaW5nKEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggc3RyaW5nKSA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVGcm9t
TGl0ZXJhbChzdHJpbmcpKSB7IH0KIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyBmcm9tIGEg
Y29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCiAgICAgLy8gVGhpcyBpcyB0aGUgImJpZyIgdmVyc2lv
bjogcHV0cyB0aGUgbGVuZ3RoIGluIHRoZSBmdW5jdGlvbiBjYWxsIGFuZCBnZW5lcmF0ZXMgYmln
Z2VyIGNvZGUuCkBAIC0zNjEsOSArMzYyLDExIEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpCiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgTENoYXIqIGIpIHsg
cmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYi5jaGFyYWN0ZXJzKCkpKTsgfQoraW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGggYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuY2hhcmFjdGVycygpLCBiLmxlbmd0aCgp
KTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMQ2hhciogYSwgY29uc3QgU3RyaW5n
JiBiKSB7IHJldHVybiBlcXVhbChhLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgY2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYSksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShBU0NJSUxpdGVyYWwgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYS5jaGFyYWN0ZXJzKCkpLCBiLmltcGwoKSk7
IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhLCBjb25z
dCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmNoYXJhY3RlcnMoKSwgYS5s
ZW5ndGgoKSk7IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBT
dHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmRhdGEoKSwgYS5zaXplKCkpOyB9
CiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBiKSB7
IHJldHVybiBiID09IGE7IH0KIApAQCAtMzcxLDkgKzM3NCwxMSBAQCBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwo
YS5pbXBsKAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IExD
aGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEu
aW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CiBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuICFl
cXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIuY2hhcmFjdGVy
cygpKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5jaGFyYWN0ZXJz
KCksIGIubGVuZ3RoKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKiBh
LCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLCBiLmltcGwoKSk7IH0KIGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVy
biAhZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpLCBiLmltcGwoKSk7IH0K
IGlubGluZSBib29sIG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IFN0cmluZyYgYikg
eyByZXR1cm4gIWVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhLmNoYXJhY3Rl
cnMoKSksIGIuaW1wbCgpKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGIuaW1wbCgpLCBh
LmNoYXJhY3RlcnMoKSwgYS5sZW5ndGgoKSk7IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2Fw
YWNpdHk+JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogdGVtcGxh
dGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0
cmluZyYgYSwgY29uc3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYikgeyByZXR1cm4g
YiAhPSBhOyB9CiAKQEAgLTYyOCw5ICs2MzMsOSBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+
IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgUwog
CiBpbmxpbmUgbmFtZXNwYWNlIFN0cmluZ0xpdGVyYWxzIHsKIAotaW5saW5lIFN0cmluZyBvcGVy
YXRvciIiIF9zdHIoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90KQoraW5saW5lIFN0cmlu
ZyBvcGVyYXRvciIiIF9zdHIoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkK
IHsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpmcm9tTGl0ZXJhbFVuc2FmZShjaGFyYWN0ZXJz
KTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6ZnJvbUxpdGVyYWxVbnNhZmUo
Y2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAogfSAvLyBpbmxpbmUgU3RyaW5nTGl0ZXJhbHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCBiMGQx
ZDgyZThlZWMuLjFhMjg4NTZhOTJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZU9wdGlvbnMoY29uc3QgSW5pdCYgaW5pdCkKIAogc3Rh
dGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gcHJvY2Vzc0ludmFsaWRTaWduYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBBU0NJSUxpdGVyYWwgbWVz
c2FnZSB7ICJGZXRjaFJlcXVlc3RJbml0LnNpZ25hbCBzaG91bGQgYmUgdW5kZWZpbmVkLCBudWxs
IG9yIGFuIEFib3J0U2lnbmFsIG9iamVjdC4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJl
bGVhc2UuIl9zIH07CisgICAgYXV0byBtZXNzYWdlID0gIkZldGNoUmVxdWVzdEluaXQuc2lnbmFs
IHNob3VsZCBiZSB1bmRlZmluZWQsIG51bGwgb3IgYW4gQWJvcnRTaWduYWwgb2JqZWN0LiBUaGlz
IHdpbGwgdGhyb3cgaW4gYSBmdXR1cmUgcmVsZWFzZS4iX3M7CiAgICAgY29udGV4dC5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNz
YWdlKTsKIAogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkgJiYgZG93bmNhc3Q8RG9jdW1l
bnQ+KGNvbnRleHQpLnF1aXJrcygpLnNob3VsZElnbm9yZUludmFsaWRTaWduYWwoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5k
ZXggY2QzNzJmNDM2OTFhLi43MjYyYTUyZmMxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0zODMsNyArMzgzLDcgQEAg
Ym9vbCBHZW9sb2NhdGlvbjo6c2hvdWxkQmxvY2tHZW9sb2NhdGlvblJlcXVlc3RzKCkKIHZvaWQg
R2VvbG9jYXRpb246OnN0YXJ0UmVxdWVzdChHZW9Ob3RpZmllciogbm90aWZpZXIpCiB7CiAgICAg
aWYgKHNob3VsZEJsb2NrR2VvbG9jYXRpb25SZXF1ZXN0cygpKSB7Ci0gICAgICAgIG5vdGlmaWVy
LT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0
aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIG9yaWdpbkNhbm5vdFJlcXVlc3RH
ZW9sb2NhdGlvbkVycm9yTWVzc2FnZSkpOworICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJv
cihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJy
b3I6OlBFUk1JU1NJT05fREVOSUVELCBTdHJpbmcgeyBvcmlnaW5DYW5ub3RSZXF1ZXN0R2VvbG9j
YXRpb25FcnJvck1lc3NhZ2UgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGRvY3Vt
ZW50KCktPnNldEdlb2xvY2F0aW9uQWNjZXNzZWQoKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lk
IEdlb2xvY2F0aW9uOjpzdGFydFJlcXVlc3QoR2VvTm90aWZpZXIqIG5vdGlmaWVyKQogICAgIC8v
IENoZWNrIHdoZXRoZXIgcGVybWlzc2lvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gZGVuaWVkLiBOb3Rl
IHRoYXQgaWYgdGhpcyBpcyB0aGUgY2FzZSwKICAgICAvLyB0aGUgcGVybWlzc2lvbiBzdGF0ZSBj
YW4gbm90IGNoYW5nZSBhZ2FpbiBpbiB0aGUgbGlmZXRpbWUgb2YgdGhpcyBwYWdlLgogICAgIGlm
IChpc0RlbmllZCgpKQotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlv
blBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJ
T05fREVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIG5vdGlm
aWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xv
Y2F0aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIFN0cmluZyB7IHBlcm1pc3Np
b25EZW5pZWRFcnJvck1lc3NhZ2UgfSkpOwogICAgIGVsc2UgaWYgKGhhdmVTdWl0YWJsZUNhY2hl
ZFBvc2l0aW9uKG5vdGlmaWVyLT5vcHRpb25zKCkpKQogICAgICAgICBub3RpZmllci0+c2V0VXNl
Q2FjaGVkUG9zaXRpb24oKTsKICAgICBlbHNlIGlmIChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQo
KSkKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzdGFydFJlcXVlc3QoR2Vv
Tm90aWZpZXIqIG5vdGlmaWVyKQogICAgIH0gZWxzZSBpZiAoc3RhcnRVcGRhdGluZyhub3RpZmll
cikpCiAgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKICAgICBlbHNlCi0g
ICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6
Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIGZh
aWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIG5vdGlmaWVyLT5zZXRG
YXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9z
aXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIFN0cmluZyB7IGZhaWxlZFRvU3RhcnRT
ZXJ2aWNlRXJyb3JNZXNzYWdlIH0pKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbjo6ZmF0YWxFcnJv
ck9jY3VycmVkKEdlb05vdGlmaWVyKiBub3RpZmllcikKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lk
IEdlb2xvY2F0aW9uOjpyZXF1ZXN0VXNlc0NhY2hlZFBvc2l0aW9uKEdlb05vdGlmaWVyKiBub3Rp
ZmllcikKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhc3luY2hyb25vdXNseSwgc28gdGhlIHBlcm1p
c3Npb25zIGNvdWxkIGhhdmUgYmVlbiBkZW5pZWQKICAgICAvLyBzaW5jZSB3ZSBsYXN0IGNoZWNr
ZWQgaW4gc3RhcnRSZXF1ZXN0LgogICAgIGlmIChpc0RlbmllZCgpKSB7Ci0gICAgICAgIG5vdGlm
aWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xv
Y2F0aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1pc3Npb25EZW5pZWRF
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQRVJNSVNT
SU9OX0RFTklFRCwgU3RyaW5nIHsgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSB9KSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEdlb2xvY2F0
aW9uOjptYWtlQ2FjaGVkUG9zaXRpb25DYWxsYmFja3MoKQogICAgICAgICAgICAgaWYgKG5vdGlm
aWVyLT5oYXNaZXJvVGltZW91dCgpIHx8IHN0YXJ0VXBkYXRpbmcobm90aWZpZXIuZ2V0KCkpKQog
ICAgICAgICAgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2Nh
dGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBPU0lU
SU9OX1VOQVZBSUxBQkxFLCBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSkpOworICAg
ICAgICAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25F
cnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFC
TEUsIFN0cmluZyB7IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlIH0pKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnNldElz
QWxsb3dlZChib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQog
ICAgIH0KIAogICAgIGlmICghaXNBbGxvd2VkKCkpIHsKLSAgICAgICAgYXV0byBlcnJvciA9IEdl
b2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6
UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1pc3Npb25EZW5pZWRFcnJvck1lc3NhZ2UpOworICAgICAg
ICBhdXRvIGVycm9yID0gR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgU3RyaW5nIHsgcGVybWlzc2lvbkRl
bmllZEVycm9yTWVzc2FnZSB9KTsKICAgICAgICAgZXJyb3ItPnNldElzRmF0YWwodHJ1ZSk7CiAg
ICAgICAgIGhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgbV9yZXF1ZXN0c0F3YWl0aW5nQ2Fj
aGVkUG9zaXRpb24uY2xlYXIoKTsKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
OjpzdG9wVGltZXJzKCkKIHZvaWQgR2VvbG9jYXRpb246OmNhbmNlbFJlcXVlc3RzKEdlb05vdGlm
aWVyVmVjdG9yJiBub3RpZmllcnMpCiB7CiAgICAgZm9yIChhdXRvJiBub3RpZmllciA6IG5vdGlm
aWVycykKLSAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlv
bkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlM
QUJMRSwgZnJhbWVsZXNzRG9jdW1lbnRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgbm90aWZpZXIt
PnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRSwgU3RyaW5nIHsgZnJhbWVsZXNz
RG9jdW1lbnRFcnJvck1lc3NhZ2UgfSkpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uOjpjYW5jZWxB
bGxSZXF1ZXN0cygpCkBAIC03NTEsOSArNzUxLDkgQEAgdm9pZCBHZW9sb2NhdGlvbjo6aGFuZGxl
UGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMoKQogICAgICAgICAgICAgaWYgKHN0YXJ0VXBkYXRp
bmcobm90aWZpZXIuZ2V0KCkpKQogICAgICAgICAgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVy
SWZOZWVkZWQoKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBub3RpZmllci0+
c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlv
blBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBmYWlsZWRUb1N0YXJ0U2Vydmlj
ZUVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9y
KEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJv
cjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIFN0cmluZyB7IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJy
b3JNZXNzYWdlIH0pKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBub3RpZmllci0+c2V0
RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNz
YWdlKSk7CisgICAgICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05f
REVOSUVELCBTdHJpbmcgeyBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlIH0pKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hs
aWdodFJlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hs
aWdodFJlZ2lzdGVyLmNwcAppbmRleCBkY2E3ZTQ2YzQ4YTguLmMzZDUzYTZiMTRkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lz
dGVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEhpZ2hsaWdodFJlZ2lzdGVyOjpzZXRIaWdo
bGlnaHRWaXNpYmlsaXR5KEhpZ2hsaWdodFZpc2liaWxpdHkgaGlnaGxpZ2h0VmlzaQogICAgICAg
ICBoaWdobGlnaHQudmFsdWUtPnJlcGFpbnQoKTsKIH0KICNlbmRpZgotc3RhdGljIEFTQ0lJTGl0
ZXJhbCBhbm5vdGF0aW9uSGlnaGxpZ2h0S2V5KCkKK3N0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIGFubm90YXRpb25IaWdobGlnaHRLZXkoKQogewogICAgIHJldHVybiAiYW5ub3RhdGlvbkhp
Z2hsaWdodEtleSJfczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
MzljMTQ3ZGFhNzhjLi42YTZmZDI2ZDAxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjplbnN1cmVWYWxpZEJsb2JUYWJsZXMoKQogICAgICAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1
dGVDb21tYW5kKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSkpCiAgICAgICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkVycm9yIGNyZWF0aW5nIEJsb2JS
ZWNvcmRzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgIikgLSAiLCBtX3NxbGl0
ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKIAotICAgICAgICByZWNvcmRzVGFibGVTdGF0ZW1lbnQg
PSBibG9iUmVjb3Jkc1RhYmxlU2NoZW1hKCk7CisgICAgICAgIHJlY29yZHNUYWJsZVN0YXRlbWVu
dCA9IFN0cmluZyB7IGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSB9OwogICAgIH0KIAogICAgIFJF
TEVBU0VfQVNTRVJUKHJlY29yZHNUYWJsZVN0YXRlbWVudCA9PSBibG9iUmVjb3Jkc1RhYmxlU2No
ZW1hKCkgfHwgcmVjb3Jkc1RhYmxlU3RhdGVtZW50ID09IGJsb2JSZWNvcmRzVGFibGVTY2hlbWFB
bHRlcm5hdGUoKSk7CkBAIC0zMDksNyArMzA5LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjplbnN1cmVWYWxpZEJsb2JUYWJsZXMoKQogICAgICAgICBpZiAoIW1fc3FsaXRlREIt
PmV4ZWN1dGVDb21tYW5kKGJsb2JGaWxlc1RhYmxlU2NoZW1hKCkpKQogICAgICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJFcnJvciBjcmVhdGluZyBC
bG9iRmlsZXMgdGFibGUgKCIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCAiKSAtICIsIG1fc3Fs
aXRlREItPmxhc3RFcnJvck1zZygpKSB9OwogCi0gICAgICAgIGZpbGVzVGFibGVTdGF0ZW1lbnQg
PSBibG9iRmlsZXNUYWJsZVNjaGVtYSgpOworICAgICAgICBmaWxlc1RhYmxlU3RhdGVtZW50ID0g
U3RyaW5nIHsgYmxvYkZpbGVzVGFibGVTY2hlbWEoKSB9OwogICAgIH0KIAogICAgIFJFTEVBU0Vf
QVNTRVJUKGZpbGVzVGFibGVTdGF0ZW1lbnQgPT0gYmxvYkZpbGVzVGFibGVTY2hlbWEoKSB8fCBm
aWxlc1RhYmxlU3RhdGVtZW50ID09IGJsb2JGaWxlc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVy
cm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJv
ci5jcHAKaW5kZXggMThlZDdlMjFiMzU1Li5hZDFlMzg2MzczZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcApAQCAtNDAs
MTQgKzQwLDE0IEBAIFN0cmluZyBJREJFcnJvcjo6bmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NvZGUpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIERPTUV4Y2VwdGlvbjo6bmFt
ZShtX2NvZGUudmFsdWUoKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IERPTUV4Y2VwdGlvbjo6bmFt
ZShtX2NvZGUudmFsdWUoKSkgfTsKIH0KIAogU3RyaW5nIElEQkVycm9yOjptZXNzYWdlKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fY29kZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4g
RE9NRXhjZXB0aW9uOjptZXNzYWdlKG1fY29kZS52YWx1ZSgpKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgRE9NRXhjZXB0aW9uOjptZXNzYWdlKG1fY29kZS52YWx1ZSgpKSB9OwogfQogCiBSZWZQdHI8
RE9NRXhjZXB0aW9uPiBJREJFcnJvcjo6dG9ET01FeGNlcHRpb24oKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcApp
bmRleCA3M2Y2Y2M2NWQ1NGMuLmU4MTg5YjQzMzM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKQEAgLTIxNywxOSAr
MjE3LDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPiBzdGF0aWMgU3RyaW5n
IG1ha2VBcmd1bWVudFR5cGVFcnJvck1lc3NhZ2UodW5zCiB2b2lkIHRocm93Tm90U3VwcG9ydGVk
RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCiB7CiAgICAgc2NvcGUuYXNzZXJ0
Tm9FeGNlcHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBOb3RTdXBwb3J0ZWRFcnJvciwgbWVzc2FnZSkpOworICAgIHRocm93RXhjZXB0aW9u
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBOb3RTdXBwb3J0ZWRFcnJvciwgU3RyaW5nIHsgbWVzc2FnZSB9KSk7CiB9
CiAKIHZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVz
c2FnZSkKIHsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0aW9uKCk7
Ci0gICAgdGhyb3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVE
T01FeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIEludmFsaWRTdGF0ZUVycm9yLCBtZXNz
YWdlKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVET01FeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIEludmFsaWRTdGF0ZUVycm9y
LCBTdHJpbmcgeyBtZXNzYWdlIH0pKTsKIH0KIAogdm9pZCB0aHJvd1NlY3VyaXR5RXJyb3IoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uRXhjZXB0VGVybWluYXRpb24oKTsKLSAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwg
U2VjdXJpdHlFcnJvciwgbWVzc2FnZSkpOworICAgIHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBTZWN1cml0eUVycm9yLCBTdHJpbmcgeyBtZXNzYWdlIH0pKTsKIH0KIAogSlNDOjpFbmNvZGVk
SlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIHVuc2lnbmVkIGFy
Z3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rp
b25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4
cGVjdGVkVmFsdWVzKQpAQCAtMzExLDcgKzMxMSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgcmVq
ZWN0UHJvbWlzZVdpdGhUaGlzVHlwZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
CiB2b2lkIHRocm93RE9NU3ludGF4RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2Up
CiB7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwotICAg
IHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhj
ZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBTeW50YXhFcnJvciwgbWVzc2FnZSkpOworICAg
IHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhj
ZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBTeW50YXhFcnJvciwgU3RyaW5nIHsgbWVzc2Fn
ZSB9KSk7CiB9CiAKIHZvaWQgdGhyb3dEYXRhQ2xvbmVFcnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKaW5kZXggNzAx
ZDM5YzA4YjBiLi44MjgzZjljOTlmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTQzo6SWRl
bnRpZmllciBTY3JpcHRNb2R1bGVMb2FkZXI6OnJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCog
anNHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVzdWx0LT5zdHJpbmcoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlamVjdFRvUHJvcGFnYXRl
TmV0d29ya0Vycm9yKERlZmVycmVkUHJvbWlzZSYgZGVmZXJyZWQsIE1vZHVsZUZldGNoRmFpbHVy
ZUtpbmQgZmFpbHVyZUtpbmQsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQorc3RhdGljIHZvaWQgcmVq
ZWN0VG9Qcm9wYWdhdGVOZXR3b3JrRXJyb3IoRGVmZXJyZWRQcm9taXNlJiBkZWZlcnJlZCwgTW9k
dWxlRmV0Y2hGYWlsdXJlS2luZCBmYWlsdXJlS2luZCwgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBt
ZXNzYWdlKQogewogICAgIGRlZmVycmVkLnJlamVjdFdpdGhDYWxsYmFjayhbJl0gKEpTRE9NR2xv
YmFsT2JqZWN0JiBqc0dsb2JhbE9iamVjdCkgewogICAgICAgICAvLyBXZSBhbm5vdGF0ZSBleGNl
cHRpb24gd2l0aCBzcGVjaWFsIHByaXZhdGUgc3ltYm9sLiBJdCBhbGxvd3MgdXMgdG8gZGlzdGlu
Z3Vpc2ggdGhlc2UgZXJyb3JzIGZyb20gdGhlIHVzZXIgdGhyb3duIG9uZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
QWN0aW9ucy5jcHAKaW5kZXggMGNhNjFjMTAxNGQyLi43ZGZlYTBkNWQwODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uQWN0aW9ucy5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIHZvaWQgd3JpdGVMZW5ndGhU
b1ZlY3RvckF0T2Zmc2V0KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCBzaXplX3Qgb2Zmc2V0KQog
CiBFeHBlY3RlZDxNb2RpZnlIZWFkZXJzQWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IE1vZGlmeUhl
YWRlcnNBY3Rpb246OnBhcnNlKGNvbnN0IEpTT046Ok9iamVjdCYgbW9kaWZ5SGVhZGVycykKIHsK
LSAgICBhdXRvIHBhcnNlSGVhZGVycyA9IFtdIChjb25zdCBKU09OOjpPYmplY3QmIG1vZGlmeUhl
YWRlcnMsIEFTQ0lJTGl0ZXJhbCBhcnJheU5hbWUpIC0+IEV4cGVjdGVkPFZlY3RvcjxNb2RpZnlI
ZWFkZXJJbmZvPiwgc3RkOjplcnJvcl9jb2RlPiB7CisgICAgYXV0byBwYXJzZUhlYWRlcnMgPSBb
XSAoY29uc3QgSlNPTjo6T2JqZWN0JiBtb2RpZnlIZWFkZXJzLCBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIGFycmF5TmFtZSkgLT4gRXhwZWN0ZWQ8VmVjdG9yPE1vZGlmeUhlYWRlckluZm8+LCBzdGQ6
OmVycm9yX2NvZGU+IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1vZGlmeUhlYWRlcnMuZ2V0VmFs
dWUoYXJyYXlOYW1lKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCmluZGV4IDUxM2ZkOTM5ZTY2ZC4uNGM0ZTk2NDY3YmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBFeHBl
Y3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRUcmlnZ2VyKGNvbnN0IEpTT046Ok9i
amVjdCYgcnVsZU9iCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3IpOwog
ICAgIH0KIAotICAgIGF1dG8gY2hlY2tDb25kaXRpb24gPSBbJl0gKEFTQ0lJTGl0ZXJhbCBrZXks
IEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBzdGQ6OmVycm9yX2NvZGU+ICgqbGlzdFJlYWRlciko
Y29uc3QgSlNPTjo6QXJyYXkmKSwgQWN0aW9uQ29uZGl0aW9uIGFjdGlvbkNvbmRpdGlvbikgLT4g
c3RkOjplcnJvcl9jb2RlIHsKKyAgICBhdXRvIGNoZWNrQ29uZGl0aW9uID0gWyZdIChBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIGtleSwgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3Jf
Y29kZT4gKCpsaXN0UmVhZGVyKShjb25zdCBKU09OOjpBcnJheSYpLCBBY3Rpb25Db25kaXRpb24g
YWN0aW9uQ29uZGl0aW9uKSAtPiBzdGQ6OmVycm9yX2NvZGUgewogICAgICAgICBpZiAoYXV0byB2
YWx1ZSA9IHRyaWdnZXJPYmplY3QtPmdldFZhbHVlKGtleSkpIHsKICAgICAgICAgICAgIGlmICh0
cmlnZ2VyLmZsYWdzICYgQWN0aW9uQ29uZGl0aW9uTWFzaykKICAgICAgICAgICAgICAgICByZXR1
cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCmluZGV4IGQzNmQzNDBmNzBhOC4u
YzcxMjQ2ZTMxNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9Dcnlw
dG9LZXlFQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMu
Y3BwCkBAIC0xNTEsMTMgKzE1MSwxMyBAQCBFeGNlcHRpb25PcjxKc29uV2ViS2V5PiBDcnlwdG9L
ZXlFQzo6ZXhwb3J0SndrKCkgY29uc3QKICAgICByZXN1bHQua3R5ID0gIkVDIjsKICAgICBzd2l0
Y2ggKG1fY3VydmUpIHsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlAyNTY6Ci0gICAgICAgIHJlc3Vs
dC5jcnYgPSBQMjU2OworICAgICAgICByZXN1bHQuY3J2ID0gU3RyaW5nIHsgUDI1NiB9OwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlAzODQ6Ci0gICAgICAgIHJlc3VsdC5j
cnYgPSBQMzg0OworICAgICAgICByZXN1bHQuY3J2ID0gU3RyaW5nIHsgUDM4NCB9OwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlA1MjE6Ci0gICAgICAgIHJlc3VsdC5jcnYg
PSBQNTIxOworICAgICAgICByZXN1bHQuY3J2ID0gU3RyaW5nIHsgUDUyMSB9OwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgcmVzdWx0LmtleV9vcHMgPSB1c2FnZXMoKTsKQEAgLTIxNiwxMyAr
MjE2LDEzIEBAIGF1dG8gQ3J5cHRvS2V5RUM6OmFsZ29yaXRobSgpIGNvbnN0IC0+IEtleUFsZ29y
aXRobQogCiAgICAgc3dpdGNoIChtX2N1cnZlKSB7CiAgICAgY2FzZSBOYW1lZEN1cnZlOjpQMjU2
OgotICAgICAgICByZXN1bHQubmFtZWRDdXJ2ZSA9IFAyNTY7CisgICAgICAgIHJlc3VsdC5uYW1l
ZEN1cnZlID0gU3RyaW5nIHsgUDI1NiB9OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5hbWVk
Q3VydmU6OlAzODQ6Ci0gICAgICAgIHJlc3VsdC5uYW1lZEN1cnZlID0gUDM4NDsKKyAgICAgICAg
cmVzdWx0Lm5hbWVkQ3VydmUgPSBTdHJpbmcgeyBQMzg0IH07CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTmFtZWRDdXJ2ZTo6UDUyMToKLSAgICAgICAgcmVzdWx0Lm5hbWVkQ3VydmUgPSBQNTIx
OworICAgICAgICByZXN1bHQubmFtZWRDdXJ2ZSA9IFN0cmluZyB7IFA1MjEgfTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uY3BwCmluZGV4IDAwYWI3
NDlmM2I4Yi4uZWU3NDljYzQxNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmNwcApA
QCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgRE9NRXhjZXB0aW9uOjpMZWdhY3lDb2RlIGxlZ2FjeUNv
ZGVGcm9tTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiBSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNl
cHRpb246OmNyZWF0ZShFeGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
CiAgICAgYXV0byYgZGVzY3JpcHRpb24gPSBET01FeGNlcHRpb246OmRlc2NyaXB0aW9uKGVjKTsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01FeGNlcHRpb24oZGVzY3JpcHRpb24ubGVnYWN5
Q29kZSwgZGVzY3JpcHRpb24ubmFtZSwgIW1lc3NhZ2UuaXNFbXB0eSgpID8gbWVzc2FnZSA6IGRl
c2NyaXB0aW9uLm1lc3NhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01FeGNlcHRp
b24oZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgU3RyaW5nIHsgZGVzY3JpcHRpb24ubmFtZSB9LCAh
bWVzc2FnZS5pc0VtcHR5KCkgPyBtZXNzYWdlIDogU3RyaW5nIHsgZGVzY3JpcHRpb24ubWVzc2Fn
ZSB9KSk7CiB9CiAKIFJlZjxET01FeGNlcHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTA0LDcgKzEwNCw3IEBA
IFJlZjxET01FeGNlcHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBuYW1lCiBSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNlcHRpb246
OmNyZWF0ZShjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKIHsKICAgICBhdXRvJiBkZXNjcmlw
dGlvbiA9IERPTUV4Y2VwdGlvbjo6ZGVzY3JpcHRpb24oZXhjZXB0aW9uLmNvZGUoKSk7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRXhjZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUs
IGRlc2NyaXB0aW9uLm5hbWUsIGV4Y2VwdGlvbi5tZXNzYWdlKCkuaXNFbXB0eSgpID8gZGVzY3Jp
cHRpb24ubWVzc2FnZSA6IGV4Y2VwdGlvbi5tZXNzYWdlKCkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBET01FeGNlcHRpb24oZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgU3RyaW5nIHsgZGVz
Y3JpcHRpb24ubmFtZSB9LCBleGNlcHRpb24ubWVzc2FnZSgpLmlzRW1wdHkoKSA/IFN0cmluZyB7
IGRlc2NyaXB0aW9uLm1lc3NhZ2UgfSA6IGV4Y2VwdGlvbi5tZXNzYWdlKCkpKTsKIH0KIAogRE9N
RXhjZXB0aW9uOjpET01FeGNlcHRpb24oTGVnYWN5Q29kZSBsZWdhY3lDb2RlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmNwcAppbmRleCAzM2I2MmMzYTljMmUuLjMzMDY0YjU0MjNhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzIzLDcgKzMyMyw3IEBAIGJvb2wgU2NyaXB0RWxlbWVu
dDo6cmVxdWVzdE1vZHVsZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9z
aXRpb24pCiAgICAgU3RyaW5nIG5vbmNlID0gbV9lbGVtZW50Lm5vbmNlKCk7CiAgICAgU3RyaW5n
IGNyb3NzT3JpZ2luTW9kZSA9IG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKTsKICAgICBpZiAoY3Jvc3NPcmlnaW5Nb2Rl
LmlzTnVsbCgpKQotICAgICAgICBjcm9zc09yaWdpbk1vZGUgPSBTY3JpcHRFbGVtZW50Q2FjaGVk
U2NyaXB0RmV0Y2hlcjo6ZGVmYXVsdENyb3NzT3JpZ2luTW9kZUZvck1vZHVsZTsKKyAgICAgICAg
Y3Jvc3NPcmlnaW5Nb2RlID0gU3RyaW5nIHsgU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNo
ZXI6OmRlZmF1bHRDcm9zc09yaWdpbk1vZGVGb3JNb2R1bGUgfTsKIAogICAgIGlmIChoYXNTb3Vy
Y2VBdHRyaWJ1dGUoKSkgewogICAgICAgICBBU1NFUlQobV9lbGVtZW50LmlzQ29ubmVjdGVkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnRDYWNoZWRTY3Jp
cHRGZXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50Q2FjaGVkU2Ny
aXB0RmV0Y2hlci5jcHAKaW5kZXggMTA0M2I3MzcyZmIxLi4zNzQwNjM4MzkyNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRj
aGVyLmNwcApAQCAtMzksNyArMzksNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3Jp
cHQ+IFNjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0TW9kdQogICAgIC8v
IElmIHRoZSBmZXRjaGVyIGlzIG5vdCBtb2R1bGUgc2NyaXB0LCBjcmVkZW50aWFsIG1vZGUgaXMg
YWx3YXlzICJzYW1lLW9yaWdpbiIgKCJhbm9ueW1vdXMiKS4KICAgICAvLyBUaGlzIGNvZGUgaXMg
Zm9yIGR5bmFtaWMgbW9kdWxlIGltcG9ydCAoYGltcG9ydGAgb3BlcmF0b3IpLgogCi0gICAgcmV0
dXJuIHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNvdXJjZVVSTCwgaXNDbGFzc2lj
U2NyaXB0KCkgPyBkZWZhdWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9kdWxlIDogbV9jcm9zc09yaWdp
bk1vZGUsIFdURk1vdmUoaW50ZWdyaXR5KSwgeyB9KTsKKyAgICByZXR1cm4gcmVxdWVzdFNjcmlw
dFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNlVVJMLCBpc0NsYXNzaWNTY3JpcHQoKSA/IEF0b21T
dHJpbmcgeyBkZWZhdWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9kdWxlIH0gOiBtX2Nyb3NzT3JpZ2lu
TW9kZSwgV1RGTW92ZShpbnRlZ3JpdHkpLCB7IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCA2MWExZWE2Yjk3NTcuLjJkYzY5YzkyNmQ5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xODI4LDggKzE4
MjgsOSBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1hcCYgY3JlYXRlQ29tbWFuZE1hcCgpCiAgICAg
Q29tbWFuZE1hcCYgY29tbWFuZE1hcCA9ICpuZXcgQ29tbWFuZE1hcDsKIAogICAgIGZvciAoYXV0
byYgY29tbWFuZCA6IGNvbW1hbmRzKSB7Ci0gICAgICAgIEFTU0VSVCghY29tbWFuZE1hcC5nZXQo
Y29tbWFuZC5uYW1lKSk7Ci0gICAgICAgIGNvbW1hbmRNYXAuc2V0KGNvbW1hbmQubmFtZSwgJmNv
bW1hbmQuY29tbWFuZCk7CisgICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSB7IGNvbW1hbmQubmFt
ZSB9OworICAgICAgICBBU1NFUlQoIWNvbW1hbmRNYXAuZ2V0KGNvbW1hbmROYW1lKSk7CisgICAg
ICAgIGNvbW1hbmRNYXAuc2V0KGNvbW1hbmROYW1lLCAmY29tbWFuZC5jb21tYW5kKTsKICAgICB9
CiAKICAgICByZXR1cm4gY29tbWFuZE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCmluZGV4IDJmMTBjZWQ4NDEzMS4uZDU3N2VhNjZlYWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTM5NSw3ICszOTUs
NyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKGNvbnN0IFN0cmlu
ZyYgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QgogICAgIC8vIENvZGUgZWxzZXdoZXJlIG5vcm1h
bGl6ZXMgbGluZSBlbmRpbmdzIGFkZGVkIGJ5IHRoZSB1c2VyIHZpYSB0aGUga2V5Ym9hcmQgb3Ig
cGFzdGluZy4KICAgICAvLyBXZSBub3JtYWxpemUgbGluZSBlbmRpbmdzIGNvbWluZyBmcm9tIEph
dmFTY3JpcHQgaGVyZS4KICAgICBTdHJpbmcgbm9ybWFsaXplZFZhbHVlID0gbmV3VmFsdWUuaXNO
dWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmV3VmFsdWU7Ci0gICAgbm9ybWFsaXplZFZhbHVlLnJl
cGxhY2UoIlxyXG4iLCAiXG4iKTsKKyAgICBub3JtYWxpemVkVmFsdWUucmVwbGFjZSgiXHJcbiJf
cywgIlxuIl9zKTsKICAgICBub3JtYWxpemVkVmFsdWUucmVwbGFjZSgnXHInLCAnXG4nKTsKIAog
ICAgIC8vIFJldHVybiBlYXJseSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gbW92ZSB0aGUgY2Fy
ZXQgb3IgdHJpZ2dlciBvdGhlciBzaWRlIGVmZmVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5k
ZXggMGU3ODA2M2UzYTQxLi45ZjAwM2VmODQzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBA
IC0yOTUsNyArMjk1LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6U3RhdGU6OlN0
YXRlKCkKIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdGF0ZTo6Zm9udFN0
cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFmb250LnJlYWxpemVkKCkpCi0gICAgICAgIHJldHVy
biBEZWZhdWx0Rm9udDsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7IERlZmF1bHRGb250IH07CiAK
ICAgICBTdHJpbmdCdWlsZGVyIHNlcmlhbGl6ZWRGb250OwogICAgIGNvbnN0IGF1dG8mIGZvbnQg
PSB0aGlzLT5mb250LmZvbnREZXNjcmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKaW5kZXggYTUxMzAwMjE2MWI5
Li45MGVhODJlOGRmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxSZXNvdXJjZVByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcApAQCAtNTksNyArNTksNyBAQCBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgUHJlbG9hZFJlcXVlc3Q6OnJlc291cmNlUmVxdWVzdChEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgU3RyaW5nIGNyb3NzT3JpZ2luTW9kZSA9IG1fY3Jvc3NPcmlnaW5Nb2RlOwogICAg
IGlmIChtX21vZHVsZVNjcmlwdCA9PSBNb2R1bGVTY3JpcHQ6OlllcykgewogICAgICAgICBpZiAo
Y3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpKQotICAgICAgICAgICAgY3Jvc3NPcmlnaW5Nb2RlID0g
U2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6OmRlZmF1bHRDcm9zc09yaWdpbk1vZGVG
b3JNb2R1bGU7CisgICAgICAgICAgICBjcm9zc09yaWdpbk1vZGUgPSBTdHJpbmcgeyBTY3JpcHRF
bGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6ZGVmYXVsdENyb3NzT3JpZ2luTW9kZUZvck1vZHVs
ZSB9OwogICAgIH0KICAgICBpZiAobV9yZXNvdXJjZVR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5
cGU6OlNjcmlwdCB8fCBtX3Jlc291cmNlVHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SW1h
Z2VSZXNvdXJjZSkKICAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IG1fcmVmZXJyZXJQ
b2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXgg
MTlmYzg1Y2Q4OTdhLi5mYTQzYWEzODlkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAKQEAgLTM5MSw3ICszOTEsNyBAQCBib29sIFRleHRUcmFja0N1ZTo6
aGFzRXF1aXZhbGVudFN0YXJ0VGltZShjb25zdCBUZXh0VHJhY2tDdWUmIGN1ZSkgY29uc3QKIAog
dm9pZCBUZXh0VHJhY2tDdWU6OnRvSlNPTihKU09OOjpPYmplY3QmIHZhbHVlKSBjb25zdAogewot
ICAgIEFTQ0lJTGl0ZXJhbCB0eXBlID0gIkdlbmVyaWMiX3M7CisgICAgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCB0eXBlID0gIkdlbmVyaWMiX3M7CiAgICAgc3dpdGNoIChjdWVUeXBlKCkpIHsKICAg
ICBjYXNlIFRleHRUcmFja0N1ZTo6Q29udmVydGVkVG9XZWJWVFQ6CiAgICAgICAgIHR5cGUgPSAi
Q29udmVydGVkVG9XZWJWVFQiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3Bw
CmluZGV4IDgzODkwOGRjOTM2ZS4uZGFjNjE3NGRiMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NRWRpdG9yLmNwcApAQCAtNDM3LDcgKzQzNyw3IEBAIHN0YXRpYyBib29sIHBvcHVsYXRl
RXJyb3JTdHJpbmcoRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQsIEVycm9yU3RyaW5nJiBlcnJv
clN0CiB7CiAgICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIGVycm9yU3RyaW5nID0gRE9NRXhjZXB0aW9uOjpuYW1lKHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkuY29kZSgpKTsKKyAgICBlcnJvclN0cmluZyA9IFN0cmluZyB7IERPTUV4Y2Vw
dGlvbjo6bmFtZShyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSkgfTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5jcHAKaW5kZXggYmJjYzc5YWJjMzg2Li5jZTIzNGUyNTU4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMzMyLDcgKzEzMzIsNyBAQCBS
ZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rp
b24oU3RyaW5nJiYgbmFtZSwgSW5zcAogCiBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+
IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc0dyYWRpZW50KGNvbnN0IENhbnZh
c0dyYWRpZW50JiBjYW52YXNHcmFkaWVudCkKIHsKLSAgICBBU0NJSUxpdGVyYWwgdHlwZSA9ICJs
aW5lYXItZ3JhZGllbnQiX3M7CisgICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0eXBlID0gImxp
bmVhci1ncmFkaWVudCJfczsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpBcnJheU9mPGRv
dWJsZT46OmNyZWF0ZSgpOwogICAgIFdURjo6c3dpdGNoT24oY2FudmFzR3JhZGllbnQuZ3JhZGll
bnQoKS5kYXRhKCksCiAgICAgICAgIFsmXSAoY29uc3QgR3JhZGllbnQ6OkxpbmVhckRhdGEmIGRh
dGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcAppbmRleCBhMGIyMzIxMGIyMzguLmIyYzE4NDEzMjIwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNzEzLDExICs3MTMs
MTEgQEAgUmVmPFByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVX
aXRoUHJvcGVydGllcygpIGNvbnN0CiAgICAgICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT4+OjppdGVyYXRvciBhY3RpdmVJdCA9IHBy
b3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5maW5kKGNhbm9uaWNhbFByb3BlcnR5
TmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ICE9IHByb3BlcnR5TmFtZVRvUHJl
dmlvdXNBY3RpdmVQcm9wZXJ0eS5lbmQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAocHJv
cGVydHlFbnRyeS5wYXJzZWRPaykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdQ
cmlvcml0eSA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKFByb3RvY29sOjpDU1M6OkNTU1By
b3BlcnR5Ojpwcmlvcml0eUtleSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld1By
aW9yaXR5ID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkNT
Uzo6Q1NTUHJvcGVydHk6OnByaW9yaXR5S2V5IH0pOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCEhbmV3UHJpb3JpdHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNQ
cmlvcml0eSA9IG5ld1ByaW9yaXR5OwogCi0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG5l
d1N0YXR1cyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKFByb3RvY29sOjpDU1M6OkNTU1By
b3BlcnR5OjpzdGF0dXNLZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdTdGF0
dXMgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6Q1NTOjpD
U1NQcm9wZXJ0eTo6c3RhdHVzS2V5IH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEh
bmV3U3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTdGF0dXMg
PSBuZXdTdGF0dXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU3Rh
dHVzICE9IFByb3RvY29sOjpIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6
Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpKSB7CkBAIC03MzAsNyArNzMwLDcgQEAg
UmVmPFByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJv
cGVydGllcygpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c1BhcnNlZE9rID0gYWN0aXZlSXQtPnZhbHVlLT5n
ZXRCb29sZWFuKFByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpwYXJzZWRPa0tleSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIHByZXZpb3VzUGFyc2VkT2sgPSBhY3RpdmVJdC0+dmFs
dWUtPmdldEJvb2xlYW4oU3RyaW5nIHsgUHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OnBhcnNl
ZE9rS2V5IH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzUGFyc2VkT2sg
JiYgIXByZXZpb3VzUGFyc2VkT2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
SW5hY3RpdmF0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXgg
MGUxODZiY2VhNzAxLi5jNjc4Y2E1MmE2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMzksMTMgKzEzOSwx
MyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb2xvcj4gcGFyc2VDb2xvcihSZWZQdHI8SlNPTjo6
T2JqZWN0PiYmIGNvbG9yT2JqZWN0KQogICAgIGlmICghY29sb3JPYmplY3QpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdl
cihQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OnJLZXkpOwotICAgIGF1dG8gZyA9IGNvbG9yT2Jq
ZWN0LT5nZXRJbnRlZ2VyKFByb3RvY29sOjpET006OlJHQkFDb2xvcjo6Z0tleSk7Ci0gICAgYXV0
byBiID0gY29sb3JPYmplY3QtPmdldEludGVnZXIoUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpi
S2V5KTsKKyAgICBhdXRvIHIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihTdHJpbmcgeyBQcm90
b2NvbDo6RE9NOjpSR0JBQ29sb3I6OnJLZXkgfSk7CisgICAgYXV0byBnID0gY29sb3JPYmplY3Qt
PmdldEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpnS2V5IH0pOwor
ICAgIGF1dG8gYiA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpE
T006OlJHQkFDb2xvcjo6YktleSB9KTsKICAgICBpZiAoIXIgfHwgIWcgfHwgIWIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGEgPSBjb2xvck9iamVjdC0+Z2V0RG91
YmxlKFByb3RvY29sOjpET006OlJHQkFDb2xvcjo6YUtleSk7CisgICAgYXV0byBhID0gY29sb3JP
YmplY3QtPmdldERvdWJsZShTdHJpbmcgeyBQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OmFLZXkg
fSk7CiAgICAgaWYgKCFhKQogICAgICAgICByZXR1cm4geyBtYWtlRnJvbUNvbXBvbmVudHNDbGFt
cGluZzxTUkdCQTx1aW50OF90Pj4oKnIsICpnLCAqYikgfTsKICAgICByZXR1cm4geyBtYWtlRnJv
bUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFNSR0JBPHVpbnQ4X3Q+PigqciwgKmcsICpi
LCBjb252ZXJ0RmxvYXRBbHBoYVRvPHVpbnQ4X3Q+KCphKSkgfTsKQEAgLTI4MSw3ICsyODEsNyBA
QCBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoRXhjZXB0aW9uQ29kZSBl
YykKIAogU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKEV4Y2VwdGlvbiYm
IGV4Y2VwdGlvbikKIHsKLSAgICByZXR1cm4gRE9NRXhjZXB0aW9uOjpuYW1lKGV4Y2VwdGlvbi5j
b2RlKCkpOworICAgIHJldHVybiBTdHJpbmcgeyBET01FeGNlcHRpb246Om5hbWUoZXhjZXB0aW9u
LmNvZGUoKSkgfTsKIH0KIAogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBh
Z2VBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCkBAIC0x
MjgyLDExICsxMjgyLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JPdmVybGF5OjpIaWdo
bGlnaHQ6OkNvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdoCiAgICAgfQogCiAgICAg
YXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hs
aWdodDo6Q29uZmlnPigpOwotICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSBoaWdobGln
aHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4oUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29u
ZmlnOjpzaG93SW5mb0tleSkudmFsdWVfb3IoZmFsc2UpOwotICAgIGhpZ2hsaWdodENvbmZpZy0+
Y29udGVudCA9IHBhcnNlQ29uZmlnQ29sb3IoUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmln
Ojpjb250ZW50Q29sb3JLZXksICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwotICAgIGhpZ2hs
aWdodENvbmZpZy0+cGFkZGluZyA9IHBhcnNlQ29uZmlnQ29sb3IoUHJvdG9jb2w6OkRPTTo6SGln
aGxpZ2h0Q29uZmlnOjpwYWRkaW5nQ29sb3JLZXksICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3Qp
OwotICAgIGhpZ2hsaWdodENvbmZpZy0+Ym9yZGVyID0gcGFyc2VDb25maWdDb2xvcihQcm90b2Nv
bDo6RE9NOjpIaWdobGlnaHRDb25maWc6OmJvcmRlckNvbG9yS2V5LCAqaGlnaGxpZ2h0SW5zcGVj
dG9yT2JqZWN0KTsKLSAgICBoaWdobGlnaHRDb25maWctPm1hcmdpbiA9IHBhcnNlQ29uZmlnQ29s
b3IoUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjptYXJnaW5Db2xvcktleSwgKmhpZ2hs
aWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IGhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6RE9N
OjpIaWdobGlnaHRDb25maWc6OnNob3dJbmZvS2V5IH0pLnZhbHVlX29yKGZhbHNlKTsKKyAgICBo
aWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmluZyB7IFByb3Rv
Y29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6Y29udGVudENvbG9yS2V5IH0sICpoaWdobGlnaHRJ
bnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hsaWdodENvbmZpZy0+cGFkZGluZyA9IHBhcnNlQ29u
ZmlnQ29sb3IoU3RyaW5nIHsgUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpwYWRkaW5n
Q29sb3JLZXkgfSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxpZ2h0Q29u
ZmlnLT5ib3JkZXIgPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmluZyB7IFByb3RvY29sOjpET006Okhp
Z2hsaWdodENvbmZpZzo6Ym9yZGVyQ29sb3JLZXkgfSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVj
dCk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5tYXJnaW4gPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmlu
ZyB7IFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6bWFyZ2luQ29sb3JLZXkgfSwgKmhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAgICAgcmV0dXJuIGhpZ2hsaWdodENvbmZpZzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDEzZmMwYjgxZWY4Ny4uYThlZDUzMTExZDE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzZXRET01TdG9y
YWdlSXRlbShSZWY8SlMKICAgICBib29sIHF1b3RhRXhjZXB0aW9uID0gZmFsc2U7CiAgICAgc3Rv
cmFnZUFyZWEtPnNldEl0ZW0oKmZyYW1lLCBrZXksIHZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CiAg
ICAgaWYgKHF1b3RhRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRE9N
RXhjZXB0aW9uOjpuYW1lKFF1b3RhRXhjZWVkZWRFcnJvcikpOworICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoU3RyaW5nIHsgRE9NRXhjZXB0aW9uOjpuYW1lKFF1b3RhRXhjZWVkZWRFcnJv
cikgfSk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMTk1LDEzICsxOTUsMTMgQEAgdm9pZCBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0
IFN0cmluZyYga2V5LCBjb24KIAogUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHN0b3JhZ2VJZCwgRnJhbWUqJiB0YXJnZXRGcmFtZSkK
IHsKLSAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gc3RvcmFnZUlkLT5nZXRTdHJpbmcoUHJvdG9j
b2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6c2VjdXJpdHlPcmlnaW5LZXkpOworICAgIGF1dG8g
c2VjdXJpdHlPcmlnaW4gPSBzdG9yYWdlSWQtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6
RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpzZWN1cml0eU9yaWdpbktleSB9KTsKICAgICBpZiAoIXNl
Y3VyaXR5T3JpZ2luKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcgc2VjdXJpdHlP
cmlnaW4gaW4gZ2l2ZW4gc3RvcmFnZUlkIjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgYXV0byBpc0xvY2FsU3RvcmFnZSA9IHN0b3JhZ2VJZC0+Z2V0Qm9vbGVhbihQcm90
b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjppc0xvY2FsU3RvcmFnZUtleSk7CisgICAgYXV0
byBpc0xvY2FsU3RvcmFnZSA9IHN0b3JhZ2VJZC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2Nv
bDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjppc0xvY2FsU3RvcmFnZUtleSB9KTsKICAgICBpZiAo
IWlzTG9jYWxTdG9yYWdlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaXNMb2Nh
bFN0b3JhZ2UgaW4gZ2l2ZW4gc3RvcmFnZUlkIjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDVkNTEyZTc4ZTIwMC4uMWMxMzUxYWI4ZTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcApAQCAtMjU1LDcgKzI1NSw3IEBAIHByaXZhdGU6CiAKIHN0YXRp
YyBSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KFJlZjxKU09OOjpPYmpl
Y3Q+JiYga2V5KQogewotICAgIGF1dG8gdHlwZVN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFByb3Rv
Y29sOjpJbmRleGVkREI6OktleTo6dHlwZUtleSk7CisgICAgYXV0byB0eXBlU3RyaW5nID0ga2V5
LT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5Ojp0eXBlS2V5IH0p
OwogICAgIGlmICghdHlwZVN0cmluZykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI2
NSwyOCArMjY1LDI4IEBAIHN0YXRpYyBSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9y
T2JqZWN0KFJlZjxKU09OOjpPYmplY3Q+JiYga2V5KQogCiAgICAgc3dpdGNoICgqdHlwZSkgewog
ICAgIGNhc2UgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpUeXBlOjpOdW1iZXI6IHsKLSAgICAg
ICAgYXV0byBudW1iZXIgPSBrZXktPmdldERvdWJsZShQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6
Om51bWJlcktleSk7CisgICAgICAgIGF1dG8gbnVtYmVyID0ga2V5LT5nZXREb3VibGUoU3RyaW5n
IHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpudW1iZXJLZXkgfSk7CiAgICAgICAgIGlmICgh
bnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBJREJL
ZXk6OmNyZWF0ZU51bWJlcigqbnVtYmVyKTsKICAgICB9CiAKICAgICBjYXNlIFByb3RvY29sOjpJ
bmRleGVkREI6OktleTo6VHlwZTo6U3RyaW5nOiB7Ci0gICAgICAgIGF1dG8gc3RyaW5nID0ga2V5
LT5nZXRTdHJpbmcoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpzdHJpbmdLZXkpOworICAgICAg
ICBhdXRvIHN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVk
REI6OktleTo6c3RyaW5nS2V5IH0pOwogICAgICAgICBpZiAoIXN0cmluZykKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVTdHJpbmcoc3Ry
aW5nKTsKICAgICB9CiAKICAgICBjYXNlIFByb3RvY29sOjpJbmRleGVkREI6OktleTo6VHlwZTo6
RGF0ZTogewotICAgICAgICBhdXRvIGRhdGUgPSBrZXktPmdldERvdWJsZShQcm90b2NvbDo6SW5k
ZXhlZERCOjpLZXk6OmRhdGVLZXkpOworICAgICAgICBhdXRvIGRhdGUgPSBrZXktPmdldERvdWJs
ZShTdHJpbmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OmRhdGVLZXkgfSk7CiAgICAgICAg
IGlmICghZGF0ZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4g
SURCS2V5OjpjcmVhdGVEYXRlKCpkYXRlKTsKICAgICB9CiAKICAgICBjYXNlIFByb3RvY29sOjpJ
bmRleGVkREI6OktleTo6VHlwZTo6QXJyYXk6IHsKLSAgICAgICAgYXV0byBhcnJheSA9IGtleS0+
Z2V0QXJyYXkoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjphcnJheUtleSk7CisgICAgICAgIGF1
dG8gYXJyYXkgPSBrZXktPmdldEFycmF5KFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVkREI6Oktl
eTo6YXJyYXlLZXkgfSk7CiAgICAgICAgIGlmICghYXJyYXkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApAQCAtMzA4LDI0ICszMDgsMjQgQEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGlk
YktleUZyb21JbnNwZWN0b3JPYmplY3QoUmVmPEpTT046Ok9iamVjdD4mJiBrZXkpCiBzdGF0aWMg
UmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZShKU09OOjpPYmplY3Qm
IGtleVJhbmdlKQogewogICAgIFJlZlB0cjxJREJLZXk+IGlkYkxvd2VyOwotICAgIGlmIChhdXRv
IGxvd2VyID0ga2V5UmFuZ2UuZ2V0T2JqZWN0KFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdl
Ojpsb3dlcktleSkpIHsKKyAgICBpZiAoYXV0byBsb3dlciA9IGtleVJhbmdlLmdldE9iamVjdChT
dHJpbmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5nZTo6bG93ZXJLZXkgfSkpIHsKICAg
ICAgICAgaWRiTG93ZXIgPSBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KGxvd2VyLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgICAgICBpZiAoIWlkYkxvd2VyKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCiAgICAgUmVmUHRyPElEQktleT4gaWRiVXBwZXI7Ci0gICAgaWYgKGF1
dG8gdXBwZXIgPSBrZXlSYW5nZS5nZXRPYmplY3QoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFu
Z2U6OnVwcGVyS2V5KSkgeworICAgIGlmIChhdXRvIHVwcGVyID0ga2V5UmFuZ2UuZ2V0T2JqZWN0
KFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOjp1cHBlcktleSB9KSkgewog
ICAgICAgICBpZGJVcHBlciA9IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QodXBwZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgICAgIGlmICghaWRiVXBwZXIpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGxvd2VyT3BlbiA9IGtleVJhbmdlLmdldEJvb2xl
YW4oUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFuZ2U6Omxvd2VyT3BlbktleSk7CisgICAgYXV0
byBsb3dlck9wZW4gPSBrZXlSYW5nZS5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpJbmRl
eGVkREI6OktleVJhbmdlOjpsb3dlck9wZW5LZXkgfSk7CiAgICAgaWYgKCFsb3dlck9wZW4pCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byB1cHBlck9wZW4gPSBrZXlSYW5nZS5n
ZXRCb29sZWFuKFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOjp1cHBlck9wZW5LZXkpOwor
ICAgIGF1dG8gdXBwZXJPcGVuID0ga2V5UmFuZ2UuZ2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2Nv
bDo6SW5kZXhlZERCOjpLZXlSYW5nZTo6dXBwZXJPcGVuS2V5IH0pOwogICAgIGlmICghdXBwZXJP
cGVuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDZl
NWE1ZmM4OWNjZS4uN2Q0MTMwZWI0ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC01MjgsNyAr
NTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmkKICAgICBpZiAoY2FjaGVkUmVzb3VyY2Up
IHsKICAgICAgICAgLy8gVXNlIG1pbWUgdHlwZSBmcm9tIGNhY2hlZCByZXNvdXJjZSBpbiBjYXNl
IHRoZSBvbmUgaW4gcmVzcG9uc2UgaXMgZW1wdHkuCiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3Bv
bnNlICYmIHJlc3BvbnNlLm1pbWVUeXBlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVzb3Vy
Y2VSZXNwb25zZS0+c2V0U3RyaW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6bWltZVR5
cGVLZXksIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOworICAgICAgICAg
ICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpOZXR3b3Jr
OjpSZXNwb25zZTo6bWltZVR5cGVLZXkgfSwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWlt
ZVR5cGUoKSk7CiAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkQ2FjaGVkUmVzb3VyY2UocmVx
dWVzdElkLCBjYWNoZWRSZXNvdXJjZSk7CiAgICAgfQogCkBAIC01NTEsMTIgKzU1MSwxMiBAQCB2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCi0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmco
UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjptaW1lVHlwZUtleSwgcHJldmlvdXNSZXNvdXJj
ZURhdGEtPm1pbWVUeXBlKCkpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3Ry
aW5nKFN0cmluZyB7IFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6bWltZVR5cGVLZXkgfSwg
cHJldmlvdXNSZXNvdXJjZURhdGEtPm1pbWVUeXBlKCkpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRJbnRlZ2VyKFByb3RvY29sOjpOZXR3b3JrOjpSZXNw
b25zZTo6c3RhdHVzS2V5LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0YXR1c0NvZGUoKSk7
Ci0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoUHJvdG9jb2w6Ok5ldHdv
cms6OlJlc3BvbnNlOjpzdGF0dXNUZXh0S2V5LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0
YXR1c1RleHQoKSk7CisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRJbnRlZ2VyKFN0
cmluZyB7IFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c3RhdHVzS2V5IH0sIHByZXZpb3Vz
UmVzb3VyY2VEYXRhLT5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICAgICAgICAgIHJlc291cmNlUmVz
cG9uc2UtPnNldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OnN0
YXR1c1RleHRLZXkgfSwgcHJldmlvdXNSZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNUZXh0KCkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoUHJv
dG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjpzb3VyY2VLZXksIFByb3RvY29sOjpIZWxwZXJzOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OlNvdXJjZTo6
RGlza0NhY2hlKSk7CisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoU3Ry
aW5nIHsgUHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjpzb3VyY2VLZXkgfSwgUHJvdG9jb2w6
OkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25z
ZTo6U291cmNlOjpEaXNrQ2FjaGUpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmlu
ZGV4IGQxYjI2OWY4ZmE3ZC4uNmRiNTJiN2FmY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC01NjgsMzEg
KzU2OCwzMSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llT2JqZWN0
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogewogICAgIENvb2tpZSBjb29raWU7
CiAKLSAgICBjb29raWUubmFtZSA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQ
YWdlOjpDb29raWU6Om5hbWVLZXkpOworICAgIGNvb2tpZS5uYW1lID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6bmFtZUtleSB9KTsKICAg
ICBpZiAoIWNvb2tpZS5uYW1lKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFs
dWUgZm9yIGtleSBuYW1lIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCi0gICAgY29va2llLnZhbHVlID0gY29va2llT2JqZWN0LT5nZXRTdHJp
bmcoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6dmFsdWVLZXkpOworICAgIGNvb2tpZS52YWx1ZSA9
IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6
OnZhbHVlS2V5IH0pOwogICAgIGlmICghY29va2llLnZhbHVlKSB7CiAgICAgICAgIGVycm9yU3Ry
aW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSB2YWx1ZSBpbiBnaXZlbiBjb29raWUiOwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGNvb2tpZS5kb21haW4gPSBj
b29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpkb21haW5LZXkp
OworICAgIGNvb2tpZS5kb21haW4gPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhTdHJpbmcgeyBQ
cm90b2NvbDo6UGFnZTo6Q29va2llOjpkb21haW5LZXkgfSk7CiAgICAgaWYgKCFjb29raWUuZG9t
YWluKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBkb21h
aW4gaW4gZ2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKLSAgICBjb29raWUucGF0aCA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQ
YWdlOjpDb29raWU6OnBhdGhLZXkpOworICAgIGNvb2tpZS5wYXRoID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6cGF0aEtleSB9KTsKICAg
ICBpZiAoIWNvb2tpZS5wYXRoKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFs
dWUgZm9yIGtleSBwYXRoIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCi0gICAgYXV0byBodHRwT25seSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9v
bGVhbihQcm90b2NvbDo6UGFnZTo6Q29va2llOjpodHRwT25seUtleSk7CisgICAgYXV0byBodHRw
T25seSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6
Q29va2llOjpodHRwT25seUtleSB9KTsKICAgICBpZiAoIWh0dHBPbmx5KSB7CiAgICAgICAgIGVy
cm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBodHRwT25seSBpbiBnaXZlbiBjb29r
aWUiOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjAwLDcgKzYwMCw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluCiAKICAgICBjb29raWUuaHR0cE9ubHkgPSAqaHR0cE9ubHk7
CiAKLSAgICBhdXRvIHNlY3VyZSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6
UGFnZTo6Q29va2llOjpzZWN1cmVLZXkpOworICAgIGF1dG8gc2VjdXJlID0gY29va2llT2JqZWN0
LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlY3VyZUtleSB9
KTsKICAgICBpZiAoIXNlY3VyZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZh
bHVlIGZvciBrZXkgc2VjdXJlIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC02MDgsOCArNjA4LDggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29va2ll
PiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIAog
ICAgIGNvb2tpZS5zZWN1cmUgPSAqc2VjdXJlOwogCi0gICAgYXV0byBzZXNzaW9uID0gY29va2ll
T2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlc3Npb25LZXkpOwot
ICAgIGNvb2tpZS5leHBpcmVzID0gY29va2llT2JqZWN0LT5nZXREb3VibGUoUHJvdG9jb2w6OlBh
Z2U6OkNvb2tpZTo6ZXhwaXJlc0tleSk7CisgICAgYXV0byBzZXNzaW9uID0gY29va2llT2JqZWN0
LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlc3Npb25LZXkg
fSk7CisgICAgY29va2llLmV4cGlyZXMgPSBjb29raWVPYmplY3QtPmdldERvdWJsZShTdHJpbmcg
eyBQcm90b2NvbDo6UGFnZTo6Q29va2llOjpleHBpcmVzS2V5IH0pOwogICAgIGlmICghc2Vzc2lv
biAmJiAhY29va2llLmV4cGlyZXMpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IGV4cGlyZXMgaW4gZ2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTYxNyw3ICs2MTcsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29r
aWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbgog
CiAgICAgY29va2llLnNlc3Npb24gPSAqc2Vzc2lvbjsKIAotICAgIGF1dG8gc2FtZVNpdGVTdHJp
bmcgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpzYW1l
U2l0ZUtleSk7CisgICAgYXV0byBzYW1lU2l0ZVN0cmluZyA9IGNvb2tpZU9iamVjdC0+Z2V0U3Ry
aW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNhbWVTaXRlS2V5IH0pOwogICAg
IGlmICghc2FtZVNpdGVTdHJpbmcpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IHNhbWVTaXRlIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA5OTg4ZWE5NWYzZjEuLjU3ZmFi
ZTZiZjhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC03NDQsNyArNzQ0LDcgQEAgc3RhdGlj
IFByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRU
eXBlIHR5cGUpCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YWRkUmVjb3JkVG9UaW1l
bGluZShSZWY8SlNPTjo6T2JqZWN0PiYmIHJlY29yZCwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUp
CiB7Ci0gICAgcmVjb3JkLT5zZXRTdHJpbmcoUHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2
ZW50Ojp0eXBlS2V5LCBQcm90b2NvbDo6SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUodG9Q
cm90b2NvbCh0eXBlKSkpOworICAgIHJlY29yZC0+c2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29s
OjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6dHlwZUtleSB9LCBQcm90b2NvbDo6SGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUodG9Qcm90b2NvbCh0eXBlKSkpOwogCiAgICAgaWYgKG1fcmVj
b3JkU3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBydW50aW1lQ2FzdCBpcyBh
IGhhY2suIFdlIGRvIGl0IGJlY2F1c2Ugd2UgY2FuJ3QgYnVpbGQgVGltZWxpbmVFdmVudCBkaXJl
Y3RseSBub3cuCkBAIC03NzQsOSArNzc0LDkgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpzZXRGcmFtZUlkZW50aWZpZXIoSlNPTjo6T2JqZWN0KiByZWNvcmQsIEZyYW1lKiBmcmEKIAog
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZVJlY29yZEVudHJ5KGNvbnN0
IFRpbWVsaW5lUmVjb3JkRW50cnkmIGVudHJ5KQogewotICAgIGVudHJ5LnJlY29yZC0+c2V0T2Jq
ZWN0KFByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6ZGF0YUtleSwgZW50cnkuZGF0
YS5jb3B5UmVmKCkpOworICAgIGVudHJ5LnJlY29yZC0+c2V0T2JqZWN0KFN0cmluZyB7IFByb3Rv
Y29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6ZGF0YUtleSB9LCBlbnRyeS5kYXRhLmNvcHlS
ZWYoKSk7CiAgICAgaWYgKGVudHJ5LmNoaWxkcmVuKQotICAgICAgICBlbnRyeS5yZWNvcmQtPnNl
dEFycmF5KFByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6Y2hpbGRyZW5LZXksICpl
bnRyeS5jaGlsZHJlbik7CisgICAgICAgIGVudHJ5LnJlY29yZC0+c2V0QXJyYXkoU3RyaW5nIHsg
UHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50OjpjaGlsZHJlbktleSB9LCAqZW50cnku
Y2hpbGRyZW4pOwogICAgIGVudHJ5LnJlY29yZC0+c2V0RG91YmxlKCJlbmRUaW1lIl9zLCB0aW1l
c3RhbXAoKSk7CiAgICAgYWRkUmVjb3JkVG9UaW1lbGluZShlbnRyeS5yZWNvcmQuY29weVJlZigp
LCBlbnRyeS50eXBlKTsKIH0KQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZFR5cGUgdHlw
ZSkKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YXBwZW5kUmVjb3JkKFJlZjxKU09OOjpP
YmplY3Q+JiYgZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUsIGJvb2wgY2FwdHVyZUNhbGxT
dGFjaywgRnJhbWUqIGZyYW1lKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IHJlY29yZCA9IFRp
bWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZCh0aW1lc3RhbXAoKSwgY2Fw
dHVyZUNhbGxTdGFjayA/IG1fbWF4Q2FsbFN0YWNrRGVwdGggOiAwKTsKLSAgICByZWNvcmQtPnNl
dE9iamVjdChQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmRhdGFLZXksIFdURk1v
dmUoZGF0YSkpOworICAgIHJlY29yZC0+c2V0T2JqZWN0KFN0cmluZyB7IFByb3RvY29sOjpUaW1l
bGluZTo6VGltZWxpbmVFdmVudDo6ZGF0YUtleSB9LCBXVEZNb3ZlKGRhdGEpKTsKICAgICBzZXRG
cmFtZUlkZW50aWZpZXIoJnJlY29yZC5nZXQoKSwgZnJhbWUpOwogICAgIGFkZFJlY29yZFRvVGlt
ZWxpbmUoV1RGTW92ZShyZWNvcmQpLCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwCmluZGV4IDc0YmQxMjlmMWM4MS4uMzZl
NThjNzE0YWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9w
ZW5lclBvbGljeS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgQVNDSUlMaXRlcmFsIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5VG9TdHJpbmcoY29u
c3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSYgY29vcCkKK3N0YXRpYyBBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5VG9TdHJpbmcoY29uc3QgQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSYgY29vcCkKIHsKICAgICBzd2l0Y2ggKGNvb3ApIHsKICAg
ICBjYXNlIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlNhbWVPcmlnaW46CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRleCBjZWU4MmEzZjA3MTMuLmJjMDk5
MmY0ZDIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBAIC04
NSw3ICs4NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKFVS
TCYgdXJsLCBjb25zdCBGb3JtRGF0YSYgZGF0YSwgY29uc3QKICAgICAgICAgdXJsLnNldFF1ZXJ5
KG1ha2VTdHJpbmcocXVlcnksICcmJywgYm9keSkpOwogfQogCi1BU0NJSUxpdGVyYWwgRm9ybVN1
Ym1pc3Npb246OkF0dHJpYnV0ZXM6Om1ldGhvZFN0cmluZyhNZXRob2QgbWV0aG9kLCBib29sIGRp
YWxvZ0VsZW1lbnRFbmFibGVkKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBGb3JtU3VibWlzc2lv
bjo6QXR0cmlidXRlczo6bWV0aG9kU3RyaW5nKE1ldGhvZCBtZXRob2QsIGJvb2wgZGlhbG9nRWxl
bWVudEVuYWJsZWQpCiB7CiAgICAgaWYgKGRpYWxvZ0VsZW1lbnRFbmFibGVkICYmIG1ldGhvZCA9
PSBNZXRob2Q6OkRpYWxvZykKICAgICAgICAgcmV0dXJuICJkaWFsb2ciX3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCmluZGV4IGUwYzQ4ZWYxZTQzYS4uYjdkNDMzOGQwZjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIE1ldGhvZCBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX21ldGhv
ZDsgfQogICAgICAgICBzdGF0aWMgTWV0aG9kIHBhcnNlTWV0aG9kVHlwZShjb25zdCBTdHJpbmcm
LCBib29sKTsKICAgICAgICAgdm9pZCB1cGRhdGVNZXRob2RUeXBlKGNvbnN0IFN0cmluZyYsIGJv
b2wpOwotICAgICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG1ldGhvZFN0cmluZyhNZXRob2QsIGJv
b2wpOworICAgICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBtZXRob2RTdHJpbmco
TWV0aG9kLCBib29sKTsKIAogICAgICAgICBjb25zdCBTdHJpbmcmIGFjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYWN0aW9uOyB9CiAgICAgICAgIHZvaWQgcGFyc2VBY3Rpb24oY29uc3QgU3RyaW5n
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IDRhMTE0NDI1ZTExNi4u
MGI2Zjc4MjczOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcApAQCAtNzgs
NyArNzgsNyBAQCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VB
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJgogICAgIGJvb2wgYWxsb3dGYWxsYmFj
a05hbWVzcGFjZU91dHNpZGVNYW5pZmVzdFBhdGggPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtYW5pZmVzdE1JTUVUeXBlLCBjYWNoZU1hbmlmZXN0TUlNRVR5cGUpOwogICAgIGF1dG8g
bWFuaWZlc3RQYXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlmZXN0VVJMKTsKIAotICAg
IGF1dG8gbWFuaWZlc3RTdHJpbmcgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlM
aXRlcmFsOjpmcm9tTGl0ZXJhbFVuc2FmZShjYWNoZU1hbmlmZXN0TUlNRVR5cGUpLCAiVVRGLTgi
KS0+ZGVjb2RlQW5kRmx1c2goZGF0YSwgbGVuZ3RoKTsKKyAgICBhdXRvIG1hbmlmZXN0U3RyaW5n
ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6OmZy
b21MaXRlcmFsVW5zYWZlKGNhY2hlTWFuaWZlc3RNSU1FVHlwZSwgc2l6ZW9mKGNhY2hlTWFuaWZl
c3RNSU1FVHlwZSkgLSAxKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7
CiAKICAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKG1hbmlmZXN0U3RyaW5nLCBb
Jl0oYXV0byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
PiB7CiAgICAgICAgIHVzaW5nIENoYXJhY3RlclR5cGUgPSB0eXBlbmFtZSBkZWNsdHlwZShidWZm
ZXIpOjpDaGFyYWN0ZXJUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCAyYWU3OTMwZjY2YzEuLjMxYWEzZDk5
MjgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
UmVxdWVzdDo6c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oY29uc3QgU3RyaW5nJiBkb21haW4p
CiAgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oZG9tYWlu
KTsKIH0KIAotc3RhdGljIGlubGluZSBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGFjY2VwdEhlYWRl
clZhbHVlRm9ySW1hZ2VSZXNvdXJjZShib29sIHN1cHBvcnRzVmlkZW9JbWFnZSkKK3N0YXRpYyBp
bmxpbmUgY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggYWNjZXB0SGVhZGVyVmFsdWVG
b3JJbWFnZVJlc291cmNlKGJvb2wgc3VwcG9ydHNWaWRlb0ltYWdlKQogewogI2lmIEhBVkUoV0VC
UCkgfHwgVVNFKFdFQlApCiAgICAgI2RlZmluZSBXRUJQX0hFQURFUl9QQVJUICJpbWFnZS93ZWJw
LCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggN2IzZWM3
OGYzZGFmLi4zZDcwNDdlODQ1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVi
dWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAg
ICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CiAgICAg
Zm9udC51cGRhdGUobnVsbHB0cik7CiAKLSAgICBhdXRvIGRyYXdMZWdlbmQgPSBbJl0gKGNvbnN0
IENvbG9yJiBjb2xvciwgQVNDSUlMaXRlcmFsIHRleHQpIHsKKyAgICBhdXRvIGRyYXdMZWdlbmQg
PSBbJl0gKGNvbnN0IENvbG9yJiBjb2xvciwgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0ZXh0KSB7
CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKICAgICAgICAgY29udGV4dC5m
aWxsUmVjdChsZWdlbmRSZWN0KTsKICAgICAgICAgZHJhd1JpZ2h0QWxpZ25lZFRleHQodGV4dCwg
Y29udGV4dCwgZm9udCwgbGVnZW5kUmVjdC5sb2NhdGlvbigpKTsKQEAgLTE5OCw3ICsxOTgsNyBA
QCB2b2lkIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJs
YXkmIHBhZ2VPdmVybGF5LCBHcmFwaGljcwogICAgIH07CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotICAgIGF1dG8gZHJhd0V2ZW50TGVnZW5kID0gWyZdIChBU0NJSUxpdGVyYWwgY29sb3Ip
IHsKKyAgICBhdXRvIGRyYXdFdmVudExlZ2VuZCA9IFsmXSAoQVNDSUlMaXRlcmFsV2l0aExlbmd0
aCBjb2xvcikgewogICAgICAgICBkcmF3TGVnZW5kKGNvbG9ycy5nZXQoU3RyaW5nVmlldyB7IGNv
bG9yIH0pLCBjb2xvcik7CiAgICAgfTsKICAgICBkcmF3RXZlbnRMZWdlbmQoInRvdWNoc3RhcnQi
X3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IDQwMmY0ZmFhYmIzNi4uM2NlNWY3
ZTkyMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCkBAIC00NTksMTMgKzQ1OSwxMyBA
QCBGcmFtZSYgRnJhbWVUcmVlOjp0b3AoKSBjb25zdAogICAgIHJldHVybiAqZnJhbWU7CiB9CiAK
LUFTQ0lJTGl0ZXJhbCBibGFua1RhcmdldEZyYW1lTmFtZSgpCitBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIGJsYW5rVGFyZ2V0RnJhbWVOYW1lKCkKIHsKICAgICByZXR1cm4gIl9ibGFuayJfczsKIH0K
IAogLy8gRklYTUU6IElzIGl0IGltcG9ydGFudCB0byBoYXZlIHRoaXM/IENhbid0IHdlIGp1c3Qg
dXNlIHRoZSBlbXB0eSBzdHJpbmcgZXZlcnl3aGVyZSB0aGlzIGlzIHVzZWQsIGluc3RlYWQ/Ci1B
U0NJSUxpdGVyYWwgc2VsZlRhcmdldEZyYW1lTmFtZSgpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IHNlbGZUYXJnZXRGcmFtZU5hbWUoKQogewogICAgIHJldHVybiAiX3NlbGYiX3M7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVRyZWUuaAppbmRleCA2NDBjYzllODczZTguLjZkOGVlNzk3Zjc4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC0xMDcsOCArMTA3LDggQEAgcHJpdmF0ZToKICAgICBtdXRh
YmxlIHVpbnQ2NF90IG1fZnJhbWVJREdlbmVyYXRvciB7IDAgfTsKIH07CiAKLUFTQ0lJTGl0ZXJh
bCBibGFua1RhcmdldEZyYW1lTmFtZSgpOwotQVNDSUlMaXRlcmFsIHNlbGZUYXJnZXRGcmFtZU5h
bWUoKTsKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggYmxhbmtUYXJnZXRGcmFtZU5hbWUoKTsKK0FT
Q0lJTGl0ZXJhbFdpdGhMZW5ndGggc2VsZlRhcmdldEZyYW1lTmFtZSgpOwogCiBib29sIGlzQmxh
bmtUYXJnZXRGcmFtZU5hbWUoU3RyaW5nVmlldyk7CiBib29sIGlzUGFyZW50VGFyZ2V0RnJhbWVO
YW1lKFN0cmluZ1ZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnkuaAppbmRl
eCBmOTJjMmYyMDQwNjcuLmRkM2ViODBkYTYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZUVudHJ5LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0
dWFsIFR5cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBB
U0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBjb25zdCA9IDA7CiAKICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxUeXBlPiBwYXJzZUVudHJ5VHlwZVN0cmluZyhjb25zdCBTdHJpbmcmIGVudHJ5VHlw
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNYXJrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTWFyay5oCmluZGV4IDg3YTU1ODVkMWJl
My4uOTZlMzQ1OTE0YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlTWFyay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNYXJrLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICB+UGVyZm9ybWFuY2VNYXJrKCk7CiAKICAgICBU
eXBlIHBlcmZvcm1hbmNlRW50cnlUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6TWFy
azsgfQotICAgIEFTQ0lJTGl0ZXJhbCBlbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
bWFyayJfczsgfQorICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZW50cnlUeXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIm1hcmsiX3M7IH0KIAogICAgIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1fc2VyaWFsaXplZERldGFpbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTWVhc3VyZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU1lYXN1cmUuaAppbmRleCAyZDJhYTNlZTEyOTUuLjJhNTQ1Y2M2ZjcxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1lYXN1cmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlTWVhc3VyZS5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6
CiAgICAgflBlcmZvcm1hbmNlTWVhc3VyZSgpOwogCiAgICAgVHlwZSBwZXJmb3JtYW5jZUVudHJ5
VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6Ok1lYXN1cmU7IH0KLSAgICBBU0NJSUxp
dGVyYWwgZW50cnlUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIm1lYXN1cmUiX3M7IH0KKyAg
ICBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJtZWFzdXJlIl9zOyB9CiAKICAgICBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3Nlcmlh
bGl6ZWREZXRhaWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU5hdmlnYXRpb25UaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uVGltaW5nLmgKaW5kZXggYzdjMWYzNmI0YzllLi5jMDNjMDRhZDkxMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgflBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWlu
ZygpOwogCiAgICAgVHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFR5cGU6Ok5hdmlnYXRpb247IH0KLSAgICBBU0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIm5hdmlnYXRpb24iX3M7IH0KKyAgICBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJuYXZpZ2F0aW9uIl9zOyB9
CiAKICAgICBkb3VibGUgdW5sb2FkRXZlbnRTdGFydCgpIGNvbnN0OwogICAgIGRvdWJsZSB1bmxv
YWRFdmVudEVuZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZVBhaW50VGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUGFp
bnRUaW1pbmcuaAppbmRleCA3MGY4MDg1ZjljYzcuLjYwOWUzOWE4NWViNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVBhaW50VGltaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVBhaW50VGltaW5nLmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJwYWludCJfczsgfQorICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGggZW50cnlUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gInBhaW50Il9zOyB9CiAgICAgVHlw
ZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OlBhaW50
OyB9CiAKICAgICB+UGVyZm9ybWFuY2VQYWludFRpbWluZygpID0gZGVmYXVsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgKaW5kZXggNjk0MzVl
ZmIwOGE2Li5hMjRlZWYyM2U2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VSZXNvdXJjZVRpbWluZy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBWZWN0b3I8UmVmPFBlcmZvcm1hbmNlU2VydmVyVGltaW5nPj4mIHNlcnZlclRpbWluZygpIGNv
bnN0IHsgcmV0dXJuIG1fc2VydmVyVGltaW5nOyB9CiAKICAgICBUeXBlIHBlcmZvcm1hbmNlRW50
cnlUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVHlwZTo6UmVzb3VyY2U7IH0KLSAgICBB
U0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gInJlc291cmNl
Il9zOyB9CisgICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAicmVzb3VyY2UiX3M7IH0KIAogcHJvdGVjdGVkOgogICAgIFBlcmZvcm1h
bmNlUmVzb3VyY2VUaW1pbmcoTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZXNvdXJjZVRpbWlu
ZyYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5
LmNwcAppbmRleCA1YTM0Y2VhMDU0YWMuLjMzODA2MWM5NjQ3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtNTUsNyArNTUsNyBA
QCB1c2luZyBBU0NJSUxpdGVyYWxTcGFuRnVuY3Rpb24gPSBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJh
bD4gKCopKCk7CiBzdGF0aWMgdm9pZCBhZGQoVVJMU2NoZW1lc01hcCYgc2V0LCBBU0NJSUxpdGVy
YWxTcGFuRnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBmdW5j
dGlvbigpKQotICAgICAgICBzZXQuYWRkKHNjaGVtZSk7CisgICAgICAgIHNldC5hZGQoU3RyaW5n
IHsgc2NoZW1lIH0pOwogfQogCiBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4g
bWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KEFTQ0lJTGl0ZXJhbFNwYW5GdW5jdGlvbiBmdW5j
dGlvbikKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBkaXNwbGF5
SXNvbGF0ZWRVUkxTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0CiBzdGF0
aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkKIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2NoZW1lcyB7Ci0gICAgICAgICJodHRwcyJf
cywKLSAgICAgICAgImFib3V0Il9zLAotICAgICAgICAiZGF0YSJfcywKLSAgICAgICAgIndzcyJf
cywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiaHR0cHMiX3MpLAorICAgICAg
ICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJhYm91dCJfcyksCisgICAgICAgIHN0YXRpY19j
YXN0PEFTQ0lJTGl0ZXJhbD4oImRhdGEiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxp
dGVyYWw+KCJ3c3MiX3MpLAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQotICAg
ICAgICAicmVzb3VyY2UiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oInJl
c291cmNlIl9zKSwKICNlbmRpZgogI2lmIEVOQUJMRShQREZKUykKLSAgICAgICAgIndlYmtpdC1w
ZGZqcy12aWV3ZXIiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIndlYmtp
dC1wZGZqcy12aWV3ZXIiX3MpLAogI2VuZGlmCiAgICAgfTsKICAgICByZXR1cm4gc2NoZW1lczsK
QEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygp
IFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIAogc3RhdGljIFNwYW48Y29u
c3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2NoZW1lcyB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBzdGQ6OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMz4gc2NoZW1lcyB7CiAgICAgICAgICJhYm91
dCJfcywKICAgICAgICAgImphdmFzY3JpcHQiX3MsCiAgICAgICAgIC8vIFRoaXMgaXMgYW4gaW50
ZW50aW9uYWwgZGlmZmVyZW5jZSBmcm9tIHRoZSBiZWhhdmlvciB0aGUgSFRNTCBzcGVjaWZpY2F0
aW9uIGNhbGxzIGZvci4KQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYg
c2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0
cgogCiBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5FbXB0eURvY3VtZW50
U2NoZW1lcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgeyAi
YWJvdXQiX3MgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8QVNDSUlMaXRlcmFs
LCAxPiBzY2hlbWVzIHsgImFib3V0Il9zIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAg
LTE5OCw3ICsxOTgsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0ZvcmJpZGRlbkZy
b21Eb21haW5SZWxheGF0aW9uKCkKIAogc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBi
dWlsdGluQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkKIHsKLSAgICBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6YXJyYXkgc2NoZW1lcyB7ICJibG9iIl9zIH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMT4gc2NoZW1lcyB7ICJibG9iIl9zIH07
CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgVVJM
U2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2lu
ZygpCiAKIHN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNPUlNFbmFibGVk
U2NoZW1lcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgeyAi
aHR0cCJfcywgImh0dHBzIl9zIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PEFT
Q0lJTGl0ZXJhbCwgMj4gc2NoZW1lcyB7ICJodHRwIl9zLCAiaHR0cHMiX3MgfTsKICAgICByZXR1
cm4gc2NoZW1lczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcAppbmRleCA1YWNiMjljZmI0NTkuLjNjMWU3MGRmM2ExNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3Ry
eTo6c3VwcG9ydGVkTm9uSW1hZ2VNSQogICAgICAgICAvLyBUaGlzIGNhbiByZXN1bHQgaW4gY3Jv
c3Mtc2l0ZSBzY3JpcHRpbmcgdnVsbmVyYWJpbGl0aWVzLgogICAgICAgICB9OwogICAgICAgICBm
b3IgKGF1dG8mIHR5cGUgOiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVBcnJheSkKLSAgICAg
ICAgICAgIHR5cGVzLmFkZCh0eXBlLmxpdGVyYWwpOworICAgICAgICAgICAgdHlwZXMuYWRkKFN0
cmluZyB7IHR5cGUubGl0ZXJhbCB9KTsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJM
RShNSFRNTCkKICAgICAgICAgQXJjaGl2ZUZhY3Rvcnk6OnJlZ2lzdGVyS25vd25BcmNoaXZlTUlN
RVR5cGVzKHR5cGVzKTsKICNlbmRpZgpAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBjb25zdCBI
YXNoTWFwPFN0cmluZywgVmVjdG9yPFN0cmluZz4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IGNvbW1vbk1pCiAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGNvbW1vbk1lZGlhVHlwZXMpIHsK
ICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCB0eXBlID0gcGFpci50eXBlOwogICAgICAgICAgICAg
QVNDSUlMaXRlcmFsIGV4dGVuc2lvbiA9IHBhaXIuZXh0ZW5zaW9uOwotICAgICAgICAgICAgbWFw
LmVuc3VyZShleHRlbnNpb24sIFt0eXBlLCBleHRlbnNpb25dIHsKKyAgICAgICAgICAgIG1hcC5l
bnN1cmUoU3RyaW5nIHsgZXh0ZW5zaW9uIH0sIFt0eXBlLCBleHRlbnNpb25dIHsKICAgICAgICAg
ICAgICAgICAvLyBGaXJzdCB0eXBlIGluIHRoZSB2ZWN0b3IgbXVzdCBhbHdheXMgYmUgdGhlIG9u
ZSBmcm9tIG1pbWVUeXBlRm9yRXh0ZW5zaW9uLAogICAgICAgICAgICAgICAgIC8vIHNvIHdlIGNh
biB1c2UgdGhlIG1hcCB3aXRob3V0IGFsc28gY2FsbGluZyBtaW1lVHlwZUZvckV4dGVuc2lvbiBl
YWNoIHRpbWUuCiAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc3lub255bXM7CkBAIC03
NjMsNyArNzYzLDcgQEAgc3RhdGljIFN0cmluZyBub3JtYWxpemVkSW1hZ2VNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIH07CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRB
cnJheU1hcCBhc3NvY2lhdGlvbk1hcCB7IG1pbWVUeXBlQXNzb2NpYXRpb25BcnJheSB9OwogICAg
IGF1dG8gbm9ybWFsaXplZFR5cGUgPSBhc3NvY2lhdGlvbk1hcC50cnlHZXQobWltZVR5cGUpOwot
ICAgIHJldHVybiBub3JtYWxpemVkVHlwZSA/ICpub3JtYWxpemVkVHlwZSA6IG1pbWVUeXBlOwor
ICAgIHJldHVybiBub3JtYWxpemVkVHlwZSA/IFN0cmluZyB7ICpub3JtYWxpemVkVHlwZSB9IDog
bWltZVR5cGU7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAKaW5kZXggOTdiMjA1N2Y2YTQwLi4zZDI3NTM1
YmJjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1p
bmdGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1Rp
bWluZ0Z1bmN0aW9uLmNwcApAQCAtMTk4LDEzICsxOTgsMTMgQEAgU3RyaW5nIFRpbWluZ0Z1bmN0
aW9uOjpjc3NUZXh0KCkgY29uc3QKICAgICBpZiAobV90eXBlID09IFRpbWluZ0Z1bmN0aW9uOjpD
dWJpY0JlemllckZ1bmN0aW9uKSB7CiAgICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gZG93bmNhc3Q8
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4oKnRoaXMpOwogICAgICAgICBpZiAoZnVuY3Rpb24u
eDEoKSA9PSAwLjI1ICYmIGZ1bmN0aW9uLnkxKCkgPT0gMC4xICYmIGZ1bmN0aW9uLngyKCkgPT0g
MC4yNSAmJiBmdW5jdGlvbi55MigpID09IDEuMCkKLSAgICAgICAgICAgIHJldHVybiAiZWFzZSI7
CisgICAgICAgICAgICByZXR1cm4gImVhc2UiX3M7CiAgICAgICAgIGlmIChmdW5jdGlvbi54MSgp
ID09IDAuNDIgJiYgIWZ1bmN0aW9uLnkxKCkgJiYgZnVuY3Rpb24ueDIoKSA9PSAxLjAgJiYgZnVu
Y3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICByZXR1cm4gImVhc2UtaW4iOworICAgICAg
ICAgICAgcmV0dXJuICJlYXNlLWluIl9zOwogICAgICAgICBpZiAoIWZ1bmN0aW9uLngxKCkgJiYg
IWZ1bmN0aW9uLnkxKCkgJiYgZnVuY3Rpb24ueDIoKSA9PSAwLjU4ICYmIGZ1bmN0aW9uLnkyKCkg
PT0gMS4wKQotICAgICAgICAgICAgcmV0dXJuICJlYXNlLW91dCI7CisgICAgICAgICAgICByZXR1
cm4gImVhc2Utb3V0Il9zOwogICAgICAgICBpZiAoZnVuY3Rpb24ueDEoKSA9PSAwLjQyICYmICFm
dW5jdGlvbi55MSgpICYmIGZ1bmN0aW9uLngyKCkgPT0gMC41OCAmJiBmdW5jdGlvbi55MigpID09
IDEuMCkKLSAgICAgICAgICAgIHJldHVybiAiZWFzZS1pbi1vdXQiOworICAgICAgICAgICAgcmV0
dXJuICJlYXNlLWluLW91dCJfczsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImN1YmljLWJl
emllcigiLCBmdW5jdGlvbi54MSgpLCAiLCAiLCBmdW5jdGlvbi55MSgpLCAiLCAiLCBmdW5jdGlv
bi54MigpLCAiLCAiLCBmdW5jdGlvbi55MigpLCAnKScpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMTJjZTNlOTZkZDMx
Li4zYTNjOTEwN2MzNjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ZvbnRDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Rm9udENhY2hlLmNwcApAQCAtMjQzLDcgKzI0Myw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRD
YWNoZTo6Y2FjaGVkRm9udFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRE
CiAgICAgICAgICAgICAvLyBXZSB3ZXJlIHVuYWJsZSB0byBmaW5kIGEgZm9udC4gV2UgaGF2ZSBh
IHNtYWxsIHNldCBvZiBmb250cyB0aGF0IHdlIGFsaWFzIHRvIG90aGVyIG5hbWVzLAogICAgICAg
ICAgICAgLy8gZS5nLiwgQXJpYWwvSGVsdmV0aWNhLCBDb3VyaWVyL0NvdXJpZXIgTmV3LCBldGMu
IFRyeSBsb29raW5nIHVwIHRoZSBmb250IHVuZGVyIHRoZSBhbGlhc2VkIG5hbWUuCiAgICAgICAg
ICAgICBpZiAoYXV0byBhbHRlcm5hdGVOYW1lID0gYWx0ZXJuYXRlRmFtaWx5TmFtZShmYW1pbHlO
YW1lKSkgewotICAgICAgICAgICAgICAgIGF1dG8qIGFsdGVybmF0ZURhdGEgPSBjYWNoZWRGb250
UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgKmFsdGVybmF0ZU5hbWUsIGZvbnRDcmVhdGlv
bkNvbnRleHQsIHRydWUpOworICAgICAgICAgICAgICAgIGF1dG8qIGFsdGVybmF0ZURhdGEgPSBj
YWNoZWRGb250UGxhdGZvcm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgU3RyaW5nIHsgKmFsdGVybmF0
ZU5hbWUgfSwgZm9udENyZWF0aW9uQ29udGV4dCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgLy8g
TG9vayB1cCB0aGUga2V5IGluIHRoZSBoYXNoIHRhYmxlIGFnYWluIGFzIHRoZSBwcmV2aW91cyBp
dGVyYXRvciBtYXkgaGF2ZQogICAgICAgICAgICAgICAgIC8vIGJlZW4gaW52YWxpZGF0ZWQgYnkg
dGhlIHJlY3Vyc2l2ZSBjYWxsIHRvIGNhY2hlZEZvbnRQbGF0Zm9ybURhdGEoKS4KICAgICAgICAg
ICAgICAgICBpdCA9IG1fZm9udERhdGFDYWNoZXMtPnBsYXRmb3JtRGF0YS5maW5kKGtleSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCmluZGV4IGQ4
NDgwNWYyMzUxZS4uYTNjZWQwMzEwYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9B
VkFzc2V0TUlNRVR5cGVDYWNoZS5tbQpAQCAtMTUyLDcgKzE1Miw4IEBAIHZvaWQgQVZBc3NldE1J
TUVUeXBlQ2FjaGU6OmluaXRpYWxpemVDYWNoZShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5z
ZW5zaXRpdmVICiAjaWYgRU5BQkxFKFdFQk1fRk9STUFUX1JFQURFUikKICAgICBpZiAoU291cmNl
QnVmZmVyUGFyc2VyV2ViTTo6aXNXZWJNRm9ybWF0UmVhZGVyQXZhaWxhYmxlKCkpIHsKICAgICAg
ICAgYXV0byB0eXBlcyA9IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZE1JTUVUeXBl
cygpOwotICAgICAgICBjYWNoZS5hZGQodHlwZXMuYmVnaW4oKSwgdHlwZXMuZW5kKCkpOworICAg
ICAgICBmb3IgKGF1dG8mIHR5cGUgOiB0eXBlcykKKyAgICAgICAgICAgIGNhY2hlLmFkZChTdHJp
bmcgeyB0eXBlIH0pOwogICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBiODY2Yzcx
NzE4Y2IuLmZjNjc0YjlhZWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAg
c3RhdGljIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIGdldFZhbHVlRnVu
Y3Rpb25OYW1lRm9yVHJhbnNmb3JtT3AKICAgICB9CiB9CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwg
cHJvcGVydHlJZFRvU3RyaW5nKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKK3N0YXRpYyBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHByb3BlcnR5SWRUb1N0cmluZyhBbmltYXRlZFByb3BlcnR5
SUQgcHJvcGVydHkpCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgIGNhc2UgQW5pbWF0
ZWRQcm9wZXJ0eVRyYW5zbGF0ZToKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgQVNDSUlMaXRl
cmFsIHByb3BlcnR5SWRUb1N0cmluZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAogc3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3Rl
cHNUaW1pbmdGdW5jdGlvbihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25z
dCBBbmltYXRpb24qIGFuaW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAx
NTczZTE2NjA0MzEuLmFkYTAyMzUxYjEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29h
Lm1tCkBAIC0zNzAsNyArMzcwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0
Zm9ybUluaXRpYWxpemUoKQogICAgIGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICBHTF9FbmFi
bGUoR3JhcGhpY3NDb250ZXh0R0w6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIAot
ICAgIFZlY3RvcjxBU0NJSUxpdGVyYWwsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBWZWN0
b3I8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgND4gcmVxdWlyZWRFeHRlbnNpb25zOwogICAgIGlm
IChtX2lzRm9yV2ViR0wyKSB7CiAgICAgICAgIC8vIEZvciBXZWJHTCAyLjAgb2NjbHVzaW9uIHF1
ZXJpZXMgdG8gd29yay4KICAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhU
X29jY2x1c2lvbl9xdWVyeV9ib29sZWFuIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2Vi
TS5jcHAKaW5kZXggZDhlNjYwN2Y4OWNkLi5jYWQyNWM4YjEzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1
ZmZlclBhcnNlcldlYk0uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVt
cGxhdGU8dHlwZW5hbWU+IHN0cnVjdCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3Qg
TG9nQXJndW1lbnQ8d2VibTo6VHJhY2tUeXBlPiB7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0
b1N0cmluZyh3ZWJtOjpUcmFja1R5cGUgdHlwZSkKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCB0b1N0cmluZyh3ZWJtOjpUcmFja1R5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3
aXRjaCAodHlwZSkgewogICAgICAgICBjYXNlIHdlYm06OlRyYWNrVHlwZTo6a1ZpZGVvOiByZXR1
cm4gIlZpZGVvIl9zOwpAQCAtNzMsNyArNzMsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1
bWVudDx3ZWJtOjpUcmFja1R5cGU+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3Vt
ZW50PHdlYm06OklkPiB7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0b1N0cmluZyh3ZWJtOjpJ
ZCBpZCkKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0b1N0cmluZyh3ZWJtOjpJ
ZCBpZCkKICAgICB7CiAgICAgICAgIHN3aXRjaCAoaWQpIHsKICAgICAgICAgY2FzZSB3ZWJtOjpJ
ZDo6a0VibWw6IHJldHVybiAiRWJtbCJfczsKQEAgLTUwMywxMCArNTAzLDEwIEBAIFNwYW48Y29u
c3QgQVNDSUlMaXRlcmFsPiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRNSU1FVHlw
ZXMoKQogI2Vsc2UKICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgdHlwZXMgewogI2lm
IEVOQUJMRShWUDkpCi0gICAgICAgICJ2aWRlby93ZWJtIl9zLAorICAgICAgICBzdGF0aWNfY2Fz
dDxBU0NJSUxpdGVyYWw+KCJ2aWRlby93ZWJtIl9zKSwKICNlbmRpZgogI2lmIEVOQUJMRShWT1JC
SVMpIHx8IEVOQUJMRShPUFVTKQotICAgICAgICAiYXVkaW8vd2VibSJfcywKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiYXVkaW8vd2VibSJfcyksCiAjZW5kaWYKICAgICB9Owog
ICAgIHJldHVybiB0eXBlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5jcHAKaW5kZXggNjI5ZjczNGZhNThh
Li5hMDY4MjY2ZTk3YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwCkBAIC02Nyw3ICs2Nyw3IEBA
IEF0b21TdHJpbmcgRmlsdGVyRnVuY3Rpb246OmZpbHRlck5hbWUoVHlwZSBmaWx0ZXJUeXBlKQog
ICAgIHN0YXRpYyBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgbmFtZXNNYXAgeyBuYW1lc0FycmF5
IH07CiAgICAgCiAgICAgQVNTRVJUKG5hbWVzTWFwLnRyeUdldChmaWx0ZXJUeXBlKSk7Ci0gICAg
cmV0dXJuIG5hbWVzTWFwLmdldChmaWx0ZXJUeXBlLCAiIl9zKTsKKyAgICByZXR1cm4gQXRvbVN0
cmluZyB7IG5hbWVzTWFwLmdldChmaWx0ZXJUeXBlLCAiIl9zKSB9OwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFz
dGVib2FyZE1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFj
Lm1tCmluZGV4IGEyYzI1MGFhMmJlZi4uMGU2YzJjMmFlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQpAQCAtNTU2LDcgKzU1Niw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfREVDTEFSQVRJT05TX0VORAogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWRJbWFnZShi
dWZmZXIucmVsZWFzZU5vbk51bGwoKSwgbWltZVR5cGUpOworICAgICAgICByZXR1cm4gcmVhZGVy
LnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5vbk51bGwoKSwgU3RyaW5nIHsgbWltZVR5cGUgfSk7
CiAgICAgfTsKIAogICAgIFZlY3RvcjxJbWFnZVJlYWRpbmdJbmZvLCA2PiB0cmFuc2NvZGVkSW1h
Z2VUeXBlc1RvUmVhZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQ
UGFyc2Vycy5jcHAKaW5kZXggZjNmODdhNGY3ZTliLi4zMTAyYjQzMmY0MGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC05OTUsNyAr
OTk1LDcgQEAgU3RyaW5nIG5vcm1hbGl6ZUhUVFBNZXRob2QoY29uc3QgU3RyaW5nJiBtZXRob2Qp
CiAgICAgICAgICAgICAvLyBEb24ndCBib3RoZXIgYWxsb2NhdGluZyBhIG5ldyBzdHJpbmcgaWYg
aXQncyBhbHJlYWR5IGFsbCB1cHBlcmNhc2UuCiAgICAgICAgICAgICBpZiAobWV0aG9kID09IHZh
bHVlKQogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOwor
ICAgICAgICAgICAgcmV0dXJuIFN0cmluZyB7IHZhbHVlIH07CiAgICAgICAgIH0KICAgICB9CiAg
ICAgcmV0dXJuIG1ldGhvZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKaW5kZXggMjM0NTUyNWIyYzgwLi4xMTdjNGQ0OWQyOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzM4
LDcgKzMzMzgsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlv
bihQYXR0ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBGb250Q2FzY2Fk
ZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CiAgICAgICAgIGZvbnQudXBk
YXRlKG51bGxwdHIpOwogCi0gICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4oZGVzY3Jp
cHRpb24ubmFtZSk7CisgICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4oU3RyaW5nIHsg
ZGVzY3JpcHRpb24ubmFtZSB9KTsKICAgICAgICAgaW1hZ2VDb250ZXh0LnNldEZpbGxDb2xvcihk
ZXNjcmlwdGlvbi5maWxsQ29sb3IpOwogCiAgICAgICAgIGNvbnN0ZXhwciBmbG9hdCB0ZXh0R2Fw
ID0gNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA1NjcwYjZiZmE2N2Uu
LmYxNWE1YTY0NDExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjYz
NSw3ICs2NjM1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JDb21tYW5kc1Nob3VsZEZhaWwoYm8KIH0KICNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU0VTU0lPTikKIAotY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdHJpbmcoUGFydGlh
bE9yZGVyaW5nIG9yZGVyaW5nKQorY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggc3Ry
aW5nKFBhcnRpYWxPcmRlcmluZyBvcmRlcmluZykKIHsKICAgICBpZiAoaXNfbHQob3JkZXJpbmcp
KQogICAgICAgICByZXR1cm4gImxlc3MiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAppbmRleCA4OTVkYzlkMDg1NTAuLmU3NzVlOWYzYjEzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCkBAIC01MjMsNyArNTIzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
WE1MSHR0cFJlcXVlc3Q6OnNlbmQoQmxvYiYgYm9keSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSB3b3VsZCBsaWtlIHRvIHN1cHBvcnQgcG9zdGluZyBCbG9icyB0byBub24taHR0cCBVUkxzIChl
LmcuIGN1c3RvbSBVUkwgc2NoZW1lcykKICAgICAgICAgICAgIC8vIGJ1dCBiZWNhdXNlIG9mIHRo
ZSBhcmNoaXRlY3R1cmUgb2YgYmxvYi1oYW5kbGluZyB0aGF0IHdpbGwgcmVxdWlyZSBhIGZhaXIg
YW1vdW50IG9mIHdvcmsuCiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCBj
b25zb2xlTWVzc2FnZSB7ICJQT1NUIG9mIGEgQmxvYiB0byBub24tSFRUUCBwcm90b2NvbHMgaW4g
WE1MSHR0cFJlcXVlc3Quc2VuZCgpIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC4iX3MgfTsKKyAg
ICAgICAgICAgIGF1dG8gY29uc29sZU1lc3NhZ2UgPSAiUE9TVCBvZiBhIEJsb2IgdG8gbm9uLUhU
VFAgcHJvdG9jb2xzIGluIFhNTEh0dHBSZXF1ZXN0LnNlbmQoKSBpcyBjdXJyZW50bHkgdW5zdXBw
b3J0ZWQuIl9zOwogICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBjb25z
b2xlTWVzc2FnZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZXF1
ZXN0KCk7CkBAIC01NjUsNyArNTY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVl
c3Q6OnNlbmQoRE9NRm9ybURhdGEmIGJvZHkpCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBS
ZXF1ZXN0OjpzZW5kKEFycmF5QnVmZmVyJiBib2R5KQogewotICAgIEFTQ0lJTGl0ZXJhbCBjb25z
b2xlTWVzc2FnZSB7ICJBcnJheUJ1ZmZlciBpcyBkZXByZWNhdGVkIGluIFhNTEh0dHBSZXF1ZXN0
LnNlbmQoKS4gVXNlIEFycmF5QnVmZmVyVmlldyBpbnN0ZWFkLiJfcyB9OworICAgIGF1dG8gY29u
c29sZU1lc3NhZ2UgPSAiQXJyYXlCdWZmZXIgaXMgZGVwcmVjYXRlZCBpbiBYTUxIdHRwUmVxdWVz
dC5zZW5kKCkuIFVzZSBBcnJheUJ1ZmZlclZpZXcgaW5zdGVhZC4iX3M7CiAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIHNlbmRCeXRl
c0RhdGEoYm9keS5kYXRhKCksIGJvZHkuYnl0ZUxlbmd0aCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IDMyMmUzYmUwZjc1ZC4uMDcyM2JlZTZjZDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTcwOSw3ICs3MDksNyBAQCBzdGF0
aWMgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgRnVuY3Rp
b25NYXBWYWx1ZT4gY3JlYXRlRgogCiAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhv
b2RIYXNoTWFwPFN0cmluZywgRnVuY3Rpb25NYXBWYWx1ZT4gbWFwOwogICAgIGZvciAoYXV0byYg
ZnVuY3Rpb24gOiBmdW5jdGlvbnMpCi0gICAgICAgIG1hcC5hZGQoZnVuY3Rpb24ubmFtZSwgZnVu
Y3Rpb24uZnVuY3Rpb24pOworICAgICAgICBtYXAuYWRkKFN0cmluZyB7IGZ1bmN0aW9uLm5hbWUg
fSwgZnVuY3Rpb24uZnVuY3Rpb24pOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhQYXJzZXIuY3BwCmluZGV4IGUzMTU2NWViZTc4ZC4uZThmOWNiOWNhM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFBhcnNlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIE1lbW9yeUNv
bXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFN0ZXA6OkF4aXM+IGNyZWF0
ZUF4aXNOYW0KICAgICB9OwogICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aE1hcDxTdHJpbmcsIFN0ZXA6OkF4aXM+IG1hcDsKICAgICBmb3IgKGF1dG8mIGF4aXNOYW1lIDog
YXhpc05hbWVMaXN0KQotICAgICAgICBtYXAuYWRkKGF4aXNOYW1lLm5hbWUsIGF4aXNOYW1lLmF4
aXMpOworICAgICAgICBtYXAuYWRkKFN0cmluZyB7IGF4aXNOYW1lLm5hbWUgfSwgYXhpc05hbWUu
YXhpcyk7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggNTE2YTJmNTAyY2M5Li41MzRk
Y2FmYTRjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIGNvbnN0IE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgUmVz
b3VyCiAKIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6c29ydGVkVGFibGVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6
YXJyYXkgc29ydGVkVGFibGVzIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8QVND
SUlMaXRlcmFsLCAxMz4gc29ydGVkVGFibGVzIHsKICAgICAgICAgIk9ic2VydmVkRG9tYWlucyJf
cywKICAgICAgICAgIlRvcExldmVsRG9tYWlucyJfcywKICAgICAgICAgIlN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWlucyJfcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKaW5kZXggMThmMTFkMzM5ZTFlLi43MTk2YzRkMDQx
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGls
aXRpZXMuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBEYXRhYmFzZVV0aWxpdGllczo6bWln
cmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKIAogICAgIC8vIE1haW50YWluIHRoZSBv
cmRlciBvZiB0YWJsZXMgdG8gbWFrZSBzdXJlIHRoZSBPYnNlcnZlZERvbWFpbnMgdGFibGUgaXMg
Y3JlYXRlZCBmaXJzdC4gT3RoZXIgdGFibGVzIGhhdmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMg
cmVmZXJlbmNpbmcgaXQuCiAgICAgZm9yIChhdXRvJiB0YWJsZSA6IHNvcnRlZFRhYmxlcygpKSB7
Ci0gICAgICAgIGF1dG8gbWlncmF0ZVRhYmxlRGF0YSA9IGluc2VydERpc3RpbmN0VmFsdWVzSW5U
YWJsZVN0YXRlbWVudChtX2RhdGFiYXNlLCB0YWJsZSk7CisgICAgICAgIGF1dG8gbWlncmF0ZVRh
YmxlRGF0YSA9IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudChtX2RhdGFiYXNl
LCBTdHJpbmcgeyB0YWJsZSB9KTsKICAgICAgICAgaWYgKCFtaWdyYXRlVGFibGVEYXRhIHx8IG1p
Z3JhdGVUYWJsZURhdGEtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgdHJh
bnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZVV0aWxpdGllczo6bWlncmF0ZURhdGFU
b05ld1RhYmxlc0lmTmVjZXNzYXJ5ICh0YWJsZSAlcykgZmFpbGVkIHRvIG1pZ3JhdGUgc2NoZW1h
LCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIHRhYmxlLmNoYXJhY3RlcnMoKSwgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAppbmRleCBjMDkwY2JlNTcx
ODQuLmFkYTkxZjhkOGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmlu
ZywgVGFibGVBbmRJbmRleFBhaXI+JiBEYXRhYmEKIAogU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+
IERhdGFiYXNlOjpzb3J0ZWRUYWJsZXMoKQogewotICAgIHN0YXRpYyBzdGQ6OmFycmF5IHNvcnRl
ZFRhYmxlcyB7CisgICAgc3RhdGljIHN0ZDo6YXJyYXk8QVNDSUlMaXRlcmFsLCAzPiBzb3J0ZWRU
YWJsZXMgewogICAgICAgICAiUENNT2JzZXJ2ZWREb21haW5zIl9zLAogICAgICAgICAiVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MsCiAgICAgICAgICJBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDJm
YjhhYzU3OGYzZC4uYjdlZDVlODQxY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBjb25zdGV4cHIg
YXV0byBvcmlnaW5GaWxlTmFtZSA9ICJvcmlnaW4iX3M7CitzdGF0aWMgY29uc3RleHByIEFTQ0lJ
TGl0ZXJhbCBvcmlnaW5GaWxlTmFtZSA9ICJvcmlnaW4iX3M7CiBlbnVtIGNsYXNzIE9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2wgeyBCZXN0RWZmb3J0LCBQZXJz
aXN0ZW50IH07CiAKIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0IHsK
QEAgLTM5MSw3ICszOTEsNyBAQCBTdHJpbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VC
dWNrZXQ6OnJlc29sdmVkSURCU3RvcmFnZVBhdGgoKQogCiBTdHJpbmcgT3JpZ2luU3RvcmFnZU1h
bmFnZXI6Om9yaWdpbkZpbGVJZGVudGlmaWVyKCkKIHsKLSAgICByZXR1cm4gb3JpZ2luRmlsZU5h
bWU7CisgICAgcmV0dXJuIFN0cmluZyB7IG9yaWdpbkZpbGVOYW1lIH07CiB9CiAKIHN0YXRpYyBS
ZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNvbnN0
IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwg
UXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcu
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAppbmRleCAw
YmUzOTVjMWMzN2MuLmU4OWMyNTA1NjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9KU0lQQ0JpbmRpbmcuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewog
Ci1zdGF0aWMgSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkU3RyaW5nQXJndW1lbnRWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IEFTQ0lJTGl0ZXJhbCB0eXBlKQorc3RhdGljIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2Rl
ZFN0cmluZ0FyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHR5cGUpCiB7CiAgICAg
YXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQppbmRleCA0N2U5ZGNhNTAwYjEuLjFmZTY4NmVhMGUyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5MjIsNyArMjkyMiw3IEBA
IHN0YXRpYyBjb25zdCBTZWxlY3Rvck5hbWVNYXAmIHNlbGVjdG9yRXhjZXB0aW9uTWFwKCkKICAg
ICB9OwogCiAgICAgZm9yIChhdXRvJiBuYW1lIDogbmFtZXMpCi0gICAgICAgIG1hcC5nZXQoKS5h
ZGQobmFtZS5zZWxlY3RvciwgbmFtZS5jb21tYW5kTmFtZSk7CisgICAgICAgIG1hcC5nZXQoKS5h
ZGQobmFtZS5zZWxlY3RvciwgU3RyaW5nIHsgbmFtZS5jb21tYW5kTmFtZSB9KTsKIAogICAgIHJl
dHVybiBtYXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAxYzdhZDQ0YzI0NmEuLmEyZTUxYjNkNmJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC04MTkyLDMxICs4MTkyLDMxIEBAIHN0YXRpYyBTcGFuPGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gZ3B1SU9LaXRDbGFzc2VzKCkKIHsKICAgICBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6YXJyYXkgc2VydmljZXMgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAg
ICJBR1hEZXZpY2VVc2VyQ2xpZW50Il9zLAotICAgICAgICAiSU9HUFUiX3MsCi0gICAgICAgICJJ
T1N1cmZhY2VSb290VXNlckNsaWVudCJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRl
cmFsPigiQUdYRGV2aWNlVXNlckNsaWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJ
TGl0ZXJhbD4oIklPR1BVIl9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigi
SU9TdXJmYWNlUm9vdFVzZXJDbGllbnQiX3MpLAogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICAgICAgIkFHUE1DbGllbnQiX3MsCi0gICAgICAg
ICJBcHBsZUdyYXBoaWNzQ29udHJvbENsaWVudCJfcywKLSAgICAgICAgIkFwcGxlR3JhcGhpY3NQ
b2xpY3lDbGllbnQiX3MsCi0gICAgICAgICJBcHBsZUludGVsTUVVc2VyQ2xpZW50Il9zLAotICAg
ICAgICAiQXBwbGVNR1BVUG93ZXJDb250cm9sQ2xpZW50Il9zLAotICAgICAgICAiQXBwbGVTTkJG
QlVzZXJDbGllbnQiX3MsCi0gICAgICAgICJBcHBsZVVwc3RyZWFtVXNlckNsaWVudCJfcywKLSAg
ICAgICAgIkF1ZGlvQVVVQyJfcywKLSAgICAgICAgIklPQWNjZWxlcmF0aW9uVXNlckNsaWVudCJf
cywKLSAgICAgICAgIklPQWNjZWxlcmF0b3IiX3MsCi0gICAgICAgICJJT0F1ZGlvQ29udHJvbFVz
ZXJDbGllbnQiX3MsCi0gICAgICAgICJJT0F1ZGlvRW5naW5lVXNlckNsaWVudCJfcywKLSAgICAg
ICAgIklPU3VyZmFjZVJvb3RVc2VyQ2xpZW50Il9zLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJ
SUxpdGVyYWw+KCJBR1BNQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRl
cmFsPigiQXBwbGVHcmFwaGljc0NvbnRyb2xDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2Fz
dDxBU0NJSUxpdGVyYWw+KCJBcHBsZUdyYXBoaWNzUG9saWN5Q2xpZW50Il9zKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQXBwbGVJbnRlbE1FVXNlckNsaWVudCJfcyksCisg
ICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIkFwcGxlTUdQVVBvd2VyQ29udHJvbENs
aWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIkFwcGxlU05CRkJV
c2VyQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQXBwbGVV
cHN0cmVhbVVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+
KCJBdWRpb0FVVUMiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJJT0Fj
Y2VsZXJhdGlvblVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVy
YWw+KCJJT0FjY2VsZXJhdG9yIl9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFs
PigiSU9BdWRpb0NvbnRyb2xVc2VyQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVND
SUlMaXRlcmFsPigiSU9BdWRpb0VuZ2luZVVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNf
Y2FzdDxBU0NJSUxpdGVyYWw+KCJJT1N1cmZhY2VSb290VXNlckNsaWVudCJfcyksCiAjZW5kaWYK
ICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgYWxzbyBuZWVkZWQgaW4gUExBVEZPUk0oTUFDQ0FU
QUxZU1QpPwogI2lmIFBMQVRGT1JNKE1BQykgJiYgQ1BVKEFSTTY0KQotICAgICAgICAiSU9Nb2Jp
bGVGcmFtZWJ1ZmZlclVzZXJDbGllbnQiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0
ZXJhbD4oIklPTW9iaWxlRnJhbWVidWZmZXJVc2VyQ2xpZW50Il9zKSwKICNlbmRpZgogI2lmIChQ
TEFURk9STShNQUMpICYmIENQVShBUk02NCkpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
ICAgICJJT1N1cmZhY2VBY2NlbGVyYXRvckNsaWVudCJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8
QVNDSUlMaXRlcmFsPigiSU9TdXJmYWNlQWNjZWxlcmF0b3JDbGllbnQiX3MpLAogI2VuZGlmCiAg
ICAgfTsKICAgICByZXR1cm4gc2VydmljZXM7CkBAIC04MjI1LDkgKzgyMjUsOSBAQCBzdGF0aWMg
U3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGdwdUlPS2l0Q2xhc3NlcygpCiBzdGF0aWMgU3Bhbjxj
b25zdCBBU0NJSUxpdGVyYWw+IGdwdU1hY2hTZXJ2aWNlcygpCiB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBzdGQ6OmFycmF5IHNlcnZpY2VzIHsKLSAgICAgICAgImNvbS5hcHBsZS5NVExDb21waWxl
clNlcnZpY2UiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oImNvbS5hcHBs
ZS5NVExDb21waWxlclNlcnZpY2UiX3MpLAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCi0gICAgICAgICJjb20uYXBwbGUuY3Ztc1NlcnYiX3MsCisgICAgICAgIHN0
YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oImNvbS5hcHBsZS5jdm1zU2VydiJfcyksCiAjZW5kaWYK
ICAgICB9OwogICAgIHJldHVybiBzZXJ2aWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggZWUxNjQ1ZWY0ZTBjLi4zZTlh
OGQ1MjBmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwCkBAIC02MSwxMSArNjEsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IG5hbWVzcGFjZSBJUENUZXN0aW5nQVBJIHsKIAotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2Nl
c3NUYXJnZXROYW1lVUkgPSAiVUkiX3M7CitzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBw
cm9jZXNzVGFyZ2V0TmFtZVVJID0gIlVJIl9zOwogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLXN0
YXRpYyBjb25zdGV4cHIgYXV0byBwcm9jZXNzVGFyZ2V0TmFtZUdQVSA9ICJHUFUiX3M7CitzdGF0
aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBwcm9jZXNzVGFyZ2V0TmFtZUdQVSA9ICJHUFUiX3M7
CiAjZW5kaWYKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9jZXNzVGFyZ2V0TmFtZU5ldHdvcmtp
bmcgPSAiTmV0d29ya2luZyJfczsKK3N0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHByb2Nl
c3NUYXJnZXROYW1lTmV0d29ya2luZyA9ICJOZXR3b3JraW5nIl9zOwogCiBzdGF0aWMgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZGVzdGluYXRpb25JREZyb21Bcmd1bWVudChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZVJlZiwgSlNWYWx1ZVJlZiopOwogc3RhdGljIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IG1lc3NhZ2VJREZyb21Bcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZVJlZiwgSlNWYWx1ZVJlZiopOwpAQCAtMjA2NSwxMyArMjA2NSwxMyBAQCBKU1ZhbHVlUmVm
IEpTSVBDOjpwcm9jZXNzVGFyZ2V0cyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgSgogICAgIEpTQzo6SlNPYmplY3QqIHByb2Nlc3NUYXJnZXRzT2JqZWN0ID0g
SlNDOjpjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwog
ICAgIGludCBpbmRleCA9IDA7Ci0gICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgcHJvY2Vzc1Rhcmdl
dE5hbWVVSSkpOworICAgIHByb2Nlc3NUYXJnZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNTdHJpbmcodm0sIFN0cmluZyB7IHByb2Nlc3NUYXJn
ZXROYW1lVUkgfSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpKTsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgcHJvY2Vz
c1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlND
Ojpqc1N0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVHUFUpKTsKKyAgICBwcm9jZXNzVGFyZ2V0
c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBKU0M6OmpzU3Ry
aW5nKHZtLCBTdHJpbmcgeyBwcm9jZXNzVGFyZ2V0TmFtZUdQVSB9KSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwogI2VuZGlm
Ci0gICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwg
aW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVOZXR3b3JraW5nKSk7
CisgICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwg
aW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nIHsgcHJvY2Vzc1RhcmdldE5hbWVOZXR3
b3JraW5nIH0pKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KSk7CiAgICAgcmV0dXJuIHRvUmVmKHZtLCBwcm9jZXNzVGFyZ2V0c09i
amVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCmluZGV4IDFhNzg5Zjk5ZDg5Zi4uMzkzMGYwYzk0ZTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
MjMwLDcgKzIzMCw3IEBAIHN0YXRpYyBTdHJpbmcgY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUo
Y29uc3QgU3RyaW5nJiBzZWxlY3Rvck5hbWUpCiAgICAgfTsKICAgICBzdGF0aWMgY29uc3RleHBy
IFNvcnRlZEFycmF5TWFwIG1hcCB7IHNlbGVjdG9yRXhjZXB0aW9ucyB9OwogICAgIGlmIChhdXRv
IGNvbW1hbmROYW1lID0gbWFwLnRyeUdldChzZWxlY3Rvck5hbWUpKQotICAgICAgICByZXR1cm4g
KmNvbW1hbmROYW1lOworICAgICAgICByZXR1cm4gU3RyaW5nIHsgKmNvbW1hbmROYW1lIH07CiAK
ICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGNvbG9uLgogICAgIC8vIE5vIG5lZWQgdG8gY2Fw
aXRhbGl6ZSB0aGUgY29tbWFuZCBuYW1lIHNpbmNlIEVkaXRvciBjb21tYW5kIG5hbWVzIGFyZSBu
b3QgY2FzZSBzZW5zaXRpdmUuCg==
</data>
<flag name="commit-queue"
          id="483463"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455464</attachid>
            <date>2022-03-22 18:43:17 -0700</date>
            <delta_ts>2022-03-22 18:46:35 -0700</delta_ts>
            <desc>Geoff&apos;s alternative proposal</desc>
            <filename>238162_s_suffix_no_strlen_geoff_proposal_wip2.patch</filename>
            <type>text/plain</type>
            <size>150826</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZWYwZmY2MmE3OGEzLi42Nzkx
ZmFlYzI0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDAsOSAr
MTAwLDkgQEAgc3RhdGljIFQgcGFyc2VCcmVha3BvaW50T3B0aW9ucyhQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNPTjoKICAgICBzaXplX3QgaWdub3JlQ291bnQg
PSAwOwogCiAgICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgY29uZGl0aW9uID0gb3B0aW9ucy0+
Z2V0U3RyaW5nKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmNvbmRpdGlv
bktleSk7CisgICAgICAgIGNvbmRpdGlvbiA9IG9wdGlvbnMtPmdldFN0cmluZyhTdHJpbmcgeyBQ
cm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjpjb25kaXRpb25LZXkgfSk7CiAK
LSAgICAgICAgYXV0byBhY3Rpb25zUGF5bG9hZCA9IG9wdGlvbnMtPmdldEFycmF5KFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmFjdGlvbnNLZXkpOworICAgICAgICBhdXRv
IGFjdGlvbnNQYXlsb2FkID0gb3B0aW9ucy0+Z2V0QXJyYXkoU3RyaW5nIHsgUHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6YWN0aW9uc0tleSB9KTsKICAgICAgICAgaWYgKGF1
dG8gY291bnQgPSBhY3Rpb25zUGF5bG9hZCA/IGFjdGlvbnNQYXlsb2FkLT5sZW5ndGgoKSA6IDAp
IHsKICAgICAgICAgICAgIGFjdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CiAK
QEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgVCBwYXJzZUJyZWFrcG9pbnRPcHRpb25zKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGF1dG8gYWN0aW9uVHlwZVN0cmluZyA9IGFjdGlvbk9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6dHlwZUtleSk7CisgICAgICAgICAgICAgICAg
YXV0byBhY3Rpb25UeXBlU3RyaW5nID0gYWN0aW9uT2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsg
UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjp0eXBlS2V5IH0pOwogICAgICAg
ICAgICAgICAgIGlmICghYWN0aW9uVHlwZVN0cmluZykgewogICAgICAgICAgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHR5cGUgZm9yIGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEyNSwyMCArMTI1LDIwIEBAIHN0
YXRpYyBUIHBhcnNlQnJlYWtwb2ludE9wdGlvbnMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgUmVmUHRyPEpTT046CiAKICAgICAgICAgICAgICAgICBKU0M6OkJyZWFrcG9pbnQ6
OkFjdGlvbiBhY3Rpb24oKmFjdGlvblR5cGUpOwogCi0gICAgICAgICAgICAgICAgYWN0aW9uLmRh
dGEgPSBhY3Rpb25PYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9p
bnRBY3Rpb246OmRhdGFLZXkpOworICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gYWN0aW9u
T2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
QWN0aW9uOjpkYXRhS2V5IH0pOwogCiAgICAgICAgICAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBp
ZGVudGlmaWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBz
YW1wbGVzCiAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0aXBs
ZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgotICAg
ICAgICAgICAgICAgIGFjdGlvbi5pZCA9IGFjdGlvbk9iamVjdC0+Z2V0SW50ZWdlcihQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OmlkS2V5KS52YWx1ZV9vcihKU0M6Om5vQnJl
YWtwb2ludEFjdGlvbklEKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uaWQgPSBhY3Rpb25PYmpl
Y3QtPmdldEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0
aW9uOjppZEtleSB9KS52YWx1ZV9vcihKU0M6Om5vQnJlYWtwb2ludEFjdGlvbklEKTsKIAotICAg
ICAgICAgICAgICAgIGFjdGlvbi5lbXVsYXRlVXNlckdlc3R1cmUgPSBhY3Rpb25PYmplY3QtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjplbXVsYXRlVXNl
ckdlc3R1cmVLZXkpLnZhbHVlX29yKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uZW11
bGF0ZVVzZXJHZXN0dXJlID0gYWN0aW9uT2JqZWN0LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6ZW11bGF0ZVVzZXJHZXN0dXJlS2V5IH0p
LnZhbHVlX29yKGZhbHNlKTsKIAogICAgICAgICAgICAgICAgIGFjdGlvbnMudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFByb3RvY29sOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSkudmFsdWVfb3IoZmFsc2UpOwotICAg
ICAgICBpZ25vcmVDb3VudCA9IG9wdGlvbnMtPmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50T3B0aW9uczo6aWdub3JlQ291bnRLZXkpLnZhbHVlX29yKDApOworICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSB9KS52YWx1ZV9vcihm
YWxzZSk7CisgICAgICAgIGlnbm9yZUNvdW50ID0gb3B0aW9ucy0+Z2V0SW50ZWdlcihTdHJpbmcg
eyBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjppZ25vcmVDb3VudEtleSB9
KS52YWx1ZV9vcigwKTsKICAgICB9CiAKICAgICByZXR1cm4gY2FsbGJhY2soY29uZGl0aW9uLCBX
VEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKQEAgLTUxOCw3ICs1
MTgsNyBAQCBzdGF0aWMgUmVmPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGJ1aWxkRGVi
dWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcAogCiBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0
aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVj
dCYgbG9jYXRpb24sIEpTQzo6U291cmNlSUQmIHNvdXJjZUlELCB1bnNpZ25lZCYgbGluZU51bWJl
ciwgdW5zaWduZWQmIGNvbHVtbk51bWJlcikKIHsKLSAgICBhdXRvIGxpbmVOdW1iZXJWYWx1ZSA9
IGxvY2F0aW9uLmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6bGluZU51
bWJlcktleSk7CisgICAgYXV0byBsaW5lTnVtYmVyVmFsdWUgPSBsb2NhdGlvbi5nZXRJbnRlZ2Vy
KFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmxpbmVOdW1iZXJLZXkgfSk7
CiAgICAgaWYgKCFsaW5lTnVtYmVyVmFsdWUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5l
eHBlY3RlZCBub24taW50ZWdlciBsaW5lTnVtYmVyIGluIGdpdmVuIGxvY2F0aW9uIl9zOwogICAg
ICAgICBzb3VyY2VJRCA9IEpTQzo6bm9Tb3VyY2VJRDsKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0
aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IEpTT046Ok9iamVjdAogCiAgICAgbGluZU51bWJlciA9ICpsaW5lTnVtYmVyVmFsdWU7
CiAKLSAgICBhdXRvIHNjcmlwdElEU3RyID0gbG9jYXRpb24uZ2V0U3RyaW5nKFByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb246OnNjcmlwdElkS2V5KTsKKyAgICBhdXRvIHNjcmlwdElEU3RyID0g
bG9jYXRpb24uZ2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246
OnNjcmlwdElkS2V5IH0pOwogICAgIGlmICghc2NyaXB0SURTdHIpIHsKICAgICAgICAgc291cmNl
SUQgPSBKU0M6Om5vU291cmNlSUQ7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhlcGN0ZWQg
bm9uLXN0cmluZyBzY3JpcHRJZCBpbiBnaXZlbiBsb2NhdGlvbiJfczsKQEAgLTUzNSw3ICs1MzUs
NyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdAogICAgIH0KIAogICAgIHNvdXJjZUlEID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SURTdHIp
LnZhbHVlX29yKDApOwotICAgIGNvbHVtbk51bWJlciA9IGxvY2F0aW9uLmdldEludGVnZXIoUHJv
dG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y29sdW1uTnVtYmVyS2V5KS52YWx1ZV9vcigwKTsK
KyAgICBjb2x1bW5OdW1iZXIgPSBsb2NhdGlvbi5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29s
OjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNvbHVtbk51bWJlcktleSB9KS52YWx1ZV9vcigwKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
NmU5NzY2MjExODYzLi5kMWM5YWEyNjc1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6b3B0
aW9uYWw8aW50PiAvKiBzYXZlUmVzdWx0SW5kZXggKi8+IEluc3BlY3RvclJ1bnRpCiAKICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdDsKIAotICAgIGF1dG8gb2JqZWN0SWQgPSBjYWxs
QXJndW1lbnQtPmdldFN0cmluZyhQcm90b2NvbDo6UnVudGltZTo6Q2FsbEFyZ3VtZW50OjpvYmpl
Y3RJZEtleSk7CisgICAgYXV0byBvYmplY3RJZCA9IGNhbGxBcmd1bWVudC0+Z2V0U3RyaW5nKFN0
cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpDYWxsQXJndW1lbnQ6Om9iamVjdElkS2V5IH0pOwog
ICAgIGlmICghb2JqZWN0SWQpIHsKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNj
cmlwdEZvckV2YWwoZXJyb3JTdHJpbmcsIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSk7CiAg
ICAgICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCkBAIC00MDgsOSArNDA4LDkg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1
bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+PgogICAgICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmV4cGVjdGVkIG5vbi1vYmplY3QgaXRlbSBp
biBsb2NhdGlvbnMiX3MpOwogCi0gICAgICAgIGF1dG8gZGVzY3JpcHRvciA9IGxvY2F0aW9uLT5n
ZXRJbnRlZ2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OnR5cGVJbmZvcm1hdGlv
bkRlc2NyaXB0b3JLZXkpLnZhbHVlX29yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3Jt
YWwpOwotICAgICAgICBhdXRvIHNvdXJjZUlEU3RyaW5nID0gbG9jYXRpb24tPmdldFN0cmluZyhQ
cm90b2NvbDo6UnVudGltZTo6VHlwZUxvY2F0aW9uOjpzb3VyY2VJREtleSk7Ci0gICAgICAgIGF1
dG8gZGl2b3QgPSBsb2NhdGlvbi0+Z2V0SW50ZWdlcihQcm90b2NvbDo6UnVudGltZTo6VHlwZUxv
Y2F0aW9uOjpkaXZvdEtleSkudmFsdWVfb3IoMCk7CisgICAgICAgIGF1dG8gZGVzY3JpcHRvciA9
IGxvY2F0aW9uLT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0b3JLZXkgfSkudmFsdWVfb3IoVHlwZVByb2Zp
bGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCk7CisgICAgICAgIGF1dG8gc291cmNlSURTdHJpbmcg
PSBsb2NhdGlvbi0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnNvdXJjZUlES2V5IH0pOworICAgICAgICBhdXRvIGRpdm90ID0gbG9jYXRpb24tPmdl
dEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVMb2NhdGlvbjo6ZGl2b3RL
ZXkgfSkudmFsdWVfb3IoMCk7CiAKICAgICAgICAgYXV0byB0eXBlTG9jYXRpb24gPSBtX3ZtLnR5
cGVQcm9maWxlcigpLT5maW5kTG9jYXRpb24oZGl2b3QsIHBhcnNlSW50ZWdlcjx1aW50cHRyX3Q+
KHNvdXJjZUlEU3RyaW5nKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yPihkZXNjcmlwdG9yKSwgbV92bSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weQppbmRleCBkZWYyMWFjYWNmODguLjlkYTE0ZWM0NzM5YyAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weQpAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5
cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMu
YXBwZW5kKCd9OycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCdTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsnKQotICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICByZXR1cm4gZW51bV9jb25zdGFudF92YWx1ZXNbY29kZV07JykKKyAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIFN0cmluZyB7IGVudW1fY29uc3RhbnRfdmFs
dWVzW2NvZGVdIH07JykKICAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgcmV0dXJu
IFsnXG4nLmpvaW4obGluZXMpXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCBkYTYwMGVhMDBmMGMuLjFkZTg4YjE3YmRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ1
LDcgKzEwNDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQog
ICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7
CisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFN0cmlu
ZyB7IFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvciB9KSk7CiAgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihjb3VsZERlbGV0ZSkpOwogfQogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKIAogICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5p
c1N0cmljdCgpKQotICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKKyAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgVW5hYmxlVG9EZWxldGVQcm9w
ZXJ0eUVycm9yIH0pKTsKICAgICAKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGU5YmRiN2M4NWRhYS4uMGVkMTM2
YTc1NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDksNyArNDksNyBAQCBBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yOjpBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cgogCiB2b2lkIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6
OkFnZ3JlZ2F0ZUVycm9yKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgU3RyaW5nIHsgZXJy
b3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9LCBQcm9wZXJ0eUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIEFTU0VSVChpbmhlcml0cyh2
bSwgaW5mbygpKSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcAppbmRleCAxMTljZDVhMzliMTEuLjY5ZjZlMzg5
MTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRl
RXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBBZ2dyZWdhdGVFcnJv
clByb3RvdHlwZTo6QWdncmVnYXRlRXJyb3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIAogdm9pZCBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBlcnJvclR5cGVOYW1lKEVy
cm9yVHlwZTo6QWdncmVnYXRlRXJyb3IpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
U3RyaW5nIHsgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9KTsKICAg
ICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKaW5kZXggNDVh
MDAxM2FmMWM3Li43NWYyYWUwYjA3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyU2hhcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAg
ZW51bSBjbGFzcyBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIDogdWludDhfdCB7CiAgICAgU2hhcmVk
CiB9OwogCi1pbmxpbmUgQVNDSUlMaXRlcmFsIGFycmF5QnVmZmVyU2hhcmluZ01vZGVOYW1lKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUpCitpbmxpbmUgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBhcnJheUJ1ZmZlclNoYXJpbmdNb2RlTmFtZShBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
IHNoYXJpbmdNb2RlKQogewogICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKICAgICBjYXNlIEFy
cmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQ6CkBAIC00NCw3ICs0NCw3IEBAIGlubGluZSBB
U0NJSUxpdGVyYWwgYXJyYXlCdWZmZXJTaGFyaW5nTW9kZU5hbWUoQXJyYXlCdWZmZXJTaGFyaW5n
TW9kZSBzaGFyaW5nTW9kCiAgICAgICAgIHJldHVybiAiU2hhcmVkQXJyYXlCdWZmZXIiX3M7CiAg
ICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxs
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDE4MTVlMTQ3Yjk2NS4uZmUyZDJhODA2
M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCB1bnNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlzT2JqLCB1aW50NjRfdCBoZWFkZXIsIHUKICAgICBp
ZiAoaXNKU0FycmF5KHRoaXNPYmopKSB7CiAgICAgICAgIC8vIFNwZWMgc2F5cyBpZiB3ZSB3b3Vs
ZCBwcm9kdWNlIGFuIGFycmF5IG9mIHRoaXMgc2l6ZSwgd2UgbXVzdCB0aHJvdyBhIHJhbmdlIGVy
cm9yLgogICAgICAgICBpZiAoY291bnQgKyBsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCkpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKTsKKyAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBM
ZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExNDgsNyArMTE0OCw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NsaWNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsCiAgICAgICAgIHJlc3VsdCA9IHNwZWNpZXNSZXN1bHQuc2Vjb25kOwogICAgIGVs
c2UgewogICAgICAgICBpZiAoVU5MSUtFTFkoZW5kIC0gYmVnaW4gPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJv
cik7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgU3Ry
aW5nIHsgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KTsKICAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgICAgIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZW5kIC0gYmVnaW4pKTsKQEAgLTEyNDAsNyArMTI0MCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NwbGljZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhCiAgICAgICAgICAgICByZXN1bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29u
ZDsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYWN0dWFsRGVsZXRl
Q291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIExlbmd0aEV4Y2Vl
ZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1h
eGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gSlNBcnJheTo6
dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYWN0dWFsRGVsZXRlQ291bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDFlZWVlMmNiOWU0Ni4uMGIxZmEzZjgxNjA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2NoZWNrX3RkeikKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
dGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCiB7CiAgICAg
QkVHSU4oKTsKLSAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIFN0cmluZyB7IFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yIH0pKTsKIH0KIAogSlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9ub3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggZjYzOGI2NmRlYWUwLi5lMmFhOGRmMmMyOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTI3MiwxNiArMjcyLDIx
IEBAIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGhyb3dTY29wZSYgc2NvcGUpCiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QpKTsKIH0KIAotRXhjZXB0
aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dU
eXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgU3RyaW5nKGVycm9yTWVzc2FnZSkpOworICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBtZXNzYWdlKSk7CiB9CiAKLUV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbWVzc2FnZSkK
IHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWVzc2FnZSkpOwogfQogCitFeGNlcHRpb24qIHRocm93
VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3Bl
LCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsg
bWVzc2FnZSB9KSk7Cit9CisKIEV4Y2VwdGlvbiogdGhyb3dTeW50YXhFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFs
T2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAppbmRleCA1NGIxNDk0
NThmZjIuLmE3ZDgxNDNjN2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
CkBAIC03OCw4ICs3OCw5IEBAIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oVk0mLCBKU09iamVjdCog
ZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CiAvLyBDb252ZW5pZW5jZSB3cmFw
cGVycywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdl
LgogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVD
YWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IHRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwotSlNfRVhQT1JU
X1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93
U2NvcGUmLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKTsKIEpTX0VYUE9SVF9QUklWQVRFIEV4
Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0
aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRo
cm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIEFTQ0lJTGl0ZXJhbCBl
cnJvck1lc3NhZ2UpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1N5bnRheEVy
cm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhj
ZXB0aW9uKiB0aHJvd1N5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIGlubGluZSBFeGNlcHRpb24qIHRocm93UmFuZ2VF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBlcnJvck1lc3NhZ2Up
KTsgfQpAQCAtOTUsOCArOTYsOSBAQCBpbmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEV4Y2VwdAogaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
aHJvd1Njb3BlJiBzY29wZSwgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yKSk7IH0KIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVy
cm9yKGdsb2JhbE9iamVjdCwgZXJyb3JNZXNzYWdlKSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgdGhyb3dWTVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JN
ZXNzYWdlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBTdHJpbmcgeyBlcnJvck1lc3NhZ2UgfSk7IH0KK2lubGluZSBFbmNvZGVk
SlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRo
cm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN0cmluZyB7IGVycm9yTWVzc2FnZSB9
KTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRo
cm93Vk1ET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01B
dHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBw
cm9wZXJ0eU5hbWUpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1ET01BdHRyaWJ1
dGVTZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29w
ZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01BdHRyaWJ1dGVTZXR0ZXJU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKaW5kZXggYTE3NjQ3YWM5YWEyLi4zZTJhM2Q5MzRmODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAt
MTQ1LDcgKzE0NSw3IEBAIEpTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xv
dyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIHN3aXRjaCAocGFyc2VNb2RlKCkp
IHsKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlckZ1bmN0aW9uTW9k
ZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6R2VuZXJhdG9yV3JhcHBlck1ldGhvZE1vZGU6
Ci0gICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImZ1bmN0aW9uKiAiOworICAgICAgICBmdW5jdGlv
bkhlYWRlciA9ICJmdW5jdGlvbiogIl9zOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU291
cmNlUGFyc2VNb2RlOjpOb3JtYWxGdW5jdGlvbk1vZGU6CkBAIC0xNTksMjYgKzE1OSwyNiBAQCBK
U1N0cmluZyogRnVuY3Rpb25FeGVjdXRhYmxlOjp0b1N0cmluZ1Nsb3coSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JC
b2R5TW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNGdW5jdGlvbkJvZHlNb2Rl
OgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Fycm93RnVuY3Rpb25Cb2R5TW9kZToK
LSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiZnVuY3Rpb24gIjsKKyAgICAgICAgZnVuY3Rpb25I
ZWFkZXIgPSAiZnVuY3Rpb24gIl9zOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgU291cmNl
UGFyc2VNb2RlOjpBcnJvd0Z1bmN0aW9uTW9kZToKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6
Q2xhc3NGaWVsZEluaXRpYWxpemVyTW9kZToKLSAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiIjsK
KyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSBlbXB0eVN0cmluZygpOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0Z1bmN0aW9uTW9kZToKICAgICBjYXNl
IFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNNZXRob2RNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRl
ciA9ICJhc3luYyBmdW5jdGlvbiAiOworICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBm
dW5jdGlvbiAiX3M7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1vZGU6
OkFzeW5jQXJyb3dGdW5jdGlvbk1vZGU6Ci0gICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5j
ICI7CisgICAgICAgIGZ1bmN0aW9uSGVhZGVyID0gImFzeW5jICJfczsKICAgICAgICAgYnJlYWs7
CiAKICAgICBjYXNlIFNvdXJjZVBhcnNlTW9kZTo6QXN5bmNHZW5lcmF0b3JXcmFwcGVyRnVuY3Rp
b25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpBc3luY0dlbmVyYXRvcldyYXBwZXJN
ZXRob2RNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICJhc3luYyBmdW5jdGlvbiogIjsK
KyAgICAgICAgZnVuY3Rpb25IZWFkZXIgPSAiYXN5bmMgZnVuY3Rpb24qICJfczsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JZGVudGlmaWVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmgKaW5kZXggMWM5ZmU1NTY1MDFmLi41YTllNTMzYmRlMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVyLmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAg
ICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyc0NvdW50PgogICAgIHN0YXRpYyBJZGVudGlm
aWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBjaGFyICgmY2hhcmFjdGVycylbY2hhcmFjdGVyc0Nv
dW50XSk7CiAgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIEFTQ0lJTGl0ZXJh
bCk7CisgICAgc3RhdGljIElkZW50aWZpZXIgZnJvbVN0cmluZyhWTSYsIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGgpOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0mLCBjb25zdCBM
Q2hhciosIGludCBsZW5ndGgpOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21TdHJpbmcoVk0m
LCBjb25zdCBVQ2hhciosIGludCBsZW5ndGgpOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21T
dHJpbmcoVk0mLCBjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCmluZGV4IGE1NzJmNTdhNWM5Yy4uNTdkMDFkYTFi
M2M0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lkZW50aWZpZXJJ
bmxpbmVzLmgKQEAgLTkxLDYgKzkxLDExIEBAIGlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoVk0mIHZtLCBBU0NJSUxpdGVyYWwgcykKICAgICByZXR1cm4gSWRlbnRpZmll
cih2bSwgU3RyaW5nKHMpKTsKIH0KIAoraW5saW5lIElkZW50aWZpZXIgSWRlbnRpZmllcjo6ZnJv
bVN0cmluZyhWTSYgdm0sIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggcykKK3sKKyAgICByZXR1cm4g
SWRlbnRpZmllcih2bSwgU3RyaW5nKHMpKTsKK30KKwogaW5saW5lIElkZW50aWZpZXIgSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhWTSYgdm0sIGNvbnN0IExDaGFyKiBzLCBpbnQgbGVuZ3RoKQogewog
ICAgIHJldHVybiBJZGVudGlmaWVyKHZtLCBzLCBsZW5ndGgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXggYjZiYjc1MTU4MGQ3Li41OWNm
NTM3MTE0M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxD
b2xsYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxh
dG9yLmNwcApAQCAtMzIxLDcgKzMyMSw3IEBAIEpTVmFsdWUgSW50bENvbGxhdG9yOjpjb21wYXJl
U3RyaW5ncyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJpbmdWaWV3IHgsCiAgICAg
cmV0dXJuIGpzTnVtYmVyKHJlc3VsdCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0b3I6
OnVzYWdlU3RyaW5nKFVzYWdlIHVzYWdlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsQ29s
bGF0b3I6OnVzYWdlU3RyaW5nKFVzYWdlIHVzYWdlKQogewogICAgIHN3aXRjaCAodXNhZ2UpIHsK
ICAgICBjYXNlIFVzYWdlOjpTb3J0OgpAQCAtMzMwLDEwICszMzAsMTAgQEAgQVNDSUlMaXRlcmFs
IEludGxDb2xsYXRvcjo6dXNhZ2VTdHJpbmcoVXNhZ2UgdXNhZ2UpCiAgICAgICAgIHJldHVybiAi
c2VhcmNoIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6
Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxDb2xsYXRvcjo6c2Vuc2l0aXZpdHlTdHJp
bmcoU2Vuc2l0aXZpdHkgc2Vuc2l0aXZpdHkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxD
b2xsYXRvcjo6c2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkgc2Vuc2l0aXZpdHkpCiB7CiAg
ICAgc3dpdGNoIChzZW5zaXRpdml0eSkgewogICAgIGNhc2UgU2Vuc2l0aXZpdHk6OkJhc2U6CkBA
IC0zNDYsMTAgKzM0NiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bENvbGxhdG9yOjpzZW5zaXRpdml0
eVN0cmluZyhTZW5zaXRpdml0eSBzZW5zaXRpdml0eSkKICAgICAgICAgcmV0dXJuICJ2YXJpYW50
Il9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlM
aXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwo
KTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxDb2xsYXRvcjo6Y2FzZUZpcnN0U3RyaW5nKENhc2VG
aXJzdCBjYXNlRmlyc3QpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxDb2xsYXRvcjo6Y2Fz
ZUZpcnN0U3RyaW5nKENhc2VGaXJzdCBjYXNlRmlyc3QpCiB7CiAgICAgc3dpdGNoIChjYXNlRmly
c3QpIHsKICAgICBjYXNlIENhc2VGaXJzdDo6RmFsc2U6CkBAIC0zNjAsNyArMzYwLDcgQEAgQVND
SUlMaXRlcmFsIEludGxDb2xsYXRvcjo6Y2FzZUZpcnN0U3RyaW5nKENhc2VGaXJzdCBjYXNlRmly
c3QpCiAgICAgICAgIHJldHVybiAidXBwZXIiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLWludGwuY29sbGF0b3IucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuaAppbmRleCA4MGFhN2MzNmJh
NmMuLmE3ZTBjYjE1OTgyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bENvbGxhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bENvbGxhdG9yLmgKQEAgLTk0LDkgKzk0LDkgQEAgcHJpdmF0ZToKIAogICAgIHVzaW5nIFVDb2xs
YXRvckRlbGV0ZXIgPSBJQ1VEZWxldGVyPHVjb2xfY2xvc2U+OwogCi0gICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbCB1c2FnZVN0cmluZyhVc2FnZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzZW5z
aXRpdml0eVN0cmluZyhTZW5zaXRpdml0eSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjYXNl
Rmlyc3RTdHJpbmcoQ2FzZUZpcnN0KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0
aCB1c2FnZVN0cmluZyhVc2FnZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgg
c2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGNhc2VGaXJzdFN0cmluZyhDYXNlRmlyc3QpOwogCiAgICAgV3JpdGVCYXJyaWVy
PEpTQm91bmRGdW5jdGlvbj4gbV9ib3VuZENvbXBhcmU7CiAgICAgc3RkOjp1bmlxdWVfcHRyPFVD
b2xsYXRvciwgVUNvbGxhdG9yRGVsZXRlcj4gbV9jb2xsYXRvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGMyZDQ5
ZGE5OGE2Ni4uZTYxZmU4ZWI3MTlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTEwMDYsNyArMTAwNiw3IEBAIHZv
aWQgSW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwKICAgICB1Y2FsX3NldEdyZWdvcmlhbkNoYW5nZShjYWwsIG1p
bkVDTUFTY3JpcHRUaW1lLCAmc3RhdHVzKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGlt
ZUZvcm1hdDo6aG91ckN5Y2xlU3RyaW5nKEhvdXJDeWNsZSBob3VyQ3ljbGUpCitBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6aG91ckN5Y2xlU3RyaW5nKEhvdXJDeWNs
ZSBob3VyQ3ljbGUpCiB7CiAgICAgc3dpdGNoIChob3VyQ3ljbGUpIHsKICAgICBjYXNlIEhvdXJD
eWNsZTo6SDExOgpAQCAtMTAxOSwxMyArMTAxOSwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0Ojpob3VyQ3ljbGVTdHJpbmcoSG91ckN5Y2xlIGhvdXJDeWNsZSkKICAgICAgICAg
cmV0dXJuICJoMjQiX3M7CiAgICAgY2FzZSBIb3VyQ3ljbGU6Ok5vbmU6CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cisg
ICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsK
KyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxp
dGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojp3ZWVrZGF5U3RyaW5nKFdlZWtkYXkgd2Vla2RheSkK
K0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojp3ZWVrZGF5U3RyaW5n
KFdlZWtkYXkgd2Vla2RheSkKIHsKICAgICBzd2l0Y2ggKHdlZWtkYXkpIHsKICAgICBjYXNlIFdl
ZWtkYXk6Ok5hcnJvdzoKQEAgLTEwMzYsMTMgKzEwMzYsMTMgQEAgQVNDSUlMaXRlcmFsIEludGxE
YXRlVGltZUZvcm1hdDo6d2Vla2RheVN0cmluZyhXZWVrZGF5IHdlZWtkYXkpCiAgICAgICAgIHJl
dHVybiAibG9uZyJfczsKICAgICBjYXNlIFdlZWtkYXk6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAg
ICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVy
YWwgSW50bERhdGVUaW1lRm9ybWF0OjplcmFTdHJpbmcoRXJhIGVyYSkKK0FTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0OjplcmFTdHJpbmcoRXJhIGVyYSkKIHsKICAgICBz
d2l0Y2ggKGVyYSkgewogICAgIGNhc2UgRXJhOjpOYXJyb3c6CkBAIC0xMDUzLDEzICsxMDUzLDEz
IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmVyYVN0cmluZyhFcmEgZXJhKQog
ICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2FzZSBFcmE6Ok5vbmU6CiAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwo
KTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJ
SUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojp5ZWFyU3RyaW5nKFllYXIgeWVhcikKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojp5ZWFyU3RyaW5nKFllYXIgeWVh
cikKIHsKICAgICBzd2l0Y2ggKHllYXIpIHsKICAgICBjYXNlIFllYXI6OlR3b0RpZ2l0OgpAQCAt
MTA2OCwxMyArMTA2OCwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojp5ZWFy
U3RyaW5nKFllYXIgeWVhcikKICAgICAgICAgcmV0dXJuICJudW1lcmljIl9zOwogICAgIGNhc2Ug
WWVhcjo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1vbnRo
U3RyaW5nKE1vbnRoIG1vbnRoKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVG
b3JtYXQ6Om1vbnRoU3RyaW5nKE1vbnRoIG1vbnRoKQogewogICAgIHN3aXRjaCAobW9udGgpIHsK
ICAgICBjYXNlIE1vbnRoOjpUd29EaWdpdDoKQEAgLTEwODksMTMgKzEwODksMTMgQEAgQVNDSUlM
aXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6bW9udGhTdHJpbmcoTW9udGggbW9udGgpCiAgICAg
ICAgIHJldHVybiAibG9uZyJfczsKICAgICBjYXNlIE1vbnRoOjpOb25lOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlM
aXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6ZGF5U3RyaW5nKERheSBkYXkpCitBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6ZGF5U3RyaW5nKERheSBkYXkpCiB7CiAg
ICAgc3dpdGNoIChkYXkpIHsKICAgICBjYXNlIERheTo6VHdvRGlnaXQ6CkBAIC0xMTA0LDEzICsx
MTA0LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRheVN0cmluZyhEYXkg
ZGF5KQogICAgICAgICByZXR1cm4gIm51bWVyaWMiX3M7CiAgICAgY2FzZSBEYXk6Ok5vbmU6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7
CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwog
fQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0OjpkYXlQZXJpb2RTdHJpbmcoRGF5
UGVyaW9kIGRheVBlcmlvZCkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9y
bWF0OjpkYXlQZXJpb2RTdHJpbmcoRGF5UGVyaW9kIGRheVBlcmlvZCkKIHsKICAgICBzd2l0Y2gg
KGRheVBlcmlvZCkgewogICAgIGNhc2UgRGF5UGVyaW9kOjpOYXJyb3c6CkBAIC0xMTIxLDEzICsx
MTIxLDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRheVBlcmlvZFN0cmlu
ZyhEYXlQZXJpb2QgZGF5UGVyaW9kKQogICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2Fz
ZSBEYXlQZXJpb2Q6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFs
V2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0
Ojpob3VyU3RyaW5nKEhvdXIgaG91cikKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVU
aW1lRm9ybWF0Ojpob3VyU3RyaW5nKEhvdXIgaG91cikKIHsKICAgICBzd2l0Y2ggKGhvdXIpIHsK
ICAgICBjYXNlIEhvdXI6OlR3b0RpZ2l0OgpAQCAtMTEzNiwxMyArMTEzNiwxMyBAQCBBU0NJSUxp
dGVyYWwgSW50bERhdGVUaW1lRm9ybWF0Ojpob3VyU3RyaW5nKEhvdXIgaG91cikKICAgICAgICAg
cmV0dXJuICJudW1lcmljIl9zOwogICAgIGNhc2UgSG91cjo6Tm9uZToKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0
ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1pbnV0ZVN0cmluZyhNaW51dGUgbWludXRlKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1pbnV0ZVN0cmluZyhNaW51
dGUgbWludXRlKQogewogICAgIHN3aXRjaCAobWludXRlKSB7CiAgICAgY2FzZSBNaW51dGU6OlR3
b0RpZ2l0OgpAQCAtMTE1MSwxMyArMTE1MSwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1l
Rm9ybWF0OjptaW51dGVTdHJpbmcoTWludXRlIG1pbnV0ZSkKICAgICAgICAgcmV0dXJuICJudW1l
cmljIl9zOwogICAgIGNhc2UgTWludXRlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1
cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxE
YXRlVGltZUZvcm1hdDo6c2Vjb25kU3RyaW5nKFNlY29uZCBzZWNvbmQpCitBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6c2Vjb25kU3RyaW5nKFNlY29uZCBzZWNvbmQp
CiB7CiAgICAgc3dpdGNoIChzZWNvbmQpIHsKICAgICBjYXNlIFNlY29uZDo6VHdvRGlnaXQ6CkBA
IC0xMTY2LDEzICsxMTY2LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNl
Y29uZFN0cmluZyhTZWNvbmQgc2Vjb25kKQogICAgICAgICByZXR1cm4gIm51bWVyaWMiX3M7CiAg
ICAgY2FzZSBTZWNvbmQ6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRl
cmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9y
bWF0Ojp0aW1lWm9uZU5hbWVTdHJpbmcoVGltZVpvbmVOYW1lIHRpbWVab25lTmFtZSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojp0aW1lWm9uZU5hbWVTdHJpbmco
VGltZVpvbmVOYW1lIHRpbWVab25lTmFtZSkKIHsKICAgICBzd2l0Y2ggKHRpbWVab25lTmFtZSkg
ewogICAgIGNhc2UgVGltZVpvbmVOYW1lOjpTaG9ydDoKQEAgLTExODksMTMgKzExODksMTMgQEAg
QVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6dGltZVpvbmVOYW1lU3RyaW5nKFRpbWVa
b25lTmFtZSB0aW1lWm9uZU5hbWUpCiAgICAgICAgIHJldHVybiAibG9uZ0dlbmVyaWMiX3M7CiAg
ICAgY2FzZSBUaW1lWm9uZU5hbWU6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0Ojpmb3JtYXRTdHlsZVN0cmluZyhEYXRlVGltZVN0eWxlIHN0eWxlKQorQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFN0eWxlU3RyaW5nKERh
dGVUaW1lU3R5bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgRGF0
ZVRpbWVTdHlsZTo6RnVsbDoKQEAgLTEyMDgsMTAgKzEyMDgsMTAgQEAgQVNDSUlMaXRlcmFsIElu
dGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0U3R5bGVTdHJpbmcoRGF0ZVRpbWVTdHlsZSBzdHlsZSkK
ICAgICAgICAgcmV0dXJuICJzaG9ydCJfczsKICAgICBjYXNlIERhdGVUaW1lU3R5bGU6Ok5vbmU6
CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRl
cmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxs
KCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgp
OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLWludGwuZGF0ZXRpbWVmb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkb3B0aW9ucwpAQCAtMTI5Myw3ICsxMjkzLDcgQEAgSlNWYWx1
ZSBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBkb3VibGUgdmFsdWUpIGMKICAgICByZXR1cm4ganNTdHJpbmcodm0sIFN0cmluZyhyZXN1bHQp
KTsKIH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVRGF0ZUZvcm1hdEZp
ZWxkIGZpZWxkKQorc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggcGFydFR5cGVTdHJpbmco
VURhdGVGb3JtYXRGaWVsZCBmaWVsZCkKIHsKICAgICBzd2l0Y2ggKGZpZWxkKSB7CiAgICAgY2Fz
ZSBVREFUX0VSQV9GSUVMRDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bERhdGVUaW1lRm9ybWF0LmgKaW5kZXggOGJmNjc3ZjRhODc5Li4yMTFmZjVjMDgyNmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1h
dC5oCkBAIC0xMDksMTggKzEwOSwxOCBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgRGF0ZVRp
bWVTdHlsZSA6IHVpbnQ4X3QgeyBOb25lLCBGdWxsLCBMb25nLCBNZWRpdW0sIFNob3J0IH07CiAK
ICAgICB2b2lkIHNldEZvcm1hdHNGcm9tUGF0dGVybihTdHJpbmdWaWV3KTsKLSAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsIGhvdXJDeWNsZVN0cmluZyhIb3VyQ3ljbGUpOwotICAgIHN0YXRpYyBBU0NJ
SUxpdGVyYWwgd2Vla2RheVN0cmluZyhXZWVrZGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFs
IGVyYVN0cmluZyhFcmEpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgeWVhclN0cmluZyhZZWFy
KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG1vbnRoU3RyaW5nKE1vbnRoKTsKLSAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIGRheVN0cmluZyhEYXkpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwg
ZGF5UGVyaW9kU3RyaW5nKERheVBlcmlvZCk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBob3Vy
U3RyaW5nKEhvdXIpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbWludXRlU3RyaW5nKE1pbnV0
ZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzZWNvbmRTdHJpbmcoU2Vjb25kKTsKLSAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsIHRpbWVab25lTmFtZVN0cmluZyhUaW1lWm9uZU5hbWUpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgZm9ybWF0U3R5bGVTdHJpbmcoRGF0ZVRpbWVTdHlsZSk7Cisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggaG91ckN5Y2xlU3RyaW5nKEhvdXJDeWNs
ZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggd2Vla2RheVN0cmluZyhXZWVr
ZGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlcmFTdHJpbmcoRXJhKTsK
KyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB5ZWFyU3RyaW5nKFllYXIpOworICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG1vbnRoU3RyaW5nKE1vbnRoKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBkYXlTdHJpbmcoRGF5KTsKKyAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBkYXlQZXJpb2RTdHJpbmcoRGF5UGVyaW9kKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBob3VyU3RyaW5nKEhvdXIpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG1pbnV0ZVN0cmluZyhNaW51dGUpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNlY29uZFN0cmluZyhTZWNvbmQpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHRpbWVab25lTmFtZVN0cmluZyhUaW1lWm9uZU5hbWUp
OworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGZvcm1hdFN0eWxlU3RyaW5nKERh
dGVUaW1lU3R5bGUpOwogCiAgICAgc3RhdGljIEhvdXJDeWNsZSBob3VyQ3ljbGVGcm9tU3ltYm9s
KFVDaGFyKTsKICAgICBzdGF0aWMgSG91ckN5Y2xlIHBhcnNlSG91ckN5Y2xlKGNvbnN0IFN0cmlu
ZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlzcGxheU5h
bWVzLmNwcAppbmRleCBmYmU4NmU0YjdlYWEuLjk5NTY0YmRiZTc2MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKQEAgLTM2Niw3
ICszNjYsNyBAQCBKU09iamVjdCogSW50bERpc3BsYXlOYW1lczo6cmVzb2x2ZWRPcHRpb25zKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpIGNvbnN0CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9
CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpzdHlsZVN0cmluZyhTdHlsZSBzdHls
ZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJpbmco
U3R5bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgU3R5bGU6Ok5h
cnJvdzoKQEAgLTM3NywxMCArMzc3LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVz
OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJsb25nIl9zOwogICAg
IH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpu
dWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAot
QVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OnR5cGVTdHJpbmcoVHlwZSB0eXBlKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKFR5cGUgdHlw
ZSkKIHsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFR5cGU6Okxhbmd1YWdlOgpAQCAt
Mzk3LDEwICszOTcsMTAgQEAgQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OnR5cGVTdHJp
bmcoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gImRhdGVUaW1lRmllbGQiX3M7CiAgICAgfQog
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwo
KTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJ
SUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6ZmFsbGJhY2tTdHJpbmcoRmFsbGJhY2sgZmFsbGJh
Y2spCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3Ry
aW5nKEZhbGxiYWNrIGZhbGxiYWNrKQogewogICAgIHN3aXRjaCAoZmFsbGJhY2spIHsKICAgICBj
YXNlIEZhbGxiYWNrOjpDb2RlOgpAQCAtNDA5LDEwICs0MDksMTAgQEAgQVNDSUlMaXRlcmFsIElu
dGxEaXNwbGF5TmFtZXM6OmZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNrKQogICAgICAg
ICByZXR1cm4gIm5vbmUiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0
aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6bGFu
Z3VhZ2VEaXNwbGF5U3RyaW5nKExhbmd1YWdlRGlzcGxheSBsYW5ndWFnZURpc3BsYXkpCitBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEaXNwbGF5TmFtZXM6Omxhbmd1YWdlRGlzcGxheVN0cmlu
ZyhMYW5ndWFnZURpc3BsYXkgbGFuZ3VhZ2VEaXNwbGF5KQogewogICAgIHN3aXRjaCAobGFuZ3Vh
Z2VEaXNwbGF5KSB7CiAgICAgY2FzZSBMYW5ndWFnZURpc3BsYXk6OkRpYWxlY3Q6CkBAIC00MjEs
NyArNDIxLDcgQEAgQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6Omxhbmd1YWdlRGlzcGxh
eVN0cmluZyhMYW5ndWFnZURpc3BsYXkgbGFuZ3VhZ2VEaXMKICAgICAgICAgcmV0dXJuICJzdGFu
ZGFyZCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpu
dWxsKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCmluZGV4IGQ4MGRjM2Q4M2ExNS4uZmIyYjY4
Nzc0ZDE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGlz
cGxheU5hbWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3Bs
YXlOYW1lcy5oCkBAIC02OSwxMCArNjksMTAgQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIEZh
bGxiYWNrIDogdWludDhfdCB7IENvZGUsIE5vbmUgfTsKICAgICBlbnVtIGNsYXNzIExhbmd1YWdl
RGlzcGxheSA6IHVpbnQ4X3QgeyBEaWFsZWN0LCBTdGFuZGFyZCB9OwogCi0gICAgc3RhdGljIEFT
Q0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0
eXBlU3RyaW5nKFR5cGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgZmFsbGJhY2tTdHJpbmco
RmFsbGJhY2spOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbGFuZ3VhZ2VEaXNwbGF5U3RyaW5n
KExhbmd1YWdlRGlzcGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggc3R5
bGVTdHJpbmcoU3R5bGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHR5cGVT
dHJpbmcoVHlwZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZmFsbGJhY2tT
dHJpbmcoRmFsbGJhY2spOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGxhbmd1
YWdlRGlzcGxheVN0cmluZyhMYW5ndWFnZURpc3BsYXkpOwogCiAgICAgdXNpbmcgVUxvY2FsZURp
c3BsYXlOYW1lc0RlbGV0ZXIgPSBJQ1VEZWxldGVyPHVsZG5fY2xvc2U+OwogICAgIHN0ZDo6dW5p
cXVlX3B0cjxVTG9jYWxlRGlzcGxheU5hbWVzLCBVTG9jYWxlRGlzcGxheU5hbWVzRGVsZXRlcj4g
bV9kaXNwbGF5TmFtZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TGlzdEZvcm1hdC5jcHAKaW5kZXggZjVjMzA1NzA5OGM5Li40NmQ3MGYzOWRiMDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5jcHAKQEAgLTM0
Miw3ICszNDIsNyBAQCBKU09iamVjdCogSW50bExpc3RGb3JtYXQ6OnJlc29sdmVkT3B0aW9ucyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBvcHRpb25zOwog
fQogCi1BU0NJSUxpdGVyYWwgSW50bExpc3RGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxl
KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTGlzdEZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5
bGUgc3R5bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgU3R5bGU6Okxvbmc6
CkBAIC0zNTMsMTAgKzM1MywxMCBAQCBBU0NJSUxpdGVyYWwgSW50bExpc3RGb3JtYXQ6OnN0eWxl
U3RyaW5nKFN0eWxlIHN0eWxlKQogICAgICAgICByZXR1cm4gIm5hcnJvdyJfczsKICAgICB9CiAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgp
OworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJ
TGl0ZXJhbCBJbnRsTGlzdEZvcm1hdDo6dHlwZVN0cmluZyhUeXBlIHR5cGUpCitBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIEludGxMaXN0Rm9ybWF0Ojp0eXBlU3RyaW5nKFR5cGUgdHlwZSkKIHsKICAg
ICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFR5cGU6OkNvbmp1bmN0aW9uOgpAQCAtMzY3LDcg
KzM2Nyw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTGlzdEZvcm1hdDo6dHlwZVN0cmluZyhUeXBlIHR5
cGUpCiAgICAgICAgIHJldHVybiAidW5pdCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmgKaW5kZXggOGIy
NzQwMmY5ZDQwLi4yNDdhNTRjMDhkODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bExpc3RGb3JtYXQuaApAQCAtNzksOCArNzksOCBAQCBwcml2YXRlOgogICAgIGVu
dW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeyBDb25qdW5jdGlvbiwgRGlzanVuY3Rpb24sIFVuaXQg
fTsKICAgICBlbnVtIGNsYXNzIFN0eWxlIDogdWludDhfdCB7IFNob3J0LCBMb25nLCBOYXJyb3cg
fTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdHlwZVN0cmluZyhUeXBlKTsKLSAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCB0eXBlU3RyaW5nKFR5cGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIHN0eWxlU3RyaW5nKFN0eWxlKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTGlz
dEZvcm1hdHRlciwgVUxpc3RGb3JtYXR0ZXJEZWxldGVyPiBtX2xpc3RGb3JtYXQ7CiAgICAgU3Ry
aW5nIG1fbG9jYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE51bWJlckZvcm1hdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
TnVtYmVyRm9ybWF0LmNwcAppbmRleCA5NTNjMzlmZTY0YTkuLmEwNmUzYjlkZDU5YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
QEAgLTIzNyw3ICsyMzcsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWxsRm9ybWVkVW5pdD4g
d2VsbEZvcm1lZFVuaXRJZGVudGlmaWVyKFN0cmluZ1ZpZXcgdW5pdElkZQogICAgIHJldHVybiBX
ZWxsRm9ybWVkVW5pdChudW1lcmF0b3JVbml0LnZhbHVlKCksIGRlbm9taW5hdG9yVW5pdC52YWx1
ZSgpKTsKIH0KIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBwYXJ0VHlwZVN0cmluZyhVTnVtYmVyRm9y
bWF0RmllbGRzIGZpZWxkLCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwgYm9vbCBzaWdu
LCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGUgdHlwZSkKK3N0YXRpYyBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIHBhcnRUeXBlU3RyaW5nKFVOdW1iZXJGb3JtYXRGaWVsZHMgZmllbGQs
IEludGxOdW1iZXJGb3JtYXQ6OlN0eWxlIHN0eWxlLCBib29sIHNpZ24sIEludGxNYXRoZW1hdGlj
YWxWYWx1ZTo6TnVtYmVyVHlwZSB0eXBlKQogewogICAgIHN3aXRjaCAoZmllbGQpIHsKICAgICBj
YXNlIFVOVU1fSU5URUdFUl9GSUVMRDoKQEAgLTEyNDUsNyArMTI0NSw3IEBAIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6Zm9ybWF0UmFuZ2VUb1BhcnRzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEludGxNCiB9CiAjZW5kaWYKIAotQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6
OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVt
YmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxl
KSB7CiAgICAgY2FzZSBTdHlsZTo6RGVjaW1hbDoKQEAgLTEyNTgsMTAgKzEyNTgsMTAgQEAgQVND
SUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogICAg
ICAgICByZXR1cm4gInVuaXQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFs
V2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6
Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJyZW5jeURpc3BsYXkpCitB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0
cmluZyhDdXJyZW5jeURpc3BsYXkgY3VycmVuY3lEaXNwbGF5KQogewogICAgIHN3aXRjaCAoY3Vy
cmVuY3lEaXNwbGF5KSB7CiAgICAgY2FzZSBDdXJyZW5jeURpc3BsYXk6OkNvZGU6CkBAIC0xMjc0
LDEwICsxMjc0LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeURp
c3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlzCiAgICAgICAgIHJldHVybiAi
bmFtZSJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpu
dWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0cmlu
ZyhJbnRsTm90YXRpb24gbm90YXRpb24pCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1i
ZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlvbiBub3RhdGlvbikKIHsKICAgICBz
d2l0Y2ggKG5vdGF0aW9uKSB7CiAgICAgY2FzZSBJbnRsTm90YXRpb246OlN0YW5kYXJkOgpAQCAt
MTI5MCwxMCArMTI5MCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6bm90YXRp
b25TdHJpbmcoSW50bE5vdGF0aW9uIG5vdGF0aW9uKQogICAgICAgICByZXR1cm4gImNvbXBhY3Qi
X3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgp
OwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5n
KEN1cnJlbmN5U2lnbiBjdXJyZW5jeVNpZ24pCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxO
dW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24gY3VycmVuY3lTaWdu
KQogewogICAgIHN3aXRjaCAoY3VycmVuY3lTaWduKSB7CiAgICAgY2FzZSBDdXJyZW5jeVNpZ246
OlN0YW5kYXJkOgpAQCAtMTMwMiwxMCArMTMwMiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJl
ckZvcm1hdDo6Y3VycmVuY3lTaWduU3RyaW5nKEN1cnJlbmN5U2lnbiBjdXJyZW5jeVNpZ24pCiAg
ICAgICAgIHJldHVybiAiYWNjb3VudGluZyJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVy
Rm9ybWF0Ojp1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxheSB1bml0RGlzcGxheSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcoVW5p
dERpc3BsYXkgdW5pdERpc3BsYXkpCiB7CiAgICAgc3dpdGNoICh1bml0RGlzcGxheSkgewogICAg
IGNhc2UgVW5pdERpc3BsYXk6OlNob3J0OgpAQCAtMTMxNiwxMCArMTMxNiwxMCBAQCBBU0NJSUxp
dGVyYWwgSW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkgdW5p
dERpc3BsYXkpCiAgICAgICAgIHJldHVybiAibG9uZyJfczsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRs
TnVtYmVyRm9ybWF0Ojpjb21wYWN0RGlzcGxheVN0cmluZyhDb21wYWN0RGlzcGxheSBjb21wYWN0
RGlzcGxheSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bE51bWJlckZvcm1hdDo6Y29tcGFj
dERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYXkpCiB7CiAgICAgc3dp
dGNoIChjb21wYWN0RGlzcGxheSkgewogICAgIGNhc2UgQ29tcGFjdERpc3BsYXk6OlNob3J0OgpA
QCAtMTMyOCwxMCArMTMyOCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y29t
cGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYQogICAgICAgICBy
ZXR1cm4gImxvbmciX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExl
bmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6c2lnbkRp
c3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5IHNpZ25E
aXNwbGF5KQogewogICAgIHN3aXRjaCAoc2lnbkRpc3BsYXkpIHsKICAgICBjYXNlIFNpZ25EaXNw
bGF5OjpBdXRvOgpAQCAtMTM0NiwxMCArMTM0NiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJl
ckZvcm1hdDo6c2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3BsYXkgc2lnbkRpc3BsYXkpCiAgICAg
ICAgIHJldHVybiAibmVnYXRpdmUiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRl
cmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1h
dDo6cm91bmRpbmdNb2RlU3RyaW5nKFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCitBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nTW9kZVN0cmluZyhSb3Vu
ZGluZ01vZGUgcm91bmRpbmdNb2RlKQogewogICAgIHN3aXRjaCAocm91bmRpbmdNb2RlKSB7CiAg
ICAgY2FzZSBSb3VuZGluZ01vZGU6OkNlaWw6CkBAIC0xMzcyLDEwICsxMzcyLDEwIEBAIEFTQ0lJ
TGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2Rl
IHJvdW5kaW5nTW9kZSkKICAgICAgICAgcmV0dXJuICJoYWxmRXZlbiJfczsKICAgICB9CiAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0
ZXJhbCBJbnRsTnVtYmVyRm9ybWF0Ojp0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5n
WmVyb0Rpc3BsYXkgdHJhaWxpbmdaZXJvRGlzcGxheSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgg
SW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9E
aXNwbGF5IHRyYWlsaW5nWmVyb0Rpc3BsYXkpCiB7CiAgICAgc3dpdGNoICh0cmFpbGluZ1plcm9E
aXNwbGF5KSB7CiAgICAgY2FzZSBUcmFpbGluZ1plcm9EaXNwbGF5OjpBdXRvOgpAQCAtMTM4NCwx
MCArMTM4NCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmdaZXJv
RGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5IHRyYQogICAgICAgICByZXR1cm4gInN0
cmlwSWZJbnRlZ2VyIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5k
aW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSByb3VuZGluZ1R5cGUpCitBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJpb3JpdHlTdHJpbmco
SW50bFJvdW5kaW5nVHlwZSByb3VuZGluZ1R5cGUpCiB7CiAgICAgc3dpdGNoIChyb3VuZGluZ1R5
cGUpIHsKICAgICBjYXNlIEludGxSb3VuZGluZ1R5cGU6OkZyYWN0aW9uRGlnaXRzOgpAQCAtMTM5
OSw3ICsxMzk5LDcgQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nUHJp
b3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSByb3VuZGluZ1QKICAgICAgICAgcmV0dXJuICJs
ZXNzUHJlY2lzaW9uIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAogSlNWYWx1ZSBJbnRsTnVtYmVyRm9ybWF0Ojp1c2VHcm91cGlu
Z1ZhbHVlKFZNJiB2bSwgVXNlR3JvdXBpbmcgdXNlR3JvdXBpbmcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKaW5kZXggNjk5MTRlYWYzMzM2
Li41ODZjYTliYTM3MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTnVtYmVyRm9ybWF0LmgKQEAgLTIwNiwxMSArMjA2LDExIEBAIHB1YmxpYzoKICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBJbnRsVHlwZT4KICAgICBmcmllbmQgdm9pZCBhcHBlbmROdW1iZXJGb3Jt
YXREaWdpdE9wdGlvbnNUb1NrZWxldG9uKEludGxUeXBlKiwgU3RyaW5nQnVpbGRlciYpOwogCi0g
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBub3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24pOworICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlv
bik7CiAKICAgICBzdGF0aWMgSW50bE51bWJlckZvcm1hdCogdW53cmFwRm9yT2xkRnVuY3Rpb25z
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJv
dW5kaW5nUHJpb3JpdHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSk7CisgICAgc3RhdGljIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggcm91bmRpbmdQcmlvcml0eVN0cmluZyhJbnRsUm91bmRpbmdUeXBl
KTsKIAogcHJpdmF0ZToKICAgICBJbnRsTnVtYmVyRm9ybWF0KFZNJiwgU3RydWN0dXJlKik7CkBA
IC0yMjcsMTQgKzIyNywxNCBAQCBwcml2YXRlOgogICAgIGVudW0gY2xhc3MgVHJhaWxpbmdaZXJv
RGlzcGxheSA6IHVpbnQ4X3QgeyBBdXRvLCBTdHJpcElmSW50ZWdlciB9OwogICAgIGVudW0gY2xh
c3MgVXNlR3JvdXBpbmcgOiB1aW50OF90IHsgRmFsc2UsIE1pbjIsIEF1dG8sIEFsd2F5cyB9Owog
Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHlsZSk7Ci0gICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbCBjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5KTsKLSAg
ICBzdGF0aWMgQVNDSUlMaXRlcmFsIGN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24pOwot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdW5pdERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkpOwot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY29tcGFjdERpc3BsYXlTdHJpbmcoQ29tcGFjdERpc3Bs
YXkpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2lnbkRpc3BsYXlTdHJpbmcoU2lnbkRpc3Bs
YXkpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgcm91bmRpbmdNb2RlU3RyaW5nKFJvdW5kaW5n
TW9kZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5n
KFRyYWlsaW5nWmVyb0Rpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBj
dXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCBjdXJyZW5jeVNpZ25TdHJpbmcoQ3VycmVuY3lTaWduKTsKKyAgICBz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB1bml0RGlzcGxheVN0cmluZyhVbml0RGlzcGxh
eSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggY29tcGFjdERpc3BsYXlTdHJp
bmcoQ29tcGFjdERpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNp
Z25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCByb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlKTsKKyAgICBzdGF0aWMgQVND
SUlMaXRlcmFsV2l0aExlbmd0aCB0cmFpbGluZ1plcm9EaXNwbGF5U3RyaW5nKFRyYWlsaW5nWmVy
b0Rpc3BsYXkpOwogICAgIHN0YXRpYyBKU1ZhbHVlIHVzZUdyb3VwaW5nVmFsdWUoVk0mLCBVc2VH
cm91cGluZyk7CiAKICAgICBXcml0ZUJhcnJpZXI8SlNCb3VuZEZ1bmN0aW9uPiBtX2JvdW5kRm9y
bWF0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dElubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxp
bmVzLmgKaW5kZXggNDFjMmJmZGY2ZWU1Li4zNmNiMzkyOGU2MzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaApAQCAtMTIwLDcgKzEy
MCw3IEBAIEluc3RhbmNlVHlwZSogdW53cmFwRm9yTGVnYWN5SW50bENvbnN0cnVjdG9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJl
c3VsdFR5cGU+Ci1SZXN1bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgc3RkOjppbml0
aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMs
IEFTQ0lJTGl0ZXJhbCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCitSZXN1
bHRUeXBlIGludGxPcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgc3RkOjppbml0aWFsaXplcl9saXN0PHN0
ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggbm90Rm91bmRNZXNzYWdlLCBSZXN1bHRUeXBlIGZhbGxiYWNrKQogewogICAgIC8v
IEdldE9wdGlvbiAob3B0aW9ucywgcHJvcGVydHksIHR5cGU9InN0cmluZyIsIHZhbHVlcywgZmFs
bGJhY2spCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtZ2V0b3B0
aW9uCkBAIC0xNTIsNyArMTUyLDcgQEAgUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU4KIH0KIAogdGVt
cGxhdGU8dHlwZW5hbWUgUmVzdWx0VHlwZT4KLVJlc3VsdFR5cGUgaW50bFN0cmluZ09yQm9vbGVh
bk9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywg
UHJvcGVydHlOYW1lIHByb3BlcnR5LCBSZXN1bHRUeXBlIHRydWVWYWx1ZSwgUmVzdWx0VHlwZSBm
YWxzeVZhbHVlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwg
UmVzdWx0VHlwZT4+IHZhbHVlcywgQVNDSUlMaXRlcmFsIG5vdEZvdW5kTWVzc2FnZSwgUmVzdWx0
VHlwZSBmYWxsYmFjaykKK1Jlc3VsdFR5cGUgaW50bFN0cmluZ09yQm9vbGVhbk9wdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1l
IHByb3BlcnR5LCBSZXN1bHRUeXBlIHRydWVWYWx1ZSwgUmVzdWx0VHlwZSBmYWxzeVZhbHVlLCBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8c3RkOjpwYWlyPEFTQ0lJTGl0ZXJhbCwgUmVzdWx0VHlwZT4+
IHZhbHVlcywgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5
cGUgZmFsbGJhY2spCiB7CiAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtbnVt
YmVyZm9ybWF0LXYzL291dC9uZWdvdGlhdGlvbi9kaWZmLmh0bWwjc2VjLWdldHN0cmluZ29yYm9v
bGVhbm9wdGlvbgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuY3BwCmluZGV4IGUzMjhhMWMxZjQwYy4uZWI5ODU1MTQ4
Mzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRp
dmVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
UmVsYXRpdmVUaW1lRm9ybWF0LmNwcApAQCAtMTc0LDcgKzE3NCw3IEBAIHZvaWQgSW50bFJlbGF0
aXZlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZVJlbGF0aXZlVGltZUZvcm1hdChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsCiAgICAgfQogfQogCi1BU0NJSUxpdGVyYWwgSW50bFJlbGF0aXZlVGltZUZvcm1h
dDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxS
ZWxhdGl2ZVRpbWVGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogewogICAgIHN3aXRj
aCAoc3R5bGUpIHsKICAgICBjYXNlIFN0eWxlOjpMb25nOgpAQCAtMTg1LDcgKzE4NSw3IEBAIEFT
Q0lJTGl0ZXJhbCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHls
ZSkKICAgICAgICAgcmV0dXJuICJuYXJyb3ciX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLWludGwucmVsYXRpdmV0aW1lZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlv
bnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2
ZVRpbWVGb3JtYXQuaAppbmRleCA5ZWQwNjE1ODAzZjYuLmEwMjhkMzQ1ZGJkYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxSZWxhdGl2ZVRpbWVGb3Jt
YXQuaApAQCAtNzUsNyArNzUsNyBAQCBwcml2YXRlOgogICAgIHVzaW5nIFVSZWxhdGl2ZURhdGVU
aW1lRm9ybWF0dGVyRGVsZXRlciA9IElDVURlbGV0ZXI8dXJlbGRhdGVmbXRfY2xvc2U+OwogICAg
IHVzaW5nIFVOdW1iZXJGb3JtYXREZWxldGVyID0gSUNVRGVsZXRlcjx1bnVtX2Nsb3NlPjsKIAot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOworICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0eWxlU3RyaW5nKFN0eWxlKTsKIAogICAgIHN0ZDo6dW5p
cXVlX3B0cjxVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlciwgVVJlbGF0aXZlRGF0ZVRpbWVGb3Jt
YXR0ZXJEZWxldGVyPiBtX3JlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0ZXI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPFVOdW1iZXJGb3JtYXQsIFVOdW1iZXJGb3JtYXREZWxldGVyPiBtX251bWJlckZvcm1h
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5jcHAK
aW5kZXggOGQ4NWZlN2M5Y2MyLi43YzFlY2EyYTE0ZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCkBAIC0xNTAsNyArMTUwLDcgQEAgSlNP
YmplY3QqIEludGxTZWdtZW50ZXI6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KSBjb25zdAogICAgIHJldHVybiBvcHRpb25zOwogfQogCi1BU0NJSUxpdGVyYWwg
SW50bFNlZ21lbnRlcjo6Z3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkp
CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxTZWdtZW50ZXI6OmdyYW51bGFyaXR5U3RyaW5n
KEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIHN3aXRjaCAoZ3JhbnVsYXJpdHkpIHsK
ICAgICBjYXNlIEdyYW51bGFyaXR5OjpHcmFwaGVtZToKQEAgLTE2MSw3ICsxNjEsNyBAQCBBU0NJ
SUxpdGVyYWwgSW50bFNlZ21lbnRlcjo6Z3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkgZ3Jh
bnVsYXJpdHkpCiAgICAgICAgIHJldHVybiAic2VudGVuY2UiX3M7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiBKU09iamVjdCogSW50
bFNlZ21lbnRlcjo6Y3JlYXRlU2VnbWVudERhdGFPYmplY3QoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNTdHJpbmcqIHN0cmluZywgaW50MzJfdCBzdGFydEluZGV4LCBpbnQzMl90IGVu
ZEluZGV4LCBVQnJlYWtJdGVyYXRvciYgc2VnbWVudGVyLCBHcmFudWxhcml0eSBncmFudWxhcml0
eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50
ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuaAppbmRl
eCBlNzMxMWFmODFiYTIuLjBjYmFhMzYzNmQyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFNlZ21lbnRlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuaApAQCAtNjgsNyArNjgsNyBAQCBwcml2YXRlOgogICAg
IEludGxTZWdtZW50ZXIoVk0mLCBTdHJ1Y3R1cmUqKTsKICAgICB2b2lkIGZpbmlzaENyZWF0aW9u
KFZNJik7CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGdyYW51bGFyaXR5U3RyaW5nKEdyYW51
bGFyaXR5KTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBncmFudWxhcml0eVN0
cmluZyhHcmFudWxhcml0eSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VUJyZWFrSXRlcmF0b3Is
IFVCcmVha0l0ZXJhdG9yRGVsZXRlcj4gbV9zZWdtZW50ZXI7CiAgICAgU3RyaW5nIG1fbG9jYWxl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheS5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5LmNwcAppbmRleCAzMTc5ODVm
ZmVkNmEuLmE3YTJiMjkwMjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNBcnJheS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNB
cnJheS5jcHAKQEAgLTUwOCw3ICs1MDgsNyBAQCBib29sIEpTQXJyYXk6OmFwcGVuZE1lbWNweShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBWTSYgdm0sIHVuc2lnbmVkIHN0YXJ0SQogICAg
IGNoZWNrZWROZXdMZW5ndGggKz0gb3RoZXJMZW5ndGg7CiAKICAgICBpZiAoY2hlY2tlZE5ld0xl
bmd0aC5oYXNPdmVyZmxvd2VkKCkpIHsKLSAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVk
VGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IpKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIFN0cmluZyB7
IExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IgfSkpOwogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIHVuc2lnbmVkIG5ld0xlbmd0aCA9IGNoZWNrZWROZXdM
ZW5ndGg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMu
aAppbmRleCBlZGU0ZGYwMjkwMzguLjBmMThhZTFmMTg4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0FycmF5SW5saW5lcy5oCkBAIC0xNDUsNyArMTQ1LDcgQEAgQUxX
QVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IE1BWF9B
UlJBWV9JTkRFWCkpIHsKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRleCh0
aGlzLCBnbG9iYWxPYmplY3QsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgaWYg
KCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVuZ3RoRXhj
ZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xNjcsNyArMTY3LDcgQEAg
QUxXQVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+IE1B
WF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJbmRl
eCh0aGlzLCBnbG9iYWxPYmplY3QsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAg
aWYgKCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVuZ3Ro
RXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAgIHRo
cm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9y
IH0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yMDIsNyArMjAyLDcg
QEAgQUxXQVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgaWYgKFVOTElLRUxZKGxlbmd0aCA+
IE1BWF9BUlJBWV9JTkRFWCkpIHsKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZtKS0+cHV0QnlJ
bmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIGxlbmd0aCwgdmFsdWUsIHRydWUpOwogICAgICAgICAg
ICAgaWYgKCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlv
bihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVu
Z3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAg
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVy
cm9yIH0pKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0yNDMsNyArMjQz
LDcgQEAgQUxXQVlTX0lOTElORSB2b2lkIEpTQXJyYXk6OnB1c2hJbmxpbmUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB2YWwKICAgICAgICAgICAgIG1ldGhvZFRhYmxlKHZt
KS0+cHV0QnlJbmRleCh0aGlzLCBnbG9iYWxPYmplY3QsIHN0b3JhZ2UtPmxlbmd0aCgpLCB2YWx1
ZSwgdHJ1ZSk7CiAgICAgICAgICAgICAvLyBQZXIgRVM1LjEgMTUuNC40Ljcgc3RlcCA2ICYgMTUu
NC41LjEgc3RlcCAzLmQuCiAgICAgICAgICAgICBpZiAoIXNjb3BlLmV4Y2VwdGlvbigpKQotICAg
ICAgICAgICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0
aEVycm9yKSk7CisgICAgICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgY3JlYXRlUmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIFN0cmluZyB7IExlbmd0aEV4Y2Vl
ZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IgfSkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBmYTYyM2UwOTA3NGMuLmQ5ZDJhZjNhNjI1ZCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtNjkxLDcg
KzY5MSw3IEBAIHN0YXRpYyBPYmplY3RQcm9wZXJ0eUNvbmRpdGlvbiBzZXR1cEFkYXB0aXZlV2F0
Y2hwb2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqCiB0ZW1wbGF0ZTxFcnJvclR5cGUgZXJy
b3JUeXBlPgogdm9pZCBKU0dsb2JhbE9iamVjdDo6aW5pdGlhbGl6ZUVycm9yQ29uc3RydWN0b3Io
TGF6eUNsYXNzU3RydWN0dXJlOjpJbml0aWFsaXplciYgaW5pdCkKIHsKLSAgICBpbml0LnNldFBy
b3RvdHlwZShOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIE5hdGl2ZUVycm9y
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9lcnJvclN0cnVjdHVy
ZS5wcm90b3R5cGUodGhpcykpLCBlcnJvclR5cGVOYW1lKGVycm9yVHlwZSkpKTsKKyAgICBpbml0
LnNldFByb3RvdHlwZShOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIE5hdGl2
ZUVycm9yUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgbV9lcnJvclN0
cnVjdHVyZS5wcm90b3R5cGUodGhpcykpLCBTdHJpbmcgeyBlcnJvclR5cGVOYW1lKGVycm9yVHlw
ZSkgfSkpOwogICAgIGluaXQuc2V0U3RydWN0dXJlKEVycm9ySW5zdGFuY2U6OmNyZWF0ZVN0cnVj
dHVyZShpbml0LnZtLCB0aGlzLCBpbml0LnByb3RvdHlwZSkpOwogICAgIGluaXQuc2V0Q29uc3Ry
dWN0b3IoTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGUoaW5pdC52bSwg
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcjxlcnJvclR5cGU+OjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52
bSwgdGhpcywgbV9lcnJvclN0cnVjdHVyZS5jb25zdHJ1Y3Rvcih0aGlzKSksIGpzQ2FzdDxOYXRp
dmVFcnJvclByb3RvdHlwZSo+KGluaXQucHJvdG90eXBlKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKaW5kZXggZDMzYjcyMjg2NGE4Li4yNmJkZjEyZTliNzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaApAQCAtNzUsNiArNzUs
OCBAQCBzdHJ1Y3QgSGFzaFRhYmxlOwogc3RydWN0IEhhc2hUYWJsZVZhbHVlOwogCiBKU19FWFBP
UlRfUFJJVkFURSBFeGNlcHRpb24qIHRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhy
b3dTY29wZSYsIGNvbnN0IFN0cmluZyYpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0
aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWwp
OworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9i
amVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoKTsKIGV4dGVybiBKU19F
WFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgTm9uRXh0ZW5zaWJsZU9iamVjdFByb3Bl
cnR5RGVmaW5lRXJyb3I7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRl
cmFsIFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9SVF9QUklWQVRF
IGNvbnN0IEFTQ0lJTGl0ZXJhbCBSZWFkb25seVByb3BlcnR5Q2hhbmdlRXJyb3I7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0
b3IuY3BwCmluZGV4IDIxM2Q5ZmI3YTY4YS4uM2I1MTgwOWJjZTcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNw
cApAQCAtMTU1LDcgKzE1NSw3IEBAIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBlPjo6
TmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVjdHVyZSogc3RyCiAKIHZvaWQgTmF0
aXZlRXJyb3JDb25zdHJ1Y3RvckJhc2U6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgTmF0aXZlRXJy
b3JQcm90b3R5cGUqIHByb3RvdHlwZSwgRXJyb3JUeXBlIGVycm9yVHlwZSkKIHsKLSAgICBCYXNl
OjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgZXJyb3JUeXBlTmFtZShlcnJvclR5cGUpLCBQcm9wZXJ0
eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAgIEJhc2U6OmZp
bmlzaENyZWF0aW9uKHZtLCAxLCBTdHJpbmcgeyBlcnJvclR5cGVOYW1lKGVycm9yVHlwZSkgfSwg
UHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBB
U1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogICAgIAogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHByb3RvdHlwZSwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkg
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKaW5kZXggZjIxOWI5MzI2YmJk
Li44YmExMTIyMjE0ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTnVsbFNldHRlckZ1bmN0aW9uLmNwcApAQCAtOTQsNyArOTQsNyBAQCBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oY2FsbFRocm93RXJyb3IsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbQogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkIGZyb20gSUMuIEFuZCB3ZSBkbyBub3Qg
d2FudCB0byBpbmNsdWRlIHRoaXMgZnJhbWUgaW4gRXJyb3IncyBzdGFjay4KICAgICBjb25zdGV4
cHIgYm9vbCB1c2VDdXJyZW50RnJhbWUgPSBmYWxzZTsKLSAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LCB2bSwg
Z2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZShFcnJvclR5cGU6OlR5cGVFcnJvciksIFJlYWRv
bmx5UHJvcGVydHlXcml0ZUVycm9yLCBKU1ZhbHVlKCksIG51bGxwdHIsIFR5cGVOb3RoaW5nLCBF
cnJvclR5cGU6OlR5cGVFcnJvciwgdXNlQ3VycmVudEZyYW1lKSk7CisgICAgdGhyb3dFeGNlcHRp
b24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVj
dCwgdm0sIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJyb3JUeXBlOjpUeXBlRXJyb3Ip
LCBTdHJpbmcgeyBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvciB9LCBKU1ZhbHVlKCksIG51bGxw
dHIsIFR5cGVOb3RoaW5nLCBFcnJvclR5cGU6OlR5cGVFcnJvciwgdXNlQ3VycmVudEZyYW1lKSk7
CiAgICAgcmV0dXJuIHsgfTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvRm9yd2Fy
ZC5oIGIvU291cmNlL1dURi93dGYvRm9yd2FyZC5oCmluZGV4IDNjZTc2MTI0MmMzMi4uOWU5NjE0
NDMwODU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9Gb3J3YXJkLmgKKysrIGIvU291cmNl
L1dURi93dGYvRm9yd2FyZC5oCkBAIC0yNiw2ICsyNiw3IEBACiBuYW1lc3BhY2UgV1RGIHsKIAog
Y2xhc3MgQVNDSUlMaXRlcmFsOworY2xhc3MgQVNDSUlMaXRlcmFsV2l0aExlbmd0aDsKIGNsYXNz
IEFic3RyYWN0TG9ja2VyOwogY2xhc3MgQXRvbVN0cmluZzsKIGNsYXNzIEF0b21TdHJpbmdJbXBs
OwpAQCAtMTIxLDYgKzEyMiw3IEBAIHRlbXBsYXRlPGNsYXNzPiBjbGFzcyB1bmV4cGVjdGVkOwog
fX19IC8vIG5hbWVzcGFjZSBzdGQ6OmV4cGVyaW1lbnRhbDo6ZnVuZGFtZW50YWxzX3YzCiAKIHVz
aW5nIFdURjo6QVNDSUlMaXRlcmFsOwordXNpbmcgV1RGOjpBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
OwogdXNpbmcgV1RGOjpBYnN0cmFjdExvY2tlcjsKIHVzaW5nIFdURjo6QXRvbVN0cmluZzsKIHVz
aW5nIFdURjo6QXRvbVN0cmluZ0ltcGw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L0FTQ0lJTGl0ZXJhbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5jcHAK
aW5kZXggNjg3YzE3OWE1YzE0Li41NWRjMzI5OTA5NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvQVNDSUlMaXRlcmFsLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJ
TGl0ZXJhbC5jcHAKQEAgLTMwLDYgKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXVEYgewogCit2b2lk
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6OmR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKK3sK
KyAgICBvdXQucHJpbnQobV9jaGFyYWN0ZXJzKTsKK30KKwogdm9pZCBBU0NJSUxpdGVyYWw6OmR1
bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBvdXQucHJpbnQobV9jaGFyYWN0ZXJz
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmggYi9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCmluZGV4IDVjMjM3ZjMwOWUxYi4uNzA3MDk2
NWYxZjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5oCisr
KyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQVNDSUlMaXRlcmFsLmgKQEAgLTMzLDggKzMzLDQ2IEBA
IG5hbWVzcGFjZSBXVEYgewogCiBjbGFzcyBQcmludFN0cmVhbTsKIAorY2xhc3MgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCBmaW5hbCB7CitwdWJsaWM6CisgICAgb3BlcmF0b3IgY29uc3QgY2hhcioo
KSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KKworICAgIHN0YXRpYyBjb25zdGV4cHIg
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBmcm9tTGl0ZXJhbFVuc2FmZShjb25zdCBjaGFyKiBzdHJp
bmcsIHNpemVfdCBsZW5ndGgpCisgICAgeworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCB7IHN0cmluZywgbGVuZ3RoIH07CisgICAgfQorCisgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHZvaWQgZHVtcChQcmludFN0cmVhbSYgb3V0KSBjb25zdDsKKworICAgIHN0YXRpYyBjb25z
dGV4cHIgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBudWxsKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHsgbnVsbHB0ciwgMCB9OworICAgIH0KKworICAgIGNv
bnN0ZXhwciBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICFtX2NoYXJhY3RlcnM7IH0KKwor
ICAgIGNvbnN0ZXhwciBjb25zdCBjaGFyKiBjaGFyYWN0ZXJzKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFyYWN0ZXJzOyB9CisgICAgY29uc3QgTENoYXIqIGNoYXJhY3RlcnM4KCkgY29uc3QgeyByZXR1
cm4gYml0d2lzZV9jYXN0PGNvbnN0IExDaGFyKj4obV9jaGFyYWN0ZXJzKTsgfQorICAgIHNpemVf
dCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgY29uc3RleHByIGNo
YXIgY2hhcmFjdGVyQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVy
c1tpbmRleF07IH0KKworcHJpdmF0ZToKKyAgICBjb25zdGV4cHIgQVNDSUlMaXRlcmFsV2l0aExl
bmd0aChjb25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbGVuZ3RoKQorICAgICAgICA6IG1f
Y2hhcmFjdGVycyhjaGFyYWN0ZXJzKQorICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICB7
IH0KKworICAgIGNvbnN0IGNoYXIqIG1fY2hhcmFjdGVyczsKKyAgICBzaXplX3QgbV9sZW5ndGg7
Cit9OworCiBjbGFzcyBBU0NJSUxpdGVyYWwgZmluYWwgewogcHVibGljOgorICAgIGNvbnN0ZXhw
ciBBU0NJSUxpdGVyYWwoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBvdGhlcikKKyAgICAgICAgOiBt
X2NoYXJhY3RlcnMob3RoZXIuY2hhcmFjdGVycygpKQorICAgIHsgfQorCiAgICAgb3BlcmF0b3Ig
Y29uc3QgY2hhciooKSBjb25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnM7IH0KIAogICAgIHN0YXRp
YyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGZyb21MaXRlcmFsVW5zYWZlKGNvbnN0IGNoYXIqIHN0
cmluZykKQEAgLTY1LDE1ICsxMDMsMTMgQEAgcHJpdmF0ZToKIAogaW5saW5lIG5hbWVzcGFjZSBT
dHJpbmdMaXRlcmFscyB7CiAKLWNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgb3BlcmF0b3IiIiBfcyhj
b25zdCBjaGFyKiBjaGFyYWN0ZXJzLCBzaXplX3QgbikKK2NvbnN0ZXhwciBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIG9wZXJhdG9yIiIgX3MoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxl
bmd0aCkKIHsKICNpZiBBU1NFUlRfRU5BQkxFRAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
bjsgKytpKQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpCiAgICAgICAg
IEFTU0VSVF9VTkRFUl9DT05TVEVYUFJfQ09OVEVYVChpc0FTQ0lJKGNoYXJhY3RlcnNbaV0pKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKG4pOwogI2VuZGlmCi0gICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2hhcmFjdGVycyk7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbFdpdGhMZW5ndGg6OmZyb21MaXRlcmFsVW5zYWZlKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9
CiAKIH0gLy8gaW5saW5lIFN0cmluZ0xpdGVyYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvQXRvbVN0cmluZy5oCmlu
ZGV4IDMzYjBlNTk1OGQ4My4uMmI0ZjMzNzc0OWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L0F0b21TdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0F0b21TdHJpbmcu
aApAQCAtNzMsNyArNzMsMTIgQEAgcHVibGljOgogICAgICAgICBDT01QSUxFX0FTU0VSVCgoY2hh
cmFjdGVyQ291bnQgLSAxIDw9ICgodW5zaWduZWQofjApIC0gc2l6ZW9mKFN0cmluZ0ltcGwpKSAv
IHNpemVvZihMQ2hhcikpKSwgQXRvbVN0cmluZ0Zyb21MaXRlcmFsQ2Fubm90T3ZlcmZsb3cpOwog
ICAgIH0KIAotICAgIEF0b21TdHJpbmcoQVNDSUlMaXRlcmFsIGxpdGVyYWwpCisgICAgZXhwbGlj
aXQgQXRvbVN0cmluZyhBU0NJSUxpdGVyYWwgbGl0ZXJhbCkKKyAgICAgICAgOiBtX3N0cmluZyhB
dG9tU3RyaW5nSW1wbDo6YWRkTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0ZXJhbC5s
ZW5ndGgoKSkpCisgICAgeworICAgIH0KKworICAgIEF0b21TdHJpbmcoQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBsaXRlcmFsKQogICAgICAgICA6IG1fc3RyaW5nKEF0b21TdHJpbmdJbXBsOjphZGRM
aXRlcmFsKGxpdGVyYWwuY2hhcmFjdGVycygpLCBsaXRlcmFsLmxlbmd0aCgpKSkKICAgICB7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5o
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCmluZGV4IGUyYzI1NGE3
NjU2MC4uYjk0NGZiY2M5OTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0
ZS5oCkBAIC03NSw2ICs3NSwyMyBAQCBwcml2YXRlOgogICAgIFVDaGFyIG1fY2hhcmFjdGVyOwog
fTsKIAordGVtcGxhdGU8PiBjbGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoLCB2b2lkPiB7CitwdWJsaWM6CisgICAgU3RyaW5nVHlwZUFkYXB0ZXIoQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCBsaXRlcmFsKQorICAgICAgICA6IG1fY2hhcmFjdGVycyhyZWludGVycHJl
dF9jYXN0PGNvbnN0IExDaGFyKj4obGl0ZXJhbC5jaGFyYWN0ZXJzKCkpKQorICAgICAgICAsIG1f
bGVuZ3RoKGxpdGVyYWwubGVuZ3RoKCkpCisgICAgeworICAgIH0KKworICAgIHVuc2lnbmVkIGxl
bmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisgICAgYm9vbCBpczhCaXQoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4g
dm9pZCB3cml0ZVRvKENoYXJhY3RlclR5cGUqIGRlc3RpbmF0aW9uKSBjb25zdCB7IFN0cmluZ0lt
cGw6OmNvcHlDaGFyYWN0ZXJzKGRlc3RpbmF0aW9uLCBtX2NoYXJhY3RlcnMsIG1fbGVuZ3RoKTsg
fQorCitwcml2YXRlOgorICAgIGNvbnN0IExDaGFyKiBtX2NoYXJhY3RlcnM7CisgICAgdW5zaWdu
ZWQgbV9sZW5ndGg7Cit9OworCiB0ZW1wbGF0ZTw+IGNsYXNzIFN0cmluZ1R5cGVBZGFwdGVyPGNv
bnN0IExDaGFyKiwgdm9pZD4gewogcHVibGljOgogICAgIFN0cmluZ1R5cGVBZGFwdGVyKGNvbnN0
IExDaGFyKiBjaGFyYWN0ZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmNwcCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKaW5kZXggZDU4
NDUxMDBjZTI2Li40NjIwMTNkZTViNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nSW1wbC5jcHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApA
QCAtMTYzLDExICsxNjMsNiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwoY29uc3QgY2hhciogY2hhcmFjdGVycykKICAgICByZXR1cm4gY3JlYXRlRnJvbUxp
dGVyYWwoY2hhcmFjdGVycywgc3RybGVuKGNoYXJhY3RlcnMpKTsKIH0KIAotUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKEFTQ0lJTGl0ZXJhbCBsaXRlcmFsKQot
ewotICAgIHJldHVybiBjcmVhdGVGcm9tTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0
ZXJhbC5sZW5ndGgoKSk7Ci19Ci0KIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVX
aXRob3V0Q29weWluZyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQog
ewogICAgIGlmICghbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCBjNzZjZDUy
MzY3NjEuLjIyMjliY2UzODFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKQEAgLTI1MCw3
ICsyNTAsOCBAQCBwdWJsaWM6CiAgICAgLy8gRklYTUU6IFJlcGxhY2UgY2FsbHMgdG8gdGhlc2Ug
b3ZlcmxvYWRzIG9mIGNyZWF0ZUZyb21MaXRlcmFsIHRvIGNyZWF0ZVdpdGhvdXRDb3B5aW5nIGlu
c3RlYWQuCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29u
c3QgY2hhciopOwotICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+
IGNyZWF0ZUZyb21MaXRlcmFsKEFTQ0lJTGl0ZXJhbCk7CisgICAgc3RhdGljIFJlZjxTdHJpbmdJ
bXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChBU0NJSUxpdGVyYWwgbGl0ZXJhbCkgeyByZXR1cm4gY3Jl
YXRlRnJvbUxpdGVyYWwobGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpOyB9
CisgICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIGxpdGVyYWwpIHsgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGxpdGVyYWwu
Y2hhcmFjdGVycygpLCBsaXRlcmFsLmxlbmd0aCgpKTsgfQogCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNo
YXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IExDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3Jz
LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oCmluZGV4IDI1NTRiYjRk
M2YyYy4uMjJmMTNjODNiYzQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmlu
Z09wZXJhdG9ycy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nT3BlcmF0b3JzLmgK
QEAgLTE2NCw2ICsxNjQsMjggQEAgaW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIFN0
cmluZ0FwcGVuZDxVLCBWPj4gb3BlcmF0b3IrKGNvbnN0IEFTQ0lJTGl0ZXIKICAgICByZXR1cm4g
U3RyaW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbCwgU3RyaW5nQXBwZW5kPFUsIFY+PihzdHJpbmcxLCBz
dHJpbmcyKTsKIH0KIAoraW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
LCBTdHJpbmc+IG9wZXJhdG9yKyhjb25zdCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoJiBzdHJpbmcx
LCBjb25zdCBTdHJpbmcmIHN0cmluZzIpCit7CisgICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoLCBTdHJpbmc+KHN0cmluZzEsIHN0cmluZzIpOworfQorCitpbmxp
bmUgU3RyaW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIEF0b21TdHJpbmc+IG9wZXJh
dG9yKyhjb25zdCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoJiBzdHJpbmcxLCBjb25zdCBBdG9tU3Ry
aW5nJiBzdHJpbmcyKQoreworICAgIHJldHVybiBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsV2l0
aExlbmd0aCwgQXRvbVN0cmluZz4oc3RyaW5nMSwgc3RyaW5nMik7Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIFQsIHR5cGVuYW1lID0gc3RkOjplbmFibGVfaWZfdDxzdGQ6OmlzX3NhbWU8c3RkOjpk
ZWNheV90PFQ+LCBTdHJpbmdWaWV3Pjo6dmFsdWU+PgoraW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoLCBTdHJpbmdWaWV3PiBvcGVyYXRvcisoY29uc3QgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCYgc3RyaW5nMSwgVCBzdHJpbmcyKQoreworICAgIHJldHVybiBTdHJpbmdB
cHBlbmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nVmlldz4oc3RyaW5nMSwgc3RyaW5n
Mik7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFUsIHR5cGVuYW1lIFY+CitpbmxpbmUgU3RyaW5n
QXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIFN0cmluZ0FwcGVuZDxVLCBWPj4gb3BlcmF0
b3IrKGNvbnN0IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgmIHN0cmluZzEsIGNvbnN0IFN0cmluZ0Fw
cGVuZDxVLCBWPiYgc3RyaW5nMikKK3sKKyAgICByZXR1cm4gU3RyaW5nQXBwZW5kPEFTQ0lJTGl0
ZXJhbFdpdGhMZW5ndGgsIFN0cmluZ0FwcGVuZDxVLCBWPj4oc3RyaW5nMSwgc3RyaW5nMik7Cit9
CisKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBTdHJpbmdBcHBlbmQ8U3RyaW5nLCBUPiBvcGVyYXRv
cisoY29uc3QgU3RyaW5nJiBzdHJpbmcxLCBUIHN0cmluZzIpCiB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5n
Vmlldy5oCmluZGV4IDQ0OGFmNzY4OWY3NC4uMzEzMWY1YWM1YmIwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0
cmluZ1ZpZXcuaApAQCAtNjksNiArNjksNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nVmlldyhjb25z
dCBjaGFyKik7CiAgICAgU3RyaW5nVmlldyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsK
ICAgICBleHBsaWNpdCBTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCk7CisgICAgZXhwbGljaXQgU3Ry
aW5nVmlldyhBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoKTsKIAogICAgIHN0YXRpYyBTdHJpbmdWaWV3
IGVtcHR5KCk7CiAKQEAgLTM2MCw2ICszNjEsMTEgQEAgaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmlu
Z1ZpZXcoQVNDSUlMaXRlcmFsIHN0cmluZykKICAgICBpbml0aWFsaXplKHN0cmluZy5jaGFyYWN0
ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOwogfQogCitpbmxpbmUgU3RyaW5nVmlldzo6U3RyaW5n
VmlldyhBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0cmluZykKK3sKKyAgICBpbml0aWFsaXplKHN0
cmluZy5jaGFyYWN0ZXJzOCgpLCBzdHJpbmcubGVuZ3RoKCkpOworfQorCiBpbmxpbmUgU3RyaW5n
Vmlldzo6U3RyaW5nVmlldyhjb25zdCBTdHJpbmdJbXBsJiBzdHJpbmcpCiB7CiAgICAgc2V0VW5k
ZXJseWluZ1N0cmluZygmc3RyaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUxMWI5
YzE2NGExYS4uM2ZjZTY4NDUzODI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKQEAgLTk3LDcg
Kzk3LDggQEAgcHVibGljOgogICAgIFN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKik7CiAKICAgICAv
LyBDb25zdHJ1Y3QgYSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgotICAg
IFdURl9FWFBPUlRfUFJJVkFURSBTdHJpbmcoQVNDSUlMaXRlcmFsKTsKKyAgICBXVEZfRVhQT1JU
X1BSSVZBVEUgZXhwbGljaXQgU3RyaW5nKEFTQ0lJTGl0ZXJhbCk7CisgICAgU3RyaW5nKEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggc3RyaW5nKSA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVGcm9t
TGl0ZXJhbChzdHJpbmcpKSB7IH0KIAogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyBmcm9tIGEg
Y29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCiAgICAgLy8gVGhpcyBpcyB0aGUgImJpZyIgdmVyc2lv
bjogcHV0cyB0aGUgbGVuZ3RoIGluIHRoZSBmdW5jdGlvbiBjYWxsIGFuZCBnZW5lcmF0ZXMgYmln
Z2VyIGNvZGUuCkBAIC0zNjEsOSArMzYyLDExIEBAIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgU3RyaW5nJiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpCiBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgTENoYXIqIGIpIHsg
cmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25z
dCBTdHJpbmcmIGEsIGNvbnN0IGNoYXIqIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCByZWlu
dGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgp
LCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYi5jaGFyYWN0ZXJzKCkpKTsgfQoraW5s
aW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGggYikgeyByZXR1cm4gZXF1YWwoYS5pbXBsKCksIGIuY2hhcmFjdGVycygpLCBiLmxlbmd0aCgp
KTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBMQ2hhciogYSwgY29uc3QgU3RyaW5n
JiBiKSB7IHJldHVybiBlcXVhbChhLCBiLmltcGwoKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9y
PT0oY29uc3QgY2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChyZWludGVy
cHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYSksIGIuaW1wbCgpKTsgfQogaW5saW5lIGJvb2wgb3Bl
cmF0b3I9PShBU0NJSUxpdGVyYWwgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChy
ZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYS5jaGFyYWN0ZXJzKCkpLCBiLmltcGwoKSk7
IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhLCBjb25z
dCBTdHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmNoYXJhY3RlcnMoKSwgYS5s
ZW5ndGgoKSk7IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5lIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBhLCBjb25zdCBT
dHJpbmcmIGIpIHsgcmV0dXJuIGVxdWFsKGIuaW1wbCgpLCBhLmRhdGEoKSwgYS5zaXplKCkpOyB9
CiB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yPT0o
Y29uc3QgU3RyaW5nJiBhLCBjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2FwYWNpdHk+JiBiKSB7
IHJldHVybiBiID09IGE7IH0KIApAQCAtMzcxLDkgKzM3NCwxMSBAQCBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1YWwo
YS5pbXBsKAogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IExD
aGFyKiBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIGIpOyB9CiBpbmxpbmUgYm9vbCBvcGVy
YXRvciE9KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgY2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEu
aW1wbCgpLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oYikpOyB9CiBpbmxpbmUgYm9v
bCBvcGVyYXRvciE9KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRlcmFsIGIpIHsgcmV0dXJuICFl
cXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIuY2hhcmFjdGVy
cygpKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3RyaW5nJiBhLCBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgYi5jaGFyYWN0ZXJz
KCksIGIubGVuZ3RoKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IExDaGFyKiBh
LCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChhLCBiLmltcGwoKSk7IH0KIGlubGlu
ZSBib29sIG9wZXJhdG9yIT0oY29uc3QgY2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVy
biAhZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpLCBiLmltcGwoKSk7IH0K
IGlubGluZSBib29sIG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IFN0cmluZyYgYikg
eyByZXR1cm4gIWVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihhLmNoYXJhY3Rl
cnMoKSksIGIuaW1wbCgpKTsgfQoraW5saW5lIGJvb2wgb3BlcmF0b3IhPShBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGIuaW1wbCgpLCBh
LmNoYXJhY3RlcnMoKSwgYS5sZW5ndGgoKSk7IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBh
Y2l0eT4gaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBWZWN0b3I8Y2hhciwgaW5saW5lQ2Fw
YWNpdHk+JiBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogdGVtcGxh
dGU8c2l6ZV90IGlubGluZUNhcGFjaXR5PiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0
cmluZyYgYSwgY29uc3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYikgeyByZXR1cm4g
YiAhPSBhOyB9CiAKQEAgLTYyOCw5ICs2MzMsOSBAQCB0ZW1wbGF0ZTx1bnNpZ25lZCBsZW5ndGg+
IGlubGluZSBib29sIHN0YXJ0c1dpdGhMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UoY29uc3QgUwog
CiBpbmxpbmUgbmFtZXNwYWNlIFN0cmluZ0xpdGVyYWxzIHsKIAotaW5saW5lIFN0cmluZyBvcGVy
YXRvciIiIF9zdHIoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90KQoraW5saW5lIFN0cmlu
ZyBvcGVyYXRvciIiIF9zdHIoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IGxlbmd0aCkK
IHsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpmcm9tTGl0ZXJhbFVuc2FmZShjaGFyYWN0ZXJz
KTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6ZnJvbUxpdGVyYWxVbnNhZmUo
Y2hhcmFjdGVycywgbGVuZ3RoKTsKIH0KIAogfSAvLyBpbmxpbmUgU3RyaW5nTGl0ZXJhbHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAppbmRleCBiMGQx
ZDgyZThlZWMuLjFhMjg4NTZhOTJhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9mZXRjaC9GZXRjaFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0
Y2gvRmV0Y2hSZXF1ZXN0LmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IEZldGNoUmVxdWVzdDo6aW5pdGlhbGl6ZU9wdGlvbnMoY29uc3QgSW5pdCYgaW5pdCkKIAogc3Rh
dGljIGlubGluZSBzdGQ6Om9wdGlvbmFsPEV4Y2VwdGlvbj4gcHJvY2Vzc0ludmFsaWRTaWduYWwo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKIHsKLSAgICBBU0NJSUxpdGVyYWwgbWVz
c2FnZSB7ICJGZXRjaFJlcXVlc3RJbml0LnNpZ25hbCBzaG91bGQgYmUgdW5kZWZpbmVkLCBudWxs
IG9yIGFuIEFib3J0U2lnbmFsIG9iamVjdC4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJl
bGVhc2UuIl9zIH07CisgICAgYXV0byBtZXNzYWdlID0gIkZldGNoUmVxdWVzdEluaXQuc2lnbmFs
IHNob3VsZCBiZSB1bmRlZmluZWQsIG51bGwgb3IgYW4gQWJvcnRTaWduYWwgb2JqZWN0LiBUaGlz
IHdpbGwgdGhyb3cgaW4gYSBmdXR1cmUgcmVsZWFzZS4iX3M7CiAgICAgY29udGV4dC5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBtZXNz
YWdlKTsKIAogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkgJiYgZG93bmNhc3Q8RG9jdW1l
bnQ+KGNvbnRleHQpLnF1aXJrcygpLnNob3VsZElnbm9yZUludmFsaWRTaWduYWwoKSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlvbi9HZW9sb2NhdGlvbi5jcHAKaW5k
ZXggY2QzNzJmNDM2OTFhLi43MjYyYTUyZmMxYWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvZ2VvbG9jYXRpb24vR2VvbG9jYXRpb24uY3BwCkBAIC0zODMsNyArMzgzLDcgQEAg
Ym9vbCBHZW9sb2NhdGlvbjo6c2hvdWxkQmxvY2tHZW9sb2NhdGlvblJlcXVlc3RzKCkKIHZvaWQg
R2VvbG9jYXRpb246OnN0YXJ0UmVxdWVzdChHZW9Ob3RpZmllciogbm90aWZpZXIpCiB7CiAgICAg
aWYgKHNob3VsZEJsb2NrR2VvbG9jYXRpb25SZXF1ZXN0cygpKSB7Ci0gICAgICAgIG5vdGlmaWVy
LT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0
aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIG9yaWdpbkNhbm5vdFJlcXVlc3RH
ZW9sb2NhdGlvbkVycm9yTWVzc2FnZSkpOworICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJv
cihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJy
b3I6OlBFUk1JU1NJT05fREVOSUVELCBTdHJpbmcgeyBvcmlnaW5DYW5ub3RSZXF1ZXN0R2VvbG9j
YXRpb25FcnJvck1lc3NhZ2UgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGRvY3Vt
ZW50KCktPnNldEdlb2xvY2F0aW9uQWNjZXNzZWQoKTsKQEAgLTM5MSw3ICszOTEsNyBAQCB2b2lk
IEdlb2xvY2F0aW9uOjpzdGFydFJlcXVlc3QoR2VvTm90aWZpZXIqIG5vdGlmaWVyKQogICAgIC8v
IENoZWNrIHdoZXRoZXIgcGVybWlzc2lvbnMgaGF2ZSBhbHJlYWR5IGJlZW4gZGVuaWVkLiBOb3Rl
IHRoYXQgaWYgdGhpcyBpcyB0aGUgY2FzZSwKICAgICAvLyB0aGUgcGVybWlzc2lvbiBzdGF0ZSBj
YW4gbm90IGNoYW5nZSBhZ2FpbiBpbiB0aGUgbGlmZXRpbWUgb2YgdGhpcyBwYWdlLgogICAgIGlm
IChpc0RlbmllZCgpKQotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlv
blBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJ
T05fREVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIG5vdGlm
aWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xv
Y2F0aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIFN0cmluZyB7IHBlcm1pc3Np
b25EZW5pZWRFcnJvck1lc3NhZ2UgfSkpOwogICAgIGVsc2UgaWYgKGhhdmVTdWl0YWJsZUNhY2hl
ZFBvc2l0aW9uKG5vdGlmaWVyLT5vcHRpb25zKCkpKQogICAgICAgICBub3RpZmllci0+c2V0VXNl
Q2FjaGVkUG9zaXRpb24oKTsKICAgICBlbHNlIGlmIChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQo
KSkKQEAgLTQwMyw3ICs0MDMsNyBAQCB2b2lkIEdlb2xvY2F0aW9uOjpzdGFydFJlcXVlc3QoR2Vv
Tm90aWZpZXIqIG5vdGlmaWVyKQogICAgIH0gZWxzZSBpZiAoc3RhcnRVcGRhdGluZyhub3RpZmll
cikpCiAgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKICAgICBlbHNlCi0g
ICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6
Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIGZh
aWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIG5vdGlmaWVyLT5zZXRG
YXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9z
aXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIFN0cmluZyB7IGZhaWxlZFRvU3RhcnRT
ZXJ2aWNlRXJyb3JNZXNzYWdlIH0pKTsKIH0KIAogdm9pZCBHZW9sb2NhdGlvbjo6ZmF0YWxFcnJv
ck9jY3VycmVkKEdlb05vdGlmaWVyKiBub3RpZmllcikKQEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lk
IEdlb2xvY2F0aW9uOjpyZXF1ZXN0VXNlc0NhY2hlZFBvc2l0aW9uKEdlb05vdGlmaWVyKiBub3Rp
ZmllcikKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBhc3luY2hyb25vdXNseSwgc28gdGhlIHBlcm1p
c3Npb25zIGNvdWxkIGhhdmUgYmVlbiBkZW5pZWQKICAgICAvLyBzaW5jZSB3ZSBsYXN0IGNoZWNr
ZWQgaW4gc3RhcnRSZXF1ZXN0LgogICAgIGlmIChpc0RlbmllZCgpKSB7Ci0gICAgICAgIG5vdGlm
aWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xv
Y2F0aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1pc3Npb25EZW5pZWRF
cnJvck1lc3NhZ2UpKTsKKyAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQRVJNSVNT
SU9OX0RFTklFRCwgU3RyaW5nIHsgcGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSB9KSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ1Myw3ICs0NTMsNyBAQCB2b2lkIEdlb2xvY2F0
aW9uOjptYWtlQ2FjaGVkUG9zaXRpb25DYWxsYmFja3MoKQogICAgICAgICAgICAgaWYgKG5vdGlm
aWVyLT5oYXNaZXJvVGltZW91dCgpIHx8IHN0YXJ0VXBkYXRpbmcobm90aWZpZXIuZ2V0KCkpKQog
ICAgICAgICAgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVySWZOZWVkZWQoKTsKICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2Nh
dGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBPU0lU
SU9OX1VOQVZBSUxBQkxFLCBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSkpOworICAg
ICAgICAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25F
cnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFC
TEUsIFN0cmluZyB7IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJyb3JNZXNzYWdlIH0pKTsKICAgICAg
ICAgfQogICAgIH0KIApAQCAtNTE3LDcgKzUxNyw3IEBAIHZvaWQgR2VvbG9jYXRpb246OnNldElz
QWxsb3dlZChib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYXV0aG9yaXphdGlvblRva2VuKQog
ICAgIH0KIAogICAgIGlmICghaXNBbGxvd2VkKCkpIHsKLSAgICAgICAgYXV0byBlcnJvciA9IEdl
b2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6
UEVSTUlTU0lPTl9ERU5JRUQsIHBlcm1pc3Npb25EZW5pZWRFcnJvck1lc3NhZ2UpOworICAgICAg
ICBhdXRvIGVycm9yID0gR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgU3RyaW5nIHsgcGVybWlzc2lvbkRl
bmllZEVycm9yTWVzc2FnZSB9KTsKICAgICAgICAgZXJyb3ItPnNldElzRmF0YWwodHJ1ZSk7CiAg
ICAgICAgIGhhbmRsZUVycm9yKGVycm9yKTsKICAgICAgICAgbV9yZXF1ZXN0c0F3YWl0aW5nQ2Fj
aGVkUG9zaXRpb24uY2xlYXIoKTsKQEAgLTU3Niw3ICs1NzYsNyBAQCB2b2lkIEdlb2xvY2F0aW9u
OjpzdG9wVGltZXJzKCkKIHZvaWQgR2VvbG9jYXRpb246OmNhbmNlbFJlcXVlc3RzKEdlb05vdGlm
aWVyVmVjdG9yJiBub3RpZmllcnMpCiB7CiAgICAgZm9yIChhdXRvJiBub3RpZmllciA6IG5vdGlm
aWVycykKLSAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlv
bkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlM
QUJMRSwgZnJhbWVsZXNzRG9jdW1lbnRFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgbm90aWZpZXIt
PnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRSwgU3RyaW5nIHsgZnJhbWVsZXNz
RG9jdW1lbnRFcnJvck1lc3NhZ2UgfSkpOwogfQogCiB2b2lkIEdlb2xvY2F0aW9uOjpjYW5jZWxB
bGxSZXF1ZXN0cygpCkBAIC03NTEsOSArNzUxLDkgQEAgdm9pZCBHZW9sb2NhdGlvbjo6aGFuZGxl
UGVuZGluZ1Blcm1pc3Npb25Ob3RpZmllcnMoKQogICAgICAgICAgICAgaWYgKHN0YXJ0VXBkYXRp
bmcobm90aWZpZXIuZ2V0KCkpKQogICAgICAgICAgICAgICAgIG5vdGlmaWVyLT5zdGFydFRpbWVy
SWZOZWVkZWQoKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBub3RpZmllci0+
c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlv
blBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBmYWlsZWRUb1N0YXJ0U2Vydmlj
ZUVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9y
KEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJv
cjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIFN0cmluZyB7IGZhaWxlZFRvU3RhcnRTZXJ2aWNlRXJy
b3JNZXNzYWdlIH0pKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBub3RpZmllci0+c2V0
RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNz
YWdlKSk7CisgICAgICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05f
REVOSUVELCBTdHJpbmcgeyBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlIH0pKTsKICAgICB9
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hs
aWdodFJlZ2lzdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hs
aWdodFJlZ2lzdGVyLmNwcAppbmRleCBkY2E3ZTQ2YzQ4YTguLmMzZDUzYTZiMTRkMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvSGlnaGxpZ2h0UmVnaXN0ZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0hpZ2hsaWdodFJlZ2lz
dGVyLmNwcApAQCAtNjQsNyArNjQsNyBAQCB2b2lkIEhpZ2hsaWdodFJlZ2lzdGVyOjpzZXRIaWdo
bGlnaHRWaXNpYmlsaXR5KEhpZ2hsaWdodFZpc2liaWxpdHkgaGlnaGxpZ2h0VmlzaQogICAgICAg
ICBoaWdobGlnaHQudmFsdWUtPnJlcGFpbnQoKTsKIH0KICNlbmRpZgotc3RhdGljIEFTQ0lJTGl0
ZXJhbCBhbm5vdGF0aW9uSGlnaGxpZ2h0S2V5KCkKK3N0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIGFubm90YXRpb25IaWdobGlnaHRLZXkoKQogewogICAgIHJldHVybiAiYW5ub3RhdGlvbkhp
Z2hsaWdodEtleSJfczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5k
ZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9pbmRleGVkZGIvc2VydmVyL1NRTGl0ZUlEQkJhY2tpbmdTdG9yZS5jcHAKaW5kZXgg
MzljMTQ3ZGFhNzhjLi42YTZmZDI2ZDAxN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJREJCYWNraW5nU3Rv
cmUuY3BwCkBAIC0yOTksNyArMjk5LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2luZ1N0b3Jl
OjplbnN1cmVWYWxpZEJsb2JUYWJsZXMoKQogICAgICAgICBpZiAoIW1fc3FsaXRlREItPmV4ZWN1
dGVDb21tYW5kKGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSkpCiAgICAgICAgICAgICByZXR1cm4g
SURCRXJyb3IgeyBVbmtub3duRXJyb3IsIG1ha2VTdHJpbmcoIkVycm9yIGNyZWF0aW5nIEJsb2JS
ZWNvcmRzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3IoKSwgIikgLSAiLCBtX3NxbGl0
ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKIAotICAgICAgICByZWNvcmRzVGFibGVTdGF0ZW1lbnQg
PSBibG9iUmVjb3Jkc1RhYmxlU2NoZW1hKCk7CisgICAgICAgIHJlY29yZHNUYWJsZVN0YXRlbWVu
dCA9IFN0cmluZyB7IGJsb2JSZWNvcmRzVGFibGVTY2hlbWEoKSB9OwogICAgIH0KIAogICAgIFJF
TEVBU0VfQVNTRVJUKHJlY29yZHNUYWJsZVN0YXRlbWVudCA9PSBibG9iUmVjb3Jkc1RhYmxlU2No
ZW1hKCkgfHwgcmVjb3Jkc1RhYmxlU3RhdGVtZW50ID09IGJsb2JSZWNvcmRzVGFibGVTY2hlbWFB
bHRlcm5hdGUoKSk7CkBAIC0zMDksNyArMzA5LDcgQEAgSURCRXJyb3IgU1FMaXRlSURCQmFja2lu
Z1N0b3JlOjplbnN1cmVWYWxpZEJsb2JUYWJsZXMoKQogICAgICAgICBpZiAoIW1fc3FsaXRlREIt
PmV4ZWN1dGVDb21tYW5kKGJsb2JGaWxlc1RhYmxlU2NoZW1hKCkpKQogICAgICAgICAgICAgcmV0
dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCBtYWtlU3RyaW5nKCJFcnJvciBjcmVhdGluZyBC
bG9iRmlsZXMgdGFibGUgKCIsIG1fc3FsaXRlREItPmxhc3RFcnJvcigpLCAiKSAtICIsIG1fc3Fs
aXRlREItPmxhc3RFcnJvck1zZygpKSB9OwogCi0gICAgICAgIGZpbGVzVGFibGVTdGF0ZW1lbnQg
PSBibG9iRmlsZXNUYWJsZVNjaGVtYSgpOworICAgICAgICBmaWxlc1RhYmxlU3RhdGVtZW50ID0g
U3RyaW5nIHsgYmxvYkZpbGVzVGFibGVTY2hlbWEoKSB9OwogICAgIH0KIAogICAgIFJFTEVBU0Vf
QVNTRVJUKGZpbGVzVGFibGVTdGF0ZW1lbnQgPT0gYmxvYkZpbGVzVGFibGVTY2hlbWEoKSB8fCBm
aWxlc1RhYmxlU3RhdGVtZW50ID09IGJsb2JGaWxlc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVy
cm9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJv
ci5jcHAKaW5kZXggMThlZDdlMjFiMzU1Li5hZDFlMzg2MzczZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9pbmRleGVkZGIvc2hhcmVkL0lEQkVycm9yLmNwcApAQCAtNDAs
MTQgKzQwLDE0IEBAIFN0cmluZyBJREJFcnJvcjo6bmFtZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFt
X2NvZGUpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIERPTUV4Y2VwdGlvbjo6bmFt
ZShtX2NvZGUudmFsdWUoKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IERPTUV4Y2VwdGlvbjo6bmFt
ZShtX2NvZGUudmFsdWUoKSkgfTsKIH0KIAogU3RyaW5nIElEQkVycm9yOjptZXNzYWdlKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fY29kZSkKICAgICAgICAgcmV0dXJuIHsgfTsKLSAgICByZXR1cm4g
RE9NRXhjZXB0aW9uOjptZXNzYWdlKG1fY29kZS52YWx1ZSgpKTsKKyAgICByZXR1cm4gU3RyaW5n
IHsgRE9NRXhjZXB0aW9uOjptZXNzYWdlKG1fY29kZS52YWx1ZSgpKSB9OwogfQogCiBSZWZQdHI8
RE9NRXhjZXB0aW9uPiBJREJFcnJvcjo6dG9ET01FeGNlcHRpb24oKSBjb25zdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUV4Y2VwdGlvbkhhbmRsaW5nLmNwcApp
bmRleCA3M2Y2Y2M2NWQ1NGMuLmU4MTg5YjQzMzM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01FeGNlcHRpb25IYW5kbGluZy5jcHAKQEAgLTIxNywxOSAr
MjE3LDE5IEBAIHRlbXBsYXRlPHR5cGVuYW1lLi4uIFN0cmluZ1R5cGVzPiBzdGF0aWMgU3RyaW5n
IG1ha2VBcmd1bWVudFR5cGVFcnJvck1lc3NhZ2UodW5zCiB2b2lkIHRocm93Tm90U3VwcG9ydGVk
RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCiB7CiAgICAgc2NvcGUuYXNzZXJ0
Tm9FeGNlcHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBOb3RTdXBwb3J0ZWRFcnJvciwgbWVzc2FnZSkpOworICAgIHRocm93RXhjZXB0aW9u
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBOb3RTdXBwb3J0ZWRFcnJvciwgU3RyaW5nIHsgbWVzc2FnZSB9KSk7CiB9
CiAKIHZvaWQgdGhyb3dJbnZhbGlkU3RhdGVFcnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgbWVz
c2FnZSkKIHsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0aW9uKCk7
Ci0gICAgdGhyb3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVE
T01FeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIEludmFsaWRTdGF0ZUVycm9yLCBtZXNz
YWdlKSk7CisgICAgdGhyb3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVET01FeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIEludmFsaWRTdGF0ZUVycm9y
LCBTdHJpbmcgeyBtZXNzYWdlIH0pKTsKIH0KIAogdm9pZCB0aHJvd1NlY3VyaXR5RXJyb3IoSlND
OjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBz
Y29wZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0
aW9uRXhjZXB0VGVybWluYXRpb24oKTsKLSAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2Jh
bE9iamVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwg
U2VjdXJpdHlFcnJvciwgbWVzc2FnZSkpOworICAgIHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBTZWN1cml0eUVycm9yLCBTdHJpbmcgeyBtZXNzYWdlIH0pKTsKIH0KIAogSlNDOjpFbmNvZGVk
SlNWYWx1ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRW51bUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3Qm
IGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIHVuc2lnbmVkIGFy
Z3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogZnVuY3Rp
b25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4
cGVjdGVkVmFsdWVzKQpAQCAtMzExLDcgKzMxMSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgcmVq
ZWN0UHJvbWlzZVdpdGhUaGlzVHlwZUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxH
CiB2b2lkIHRocm93RE9NU3ludGF4RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEds
b2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2Up
CiB7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNlcHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwotICAg
IHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhj
ZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBTeW50YXhFcnJvciwgbWVzc2FnZSkpOworICAg
IHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhj
ZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBTeW50YXhFcnJvciwgU3RyaW5nIHsgbWVzc2Fn
ZSB9KSk7CiB9CiAKIHZvaWQgdGhyb3dEYXRhQ2xvbmVFcnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0
JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKaW5kZXggNzAx
ZDM5YzA4YjBiLi44MjgzZjljOTlmYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NyaXB0TW9kdWxlTG9hZGVyLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIEpTQzo6SWRl
bnRpZmllciBTY3JpcHRNb2R1bGVMb2FkZXI6OnJlc29sdmUoSlNDOjpKU0dsb2JhbE9iamVjdCog
anNHbG9iYWxPYmplY3QsCiAgICAgcmV0dXJuIEpTQzo6SWRlbnRpZmllcjo6ZnJvbVN0cmluZyh2
bSwgcmVzdWx0LT5zdHJpbmcoKSk7CiB9CiAKLXN0YXRpYyB2b2lkIHJlamVjdFRvUHJvcGFnYXRl
TmV0d29ya0Vycm9yKERlZmVycmVkUHJvbWlzZSYgZGVmZXJyZWQsIE1vZHVsZUZldGNoRmFpbHVy
ZUtpbmQgZmFpbHVyZUtpbmQsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQorc3RhdGljIHZvaWQgcmVq
ZWN0VG9Qcm9wYWdhdGVOZXR3b3JrRXJyb3IoRGVmZXJyZWRQcm9taXNlJiBkZWZlcnJlZCwgTW9k
dWxlRmV0Y2hGYWlsdXJlS2luZCBmYWlsdXJlS2luZCwgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBt
ZXNzYWdlKQogewogICAgIGRlZmVycmVkLnJlamVjdFdpdGhDYWxsYmFjayhbJl0gKEpTRE9NR2xv
YmFsT2JqZWN0JiBqc0dsb2JhbE9iamVjdCkgewogICAgICAgICAvLyBXZSBhbm5vdGF0ZSBleGNl
cHRpb24gd2l0aCBzcGVjaWFsIHByaXZhdGUgc3ltYm9sLiBJdCBhbGxvd3MgdXMgdG8gZGlzdGlu
Z3Vpc2ggdGhlc2UgZXJyb3JzIGZyb20gdGhlIHVzZXIgdGhyb3duIG9uZXMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uQWN0aW9u
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9u
QWN0aW9ucy5jcHAKaW5kZXggMGNhNjFjMTAxNGQyLi43ZGZlYTBkNWQwODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0NvbnRlbnRFeHRlbnNpb25BY3Rpb25z
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5z
aW9uQWN0aW9ucy5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgc3RhdGljIHZvaWQgd3JpdGVMZW5ndGhU
b1ZlY3RvckF0T2Zmc2V0KFZlY3Rvcjx1aW50OF90PiYgdmVjdG9yLCBzaXplX3Qgb2Zmc2V0KQog
CiBFeHBlY3RlZDxNb2RpZnlIZWFkZXJzQWN0aW9uLCBzdGQ6OmVycm9yX2NvZGU+IE1vZGlmeUhl
YWRlcnNBY3Rpb246OnBhcnNlKGNvbnN0IEpTT046Ok9iamVjdCYgbW9kaWZ5SGVhZGVycykKIHsK
LSAgICBhdXRvIHBhcnNlSGVhZGVycyA9IFtdIChjb25zdCBKU09OOjpPYmplY3QmIG1vZGlmeUhl
YWRlcnMsIEFTQ0lJTGl0ZXJhbCBhcnJheU5hbWUpIC0+IEV4cGVjdGVkPFZlY3RvcjxNb2RpZnlI
ZWFkZXJJbmZvPiwgc3RkOjplcnJvcl9jb2RlPiB7CisgICAgYXV0byBwYXJzZUhlYWRlcnMgPSBb
XSAoY29uc3QgSlNPTjo6T2JqZWN0JiBtb2RpZnlIZWFkZXJzLCBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIGFycmF5TmFtZSkgLT4gRXhwZWN0ZWQ8VmVjdG9yPE1vZGlmeUhlYWRlckluZm8+LCBzdGQ6
OmVycm9yX2NvZGU+IHsKICAgICAgICAgYXV0byB2YWx1ZSA9IG1vZGlmeUhlYWRlcnMuZ2V0VmFs
dWUoYXJyYXlOYW1lKTsKICAgICAgICAgaWYgKCF2YWx1ZSkKICAgICAgICAgICAgIHJldHVybiB7
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50
RXh0ZW5zaW9uUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NvbnRlbnRleHRlbnNpb25zL0Nv
bnRlbnRFeHRlbnNpb25QYXJzZXIuY3BwCmluZGV4IDUxM2ZkOTM5ZTY2ZC4uNGM0ZTk2NDY3YmZk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0
ZW5zaW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9ucy9D
b250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHN0YXRpYyBFeHBl
Y3RlZDxUcmlnZ2VyLCBzdGQ6OmVycm9yX2NvZGU+IGxvYWRUcmlnZ2VyKGNvbnN0IEpTT046Ok9i
amVjdCYgcnVsZU9iCiAgICAgICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoZXJyb3IpOwog
ICAgIH0KIAotICAgIGF1dG8gY2hlY2tDb25kaXRpb24gPSBbJl0gKEFTQ0lJTGl0ZXJhbCBrZXks
IEV4cGVjdGVkPFZlY3RvcjxTdHJpbmc+LCBzdGQ6OmVycm9yX2NvZGU+ICgqbGlzdFJlYWRlciko
Y29uc3QgSlNPTjo6QXJyYXkmKSwgQWN0aW9uQ29uZGl0aW9uIGFjdGlvbkNvbmRpdGlvbikgLT4g
c3RkOjplcnJvcl9jb2RlIHsKKyAgICBhdXRvIGNoZWNrQ29uZGl0aW9uID0gWyZdIChBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIGtleSwgRXhwZWN0ZWQ8VmVjdG9yPFN0cmluZz4sIHN0ZDo6ZXJyb3Jf
Y29kZT4gKCpsaXN0UmVhZGVyKShjb25zdCBKU09OOjpBcnJheSYpLCBBY3Rpb25Db25kaXRpb24g
YWN0aW9uQ29uZGl0aW9uKSAtPiBzdGQ6OmVycm9yX2NvZGUgewogICAgICAgICBpZiAoYXV0byB2
YWx1ZSA9IHRyaWdnZXJPYmplY3QtPmdldFZhbHVlKGtleSkpIHsKICAgICAgICAgICAgIGlmICh0
cmlnZ2VyLmZsYWdzICYgQWN0aW9uQ29uZGl0aW9uTWFzaykKICAgICAgICAgICAgICAgICByZXR1
cm4gQ29udGVudEV4dGVuc2lvbkVycm9yOjpKU09OTXVsdGlwbGVDb25kaXRpb25zOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwIGIvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCmluZGV4IGQzNmQzNDBmNzBhOC4u
YzcxMjQ2ZTMxNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jcnlwdG8va2V5cy9Dcnlw
dG9LZXlFQy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMu
Y3BwCkBAIC0xNTEsMTMgKzE1MSwxMyBAQCBFeGNlcHRpb25PcjxKc29uV2ViS2V5PiBDcnlwdG9L
ZXlFQzo6ZXhwb3J0SndrKCkgY29uc3QKICAgICByZXN1bHQua3R5ID0gIkVDIjsKICAgICBzd2l0
Y2ggKG1fY3VydmUpIHsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlAyNTY6Ci0gICAgICAgIHJlc3Vs
dC5jcnYgPSBQMjU2OworICAgICAgICByZXN1bHQuY3J2ID0gU3RyaW5nIHsgUDI1NiB9OwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlAzODQ6Ci0gICAgICAgIHJlc3VsdC5j
cnYgPSBQMzg0OworICAgICAgICByZXN1bHQuY3J2ID0gU3RyaW5nIHsgUDM4NCB9OwogICAgICAg
ICBicmVhazsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlA1MjE6Ci0gICAgICAgIHJlc3VsdC5jcnYg
PSBQNTIxOworICAgICAgICByZXN1bHQuY3J2ID0gU3RyaW5nIHsgUDUyMSB9OwogICAgICAgICBi
cmVhazsKICAgICB9CiAgICAgcmVzdWx0LmtleV9vcHMgPSB1c2FnZXMoKTsKQEAgLTIxNiwxMyAr
MjE2LDEzIEBAIGF1dG8gQ3J5cHRvS2V5RUM6OmFsZ29yaXRobSgpIGNvbnN0IC0+IEtleUFsZ29y
aXRobQogCiAgICAgc3dpdGNoIChtX2N1cnZlKSB7CiAgICAgY2FzZSBOYW1lZEN1cnZlOjpQMjU2
OgotICAgICAgICByZXN1bHQubmFtZWRDdXJ2ZSA9IFAyNTY7CisgICAgICAgIHJlc3VsdC5uYW1l
ZEN1cnZlID0gU3RyaW5nIHsgUDI1NiB9OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5hbWVk
Q3VydmU6OlAzODQ6Ci0gICAgICAgIHJlc3VsdC5uYW1lZEN1cnZlID0gUDM4NDsKKyAgICAgICAg
cmVzdWx0Lm5hbWVkQ3VydmUgPSBTdHJpbmcgeyBQMzg0IH07CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2UgTmFtZWRDdXJ2ZTo6UDUyMToKLSAgICAgICAgcmVzdWx0Lm5hbWVkQ3VydmUgPSBQNTIx
OworICAgICAgICByZXN1bHQubmFtZWRDdXJ2ZSA9IFN0cmluZyB7IFA1MjEgfTsKICAgICAgICAg
YnJlYWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01FeGNlcHRpb24uY3BwCmluZGV4IDAwYWI3
NDlmM2I4Yi4uZWU3NDljYzQxNTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NRXhjZXB0aW9uLmNwcApA
QCAtOTMsNyArOTMsNyBAQCBzdGF0aWMgRE9NRXhjZXB0aW9uOjpMZWdhY3lDb2RlIGxlZ2FjeUNv
ZGVGcm9tTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCiBSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNl
cHRpb246OmNyZWF0ZShFeGNlcHRpb25Db2RlIGVjLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7
CiAgICAgYXV0byYgZGVzY3JpcHRpb24gPSBET01FeGNlcHRpb246OmRlc2NyaXB0aW9uKGVjKTsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01FeGNlcHRpb24oZGVzY3JpcHRpb24ubGVnYWN5
Q29kZSwgZGVzY3JpcHRpb24ubmFtZSwgIW1lc3NhZ2UuaXNFbXB0eSgpID8gbWVzc2FnZSA6IGRl
c2NyaXB0aW9uLm1lc3NhZ2UpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBET01FeGNlcHRp
b24oZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgU3RyaW5nIHsgZGVzY3JpcHRpb24ubmFtZSB9LCAh
bWVzc2FnZS5pc0VtcHR5KCkgPyBtZXNzYWdlIDogU3RyaW5nIHsgZGVzY3JpcHRpb24ubWVzc2Fn
ZSB9KSk7CiB9CiAKIFJlZjxET01FeGNlcHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBuYW1lKQpAQCAtMTA0LDcgKzEwNCw3IEBA
IFJlZjxET01FeGNlcHRpb24+IERPTUV4Y2VwdGlvbjo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWVz
c2FnZSwgY29uc3QgU3RyaW5nJiBuYW1lCiBSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNlcHRpb246
OmNyZWF0ZShjb25zdCBFeGNlcHRpb24mIGV4Y2VwdGlvbikKIHsKICAgICBhdXRvJiBkZXNjcmlw
dGlvbiA9IERPTUV4Y2VwdGlvbjo6ZGVzY3JpcHRpb24oZXhjZXB0aW9uLmNvZGUoKSk7Ci0gICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRXhjZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUs
IGRlc2NyaXB0aW9uLm5hbWUsIGV4Y2VwdGlvbi5tZXNzYWdlKCkuaXNFbXB0eSgpID8gZGVzY3Jp
cHRpb24ubWVzc2FnZSA6IGV4Y2VwdGlvbi5tZXNzYWdlKCkpKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBET01FeGNlcHRpb24oZGVzY3JpcHRpb24ubGVnYWN5Q29kZSwgU3RyaW5nIHsgZGVz
Y3JpcHRpb24ubmFtZSB9LCBleGNlcHRpb24ubWVzc2FnZSgpLmlzRW1wdHkoKSA/IFN0cmluZyB7
IGRlc2NyaXB0aW9uLm1lc3NhZ2UgfSA6IGV4Y2VwdGlvbi5tZXNzYWdlKCkpKTsKIH0KIAogRE9N
RXhjZXB0aW9uOjpET01FeGNlcHRpb24oTGVnYWN5Q29kZSBsZWdhY3lDb2RlLCBjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVt
ZW50LmNwcAppbmRleCAzM2I2MmMzYTljMmUuLjMzMDY0YjU0MjNhMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50LmNwcApAQCAtMzIzLDcgKzMyMyw3IEBAIGJvb2wgU2NyaXB0RWxlbWVu
dDo6cmVxdWVzdE1vZHVsZVNjcmlwdChjb25zdCBUZXh0UG9zaXRpb24mIHNjcmlwdFN0YXJ0UG9z
aXRpb24pCiAgICAgU3RyaW5nIG5vbmNlID0gbV9lbGVtZW50Lm5vbmNlKCk7CiAgICAgU3RyaW5n
IGNyb3NzT3JpZ2luTW9kZSA9IG1fZWxlbWVudC5hdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKEhUTUxOYW1lczo6Y3Jvc3NvcmlnaW5BdHRyKTsKICAgICBpZiAoY3Jvc3NPcmlnaW5Nb2Rl
LmlzTnVsbCgpKQotICAgICAgICBjcm9zc09yaWdpbk1vZGUgPSBTY3JpcHRFbGVtZW50Q2FjaGVk
U2NyaXB0RmV0Y2hlcjo6ZGVmYXVsdENyb3NzT3JpZ2luTW9kZUZvck1vZHVsZTsKKyAgICAgICAg
Y3Jvc3NPcmlnaW5Nb2RlID0gU3RyaW5nIHsgU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNo
ZXI6OmRlZmF1bHRDcm9zc09yaWdpbk1vZGVGb3JNb2R1bGUgfTsKIAogICAgIGlmIChoYXNTb3Vy
Y2VBdHRyaWJ1dGUoKSkgewogICAgICAgICBBU1NFUlQobV9lbGVtZW50LmlzQ29ubmVjdGVkKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnRDYWNoZWRTY3Jp
cHRGZXRjaGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50Q2FjaGVkU2Ny
aXB0RmV0Y2hlci5jcHAKaW5kZXggMTA0M2I3MzcyZmIxLi4zNzQwNjM4MzkyNTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRj
aGVyLmNwcApAQCAtMzksNyArMzksNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRTY3Jp
cHQ+IFNjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyOjpyZXF1ZXN0TW9kdQogICAgIC8v
IElmIHRoZSBmZXRjaGVyIGlzIG5vdCBtb2R1bGUgc2NyaXB0LCBjcmVkZW50aWFsIG1vZGUgaXMg
YWx3YXlzICJzYW1lLW9yaWdpbiIgKCJhbm9ueW1vdXMiKS4KICAgICAvLyBUaGlzIGNvZGUgaXMg
Zm9yIGR5bmFtaWMgbW9kdWxlIGltcG9ydCAoYGltcG9ydGAgb3BlcmF0b3IpLgogCi0gICAgcmV0
dXJuIHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNvdXJjZVVSTCwgaXNDbGFzc2lj
U2NyaXB0KCkgPyBkZWZhdWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9kdWxlIDogbV9jcm9zc09yaWdp
bk1vZGUsIFdURk1vdmUoaW50ZWdyaXR5KSwgeyB9KTsKKyAgICByZXR1cm4gcmVxdWVzdFNjcmlw
dFdpdGhDYWNoZShkb2N1bWVudCwgc291cmNlVVJMLCBpc0NsYXNzaWNTY3JpcHQoKSA/IEF0b21T
dHJpbmcgeyBkZWZhdWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9kdWxlIH0gOiBtX2Nyb3NzT3JpZ2lu
TW9kZSwgV1RGTW92ZShpbnRlZ3JpdHkpLCB7IH0pOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCA2MWExZWE2Yjk3NTcuLjJkYzY5YzkyNmQ5NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCkBAIC0xODI4LDggKzE4
MjgsOSBAQCBzdGF0aWMgY29uc3QgQ29tbWFuZE1hcCYgY3JlYXRlQ29tbWFuZE1hcCgpCiAgICAg
Q29tbWFuZE1hcCYgY29tbWFuZE1hcCA9ICpuZXcgQ29tbWFuZE1hcDsKIAogICAgIGZvciAoYXV0
byYgY29tbWFuZCA6IGNvbW1hbmRzKSB7Ci0gICAgICAgIEFTU0VSVCghY29tbWFuZE1hcC5nZXQo
Y29tbWFuZC5uYW1lKSk7Ci0gICAgICAgIGNvbW1hbmRNYXAuc2V0KGNvbW1hbmQubmFtZSwgJmNv
bW1hbmQuY29tbWFuZCk7CisgICAgICAgIFN0cmluZyBjb21tYW5kTmFtZSB7IGNvbW1hbmQubmFt
ZSB9OworICAgICAgICBBU1NFUlQoIWNvbW1hbmRNYXAuZ2V0KGNvbW1hbmROYW1lKSk7CisgICAg
ICAgIGNvbW1hbmRNYXAuc2V0KGNvbW1hbmROYW1lLCAmY29tbWFuZC5jb21tYW5kKTsKICAgICB9
CiAKICAgICByZXR1cm4gY29tbWFuZE1hcDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0
QXJlYUVsZW1lbnQuY3BwCmluZGV4IDJmMTBjZWQ4NDEzMS4uZDU3N2VhNjZlYWFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5jcHAKQEAgLTM5NSw3ICszOTUs
NyBAQCB2b2lkIEhUTUxUZXh0QXJlYUVsZW1lbnQ6OnNldFZhbHVlQ29tbW9uKGNvbnN0IFN0cmlu
ZyYgbmV3VmFsdWUsIFRleHRGaWVsZEV2ZW50QgogICAgIC8vIENvZGUgZWxzZXdoZXJlIG5vcm1h
bGl6ZXMgbGluZSBlbmRpbmdzIGFkZGVkIGJ5IHRoZSB1c2VyIHZpYSB0aGUga2V5Ym9hcmQgb3Ig
cGFzdGluZy4KICAgICAvLyBXZSBub3JtYWxpemUgbGluZSBlbmRpbmdzIGNvbWluZyBmcm9tIEph
dmFTY3JpcHQgaGVyZS4KICAgICBTdHJpbmcgbm9ybWFsaXplZFZhbHVlID0gbmV3VmFsdWUuaXNO
dWxsKCkgPyBlbXB0eVN0cmluZygpIDogbmV3VmFsdWU7Ci0gICAgbm9ybWFsaXplZFZhbHVlLnJl
cGxhY2UoIlxyXG4iLCAiXG4iKTsKKyAgICBub3JtYWxpemVkVmFsdWUucmVwbGFjZSgiXHJcbiJf
cywgIlxuIl9zKTsKICAgICBub3JtYWxpemVkVmFsdWUucmVwbGFjZSgnXHInLCAnXG4nKTsKIAog
ICAgIC8vIFJldHVybiBlYXJseSBiZWNhdXNlIHdlIGRvbid0IHdhbnQgdG8gbW92ZSB0aGUgY2Fy
ZXQgb3IgdHJpZ2dlciBvdGhlciBzaWRlIGVmZmVjdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZS5jcHAKaW5k
ZXggMGU3ODA2M2UzYTQxLi45ZjAwM2VmODQzNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuY3BwCkBA
IC0yOTUsNyArMjk1LDcgQEAgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6U3RhdGU6OlN0
YXRlKCkKIFN0cmluZyBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdGF0ZTo6Zm9udFN0
cmluZygpIGNvbnN0CiB7CiAgICAgaWYgKCFmb250LnJlYWxpemVkKCkpCi0gICAgICAgIHJldHVy
biBEZWZhdWx0Rm9udDsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7IERlZmF1bHRGb250IH07CiAK
ICAgICBTdHJpbmdCdWlsZGVyIHNlcmlhbGl6ZWRGb250OwogICAgIGNvbnN0IGF1dG8mIGZvbnQg
PSB0aGlzLT5mb250LmZvbnREZXNjcmlwdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKaW5kZXggYTUxMzAwMjE2MWI5
Li45MGVhODJlOGRmNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hU
TUxSZXNvdXJjZVByZWxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFJlc291cmNlUHJlbG9hZGVyLmNwcApAQCAtNTksNyArNTksNyBAQCBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgUHJlbG9hZFJlcXVlc3Q6OnJlc291cmNlUmVxdWVzdChEb2N1bWVudCYgZG9jdW1l
bnQpCiAgICAgU3RyaW5nIGNyb3NzT3JpZ2luTW9kZSA9IG1fY3Jvc3NPcmlnaW5Nb2RlOwogICAg
IGlmIChtX21vZHVsZVNjcmlwdCA9PSBNb2R1bGVTY3JpcHQ6OlllcykgewogICAgICAgICBpZiAo
Y3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpKQotICAgICAgICAgICAgY3Jvc3NPcmlnaW5Nb2RlID0g
U2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6OmRlZmF1bHRDcm9zc09yaWdpbk1vZGVG
b3JNb2R1bGU7CisgICAgICAgICAgICBjcm9zc09yaWdpbk1vZGUgPSBTdHJpbmcgeyBTY3JpcHRF
bGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlcjo6ZGVmYXVsdENyb3NzT3JpZ2luTW9kZUZvck1vZHVs
ZSB9OwogICAgIH0KICAgICBpZiAobV9yZXNvdXJjZVR5cGUgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5
cGU6OlNjcmlwdCB8fCBtX3Jlc291cmNlVHlwZSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6SW1h
Z2VSZXNvdXJjZSkKICAgICAgICAgb3B0aW9ucy5yZWZlcnJlclBvbGljeSA9IG1fcmVmZXJyZXJQ
b2xpY3k7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKaW5kZXgg
MTlmYzg1Y2Q4OTdhLi5mYTQzYWEzODlkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvdHJhY2svVGV4dFRyYWNrQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L1RleHRUcmFja0N1ZS5jcHAKQEAgLTM5MSw3ICszOTEsNyBAQCBib29sIFRleHRUcmFja0N1ZTo6
aGFzRXF1aXZhbGVudFN0YXJ0VGltZShjb25zdCBUZXh0VHJhY2tDdWUmIGN1ZSkgY29uc3QKIAog
dm9pZCBUZXh0VHJhY2tDdWU6OnRvSlNPTihKU09OOjpPYmplY3QmIHZhbHVlKSBjb25zdAogewot
ICAgIEFTQ0lJTGl0ZXJhbCB0eXBlID0gIkdlbmVyaWMiX3M7CisgICAgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCB0eXBlID0gIkdlbmVyaWMiX3M7CiAgICAgc3dpdGNoIChjdWVUeXBlKCkpIHsKICAg
ICBjYXNlIFRleHRUcmFja0N1ZTo6Q29udmVydGVkVG9XZWJWVFQ6CiAgICAgICAgIHR5cGUgPSAi
Q29udmVydGVkVG9XZWJWVFQiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NRWRpdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3Bw
CmluZGV4IDgzODkwOGRjOTM2ZS4uZGFjNjE3NGRiMzMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NRWRpdG9yLmNwcApAQCAtNDM3LDcgKzQzNyw3IEBAIHN0YXRpYyBib29sIHBvcHVsYXRl
RXJyb3JTdHJpbmcoRXhjZXB0aW9uT3I8dm9pZD4mJiByZXN1bHQsIEVycm9yU3RyaW5nJiBlcnJv
clN0CiB7CiAgICAgaWYgKCFyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIGVycm9yU3RyaW5nID0gRE9NRXhjZXB0aW9uOjpuYW1lKHJlc3VsdC5yZWxlYXNl
RXhjZXB0aW9uKCkuY29kZSgpKTsKKyAgICBlcnJvclN0cmluZyA9IFN0cmluZyB7IERPTUV4Y2Vw
dGlvbjo6bmFtZShyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSkgfTsKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
cy5jcHAKaW5kZXggYmJjYzc5YWJjMzg2Li5jZTIzNGUyNTU4ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0xMzMyLDcgKzEzMzIsNyBAQCBS
ZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRBY3Rp
b24oU3RyaW5nJiYgbmFtZSwgSW5zcAogCiBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+
IEluc3BlY3RvckNhbnZhczo6YnVpbGRBcnJheUZvckNhbnZhc0dyYWRpZW50KGNvbnN0IENhbnZh
c0dyYWRpZW50JiBjYW52YXNHcmFkaWVudCkKIHsKLSAgICBBU0NJSUxpdGVyYWwgdHlwZSA9ICJs
aW5lYXItZ3JhZGllbnQiX3M7CisgICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0eXBlID0gImxp
bmVhci1ncmFkaWVudCJfczsKICAgICBhdXRvIHBhcmFtZXRlcnMgPSBKU09OOjpBcnJheU9mPGRv
dWJsZT46OmNyZWF0ZSgpOwogICAgIFdURjo6c3dpdGNoT24oY2FudmFzR3JhZGllbnQuZ3JhZGll
bnQoKS5kYXRhKCksCiAgICAgICAgIFsmXSAoY29uc3QgR3JhZGllbnQ6OkxpbmVhckRhdGEmIGRh
dGEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcAppbmRleCBhMGIyMzIxMGIyMzguLmIyYzE4NDEzMjIwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNzEzLDExICs3MTMs
MTEgQEAgUmVmPFByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVX
aXRoUHJvcGVydGllcygpIGNvbnN0CiAgICAgICAgICAgICAgICAgSGFzaE1hcDxTdHJpbmcsIFJl
ZlB0cjxQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eT4+OjppdGVyYXRvciBhY3RpdmVJdCA9IHBy
b3BlcnR5TmFtZVRvUHJldmlvdXNBY3RpdmVQcm9wZXJ0eS5maW5kKGNhbm9uaWNhbFByb3BlcnR5
TmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKGFjdGl2ZUl0ICE9IHByb3BlcnR5TmFtZVRvUHJl
dmlvdXNBY3RpdmVQcm9wZXJ0eS5lbmQoKSkgewogICAgICAgICAgICAgICAgICAgICBpZiAocHJv
cGVydHlFbnRyeS5wYXJzZWRPaykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdQ
cmlvcml0eSA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKFByb3RvY29sOjpDU1M6OkNTU1By
b3BlcnR5Ojpwcmlvcml0eUtleSk7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG5ld1By
aW9yaXR5ID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkNT
Uzo6Q1NTUHJvcGVydHk6OnByaW9yaXR5S2V5IH0pOwogICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCEhbmV3UHJpb3JpdHkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNQ
cmlvcml0eSA9IG5ld1ByaW9yaXR5OwogCi0gICAgICAgICAgICAgICAgICAgICAgICBhdXRvIG5l
d1N0YXR1cyA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKFByb3RvY29sOjpDU1M6OkNTU1By
b3BlcnR5OjpzdGF0dXNLZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBuZXdTdGF0
dXMgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6Q1NTOjpD
U1NQcm9wZXJ0eTo6c3RhdHVzS2V5IH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEh
bmV3U3RhdHVzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlvdXNTdGF0dXMg
PSBuZXdTdGF0dXM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU3Rh
dHVzICE9IFByb3RvY29sOjpIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6
Q1NTOjpDU1NQcm9wZXJ0eVN0YXR1czo6SW5hY3RpdmUpKSB7CkBAIC03MzAsNyArNzMwLDcgQEAg
UmVmPFByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJv
cGVydGllcygpIGNvbnN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c1BhcnNlZE9rID0gYWN0aXZlSXQtPnZhbHVlLT5n
ZXRCb29sZWFuKFByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5OjpwYXJzZWRPa0tleSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICBhdXRvIHByZXZpb3VzUGFyc2VkT2sgPSBhY3RpdmVJdC0+dmFs
dWUtPmdldEJvb2xlYW4oU3RyaW5nIHsgUHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OnBhcnNl
ZE9rS2V5IH0pOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzUGFyc2VkT2sg
JiYgIXByZXZpb3VzUGFyc2VkT2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxk
SW5hY3RpdmF0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXgg
MGUxODZiY2VhNzAxLi5jNjc4Y2E1MmE2MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMzksMTMgKzEzOSwx
MyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb2xvcj4gcGFyc2VDb2xvcihSZWZQdHI8SlNPTjo6
T2JqZWN0PiYmIGNvbG9yT2JqZWN0KQogICAgIGlmICghY29sb3JPYmplY3QpCiAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIHIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdl
cihQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OnJLZXkpOwotICAgIGF1dG8gZyA9IGNvbG9yT2Jq
ZWN0LT5nZXRJbnRlZ2VyKFByb3RvY29sOjpET006OlJHQkFDb2xvcjo6Z0tleSk7Ci0gICAgYXV0
byBiID0gY29sb3JPYmplY3QtPmdldEludGVnZXIoUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpi
S2V5KTsKKyAgICBhdXRvIHIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihTdHJpbmcgeyBQcm90
b2NvbDo6RE9NOjpSR0JBQ29sb3I6OnJLZXkgfSk7CisgICAgYXV0byBnID0gY29sb3JPYmplY3Qt
PmdldEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpnS2V5IH0pOwor
ICAgIGF1dG8gYiA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpE
T006OlJHQkFDb2xvcjo6YktleSB9KTsKICAgICBpZiAoIXIgfHwgIWcgfHwgIWIpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBhdXRvIGEgPSBjb2xvck9iamVjdC0+Z2V0RG91
YmxlKFByb3RvY29sOjpET006OlJHQkFDb2xvcjo6YUtleSk7CisgICAgYXV0byBhID0gY29sb3JP
YmplY3QtPmdldERvdWJsZShTdHJpbmcgeyBQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OmFLZXkg
fSk7CiAgICAgaWYgKCFhKQogICAgICAgICByZXR1cm4geyBtYWtlRnJvbUNvbXBvbmVudHNDbGFt
cGluZzxTUkdCQTx1aW50OF90Pj4oKnIsICpnLCAqYikgfTsKICAgICByZXR1cm4geyBtYWtlRnJv
bUNvbXBvbmVudHNDbGFtcGluZ0V4Y2VwdEFscGhhPFNSR0JBPHVpbnQ4X3Q+PigqciwgKmcsICpi
LCBjb252ZXJ0RmxvYXRBbHBoYVRvPHVpbnQ4X3Q+KCphKSkgfTsKQEAgLTI4MSw3ICsyODEsNyBA
QCBTdHJpbmcgSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoRXhjZXB0aW9uQ29kZSBl
YykKIAogU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKEV4Y2VwdGlvbiYm
IGV4Y2VwdGlvbikKIHsKLSAgICByZXR1cm4gRE9NRXhjZXB0aW9uOjpuYW1lKGV4Y2VwdGlvbi5j
b2RlKCkpOworICAgIHJldHVybiBTdHJpbmcgeyBET01FeGNlcHRpb246Om5hbWUoZXhjZXB0aW9u
LmNvZGUoKSkgfTsKIH0KIAogSW5zcGVjdG9yRE9NQWdlbnQ6Okluc3BlY3RvckRPTUFnZW50KFBh
Z2VBZ2VudENvbnRleHQmIGNvbnRleHQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCkBAIC0x
MjgyLDExICsxMjgyLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JPdmVybGF5OjpIaWdo
bGlnaHQ6OkNvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdoCiAgICAgfQogCiAgICAg
YXV0byBoaWdobGlnaHRDb25maWcgPSBtYWtlVW5pcXVlPEluc3BlY3Rvck92ZXJsYXk6OkhpZ2hs
aWdodDo6Q29uZmlnPigpOwotICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSBoaWdobGln
aHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4oUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29u
ZmlnOjpzaG93SW5mb0tleSkudmFsdWVfb3IoZmFsc2UpOwotICAgIGhpZ2hsaWdodENvbmZpZy0+
Y29udGVudCA9IHBhcnNlQ29uZmlnQ29sb3IoUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmln
Ojpjb250ZW50Q29sb3JLZXksICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwotICAgIGhpZ2hs
aWdodENvbmZpZy0+cGFkZGluZyA9IHBhcnNlQ29uZmlnQ29sb3IoUHJvdG9jb2w6OkRPTTo6SGln
aGxpZ2h0Q29uZmlnOjpwYWRkaW5nQ29sb3JLZXksICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3Qp
OwotICAgIGhpZ2hsaWdodENvbmZpZy0+Ym9yZGVyID0gcGFyc2VDb25maWdDb2xvcihQcm90b2Nv
bDo6RE9NOjpIaWdobGlnaHRDb25maWc6OmJvcmRlckNvbG9yS2V5LCAqaGlnaGxpZ2h0SW5zcGVj
dG9yT2JqZWN0KTsKLSAgICBoaWdobGlnaHRDb25maWctPm1hcmdpbiA9IHBhcnNlQ29uZmlnQ29s
b3IoUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjptYXJnaW5Db2xvcktleSwgKmhpZ2hs
aWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IGhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6RE9N
OjpIaWdobGlnaHRDb25maWc6OnNob3dJbmZvS2V5IH0pLnZhbHVlX29yKGZhbHNlKTsKKyAgICBo
aWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmluZyB7IFByb3Rv
Y29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6Y29udGVudENvbG9yS2V5IH0sICpoaWdobGlnaHRJ
bnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hsaWdodENvbmZpZy0+cGFkZGluZyA9IHBhcnNlQ29u
ZmlnQ29sb3IoU3RyaW5nIHsgUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpwYWRkaW5n
Q29sb3JLZXkgfSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgaGlnaGxpZ2h0Q29u
ZmlnLT5ib3JkZXIgPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmluZyB7IFByb3RvY29sOjpET006Okhp
Z2hsaWdodENvbmZpZzo6Ym9yZGVyQ29sb3JLZXkgfSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVj
dCk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5tYXJnaW4gPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmlu
ZyB7IFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6bWFyZ2luQ29sb3JLZXkgfSwgKmhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAgICAgcmV0dXJuIGhpZ2hsaWdodENvbmZpZzsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDEzZmMwYjgxZWY4Ny4uYThlZDUzMTExZDE4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TVN0b3JhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xMjcsNyArMTI3LDcgQEAgUHJvdG9jb2w6
OkVycm9yU3RyaW5nT3I8dm9pZD4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzZXRET01TdG9y
YWdlSXRlbShSZWY8SlMKICAgICBib29sIHF1b3RhRXhjZXB0aW9uID0gZmFsc2U7CiAgICAgc3Rv
cmFnZUFyZWEtPnNldEl0ZW0oKmZyYW1lLCBrZXksIHZhbHVlLCBxdW90YUV4Y2VwdGlvbik7CiAg
ICAgaWYgKHF1b3RhRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoRE9N
RXhjZXB0aW9uOjpuYW1lKFF1b3RhRXhjZWVkZWRFcnJvcikpOworICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoU3RyaW5nIHsgRE9NRXhjZXB0aW9uOjpuYW1lKFF1b3RhRXhjZWVkZWRFcnJv
cikgfSk7CiAKICAgICByZXR1cm4geyB9OwogfQpAQCAtMTk1LDEzICsxOTUsMTMgQEAgdm9pZCBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmRpZERpc3BhdGNoRE9NU3RvcmFnZUV2ZW50KGNvbnN0
IFN0cmluZyYga2V5LCBjb24KIAogUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBSZWY8SlNPTjo6T2JqZWN0PiYmIHN0b3JhZ2VJZCwgRnJhbWUqJiB0YXJnZXRGcmFtZSkK
IHsKLSAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gc3RvcmFnZUlkLT5nZXRTdHJpbmcoUHJvdG9j
b2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6c2VjdXJpdHlPcmlnaW5LZXkpOworICAgIGF1dG8g
c2VjdXJpdHlPcmlnaW4gPSBzdG9yYWdlSWQtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6
RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjpzZWN1cml0eU9yaWdpbktleSB9KTsKICAgICBpZiAoIXNl
Y3VyaXR5T3JpZ2luKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcgc2VjdXJpdHlP
cmlnaW4gaW4gZ2l2ZW4gc3RvcmFnZUlkIjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCi0gICAgYXV0byBpc0xvY2FsU3RvcmFnZSA9IHN0b3JhZ2VJZC0+Z2V0Qm9vbGVhbihQcm90
b2NvbDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjppc0xvY2FsU3RvcmFnZUtleSk7CisgICAgYXV0
byBpc0xvY2FsU3RvcmFnZSA9IHN0b3JhZ2VJZC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2Nv
bDo6RE9NU3RvcmFnZTo6U3RvcmFnZUlkOjppc0xvY2FsU3RvcmFnZUtleSB9KTsKICAgICBpZiAo
IWlzTG9jYWxTdG9yYWdlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgaXNMb2Nh
bFN0b3JhZ2UgaW4gZ2l2ZW4gc3RvcmFnZUlkIjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDVkNTEyZTc4ZTIwMC4uMWMxMzUxYWI4ZTg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckluZGV4ZWREQkFnZW50LmNwcApAQCAtMjU1LDcgKzI1NSw3IEBAIHByaXZhdGU6CiAKIHN0YXRp
YyBSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KFJlZjxKU09OOjpPYmpl
Y3Q+JiYga2V5KQogewotICAgIGF1dG8gdHlwZVN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFByb3Rv
Y29sOjpJbmRleGVkREI6OktleTo6dHlwZUtleSk7CisgICAgYXV0byB0eXBlU3RyaW5nID0ga2V5
LT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5Ojp0eXBlS2V5IH0p
OwogICAgIGlmICghdHlwZVN0cmluZykKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI2
NSwyOCArMjY1LDI4IEBAIHN0YXRpYyBSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9y
T2JqZWN0KFJlZjxKU09OOjpPYmplY3Q+JiYga2V5KQogCiAgICAgc3dpdGNoICgqdHlwZSkgewog
ICAgIGNhc2UgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpUeXBlOjpOdW1iZXI6IHsKLSAgICAg
ICAgYXV0byBudW1iZXIgPSBrZXktPmdldERvdWJsZShQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6
Om51bWJlcktleSk7CisgICAgICAgIGF1dG8gbnVtYmVyID0ga2V5LT5nZXREb3VibGUoU3RyaW5n
IHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpudW1iZXJLZXkgfSk7CiAgICAgICAgIGlmICgh
bnVtYmVyKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVybiBJREJL
ZXk6OmNyZWF0ZU51bWJlcigqbnVtYmVyKTsKICAgICB9CiAKICAgICBjYXNlIFByb3RvY29sOjpJ
bmRleGVkREI6OktleTo6VHlwZTo6U3RyaW5nOiB7Ci0gICAgICAgIGF1dG8gc3RyaW5nID0ga2V5
LT5nZXRTdHJpbmcoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpzdHJpbmdLZXkpOworICAgICAg
ICBhdXRvIHN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVk
REI6OktleTo6c3RyaW5nS2V5IH0pOwogICAgICAgICBpZiAoIXN0cmluZykKICAgICAgICAgICAg
IHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVTdHJpbmcoc3Ry
aW5nKTsKICAgICB9CiAKICAgICBjYXNlIFByb3RvY29sOjpJbmRleGVkREI6OktleTo6VHlwZTo6
RGF0ZTogewotICAgICAgICBhdXRvIGRhdGUgPSBrZXktPmdldERvdWJsZShQcm90b2NvbDo6SW5k
ZXhlZERCOjpLZXk6OmRhdGVLZXkpOworICAgICAgICBhdXRvIGRhdGUgPSBrZXktPmdldERvdWJs
ZShTdHJpbmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OmRhdGVLZXkgfSk7CiAgICAgICAg
IGlmICghZGF0ZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICByZXR1cm4g
SURCS2V5OjpjcmVhdGVEYXRlKCpkYXRlKTsKICAgICB9CiAKICAgICBjYXNlIFByb3RvY29sOjpJ
bmRleGVkREI6OktleTo6VHlwZTo6QXJyYXk6IHsKLSAgICAgICAgYXV0byBhcnJheSA9IGtleS0+
Z2V0QXJyYXkoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjphcnJheUtleSk7CisgICAgICAgIGF1
dG8gYXJyYXkgPSBrZXktPmdldEFycmF5KFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVkREI6Oktl
eTo6YXJyYXlLZXkgfSk7CiAgICAgICAgIGlmICghYXJyYXkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKIApAQCAtMzA4LDI0ICszMDgsMjQgQEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGlk
YktleUZyb21JbnNwZWN0b3JPYmplY3QoUmVmPEpTT046Ok9iamVjdD4mJiBrZXkpCiBzdGF0aWMg
UmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZShKU09OOjpPYmplY3Qm
IGtleVJhbmdlKQogewogICAgIFJlZlB0cjxJREJLZXk+IGlkYkxvd2VyOwotICAgIGlmIChhdXRv
IGxvd2VyID0ga2V5UmFuZ2UuZ2V0T2JqZWN0KFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdl
Ojpsb3dlcktleSkpIHsKKyAgICBpZiAoYXV0byBsb3dlciA9IGtleVJhbmdlLmdldE9iamVjdChT
dHJpbmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5nZTo6bG93ZXJLZXkgfSkpIHsKICAg
ICAgICAgaWRiTG93ZXIgPSBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KGxvd2VyLnJlbGVhc2VO
b25OdWxsKCkpOwogICAgICAgICBpZiAoIWlkYkxvd2VyKQogICAgICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCiAgICAgUmVmUHRyPElEQktleT4gaWRiVXBwZXI7Ci0gICAgaWYgKGF1
dG8gdXBwZXIgPSBrZXlSYW5nZS5nZXRPYmplY3QoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFu
Z2U6OnVwcGVyS2V5KSkgeworICAgIGlmIChhdXRvIHVwcGVyID0ga2V5UmFuZ2UuZ2V0T2JqZWN0
KFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOjp1cHBlcktleSB9KSkgewog
ICAgICAgICBpZGJVcHBlciA9IGlkYktleUZyb21JbnNwZWN0b3JPYmplY3QodXBwZXIucmVsZWFz
ZU5vbk51bGwoKSk7CiAgICAgICAgIGlmICghaWRiVXBwZXIpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICB9CiAKLSAgICBhdXRvIGxvd2VyT3BlbiA9IGtleVJhbmdlLmdldEJvb2xl
YW4oUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFuZ2U6Omxvd2VyT3BlbktleSk7CisgICAgYXV0
byBsb3dlck9wZW4gPSBrZXlSYW5nZS5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpJbmRl
eGVkREI6OktleVJhbmdlOjpsb3dlck9wZW5LZXkgfSk7CiAgICAgaWYgKCFsb3dlck9wZW4pCiAg
ICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgYXV0byB1cHBlck9wZW4gPSBrZXlSYW5nZS5n
ZXRCb29sZWFuKFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOjp1cHBlck9wZW5LZXkpOwor
ICAgIGF1dG8gdXBwZXJPcGVuID0ga2V5UmFuZ2UuZ2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2Nv
bDo6SW5kZXhlZERCOjpLZXlSYW5nZTo6dXBwZXJPcGVuS2V5IH0pOwogICAgIGlmICghdXBwZXJP
cGVuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCmluZGV4IDZl
NWE1ZmM4OWNjZS4uN2Q0MTMwZWI0ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3Rvck5ldHdvcmtBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3BwCkBAIC01MjgsNyAr
NTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVSZXNwb25zZShS
ZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmkKICAgICBpZiAoY2FjaGVkUmVzb3VyY2Up
IHsKICAgICAgICAgLy8gVXNlIG1pbWUgdHlwZSBmcm9tIGNhY2hlZCByZXNvdXJjZSBpbiBjYXNl
IHRoZSBvbmUgaW4gcmVzcG9uc2UgaXMgZW1wdHkuCiAgICAgICAgIGlmIChyZXNvdXJjZVJlc3Bv
bnNlICYmIHJlc3BvbnNlLm1pbWVUeXBlKCkuaXNFbXB0eSgpKQotICAgICAgICAgICAgcmVzb3Vy
Y2VSZXNwb25zZS0+c2V0U3RyaW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6bWltZVR5
cGVLZXksIGNhY2hlZFJlc291cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOworICAgICAgICAg
ICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpOZXR3b3Jr
OjpSZXNwb25zZTo6bWltZVR5cGVLZXkgfSwgY2FjaGVkUmVzb3VyY2UtPnJlc3BvbnNlKCkubWlt
ZVR5cGUoKSk7CiAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkQ2FjaGVkUmVzb3VyY2UocmVx
dWVzdElkLCBjYWNoZWRSZXNvdXJjZSk7CiAgICAgfQogCkBAIC01NTEsMTIgKzU1MSwxMiBAQCB2
b2lkIEluc3BlY3Rvck5ldHdvcmtBZ2VudDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlTG9h
ZGVySWRlbnRpZmllciBpZGVudGlmaQogICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
fQogICAgICAgICAgICAgCi0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmco
UHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjptaW1lVHlwZUtleSwgcHJldmlvdXNSZXNvdXJj
ZURhdGEtPm1pbWVUeXBlKCkpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3Ry
aW5nKFN0cmluZyB7IFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6bWltZVR5cGVLZXkgfSwg
cHJldmlvdXNSZXNvdXJjZURhdGEtPm1pbWVUeXBlKCkpOwogICAgICAgICAgICAgCi0gICAgICAg
ICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRJbnRlZ2VyKFByb3RvY29sOjpOZXR3b3JrOjpSZXNw
b25zZTo6c3RhdHVzS2V5LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0YXR1c0NvZGUoKSk7
Ci0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoUHJvdG9jb2w6Ok5ldHdv
cms6OlJlc3BvbnNlOjpzdGF0dXNUZXh0S2V5LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0
YXR1c1RleHQoKSk7CisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRJbnRlZ2VyKFN0
cmluZyB7IFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c3RhdHVzS2V5IH0sIHByZXZpb3Vz
UmVzb3VyY2VEYXRhLT5odHRwU3RhdHVzQ29kZSgpKTsKKyAgICAgICAgICAgIHJlc291cmNlUmVz
cG9uc2UtPnNldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OnN0
YXR1c1RleHRLZXkgfSwgcHJldmlvdXNSZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNUZXh0KCkpOwog
ICAgICAgICAgICAgCi0gICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoUHJv
dG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjpzb3VyY2VLZXksIFByb3RvY29sOjpIZWxwZXJzOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OlNvdXJjZTo6
RGlza0NhY2hlKSk7CisgICAgICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoU3Ry
aW5nIHsgUHJvdG9jb2w6Ok5ldHdvcms6OlJlc3BvbnNlOjpzb3VyY2VLZXkgfSwgUHJvdG9jb2w6
OkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25z
ZTo6U291cmNlOjpEaXNrQ2FjaGUpKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCmlu
ZGV4IGQxYjI2OWY4ZmE3ZC4uNmRiNTJiN2FmY2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC01NjgsMzEg
KzU2OCwzMSBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2llT2JqZWN0
KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogewogICAgIENvb2tpZSBjb29raWU7
CiAKLSAgICBjb29raWUubmFtZSA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQ
YWdlOjpDb29raWU6Om5hbWVLZXkpOworICAgIGNvb2tpZS5uYW1lID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6bmFtZUtleSB9KTsKICAg
ICBpZiAoIWNvb2tpZS5uYW1lKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFs
dWUgZm9yIGtleSBuYW1lIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCi0gICAgY29va2llLnZhbHVlID0gY29va2llT2JqZWN0LT5nZXRTdHJp
bmcoUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6dmFsdWVLZXkpOworICAgIGNvb2tpZS52YWx1ZSA9
IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6
OnZhbHVlS2V5IH0pOwogICAgIGlmICghY29va2llLnZhbHVlKSB7CiAgICAgICAgIGVycm9yU3Ry
aW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSB2YWx1ZSBpbiBnaXZlbiBjb29raWUiOwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGNvb2tpZS5kb21haW4gPSBj
b29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpkb21haW5LZXkp
OworICAgIGNvb2tpZS5kb21haW4gPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhTdHJpbmcgeyBQ
cm90b2NvbDo6UGFnZTo6Q29va2llOjpkb21haW5LZXkgfSk7CiAgICAgaWYgKCFjb29raWUuZG9t
YWluKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBkb21h
aW4gaW4gZ2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9
CiAKLSAgICBjb29raWUucGF0aCA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQ
YWdlOjpDb29raWU6OnBhdGhLZXkpOworICAgIGNvb2tpZS5wYXRoID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6cGF0aEtleSB9KTsKICAg
ICBpZiAoIWNvb2tpZS5wYXRoKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkludmFsaWQgdmFs
dWUgZm9yIGtleSBwYXRoIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgfQogCi0gICAgYXV0byBodHRwT25seSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9v
bGVhbihQcm90b2NvbDo6UGFnZTo6Q29va2llOjpodHRwT25seUtleSk7CisgICAgYXV0byBodHRw
T25seSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6
Q29va2llOjpodHRwT25seUtleSB9KTsKICAgICBpZiAoIWh0dHBPbmx5KSB7CiAgICAgICAgIGVy
cm9yU3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBodHRwT25seSBpbiBnaXZlbiBjb29r
aWUiOwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjAwLDcgKzYwMCw3IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluCiAKICAgICBjb29raWUuaHR0cE9ubHkgPSAqaHR0cE9ubHk7
CiAKLSAgICBhdXRvIHNlY3VyZSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6
UGFnZTo6Q29va2llOjpzZWN1cmVLZXkpOworICAgIGF1dG8gc2VjdXJlID0gY29va2llT2JqZWN0
LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlY3VyZUtleSB9
KTsKICAgICBpZiAoIXNlY3VyZSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZh
bHVlIGZvciBrZXkgc2VjdXJlIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CkBAIC02MDgsOCArNjA4LDggQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29va2ll
PiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIAog
ICAgIGNvb2tpZS5zZWN1cmUgPSAqc2VjdXJlOwogCi0gICAgYXV0byBzZXNzaW9uID0gY29va2ll
T2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlc3Npb25LZXkpOwot
ICAgIGNvb2tpZS5leHBpcmVzID0gY29va2llT2JqZWN0LT5nZXREb3VibGUoUHJvdG9jb2w6OlBh
Z2U6OkNvb2tpZTo6ZXhwaXJlc0tleSk7CisgICAgYXV0byBzZXNzaW9uID0gY29va2llT2JqZWN0
LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNlc3Npb25LZXkg
fSk7CisgICAgY29va2llLmV4cGlyZXMgPSBjb29raWVPYmplY3QtPmdldERvdWJsZShTdHJpbmcg
eyBQcm90b2NvbDo6UGFnZTo6Q29va2llOjpleHBpcmVzS2V5IH0pOwogICAgIGlmICghc2Vzc2lv
biAmJiAhY29va2llLmV4cGlyZXMpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IGV4cGlyZXMgaW4gZ2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKQEAgLTYxNyw3ICs2MTcsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29r
aWU+IHBhcnNlQ29va2llT2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbgog
CiAgICAgY29va2llLnNlc3Npb24gPSAqc2Vzc2lvbjsKIAotICAgIGF1dG8gc2FtZVNpdGVTdHJp
bmcgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpzYW1l
U2l0ZUtleSk7CisgICAgYXV0byBzYW1lU2l0ZVN0cmluZyA9IGNvb2tpZU9iamVjdC0+Z2V0U3Ry
aW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29raWU6OnNhbWVTaXRlS2V5IH0pOwogICAg
IGlmICghc2FtZVNpdGVTdHJpbmcpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiSW52YWxpZCB2
YWx1ZSBmb3Iga2V5IHNhbWVTaXRlIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCA5OTg4ZWE5NWYzZjEuLjU3ZmFi
ZTZiZjhjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC03NDQsNyArNzQ0LDcgQEAgc3RhdGlj
IFByb3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRU
eXBlIHR5cGUpCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YWRkUmVjb3JkVG9UaW1l
bGluZShSZWY8SlNPTjo6T2JqZWN0PiYmIHJlY29yZCwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUp
CiB7Ci0gICAgcmVjb3JkLT5zZXRTdHJpbmcoUHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2
ZW50Ojp0eXBlS2V5LCBQcm90b2NvbDo6SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUodG9Q
cm90b2NvbCh0eXBlKSkpOworICAgIHJlY29yZC0+c2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29s
OjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6dHlwZUtleSB9LCBQcm90b2NvbDo6SGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUodG9Qcm90b2NvbCh0eXBlKSkpOwogCiAgICAgaWYgKG1fcmVj
b3JkU3RhY2suaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBydW50aW1lQ2FzdCBpcyBh
IGhhY2suIFdlIGRvIGl0IGJlY2F1c2Ugd2UgY2FuJ3QgYnVpbGQgVGltZWxpbmVFdmVudCBkaXJl
Y3RseSBub3cuCkBAIC03NzQsOSArNzc0LDkgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50
OjpzZXRGcmFtZUlkZW50aWZpZXIoSlNPTjo6T2JqZWN0KiByZWNvcmQsIEZyYW1lKiBmcmEKIAog
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZVJlY29yZEVudHJ5KGNvbnN0
IFRpbWVsaW5lUmVjb3JkRW50cnkmIGVudHJ5KQogewotICAgIGVudHJ5LnJlY29yZC0+c2V0T2Jq
ZWN0KFByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6ZGF0YUtleSwgZW50cnkuZGF0
YS5jb3B5UmVmKCkpOworICAgIGVudHJ5LnJlY29yZC0+c2V0T2JqZWN0KFN0cmluZyB7IFByb3Rv
Y29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6ZGF0YUtleSB9LCBlbnRyeS5kYXRhLmNvcHlS
ZWYoKSk7CiAgICAgaWYgKGVudHJ5LmNoaWxkcmVuKQotICAgICAgICBlbnRyeS5yZWNvcmQtPnNl
dEFycmF5KFByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6Y2hpbGRyZW5LZXksICpl
bnRyeS5jaGlsZHJlbik7CisgICAgICAgIGVudHJ5LnJlY29yZC0+c2V0QXJyYXkoU3RyaW5nIHsg
UHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2ZW50OjpjaGlsZHJlbktleSB9LCAqZW50cnku
Y2hpbGRyZW4pOwogICAgIGVudHJ5LnJlY29yZC0+c2V0RG91YmxlKCJlbmRUaW1lIl9zLCB0aW1l
c3RhbXAoKSk7CiAgICAgYWRkUmVjb3JkVG9UaW1lbGluZShlbnRyeS5yZWNvcmQuY29weVJlZigp
LCBlbnRyeS50eXBlKTsKIH0KQEAgLTgwMSw3ICs4MDEsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmRpZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZFR5cGUgdHlw
ZSkKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YXBwZW5kUmVjb3JkKFJlZjxKU09OOjpP
YmplY3Q+JiYgZGF0YSwgVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUsIGJvb2wgY2FwdHVyZUNhbGxT
dGFjaywgRnJhbWUqIGZyYW1lKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IHJlY29yZCA9IFRp
bWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlR2VuZXJpY1JlY29yZCh0aW1lc3RhbXAoKSwgY2Fw
dHVyZUNhbGxTdGFjayA/IG1fbWF4Q2FsbFN0YWNrRGVwdGggOiAwKTsKLSAgICByZWNvcmQtPnNl
dE9iamVjdChQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmRhdGFLZXksIFdURk1v
dmUoZGF0YSkpOworICAgIHJlY29yZC0+c2V0T2JqZWN0KFN0cmluZyB7IFByb3RvY29sOjpUaW1l
bGluZTo6VGltZWxpbmVFdmVudDo6ZGF0YUtleSB9LCBXVEZNb3ZlKGRhdGEpKTsKICAgICBzZXRG
cmFtZUlkZW50aWZpZXIoJnJlY29yZC5nZXQoKSwgZnJhbWUpOwogICAgIGFkZFJlY29yZFRvVGlt
ZWxpbmUoV1RGTW92ZShyZWNvcmQpLCB0eXBlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Dcm9zc09yaWdpbk9wZW5lclBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwCmluZGV4IDc0YmQxMjlmMWM4MS4uMzZl
NThjNzE0YWJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5P
cGVuZXJQb2xpY3kuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Dcm9zc09yaWdpbk9w
ZW5lclBvbGljeS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgQVNDSUlMaXRlcmFsIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5VG9TdHJpbmcoY29u
c3QgQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSYgY29vcCkKK3N0YXRpYyBBU0NJSUxpdGVy
YWxXaXRoTGVuZ3RoIGNyb3NzT3JpZ2luT3BlbmVyUG9saWN5VG9TdHJpbmcoY29uc3QgQ3Jvc3NP
cmlnaW5PcGVuZXJQb2xpY3lWYWx1ZSYgY29vcCkKIHsKICAgICBzd2l0Y2ggKGNvb3ApIHsKICAg
ICBjYXNlIENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWU6OlNhbWVPcmlnaW46CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9uLmNwcAppbmRleCBjZWU4MmEzZjA3MTMuLmJjMDk5
MmY0ZDIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uY3BwCkBAIC04
NSw3ICs4NSw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZE1haWx0b1Bvc3RGb3JtRGF0YVRvVVJMKFVS
TCYgdXJsLCBjb25zdCBGb3JtRGF0YSYgZGF0YSwgY29uc3QKICAgICAgICAgdXJsLnNldFF1ZXJ5
KG1ha2VTdHJpbmcocXVlcnksICcmJywgYm9keSkpOwogfQogCi1BU0NJSUxpdGVyYWwgRm9ybVN1
Ym1pc3Npb246OkF0dHJpYnV0ZXM6Om1ldGhvZFN0cmluZyhNZXRob2QgbWV0aG9kLCBib29sIGRp
YWxvZ0VsZW1lbnRFbmFibGVkKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBGb3JtU3VibWlzc2lv
bjo6QXR0cmlidXRlczo6bWV0aG9kU3RyaW5nKE1ldGhvZCBtZXRob2QsIGJvb2wgZGlhbG9nRWxl
bWVudEVuYWJsZWQpCiB7CiAgICAgaWYgKGRpYWxvZ0VsZW1lbnRFbmFibGVkICYmIG1ldGhvZCA9
PSBNZXRob2Q6OkRpYWxvZykKICAgICAgICAgcmV0dXJuICJkaWFsb2ciX3M7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9Gb3JtU3VibWlzc2lvbi5oCmluZGV4IGUwYzQ4ZWYxZTQzYS4uYjdkNDMzOGQwZjJl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgICAgIE1ldGhvZCBtZXRob2QoKSBjb25zdCB7IHJldHVybiBtX21ldGhv
ZDsgfQogICAgICAgICBzdGF0aWMgTWV0aG9kIHBhcnNlTWV0aG9kVHlwZShjb25zdCBTdHJpbmcm
LCBib29sKTsKICAgICAgICAgdm9pZCB1cGRhdGVNZXRob2RUeXBlKGNvbnN0IFN0cmluZyYsIGJv
b2wpOwotICAgICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIG1ldGhvZFN0cmluZyhNZXRob2QsIGJv
b2wpOworICAgICAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBtZXRob2RTdHJpbmco
TWV0aG9kLCBib29sKTsKIAogICAgICAgICBjb25zdCBTdHJpbmcmIGFjdGlvbigpIGNvbnN0IHsg
cmV0dXJuIG1fYWN0aW9uOyB9CiAgICAgICAgIHZvaWQgcGFyc2VBY3Rpb24oY29uc3QgU3RyaW5n
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRp
b25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlTWFuaWZlc3RQYXJzZXIuY3BwCmluZGV4IDRhMTE0NDI1ZTExNi4u
MGI2Zjc4MjczOTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcApAQCAtNzgs
NyArNzgsNyBAQCBzdGQ6Om9wdGlvbmFsPEFwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdD4gcGFyc2VB
cHBsaWNhdGlvbkNhY2hlTWFuaWZlc3QoY29uc3QgVVJMJgogICAgIGJvb2wgYWxsb3dGYWxsYmFj
a05hbWVzcGFjZU91dHNpZGVNYW5pZmVzdFBhdGggPSBlcXVhbExldHRlcnNJZ25vcmluZ0FTQ0lJ
Q2FzZShtYW5pZmVzdE1JTUVUeXBlLCBjYWNoZU1hbmlmZXN0TUlNRVR5cGUpOwogICAgIGF1dG8g
bWFuaWZlc3RQYXRoID0gV2ViQ29yZTo6bWFuaWZlc3RQYXRoKG1hbmlmZXN0VVJMKTsKIAotICAg
IGF1dG8gbWFuaWZlc3RTdHJpbmcgPSBUZXh0UmVzb3VyY2VEZWNvZGVyOjpjcmVhdGUoQVNDSUlM
aXRlcmFsOjpmcm9tTGl0ZXJhbFVuc2FmZShjYWNoZU1hbmlmZXN0TUlNRVR5cGUpLCAiVVRGLTgi
KS0+ZGVjb2RlQW5kRmx1c2goZGF0YSwgbGVuZ3RoKTsKKyAgICBhdXRvIG1hbmlmZXN0U3RyaW5n
ID0gVGV4dFJlc291cmNlRGVjb2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6OmZy
b21MaXRlcmFsVW5zYWZlKGNhY2hlTWFuaWZlc3RNSU1FVHlwZSwgc2l6ZW9mKGNhY2hlTWFuaWZl
c3RNSU1FVHlwZSkgLSAxKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7
CiAKICAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKG1hbmlmZXN0U3RyaW5nLCBb
Jl0oYXV0byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8QXBwbGljYXRpb25DYWNoZU1hbmlmZXN0
PiB7CiAgICAgICAgIHVzaW5nIENoYXJhY3RlclR5cGUgPSB0eXBlbmFtZSBkZWNsdHlwZShidWZm
ZXIpOjpDaGFyYWN0ZXJUeXBlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmNwcAppbmRleCAyYWU3OTMwZjY2YzEuLjMxYWEzZDk5
MjgyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlUmVxdWVzdC5jcHAKQEAgLTEyNiw3ICsxMjYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNl
UmVxdWVzdDo6c2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oY29uc3QgU3RyaW5nJiBkb21haW4p
CiAgICAgbV9yZXNvdXJjZVJlcXVlc3Quc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oZG9tYWlu
KTsKIH0KIAotc3RhdGljIGlubGluZSBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIGFjY2VwdEhlYWRl
clZhbHVlRm9ySW1hZ2VSZXNvdXJjZShib29sIHN1cHBvcnRzVmlkZW9JbWFnZSkKK3N0YXRpYyBp
bmxpbmUgY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggYWNjZXB0SGVhZGVyVmFsdWVG
b3JJbWFnZVJlc291cmNlKGJvb2wgc3VwcG9ydHNWaWRlb0ltYWdlKQogewogI2lmIEhBVkUoV0VC
UCkgfHwgVVNFKFdFQlApCiAgICAgI2RlZmluZSBXRUJQX0hFQURFUl9QQVJUICJpbWFnZS93ZWJw
LCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3ZlcmxheXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9EZWJ1Z1BhZ2VPdmVybGF5cy5jcHAKaW5kZXggN2IzZWM3
OGYzZGFmLi4zZDcwNDdlODQ1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVi
dWdQYWdlT3ZlcmxheXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zl
cmxheXMuY3BwCkBAIC0xOTAsNyArMTkwLDcgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lv
bk92ZXJsYXk6OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAg
ICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CiAgICAg
Zm9udC51cGRhdGUobnVsbHB0cik7CiAKLSAgICBhdXRvIGRyYXdMZWdlbmQgPSBbJl0gKGNvbnN0
IENvbG9yJiBjb2xvciwgQVNDSUlMaXRlcmFsIHRleHQpIHsKKyAgICBhdXRvIGRyYXdMZWdlbmQg
PSBbJl0gKGNvbnN0IENvbG9yJiBjb2xvciwgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0ZXh0KSB7
CiAgICAgICAgIGNvbnRleHQuc2V0RmlsbENvbG9yKGNvbG9yKTsKICAgICAgICAgY29udGV4dC5m
aWxsUmVjdChsZWdlbmRSZWN0KTsKICAgICAgICAgZHJhd1JpZ2h0QWxpZ25lZFRleHQodGV4dCwg
Y29udGV4dCwgZm9udCwgbGVnZW5kUmVjdC5sb2NhdGlvbigpKTsKQEAgLTE5OCw3ICsxOTgsNyBA
QCB2b2lkIE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uT3ZlcmxheTo6ZHJhd1JlY3QoUGFnZU92ZXJs
YXkmIHBhZ2VPdmVybGF5LCBHcmFwaGljcwogICAgIH07CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZF
TlRTKQotICAgIGF1dG8gZHJhd0V2ZW50TGVnZW5kID0gWyZdIChBU0NJSUxpdGVyYWwgY29sb3Ip
IHsKKyAgICBhdXRvIGRyYXdFdmVudExlZ2VuZCA9IFsmXSAoQVNDSUlMaXRlcmFsV2l0aExlbmd0
aCBjb2xvcikgewogICAgICAgICBkcmF3TGVnZW5kKGNvbG9ycy5nZXQoU3RyaW5nVmlldyB7IGNv
bG9yIH0pLCBjb2xvcik7CiAgICAgfTsKICAgICBkcmF3RXZlbnRMZWdlbmQoInRvdWNoc3RhcnQi
X3MpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IDQwMmY0ZmFhYmIzNi4uM2NlNWY3
ZTkyMzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCkBAIC00NTksMTMgKzQ1OSwxMyBA
QCBGcmFtZSYgRnJhbWVUcmVlOjp0b3AoKSBjb25zdAogICAgIHJldHVybiAqZnJhbWU7CiB9CiAK
LUFTQ0lJTGl0ZXJhbCBibGFua1RhcmdldEZyYW1lTmFtZSgpCitBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoIGJsYW5rVGFyZ2V0RnJhbWVOYW1lKCkKIHsKICAgICByZXR1cm4gIl9ibGFuayJfczsKIH0K
IAogLy8gRklYTUU6IElzIGl0IGltcG9ydGFudCB0byBoYXZlIHRoaXM/IENhbid0IHdlIGp1c3Qg
dXNlIHRoZSBlbXB0eSBzdHJpbmcgZXZlcnl3aGVyZSB0aGlzIGlzIHVzZWQsIGluc3RlYWQ/Ci1B
U0NJSUxpdGVyYWwgc2VsZlRhcmdldEZyYW1lTmFtZSgpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IHNlbGZUYXJnZXRGcmFtZU5hbWUoKQogewogICAgIHJldHVybiAiX3NlbGYiX3M7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9GcmFtZVRyZWUuaAppbmRleCA2NDBjYzllODczZTguLjZkOGVlNzk3Zjc4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5oCkBAIC0xMDcsOCArMTA3LDggQEAgcHJpdmF0ZToKICAgICBtdXRh
YmxlIHVpbnQ2NF90IG1fZnJhbWVJREdlbmVyYXRvciB7IDAgfTsKIH07CiAKLUFTQ0lJTGl0ZXJh
bCBibGFua1RhcmdldEZyYW1lTmFtZSgpOwotQVNDSUlMaXRlcmFsIHNlbGZUYXJnZXRGcmFtZU5h
bWUoKTsKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggYmxhbmtUYXJnZXRGcmFtZU5hbWUoKTsKK0FT
Q0lJTGl0ZXJhbFdpdGhMZW5ndGggc2VsZlRhcmdldEZyYW1lTmFtZSgpOwogCiBib29sIGlzQmxh
bmtUYXJnZXRGcmFtZU5hbWUoU3RyaW5nVmlldyk7CiBib29sIGlzUGFyZW50VGFyZ2V0RnJhbWVO
YW1lKFN0cmluZ1ZpZXcpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZUVudHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlRW50cnkuaAppbmRl
eCBmOTJjMmYyMDQwNjcuLmRkM2ViODBkYTYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZUVudHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZUVudHJ5LmgKQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIH07CiAKICAgICB2aXJ0
dWFsIFR5cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBB
U0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQVNDSUlMaXRl
cmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBjb25zdCA9IDA7CiAKICAgICBzdGF0aWMgc3RkOjpv
cHRpb25hbDxUeXBlPiBwYXJzZUVudHJ5VHlwZVN0cmluZyhjb25zdCBTdHJpbmcmIGVudHJ5VHlw
ZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNYXJrLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlTWFyay5oCmluZGV4IDg3YTU1ODVkMWJl
My4uOTZlMzQ1OTE0YTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1h
bmNlTWFyay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNYXJrLmgKQEAg
LTQ5LDcgKzQ5LDcgQEAgcHJpdmF0ZToKICAgICB+UGVyZm9ybWFuY2VNYXJrKCk7CiAKICAgICBU
eXBlIHBlcmZvcm1hbmNlRW50cnlUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gVHlwZTo6TWFy
azsgfQotICAgIEFTQ0lJTGl0ZXJhbCBlbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAi
bWFyayJfczsgfQorICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZW50cnlUeXBlKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gIm1hcmsiX3M7IH0KIAogICAgIFJlZjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IG1fc2VyaWFsaXplZERldGFpbDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BlcmZvcm1hbmNlTWVhc3VyZS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5j
ZU1lYXN1cmUuaAppbmRleCAyZDJhYTNlZTEyOTUuLjJhNTQ1Y2M2ZjcxNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1lYXN1cmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlTWVhc3VyZS5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6
CiAgICAgflBlcmZvcm1hbmNlTWVhc3VyZSgpOwogCiAgICAgVHlwZSBwZXJmb3JtYW5jZUVudHJ5
VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6Ok1lYXN1cmU7IH0KLSAgICBBU0NJSUxp
dGVyYWwgZW50cnlUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIm1lYXN1cmUiX3M7IH0KKyAg
ICBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJtZWFzdXJlIl9zOyB9CiAKICAgICBSZWY8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3Nlcmlh
bGl6ZWREZXRhaWw7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZU5hdmlnYXRpb25UaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uVGltaW5nLmgKaW5kZXggYzdjMWYzNmI0YzllLi5jMDNjMDRhZDkxMWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU5hdmlnYXRpb25UaW1pbmcuaApA
QCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgflBlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWlu
ZygpOwogCiAgICAgVHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIFR5cGU6Ok5hdmlnYXRpb247IH0KLSAgICBBU0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIm5hdmlnYXRpb24iX3M7IH0KKyAgICBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJuYXZpZ2F0aW9uIl9zOyB9
CiAKICAgICBkb3VibGUgdW5sb2FkRXZlbnRTdGFydCgpIGNvbnN0OwogICAgIGRvdWJsZSB1bmxv
YWRFdmVudEVuZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZVBhaW50VGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUGFp
bnRUaW1pbmcuaAppbmRleCA3MGY4MDg1ZjljYzcuLjYwOWUzOWE4NWViNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVBhaW50VGltaW5nLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVBhaW50VGltaW5nLmgKQEAgLTQzLDcgKzQzLDcgQEAg
cHJpdmF0ZToKICAgICB7CiAgICAgfQogCi0gICAgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuICJwYWludCJfczsgfQorICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGggZW50cnlUeXBlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gInBhaW50Il9zOyB9CiAgICAgVHlw
ZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIFR5cGU6OlBhaW50
OyB9CiAKICAgICB+UGVyZm9ybWFuY2VQYWludFRpbWluZygpID0gZGVmYXVsdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZVJlc291cmNlVGltaW5nLmgKaW5kZXggNjk0MzVl
ZmIwOGE2Li5hMjRlZWYyM2U2NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVy
Zm9ybWFuY2VSZXNvdXJjZVRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VSZXNvdXJjZVRpbWluZy5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICBjb25z
dCBWZWN0b3I8UmVmPFBlcmZvcm1hbmNlU2VydmVyVGltaW5nPj4mIHNlcnZlclRpbWluZygpIGNv
bnN0IHsgcmV0dXJuIG1fc2VydmVyVGltaW5nOyB9CiAKICAgICBUeXBlIHBlcmZvcm1hbmNlRW50
cnlUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gVHlwZTo6UmVzb3VyY2U7IH0KLSAgICBB
U0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gInJlc291cmNl
Il9zOyB9CisgICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAicmVzb3VyY2UiX3M7IH0KIAogcHJvdGVjdGVkOgogICAgIFBlcmZvcm1h
bmNlUmVzb3VyY2VUaW1pbmcoTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luLCBSZXNvdXJjZVRpbWlu
ZyYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJl
Z2lzdHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5
LmNwcAppbmRleCA1YTM0Y2VhMDU0YWMuLjMzODA2MWM5NjQ3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vTGVnYWN5U2NoZW1lUmVnaXN0cnkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5LmNwcApAQCAtNTUsNyArNTUsNyBA
QCB1c2luZyBBU0NJSUxpdGVyYWxTcGFuRnVuY3Rpb24gPSBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJh
bD4gKCopKCk7CiBzdGF0aWMgdm9pZCBhZGQoVVJMU2NoZW1lc01hcCYgc2V0LCBBU0NJSUxpdGVy
YWxTcGFuRnVuY3Rpb24gZnVuY3Rpb24pCiB7CiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBmdW5j
dGlvbigpKQotICAgICAgICBzZXQuYWRkKHNjaGVtZSk7CisgICAgICAgIHNldC5hZGQoU3RyaW5n
IHsgc2NoZW1lIH0pOwogfQogCiBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2NoZW1lc01hcD4g
bWFrZU5ldmVyRGVzdHJveWVkU2NoZW1lU2V0KEFTQ0lJTGl0ZXJhbFNwYW5GdW5jdGlvbiBmdW5j
dGlvbikKQEAgLTEzNiwxNSArMTM2LDE1IEBAIHN0YXRpYyBVUkxTY2hlbWVzTWFwJiBkaXNwbGF5
SXNvbGF0ZWRVUkxTY2hlbWVzKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0CiBzdGF0
aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5TZWN1cmVTY2hlbWVzKCkKIHsKICAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2NoZW1lcyB7Ci0gICAgICAgICJodHRwcyJf
cywKLSAgICAgICAgImFib3V0Il9zLAotICAgICAgICAiZGF0YSJfcywKLSAgICAgICAgIndzcyJf
cywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiaHR0cHMiX3MpLAorICAgICAg
ICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJhYm91dCJfcyksCisgICAgICAgIHN0YXRpY19j
YXN0PEFTQ0lJTGl0ZXJhbD4oImRhdGEiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxp
dGVyYWw+KCJ3c3MiX3MpLAogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExBVEZPUk0oV1BFKQotICAg
ICAgICAicmVzb3VyY2UiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oInJl
c291cmNlIl9zKSwKICNlbmRpZgogI2lmIEVOQUJMRShQREZKUykKLSAgICAgICAgIndlYmtpdC1w
ZGZqcy12aWV3ZXIiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIndlYmtp
dC1wZGZqcy12aWV3ZXIiX3MpLAogI2VuZGlmCiAgICAgfTsKICAgICByZXR1cm4gc2NoZW1lczsK
QEAgLTE1OSw3ICsxNTksNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2VjdXJlU2NoZW1lcygp
IFdURl9SRVFVSVJFU19MT0NLKHNjaGVtZVJlZ2lzdHJ5TG9jaykKIAogc3RhdGljIFNwYW48Y29u
c3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkKIHsKLSAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2NoZW1lcyB7CisgICAgc3RhdGljIGNvbnN0
ZXhwciBzdGQ6OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMz4gc2NoZW1lcyB7CiAgICAgICAgICJhYm91
dCJfcywKICAgICAgICAgImphdmFzY3JpcHQiX3MsCiAgICAgICAgIC8vIFRoaXMgaXMgYW4gaW50
ZW50aW9uYWwgZGlmZmVyZW5jZSBmcm9tIHRoZSBiZWhhdmlvciB0aGUgSFRNTCBzcGVjaWZpY2F0
aW9uIGNhbGxzIGZvci4KQEAgLTE3OCw3ICsxNzgsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYg
c2NoZW1lc1dpdGhVbmlxdWVPcmlnaW5zKCkgV1RGX1JFUVVJUkVTX0xPQ0soc2NoZW1lUmVnaXN0
cgogCiBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGJ1aWx0aW5FbXB0eURvY3VtZW50
U2NoZW1lcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgeyAi
YWJvdXQiX3MgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8QVNDSUlMaXRlcmFs
LCAxPiBzY2hlbWVzIHsgImFib3V0Il9zIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAg
LTE5OCw3ICsxOTgsNyBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgc2NoZW1lc0ZvcmJpZGRlbkZy
b21Eb21haW5SZWxheGF0aW9uKCkKIAogc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBi
dWlsdGluQ2FuRGlzcGxheU9ubHlJZkNhblJlcXVlc3RTY2hlbWVzKCkKIHsKLSAgICBzdGF0aWMg
Y29uc3RleHByIHN0ZDo6YXJyYXkgc2NoZW1lcyB7ICJibG9iIl9zIH07CisgICAgc3RhdGljIGNv
bnN0ZXhwciBzdGQ6OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMT4gc2NoZW1lcyB7ICJibG9iIl9zIH07
CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKQEAgLTI2Myw3ICsyNjMsNyBAQCBzdGF0aWMgVVJM
U2NoZW1lc01hcCYgc2NoZW1lc0FsbG93aW5nRGF0YWJhc2VBY2Nlc3NJblByaXZhdGVCcm93c2lu
ZygpCiAKIHN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNPUlNFbmFibGVk
U2NoZW1lcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgeyAi
aHR0cCJfcywgImh0dHBzIl9zIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PEFT
Q0lJTGl0ZXJhbCwgMj4gc2NoZW1lcyB7ICJodHRwIl9zLCAiaHR0cHMiX3MgfTsKICAgICByZXR1
cm4gc2NoZW1lczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlN
RVR5cGVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9NSU1FVHlwZVJlZ2lz
dHJ5LmNwcAppbmRleCA1YWNiMjljZmI0NTkuLjNjMWU3MGRmM2ExNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKQEAgLTIxOCw3ICsyMTgsNyBAQCBI
YXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVIYXNoPiYgTUlNRVR5cGVSZWdpc3Ry
eTo6c3VwcG9ydGVkTm9uSW1hZ2VNSQogICAgICAgICAvLyBUaGlzIGNhbiByZXN1bHQgaW4gY3Jv
c3Mtc2l0ZSBzY3JpcHRpbmcgdnVsbmVyYWJpbGl0aWVzLgogICAgICAgICB9OwogICAgICAgICBm
b3IgKGF1dG8mIHR5cGUgOiBzdXBwb3J0ZWRKYXZhU2NyaXB0TUlNRVR5cGVBcnJheSkKLSAgICAg
ICAgICAgIHR5cGVzLmFkZCh0eXBlLmxpdGVyYWwpOworICAgICAgICAgICAgdHlwZXMuYWRkKFN0
cmluZyB7IHR5cGUubGl0ZXJhbCB9KTsKICNpZiBFTkFCTEUoV0VCX0FSQ0hJVkUpIHx8IEVOQUJM
RShNSFRNTCkKICAgICAgICAgQXJjaGl2ZUZhY3Rvcnk6OnJlZ2lzdGVyS25vd25BcmNoaXZlTUlN
RVR5cGVzKHR5cGVzKTsKICNlbmRpZgpAQCAtMzY0LDcgKzM2NCw3IEBAIHN0YXRpYyBjb25zdCBI
YXNoTWFwPFN0cmluZywgVmVjdG9yPFN0cmluZz4sIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFzaD4m
IGNvbW1vbk1pCiAgICAgICAgIGZvciAoYXV0byYgcGFpciA6IGNvbW1vbk1lZGlhVHlwZXMpIHsK
ICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCB0eXBlID0gcGFpci50eXBlOwogICAgICAgICAgICAg
QVNDSUlMaXRlcmFsIGV4dGVuc2lvbiA9IHBhaXIuZXh0ZW5zaW9uOwotICAgICAgICAgICAgbWFw
LmVuc3VyZShleHRlbnNpb24sIFt0eXBlLCBleHRlbnNpb25dIHsKKyAgICAgICAgICAgIG1hcC5l
bnN1cmUoU3RyaW5nIHsgZXh0ZW5zaW9uIH0sIFt0eXBlLCBleHRlbnNpb25dIHsKICAgICAgICAg
ICAgICAgICAvLyBGaXJzdCB0eXBlIGluIHRoZSB2ZWN0b3IgbXVzdCBhbHdheXMgYmUgdGhlIG9u
ZSBmcm9tIG1pbWVUeXBlRm9yRXh0ZW5zaW9uLAogICAgICAgICAgICAgICAgIC8vIHNvIHdlIGNh
biB1c2UgdGhlIG1hcCB3aXRob3V0IGFsc28gY2FsbGluZyBtaW1lVHlwZUZvckV4dGVuc2lvbiBl
YWNoIHRpbWUuCiAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZz4gc3lub255bXM7CkBAIC03
NjMsNyArNzYzLDcgQEAgc3RhdGljIFN0cmluZyBub3JtYWxpemVkSW1hZ2VNSU1FVHlwZShjb25z
dCBTdHJpbmcmIG1pbWVUeXBlKQogICAgIH07CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRB
cnJheU1hcCBhc3NvY2lhdGlvbk1hcCB7IG1pbWVUeXBlQXNzb2NpYXRpb25BcnJheSB9OwogICAg
IGF1dG8gbm9ybWFsaXplZFR5cGUgPSBhc3NvY2lhdGlvbk1hcC50cnlHZXQobWltZVR5cGUpOwot
ICAgIHJldHVybiBub3JtYWxpemVkVHlwZSA/ICpub3JtYWxpemVkVHlwZSA6IG1pbWVUeXBlOwor
ICAgIHJldHVybiBub3JtYWxpemVkVHlwZSA/IFN0cmluZyB7ICpub3JtYWxpemVkVHlwZSB9IDog
bWltZVR5cGU7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYW5pbWF0aW9uL1RpbWluZ0Z1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAKaW5kZXggOTdiMjA1N2Y2YTQwLi4zZDI3NTM1
YmJjM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1p
bmdGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYW5pbWF0aW9uL1Rp
bWluZ0Z1bmN0aW9uLmNwcApAQCAtMTk4LDEzICsxOTgsMTMgQEAgU3RyaW5nIFRpbWluZ0Z1bmN0
aW9uOjpjc3NUZXh0KCkgY29uc3QKICAgICBpZiAobV90eXBlID09IFRpbWluZ0Z1bmN0aW9uOjpD
dWJpY0JlemllckZ1bmN0aW9uKSB7CiAgICAgICAgIGF1dG8mIGZ1bmN0aW9uID0gZG93bmNhc3Q8
Q3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbj4oKnRoaXMpOwogICAgICAgICBpZiAoZnVuY3Rpb24u
eDEoKSA9PSAwLjI1ICYmIGZ1bmN0aW9uLnkxKCkgPT0gMC4xICYmIGZ1bmN0aW9uLngyKCkgPT0g
MC4yNSAmJiBmdW5jdGlvbi55MigpID09IDEuMCkKLSAgICAgICAgICAgIHJldHVybiAiZWFzZSI7
CisgICAgICAgICAgICByZXR1cm4gImVhc2UiX3M7CiAgICAgICAgIGlmIChmdW5jdGlvbi54MSgp
ID09IDAuNDIgJiYgIWZ1bmN0aW9uLnkxKCkgJiYgZnVuY3Rpb24ueDIoKSA9PSAxLjAgJiYgZnVu
Y3Rpb24ueTIoKSA9PSAxLjApCi0gICAgICAgICAgICByZXR1cm4gImVhc2UtaW4iOworICAgICAg
ICAgICAgcmV0dXJuICJlYXNlLWluIl9zOwogICAgICAgICBpZiAoIWZ1bmN0aW9uLngxKCkgJiYg
IWZ1bmN0aW9uLnkxKCkgJiYgZnVuY3Rpb24ueDIoKSA9PSAwLjU4ICYmIGZ1bmN0aW9uLnkyKCkg
PT0gMS4wKQotICAgICAgICAgICAgcmV0dXJuICJlYXNlLW91dCI7CisgICAgICAgICAgICByZXR1
cm4gImVhc2Utb3V0Il9zOwogICAgICAgICBpZiAoZnVuY3Rpb24ueDEoKSA9PSAwLjQyICYmICFm
dW5jdGlvbi55MSgpICYmIGZ1bmN0aW9uLngyKCkgPT0gMC41OCAmJiBmdW5jdGlvbi55MigpID09
IDEuMCkKLSAgICAgICAgICAgIHJldHVybiAiZWFzZS1pbi1vdXQiOworICAgICAgICAgICAgcmV0
dXJuICJlYXNlLWluLW91dCJfczsKICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcoImN1YmljLWJl
emllcigiLCBmdW5jdGlvbi54MSgpLCAiLCAiLCBmdW5jdGlvbi55MSgpLCAiLCAiLCBmdW5jdGlv
bi54MigpLCAiLCAiLCBmdW5jdGlvbi55MigpLCAnKScpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAKaW5kZXgg
MTY3OTkxMWI1ODdmLi4wMmQ4OGU5NDZhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY29jb2EvQUdYQ29tcGlsZXJTZXJ2aWNlLmNwcApAQCAtNjAsNyArNjAsNyBAQCBi
b29sIGRldmljZUhhc0FHWENvbXBpbGVyU2VydmljZSgpCiAKIFNwYW48Y29uc3QgQVNDSUlMaXRl
cmFsPiBhZ3hDb21waWxlclNlcnZpY2VzKCkKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6
YXJyYXkgc2VydmljZXMgeworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxBU0NJSUxp
dGVyYWwsIDI+IHNlcnZpY2VzIHsKICAgICAgICAgImNvbS5hcHBsZS5BR1hDb21waWxlclNlcnZp
Y2UiX3MsCiAgICAgICAgICJjb20uYXBwbGUuQUdYQ29tcGlsZXJTZXJ2aWNlLVMyQTgiX3MKICAg
ICB9OwpAQCAtNjksNyArNjksNyBAQCBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYWd4Q29tcGls
ZXJTZXJ2aWNlcygpCiAKIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBhZ3hDb21waWxlckNsYXNz
ZXMoKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBjbGFzc2VzIHsKKyAgICBz
dGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8QVNDSUlMaXRlcmFsLCAxMD4gY2xhc3NlcyB7CiAg
ICAgICAgICJBR1hDb21tYW5kUXVldWUiX3MsCiAgICAgICAgICJBR1hEZXZpY2UiX3MsCiAgICAg
ICAgICJBR1hTaGFyZWRVc2VyQ2xpZW50Il9zLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKaW5kZXggMTJjZTNlOTZkZDMxLi4zYTNjOTEwN2MzNjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcApA
QCAtMjQzLDcgKzI0Myw3IEBAIEZvbnRQbGF0Zm9ybURhdGEqIEZvbnRDYWNoZTo6Y2FjaGVkRm9u
dFBsYXRmb3JtRGF0YShjb25zdCBGb250RGVzY3JpcHRpb24mIGZvbnRECiAgICAgICAgICAgICAv
LyBXZSB3ZXJlIHVuYWJsZSB0byBmaW5kIGEgZm9udC4gV2UgaGF2ZSBhIHNtYWxsIHNldCBvZiBm
b250cyB0aGF0IHdlIGFsaWFzIHRvIG90aGVyIG5hbWVzLAogICAgICAgICAgICAgLy8gZS5nLiwg
QXJpYWwvSGVsdmV0aWNhLCBDb3VyaWVyL0NvdXJpZXIgTmV3LCBldGMuIFRyeSBsb29raW5nIHVw
IHRoZSBmb250IHVuZGVyIHRoZSBhbGlhc2VkIG5hbWUuCiAgICAgICAgICAgICBpZiAoYXV0byBh
bHRlcm5hdGVOYW1lID0gYWx0ZXJuYXRlRmFtaWx5TmFtZShmYW1pbHlOYW1lKSkgewotICAgICAg
ICAgICAgICAgIGF1dG8qIGFsdGVybmF0ZURhdGEgPSBjYWNoZWRGb250UGxhdGZvcm1EYXRhKGZv
bnREZXNjcmlwdGlvbiwgKmFsdGVybmF0ZU5hbWUsIGZvbnRDcmVhdGlvbkNvbnRleHQsIHRydWUp
OworICAgICAgICAgICAgICAgIGF1dG8qIGFsdGVybmF0ZURhdGEgPSBjYWNoZWRGb250UGxhdGZv
cm1EYXRhKGZvbnREZXNjcmlwdGlvbiwgU3RyaW5nIHsgKmFsdGVybmF0ZU5hbWUgfSwgZm9udENy
ZWF0aW9uQ29udGV4dCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgLy8gTG9vayB1cCB0aGUga2V5
IGluIHRoZSBoYXNoIHRhYmxlIGFnYWluIGFzIHRoZSBwcmV2aW91cyBpdGVyYXRvciBtYXkgaGF2
ZQogICAgICAgICAgICAgICAgIC8vIGJlZW4gaW52YWxpZGF0ZWQgYnkgdGhlIHJlY3Vyc2l2ZSBj
YWxsIHRvIGNhY2hlZEZvbnRQbGF0Zm9ybURhdGEoKS4KICAgICAgICAgICAgICAgICBpdCA9IG1f
Zm9udERhdGFDYWNoZXMtPnBsYXRmb3JtRGF0YS5maW5kKGtleSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlN
RVR5cGVDYWNoZS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL0FWQXNzZXRNSU1FVHlwZUNhY2hlLm1tCmluZGV4IGQ4NDgwNWYyMzUxZS4uYTNj
ZWQwMzEwYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9BVkFzc2V0TUlNRVR5cGVD
YWNoZS5tbQpAQCAtMTUyLDcgKzE1Miw4IEBAIHZvaWQgQVZBc3NldE1JTUVUeXBlQ2FjaGU6Omlu
aXRpYWxpemVDYWNoZShIYXNoU2V0PFN0cmluZywgQVNDSUlDYXNlSW5zZW5zaXRpdmVICiAjaWYg
RU5BQkxFKFdFQk1fRk9STUFUX1JFQURFUikKICAgICBpZiAoU291cmNlQnVmZmVyUGFyc2VyV2Vi
TTo6aXNXZWJNRm9ybWF0UmVhZGVyQXZhaWxhYmxlKCkpIHsKICAgICAgICAgYXV0byB0eXBlcyA9
IFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06OnN1cHBvcnRlZE1JTUVUeXBlcygpOwotICAgICAgICBj
YWNoZS5hZGQodHlwZXMuYmVnaW4oKSwgdHlwZXMuZW5kKCkpOworICAgICAgICBmb3IgKGF1dG8m
IHR5cGUgOiB0eXBlcykKKyAgICAgICAgICAgIGNhY2hlLmFkZChTdHJpbmcgeyB0eXBlIH0pOwog
ICAgIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jYS9HcmFwaGljc0xheWVyQ0EuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcAppbmRleCBiODY2YzcxNzE4Y2IuLmZjNjc0Yjlh
ZWNmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvR3Jh
cGhpY3NMYXllckNBLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
YS9HcmFwaGljc0xheWVyQ0EuY3BwCkBAIC0yNTIsNyArMjUyLDcgQEAgc3RhdGljIFBsYXRmb3Jt
Q0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlIGdldFZhbHVlRnVuY3Rpb25OYW1lRm9yVHJh
bnNmb3JtT3AKICAgICB9CiB9CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwgcHJvcGVydHlJZFRvU3Ry
aW5nKEFuaW1hdGVkUHJvcGVydHlJRCBwcm9wZXJ0eSkKK3N0YXRpYyBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIHByb3BlcnR5SWRUb1N0cmluZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiB7
CiAgICAgc3dpdGNoIChwcm9wZXJ0eSkgewogICAgIGNhc2UgQW5pbWF0ZWRQcm9wZXJ0eVRyYW5z
bGF0ZToKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgQVNDSUlMaXRlcmFsIHByb3BlcnR5SWRU
b1N0cmluZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6
Om51bGwoKTsKIH0KIAogc3RhdGljIGJvb2wgYW5pbWF0aW9uSGFzU3RlcHNUaW1pbmdGdW5jdGlv
bihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFu
aW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9H
cmFwaGljc0NvbnRleHRHTENvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQppbmRleCAxNTczZTE2NjA0MzEuLmFk
YTAyMzUxYjEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jb2NvYS9HcmFwaGljc0NvbnRleHRHTENvY29hLm1tCkBAIC0zNzAsNyAr
MzcwLDcgQEAgYm9vbCBHcmFwaGljc0NvbnRleHRHTENvY29hOjpwbGF0Zm9ybUluaXRpYWxpemUo
KQogICAgIGlmIChtX2lzRm9yV2ViR0wyKQogICAgICAgICBHTF9FbmFibGUoR3JhcGhpY3NDb250
ZXh0R0w6OlBSSU1JVElWRV9SRVNUQVJUX0ZJWEVEX0lOREVYKTsKIAotICAgIFZlY3RvcjxBU0NJ
SUxpdGVyYWwsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKKyAgICBWZWN0b3I8QVNDSUlMaXRlcmFs
V2l0aExlbmd0aCwgND4gcmVxdWlyZWRFeHRlbnNpb25zOwogICAgIGlmIChtX2lzRm9yV2ViR0wy
KSB7CiAgICAgICAgIC8vIEZvciBXZWJHTCAyLjAgb2NjbHVzaW9uIHF1ZXJpZXMgdG8gd29yay4K
ICAgICAgICAgcmVxdWlyZWRFeHRlbnNpb25zLmFwcGVuZCgiR0xfRVhUX29jY2x1c2lvbl9xdWVy
eV9ib29sZWFuIl9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY29jb2EvU291cmNlQnVmZmVyUGFyc2VyV2ViTS5jcHAKaW5kZXggZDhl
NjYwN2Y4OWNkLi5jYWQyNWM4YjEzMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0u
Y3BwCkBAIC01Nyw3ICs1Nyw3IEBAIG5hbWVzcGFjZSBXVEYgewogdGVtcGxhdGU8dHlwZW5hbWU+
IHN0cnVjdCBMb2dBcmd1bWVudDsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8d2Vi
bTo6VHJhY2tUeXBlPiB7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0b1N0cmluZyh3ZWJtOjpU
cmFja1R5cGUgdHlwZSkKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0b1N0cmlu
Zyh3ZWJtOjpUcmFja1R5cGUgdHlwZSkKICAgICB7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewog
ICAgICAgICBjYXNlIHdlYm06OlRyYWNrVHlwZTo6a1ZpZGVvOiByZXR1cm4gIlZpZGVvIl9zOwpA
QCAtNzMsNyArNzMsNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDx3ZWJtOjpUcmFj
a1R5cGU+IHsKIH07CiAKIHRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PHdlYm06OklkPiB7
Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0b1N0cmluZyh3ZWJtOjpJZCBpZCkKKyAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0b1N0cmluZyh3ZWJtOjpJZCBpZCkKICAgICB7CiAg
ICAgICAgIHN3aXRjaCAoaWQpIHsKICAgICAgICAgY2FzZSB3ZWJtOjpJZDo6a0VibWw6IHJldHVy
biAiRWJtbCJfczsKQEAgLTUwMywxMCArNTAzLDEwIEBAIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFs
PiBTb3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRNSU1FVHlwZXMoKQogI2Vsc2UKICAg
ICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgdHlwZXMgewogI2lmIEVOQUJMRShWUDkpCi0g
ICAgICAgICJ2aWRlby93ZWJtIl9zLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+
KCJ2aWRlby93ZWJtIl9zKSwKICNlbmRpZgogI2lmIEVOQUJMRShWT1JCSVMpIHx8IEVOQUJMRShP
UFVTKQotICAgICAgICAiYXVkaW8vd2VibSJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlM
aXRlcmFsPigiYXVkaW8vd2VibSJfcyksCiAjZW5kaWYKICAgICB9OwogICAgIHJldHVybiB0eXBl
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJGdW5jdGlvbi5jcHAKaW5kZXggNjI5ZjczNGZhNThhLi5hMDY4MjY2ZTk3YmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIEF0b21TdHJpbmcgRmls
dGVyRnVuY3Rpb246OmZpbHRlck5hbWUoVHlwZSBmaWx0ZXJUeXBlKQogICAgIHN0YXRpYyBjb25z
dGV4cHIgU29ydGVkQXJyYXlNYXAgbmFtZXNNYXAgeyBuYW1lc0FycmF5IH07CiAgICAgCiAgICAg
QVNTRVJUKG5hbWVzTWFwLnRyeUdldChmaWx0ZXJUeXBlKSk7Ci0gICAgcmV0dXJuIG5hbWVzTWFw
LmdldChmaWx0ZXJUeXBlLCAiIl9zKTsKKyAgICByZXR1cm4gQXRvbVN0cmluZyB7IG5hbWVzTWFw
LmdldChmaWx0ZXJUeXBlLCAiIl9zKSB9OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGEyYzI1
MGFhMmJlZi4uMGU2YzJjMmFlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQpAQCAtNTU2LDcgKzU1Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5v
bk51bGwoKSwgbWltZVR5cGUpOworICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWRJbWFnZShidWZm
ZXIucmVsZWFzZU5vbk51bGwoKSwgU3RyaW5nIHsgbWltZVR5cGUgfSk7CiAgICAgfTsKIAogICAg
IFZlY3RvcjxJbWFnZVJlYWRpbmdJbmZvLCA2PiB0cmFuc2NvZGVkSW1hZ2VUeXBlc1RvUmVhZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5k
ZXggZjNmODdhNGY3ZTliLi4zMTAyYjQzMmY0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC05OTUsNyArOTk1LDcgQEAgU3RyaW5n
IG5vcm1hbGl6ZUhUVFBNZXRob2QoY29uc3QgU3RyaW5nJiBtZXRob2QpCiAgICAgICAgICAgICAv
LyBEb24ndCBib3RoZXIgYWxsb2NhdGluZyBhIG5ldyBzdHJpbmcgaWYgaXQncyBhbHJlYWR5IGFs
bCB1cHBlcmNhc2UuCiAgICAgICAgICAgICBpZiAobWV0aG9kID09IHZhbHVlKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAgICAgcmV0
dXJuIFN0cmluZyB7IHZhbHVlIH07CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG1ldGhv
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tp
bmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAK
aW5kZXggMjM0NTUyNWIyYzgwLi4xMTdjNGQ0OWQyOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzM4LDcgKzMzMzgsNyBAQCBz
dGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlvbihQYXR0ZXJuRGVzY3Jp
cHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBGb250Q2FzY2FkZSBmb250KFdURk1vdmUo
Zm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CiAgICAgICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwog
Ci0gICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4oZGVzY3JpcHRpb24ubmFtZSk7Cisg
ICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4oU3RyaW5nIHsgZGVzY3JpcHRpb24ubmFt
ZSB9KTsKICAgICAgICAgaW1hZ2VDb250ZXh0LnNldEZpbGxDb2xvcihkZXNjcmlwdGlvbi5maWxs
Q29sb3IpOwogCiAgICAgICAgIGNvbnN0ZXhwciBmbG9hdCB0ZXh0R2FwID0gNDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA1NjcwYjZiZmE2N2UuLmYxNWE1YTY0NDExYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjYzNSw3ICs2NjM1LDcgQEAg
RXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFTZXNzaW9uQ29vcmRpbmF0
b3JDb21tYW5kc1Nob3VsZEZhaWwoYm8KIH0KICNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU0VTU0lP
TikKIAotY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdHJpbmcoUGFydGlhbE9yZGVyaW5nIG9yZGVy
aW5nKQorY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggc3RyaW5nKFBhcnRpYWxPcmRl
cmluZyBvcmRlcmluZykKIHsKICAgICBpZiAoaXNfbHQob3JkZXJpbmcpKQogICAgICAgICByZXR1
cm4gImxlc3MiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCA4OTVk
YzlkMDg1NTAuLmU3NzVlOWYzYjEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUveG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCkBAIC01MjMsNyArNTIzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6
OnNlbmQoQmxvYiYgYm9keSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtlIHRv
IHN1cHBvcnQgcG9zdGluZyBCbG9icyB0byBub24taHR0cCBVUkxzIChlLmcuIGN1c3RvbSBVUkwg
c2NoZW1lcykKICAgICAgICAgICAgIC8vIGJ1dCBiZWNhdXNlIG9mIHRoZSBhcmNoaXRlY3R1cmUg
b2YgYmxvYi1oYW5kbGluZyB0aGF0IHdpbGwgcmVxdWlyZSBhIGZhaXIgYW1vdW50IG9mIHdvcmsu
CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCBjb25zb2xlTWVzc2FnZSB7
ICJQT1NUIG9mIGEgQmxvYiB0byBub24tSFRUUCBwcm90b2NvbHMgaW4gWE1MSHR0cFJlcXVlc3Qu
c2VuZCgpIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC4iX3MgfTsKKyAgICAgICAgICAgIGF1dG8g
Y29uc29sZU1lc3NhZ2UgPSAiUE9TVCBvZiBhIEJsb2IgdG8gbm9uLUhUVFAgcHJvdG9jb2xzIGlu
IFhNTEh0dHBSZXF1ZXN0LnNlbmQoKSBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQuIl9zOwogICAg
ICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNz
YWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBjb25zb2xlTWVzc2FnZSk7CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZXF1ZXN0KCk7CkBAIC01NjUs
NyArNTY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNlbmQoRE9NRm9y
bURhdGEmIGJvZHkpCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZW5kKEFy
cmF5QnVmZmVyJiBib2R5KQogewotICAgIEFTQ0lJTGl0ZXJhbCBjb25zb2xlTWVzc2FnZSB7ICJB
cnJheUJ1ZmZlciBpcyBkZXByZWNhdGVkIGluIFhNTEh0dHBSZXF1ZXN0LnNlbmQoKS4gVXNlIEFy
cmF5QnVmZmVyVmlldyBpbnN0ZWFkLiJfcyB9OworICAgIGF1dG8gY29uc29sZU1lc3NhZ2UgPSAi
QXJyYXlCdWZmZXIgaXMgZGVwcmVjYXRlZCBpbiBYTUxIdHRwUmVxdWVzdC5zZW5kKCkuIFVzZSBB
cnJheUJ1ZmZlclZpZXcgaW5zdGVhZC4iX3M7CiAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJu
aW5nLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIHNlbmRCeXRlc0RhdGEoYm9keS5kYXRh
KCksIGJvZHkuYnl0ZUxlbmd0aCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMu
Y3BwCmluZGV4IDMyMmUzYmUwZjc1ZC4uMDcyM2JlZTZjZDE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9Y
UGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTcwOSw3ICs3MDksNyBAQCBzdGF0aWMgTWVtb3J5Q29tcGFj
dExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgRnVuY3Rpb25NYXBWYWx1ZT4gY3Jl
YXRlRgogCiAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmlu
ZywgRnVuY3Rpb25NYXBWYWx1ZT4gbWFwOwogICAgIGZvciAoYXV0byYgZnVuY3Rpb24gOiBmdW5j
dGlvbnMpCi0gICAgICAgIG1hcC5hZGQoZnVuY3Rpb24ubmFtZSwgZnVuY3Rpb24uZnVuY3Rpb24p
OworICAgICAgICBtYXAuYWRkKFN0cmluZyB7IGZ1bmN0aW9uLm5hbWUgfSwgZnVuY3Rpb24uZnVu
Y3Rpb24pOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YUGF0aFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3Bw
CmluZGV4IGUzMTU2NWViZTc4ZC4uZThmOWNiOWNhM2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBh
cnNlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5
Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFN0ZXA6OkF4aXM+IGNyZWF0ZUF4aXNOYW0KICAgICB9
OwogICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFN0
ZXA6OkF4aXM+IG1hcDsKICAgICBmb3IgKGF1dG8mIGF4aXNOYW1lIDogYXhpc05hbWVMaXN0KQot
ICAgICAgICBtYXAuYWRkKGF4aXNOYW1lLm5hbWUsIGF4aXNOYW1lLmF4aXMpOworICAgICAgICBt
YXAuYWRkKFN0cmluZyB7IGF4aXNOYW1lLm5hbWUgfSwgYXhpc05hbWUuYXhpcyk7CiAgICAgcmV0
dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9D
bGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNz
RGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggNTE2YTJmNTAyY2M5Li41MzRkY2FmYTRjNjcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNw
cApAQCAtMjcyLDcgKzI3Miw3IEBAIGNvbnN0IE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5I
b29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgUmVzb3VyCiAKIFNwYW48Y29u
c3QgQVNDSUlMaXRlcmFsPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZTo6c29y
dGVkVGFibGVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc29ydGVkVGFi
bGVzIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8QVNDSUlMaXRlcmFsLCAxMz4g
c29ydGVkVGFibGVzIHsKICAgICAgICAgIk9ic2VydmVkRG9tYWlucyJfcywKICAgICAgICAgIlRv
cExldmVsRG9tYWlucyJfcywKICAgICAgICAgIlN0b3JhZ2VBY2Nlc3NVbmRlclRvcEZyYW1lRG9t
YWlucyJfcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJh
c2VVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0
aWxpdGllcy5jcHAKaW5kZXggMThmMTFkMzM5ZTFlLi43MTk2YzRkMDQxNzcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwCkBAIC0y
OTgsNyArMjk4LDcgQEAgdm9pZCBEYXRhYmFzZVV0aWxpdGllczo6bWlncmF0ZURhdGFUb05ld1Rh
Ymxlc0lmTmVjZXNzYXJ5KCkKIAogICAgIC8vIE1haW50YWluIHRoZSBvcmRlciBvZiB0YWJsZXMg
dG8gbWFrZSBzdXJlIHRoZSBPYnNlcnZlZERvbWFpbnMgdGFibGUgaXMgY3JlYXRlZCBmaXJzdC4g
T3RoZXIgdGFibGVzIGhhdmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMgcmVmZXJlbmNpbmcgaXQu
CiAgICAgZm9yIChhdXRvJiB0YWJsZSA6IHNvcnRlZFRhYmxlcygpKSB7Ci0gICAgICAgIGF1dG8g
bWlncmF0ZVRhYmxlRGF0YSA9IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudCht
X2RhdGFiYXNlLCB0YWJsZSk7CisgICAgICAgIGF1dG8gbWlncmF0ZVRhYmxlRGF0YSA9IGluc2Vy
dERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudChtX2RhdGFiYXNlLCBTdHJpbmcgeyB0YWJs
ZSB9KTsKICAgICAgICAgaWYgKCFtaWdyYXRlVGFibGVEYXRhIHx8IG1pZ3JhdGVUYWJsZURhdGEt
PnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgdHJhbnNhY3Rpb24ucm9sbGJh
Y2soKTsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZhdGVDbGlja01lYXN1cmVt
ZW50LCAiJXAgLSBEYXRhYmFzZVV0aWxpdGllczo6bWlncmF0ZURhdGFUb05ld1RhYmxlc0lmTmVj
ZXNzYXJ5ICh0YWJsZSAlcykgZmFpbGVkIHRvIG1pZ3JhdGUgc2NoZW1hLCBlcnJvciBtZXNzYWdl
OiAlcyIsIHRoaXMsIHRhYmxlLmNoYXJhY3RlcnMoKSwgbV9kYXRhYmFzZS5sYXN0RXJyb3JNc2co
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlj
a01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAppbmRleCBjMDkwY2JlNTcxODQuLmFkYTkxZjhkOGIw
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVD
bGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAgY29uc3QgTWVt
b3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRl
eFBhaXI+JiBEYXRhYmEKIAogU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IERhdGFiYXNlOjpzb3J0
ZWRUYWJsZXMoKQogewotICAgIHN0YXRpYyBzdGQ6OmFycmF5IHNvcnRlZFRhYmxlcyB7CisgICAg
c3RhdGljIHN0ZDo6YXJyYXk8QVNDSUlMaXRlcmFsLCAzPiBzb3J0ZWRUYWJsZXMgewogICAgICAg
ICAiUENNT2JzZXJ2ZWREb21haW5zIl9zLAogICAgICAgICAiVW5hdHRyaWJ1dGVkUHJpdmF0ZUNs
aWNrTWVhc3VyZW1lbnQiX3MsCiAgICAgICAgICJBdHRyaWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3Vy
ZW1lbnQiX3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFn
ZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDJmYjhhYzU3OGYzZC4uYjdl
ZDVlODQxY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3Jh
Z2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAgLTQxLDcgKzQxLDcgQEAK
IAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBvcmlnaW5GaWxl
TmFtZSA9ICJvcmlnaW4iX3M7CitzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBvcmlnaW5G
aWxlTmFtZSA9ICJvcmlnaW4iX3M7CiBlbnVtIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpT
dG9yYWdlQnVja2V0TW9kZSA6IGJvb2wgeyBCZXN0RWZmb3J0LCBQZXJzaXN0ZW50IH07CiAKIGNs
YXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0IHsKQEAgLTM5MSw3ICszOTEs
NyBAQCBTdHJpbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQ6OnJlc29sdmVk
SURCU3RvcmFnZVBhdGgoKQogCiBTdHJpbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXI6Om9yaWdpbkZp
bGVJZGVudGlmaWVyKCkKIHsKLSAgICByZXR1cm4gb3JpZ2luRmlsZU5hbWU7CisgICAgcmV0dXJu
IFN0cmluZyB7IG9yaWdpbkZpbGVOYW1lIH07CiB9CiAKIHN0YXRpYyBSZWY8UXVvdGFNYW5hZ2Vy
PiBjcmVhdGVRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNvbnN0IFN0cmluZyYgaWRiU3Rv
cmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwgUXVvdGFNYW5hZ2VyOjpJ
bmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwIGIvU291cmNlL1dl
YktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAppbmRleCAwYmUzOTVjMWMzN2MuLmU4
OWMyNTA1NjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENC
aW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcu
Y3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewogCi1zdGF0aWMgSlNDOjpK
U1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkU3RyaW5nQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEFTQ0lJTGl0ZXJhbCB0
eXBlKQorc3RhdGljIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZFN0cmluZ0FyZ3VtZW50
VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHR5cGUpCiB7CiAgICAgYXV0byYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQppbmRleCA0
N2U5ZGNhNTAwYjEuLjFmZTY4NmVhMGUyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5MjIsNyArMjkyMiw3IEBAIHN0YXRpYyBjb25zdCBT
ZWxlY3Rvck5hbWVNYXAmIHNlbGVjdG9yRXhjZXB0aW9uTWFwKCkKICAgICB9OwogCiAgICAgZm9y
IChhdXRvJiBuYW1lIDogbmFtZXMpCi0gICAgICAgIG1hcC5nZXQoKS5hZGQobmFtZS5zZWxlY3Rv
ciwgbmFtZS5jb21tYW5kTmFtZSk7CisgICAgICAgIG1hcC5nZXQoKS5hZGQobmFtZS5zZWxlY3Rv
ciwgU3RyaW5nIHsgbmFtZS5jb21tYW5kTmFtZSB9KTsKIAogICAgIHJldHVybiBtYXA7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAxYzdhZDQ0YzI0NmEu
LmEyZTUxYjNkNmJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC04MTkyLDMxICs4MTkyLDMxIEBAIHN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4g
Z3B1SU9LaXRDbGFzc2VzKCkKIHsKICAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgc2Vy
dmljZXMgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICJBR1hEZXZpY2VVc2Vy
Q2xpZW50Il9zLAotICAgICAgICAiSU9HUFUiX3MsCi0gICAgICAgICJJT1N1cmZhY2VSb290VXNl
ckNsaWVudCJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQUdYRGV2aWNl
VXNlckNsaWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIklPR1BV
Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiSU9TdXJmYWNlUm9vdFVz
ZXJDbGllbnQiX3MpLAogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShNQUND
QVRBTFlTVCkKLSAgICAgICAgIkFHUE1DbGllbnQiX3MsCi0gICAgICAgICJBcHBsZUdyYXBoaWNz
Q29udHJvbENsaWVudCJfcywKLSAgICAgICAgIkFwcGxlR3JhcGhpY3NQb2xpY3lDbGllbnQiX3Ms
Ci0gICAgICAgICJBcHBsZUludGVsTUVVc2VyQ2xpZW50Il9zLAotICAgICAgICAiQXBwbGVNR1BV
UG93ZXJDb250cm9sQ2xpZW50Il9zLAotICAgICAgICAiQXBwbGVTTkJGQlVzZXJDbGllbnQiX3Ms
Ci0gICAgICAgICJBcHBsZVVwc3RyZWFtVXNlckNsaWVudCJfcywKLSAgICAgICAgIkF1ZGlvQVVV
QyJfcywKLSAgICAgICAgIklPQWNjZWxlcmF0aW9uVXNlckNsaWVudCJfcywKLSAgICAgICAgIklP
QWNjZWxlcmF0b3IiX3MsCi0gICAgICAgICJJT0F1ZGlvQ29udHJvbFVzZXJDbGllbnQiX3MsCi0g
ICAgICAgICJJT0F1ZGlvRW5naW5lVXNlckNsaWVudCJfcywKLSAgICAgICAgIklPU3VyZmFjZVJv
b3RVc2VyQ2xpZW50Il9zLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJBR1BN
Q2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQXBwbGVHcmFw
aGljc0NvbnRyb2xDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+
KCJBcHBsZUdyYXBoaWNzUG9saWN5Q2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVND
SUlMaXRlcmFsPigiQXBwbGVJbnRlbE1FVXNlckNsaWVudCJfcyksCisgICAgICAgIHN0YXRpY19j
YXN0PEFTQ0lJTGl0ZXJhbD4oIkFwcGxlTUdQVVBvd2VyQ29udHJvbENsaWVudCJfcyksCisgICAg
ICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIkFwcGxlU05CRkJVc2VyQ2xpZW50Il9zKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQXBwbGVVcHN0cmVhbVVzZXJDbGll
bnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJBdWRpb0FVVUMiX3Mp
LAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJJT0FjY2VsZXJhdGlvblVzZXJD
bGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJJT0FjY2VsZXJh
dG9yIl9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiSU9BdWRpb0NvbnRy
b2xVc2VyQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiSU9B
dWRpb0VuZ2luZVVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVy
YWw+KCJJT1N1cmZhY2VSb290VXNlckNsaWVudCJfcyksCiAjZW5kaWYKICAgICAgICAgLy8gRklY
TUU6IElzIHRoaXMgYWxzbyBuZWVkZWQgaW4gUExBVEZPUk0oTUFDQ0FUQUxZU1QpPwogI2lmIFBM
QVRGT1JNKE1BQykgJiYgQ1BVKEFSTTY0KQotICAgICAgICAiSU9Nb2JpbGVGcmFtZWJ1ZmZlclVz
ZXJDbGllbnQiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIklPTW9iaWxl
RnJhbWVidWZmZXJVc2VyQ2xpZW50Il9zKSwKICNlbmRpZgogI2lmIChQTEFURk9STShNQUMpICYm
IENQVShBUk02NCkpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAgICJJT1N1cmZhY2VB
Y2NlbGVyYXRvckNsaWVudCJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigi
SU9TdXJmYWNlQWNjZWxlcmF0b3JDbGllbnQiX3MpLAogI2VuZGlmCiAgICAgfTsKICAgICByZXR1
cm4gc2VydmljZXM7CkBAIC04MjI1LDkgKzgyMjUsOSBAQCBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJ
SUxpdGVyYWw+IGdwdUlPS2l0Q2xhc3NlcygpCiBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVy
YWw+IGdwdU1hY2hTZXJ2aWNlcygpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5
IHNlcnZpY2VzIHsKLSAgICAgICAgImNvbS5hcHBsZS5NVExDb21waWxlclNlcnZpY2UiX3MsCisg
ICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oImNvbS5hcHBsZS5NVExDb21waWxlclNl
cnZpY2UiX3MpLAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0g
ICAgICAgICJjb20uYXBwbGUuY3Ztc1NlcnYiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJ
TGl0ZXJhbD4oImNvbS5hcHBsZS5jdm1zU2VydiJfcyksCiAjZW5kaWYKICAgICB9OwogICAgIHJl
dHVybiBzZXJ2aWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
SVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggZWUxNjQ1ZWY0ZTBjLi4zZTlhOGQ1MjBmMTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3Bw
CkBAIC02MSwxMSArNjEsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIG5hbWVzcGFjZSBJUENU
ZXN0aW5nQVBJIHsKIAotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2Nlc3NUYXJnZXROYW1lVUkg
PSAiVUkiX3M7CitzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBwcm9jZXNzVGFyZ2V0TmFt
ZVVJID0gIlVJIl9zOwogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLXN0YXRpYyBjb25zdGV4cHIg
YXV0byBwcm9jZXNzVGFyZ2V0TmFtZUdQVSA9ICJHUFUiX3M7CitzdGF0aWMgY29uc3RleHByIEFT
Q0lJTGl0ZXJhbCBwcm9jZXNzVGFyZ2V0TmFtZUdQVSA9ICJHUFUiX3M7CiAjZW5kaWYKLXN0YXRp
YyBjb25zdGV4cHIgYXV0byBwcm9jZXNzVGFyZ2V0TmFtZU5ldHdvcmtpbmcgPSAiTmV0d29ya2lu
ZyJfczsKK3N0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHByb2Nlc3NUYXJnZXROYW1lTmV0
d29ya2luZyA9ICJOZXR3b3JraW5nIl9zOwogCiBzdGF0aWMgc3RkOjpvcHRpb25hbDx1aW50NjRf
dD4gZGVzdGluYXRpb25JREZyb21Bcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZVJlZiwgSlNWYWx1ZVJlZiopOwogc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+IG1lc3Nh
Z2VJREZyb21Bcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZVJlZiwgSlNWYWx1
ZVJlZiopOwpAQCAtMjA2NSwxMyArMjA2NSwxMyBAQCBKU1ZhbHVlUmVmIEpTSVBDOjpwcm9jZXNz
VGFyZ2V0cyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSgog
ICAgIEpTQzo6SlNPYmplY3QqIHByb2Nlc3NUYXJnZXRzT2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3RF
bXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwogICAgIGludCBpbmRleCA9
IDA7Ci0gICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVj
dCwgaW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVVSSkpOworICAg
IHByb2Nlc3NUYXJnZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4
KyssIEpTQzo6anNTdHJpbmcodm0sIFN0cmluZyB7IHByb2Nlc3NUYXJnZXROYW1lVUkgfSkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpKTsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgcHJvY2Vzc1RhcmdldHNPYmplY3Qt
PnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwg
cHJvY2Vzc1RhcmdldE5hbWVHUFUpKTsKKyAgICBwcm9jZXNzVGFyZ2V0c09iamVjdC0+cHV0RGly
ZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBKU0M6OmpzU3RyaW5nKHZtLCBTdHJpbmcg
eyBwcm9jZXNzVGFyZ2V0TmFtZUdQVSB9KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwogI2VuZGlmCi0gICAgcHJvY2Vzc1Rh
cmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlNDOjpq
c1N0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVOZXR3b3JraW5nKSk7CisgICAgcHJvY2Vzc1Rh
cmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlNDOjpq
c1N0cmluZyh2bSwgU3RyaW5nIHsgcHJvY2Vzc1RhcmdldE5hbWVOZXR3b3JraW5nIH0pKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KSk7CiAgICAgcmV0dXJuIHRvUmVmKHZtLCBwcm9jZXNzVGFyZ2V0c09iamVjdCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCmlu
ZGV4IDFhNzg5Zjk5ZDg5Zi4uMzkzMGYwYzk0ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAtMjMwLDcgKzIzMCw3IEBA
IHN0YXRpYyBTdHJpbmcgY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUoY29uc3QgU3RyaW5nJiBz
ZWxlY3Rvck5hbWUpCiAgICAgfTsKICAgICBzdGF0aWMgY29uc3RleHByIFNvcnRlZEFycmF5TWFw
IG1hcCB7IHNlbGVjdG9yRXhjZXB0aW9ucyB9OwogICAgIGlmIChhdXRvIGNvbW1hbmROYW1lID0g
bWFwLnRyeUdldChzZWxlY3Rvck5hbWUpKQotICAgICAgICByZXR1cm4gKmNvbW1hbmROYW1lOwor
ICAgICAgICByZXR1cm4gU3RyaW5nIHsgKmNvbW1hbmROYW1lIH07CiAKICAgICAvLyBSZW1vdmUg
dGhlIHRyYWlsaW5nIGNvbG9uLgogICAgIC8vIE5vIG5lZWQgdG8gY2FwaXRhbGl6ZSB0aGUgY29t
bWFuZCBuYW1lIHNpbmNlIEVkaXRvciBjb21tYW5kIG5hbWVzIGFyZSBub3QgY2FzZSBzZW5zaXRp
dmUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455465</attachid>
            <date>2022-03-22 18:46:35 -0700</date>
            <delta_ts>2022-03-22 21:40:16 -0700</delta_ts>
            <desc>Geoff&apos;s alternative proposal</desc>
            <filename>238162_s_suffix_no_strlen_geoff_proposal_wip2.patch</filename>
            <type>text/plain</type>
            <size>147575</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZWYwZmY2MmE3OGEzLi42Nzkx
ZmFlYzI0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDAsOSAr
MTAwLDkgQEAgc3RhdGljIFQgcGFyc2VCcmVha3BvaW50T3B0aW9ucyhQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNPTjoKICAgICBzaXplX3QgaWdub3JlQ291bnQg
PSAwOwogCiAgICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgY29uZGl0aW9uID0gb3B0aW9ucy0+
Z2V0U3RyaW5nKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmNvbmRpdGlv
bktleSk7CisgICAgICAgIGNvbmRpdGlvbiA9IG9wdGlvbnMtPmdldFN0cmluZyhTdHJpbmcgeyBQ
cm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjpjb25kaXRpb25LZXkgfSk7CiAK
LSAgICAgICAgYXV0byBhY3Rpb25zUGF5bG9hZCA9IG9wdGlvbnMtPmdldEFycmF5KFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmFjdGlvbnNLZXkpOworICAgICAgICBhdXRv
IGFjdGlvbnNQYXlsb2FkID0gb3B0aW9ucy0+Z2V0QXJyYXkoU3RyaW5nIHsgUHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6YWN0aW9uc0tleSB9KTsKICAgICAgICAgaWYgKGF1
dG8gY291bnQgPSBhY3Rpb25zUGF5bG9hZCA/IGFjdGlvbnNQYXlsb2FkLT5sZW5ndGgoKSA6IDAp
IHsKICAgICAgICAgICAgIGFjdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CiAK
QEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgVCBwYXJzZUJyZWFrcG9pbnRPcHRpb25zKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGF1dG8gYWN0aW9uVHlwZVN0cmluZyA9IGFjdGlvbk9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6dHlwZUtleSk7CisgICAgICAgICAgICAgICAg
YXV0byBhY3Rpb25UeXBlU3RyaW5nID0gYWN0aW9uT2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsg
UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjp0eXBlS2V5IH0pOwogICAgICAg
ICAgICAgICAgIGlmICghYWN0aW9uVHlwZVN0cmluZykgewogICAgICAgICAgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHR5cGUgZm9yIGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEyNSwyMCArMTI1LDIwIEBAIHN0
YXRpYyBUIHBhcnNlQnJlYWtwb2ludE9wdGlvbnMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgUmVmUHRyPEpTT046CiAKICAgICAgICAgICAgICAgICBKU0M6OkJyZWFrcG9pbnQ6
OkFjdGlvbiBhY3Rpb24oKmFjdGlvblR5cGUpOwogCi0gICAgICAgICAgICAgICAgYWN0aW9uLmRh
dGEgPSBhY3Rpb25PYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9p
bnRBY3Rpb246OmRhdGFLZXkpOworICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gYWN0aW9u
T2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
QWN0aW9uOjpkYXRhS2V5IH0pOwogCiAgICAgICAgICAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBp
ZGVudGlmaWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBz
YW1wbGVzCiAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0aXBs
ZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgotICAg
ICAgICAgICAgICAgIGFjdGlvbi5pZCA9IGFjdGlvbk9iamVjdC0+Z2V0SW50ZWdlcihQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OmlkS2V5KS52YWx1ZV9vcihKU0M6Om5vQnJl
YWtwb2ludEFjdGlvbklEKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uaWQgPSBhY3Rpb25PYmpl
Y3QtPmdldEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0
aW9uOjppZEtleSB9KS52YWx1ZV9vcihKU0M6Om5vQnJlYWtwb2ludEFjdGlvbklEKTsKIAotICAg
ICAgICAgICAgICAgIGFjdGlvbi5lbXVsYXRlVXNlckdlc3R1cmUgPSBhY3Rpb25PYmplY3QtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjplbXVsYXRlVXNl
ckdlc3R1cmVLZXkpLnZhbHVlX29yKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uZW11
bGF0ZVVzZXJHZXN0dXJlID0gYWN0aW9uT2JqZWN0LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6ZW11bGF0ZVVzZXJHZXN0dXJlS2V5IH0p
LnZhbHVlX29yKGZhbHNlKTsKIAogICAgICAgICAgICAgICAgIGFjdGlvbnMudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFByb3RvY29sOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSkudmFsdWVfb3IoZmFsc2UpOwotICAg
ICAgICBpZ25vcmVDb3VudCA9IG9wdGlvbnMtPmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50T3B0aW9uczo6aWdub3JlQ291bnRLZXkpLnZhbHVlX29yKDApOworICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSB9KS52YWx1ZV9vcihm
YWxzZSk7CisgICAgICAgIGlnbm9yZUNvdW50ID0gb3B0aW9ucy0+Z2V0SW50ZWdlcihTdHJpbmcg
eyBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjppZ25vcmVDb3VudEtleSB9
KS52YWx1ZV9vcigwKTsKICAgICB9CiAKICAgICByZXR1cm4gY2FsbGJhY2soY29uZGl0aW9uLCBX
VEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKQEAgLTUxOCw3ICs1
MTgsNyBAQCBzdGF0aWMgUmVmPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGJ1aWxkRGVi
dWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcAogCiBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0
aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVj
dCYgbG9jYXRpb24sIEpTQzo6U291cmNlSUQmIHNvdXJjZUlELCB1bnNpZ25lZCYgbGluZU51bWJl
ciwgdW5zaWduZWQmIGNvbHVtbk51bWJlcikKIHsKLSAgICBhdXRvIGxpbmVOdW1iZXJWYWx1ZSA9
IGxvY2F0aW9uLmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6bGluZU51
bWJlcktleSk7CisgICAgYXV0byBsaW5lTnVtYmVyVmFsdWUgPSBsb2NhdGlvbi5nZXRJbnRlZ2Vy
KFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmxpbmVOdW1iZXJLZXkgfSk7
CiAgICAgaWYgKCFsaW5lTnVtYmVyVmFsdWUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5l
eHBlY3RlZCBub24taW50ZWdlciBsaW5lTnVtYmVyIGluIGdpdmVuIGxvY2F0aW9uIl9zOwogICAg
ICAgICBzb3VyY2VJRCA9IEpTQzo6bm9Tb3VyY2VJRDsKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0
aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IEpTT046Ok9iamVjdAogCiAgICAgbGluZU51bWJlciA9ICpsaW5lTnVtYmVyVmFsdWU7
CiAKLSAgICBhdXRvIHNjcmlwdElEU3RyID0gbG9jYXRpb24uZ2V0U3RyaW5nKFByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb246OnNjcmlwdElkS2V5KTsKKyAgICBhdXRvIHNjcmlwdElEU3RyID0g
bG9jYXRpb24uZ2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246
OnNjcmlwdElkS2V5IH0pOwogICAgIGlmICghc2NyaXB0SURTdHIpIHsKICAgICAgICAgc291cmNl
SUQgPSBKU0M6Om5vU291cmNlSUQ7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhlcGN0ZWQg
bm9uLXN0cmluZyBzY3JpcHRJZCBpbiBnaXZlbiBsb2NhdGlvbiJfczsKQEAgLTUzNSw3ICs1MzUs
NyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdAogICAgIH0KIAogICAgIHNvdXJjZUlEID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SURTdHIp
LnZhbHVlX29yKDApOwotICAgIGNvbHVtbk51bWJlciA9IGxvY2F0aW9uLmdldEludGVnZXIoUHJv
dG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y29sdW1uTnVtYmVyS2V5KS52YWx1ZV9vcigwKTsK
KyAgICBjb2x1bW5OdW1iZXIgPSBsb2NhdGlvbi5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29s
OjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNvbHVtbk51bWJlcktleSB9KS52YWx1ZV9vcigwKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
NmU5NzY2MjExODYzLi5kMWM5YWEyNjc1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6b3B0
aW9uYWw8aW50PiAvKiBzYXZlUmVzdWx0SW5kZXggKi8+IEluc3BlY3RvclJ1bnRpCiAKICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdDsKIAotICAgIGF1dG8gb2JqZWN0SWQgPSBjYWxs
QXJndW1lbnQtPmdldFN0cmluZyhQcm90b2NvbDo6UnVudGltZTo6Q2FsbEFyZ3VtZW50OjpvYmpl
Y3RJZEtleSk7CisgICAgYXV0byBvYmplY3RJZCA9IGNhbGxBcmd1bWVudC0+Z2V0U3RyaW5nKFN0
cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpDYWxsQXJndW1lbnQ6Om9iamVjdElkS2V5IH0pOwog
ICAgIGlmICghb2JqZWN0SWQpIHsKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNj
cmlwdEZvckV2YWwoZXJyb3JTdHJpbmcsIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSk7CiAg
ICAgICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCkBAIC00MDgsOSArNDA4LDkg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1
bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+PgogICAgICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmV4cGVjdGVkIG5vbi1vYmplY3QgaXRlbSBp
biBsb2NhdGlvbnMiX3MpOwogCi0gICAgICAgIGF1dG8gZGVzY3JpcHRvciA9IGxvY2F0aW9uLT5n
ZXRJbnRlZ2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OnR5cGVJbmZvcm1hdGlv
bkRlc2NyaXB0b3JLZXkpLnZhbHVlX29yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3Jt
YWwpOwotICAgICAgICBhdXRvIHNvdXJjZUlEU3RyaW5nID0gbG9jYXRpb24tPmdldFN0cmluZyhQ
cm90b2NvbDo6UnVudGltZTo6VHlwZUxvY2F0aW9uOjpzb3VyY2VJREtleSk7Ci0gICAgICAgIGF1
dG8gZGl2b3QgPSBsb2NhdGlvbi0+Z2V0SW50ZWdlcihQcm90b2NvbDo6UnVudGltZTo6VHlwZUxv
Y2F0aW9uOjpkaXZvdEtleSkudmFsdWVfb3IoMCk7CisgICAgICAgIGF1dG8gZGVzY3JpcHRvciA9
IGxvY2F0aW9uLT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0b3JLZXkgfSkudmFsdWVfb3IoVHlwZVByb2Zp
bGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCk7CisgICAgICAgIGF1dG8gc291cmNlSURTdHJpbmcg
PSBsb2NhdGlvbi0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnNvdXJjZUlES2V5IH0pOworICAgICAgICBhdXRvIGRpdm90ID0gbG9jYXRpb24tPmdl
dEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVMb2NhdGlvbjo6ZGl2b3RL
ZXkgfSkudmFsdWVfb3IoMCk7CiAKICAgICAgICAgYXV0byB0eXBlTG9jYXRpb24gPSBtX3ZtLnR5
cGVQcm9maWxlcigpLT5maW5kTG9jYXRpb24oZGl2b3QsIHBhcnNlSW50ZWdlcjx1aW50cHRyX3Q+
KHNvdXJjZUlEU3RyaW5nKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yPihkZXNjcmlwdG9yKSwgbV92bSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weQppbmRleCBkZWYyMWFjYWNmODguLjlkYTE0ZWM0NzM5YyAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weQpAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5
cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMu
YXBwZW5kKCd9OycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCdTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsnKQotICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICByZXR1cm4gZW51bV9jb25zdGFudF92YWx1ZXNbY29kZV07JykKKyAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIFN0cmluZyB7IGVudW1fY29uc3RhbnRfdmFs
dWVzW2NvZGVdIH07JykKICAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgcmV0dXJu
IFsnXG4nLmpvaW4obGluZXMpXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCBkYTYwMGVhMDBmMGMuLjFkZTg4YjE3YmRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ1
LDcgKzEwNDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQog
ICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7
CisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFN0cmlu
ZyB7IFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvciB9KSk7CiAgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihjb3VsZERlbGV0ZSkpOwogfQogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKIAogICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5p
c1N0cmljdCgpKQotICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKKyAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgVW5hYmxlVG9EZWxldGVQcm9w
ZXJ0eUVycm9yIH0pKTsKICAgICAKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGU5YmRiN2M4NWRhYS4uMGVkMTM2
YTc1NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDksNyArNDksNyBAQCBBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yOjpBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cgogCiB2b2lkIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6
OkFnZ3JlZ2F0ZUVycm9yKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgU3RyaW5nIHsgZXJy
b3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9LCBQcm9wZXJ0eUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIEFTU0VSVChpbmhlcml0cyh2
bSwgaW5mbygpKSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcAppbmRleCAxMTljZDVhMzliMTEuLjY5ZjZlMzg5
MTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRl
RXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBBZ2dyZWdhdGVFcnJv
clByb3RvdHlwZTo6QWdncmVnYXRlRXJyb3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIAogdm9pZCBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBlcnJvclR5cGVOYW1lKEVy
cm9yVHlwZTo6QWdncmVnYXRlRXJyb3IpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
U3RyaW5nIHsgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9KTsKICAg
ICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKaW5kZXggNDVh
MDAxM2FmMWM3Li43NWYyYWUwYjA3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyU2hhcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAg
ZW51bSBjbGFzcyBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIDogdWludDhfdCB7CiAgICAgU2hhcmVk
CiB9OwogCi1pbmxpbmUgQVNDSUlMaXRlcmFsIGFycmF5QnVmZmVyU2hhcmluZ01vZGVOYW1lKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUpCitpbmxpbmUgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBhcnJheUJ1ZmZlclNoYXJpbmdNb2RlTmFtZShBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
IHNoYXJpbmdNb2RlKQogewogICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKICAgICBjYXNlIEFy
cmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQ6CkBAIC00NCw3ICs0NCw3IEBAIGlubGluZSBB
U0NJSUxpdGVyYWwgYXJyYXlCdWZmZXJTaGFyaW5nTW9kZU5hbWUoQXJyYXlCdWZmZXJTaGFyaW5n
TW9kZSBzaGFyaW5nTW9kCiAgICAgICAgIHJldHVybiAiU2hhcmVkQXJyYXlCdWZmZXIiX3M7CiAg
ICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxs
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDE4MTVlMTQ3Yjk2NS4uZmUyZDJhODA2
M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCB1bnNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlzT2JqLCB1aW50NjRfdCBoZWFkZXIsIHUKICAgICBp
ZiAoaXNKU0FycmF5KHRoaXNPYmopKSB7CiAgICAgICAgIC8vIFNwZWMgc2F5cyBpZiB3ZSB3b3Vs
ZCBwcm9kdWNlIGFuIGFycmF5IG9mIHRoaXMgc2l6ZSwgd2UgbXVzdCB0aHJvdyBhIHJhbmdlIGVy
cm9yLgogICAgICAgICBpZiAoY291bnQgKyBsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCkpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKTsKKyAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBM
ZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExNDgsNyArMTE0OCw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NsaWNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsCiAgICAgICAgIHJlc3VsdCA9IHNwZWNpZXNSZXN1bHQuc2Vjb25kOwogICAgIGVs
c2UgewogICAgICAgICBpZiAoVU5MSUtFTFkoZW5kIC0gYmVnaW4gPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJv
cik7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgU3Ry
aW5nIHsgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KTsKICAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgICAgIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZW5kIC0gYmVnaW4pKTsKQEAgLTEyNDAsNyArMTI0MCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NwbGljZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhCiAgICAgICAgICAgICByZXN1bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29u
ZDsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYWN0dWFsRGVsZXRl
Q291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIExlbmd0aEV4Y2Vl
ZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1h
eGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gSlNBcnJheTo6
dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYWN0dWFsRGVsZXRlQ291bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDFlZWVlMmNiOWU0Ni4uMGIxZmEzZjgxNjA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2NoZWNrX3RkeikKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
dGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCiB7CiAgICAg
QkVHSU4oKTsKLSAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIFN0cmluZyB7IFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yIH0pKTsKIH0KIAogSlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9ub3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggZjYzOGI2NmRlYWUwLi5lMmFhOGRmMmMyOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTI3MiwxNiArMjcyLDIx
IEBAIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGhyb3dTY29wZSYgc2NvcGUpCiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QpKTsKIH0KIAotRXhjZXB0
aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dU
eXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgU3RyaW5nKGVycm9yTWVzc2FnZSkpOworICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBtZXNzYWdlKSk7CiB9CiAKLUV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbWVzc2FnZSkK
IHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWVzc2FnZSkpOwogfQogCitFeGNlcHRpb24qIHRocm93
VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3Bl
LCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsg
bWVzc2FnZSB9KSk7Cit9CisKIEV4Y2VwdGlvbiogdGhyb3dTeW50YXhFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFs
T2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAppbmRleCA1NGIxNDk0
NThmZjIuLmE3ZDgxNDNjN2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
CkBAIC03OCw4ICs3OCw5IEBAIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oVk0mLCBKU09iamVjdCog
ZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CiAvLyBDb252ZW5pZW5jZSB3cmFw
cGVycywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdl
LgogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVD
YWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IHRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwotSlNfRVhQT1JU
X1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93
U2NvcGUmLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKTsKIEpTX0VYUE9SVF9QUklWQVRFIEV4
Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0
aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRo
cm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIEFTQ0lJTGl0ZXJhbCBl
cnJvck1lc3NhZ2UpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1N5bnRheEVy
cm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhj
ZXB0aW9uKiB0aHJvd1N5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIGlubGluZSBFeGNlcHRpb24qIHRocm93UmFuZ2VF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBlcnJvck1lc3NhZ2Up
KTsgfQpAQCAtOTUsOCArOTYsOSBAQCBpbmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEV4Y2VwdAogaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
aHJvd1Njb3BlJiBzY29wZSwgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yKSk7IH0KIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVy
cm9yKGdsb2JhbE9iamVjdCwgZXJyb3JNZXNzYWdlKSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgdGhyb3dWTVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JN
ZXNzYWdlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBTdHJpbmcgeyBlcnJvck1lc3NhZ2UgfSk7IH0KK2lubGluZSBFbmNvZGVk
SlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRo
cm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN0cmluZyB7IGVycm9yTWVzc2FnZSB9
KTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRo
cm93Vk1ET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01B
dHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBw
cm9wZXJ0eU5hbWUpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1ET01BdHRyaWJ1
dGVTZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29w
ZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01BdHRyaWJ1dGVTZXR0ZXJU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKaW5kZXggZjE0OWQ0ZTU5YTcyLi4zZTJhM2Q5MzRmODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIEpTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xv
dyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICIiOworICAgICAg
ICBmdW5jdGlvbkhlYWRlciA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDFjOWZlNTU2NTAxZi4uNWE5ZTUzM2Jk
ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0x
MTMsNiArMTEzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnND
b3VudD4KICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgY2hhciAo
JmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b21TdHJpbmcoVk0mLCBBU0NJSUxpdGVyYWwpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21T
dHJpbmcoVk0mLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoKTsKICAgICBzdGF0aWMgSWRlbnRpZmll
ciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgTENoYXIqLCBpbnQgbGVuZ3RoKTsKICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsKICAg
ICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgU3RyaW5nJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRl
eCBhNTcyZjU3YTVjOWMuLjU3ZDAxZGExYjNjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC05MSw2ICs5MSwxMSBAQCBpbmxp
bmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNJiB2bSwgQVNDSUlMaXRlcmFs
IHMpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIFN0cmluZyhzKSk7CiB9CiAKK2lubGluZSBJ
ZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIHMpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIFN0cmluZyhzKSk7Cit9CisK
IGlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBjb25zdCBM
Q2hhciogcywgaW50IGxlbmd0aCkKIHsKICAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgcywgbGVu
Z3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3Bw
CmluZGV4IGI2YmI3NTE1ODBkNy4uNTljZjUzNzExNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCBKU1Zh
bHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RyaW5nVmlldyB4LAogICAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOwogfQogCi1B
U0NJSUxpdGVyYWwgSW50bENvbGxhdG9yOjp1c2FnZVN0cmluZyhVc2FnZSB1c2FnZSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bENvbGxhdG9yOjp1c2FnZVN0cmluZyhVc2FnZSB1c2FnZSkK
IHsKICAgICBzd2l0Y2ggKHVzYWdlKSB7CiAgICAgY2FzZSBVc2FnZTo6U29ydDoKQEAgLTMzMCwx
MCArMzMwLDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0b3I6OnVzYWdlU3RyaW5nKFVzYWdl
IHVzYWdlKQogICAgICAgICByZXR1cm4gInNlYXJjaCJfczsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRs
Q29sbGF0b3I6OnNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5IHNlbnNpdGl2aXR5KQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsQ29sbGF0b3I6OnNlbnNpdGl2aXR5U3RyaW5nKFNlbnNp
dGl2aXR5IHNlbnNpdGl2aXR5KQogewogICAgIHN3aXRjaCAoc2Vuc2l0aXZpdHkpIHsKICAgICBj
YXNlIFNlbnNpdGl2aXR5OjpCYXNlOgpAQCAtMzQ2LDEwICszNDYsMTAgQEAgQVNDSUlMaXRlcmFs
IEludGxDb2xsYXRvcjo6c2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkgc2Vuc2l0aXZpdHkp
CiAgICAgICAgIHJldHVybiAidmFyaWFudCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0
b3I6OmNhc2VGaXJzdFN0cmluZyhDYXNlRmlyc3QgY2FzZUZpcnN0KQorQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBJbnRsQ29sbGF0b3I6OmNhc2VGaXJzdFN0cmluZyhDYXNlRmlyc3QgY2FzZUZpcnN0
KQogewogICAgIHN3aXRjaCAoY2FzZUZpcnN0KSB7CiAgICAgY2FzZSBDYXNlRmlyc3Q6OkZhbHNl
OgpAQCAtMzYwLDcgKzM2MCw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0b3I6OmNhc2VGaXJz
dFN0cmluZyhDYXNlRmlyc3QgY2FzZUZpcnN0KQogICAgICAgICByZXR1cm4gInVwcGVyIl9zOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0K
IAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLmNvbGxhdG9yLnByb3RvdHlw
ZS5yZXNvbHZlZG9wdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yLmgKaW5kZXggODBhYTdjMzZiYTZjLi5hN2UwY2IxNTk4MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCkBAIC05NCw5ICs5NCw5IEBAIHBy
aXZhdGU6CiAKICAgICB1c2luZyBVQ29sbGF0b3JEZWxldGVyID0gSUNVRGVsZXRlcjx1Y29sX2Ns
b3NlPjsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdXNhZ2VTdHJpbmcoVXNhZ2UpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgc2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgY2FzZUZpcnN0U3RyaW5nKENhc2VGaXJzdCk7CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdXNhZ2VTdHJpbmcoVXNhZ2UpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5KTsK
KyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBjYXNlRmlyc3RTdHJpbmcoQ2FzZUZp
cnN0KTsKIAogICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRDb21wYXJl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVQ29sbGF0b3IsIFVDb2xsYXRvckRlbGV0ZXI+IG1fY29s
bGF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAppbmRleCBjMmQ0OWRhOThhNjYuLmU2MWZlOGViNzE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
CkBAIC0xMDA2LDcgKzEwMDYsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6
ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgdWNhbF9z
ZXRHcmVnb3JpYW5DaGFuZ2UoY2FsLCBtaW5FQ01BU2NyaXB0VGltZSwgJnN0YXR1cyk7CiB9CiAK
LUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhvdXJDeWNsZVN0cmluZyhIb3VyQ3lj
bGUgaG91ckN5Y2xlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmhvdXJDeWNsZVN0cmluZyhIb3VyQ3ljbGUgaG91ckN5Y2xlKQogewogICAgIHN3aXRjaCAoaG91
ckN5Y2xlKSB7CiAgICAgY2FzZSBIb3VyQ3ljbGU6OkgxMToKQEAgLTEwMTksMTMgKzEwMTksMTMg
QEAgQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6aG91ckN5Y2xlU3RyaW5nKEhvdXJD
eWNsZSBob3VyQ3ljbGUpCiAgICAgICAgIHJldHVybiAiaDI0Il9zOwogICAgIGNhc2UgSG91ckN5
Y2xlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExl
bmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6d2Vla2Rh
eVN0cmluZyhXZWVrZGF5IHdlZWtkYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRl
VGltZUZvcm1hdDo6d2Vla2RheVN0cmluZyhXZWVrZGF5IHdlZWtkYXkpCiB7CiAgICAgc3dpdGNo
ICh3ZWVrZGF5KSB7CiAgICAgY2FzZSBXZWVrZGF5OjpOYXJyb3c6CkBAIC0xMDM2LDEzICsxMDM2
LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OndlZWtkYXlTdHJpbmcoV2Vl
a2RheSB3ZWVrZGF5KQogICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2FzZSBXZWVrZGF5
OjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0
aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6
Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6ZXJhU3RyaW5n
KEVyYSBlcmEpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6ZXJh
U3RyaW5nKEVyYSBlcmEpCiB7CiAgICAgc3dpdGNoIChlcmEpIHsKICAgICBjYXNlIEVyYTo6TmFy
cm93OgpAQCAtMTA1MywxMyArMTA1MywxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9y
bWF0OjplcmFTdHJpbmcoRXJhIGVyYSkKICAgICAgICAgcmV0dXJuICJsb25nIl9zOwogICAgIGNh
c2UgRXJhOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0
aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6eWVh
clN0cmluZyhZZWFyIHllYXIpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZv
cm1hdDo6eWVhclN0cmluZyhZZWFyIHllYXIpCiB7CiAgICAgc3dpdGNoICh5ZWFyKSB7CiAgICAg
Y2FzZSBZZWFyOjpUd29EaWdpdDoKQEAgLTEwNjgsMTMgKzEwNjgsMTMgQEAgQVNDSUlMaXRlcmFs
IEludGxEYXRlVGltZUZvcm1hdDo6eWVhclN0cmluZyhZZWFyIHllYXIpCiAgICAgICAgIHJldHVy
biAibnVtZXJpYyJfczsKICAgICBjYXNlIFllYXI6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwg
SW50bERhdGVUaW1lRm9ybWF0Ojptb250aFN0cmluZyhNb250aCBtb250aCkKK0FTQ0lJTGl0ZXJh
bFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojptb250aFN0cmluZyhNb250aCBtb250aCkK
IHsKICAgICBzd2l0Y2ggKG1vbnRoKSB7CiAgICAgY2FzZSBNb250aDo6VHdvRGlnaXQ6CkBAIC0x
MDg5LDEzICsxMDg5LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1vbnRo
U3RyaW5nKE1vbnRoIG1vbnRoKQogICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2FzZSBN
b250aDo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRheVN0
cmluZyhEYXkgZGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmRheVN0cmluZyhEYXkgZGF5KQogewogICAgIHN3aXRjaCAoZGF5KSB7CiAgICAgY2FzZSBEYXk6
OlR3b0RpZ2l0OgpAQCAtMTEwNCwxMyArMTEwNCwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0OjpkYXlTdHJpbmcoRGF5IGRheSkKICAgICAgICAgcmV0dXJuICJudW1lcmljIl9z
OwogICAgIGNhc2UgRGF5OjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZv
cm1hdDo6ZGF5UGVyaW9kU3RyaW5nKERheVBlcmlvZCBkYXlQZXJpb2QpCitBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6ZGF5UGVyaW9kU3RyaW5nKERheVBlcmlvZCBk
YXlQZXJpb2QpCiB7CiAgICAgc3dpdGNoIChkYXlQZXJpb2QpIHsKICAgICBjYXNlIERheVBlcmlv
ZDo6TmFycm93OgpAQCAtMTEyMSwxMyArMTEyMSwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0OjpkYXlQZXJpb2RTdHJpbmcoRGF5UGVyaW9kIGRheVBlcmlvZCkKICAgICAgICAg
cmV0dXJuICJsb25nIl9zOwogICAgIGNhc2UgRGF5UGVyaW9kOjpOb25lOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlM
aXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6aG91clN0cmluZyhIb3VyIGhvdXIpCitBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6aG91clN0cmluZyhIb3VyIGhvdXIp
CiB7CiAgICAgc3dpdGNoIChob3VyKSB7CiAgICAgY2FzZSBIb3VyOjpUd29EaWdpdDoKQEAgLTEx
MzYsMTMgKzExMzYsMTMgQEAgQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6aG91clN0
cmluZyhIb3VyIGhvdXIpCiAgICAgICAgIHJldHVybiAibnVtZXJpYyJfczsKICAgICBjYXNlIEhv
dXI6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0
aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0OjptaW51dGVT
dHJpbmcoTWludXRlIG1pbnV0ZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1l
Rm9ybWF0OjptaW51dGVTdHJpbmcoTWludXRlIG1pbnV0ZSkKIHsKICAgICBzd2l0Y2ggKG1pbnV0
ZSkgewogICAgIGNhc2UgTWludXRlOjpUd29EaWdpdDoKQEAgLTExNTEsMTMgKzExNTEsMTMgQEAg
QVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6bWludXRlU3RyaW5nKE1pbnV0ZSBtaW51
dGUpCiAgICAgICAgIHJldHVybiAibnVtZXJpYyJfczsKICAgICBjYXNlIE1pbnV0ZTo6Tm9uZToK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwo
KTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7
CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNlY29uZFN0cmluZyhTZWNv
bmQgc2Vjb25kKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNl
Y29uZFN0cmluZyhTZWNvbmQgc2Vjb25kKQogewogICAgIHN3aXRjaCAoc2Vjb25kKSB7CiAgICAg
Y2FzZSBTZWNvbmQ6OlR3b0RpZ2l0OgpAQCAtMTE2NiwxMyArMTE2NiwxMyBAQCBBU0NJSUxpdGVy
YWwgSW50bERhdGVUaW1lRm9ybWF0OjpzZWNvbmRTdHJpbmcoU2Vjb25kIHNlY29uZCkKICAgICAg
ICAgcmV0dXJuICJudW1lcmljIl9zOwogICAgIGNhc2UgU2Vjb25kOjpOb25lOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgp
OworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxs
KCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVND
SUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6dGltZVpvbmVOYW1lU3RyaW5nKFRpbWVab25l
TmFtZSB0aW1lWm9uZU5hbWUpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZv
cm1hdDo6dGltZVpvbmVOYW1lU3RyaW5nKFRpbWVab25lTmFtZSB0aW1lWm9uZU5hbWUpCiB7CiAg
ICAgc3dpdGNoICh0aW1lWm9uZU5hbWUpIHsKICAgICBjYXNlIFRpbWVab25lTmFtZTo6U2hvcnQ6
CkBAIC0xMTg5LDEzICsxMTg5LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OnRpbWVab25lTmFtZVN0cmluZyhUaW1lWm9uZU5hbWUgdGltZVpvbmVOYW1lKQogICAgICAgICBy
ZXR1cm4gImxvbmdHZW5lcmljIl9zOwogICAgIGNhc2UgVGltZVpvbmVOYW1lOjpOb25lOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6
bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0K
IAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0U3R5bGVTdHJpbmcoRGF0
ZVRpbWVTdHlsZSBzdHlsZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9y
bWF0Ojpmb3JtYXRTdHlsZVN0cmluZyhEYXRlVGltZVN0eWxlIHN0eWxlKQogewogICAgIHN3aXRj
aCAoc3R5bGUpIHsKICAgICBjYXNlIERhdGVUaW1lU3R5bGU6OkZ1bGw6CkBAIC0xMjA4LDEwICsx
MjA4LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFN0eWxlU3Ry
aW5nKERhdGVUaW1lU3R5bGUgc3R5bGUpCiAgICAgICAgIHJldHVybiAic2hvcnQiX3M7CiAgICAg
Y2FzZSBEYXRlVGltZVN0eWxlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1pbnRsLmRhdGV0aW1lZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKQEAg
LTEyOTMsNyArMTI5Myw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjCiAgICAgcmV0dXJuIGpz
U3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0KSk7CiB9CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwgcGFy
dFR5cGVTdHJpbmcoVURhdGVGb3JtYXRGaWVsZCBmaWVsZCkKK3N0YXRpYyBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIHBhcnRUeXBlU3RyaW5nKFVEYXRlRm9ybWF0RmllbGQgZmllbGQpCiB7CiAgICAg
c3dpdGNoIChmaWVsZCkgewogICAgIGNhc2UgVURBVF9FUkFfRklFTEQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IDhiZjY3
N2Y0YTg3OS4uMjExZmY1YzA4MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMTA5LDE4ICsxMDksMTggQEAgcHJpdmF0
ZToKICAgICBlbnVtIGNsYXNzIERhdGVUaW1lU3R5bGUgOiB1aW50OF90IHsgTm9uZSwgRnVsbCwg
TG9uZywgTWVkaXVtLCBTaG9ydCB9OwogCiAgICAgdm9pZCBzZXRGb3JtYXRzRnJvbVBhdHRlcm4o
U3RyaW5nVmlldyk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBob3VyQ3ljbGVTdHJpbmcoSG91
ckN5Y2xlKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7
Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBlcmFTdHJpbmcoRXJhKTsKLSAgICBzdGF0aWMgQVND
SUlMaXRlcmFsIHllYXJTdHJpbmcoWWVhcik7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBtb250
aFN0cmluZyhNb250aCk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBkYXlTdHJpbmcoRGF5KTsK
LSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGRheVBlcmlvZFN0cmluZyhEYXlQZXJpb2QpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgaG91clN0cmluZyhIb3VyKTsKLSAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIG1pbnV0ZVN0cmluZyhNaW51dGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2Vj
b25kU3RyaW5nKFNlY29uZCk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0aW1lWm9uZU5hbWVT
dHJpbmcoVGltZVpvbmVOYW1lKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGZvcm1hdFN0eWxl
U3RyaW5nKERhdGVUaW1lU3R5bGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IGhvdXJDeWNsZVN0cmluZyhIb3VyQ3ljbGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggZXJhU3RyaW5nKEVyYSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGggeWVhclN0cmluZyhZZWFyKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBt
b250aFN0cmluZyhNb250aCk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZGF5
U3RyaW5nKERheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZGF5UGVyaW9k
U3RyaW5nKERheVBlcmlvZCk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggaG91
clN0cmluZyhIb3VyKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBtaW51dGVT
dHJpbmcoTWludXRlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzZWNvbmRT
dHJpbmcoU2Vjb25kKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0aW1lWm9u
ZU5hbWVTdHJpbmcoVGltZVpvbmVOYW1lKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExl
bmd0aCBmb3JtYXRTdHlsZVN0cmluZyhEYXRlVGltZVN0eWxlKTsKIAogICAgIHN0YXRpYyBIb3Vy
Q3ljbGUgaG91ckN5Y2xlRnJvbVN5bWJvbChVQ2hhcik7CiAgICAgc3RhdGljIEhvdXJDeWNsZSBw
YXJzZUhvdXJDeWNsZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKaW5kZXggZmJlODZlNGI3ZWFhLi45OTU2
NGJkYmU3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXMuY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAgSlNPYmplY3QqIEludGxEaXNwbGF5
TmFtZXM6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogICAgIHJldHVybiBvcHRpb25zOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1l
czo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxE
aXNwbGF5TmFtZXM6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogewogICAgIHN3aXRjaCAoc3R5
bGUpIHsKICAgICBjYXNlIFN0eWxlOjpOYXJyb3c6CkBAIC0zNzcsMTAgKzM3NywxMCBAQCBBU0NJ
SUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCiAgICAg
ICAgIHJldHVybiAibG9uZyJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjp0
eXBlU3RyaW5nKFR5cGUgdHlwZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERpc3BsYXlO
YW1lczo6dHlwZVN0cmluZyhUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBUeXBlOjpMYW5ndWFnZToKQEAgLTM5NywxMCArMzk3LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJ
bnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuICJk
YXRlVGltZUZpZWxkIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OmZhbGxi
YWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNrKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRs
RGlzcGxheU5hbWVzOjpmYWxsYmFja1N0cmluZyhGYWxsYmFjayBmYWxsYmFjaykKIHsKICAgICBz
d2l0Y2ggKGZhbGxiYWNrKSB7CiAgICAgY2FzZSBGYWxsYmFjazo6Q29kZToKQEAgLTQwOSwxMCAr
NDA5LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpmYWxsYmFja1N0cmluZyhG
YWxsYmFjayBmYWxsYmFjaykKICAgICAgICAgcmV0dXJuICJub25lIl9zOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cisg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRl
cmFsIEludGxEaXNwbGF5TmFtZXM6Omxhbmd1YWdlRGlzcGxheVN0cmluZyhMYW5ndWFnZURpc3Bs
YXkgbGFuZ3VhZ2VEaXNwbGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGlzcGxheU5h
bWVzOjpsYW5ndWFnZURpc3BsYXlTdHJpbmcoTGFuZ3VhZ2VEaXNwbGF5IGxhbmd1YWdlRGlzcGxh
eSkKIHsKICAgICBzd2l0Y2ggKGxhbmd1YWdlRGlzcGxheSkgewogICAgIGNhc2UgTGFuZ3VhZ2VE
aXNwbGF5OjpEaWFsZWN0OgpAQCAtNDIxLDcgKzQyMSw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGlz
cGxheU5hbWVzOjpsYW5ndWFnZURpc3BsYXlTdHJpbmcoTGFuZ3VhZ2VEaXNwbGF5IGxhbmd1YWdl
RGlzCiAgICAgICAgIHJldHVybiAic3RhbmRhcmQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaApp
bmRleCBkODBkYzNkODNhMTUuLmZiMmI2ODc3NGQxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaApAQCAtNjksMTAgKzY5LDEwIEBAIHBy
aXZhdGU6CiAgICAgZW51bSBjbGFzcyBGYWxsYmFjayA6IHVpbnQ4X3QgeyBDb2RlLCBOb25lIH07
CiAgICAgZW51bSBjbGFzcyBMYW5ndWFnZURpc3BsYXkgOiB1aW50OF90IHsgRGlhbGVjdCwgU3Rh
bmRhcmQgfTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOwot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdHlwZVN0cmluZyhUeXBlKTsKLSAgICBzdGF0aWMgQVND
SUlMaXRlcmFsIGZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRl
cmFsIGxhbmd1YWdlRGlzcGxheVN0cmluZyhMYW5ndWFnZURpc3BsYXkpOworICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVND
SUlMaXRlcmFsV2l0aExlbmd0aCB0eXBlU3RyaW5nKFR5cGUpOworICAgIHN0YXRpYyBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIGZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrKTsKKyAgICBzdGF0aWMgQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBsYW5ndWFnZURpc3BsYXlTdHJpbmcoTGFuZ3VhZ2VEaXNwbGF5
KTsKIAogICAgIHVzaW5nIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyID0gSUNVRGVsZXRlcjx1
bGRuX2Nsb3NlPjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VUxvY2FsZURpc3BsYXlOYW1lcywgVUxv
Y2FsZURpc3BsYXlOYW1lc0RlbGV0ZXI+IG1fZGlzcGxheU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwCmluZGV4IGY1YzMwNTcwOThj
OS4uNDZkNzBmMzlkYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bExpc3RGb3JtYXQuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgSlNPYmplY3QqIEludGxMaXN0
Rm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxMaXN0Rm9ybWF0
OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bExp
c3RGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogewogICAgIHN3aXRjaCAoc3R5bGUp
IHsKICAgICBjYXNlIFN0eWxlOjpMb25nOgpAQCAtMzUzLDEwICszNTMsMTAgQEAgQVNDSUlMaXRl
cmFsIEludGxMaXN0Rm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0
dXJuICJuYXJyb3ciX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExl
bmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bExpc3RGb3JtYXQ6OnR5cGVTdHJp
bmcoVHlwZSB0eXBlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTGlzdEZvcm1hdDo6dHlw
ZVN0cmluZyhUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBUeXBl
OjpDb25qdW5jdGlvbjoKQEAgLTM2Nyw3ICszNjcsNyBAQCBBU0NJSUxpdGVyYWwgSW50bExpc3RG
b3JtYXQ6OnR5cGVTdHJpbmcoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gInVuaXQiX3M7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6
Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMaXN0Rm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTGlzdEZvcm1hdC5oCmluZGV4IDhiMjc0MDJmOWQ0MC4uMjQ3YTU0YzA4ZDgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmgKQEAgLTc5LDgg
Kzc5LDggQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgQ29uanVu
Y3Rpb24sIERpc2p1bmN0aW9uLCBVbml0IH07CiAgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4
X3QgeyBTaG9ydCwgTG9uZywgTmFycm93IH07CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHR5
cGVTdHJpbmcoVHlwZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHls
ZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdHlwZVN0cmluZyhUeXBlKTsK
KyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHlsZVN0cmluZyhTdHlsZSk7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VUxpc3RGb3JtYXR0ZXIsIFVMaXN0Rm9ybWF0dGVyRGVsZXRl
cj4gbV9saXN0Rm9ybWF0OwogICAgIFN0cmluZyBtX2xvY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggOTUzYzM5ZmU2
NGE5Li5hMDZlM2I5ZGQ1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0SWRlbnRpZmllcihTdHJpbmdW
aWV3IHVuaXRJZGUKICAgICByZXR1cm4gV2VsbEZvcm1lZFVuaXQobnVtZXJhdG9yVW5pdC52YWx1
ZSgpLCBkZW5vbWluYXRvclVuaXQudmFsdWUoKSk7CiB9CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwg
cGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgSW50bE51bWJlckZvcm1h
dDo6U3R5bGUgc3R5bGUsIGJvb2wgc2lnbiwgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBwYXJ0VHlwZVN0cmluZyhV
TnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwg
Ym9vbCBzaWduLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGUgdHlwZSkKIHsKICAg
ICBzd2l0Y2ggKGZpZWxkKSB7CiAgICAgY2FzZSBVTlVNX0lOVEVHRVJfRklFTEQ6CkBAIC0xMjQ1
LDcgKzEyNDUsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTQogfQogI2VuZGlmCiAKLUFTQ0lJ
TGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5
bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBA
IC0xMjU4LDEwICsxMjU4LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzdHls
ZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJ1bml0Il9zOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlM
aXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURp
c3BsYXkgY3VycmVuY3lEaXNwbGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVy
Rm9ybWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlz
cGxheSkKIHsKICAgICBzd2l0Y2ggKGN1cnJlbmN5RGlzcGxheSkgewogICAgIGNhc2UgQ3VycmVu
Y3lEaXNwbGF5OjpDb2RlOgpAQCAtMTI3NCwxMCArMTI3NCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50
bE51bWJlckZvcm1hdDo6Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJy
ZW5jeURpcwogICAgICAgICByZXR1cm4gIm5hbWUiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51
bWJlckZvcm1hdDo6bm90YXRpb25TdHJpbmcoSW50bE5vdGF0aW9uIG5vdGF0aW9uKQorQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0cmluZyhJbnRsTm90
YXRpb24gbm90YXRpb24pCiB7CiAgICAgc3dpdGNoIChub3RhdGlvbikgewogICAgIGNhc2UgSW50
bE5vdGF0aW9uOjpTdGFuZGFyZDoKQEAgLTEyOTAsMTAgKzEyOTAsMTAgQEAgQVNDSUlMaXRlcmFs
IEludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlvbiBub3RhdGlvbikK
ICAgICAgICAgcmV0dXJuICJjb21wYWN0Il9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxOdW1iZXJG
b3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24gY3VycmVuY3lTaWduKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeVNpZ25TdHJpbmco
Q3VycmVuY3lTaWduIGN1cnJlbmN5U2lnbikKIHsKICAgICBzd2l0Y2ggKGN1cnJlbmN5U2lnbikg
ewogICAgIGNhc2UgQ3VycmVuY3lTaWduOjpTdGFuZGFyZDoKQEAgLTEzMDIsMTAgKzEzMDIsMTAg
QEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJy
ZW5jeVNpZ24gY3VycmVuY3lTaWduKQogICAgICAgICByZXR1cm4gImFjY291bnRpbmciX3M7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6
Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQog
Ci1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcoVW5pdERp
c3BsYXkgdW5pdERpc3BsYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3Jt
YXQ6OnVuaXREaXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5IHVuaXREaXNwbGF5KQogewogICAgIHN3
aXRjaCAodW5pdERpc3BsYXkpIHsKICAgICBjYXNlIFVuaXREaXNwbGF5OjpTaG9ydDoKQEAgLTEz
MTYsMTAgKzEzMTYsMTAgQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnVuaXREaXNw
bGF5U3RyaW5nKFVuaXREaXNwbGF5IHVuaXREaXNwbGF5KQogICAgICAgICByZXR1cm4gImxvbmci
X3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgp
OwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y29tcGFjdERpc3BsYXlTdHJp
bmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IEludGxOdW1iZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5IGNv
bXBhY3REaXNwbGF5KQogewogICAgIHN3aXRjaCAoY29tcGFjdERpc3BsYXkpIHsKICAgICBjYXNl
IENvbXBhY3REaXNwbGF5OjpTaG9ydDoKQEAgLTEzMjgsMTAgKzEzMjgsMTAgQEAgQVNDSUlMaXRl
cmFsIEludGxOdW1iZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5
IGNvbXBhY3REaXNwbGEKICAgICAgICAgcmV0dXJuICJsb25nIl9zOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFs
IEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5IHNpZ25EaXNw
bGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxh
eVN0cmluZyhTaWduRGlzcGxheSBzaWduRGlzcGxheSkKIHsKICAgICBzd2l0Y2ggKHNpZ25EaXNw
bGF5KSB7CiAgICAgY2FzZSBTaWduRGlzcGxheTo6QXV0bzoKQEAgLTEzNDYsMTAgKzEzNDYsMTAg
QEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25E
aXNwbGF5IHNpZ25EaXNwbGF5KQogICAgICAgICByZXR1cm4gIm5lZ2F0aXZlIl9zOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxs
KCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVND
SUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nTW9kZVN0cmluZyhSb3VuZGluZ01v
ZGUgcm91bmRpbmdNb2RlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0
Ojpyb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKIHsKICAgICBz
d2l0Y2ggKHJvdW5kaW5nTW9kZSkgewogICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgpAQCAt
MTM3MiwxMCArMTM3MiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6cm91bmRp
bmdNb2RlU3RyaW5nKFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCiAgICAgICAgIHJldHVybiAi
aGFsZkV2ZW4iX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0
aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmda
ZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5IHRyYWlsaW5nWmVyb0Rpc3BsYXkp
CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVyb0Rp
c3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFpbGluZ1plcm9EaXNwbGF5KQogewog
ICAgIHN3aXRjaCAodHJhaWxpbmdaZXJvRGlzcGxheSkgewogICAgIGNhc2UgVHJhaWxpbmdaZXJv
RGlzcGxheTo6QXV0bzoKQEAgLTEzODQsMTAgKzEzODQsMTAgQEAgQVNDSUlMaXRlcmFsIEludGxO
dW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxh
eSB0cmEKICAgICAgICAgcmV0dXJuICJzdHJpcElmSW50ZWdlciJfczsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJh
bCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5
cGUgcm91bmRpbmdUeXBlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0
Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUgcm91bmRpbmdUeXBlKQog
ewogICAgIHN3aXRjaCAocm91bmRpbmdUeXBlKSB7CiAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czoKQEAgLTEzOTksNyArMTM5OSw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRs
TnVtYmVyRm9ybWF0Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUgcm91
bmRpbmdUCiAgICAgICAgIHJldHVybiAibGVzc1ByZWNpc2lvbiJfczsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6dXNlR3JvdXBpbmdWYWx1ZShWTSYgdm0sIFVzZUdyb3VwaW5nIHVzZUdy
b3VwaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5oCmluZGV4IDY5OTE0ZWFmMzMzNi4uNTg2Y2E5YmEzNzA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC0yMDYsMTEgKzIw
NiwxMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+CiAgICAgZnJp
ZW5kIHZvaWQgYXBwZW5kTnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zVG9Ta2VsZXRvbihJbnRsVHlw
ZSosIFN0cmluZ0J1aWxkZXImKTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25T
dHJpbmcoSW50bE5vdGF0aW9uKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBu
b3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24pOwogCiAgICAgc3RhdGljIEludGxOdW1iZXJGb3Jt
YXQqIHVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCi0g
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGlu
Z1R5cGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHJvdW5kaW5nUHJpb3Jp
dHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSk7CiAKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZv
cm1hdChWTSYsIFN0cnVjdHVyZSopOwpAQCAtMjI3LDE0ICsyMjcsMTQgQEAgcHJpdmF0ZToKICAg
ICBlbnVtIGNsYXNzIFRyYWlsaW5nWmVyb0Rpc3BsYXkgOiB1aW50OF90IHsgQXV0bywgU3RyaXBJ
ZkludGVnZXIgfTsKICAgICBlbnVtIGNsYXNzIFVzZUdyb3VwaW5nIDogdWludDhfdCB7IEZhbHNl
LCBNaW4yLCBBdXRvLCBBbHdheXMgfTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVT
dHJpbmcoU3R5bGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3Ry
aW5nKEN1cnJlbmN5RGlzcGxheSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5jeVNp
Z25TdHJpbmcoQ3VycmVuY3lTaWduKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXREaXNw
bGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBhY3RE
aXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNp
Z25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJv
dW5kaW5nTW9kZVN0cmluZyhSb3VuZGluZ01vZGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwg
dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5KTsKKyAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHlsZVN0cmluZyhTdHlsZSk7CisgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlz
cGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggY3VycmVuY3lTaWduU3Ry
aW5nKEN1cnJlbmN5U2lnbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdW5p
dERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIGNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKKyAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7Cisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggcm91bmRpbmdNb2RlU3RyaW5nKFJvdW5k
aW5nTW9kZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdHJhaWxpbmdaZXJv
RGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5KTsKICAgICBzdGF0aWMgSlNWYWx1ZSB1
c2VHcm91cGluZ1ZhbHVlKFZNJiwgVXNlR3JvdXBpbmcpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpT
Qm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCmluZGV4IDQxYzJiZmRmNmVlNS4uMzZjYjM5
MjhlNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBJbnN0YW5jZVR5cGUqIHVud3JhcEZvckxl
Z2FjeUludGxDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlPgotUmVzdWx0VHlwZSBpbnRsT3B0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHksIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8QVNDSUlMaXRl
cmFsLCBSZXN1bHRUeXBlPj4gdmFsdWVzLCBBU0NJSUxpdGVyYWwgbm90Rm91bmRNZXNzYWdlLCBS
ZXN1bHRUeXBlIGZhbGxiYWNrKQorUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHks
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8QVNDSUlMaXRlcmFsLCBSZXN1bHRUeXBl
Pj4gdmFsdWVzLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG5vdEZvdW5kTWVzc2FnZSwgUmVzdWx0
VHlwZSBmYWxsYmFjaykKIHsKICAgICAvLyBHZXRPcHRpb24gKG9wdGlvbnMsIHByb3BlcnR5LCB0
eXBlPSJzdHJpbmciLCB2YWx1ZXMsIGZhbGxiYWNrKQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTQwMi8jc2VjLWdldG9wdGlvbgpAQCAtMTUyLDcgKzE1Miw3IEBAIFJlc3VsdFR5
cGUgaW50bE9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0
aW9ucywgUHJvcGVydHlOCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGU+Ci1SZXN1
bHRUeXBlIGludGxTdHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVzdWx0VHlw
ZSB0cnVlVmFsdWUsIFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0
PHN0ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJh
bCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCitSZXN1bHRUeXBlIGludGxT
dHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVzdWx0VHlwZSB0cnVlVmFsdWUs
IFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxB
U0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgg
bm90Rm91bmRNZXNzYWdlLCBSZXN1bHRUeXBlIGZhbGxiYWNrKQogewogICAgIC8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvbmVnb3RpYXRpb24vZGlm
Zi5odG1sI3NlYy1nZXRzdHJpbmdvcmJvb2xlYW5vcHRpb24KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRl
eCBlMzI4YTFjMWY0MGMuLmViOTg1NTE0ODM5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKQEAgLTE3NCw3
ICsxNzQsNyBAQCB2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVSZWxhdGl2
ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIH0KIH0KIAotQVNDSUlMaXRl
cmFsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpzdHlsZVN0cmluZyhT
dHlsZSBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAgICAgY2FzZSBTdHlsZTo6TG9u
ZzoKQEAgLTE4NSw3ICsxODUsNyBAQCBBU0NJSUxpdGVyYWwgSW50bFJlbGF0aXZlVGltZUZvcm1h
dDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCiAgICAgICAgIHJldHVybiAibmFycm93Il9zOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0K
IAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLnJlbGF0aXZldGltZWZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKaW5kZXggOWVkMDYxNTgwM2Y2
Li5hMDI4ZDM0NWRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToK
ICAgICB1c2luZyBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVy
PHVyZWxkYXRlZm10X2Nsb3NlPjsKICAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElD
VURlbGV0ZXI8dW51bV9jbG9zZT47CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3Ry
aW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHlsZVN0cmlu
ZyhTdHlsZSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXIsIFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlcj4gbV9yZWxhdGl2ZURhdGVUaW1l
Rm9ybWF0dGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9y
bWF0RGVsZXRlcj4gbV9udW1iZXJGb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCmluZGV4IDhkODVmZTdjOWNjMi4uN2MxZWNhMmExNGY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmNw
cApAQCAtMTUwLDcgKzE1MCw3IEBAIEpTT2JqZWN0KiBJbnRsU2VnbWVudGVyOjpyZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICByZXR1cm4gb3B0
aW9uczsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxTZWdtZW50ZXI6OmdyYW51bGFyaXR5U3RyaW5n
KEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsU2Vn
bWVudGVyOjpncmFudWxhcml0eVN0cmluZyhHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBHcmFudWxhcml0eTo6R3JhcGhlbWU6
CkBAIC0xNjEsNyArMTYxLDcgQEAgQVNDSUlMaXRlcmFsIEludGxTZWdtZW50ZXI6OmdyYW51bGFy
aXR5U3RyaW5nKEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogICAgICAgICByZXR1cm4gInNlbnRl
bmNlIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVND
SUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51
bGwoKTsKIH0KIAogSlNPYmplY3QqIEludGxTZWdtZW50ZXI6OmNyZWF0ZVNlZ21lbnREYXRhT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcsIGludDMy
X3Qgc3RhcnRJbmRleCwgaW50MzJfdCBlbmRJbmRleCwgVUJyZWFrSXRlcmF0b3ImIHNlZ21lbnRl
ciwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudGVyLmgKaW5kZXggZTczMTFhZjgxYmEyLi4wY2JhYTM2MzZkMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmgKQEAgLTY4
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBJbnRsU2VnbWVudGVyKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCi0gICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bCBncmFudWxhcml0eVN0cmluZyhHcmFudWxhcml0eSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bFdpdGhMZW5ndGggZ3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVu
dGVyOwogICAgIFN0cmluZyBtX2xvY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAKaW5kZXggMzE3OTg1ZmZlZDZhLi5hN2EyYjI5MDIzMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgYm9v
bCBKU0FycmF5OjphcHBlbmRNZW1jcHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCB1bnNpZ25lZCBzdGFydEkKICAgICBjaGVja2VkTmV3TGVuZ3RoICs9IG90aGVyTGVuZ3Ro
OwogCiAgICAgaWYgKGNoZWNrZWROZXdMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7Ci0gICAgICAg
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKSk7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxl
bmd0aEVycm9yIH0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB1bnNpZ25l
ZCBuZXdMZW5ndGggPSBjaGVja2VkTmV3TGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlJbmxpbmVzLmgKaW5kZXggZWRlNGRmMDI5MDM4Li4wZjE4YWUxZjE4
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMu
aApAQCAtMTQ1LDcgKzE0NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXNoSW5s
aW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAgICAgICAgIGlm
IChVTkxJS0VMWShsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgICAgICBtZXRo
b2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBsZW5ndGgsIHZhbHVl
LCB0cnVlKTsKICAgICAgICAgICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3Ip
KTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgTGVuZ3RoRXhjZWVkZWRUaGVN
YXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXNo
SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAgICAgICAg
IGlmIChVTkxJS0VMWShsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgICAgICBt
ZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBsZW5ndGgsIHZh
bHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJy
b3IpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgTGVuZ3RoRXhjZWVkZWRU
aGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMjAyLDcgKzIwMiw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5Ojpw
dXNoSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAgICAg
ICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgICAg
ICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBsZW5ndGgs
IHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3Ro
RXJyb3IpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgTGVuZ3RoRXhjZWVk
ZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5
OjpwdXNoSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAg
ICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0
LCBzdG9yYWdlLT5sZW5ndGgoKSwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgLy8gUGVyIEVT
NS4xIDE1LjQuNC43IHN0ZXAgNiAmIDE1LjQuNS4xIHN0ZXAgMy5kLgogICAgICAgICAgICAgaWYg
KCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVuZ3RoRXhj
ZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZmE2MjNlMDkwNzRjLi5k
OWQyYWYzYTYyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTY5MSw3ICs2OTEsNyBAQCBzdGF0aWMgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogdGVtcGxhdGU8RXJyb3JUeXBlIGVycm9yVHlwZT4KIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXRpYWxpemVFcnJvckNvbnN0cnVjdG9yKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXIm
IGluaXQpCiB7Ci0gICAgaW5pdC5zZXRQcm90b3R5cGUoTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNy
ZWF0ZShpbml0LnZtLCBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpKSwgZXJyb3JUeXBlTmFt
ZShlcnJvclR5cGUpKSk7CisgICAgaW5pdC5zZXRQcm90b3R5cGUoTmF0aXZlRXJyb3JQcm90b3R5
cGU6OmNyZWF0ZShpbml0LnZtLCBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGluaXQudm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpKSwgU3RyaW5n
IHsgZXJyb3JUeXBlTmFtZShlcnJvclR5cGUpIH0pKTsKICAgICBpbml0LnNldFN0cnVjdHVyZShF
cnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgaW5pdC5wcm90b3R5
cGUpKTsKICAgICBpbml0LnNldENvbnN0cnVjdG9yKE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJy
b3JUeXBlPjo6Y3JlYXRlKGluaXQudm0sIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBl
Pjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUuY29uc3Ry
dWN0b3IodGhpcykpLCBqc0Nhc3Q8TmF0aXZlRXJyb3JQcm90b3R5cGUqPihpbml0LnByb3RvdHlw
ZSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGQz
M2I3MjI4NjRhOC4uMjZiZGYxMmU5Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTc1LDYgKzc1LDggQEAgc3RydWN0IEhhc2hUYWJsZTsKIHN0cnVjdCBI
YXNoVGFibGVWYWx1ZTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcmKTsKK0pTX0VY
UE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBU
aHJvd1Njb3BlJiwgQVNDSUlMaXRlcmFsKTsKK0pTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiog
dGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwgQVNDSUlMaXRlcmFs
V2l0aExlbmd0aCk7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFs
IE5vbkV4dGVuc2libGVPYmplY3RQcm9wZXJ0eURlZmluZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9S
VF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcjsK
IGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgUmVhZG9ubHlQcm9w
ZXJ0eUNoYW5nZUVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCAyMTNkOWZiN2E2OGEuLjNiNTE4
MDliY2U3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yPGVycm9yVHlwZT46Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cgogCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3JCYXNlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUsIEVycm9yVHlw
ZSBlcnJvclR5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsIGVycm9yVHlw
ZU5hbWUoZXJyb3JUeXBlKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgU3RyaW5nIHsgZXJy
b3JUeXBlTmFtZShlcnJvclR5cGUpIH0sIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3Ry
dWN0dXJlVHJhbnNpdGlvbik7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKICAg
ICAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rp
b24uY3BwCmluZGV4IGYyMTliOTMyNmJiZC4uOGJhMTEyMjIxNGZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTk0
LDcgKzk0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUaHJvd0Vycm9yLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW0KICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxl
ZCBmcm9tIElDLiBBbmQgd2UgZG8gbm90IHdhbnQgdG8gaW5jbHVkZSB0aGlzIGZyYW1lIGluIEVy
cm9yJ3Mgc3RhY2suCiAgICAgY29uc3RleHByIGJvb2wgdXNlQ3VycmVudEZyYW1lID0gZmFsc2U7
Ci0gICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgRXJyb3JJbnN0YW5jZTo6
Y3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJy
b3JUeXBlOjpUeXBlRXJyb3IpLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvciwgSlNWYWx1ZSgp
LCBudWxscHRyLCBUeXBlTm90aGluZywgRXJyb3JUeXBlOjpUeXBlRXJyb3IsIHVzZUN1cnJlbnRG
cmFtZSkpOworICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIEVycm9ySW5z
dGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0
dXJlKEVycm9yVHlwZTo6VHlwZUVycm9yKSwgU3RyaW5nIHsgUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IgfSwgSlNWYWx1ZSgpLCBudWxscHRyLCBUeXBlTm90aGluZywgRXJyb3JUeXBlOjpUeXBl
RXJyb3IsIHVzZUN1cnJlbnRGcmFtZSkpOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApp
bmRleCAzY2U3NjEyNDJjMzIuLjllOTYxNDQzMDg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtMjYsNiArMjYs
NyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIEFTQ0lJTGl0ZXJhbDsKK2NsYXNzIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGg7CiBjbGFzcyBBYnN0cmFjdExvY2tlcjsKIGNsYXNzIEF0b21TdHJp
bmc7CiBjbGFzcyBBdG9tU3RyaW5nSW1wbDsKQEAgLTEyMSw2ICsxMjIsNyBAQCB0ZW1wbGF0ZTxj
bGFzcz4gY2xhc3MgdW5leHBlY3RlZDsKIH19fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBlcmltZW50
YWw6OmZ1bmRhbWVudGFsc192MwogCiB1c2luZyBXVEY6OkFTQ0lJTGl0ZXJhbDsKK3VzaW5nIFdU
Rjo6QVNDSUlMaXRlcmFsV2l0aExlbmd0aDsKIHVzaW5nIFdURjo6QWJzdHJhY3RMb2NrZXI7CiB1
c2luZyBXVEY6OkF0b21TdHJpbmc7CiB1c2luZyBXVEY6OkF0b21TdHJpbmdJbXBsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuY3BwCmluZGV4IDY4N2MxNzlhNWMxNC4uNTVkYzMyOTkwOTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuY3BwCkBAIC0zMCw2ICszMCwxMSBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAordm9pZCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fY2hhcmFjdGVycyk7Cit9
CisKIHZvaWQgQVNDSUlMaXRlcmFsOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAg
ICAgb3V0LnByaW50KG1fY2hhcmFjdGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaApp
bmRleCA1YzIzN2YzMDllMWIuLjcwNzA5NjVmMWY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0
ZXJhbC5oCkBAIC0zMyw4ICszMyw0NiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUHJpbnRT
dHJlYW07CiAKK2NsYXNzIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZmluYWwgeworcHVibGljOgor
ICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9
CisKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZnJvbUxpdGVy
YWxVbnNhZmUoY29uc3QgY2hhciogc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggeyBzdHJpbmcsIGxlbmd0aCB9OworICAg
IH0KKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbnVs
bCgpCisgICAgeworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB7IG51bGxw
dHIsIDAgfTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9jaGFyYWN0ZXJzOyB9CisKKyAgICBjb25zdGV4cHIgY29uc3QgY2hhciogY2hhcmFj
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNvbnN0IExDaGFyKiBj
aGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KG1f
Y2hhcmFjdGVycyk7IH0KKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5n
dGg7IH0KKworICAgIGNvbnN0ZXhwciBjaGFyIGNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBj
b25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnNbaW5kZXhdOyB9CisKK3ByaXZhdGU6CisgICAgY29u
c3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6
ZV90IGxlbmd0aCkKKyAgICAgICAgOiBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykKKyAgICAgICAg
LCBtX2xlbmd0aChsZW5ndGgpCisgICAgeyB9CisKKyAgICBjb25zdCBjaGFyKiBtX2NoYXJhY3Rl
cnM7CisgICAgc2l6ZV90IG1fbGVuZ3RoOworfTsKKwogY2xhc3MgQVNDSUlMaXRlcmFsIGZpbmFs
IHsKIHB1YmxpYzoKKyAgICBjb25zdGV4cHIgQVNDSUlMaXRlcmFsKEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGggb3RoZXIpCisgICAgICAgIDogbV9jaGFyYWN0ZXJzKG90aGVyLmNoYXJhY3RlcnMoKSkK
KyAgICB7IH0KKwogICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFyYWN0ZXJzOyB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBmcm9tTGl0
ZXJhbFVuc2FmZShjb25zdCBjaGFyKiBzdHJpbmcpCkBAIC02NSwxNSArMTAzLDEzIEBAIHByaXZh
dGU6CiAKIGlubGluZSBuYW1lc3BhY2UgU3RyaW5nTGl0ZXJhbHMgewogCi1jb25zdGV4cHIgQVND
SUlMaXRlcmFsIG9wZXJhdG9yIiIgX3MoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IG4p
Citjb25zdGV4cHIgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBvcGVyYXRvciIiIF9zKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKQogICAgICAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQo
aXNBU0NJSShjaGFyYWN0ZXJzW2ldKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShuKTsKICNl
bmRpZgotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6OmZyb21MaXRlcmFsVW5zYWZlKGNoYXJhY3Rl
cnMpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpmcm9tTGl0ZXJhbFVuc2Fm
ZShjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCiB9IC8vIGlubGluZSBTdHJpbmdMaXRlcmFscwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRleCAzM2IwZTU5NThkODMuLjJiNGYzMzc3NDlhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTczLDcgKzczLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoKGNoYXJhY3RlckNvdW50IC0gMSA8PSAoKHVuc2lnbmVkKH4w
KSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoTENoYXIpKSksIEF0b21TdHJpbmdGcm9t
TGl0ZXJhbENhbm5vdE92ZXJmbG93KTsKICAgICB9CiAKLSAgICBBdG9tU3RyaW5nKEFTQ0lJTGl0
ZXJhbCBsaXRlcmFsKQorICAgIGV4cGxpY2l0IEF0b21TdHJpbmcoQVNDSUlMaXRlcmFsIGxpdGVy
YWwpCisgICAgICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFkZExpdGVyYWwobGl0ZXJh
bC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpKQorICAgIHsKKyAgICB9CisKKyAgICBB
dG9tU3RyaW5nKEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbGl0ZXJhbCkKICAgICAgICAgOiBtX3N0
cmluZyhBdG9tU3RyaW5nSW1wbDo6YWRkTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0
ZXJhbC5sZW5ndGgoKSkpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaAppbmRleCBlMmMyNTRhNzY1NjAuLmI5NDRmYmNjOTk5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaApAQCAtNzUsNiArNzUsMjMgQEAgcHJpdmF0ZToK
ICAgICBVQ2hhciBtX2NoYXJhY3RlcjsKIH07CiAKK3RlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlw
ZUFkYXB0ZXI8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgdm9pZD4geworcHVibGljOgorICAgIFN0
cmluZ1R5cGVBZGFwdGVyKEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbGl0ZXJhbCkKKyAgICAgICAg
OiBtX2NoYXJhY3RlcnMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGxpdGVyYWwuY2hh
cmFjdGVycygpKSkKKyAgICAgICAgLCBtX2xlbmd0aChsaXRlcmFsLmxlbmd0aCgpKQorICAgIHsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsg
fQorICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0
aW5hdGlvbikgY29uc3QgeyBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwg
bV9jaGFyYWN0ZXJzLCBtX2xlbmd0aCk7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBMQ2hhciog
bV9jaGFyYWN0ZXJzOworICAgIHVuc2lnbmVkIG1fbGVuZ3RoOworfTsKKwogdGVtcGxhdGU8PiBj
bGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBMQ2hhciosIHZvaWQ+IHsKIHB1YmxpYzoKICAg
ICBTdHJpbmdUeXBlQWRhcHRlcihjb25zdCBMQ2hhciogY2hhcmFjdGVycykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2UyNi4uNDYyMDEzZGU1YjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTE2MywxMSArMTYzLDYgQEAgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMp
CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGNoYXJhY3RlcnMsIHN0cmxlbihjaGFyYWN0
ZXJzKSk7CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bChBU0NJSUxpdGVyYWwgbGl0ZXJhbCkKLXsKLSAgICByZXR1cm4gY3JlYXRlRnJvbUxpdGVyYWwo
bGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpOwotfQotCiBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKaW5kZXggYzc2Y2Q1MjM2NzYxLi4yMjI5YmNlMzgxYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCkBAIC0yNTAsNyArMjUwLDggQEAgcHVibGljOgogICAgIC8vIEZJWE1F
OiBSZXBsYWNlIGNhbGxzIHRvIHRoZXNlIG92ZXJsb2FkcyBvZiBjcmVhdGVGcm9tTGl0ZXJhbCB0
byBjcmVhdGVXaXRob3V0Q29weWluZyBpbnN0ZWFkLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0lt
cGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChBU0NJSUxpdGVyYWwp
OworICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoQVNDSUlMaXRl
cmFsIGxpdGVyYWwpIHsgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGxpdGVyYWwuY2hhcmFjdGVy
cygpLCBsaXRlcmFsLmxlbmd0aCgpKTsgfQorICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlRnJvbUxpdGVyYWwoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBsaXRlcmFsKSB7IHJldHVybiBj
cmVhdGVGcm9tTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0ZXJhbC5sZW5ndGgoKSk7
IH0KIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWlu
Zyhjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdP
cGVyYXRvcnMuaAppbmRleCAyNTU0YmI0ZDNmMmMuLjIyZjEzYzgzYmM0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdPcGVyYXRvcnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oCkBAIC0xNjQsNiArMTY0LDI4IEBAIGlubGluZSBTdHJp
bmdBcHBlbmQ8QVNDSUlMaXRlcmFsLCBTdHJpbmdBcHBlbmQ8VSwgVj4+IG9wZXJhdG9yKyhjb25z
dCBBU0NJSUxpdGVyCiAgICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIFN0cmlu
Z0FwcGVuZDxVLCBWPj4oc3RyaW5nMSwgc3RyaW5nMik7CiB9CiAKK2lubGluZSBTdHJpbmdBcHBl
bmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nPiBvcGVyYXRvcisoY29uc3QgQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCYgc3RyaW5nMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcyKQoreworICAg
IHJldHVybiBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nPihzdHJp
bmcxLCBzdHJpbmcyKTsKK30KKworaW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoLCBBdG9tU3RyaW5nPiBvcGVyYXRvcisoY29uc3QgQVNDSUlMaXRlcmFsV2l0aExlbmd0
aCYgc3RyaW5nMSwgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nMikKK3sKKyAgICByZXR1cm4gU3Ry
aW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIEF0b21TdHJpbmc+KHN0cmluZzEsIHN0
cmluZzIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19zYW1lPHN0ZDo6ZGVjYXlfdDxUPiwgU3RyaW5nVmlldz46OnZhbHVlPj4K
K2lubGluZSBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nVmlldz4g
b3BlcmF0b3IrKGNvbnN0IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgmIHN0cmluZzEsIFQgc3RyaW5n
MikKK3sKKyAgICByZXR1cm4gU3RyaW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIFN0
cmluZ1ZpZXc+KHN0cmluZzEsIHN0cmluZzIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgoraW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoLCBT
dHJpbmdBcHBlbmQ8VSwgVj4+IG9wZXJhdG9yKyhjb25zdCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
JiBzdHJpbmcxLCBjb25zdCBTdHJpbmdBcHBlbmQ8VSwgVj4mIHN0cmluZzIpCit7CisgICAgcmV0
dXJuIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoLCBTdHJpbmdBcHBlbmQ8VSwg
Vj4+KHN0cmluZzEsIHN0cmluZzIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogU3RyaW5n
QXBwZW5kPFN0cmluZywgVD4gb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwgVCBzdHJp
bmcyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA0NDhhZjc2ODlmNzQuLjMxMzFm
NWFjNWJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVi
bGljOgogICAgIFN0cmluZ1ZpZXcoY29uc3QgY2hhciopOwogICAgIFN0cmluZ1ZpZXcoY29uc3Qg
Y2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgZXhwbGljaXQgU3RyaW5nVmlldyhBU0NJSUxp
dGVyYWwpOworICAgIGV4cGxpY2l0IFN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCk7
CiAKICAgICBzdGF0aWMgU3RyaW5nVmlldyBlbXB0eSgpOwogCkBAIC0zNjAsNiArMzYxLDExIEBA
IGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCBzdHJpbmcpCiAgICAg
aW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIH0KIAor
aW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHJp
bmcpCit7CisgICAgaW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0
aCgpKTsKK30KKwogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1w
bCYgc3RyaW5nKQogewogICAgIHNldFVuZGVybHlpbmdTdHJpbmcoJnN0cmluZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAppbmRleCA1MTFiOWMxNjRhMWEuLjNmY2U2ODQ1MzgyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCkBAIC05Nyw3ICs5Nyw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcoU3Rh
dGljU3RyaW5nSW1wbCopOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZyb20gYSBjb25z
dGFudCBzdHJpbmcgbGl0ZXJhbC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKEFTQ0lJ
TGl0ZXJhbCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhBU0NJSUxp
dGVyYWwpOworICAgIFN0cmluZyhBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0cmluZykgOiBtX2lt
cGwoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc3RyaW5nKSkgeyB9CiAKICAgICAvLyBD
b25zdHJ1Y3QgYSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgogICAgIC8v
IFRoaXMgaXMgdGhlICJiaWciIHZlcnNpb246IHB1dHMgdGhlIGxlbmd0aCBpbiB0aGUgZnVuY3Rp
b24gY2FsbCBhbmQgZ2VuZXJhdGVzIGJpZ2dlciBjb2RlLgpAQCAtMzYxLDkgKzM2MiwxMSBAQCBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7
IHJldHVybiBlcXVhbChhLmltcGwoKQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJp
bmcmIGEsIGNvbnN0IExDaGFyKiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYik7IH0KIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJl
dHVybiBlcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsg
fQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIEFTQ0lJTGl0ZXJhbCBi
KSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGIuY2hhcmFjdGVycygpKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5n
JiBhLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBi
LmNoYXJhY3RlcnMoKSwgYi5sZW5ndGgoKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgTENoYXIqIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYSwgYi5pbXBsKCkp
OyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoYXIqIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpLCBiLmlt
cGwoKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IFN0
cmluZyYgYikgeyByZXR1cm4gZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEu
Y2hhcmFjdGVycygpKSwgYi5pbXBsKCkpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChiLmlt
cGwoKSwgYS5jaGFyYWN0ZXJzKCksIGEubGVuZ3RoKCkpOyB9CiB0ZW1wbGF0ZTxzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPGNoYXIsIGlu
bGluZUNhcGFjaXR5PiYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChiLmltcGwo
KSwgYS5kYXRhKCksIGEuc2l6ZSgpKTsgfQogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5
PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVmVjdG9yPGNo
YXIsIGlubGluZUNhcGFjaXR5PiYgYikgeyByZXR1cm4gYiA9PSBhOyB9CiAKQEAgLTM3MSw5ICsz
NzQsMTEgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0
cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgKIGlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU3RyaW5nJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgp
LCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IGNo
YXIqIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGIpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIEFT
Q0lJTGl0ZXJhbCBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihiLmNoYXJhY3RlcnMoKSkpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBiKSB7IHJldHVybiAhZXF1
YWwoYS5pbXBsKCksIGIuY2hhcmFjdGVycygpLCBiLmxlbmd0aCgpKTsgfQogaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBMQ2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1
YWwoYSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGEs
IGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihhKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KEFTQ0lJTGl0
ZXJhbCBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oYS5jaGFyYWN0ZXJzKCkpLCBiLmltcGwoKSk7IH0KK2lubGluZSBib29s
IG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhLCBjb25zdCBTdHJpbmcmIGIpIHsg
cmV0dXJuICFlcXVhbChiLmltcGwoKSwgYS5jaGFyYWN0ZXJzKCksIGEubGVuZ3RoKCkpOyB9CiB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJl
dHVybiAhKGEgPT0gYik7IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxp
bmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIgIT0gYTsgfQogCkBAIC02MjgsOSArNjMzLDkgQEAg
dGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFMKIAogaW5saW5lIG5hbWVzcGFjZSBTdHJpbmdMaXRlcmFs
cyB7CiAKLWlubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNoYXIqIGNoYXJhY3Rl
cnMsIHNpemVfdCkKK2lubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6ZnJv
bUxpdGVyYWxVbnNhZmUoY2hhcmFjdGVycyk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6OmZyb21MaXRlcmFsVW5zYWZlKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKIH0gLy8g
aW5saW5lIFN0cmluZ0xpdGVyYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5jcHAKaW5kZXggYjBkMWQ4MmU4ZWVjLi4xYTI4ODU2YTkyYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVPcHRpb25z
KGNvbnN0IEluaXQmIGluaXQpCiAKIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxFeGNlcHRp
b24+IHByb2Nlc3NJbnZhbGlkU2lnbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
CiB7Ci0gICAgQVNDSUlMaXRlcmFsIG1lc3NhZ2UgeyAiRmV0Y2hSZXF1ZXN0SW5pdC5zaWduYWwg
c2hvdWxkIGJlIHVuZGVmaW5lZCwgbnVsbCBvciBhbiBBYm9ydFNpZ25hbCBvYmplY3QuIFRoaXMg
d2lsbCB0aHJvdyBpbiBhIGZ1dHVyZSByZWxlYXNlLiJfcyB9OworICAgIGF1dG8gbWVzc2FnZSA9
ICJGZXRjaFJlcXVlc3RJbml0LnNpZ25hbCBzaG91bGQgYmUgdW5kZWZpbmVkLCBudWxsIG9yIGFu
IEFib3J0U2lnbmFsIG9iamVjdC4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2Uu
Il9zOwogICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CiAKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNv
bnRleHQpICYmIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5xdWlya3MoKS5zaG91bGRJZ25v
cmVJbnZhbGlkU2lnbmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb24uY3BwCmluZGV4IGNkMzcyZjQzNjkxYS4uNzI2MmE1MmZjMWFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
LmNwcApAQCAtMzgzLDcgKzM4Myw3IEBAIGJvb2wgR2VvbG9jYXRpb246OnNob3VsZEJsb2NrR2Vv
bG9jYXRpb25SZXF1ZXN0cygpCiB2b2lkIEdlb2xvY2F0aW9uOjpzdGFydFJlcXVlc3QoR2VvTm90
aWZpZXIqIG5vdGlmaWVyKQogewogICAgIGlmIChzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVz
dHMoKSkgewotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0
aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVO
SUVELCBvcmlnaW5DYW5ub3RSZXF1ZXN0R2VvbG9jYXRpb25FcnJvck1lc3NhZ2UpKTsKKyAgICAg
ICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVh
dGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgU3RyaW5nIHsg
b3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNzYWdlIH0pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBkb2N1bWVudCgpLT5zZXRHZW9sb2NhdGlvbkFjY2Vzc2VkKCk7
CkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RhcnRSZXF1ZXN0KEdlb05v
dGlmaWVyKiBub3RpZmllcikKICAgICAvLyBDaGVjayB3aGV0aGVyIHBlcm1pc3Npb25zIGhhdmUg
YWxyZWFkeSBiZWVuIGRlbmllZC4gTm90ZSB0aGF0IGlmIHRoaXMgaXMgdGhlIGNhc2UsCiAgICAg
Ly8gdGhlIHBlcm1pc3Npb24gc3RhdGUgY2FuIG5vdCBjaGFuZ2UgYWdhaW4gaW4gdGhlIGxpZmV0
aW1lIG9mIHRoaXMgcGFnZS4KICAgICBpZiAoaXNEZW5pZWQoKSkKLSAgICAgICAgbm90aWZpZXIt
PnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgcGVybWlzc2lvbkRlbmllZEVycm9y
TWVzc2FnZSkpOworICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05f
REVOSUVELCBTdHJpbmcgeyBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlIH0pKTsKICAgICBl
bHNlIGlmIChoYXZlU3VpdGFibGVDYWNoZWRQb3NpdGlvbihub3RpZmllci0+b3B0aW9ucygpKSkK
ICAgICAgICAgbm90aWZpZXItPnNldFVzZUNhY2hlZFBvc2l0aW9uKCk7CiAgICAgZWxzZSBpZiAo
bm90aWZpZXItPmhhc1plcm9UaW1lb3V0KCkpCkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBHZW9s
b2NhdGlvbjo6c3RhcnRSZXF1ZXN0KEdlb05vdGlmaWVyKiBub3RpZmllcikKICAgICB9IGVsc2Ug
aWYgKHN0YXJ0VXBkYXRpbmcobm90aWZpZXIpKQogICAgICAgICBub3RpZmllci0+c3RhcnRUaW1l
cklmTmVlZGVkKCk7CiAgICAgZWxzZQotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihH
ZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6
OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSkp
OworICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJy
b3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxF
LCBTdHJpbmcgeyBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSB9KSk7CiB9CiAKIHZv
aWQgR2VvbG9jYXRpb246OmZhdGFsRXJyb3JPY2N1cnJlZChHZW9Ob3RpZmllciogbm90aWZpZXIp
CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6cmVxdWVzdFVzZXNDYWNoZWRQ
b3NpdGlvbihHZW9Ob3RpZmllciogbm90aWZpZXIpCiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYXN5
bmNocm9ub3VzbHksIHNvIHRoZSBwZXJtaXNzaW9ucyBjb3VsZCBoYXZlIGJlZW4gZGVuaWVkCiAg
ICAgLy8gc2luY2Ugd2UgbGFzdCBjaGVja2VkIGluIHN0YXJ0UmVxdWVzdC4KICAgICBpZiAoaXNE
ZW5pZWQoKSkgewotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05f
REVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIG5vdGlmaWVy
LT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0
aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIFN0cmluZyB7IHBlcm1pc3Npb25E
ZW5pZWRFcnJvck1lc3NhZ2UgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTMs
NyArNDUzLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6bWFrZUNhY2hlZFBvc2l0aW9uQ2FsbGJhY2tz
KCkKICAgICAgICAgICAgIGlmIChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQoKSB8fCBzdGFydFVw
ZGF0aW5nKG5vdGlmaWVyLmdldCgpKSkKICAgICAgICAgICAgICAgICBub3RpZmllci0+c3RhcnRU
aW1lcklmTmVlZGVkKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbm90aWZp
ZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9j
YXRpb25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRSwgZmFpbGVkVG9TdGFydFNl
cnZpY2VFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICBub3RpZmllci0+c2V0RmF0YWxF
cnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9u
RXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBTdHJpbmcgeyBmYWlsZWRUb1N0YXJ0U2Vydmlj
ZUVycm9yTWVzc2FnZSB9KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUxNyw3ICs1MTcsNyBA
QCB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbikKICAgICB9CiAKICAgICBpZiAoIWlzQWxsb3dlZCgpKSB7
Ci0gICAgICAgIGF1dG8gZXJyb3IgPSBHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShH
ZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBwZXJtaXNzaW9uRGVu
aWVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgYXV0byBlcnJvciA9IEdlb2xvY2F0aW9uUG9zaXRp
b25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5J
RUQsIFN0cmluZyB7IHBlcm1pc3Npb25EZW5pZWRFcnJvck1lc3NhZ2UgfSk7CiAgICAgICAgIGVy
cm9yLT5zZXRJc0ZhdGFsKHRydWUpOwogICAgICAgICBoYW5kbGVFcnJvcihlcnJvcik7CiAgICAg
ICAgIG1fcmVxdWVzdHNBd2FpdGluZ0NhY2hlZFBvc2l0aW9uLmNsZWFyKCk7CkBAIC01NzYsNyAr
NTc2LDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RvcFRpbWVycygpCiB2b2lkIEdlb2xvY2F0aW9u
OjpjYW5jZWxSZXF1ZXN0cyhHZW9Ob3RpZmllclZlY3RvciYgbm90aWZpZXJzKQogewogICAgIGZv
ciAoYXV0byYgbm90aWZpZXIgOiBub3RpZmllcnMpCi0gICAgICAgIG5vdGlmaWVyLT5zZXRGYXRh
bEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRp
b25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIGZyYW1lbGVzc0RvY3VtZW50RXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRp
b25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJ
TEFCTEUsIFN0cmluZyB7IGZyYW1lbGVzc0RvY3VtZW50RXJyb3JNZXNzYWdlIH0pKTsKIH0KIAog
dm9pZCBHZW9sb2NhdGlvbjo6Y2FuY2VsQWxsUmVxdWVzdHMoKQpAQCAtNzUxLDkgKzc1MSw5IEBA
IHZvaWQgR2VvbG9jYXRpb246OmhhbmRsZVBlbmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCkKICAg
ICAgICAgICAgIGlmIChzdGFydFVwZGF0aW5nKG5vdGlmaWVyLmdldCgpKSkKICAgICAgICAgICAg
ICAgICBub3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlv
bkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlM
QUJMRSwgZmFpbGVkVG9TdGFydFNlcnZpY2VFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAg
ICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0
ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBTdHJpbmcg
eyBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSB9KSk7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVy
cm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwg
cGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAgbm90aWZpZXItPnNl
dEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Q
b3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgU3RyaW5nIHsgcGVybWlzc2lvbkRlbmll
ZEVycm9yTWVzc2FnZSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKaW5kZXggZGNhN2U0NmM0
OGE4Li5jM2Q1M2E2YjE0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBI
aWdobGlnaHRSZWdpc3Rlcjo6c2V0SGlnaGxpZ2h0VmlzaWJpbGl0eShIaWdobGlnaHRWaXNpYmls
aXR5IGhpZ2hsaWdodFZpc2kKICAgICAgICAgaGlnaGxpZ2h0LnZhbHVlLT5yZXBhaW50KCk7CiB9
CiAjZW5kaWYKLXN0YXRpYyBBU0NJSUxpdGVyYWwgYW5ub3RhdGlvbkhpZ2hsaWdodEtleSgpCitz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhbm5vdGF0aW9uSGlnaGxpZ2h0S2V5KCkKIHsK
ICAgICByZXR1cm4gImFubm90YXRpb25IaWdobGlnaHRLZXkiX3M7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDM5YzE0N2RhYTc4Yy4uNmE2ZmQyNmQwMTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRCbG9iVGFibGVzKCkKICAgICAg
ICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZChibG9iUmVjb3Jkc1RhYmxlU2NoZW1h
KCkpKQogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCBtYWtlU3Ry
aW5nKCJFcnJvciBjcmVhdGluZyBCbG9iUmVjb3JkcyB0YWJsZSAoIiwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yKCksICIpIC0gIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpIH07CiAKLSAgICAg
ICAgcmVjb3Jkc1RhYmxlU3RhdGVtZW50ID0gYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgpOworICAg
ICAgICByZWNvcmRzVGFibGVTdGF0ZW1lbnQgPSBTdHJpbmcgeyBibG9iUmVjb3Jkc1RhYmxlU2No
ZW1hKCkgfTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVChyZWNvcmRzVGFibGVTdGF0ZW1l
bnQgPT0gYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgpIHx8IHJlY29yZHNUYWJsZVN0YXRlbWVudCA9
PSBibG9iUmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkpOwpAQCAtMzA5LDcgKzMwOSw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRCbG9iVGFibGVzKCkK
ICAgICAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZChibG9iRmlsZXNUYWJsZVNj
aGVtYSgpKSkKICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgbWFr
ZVN0cmluZygiRXJyb3IgY3JlYXRpbmcgQmxvYkZpbGVzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3IoKSwgIikgLSAiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKIAotICAg
ICAgICBmaWxlc1RhYmxlU3RhdGVtZW50ID0gYmxvYkZpbGVzVGFibGVTY2hlbWEoKTsKKyAgICAg
ICAgZmlsZXNUYWJsZVN0YXRlbWVudCA9IFN0cmluZyB7IGJsb2JGaWxlc1RhYmxlU2NoZW1hKCkg
fTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVChmaWxlc1RhYmxlU3RhdGVtZW50ID09IGJs
b2JGaWxlc1RhYmxlU2NoZW1hKCkgfHwgZmlsZXNUYWJsZVN0YXRlbWVudCA9PSBibG9iRmlsZXNU
YWJsZVNjaGVtYUFsdGVybmF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCmluZGV4IDE4ZWQ3ZTIxYjM1NS4uYWQxZTM4
NjM3M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJFcnJvci5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQCBTdHJpbmcgSURCRXJyb3I6Om5h
bWUoKSBjb25zdAogewogICAgIGlmICghbV9jb2RlKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IHJldHVybiBET01FeGNlcHRpb246Om5hbWUobV9jb2RlLnZhbHVlKCkpOworICAgIHJldHVybiBT
dHJpbmcgeyBET01FeGNlcHRpb246Om5hbWUobV9jb2RlLnZhbHVlKCkpIH07CiB9CiAKIFN0cmlu
ZyBJREJFcnJvcjo6bWVzc2FnZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvZGUpCiAgICAgICAg
IHJldHVybiB7IH07Ci0gICAgcmV0dXJuIERPTUV4Y2VwdGlvbjo6bWVzc2FnZShtX2NvZGUudmFs
dWUoKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IERPTUV4Y2VwdGlvbjo6bWVzc2FnZShtX2NvZGUu
dmFsdWUoKSkgfTsKIH0KIAogUmVmUHRyPERPTUV4Y2VwdGlvbj4gSURCRXJyb3I6OnRvRE9NRXhj
ZXB0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01FeGNlcHRpb25IYW5kbGluZy5jcHAKaW5kZXggNzNmNmNjNjVkNTRjLi5lODE4OWI0MzMzNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFu
ZGxpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuY3BwCkBAIC0yMTcsMTkgKzIxNywxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBT
dHJpbmdUeXBlcz4gc3RhdGljIFN0cmluZyBtYWtlQXJndW1lbnRUeXBlRXJyb3JNZXNzYWdlKHVu
cwogdm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBtZXNz
YWdlKQogewogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uRXhjZXB0VGVybWluYXRpb24oKTsK
LSAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZURP
TUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgTm90U3VwcG9ydGVkRXJyb3IsIG1lc3Nh
Z2UpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgTm90U3VwcG9ydGVkRXJyb3Is
IFN0cmluZyB7IG1lc3NhZ2UgfSkpOwogfQogCiB2b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3Io
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCiB7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJbnZhbGlkU3RhdGVFcnJvciwgbWVzc2FnZSkpOworICAgIHRocm93RXhjZXB0aW9uKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJbnZhbGlkU3RhdGVFcnJvciwgU3RyaW5nIHsgbWVzc2FnZSB9KSk7CiB9CiAKIHZv
aWQgdGhyb3dTZWN1cml0eUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0aW9uKCk7Ci0gICAgdGhy
b3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVET01FeGNlcHRp
b24oJmxleGljYWxHbG9iYWxPYmplY3QsIFNlY3VyaXR5RXJyb3IsIG1lc3NhZ2UpKTsKKyAgICB0
aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2Vw
dGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgU2VjdXJpdHlFcnJvciwgU3RyaW5nIHsgbWVzc2Fn
ZSB9KSk7CiB9CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1F
cnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVu
dE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFZhbHVlcykKQEAgLTMxMSw3ICszMTEsNyBA
QCBKU0M6OkVuY29kZWRKU1ZhbHVlIHJlamVjdFByb21pc2VXaXRoVGhpc1R5cGVFcnJvcihKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsRwogdm9pZCB0aHJvd0RPTVN5bnRheEVycm9yKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQogewogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
RXhjZXB0VGVybWluYXRpb24oKTsKLSAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgU3lu
dGF4RXJyb3IsIG1lc3NhZ2UpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgU3lu
dGF4RXJyb3IsIFN0cmluZyB7IG1lc3NhZ2UgfSkpOwogfQogCiB2b2lkIHRocm93RGF0YUNsb25l
RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdE1vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRN
b2R1bGVMb2FkZXIuY3BwCmluZGV4IDcwMWQzOWMwOGIwYi4uODI4M2Y5Yzk5ZmI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCBKU0M6OklkZW50aWZpZXIgU2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNv
bHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlc3VsdC0+c3RyaW5nKCkpOwogfQogCi1zdGF0
aWMgdm9pZCByZWplY3RUb1Byb3BhZ2F0ZU5ldHdvcmtFcnJvcihEZWZlcnJlZFByb21pc2UmIGRl
ZmVycmVkLCBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kIGZhaWx1cmVLaW5kLCBBU0NJSUxpdGVyYWwg
bWVzc2FnZSkKK3N0YXRpYyB2b2lkIHJlamVjdFRvUHJvcGFnYXRlTmV0d29ya0Vycm9yKERlZmVy
cmVkUHJvbWlzZSYgZGVmZXJyZWQsIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQgZmFpbHVyZUtpbmQs
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbWVzc2FnZSkKIHsKICAgICBkZWZlcnJlZC5yZWplY3RX
aXRoQ2FsbGJhY2soWyZdIChKU0RPTUdsb2JhbE9iamVjdCYganNHbG9iYWxPYmplY3QpIHsKICAg
ICAgICAgLy8gV2UgYW5ub3RhdGUgZXhjZXB0aW9uIHdpdGggc3BlY2lhbCBwcml2YXRlIHN5bWJv
bC4gSXQgYWxsb3dzIHVzIHRvIGRpc3Rpbmd1aXNoIHRoZXNlIGVycm9ycyBmcm9tIHRoZSB1c2Vy
IHRocm93biBvbmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCmluZGV4IDBjYTYxYzEwMTRkMi4u
N2RmZWEwZDVkMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IHN0YXRpYyB2b2lkIHdyaXRlTGVuZ3RoVG9WZWN0b3JBdE9mZnNldChWZWN0b3I8dWludDhfdD4m
IHZlY3Rvciwgc2l6ZV90IG9mZnNldCkKIAogRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVyc0FjdGlvbiwg
c3RkOjplcnJvcl9jb2RlPiBNb2RpZnlIZWFkZXJzQWN0aW9uOjpwYXJzZShjb25zdCBKU09OOjpP
YmplY3QmIG1vZGlmeUhlYWRlcnMpCiB7Ci0gICAgYXV0byBwYXJzZUhlYWRlcnMgPSBbXSAoY29u
c3QgSlNPTjo6T2JqZWN0JiBtb2RpZnlIZWFkZXJzLCBBU0NJSUxpdGVyYWwgYXJyYXlOYW1lKSAt
PiBFeHBlY3RlZDxWZWN0b3I8TW9kaWZ5SGVhZGVySW5mbz4sIHN0ZDo6ZXJyb3JfY29kZT4gewor
ICAgIGF1dG8gcGFyc2VIZWFkZXJzID0gW10gKGNvbnN0IEpTT046Ok9iamVjdCYgbW9kaWZ5SGVh
ZGVycywgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhcnJheU5hbWUpIC0+IEV4cGVjdGVkPFZlY3Rv
cjxNb2RpZnlIZWFkZXJJbmZvPiwgc3RkOjplcnJvcl9jb2RlPiB7CiAgICAgICAgIGF1dG8gdmFs
dWUgPSBtb2RpZnlIZWFkZXJzLmdldFZhbHVlKGFycmF5TmFtZSk7CiAgICAgICAgIGlmICghdmFs
dWUpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCA1
MTNmZDkzOWU2NmQuLjRjNGU5NjQ2N2JmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTE2
Myw3ICsxNjMsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBs
b2FkVHJpZ2dlcihjb25zdCBKU09OOjpPYmplY3QmIHJ1bGVPYgogICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKICAgICB9CiAKLSAgICBhdXRvIGNoZWNrQ29uZGl0aW9u
ID0gWyZdIChBU0NJSUxpdGVyYWwga2V5LCBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgc3RkOjpl
cnJvcl9jb2RlPiAoKmxpc3RSZWFkZXIpKGNvbnN0IEpTT046OkFycmF5JiksIEFjdGlvbkNvbmRp
dGlvbiBhY3Rpb25Db25kaXRpb24pIC0+IHN0ZDo6ZXJyb3JfY29kZSB7CisgICAgYXV0byBjaGVj
a0NvbmRpdGlvbiA9IFsmXSAoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBrZXksIEV4cGVjdGVkPFZl
Y3RvcjxTdHJpbmc+LCBzdGQ6OmVycm9yX2NvZGU+ICgqbGlzdFJlYWRlcikoY29uc3QgSlNPTjo6
QXJyYXkmKSwgQWN0aW9uQ29uZGl0aW9uIGFjdGlvbkNvbmRpdGlvbikgLT4gc3RkOjplcnJvcl9j
b2RlIHsKICAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSB0cmlnZ2VyT2JqZWN0LT5nZXRWYWx1ZShr
ZXkpKSB7CiAgICAgICAgICAgICBpZiAodHJpZ2dlci5mbGFncyAmIEFjdGlvbkNvbmRpdGlvbk1h
c2spCiAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11
bHRpcGxlQ29uZGl0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlz
L0NyeXB0b0tleUVDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVD
LmNwcAppbmRleCBkMzZkMzQwZjcwYTguLmM3MTI0NmUzMTc0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmNwcApAQCAtMTUxLDEzICsxNTEsMTMgQEAgRXhjZXB0
aW9uT3I8SnNvbldlYktleT4gQ3J5cHRvS2V5RUM6OmV4cG9ydEp3aygpIGNvbnN0CiAgICAgcmVz
dWx0Lmt0eSA9ICJFQyI7CiAgICAgc3dpdGNoIChtX2N1cnZlKSB7CiAgICAgY2FzZSBOYW1lZEN1
cnZlOjpQMjU2OgotICAgICAgICByZXN1bHQuY3J2ID0gUDI1NjsKKyAgICAgICAgcmVzdWx0LmNy
diA9IFN0cmluZyB7IFAyNTYgfTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lZEN1cnZl
OjpQMzg0OgotICAgICAgICByZXN1bHQuY3J2ID0gUDM4NDsKKyAgICAgICAgcmVzdWx0LmNydiA9
IFN0cmluZyB7IFAzODQgfTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lZEN1cnZlOjpQ
NTIxOgotICAgICAgICByZXN1bHQuY3J2ID0gUDUyMTsKKyAgICAgICAgcmVzdWx0LmNydiA9IFN0
cmluZyB7IFA1MjEgfTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJlc3VsdC5rZXlfb3Bz
ID0gdXNhZ2VzKCk7CkBAIC0yMTYsMTMgKzIxNiwxMyBAQCBhdXRvIENyeXB0b0tleUVDOjphbGdv
cml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KIAogICAgIHN3aXRjaCAobV9jdXJ2ZSkgewog
ICAgIGNhc2UgTmFtZWRDdXJ2ZTo6UDI1NjoKLSAgICAgICAgcmVzdWx0Lm5hbWVkQ3VydmUgPSBQ
MjU2OworICAgICAgICByZXN1bHQubmFtZWRDdXJ2ZSA9IFN0cmluZyB7IFAyNTYgfTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lZEN1cnZlOjpQMzg0OgotICAgICAgICByZXN1bHQubmFt
ZWRDdXJ2ZSA9IFAzODQ7CisgICAgICAgIHJlc3VsdC5uYW1lZEN1cnZlID0gU3RyaW5nIHsgUDM4
NCB9OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlA1MjE6Ci0gICAgICAg
IHJlc3VsdC5uYW1lZEN1cnZlID0gUDUyMTsKKyAgICAgICAgcmVzdWx0Lm5hbWVkQ3VydmUgPSBT
dHJpbmcgeyBQNTIxIH07CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
RXhjZXB0aW9uLmNwcAppbmRleCAwMGFiNzQ5ZjNiOGIuLmVlNzQ5Y2M0MTU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIERPTUV4Y2Vw
dGlvbjo6TGVnYWN5Q29kZSBsZWdhY3lDb2RlRnJvbU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQog
UmVmPERPTUV4Y2VwdGlvbj4gRE9NRXhjZXB0aW9uOjpjcmVhdGUoRXhjZXB0aW9uQ29kZSBlYywg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGF1dG8mIGRlc2NyaXB0aW9uID0gRE9NRXhj
ZXB0aW9uOjpkZXNjcmlwdGlvbihlYyk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRXhj
ZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIGRlc2NyaXB0aW9uLm5hbWUsICFtZXNzYWdl
LmlzRW1wdHkoKSA/IG1lc3NhZ2UgOiBkZXNjcmlwdGlvbi5tZXNzYWdlKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRE9NRXhjZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIFN0cmlu
ZyB7IGRlc2NyaXB0aW9uLm5hbWUgfSwgIW1lc3NhZ2UuaXNFbXB0eSgpID8gbWVzc2FnZSA6IFN0
cmluZyB7IGRlc2NyaXB0aW9uLm1lc3NhZ2UgfSkpOwogfQogCiBSZWY8RE9NRXhjZXB0aW9uPiBE
T01FeGNlcHRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
bmFtZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNlcHRpb246
OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgbmFtZQogUmVmPERP
TUV4Y2VwdGlvbj4gRE9NRXhjZXB0aW9uOjpjcmVhdGUoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRp
b24pCiB7CiAgICAgYXV0byYgZGVzY3JpcHRpb24gPSBET01FeGNlcHRpb246OmRlc2NyaXB0aW9u
KGV4Y2VwdGlvbi5jb2RlKCkpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTUV4Y2VwdGlv
bihkZXNjcmlwdGlvbi5sZWdhY3lDb2RlLCBkZXNjcmlwdGlvbi5uYW1lLCBleGNlcHRpb24ubWVz
c2FnZSgpLmlzRW1wdHkoKSA/IGRlc2NyaXB0aW9uLm1lc3NhZ2UgOiBleGNlcHRpb24ubWVzc2Fn
ZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRXhjZXB0aW9uKGRlc2NyaXB0aW9u
LmxlZ2FjeUNvZGUsIFN0cmluZyB7IGRlc2NyaXB0aW9uLm5hbWUgfSwgZXhjZXB0aW9uLm1lc3Nh
Z2UoKS5pc0VtcHR5KCkgPyBTdHJpbmcgeyBkZXNjcmlwdGlvbi5tZXNzYWdlIH0gOiBleGNlcHRp
b24ubWVzc2FnZSgpKSk7CiB9CiAKIERPTUV4Y2VwdGlvbjo6RE9NRXhjZXB0aW9uKExlZ2FjeUNv
ZGUgbGVnYWN5Q29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMzNiNjJjM2E5YzJlLi4zMzA2
NGI1NDIzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTMyMyw3ICsz
MjMsNyBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RNb2R1bGVTY3JpcHQoY29uc3QgVGV4
dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uKQogICAgIFN0cmluZyBub25jZSA9IG1fZWxl
bWVudC5ub25jZSgpOwogICAgIFN0cmluZyBjcm9zc09yaWdpbk1vZGUgPSBtX2VsZW1lbnQuYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0cik7
CiAgICAgaWYgKGNyb3NzT3JpZ2luTW9kZS5pc051bGwoKSkKLSAgICAgICAgY3Jvc3NPcmlnaW5N
b2RlID0gU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6OmRlZmF1bHRDcm9zc09yaWdp
bk1vZGVGb3JNb2R1bGU7CisgICAgICAgIGNyb3NzT3JpZ2luTW9kZSA9IFN0cmluZyB7IFNjcmlw
dEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyOjpkZWZhdWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9k
dWxlIH07CiAKICAgICBpZiAoaGFzU291cmNlQXR0cmlidXRlKCkpIHsKICAgICAgICAgQVNTRVJU
KG1fZWxlbWVudC5pc0Nvbm5lY3RlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuY3BwCmluZGV4IDEwNDNiNzM3MmZi
MS4uMzc0MDYzODM5MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudENhY2hlZFNjcmlwdEZldGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBTY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0
Y2hlcjo6cmVxdWVzdE1vZHUKICAgICAvLyBJZiB0aGUgZmV0Y2hlciBpcyBub3QgbW9kdWxlIHNj
cmlwdCwgY3JlZGVudGlhbCBtb2RlIGlzIGFsd2F5cyAic2FtZS1vcmlnaW4iICgiYW5vbnltb3Vz
IikuCiAgICAgLy8gVGhpcyBjb2RlIGlzIGZvciBkeW5hbWljIG1vZHVsZSBpbXBvcnQgKGBpbXBv
cnRgIG9wZXJhdG9yKS4KIAotICAgIHJldHVybiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGRvY3Vt
ZW50LCBzb3VyY2VVUkwsIGlzQ2xhc3NpY1NjcmlwdCgpID8gZGVmYXVsdENyb3NzT3JpZ2luTW9k
ZUZvck1vZHVsZSA6IG1fY3Jvc3NPcmlnaW5Nb2RlLCBXVEZNb3ZlKGludGVncml0eSksIHsgfSk7
CisgICAgcmV0dXJuIHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNvdXJjZVVSTCwg
aXNDbGFzc2ljU2NyaXB0KCkgPyBBdG9tU3RyaW5nIHsgZGVmYXVsdENyb3NzT3JpZ2luTW9kZUZv
ck1vZHVsZSB9IDogbV9jcm9zc09yaWdpbk1vZGUsIFdURk1vdmUoaW50ZWdyaXR5KSwgeyB9KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggNjFh
MWVhNmI5NzU3Li4yZGM2OWM5MjZkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcApAQCAtMTgyOCw4ICsxODI4LDkgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAm
IGNyZWF0ZUNvbW1hbmRNYXAoKQogICAgIENvbW1hbmRNYXAmIGNvbW1hbmRNYXAgPSAqbmV3IENv
bW1hbmRNYXA7CiAKICAgICBmb3IgKGF1dG8mIGNvbW1hbmQgOiBjb21tYW5kcykgewotICAgICAg
ICBBU1NFUlQoIWNvbW1hbmRNYXAuZ2V0KGNvbW1hbmQubmFtZSkpOwotICAgICAgICBjb21tYW5k
TWFwLnNldChjb21tYW5kLm5hbWUsICZjb21tYW5kLmNvbW1hbmQpOworICAgICAgICBTdHJpbmcg
Y29tbWFuZE5hbWUgeyBjb21tYW5kLm5hbWUgfTsKKyAgICAgICAgQVNTRVJUKCFjb21tYW5kTWFw
LmdldChjb21tYW5kTmFtZSkpOworICAgICAgICBjb21tYW5kTWFwLnNldChjb21tYW5kTmFtZSwg
JmNvbW1hbmQuY29tbWFuZCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGNvbW1hbmRNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCmluZGV4IDBlNzgwNjNlM2E0MS4uOWYwMDNlZjg0MzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OlN0YXRlOjpTdGF0ZSgpCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6U3RhdGU6OmZvbnRTdHJpbmcoKSBjb25zdAogewogICAgIGlmICghZm9udC5yZWFsaXpl
ZCgpKQotICAgICAgICByZXR1cm4gRGVmYXVsdEZvbnQ7CisgICAgICAgIHJldHVybiBTdHJpbmcg
eyBEZWZhdWx0Rm9udCB9OwogCiAgICAgU3RyaW5nQnVpbGRlciBzZXJpYWxpemVkRm9udDsKICAg
ICBjb25zdCBhdXRvJiBmb250ID0gdGhpcy0+Zm9udC5mb250RGVzY3JpcHRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3Bw
CmluZGV4IGE1MTMwMDIxNjFiOS4uOTBlYTgyZThkZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IFByZWxvYWRSZXF1ZXN0OjpyZXNvdXJjZVJlcXVl
c3QoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIFN0cmluZyBjcm9zc09yaWdpbk1vZGUgPSBtX2Ny
b3NzT3JpZ2luTW9kZTsKICAgICBpZiAobV9tb2R1bGVTY3JpcHQgPT0gTW9kdWxlU2NyaXB0OjpZ
ZXMpIHsKICAgICAgICAgaWYgKGNyb3NzT3JpZ2luTW9kZS5pc051bGwoKSkKLSAgICAgICAgICAg
IGNyb3NzT3JpZ2luTW9kZSA9IFNjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyOjpkZWZh
dWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9kdWxlOworICAgICAgICAgICAgY3Jvc3NPcmlnaW5Nb2Rl
ID0gU3RyaW5nIHsgU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6OmRlZmF1bHRDcm9z
c09yaWdpbk1vZGVGb3JNb2R1bGUgfTsKICAgICB9CiAgICAgaWYgKG1fcmVzb3VyY2VUeXBlID09
IENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQgfHwgbV9yZXNvdXJjZVR5cGUgPT0gQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2UpCiAgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQ
b2xpY3kgPSBtX3JlZmVycmVyUG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCmluZGV4IDE5ZmM4NWNkODk3YS4uZmE0M2FhMzg5ZDhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC0zOTEsNyArMzkxLDcgQEAg
Ym9vbCBUZXh0VHJhY2tDdWU6Omhhc0VxdWl2YWxlbnRTdGFydFRpbWUoY29uc3QgVGV4dFRyYWNr
Q3VlJiBjdWUpIGNvbnN0CiAKIHZvaWQgVGV4dFRyYWNrQ3VlOjp0b0pTT04oSlNPTjo6T2JqZWN0
JiB2YWx1ZSkgY29uc3QKIHsKLSAgICBBU0NJSUxpdGVyYWwgdHlwZSA9ICJHZW5lcmljIl9zOwor
ICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdHlwZSA9ICJHZW5lcmljIl9zOwogICAgIHN3aXRj
aCAoY3VlVHlwZSgpKSB7CiAgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkNvbnZlcnRlZFRvV2ViVlRU
OgogICAgICAgICB0eXBlID0gIkNvbnZlcnRlZFRvV2ViVlRUIl9zOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCA4Mzg5MDhkYzkzNmUuLmRhYzYxNzRkYjMzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTQzNyw3ICs0MzcsNyBAQCBz
dGF0aWMgYm9vbCBwb3B1bGF0ZUVycm9yU3RyaW5nKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0
LCBFcnJvclN0cmluZyYgZXJyb3JTdAogewogICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBlcnJvclN0cmluZyA9IERPTUV4Y2VwdGlvbjo6
bmFtZShyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CisgICAgZXJyb3JTdHJpbmcg
PSBTdHJpbmcgeyBET01FeGNlcHRpb246Om5hbWUocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5j
b2RlKCkpIH07CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGJiY2M3OWFiYzM4Ni4uY2UyMzRlMjU1OGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAt
MTMzMiw3ICsxMzMyLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0
b3JDYW52YXM6OmJ1aWxkQWN0aW9uKFN0cmluZyYmIG5hbWUsIEluc3AKIAogUmVmPEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNH
cmFkaWVudChjb25zdCBDYW52YXNHcmFkaWVudCYgY2FudmFzR3JhZGllbnQpCiB7Ci0gICAgQVND
SUlMaXRlcmFsIHR5cGUgPSAibGluZWFyLWdyYWRpZW50Il9zOworICAgIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggdHlwZSA9ICJsaW5lYXItZ3JhZGllbnQiX3M7CiAgICAgYXV0byBwYXJhbWV0ZXJz
ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKICAgICBXVEY6OnN3aXRjaE9uKGNh
bnZhc0dyYWRpZW50LmdyYWRpZW50KCkuZGF0YSgpLAogICAgICAgICBbJl0gKGNvbnN0IEdyYWRp
ZW50OjpMaW5lYXJEYXRhJiBkYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggYTBiMjMyMTBiMjM4Li5iMmMxODQxMzIyMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKQEAgLTcxMywxMSArNzEzLDExIEBAIFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5z
cGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdAogICAgICAgICAgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+Pjo6aXRl
cmF0b3IgYWN0aXZlSXQgPSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZmlu
ZChjYW5vbmljYWxQcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgIGlmIChhY3RpdmVJdCAh
PSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZW5kKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHByb3BlcnR5RW50cnkucGFyc2VkT2spIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbmV3UHJpb3JpdHkgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhQ
cm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6cHJpb3JpdHlLZXkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byBuZXdQcmlvcml0eSA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKFN0
cmluZyB7IFByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5Ojpwcmlvcml0eUtleSB9KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghIW5ld1ByaW9yaXR5KQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByZXZpb3VzUHJpb3JpdHkgPSBuZXdQcmlvcml0eTsKIAotICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBuZXdTdGF0dXMgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhQ
cm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6c3RhdHVzS2V5KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gbmV3U3RhdHVzID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoU3RyaW5n
IHsgUHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OnN0YXR1c0tleSB9KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghIW5ld1N0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByZXZpb3VzU3RhdHVzID0gbmV3U3RhdHVzOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwcmV2aW91c1N0YXR1cyAhPSBQcm90b2NvbDo6SGVscGVyczo6Z2V0RW51bUNvbnN0
YW50VmFsdWUoUHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkluYWN0aXZlKSkgewpA
QCAtNzMwLDcgKzczMCw3IEBAIFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9y
U3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNQYXJzZWRPayA9
IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6
cGFyc2VkT2tLZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c1BhcnNl
ZE9rID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5OjpwYXJzZWRPa0tleSB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChwcmV2aW91c1BhcnNlZE9rICYmICFwcmV2aW91c1BhcnNlZE9rKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCmluZGV4IDBlMTg2YmNlYTcwMS4uYzY3OGNhNTJhNjE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNw
cApAQCAtMTM5LDEzICsxMzksMTMgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHBhcnNl
Q29sb3IoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBjb2xvck9iamVjdCkKICAgICBpZiAoIWNvbG9y
T2JqZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byByID0gY29s
b3JPYmplY3QtPmdldEludGVnZXIoUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpyS2V5KTsKLSAg
ICBhdXRvIGcgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihQcm90b2NvbDo6RE9NOjpSR0JBQ29s
b3I6OmdLZXkpOwotICAgIGF1dG8gYiA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFByb3RvY29s
OjpET006OlJHQkFDb2xvcjo6YktleSk7CisgICAgYXV0byByID0gY29sb3JPYmplY3QtPmdldElu
dGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpyS2V5IH0pOworICAgIGF1
dG8gZyA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpET006OlJH
QkFDb2xvcjo6Z0tleSB9KTsKKyAgICBhdXRvIGIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihT
dHJpbmcgeyBQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OmJLZXkgfSk7CiAgICAgaWYgKCFyIHx8
ICFnIHx8ICFiKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBhID0g
Y29sb3JPYmplY3QtPmdldERvdWJsZShQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OmFLZXkpOwor
ICAgIGF1dG8gYSA9IGNvbG9yT2JqZWN0LT5nZXREb3VibGUoU3RyaW5nIHsgUHJvdG9jb2w6OkRP
TTo6UkdCQUNvbG9yOjphS2V5IH0pOwogICAgIGlmICghYSkKICAgICAgICAgcmV0dXJuIHsgbWFr
ZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8dWludDhfdD4+KCpyLCAqZywgKmIpIH07CiAg
ICAgcmV0dXJuIHsgbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxTUkdCQTx1
aW50OF90Pj4oKnIsICpnLCAqYiwgY29udmVydEZsb2F0QWxwaGFUbzx1aW50OF90PigqYSkpIH07
CkBAIC0yODEsNyArMjgxLDcgQEAgU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3Ry
aW5nKEV4Y2VwdGlvbkNvZGUgZWMpCiAKIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJv
clN0cmluZyhFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7Ci0gICAgcmV0dXJuIERPTUV4Y2VwdGlv
bjo6bmFtZShleGNlcHRpb24uY29kZSgpKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgRE9NRXhjZXB0
aW9uOjpuYW1lKGV4Y2VwdGlvbi5jb2RlKCkpIH07CiB9CiAKIEluc3BlY3RvckRPTUFnZW50OjpJ
bnNwZWN0b3JET01BZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JPdmVy
bGF5KiBvdmVybGF5KQpAQCAtMTI4MiwxMSArMTI4MiwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpDb25maWc+IEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaAogICAgIH0KIAogICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkNvbmZpZz4oKTsKLSAgICBoaWdobGlnaHRDb25maWct
PnNob3dJbmZvID0gaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29s
OjpET006OkhpZ2hsaWdodENvbmZpZzo6c2hvd0luZm9LZXkpLnZhbHVlX29yKGZhbHNlKTsKLSAg
ICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbmZpZ0NvbG9yKFByb3RvY29sOjpE
T006OkhpZ2hsaWdodENvbmZpZzo6Y29udGVudENvbG9yS2V5LCAqaGlnaGxpZ2h0SW5zcGVjdG9y
T2JqZWN0KTsKLSAgICBoaWdobGlnaHRDb25maWctPnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0NvbG9y
KFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6cGFkZGluZ0NvbG9yS2V5LCAqaGlnaGxp
Z2h0SW5zcGVjdG9yT2JqZWN0KTsKLSAgICBoaWdobGlnaHRDb25maWctPmJvcmRlciA9IHBhcnNl
Q29uZmlnQ29sb3IoUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpib3JkZXJDb2xvcktl
eSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7Ci0gICAgaGlnaGxpZ2h0Q29uZmlnLT5tYXJn
aW4gPSBwYXJzZUNvbmZpZ0NvbG9yKFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6bWFy
Z2luQ29sb3JLZXksICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hsaWdodENv
bmZpZy0+c2hvd0luZm8gPSBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4oU3Ry
aW5nIHsgUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpzaG93SW5mb0tleSB9KS52YWx1
ZV9vcihmYWxzZSk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb25maWdD
b2xvcihTdHJpbmcgeyBQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OmNvbnRlbnRDb2xv
cktleSB9LCAqaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWct
PnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmluZyB7IFByb3RvY29sOjpET006OkhpZ2hs
aWdodENvbmZpZzo6cGFkZGluZ0NvbG9yS2V5IH0sICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3Qp
OworICAgIGhpZ2hsaWdodENvbmZpZy0+Ym9yZGVyID0gcGFyc2VDb25maWdDb2xvcihTdHJpbmcg
eyBQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OmJvcmRlckNvbG9yS2V5IH0sICpoaWdo
bGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hsaWdodENvbmZpZy0+bWFyZ2luID0gcGFy
c2VDb25maWdDb2xvcihTdHJpbmcgeyBQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6Om1h
cmdpbkNvbG9yS2V5IH0sICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwogICAgIHJldHVybiBo
aWdobGlnaHRDb25maWc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCAxM2ZjMGI4
MWVmODcuLmE4ZWQ1MzExMWQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6c2V0RE9NU3RvcmFnZUl0ZW0oUmVmPEpTCiAgICAgYm9vbCBxdW90YUV4Y2VwdGlv
biA9IGZhbHNlOwogICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKCpmcmFtZSwga2V5LCB2YWx1ZSwg
cXVvdGFFeGNlcHRpb24pOwogICAgIGlmIChxdW90YUV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKERPTUV4Y2VwdGlvbjo6bmFtZShRdW90YUV4Y2VlZGVkRXJyb3IpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0cmluZyB7IERPTUV4Y2VwdGlvbjo6bmFt
ZShRdW90YUV4Y2VlZGVkRXJyb3IpIH0pOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTE5NSwx
MyArMTk1LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERP
TVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uCiAKIFJlZlB0cjxTdG9yYWdlQXJl
YT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmPEpTT046Ok9iamVjdD4mJiBzdG9yYWdlSWQsIEZy
YW1lKiYgdGFyZ2V0RnJhbWUpCiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IHN0b3JhZ2VJ
ZC0+Z2V0U3RyaW5nKFByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OnNlY3VyaXR5T3Jp
Z2luS2V5KTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gc3RvcmFnZUlkLT5nZXRTdHJpbmco
U3RyaW5nIHsgUHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6c2VjdXJpdHlPcmlnaW5L
ZXkgfSk7CiAgICAgaWYgKCFzZWN1cml0eU9yaWdpbikgewogICAgICAgICBlcnJvclN0cmluZyA9
ICJNaXNzaW5nIHNlY3VyaXR5T3JpZ2luIGluIGdpdmVuIHN0b3JhZ2VJZCI7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaXNMb2NhbFN0b3JhZ2UgPSBzdG9yYWdl
SWQtPmdldEJvb2xlYW4oUHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6aXNMb2NhbFN0
b3JhZ2VLZXkpOworICAgIGF1dG8gaXNMb2NhbFN0b3JhZ2UgPSBzdG9yYWdlSWQtPmdldEJvb2xl
YW4oU3RyaW5nIHsgUHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6aXNMb2NhbFN0b3Jh
Z2VLZXkgfSk7CiAgICAgaWYgKCFpc0xvY2FsU3RvcmFnZSkgewogICAgICAgICBlcnJvclN0cmlu
ZyA9ICJNaXNzaW5nIGlzTG9jYWxTdG9yYWdlIGluIGdpdmVuIHN0b3JhZ2VJZCI7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA1ZDUxMmU3OGUyMDAu
LjFjMTM1MWFiOGU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTI1NSw3ICsyNTUsNyBA
QCBwcml2YXRlOgogCiBzdGF0aWMgUmVmUHRyPElEQktleT4gaWRiS2V5RnJvbUluc3BlY3Rvck9i
amVjdChSZWY8SlNPTjo6T2JqZWN0PiYmIGtleSkKIHsKLSAgICBhdXRvIHR5cGVTdHJpbmcgPSBr
ZXktPmdldFN0cmluZyhQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OnR5cGVLZXkpOworICAgIGF1
dG8gdHlwZVN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVk
REI6OktleTo6dHlwZUtleSB9KTsKICAgICBpZiAoIXR5cGVTdHJpbmcpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0yNjUsMjggKzI2NSwyOCBAQCBzdGF0aWMgUmVmUHRyPElEQktleT4g
aWRiS2V5RnJvbUluc3BlY3Rvck9iamVjdChSZWY8SlNPTjo6T2JqZWN0PiYmIGtleSkKIAogICAg
IHN3aXRjaCAoKnR5cGUpIHsKICAgICBjYXNlIFByb3RvY29sOjpJbmRleGVkREI6OktleTo6VHlw
ZTo6TnVtYmVyOiB7Ci0gICAgICAgIGF1dG8gbnVtYmVyID0ga2V5LT5nZXREb3VibGUoUHJvdG9j
b2w6OkluZGV4ZWREQjo6S2V5OjpudW1iZXJLZXkpOworICAgICAgICBhdXRvIG51bWJlciA9IGtl
eS0+Z2V0RG91YmxlKFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVkREI6OktleTo6bnVtYmVyS2V5
IH0pOwogICAgICAgICBpZiAoIW51bWJlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIoKm51bWJlcik7CiAgICAgfQogCiAg
ICAgY2FzZSBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OlR5cGU6OlN0cmluZzogewotICAgICAg
ICBhdXRvIHN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFByb3RvY29sOjpJbmRleGVkREI6OktleTo6
c3RyaW5nS2V5KTsKKyAgICAgICAgYXV0byBzdHJpbmcgPSBrZXktPmdldFN0cmluZyhTdHJpbmcg
eyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OnN0cmluZ0tleSB9KTsKICAgICAgICAgaWYgKCFz
dHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIElEQktl
eTo6Y3JlYXRlU3RyaW5nKHN0cmluZyk7CiAgICAgfQogCiAgICAgY2FzZSBQcm90b2NvbDo6SW5k
ZXhlZERCOjpLZXk6OlR5cGU6OkRhdGU6IHsKLSAgICAgICAgYXV0byBkYXRlID0ga2V5LT5nZXRE
b3VibGUoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpkYXRlS2V5KTsKKyAgICAgICAgYXV0byBk
YXRlID0ga2V5LT5nZXREb3VibGUoU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5Ojpk
YXRlS2V5IH0pOwogICAgICAgICBpZiAoIWRhdGUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlRGF0ZSgqZGF0ZSk7CiAgICAgfQogCiAg
ICAgY2FzZSBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OlR5cGU6OkFycmF5OiB7Ci0gICAgICAg
IGF1dG8gYXJyYXkgPSBrZXktPmdldEFycmF5KFByb3RvY29sOjpJbmRleGVkREI6OktleTo6YXJy
YXlLZXkpOworICAgICAgICBhdXRvIGFycmF5ID0ga2V5LT5nZXRBcnJheShTdHJpbmcgeyBQcm90
b2NvbDo6SW5kZXhlZERCOjpLZXk6OmFycmF5S2V5IH0pOwogICAgICAgICBpZiAoIWFycmF5KQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTMwOCwyNCArMzA4LDI0IEBAIHN0YXRp
YyBSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KFJlZjxKU09OOjpPYmpl
Y3Q+JiYga2V5KQogc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5
UmFuZ2UoSlNPTjo6T2JqZWN0JiBrZXlSYW5nZSkKIHsKICAgICBSZWZQdHI8SURCS2V5PiBpZGJM
b3dlcjsKLSAgICBpZiAoYXV0byBsb3dlciA9IGtleVJhbmdlLmdldE9iamVjdChQcm90b2NvbDo6
SW5kZXhlZERCOjpLZXlSYW5nZTo6bG93ZXJLZXkpKSB7CisgICAgaWYgKGF1dG8gbG93ZXIgPSBr
ZXlSYW5nZS5nZXRPYmplY3QoU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFuZ2U6
Omxvd2VyS2V5IH0pKSB7CiAgICAgICAgIGlkYkxvd2VyID0gaWRiS2V5RnJvbUluc3BlY3Rvck9i
amVjdChsb3dlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgaWYgKCFpZGJMb3dlcikKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFJlZlB0cjxJREJLZXk+IGlk
YlVwcGVyOwotICAgIGlmIChhdXRvIHVwcGVyID0ga2V5UmFuZ2UuZ2V0T2JqZWN0KFByb3RvY29s
OjpJbmRleGVkREI6OktleVJhbmdlOjp1cHBlcktleSkpIHsKKyAgICBpZiAoYXV0byB1cHBlciA9
IGtleVJhbmdlLmdldE9iamVjdChTdHJpbmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5n
ZTo6dXBwZXJLZXkgfSkpIHsKICAgICAgICAgaWRiVXBwZXIgPSBpZGJLZXlGcm9tSW5zcGVjdG9y
T2JqZWN0KHVwcGVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBpZiAoIWlkYlVwcGVyKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBsb3dlck9wZW4g
PSBrZXlSYW5nZS5nZXRCb29sZWFuKFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOjpsb3dl
ck9wZW5LZXkpOworICAgIGF1dG8gbG93ZXJPcGVuID0ga2V5UmFuZ2UuZ2V0Qm9vbGVhbihTdHJp
bmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5nZTo6bG93ZXJPcGVuS2V5IH0pOwogICAg
IGlmICghbG93ZXJPcGVuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gdXBw
ZXJPcGVuID0ga2V5UmFuZ2UuZ2V0Qm9vbGVhbihQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5n
ZTo6dXBwZXJPcGVuS2V5KTsKKyAgICBhdXRvIHVwcGVyT3BlbiA9IGtleVJhbmdlLmdldEJvb2xl
YW4oU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFuZ2U6OnVwcGVyT3BlbktleSB9
KTsKICAgICBpZiAoIXVwcGVyT3BlbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAppbmRleCA2ZTVhNWZjODljY2UuLjdkNDEzMGViNGZmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpCiAgICAg
aWYgKGNhY2hlZFJlc291cmNlKSB7CiAgICAgICAgIC8vIFVzZSBtaW1lIHR5cGUgZnJvbSBjYWNo
ZWQgcmVzb3VyY2UgaW4gY2FzZSB0aGUgb25lIGluIHJlc3BvbnNlIGlzIGVtcHR5LgogICAgICAg
ICBpZiAocmVzb3VyY2VSZXNwb25zZSAmJiByZXNwb25zZS5taW1lVHlwZSgpLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZyhQcm90b2NvbDo6TmV0d29y
azo6UmVzcG9uc2U6Om1pbWVUeXBlS2V5LCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1l
VHlwZSgpKTsKKyAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZyhTdHJpbmcg
eyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6Om1pbWVUeXBlS2V5IH0sIGNhY2hlZFJlc291
cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFk
ZENhY2hlZFJlc291cmNlKHJlcXVlc3RJZCwgY2FjaGVkUmVzb3VyY2UpOwogICAgIH0KIApAQCAt
NTUxLDEyICs1NTEsMTIgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmkKICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgcmVzb3VyY2VS
ZXNwb25zZS0+c2V0U3RyaW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6bWltZVR5cGVL
ZXksIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5taW1lVHlwZSgpKTsKKyAgICAgICAgICAgIHJlc291
cmNlUmVzcG9uc2UtPnNldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9u
c2U6Om1pbWVUeXBlS2V5IH0sIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5taW1lVHlwZSgpKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0SW50ZWdlcihQcm90
b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OnN0YXR1c0tleSwgcHJldmlvdXNSZXNvdXJjZURhdGEt
Pmh0dHBTdGF0dXNDb2RlKCkpOwotICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3Ry
aW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c3RhdHVzVGV4dEtleSwgcHJldmlvdXNS
ZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNUZXh0KCkpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNw
b25zZS0+c2V0SW50ZWdlcihTdHJpbmcgeyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OnN0
YXR1c0tleSB9LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0YXR1c0NvZGUoKSk7CisgICAg
ICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6Ok5l
dHdvcms6OlJlc3BvbnNlOjpzdGF0dXNUZXh0S2V5IH0sIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5o
dHRwU3RhdHVzVGV4dCgpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgcmVzb3VyY2VSZXNw
b25zZS0+c2V0U3RyaW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c291cmNlS2V5LCBQ
cm90b2NvbDo6SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6Ok5ldHdvcms6
OlJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZSkpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNw
b25zZS0+c2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c291
cmNlS2V5IH0sIFByb3RvY29sOjpIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2Nv
bDo6TmV0d29yazo6UmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAppbmRleCBkMWIyNjlmOGZhN2QuLjZkYjUyYjdhZmNmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtNTY4LDMxICs1NjgsMzEgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29va2ll
PiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIHsK
ICAgICBDb29raWUgY29va2llOwogCi0gICAgY29va2llLm5hbWUgPSBjb29raWVPYmplY3QtPmdl
dFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpuYW1lS2V5KTsKKyAgICBjb29raWUubmFt
ZSA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29r
aWU6Om5hbWVLZXkgfSk7CiAgICAgaWYgKCFjb29raWUubmFtZSkgewogICAgICAgICBlcnJvclN0
cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgbmFtZSBpbiBnaXZlbiBjb29raWUiOwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGNvb2tpZS52YWx1ZSA9IGNv
b2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnZhbHVlS2V5KTsK
KyAgICBjb29raWUudmFsdWUgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90
b2NvbDo6UGFnZTo6Q29va2llOjp2YWx1ZUtleSB9KTsKICAgICBpZiAoIWNvb2tpZS52YWx1ZSkg
ewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgdmFsdWUgaW4g
Z2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICBjb29raWUuZG9tYWluID0gY29va2llT2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6OlBhZ2U6
OkNvb2tpZTo6ZG9tYWluS2V5KTsKKyAgICBjb29raWUuZG9tYWluID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6ZG9tYWluS2V5IH0pOwog
ICAgIGlmICghY29va2llLmRvbWFpbikgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlk
IHZhbHVlIGZvciBrZXkgZG9tYWluIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgY29va2llLnBhdGggPSBjb29raWVPYmplY3QtPmdl
dFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpwYXRoS2V5KTsKKyAgICBjb29raWUucGF0
aCA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29r
aWU6OnBhdGhLZXkgfSk7CiAgICAgaWYgKCFjb29raWUucGF0aCkgewogICAgICAgICBlcnJvclN0
cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgcGF0aCBpbiBnaXZlbiBjb29raWUiOwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGF1dG8gaHR0cE9ubHkgPSBj
b29raWVPYmplY3QtPmdldEJvb2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6aHR0cE9ubHlL
ZXkpOworICAgIGF1dG8gaHR0cE9ubHkgPSBjb29raWVPYmplY3QtPmdldEJvb2xlYW4oU3RyaW5n
IHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6aHR0cE9ubHlLZXkgfSk7CiAgICAgaWYgKCFodHRw
T25seSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgaHR0
cE9ubHkgaW4gZ2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTYwMCw3ICs2MDAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2ll
T2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogCiAgICAgY29va2llLmh0
dHBPbmx5ID0gKmh0dHBPbmx5OwogCi0gICAgYXV0byBzZWN1cmUgPSBjb29raWVPYmplY3QtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6c2VjdXJlS2V5KTsKKyAgICBhdXRvIHNl
Y3VyZSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6
Q29va2llOjpzZWN1cmVLZXkgfSk7CiAgICAgaWYgKCFzZWN1cmUpIHsKICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNlY3VyZSBpbiBnaXZlbiBjb29raWUiOwog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjA4LDggKzYwOCw4IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiBlcnJvclN0cmluCiAKICAgICBjb29raWUuc2VjdXJlID0gKnNlY3VyZTsKIAotICAgIGF1
dG8gc2Vzc2lvbiA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6UGFnZTo6Q29v
a2llOjpzZXNzaW9uS2V5KTsKLSAgICBjb29raWUuZXhwaXJlcyA9IGNvb2tpZU9iamVjdC0+Z2V0
RG91YmxlKFByb3RvY29sOjpQYWdlOjpDb29raWU6OmV4cGlyZXNLZXkpOworICAgIGF1dG8gc2Vz
c2lvbiA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6
Q29va2llOjpzZXNzaW9uS2V5IH0pOworICAgIGNvb2tpZS5leHBpcmVzID0gY29va2llT2JqZWN0
LT5nZXREb3VibGUoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6ZXhwaXJlc0tleSB9
KTsKICAgICBpZiAoIXNlc3Npb24gJiYgIWNvb2tpZS5leHBpcmVzKSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBleHBpcmVzIGluIGdpdmVuIGNvb2tpZSI7
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC02MTcsNyArNjE3LDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW4KIAogICAgIGNvb2tpZS5zZXNzaW9uID0gKnNlc3Npb247CiAKLSAg
ICBhdXRvIHNhbWVTaXRlU3RyaW5nID0gY29va2llT2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6
OlBhZ2U6OkNvb2tpZTo6c2FtZVNpdGVLZXkpOworICAgIGF1dG8gc2FtZVNpdGVTdHJpbmcgPSBj
b29raWVPYmplY3QtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6Q29va2llOjpz
YW1lU2l0ZUtleSB9KTsKICAgICBpZiAoIXNhbWVTaXRlU3RyaW5nKSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBnaXZlbiBjb29raWUi
OwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXgg
OTk4OGVhOTVmM2YxLi41N2ZhYmU2YmY4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNzQ0
LDcgKzc0NCw3IEBAIHN0YXRpYyBQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZSB0b1Byb3Rv
Y29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmFkZFJlY29yZFRvVGltZWxpbmUoUmVmPEpTT046Ok9iamVjdD4mJiByZWNvcmQsIFRpbWVs
aW5lUmVjb3JkVHlwZSB0eXBlKQogewotICAgIHJlY29yZC0+c2V0U3RyaW5nKFByb3RvY29sOjpU
aW1lbGluZTo6VGltZWxpbmVFdmVudDo6dHlwZUtleSwgUHJvdG9jb2w6OkhlbHBlcnM6OmdldEVu
dW1Db25zdGFudFZhbHVlKHRvUHJvdG9jb2wodHlwZSkpKTsKKyAgICByZWNvcmQtPnNldFN0cmlu
ZyhTdHJpbmcgeyBQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OnR5cGVLZXkgfSwg
UHJvdG9jb2w6OkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKHRvUHJvdG9jb2wodHlwZSkp
KTsKIAogICAgIGlmIChtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBGSVhN
RTogcnVudGltZUNhc3QgaXMgYSBoYWNrLiBXZSBkbyBpdCBiZWNhdXNlIHdlIGNhbid0IGJ1aWxk
IFRpbWVsaW5lRXZlbnQgZGlyZWN0bHkgbm93LgpAQCAtNzc0LDkgKzc3NCw5IEBAIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0RnJhbWVJZGVudGlmaWVyKEpTT046Ok9iamVjdCogcmVj
b3JkLCBGcmFtZSogZnJhCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxl
dGVSZWNvcmRFbnRyeShjb25zdCBUaW1lbGluZVJlY29yZEVudHJ5JiBlbnRyeSkKIHsKLSAgICBl
bnRyeS5yZWNvcmQtPnNldE9iamVjdChQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6
OmRhdGFLZXksIGVudHJ5LmRhdGEuY29weVJlZigpKTsKKyAgICBlbnRyeS5yZWNvcmQtPnNldE9i
amVjdChTdHJpbmcgeyBQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmRhdGFLZXkg
fSwgZW50cnkuZGF0YS5jb3B5UmVmKCkpOwogICAgIGlmIChlbnRyeS5jaGlsZHJlbikKLSAgICAg
ICAgZW50cnkucmVjb3JkLT5zZXRBcnJheShQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZl
bnQ6OmNoaWxkcmVuS2V5LCAqZW50cnkuY2hpbGRyZW4pOworICAgICAgICBlbnRyeS5yZWNvcmQt
PnNldEFycmF5KFN0cmluZyB7IFByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6Y2hp
bGRyZW5LZXkgfSwgKmVudHJ5LmNoaWxkcmVuKTsKICAgICBlbnRyeS5yZWNvcmQtPnNldERvdWJs
ZSgiZW5kVGltZSJfcywgdGltZXN0YW1wKCkpOwogICAgIGFkZFJlY29yZFRvVGltZWxpbmUoZW50
cnkucmVjb3JkLmNvcHlSZWYoKSwgZW50cnkudHlwZSk7CiB9CkBAIC04MDEsNyArODAxLDcgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGlt
ZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFwcGVu
ZFJlY29yZChSZWY8SlNPTjo6T2JqZWN0PiYmIGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBl
LCBib29sIGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1lKiBmcmFtZSkKIHsKICAgICBSZWY8SlNPTjo6
T2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNv
cmQodGltZXN0YW1wKCksIGNhcHR1cmVDYWxsU3RhY2sgPyBtX21heENhbGxTdGFja0RlcHRoIDog
MCk7Ci0gICAgcmVjb3JkLT5zZXRPYmplY3QoUHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2
ZW50OjpkYXRhS2V5LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdChTdHJp
bmcgeyBQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmRhdGFLZXkgfSwgV1RGTW92
ZShkYXRhKSk7CiAgICAgc2V0RnJhbWVJZGVudGlmaWVyKCZyZWNvcmQuZ2V0KCksIGZyYW1lKTsK
ICAgICBhZGRSZWNvcmRUb1RpbWVsaW5lKFdURk1vdmUocmVjb3JkKSwgdHlwZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcAppbmRl
eCA3NGJkMTI5ZjFjODEuLjM2ZTU4YzcxNGFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBjcm9zc09yaWdpbk9wZW5l
clBvbGljeVRvU3RyaW5nKGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWUmIGNvb3Ap
CitzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBjcm9zc09yaWdpbk9wZW5lclBvbGljeVRv
U3RyaW5nKGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWUmIGNvb3ApCiB7CiAgICAg
c3dpdGNoIChjb29wKSB7CiAgICAgY2FzZSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpT
YW1lT3JpZ2luOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXgg
Y2VlODJhM2YwNzEzLi5iYzA5OTJmNGQyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcApAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Q
b3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAg
ICAgICAgIHVybC5zZXRRdWVyeShtYWtlU3RyaW5nKHF1ZXJ5LCAnJicsIGJvZHkpKTsKIH0KIAot
QVNDSUlMaXRlcmFsIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjptZXRob2RTdHJpbmcoTWV0
aG9kIG1ldGhvZCwgYm9vbCBkaWFsb2dFbGVtZW50RW5hYmxlZCkKK0FTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGggRm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6Om1ldGhvZFN0cmluZyhNZXRob2QgbWV0
aG9kLCBib29sIGRpYWxvZ0VsZW1lbnRFbmFibGVkKQogewogICAgIGlmIChkaWFsb2dFbGVtZW50
RW5hYmxlZCAmJiBtZXRob2QgPT0gTWV0aG9kOjpEaWFsb2cpCiAgICAgICAgIHJldHVybiAiZGlh
bG9nIl9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAppbmRleCBlMGM0OGVm
MWU0M2EuLmI3ZDQzMzhkMGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zv
cm1TdWJtaXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICBNZXRob2QgbWV0aG9kKCkgY29u
c3QgeyByZXR1cm4gbV9tZXRob2Q7IH0KICAgICAgICAgc3RhdGljIE1ldGhvZCBwYXJzZU1ldGhv
ZFR5cGUoY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgICAgIHZvaWQgdXBkYXRlTWV0aG9kVHlw
ZShjb25zdCBTdHJpbmcmLCBib29sKTsKLSAgICAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBtZXRo
b2RTdHJpbmcoTWV0aG9kLCBib29sKTsKKyAgICAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGggbWV0aG9kU3RyaW5nKE1ldGhvZCwgYm9vbCk7CiAKICAgICAgICAgY29uc3QgU3RyaW5n
JiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQogICAgICAgICB2b2lkIHBhcnNl
QWN0aW9uKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcApp
bmRleCA0YTExNDQyNWUxMTYuLjBiNmY3ODI3Mzk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dFBhcnNlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYKICAg
ICBib29sIGFsbG93RmFsbGJhY2tOYW1lc3BhY2VPdXRzaWRlTWFuaWZlc3RQYXRoID0gZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWFuaWZlc3RNSU1FVHlwZSwgY2FjaGVNYW5pZmVzdE1J
TUVUeXBlKTsKICAgICBhdXRvIG1hbmlmZXN0UGF0aCA9IFdlYkNvcmU6Om1hbmlmZXN0UGF0aCht
YW5pZmVzdFVSTCk7CiAKLSAgICBhdXRvIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVNYW5pZmVz
dE1JTUVUeXBlKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CisgICAg
YXV0byBtYW5pZmVzdFN0cmluZyA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoOjpmcm9tTGl0ZXJhbFVuc2FmZShjYWNoZU1hbmlmZXN0TUlNRVR5cGUs
IHNpemVvZihjYWNoZU1hbmlmZXN0TUlNRVR5cGUpIC0gMSksICJVVEYtOCIpLT5kZWNvZGVBbmRG
bHVzaChkYXRhLCBsZW5ndGgpOwogCiAgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2lu
ZyhtYW5pZmVzdFN0cmluZywgWyZdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEFwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdD4gewogICAgICAgICB1c2luZyBDaGFyYWN0ZXJUeXBlID0gdHlw
ZW5hbWUgZGVjbHR5cGUoYnVmZmVyKTo6Q2hhcmFjdGVyVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKaW5kZXggMmFl
NzkzMGY2NmMxLi4zMWFhM2Q5OTI4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGNv
bnN0IFN0cmluZyYgZG9tYWluKQogICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldERvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKGRvbWFpbik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgY29uc3RleHByIEFTQ0lJ
TGl0ZXJhbCBhY2NlcHRIZWFkZXJWYWx1ZUZvckltYWdlUmVzb3VyY2UoYm9vbCBzdXBwb3J0c1Zp
ZGVvSW1hZ2UpCitzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IGFjY2VwdEhlYWRlclZhbHVlRm9ySW1hZ2VSZXNvdXJjZShib29sIHN1cHBvcnRzVmlkZW9JbWFn
ZSkKIHsKICNpZiBIQVZFKFdFQlApIHx8IFVTRShXRUJQKQogICAgICNkZWZpbmUgV0VCUF9IRUFE
RVJfUEFSVCAiaW1hZ2Uvd2VicCwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rl
YnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCmluZGV4IDdiM2VjNzhmM2RhZi4uM2Q3MDQ3ZTg0NTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgTm9u
RmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgcGFnZU92
ZXJsYXksIEdyYXBoaWNzCiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbiksIDAsIDApOwogICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwogCi0gICAgYXV0byBkcmF3
TGVnZW5kID0gWyZdIChjb25zdCBDb2xvciYgY29sb3IsIEFTQ0lJTGl0ZXJhbCB0ZXh0KSB7Cisg
ICAgYXV0byBkcmF3TGVnZW5kID0gWyZdIChjb25zdCBDb2xvciYgY29sb3IsIEFTQ0lJTGl0ZXJh
bFdpdGhMZW5ndGggdGV4dCkgewogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7
CiAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QobGVnZW5kUmVjdCk7CiAgICAgICAgIGRyYXdSaWdo
dEFsaWduZWRUZXh0KHRleHQsIGNvbnRleHQsIGZvbnQsIGxlZ2VuZFJlY3QubG9jYXRpb24oKSk7
CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6
OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICB9OwogCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBhdXRvIGRyYXdFdmVudExlZ2VuZCA9IFsmXSAo
QVNDSUlMaXRlcmFsIGNvbG9yKSB7CisgICAgYXV0byBkcmF3RXZlbnRMZWdlbmQgPSBbJl0gKEFT
Q0lJTGl0ZXJhbFdpdGhMZW5ndGggY29sb3IpIHsKICAgICAgICAgZHJhd0xlZ2VuZChjb2xvcnMu
Z2V0KFN0cmluZ1ZpZXcgeyBjb2xvciB9KSwgY29sb3IpOwogICAgIH07CiAgICAgZHJhd0V2ZW50
TGVnZW5kKCJ0b3VjaHN0YXJ0Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAppbmRleCA0
MDJmNGZhYWJiMzYuLjNjZTVmN2U5MjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcApA
QCAtNDU5LDEzICs0NTksMTMgQEAgRnJhbWUmIEZyYW1lVHJlZTo6dG9wKCkgY29uc3QKICAgICBy
ZXR1cm4gKmZyYW1lOwogfQogCi1BU0NJSUxpdGVyYWwgYmxhbmtUYXJnZXRGcmFtZU5hbWUoKQor
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBibGFua1RhcmdldEZyYW1lTmFtZSgpCiB7CiAgICAgcmV0
dXJuICJfYmxhbmsiX3M7CiB9CiAKIC8vIEZJWE1FOiBJcyBpdCBpbXBvcnRhbnQgdG8gaGF2ZSB0
aGlzPyBDYW4ndCB3ZSBqdXN0IHVzZSB0aGUgZW1wdHkgc3RyaW5nIGV2ZXJ5d2hlcmUgdGhpcyBp
cyB1c2VkLCBpbnN0ZWFkPwotQVNDSUlMaXRlcmFsIHNlbGZUYXJnZXRGcmFtZU5hbWUoKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBzZWxmVGFyZ2V0RnJhbWVOYW1lKCkKIHsKICAgICByZXR1cm4g
Il9zZWxmIl9zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggNjQwY2M5ZTg3M2U4Li42
ZDhlZTc5N2Y3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaApAQCAtMTA3LDggKzEwNyw4IEBA
IHByaXZhdGU6CiAgICAgbXV0YWJsZSB1aW50NjRfdCBtX2ZyYW1lSURHZW5lcmF0b3IgeyAwIH07
CiB9OwogCi1BU0NJSUxpdGVyYWwgYmxhbmtUYXJnZXRGcmFtZU5hbWUoKTsKLUFTQ0lJTGl0ZXJh
bCBzZWxmVGFyZ2V0RnJhbWVOYW1lKCk7CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGJsYW5rVGFy
Z2V0RnJhbWVOYW1lKCk7CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNlbGZUYXJnZXRGcmFtZU5h
bWUoKTsKIAogYm9vbCBpc0JsYW5rVGFyZ2V0RnJhbWVOYW1lKFN0cmluZ1ZpZXcpOwogYm9vbCBp
c1BhcmVudFRhcmdldEZyYW1lTmFtZShTdHJpbmdWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZUVudHJ5LmgKaW5kZXggZjkyYzJmMjA0MDY3Li5kZDNlYjgwZGE2MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHBlcmZvcm1hbmNlRW50cnlUeXBlKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZW50cnlUeXBlKCkgY29uc3QgPSAwOwog
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gcGFyc2VFbnRyeVR5cGVTdHJpbmcoY29u
c3QgU3RyaW5nJiBlbnRyeVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlTWFyay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsu
aAppbmRleCA4N2E1NTg1ZDFiZTMuLjk2ZTM0NTkxNGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTWFyay5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgflBlcmZvcm1h
bmNlTWFyaygpOwogCiAgICAgVHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIFR5cGU6Ok1hcms7IH0KLSAgICBBU0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIm1hcmsiX3M7IH0KKyAgICBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJtYXJrIl9zOyB9CiAKICAgICBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3NlcmlhbGl6ZWREZXRhaWw7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1lYXN1cmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VNZWFzdXJlLmgKaW5kZXggMmQyYWEzZWUxMjk1Li4yYTU0NWNj
NmY3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNZWFzdXJl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1lYXN1cmUuaApAQCAtNDks
NyArNDksNyBAQCBwcml2YXRlOgogICAgIH5QZXJmb3JtYW5jZU1lYXN1cmUoKTsKIAogICAgIFR5
cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpNZWFz
dXJlOyB9Ci0gICAgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJtZWFzdXJlIl9zOyB9CisgICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAibWVhc3VyZSJfczsgfQogCiAgICAgUmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbV9zZXJpYWxpemVkRGV0YWlsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZy5oCmluZGV4IGM3YzFmMzZiNGM5ZS4u
YzAzYzA0YWQ5MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TmF2aWdhdGlvblRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uVGltaW5nLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH5QZXJmb3Jt
YW5jZU5hdmlnYXRpb25UaW1pbmcoKTsKIAogICAgIFR5cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpOYXZpZ2F0aW9uOyB9Ci0gICAgQVNDSUlMaXRl
cmFsIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJuYXZpZ2F0aW9uIl9zOyB9Cisg
ICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAibmF2aWdhdGlvbiJfczsgfQogCiAgICAgZG91YmxlIHVubG9hZEV2ZW50U3RhcnQoKSBjb25z
dDsKICAgICBkb3VibGUgdW5sb2FkRXZlbnRFbmQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VQYWludFRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZVBhaW50VGltaW5nLmgKaW5kZXggNzBmODA4NWY5Y2M3Li42MDllMzlh
ODVlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VQYWludFRp
bWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VQYWludFRpbWluZy5o
CkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIEFTQ0lJTGl0
ZXJhbCBlbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAicGFpbnQiX3M7IH0KKyAgICBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJw
YWludCJfczsgfQogICAgIFR5cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBUeXBlOjpQYWludDsgfQogCiAgICAgflBlcmZvcm1hbmNlUGFpbnRUaW1pbmcoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRp
bWluZy5oCmluZGV4IDY5NDM1ZWZiMDhhNi4uYTI0ZWVmMjNlNjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaApAQCAtNjgsNyArNjgsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFJlZjxQZXJmb3JtYW5jZVNlcnZlclRpbWluZz4+
JiBzZXJ2ZXJUaW1pbmcoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlclRpbWluZzsgfQogCiAgICAg
VHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFR5cGU6
OlJlc291cmNlOyB9Ci0gICAgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJyZXNvdXJjZSJfczsgfQorICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZW50
cnlUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gInJlc291cmNlIl9zOyB9CiAKIHByb3Rl
Y3RlZDoKICAgICBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKE1vbm90b25pY1RpbWUgdGltZU9y
aWdpbiwgUmVzb3VyY2VUaW1pbmcmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKaW5kZXggNWEzNGNlYTA1NGFjLi4zMzgwNjFjOTY0NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgdXNpbmcgQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uID0gU3Bh
bjxjb25zdCBBU0NJSUxpdGVyYWw+ICgqKSgpOwogc3RhdGljIHZvaWQgYWRkKFVSTFNjaGVtZXNN
YXAmIHNldCwgQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIGZvciAo
YXV0byYgc2NoZW1lIDogZnVuY3Rpb24oKSkKLSAgICAgICAgc2V0LmFkZChzY2hlbWUpOworICAg
ICAgICBzZXQuYWRkKFN0cmluZyB7IHNjaGVtZSB9KTsKIH0KIAogc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVSTFNjaGVtZXNNYXA+IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChBU0NJSUxpdGVy
YWxTcGFuRnVuY3Rpb24gZnVuY3Rpb24pCkBAIC0xMzYsMTUgKzEzNiwxNSBAQCBzdGF0aWMgVVJM
U2NoZW1lc01hcCYgZGlzcGxheUlzb2xhdGVkVVJMU2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NL
KHNjaGVtZVJlZ2lzdAogc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2Vj
dXJlU2NoZW1lcygpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMg
ewotICAgICAgICAiaHR0cHMiX3MsCi0gICAgICAgICJhYm91dCJfcywKLSAgICAgICAgImRhdGEi
X3MsCi0gICAgICAgICJ3c3MiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4o
Imh0dHBzIl9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiYWJvdXQiX3Mp
LAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJkYXRhIl9zKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigid3NzIl9zKSwKICNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkKLSAgICAgICAgInJlc291cmNlIl9zLAorICAgICAgICBzdGF0aWNfY2Fz
dDxBU0NJSUxpdGVyYWw+KCJyZXNvdXJjZSJfcyksCiAjZW5kaWYKICNpZiBFTkFCTEUoUERGSlMp
Ci0gICAgICAgICJ3ZWJraXQtcGRmanMtdmlld2VyIl9zLAorICAgICAgICBzdGF0aWNfY2FzdDxB
U0NJSUxpdGVyYWw+KCJ3ZWJraXQtcGRmanMtdmlld2VyIl9zKSwKICNlbmRpZgogICAgIH07CiAg
ICAgcmV0dXJuIHNjaGVtZXM7CkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIFVSTFNjaGVtZXNN
YXAmIHNlY3VyZVNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2sp
CiAKIHN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpblNjaGVtZXNXaXRoVW5p
cXVlT3JpZ2lucygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMg
eworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxBU0NJSUxpdGVyYWwsIDM+IHNjaGVt
ZXMgewogICAgICAgICAiYWJvdXQiX3MsCiAgICAgICAgICJqYXZhc2NyaXB0Il9zLAogICAgICAg
ICAvLyBUaGlzIGlzIGFuIGludGVudGlvbmFsIGRpZmZlcmVuY2UgZnJvbSB0aGUgYmVoYXZpb3Ig
dGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBjYWxscyBmb3IuCkBAIC0xNzgsNyArMTc4LDcgQEAgc3Rh
dGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpIFdURl9SRVFVSVJF
U19MT0NLKHNjaGVtZVJlZ2lzdHIKIAogc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBi
dWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMoKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjphcnJheSBzY2hlbWVzIHsgImFib3V0Il9zIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMT4gc2NoZW1lcyB7ICJhYm91dCJfcyB9OwogICAgIHJldHVy
biBzY2hlbWVzOwogfQogCkBAIC0xOTgsNyArMTk4LDcgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAm
IHNjaGVtZXNGb3JiaWRkZW5Gcm9tRG9tYWluUmVsYXhhdGlvbigpCiAKIHN0YXRpYyBTcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1l
cygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgeyAiYmxvYiJf
cyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxBU0NJSUxpdGVyYWwsIDE+IHNj
aGVtZXMgeyAiYmxvYiJfcyB9OwogICAgIHJldHVybiBzY2hlbWVzOwogfQogCkBAIC0yNjMsNyAr
MjYzLDcgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNj
ZXNzSW5Qcml2YXRlQnJvd3NpbmcoKQogCiBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+
IGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMoKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjphcnJheSBzY2hlbWVzIHsgImh0dHAiX3MsICJodHRwcyJfcyB9OworICAgIHN0YXRpYyBjb25z
dGV4cHIgc3RkOjphcnJheTxBU0NJSUxpdGVyYWwsIDI+IHNjaGVtZXMgeyAiaHR0cCJfcywgImh0
dHBzIl9zIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggNWFjYjI5Y2ZiNDU5Li4zYzFlNzBkZjNh
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBA
IC0yMTgsNyArMjE4LDcgQEAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUkKICAgICAgICAgLy8gVGhp
cyBjYW4gcmVzdWx0IGluIGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxpdGllcy4KICAg
ICAgICAgfTsKICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogc3VwcG9ydGVkSmF2YVNjcmlwdE1J
TUVUeXBlQXJyYXkpCi0gICAgICAgICAgICB0eXBlcy5hZGQodHlwZS5saXRlcmFsKTsKKyAgICAg
ICAgICAgIHR5cGVzLmFkZChTdHJpbmcgeyB0eXBlLmxpdGVyYWwgfSk7CiAjaWYgRU5BQkxFKFdF
Ql9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgICAgIEFyY2hpdmVGYWN0b3J5OjpyZWdp
c3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcyh0eXBlcyk7CiAjZW5kaWYKQEAgLTM2NCw3ICszNjQs
NyBAQCBzdGF0aWMgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+LCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBjb21tb25NaQogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBj
b21tb25NZWRpYVR5cGVzKSB7CiAgICAgICAgICAgICBBU0NJSUxpdGVyYWwgdHlwZSA9IHBhaXIu
dHlwZTsKICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCBleHRlbnNpb24gPSBwYWlyLmV4dGVuc2lv
bjsKLSAgICAgICAgICAgIG1hcC5lbnN1cmUoZXh0ZW5zaW9uLCBbdHlwZSwgZXh0ZW5zaW9uXSB7
CisgICAgICAgICAgICBtYXAuZW5zdXJlKFN0cmluZyB7IGV4dGVuc2lvbiB9LCBbdHlwZSwgZXh0
ZW5zaW9uXSB7CiAgICAgICAgICAgICAgICAgLy8gRmlyc3QgdHlwZSBpbiB0aGUgdmVjdG9yIG11
c3QgYWx3YXlzIGJlIHRoZSBvbmUgZnJvbSBtaW1lVHlwZUZvckV4dGVuc2lvbiwKICAgICAgICAg
ICAgICAgICAvLyBzbyB3ZSBjYW4gdXNlIHRoZSBtYXAgd2l0aG91dCBhbHNvIGNhbGxpbmcgbWlt
ZVR5cGVGb3JFeHRlbnNpb24gZWFjaCB0aW1lLgogICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHN5bm9ueW1zOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHN0YXRpYyBTdHJpbmcgbm9ybWFsaXpl
ZEltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB9OwogICAgIHN0YXRp
YyBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgYXNzb2NpYXRpb25NYXAgeyBtaW1lVHlwZUFzc29j
aWF0aW9uQXJyYXkgfTsKICAgICBhdXRvIG5vcm1hbGl6ZWRUeXBlID0gYXNzb2NpYXRpb25NYXAu
dHJ5R2V0KG1pbWVUeXBlKTsKLSAgICByZXR1cm4gbm9ybWFsaXplZFR5cGUgPyAqbm9ybWFsaXpl
ZFR5cGUgOiBtaW1lVHlwZTsKKyAgICByZXR1cm4gbm9ybWFsaXplZFR5cGUgPyBTdHJpbmcgeyAq
bm9ybWFsaXplZFR5cGUgfSA6IG1pbWVUeXBlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuY3BwCmluZGV4IDE2
Nzk5MTFiNTg3Zi4uMDJkODhlOTQ2YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9v
bCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKQogCiBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJh
bD4gYWd4Q29tcGlsZXJTZXJ2aWNlcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFy
cmF5IHNlcnZpY2VzIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8QVNDSUlMaXRl
cmFsLCAyPiBzZXJ2aWNlcyB7CiAgICAgICAgICJjb20uYXBwbGUuQUdYQ29tcGlsZXJTZXJ2aWNl
Il9zLAogICAgICAgICAiY29tLmFwcGxlLkFHWENvbXBpbGVyU2VydmljZS1TMkE4Il9zCiAgICAg
fTsKQEAgLTY5LDcgKzY5LDcgQEAgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGFneENvbXBpbGVy
U2VydmljZXMoKQogCiBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYWd4Q29tcGlsZXJDbGFzc2Vz
KCkKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgY2xhc3NlcyB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMTA+IGNsYXNzZXMgewogICAg
ICAgICAiQUdYQ29tbWFuZFF1ZXVlIl9zLAogICAgICAgICAiQUdYRGV2aWNlIl9zLAogICAgICAg
ICAiQUdYU2hhcmVkVXNlckNsaWVudCJfcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDEyY2UzZTk2ZGQzMS4uM2EzYzkxMDdjMzY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAg
LTI0Myw3ICsyNDMsNyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNhY2hlZEZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RAogICAgICAgICAgICAgLy8g
V2Ugd2VyZSB1bmFibGUgdG8gZmluZCBhIGZvbnQuIFdlIGhhdmUgYSBzbWFsbCBzZXQgb2YgZm9u
dHMgdGhhdCB3ZSBhbGlhcyB0byBvdGhlciBuYW1lcywKICAgICAgICAgICAgIC8vIGUuZy4sIEFy
aWFsL0hlbHZldGljYSwgQ291cmllci9Db3VyaWVyIE5ldywgZXRjLiBUcnkgbG9va2luZyB1cCB0
aGUgZm9udCB1bmRlciB0aGUgYWxpYXNlZCBuYW1lLgogICAgICAgICAgICAgaWYgKGF1dG8gYWx0
ZXJuYXRlTmFtZSA9IGFsdGVybmF0ZUZhbWlseU5hbWUoZmFtaWx5TmFtZSkpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvKiBhbHRlcm5hdGVEYXRhID0gY2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250
RGVzY3JpcHRpb24sICphbHRlcm5hdGVOYW1lLCBmb250Q3JlYXRpb25Db250ZXh0LCB0cnVlKTsK
KyAgICAgICAgICAgICAgICBhdXRvKiBhbHRlcm5hdGVEYXRhID0gY2FjaGVkRm9udFBsYXRmb3Jt
RGF0YShmb250RGVzY3JpcHRpb24sIFN0cmluZyB7ICphbHRlcm5hdGVOYW1lIH0sIGZvbnRDcmVh
dGlvbkNvbnRleHQsIHRydWUpOwogICAgICAgICAgICAgICAgIC8vIExvb2sgdXAgdGhlIGtleSBp
biB0aGUgaGFzaCB0YWJsZSBhZ2FpbiBhcyB0aGUgcHJldmlvdXMgaXRlcmF0b3IgbWF5IGhhdmUK
ICAgICAgICAgICAgICAgICAvLyBiZWVuIGludmFsaWRhdGVkIGJ5IHRoZSByZWN1cnNpdmUgY2Fs
bCB0byBjYWNoZWRGb250UGxhdGZvcm1EYXRhKCkuCiAgICAgICAgICAgICAgICAgaXQgPSBtX2Zv
bnREYXRhQ2FjaGVzLT5wbGF0Zm9ybURhdGEuZmluZChrZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVU
eXBlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbQppbmRleCBkODQ4MDVmMjM1MWUuLmEzY2Vk
MDMxMGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2Fj
aGUubW0KQEAgLTE1Miw3ICsxNTIsOCBAQCB2b2lkIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjppbml0
aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSAogI2lmIEVO
QUJMRShXRUJNX0ZPUk1BVF9SRUFERVIpCiAgICAgaWYgKFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OmlzV2ViTUZvcm1hdFJlYWRlckF2YWlsYWJsZSgpKSB7CiAgICAgICAgIGF1dG8gdHlwZXMgPSBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRNSU1FVHlwZXMoKTsKLSAgICAgICAgY2Fj
aGUuYWRkKHR5cGVzLmJlZ2luKCksIHR5cGVzLmVuZCgpKTsKKyAgICAgICAgZm9yIChhdXRvJiB0
eXBlIDogdHlwZXMpCisgICAgICAgICAgICBjYWNoZS5hZGQoU3RyaW5nIHsgdHlwZSB9KTsKICAg
ICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYjg2NmM3MTcxOGNiLi5mYzY3NGI5YWVj
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHN0YXRpYyBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5z
Zm9ybU9wCiAgICAgfQogfQogCi1zdGF0aWMgQVNDSUlMaXRlcmFsIHByb3BlcnR5SWRUb1N0cmlu
ZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCitzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExl
bmd0aCBwcm9wZXJ0eUlkVG9TdHJpbmcoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQogewog
ICAgIHN3aXRjaCAocHJvcGVydHkpIHsKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlUcmFuc2xh
dGU6CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBwcm9wZXJ0eUlkVG9T
dHJpbmcoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpu
dWxsKCk7CiB9CiAKIHN0YXRpYyBib29sIGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmlt
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggMTU3M2UxNjYwNDMxLi5hZGEw
MjM1MWIxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMzcwLDcgKzM3
MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
ICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAgICAgR0xfRW5hYmxlKEdyYXBoaWNzQ29udGV4
dEdMOjpQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKLSAgICBWZWN0b3I8QVNDSUlM
aXRlcmFsLCA0PiByZXF1aXJlZEV4dGVuc2lvbnM7CisgICAgVmVjdG9yPEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGgsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKICAgICBpZiAobV9pc0ZvcldlYkdMMikg
ewogICAgICAgICAvLyBGb3IgV2ViR0wgMi4wIG9jY2x1c2lvbiBxdWVyaWVzIHRvIHdvcmsuCiAg
ICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlf
Ym9vbGVhbiJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IGQ4ZTY2
MDdmODljZC4uY2FkMjVjOGIxMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgTG9nQXJndW1lbnQ7CiAKIHRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PHdlYm06
OlRyYWNrVHlwZT4gewotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdG9TdHJpbmcod2VibTo6VHJh
Y2tUeXBlIHR5cGUpCisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdG9TdHJpbmco
d2VibTo6VHJhY2tUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICAgICAgY2FzZSB3ZWJtOjpUcmFja1R5cGU6OmtWaWRlbzogcmV0dXJuICJWaWRlbyJfczsKQEAg
LTczLDcgKzczLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8d2VibTo6VHJhY2tU
eXBlPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDx3ZWJtOjpJZD4gewot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdG9TdHJpbmcod2VibTo6SWQgaWQpCisgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdG9TdHJpbmcod2VibTo6SWQgaWQpCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKGlkKSB7CiAgICAgICAgIGNhc2Ugd2VibTo6SWQ6OmtFYm1sOiByZXR1cm4g
IkVibWwiX3M7CkBAIC01MDMsMTAgKzUwMywxMCBAQCBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4g
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c3VwcG9ydGVkTUlNRVR5cGVzKCkKICNlbHNlCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHR5cGVzIHsKICNpZiBFTkFCTEUoVlA5KQotICAg
ICAgICAidmlkZW8vd2VibSJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigi
dmlkZW8vd2VibSJfcyksCiAjZW5kaWYKICNpZiBFTkFCTEUoVk9SQklTKSB8fCBFTkFCTEUoT1BV
UykKLSAgICAgICAgImF1ZGlvL3dlYm0iX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0
ZXJhbD4oImF1ZGlvL3dlYm0iX3MpLAogI2VuZGlmCiAgICAgfTsKICAgICByZXR1cm4gdHlwZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRnVuY3Rpb24uY3BwCmluZGV4IDYyOWY3MzRmYTU4YS4uYTA2ODI2NmU5N2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckZ1bmN0aW9uLmNwcApAQCAtNjcsNyArNjcsNyBAQCBBdG9tU3RyaW5nIEZpbHRl
ckZ1bmN0aW9uOjpmaWx0ZXJOYW1lKFR5cGUgZmlsdGVyVHlwZSkKICAgICBzdGF0aWMgY29uc3Rl
eHByIFNvcnRlZEFycmF5TWFwIG5hbWVzTWFwIHsgbmFtZXNBcnJheSB9OwogICAgIAogICAgIEFT
U0VSVChuYW1lc01hcC50cnlHZXQoZmlsdGVyVHlwZSkpOwotICAgIHJldHVybiBuYW1lc01hcC5n
ZXQoZmlsdGVyVHlwZSwgIiJfcyk7CisgICAgcmV0dXJuIEF0b21TdHJpbmcgeyBuYW1lc01hcC5n
ZXQoZmlsdGVyVHlwZSwgIiJfcykgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBhMmMyNTBh
YTJiZWYuLjBlNmMyYzJhZTZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KQEAgLTU1Niw3ICs1NTYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCksIG1pbWVUeXBlKTsKKyAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCksIFN0cmluZyB7IG1pbWVUeXBlIH0pOwogICAgIH07CiAKICAgICBW
ZWN0b3I8SW1hZ2VSZWFkaW5nSW5mbywgNj4gdHJhbnNjb2RlZEltYWdlVHlwZXNUb1JlYWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4
IGYzZjg3YTRmN2U5Yi4uMzEwMmI0MzJmNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtOTk1LDcgKzk5NSw3IEBAIFN0cmluZyBu
b3JtYWxpemVIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKQogICAgICAgICAgICAgLy8g
RG9uJ3QgYm90aGVyIGFsbG9jYXRpbmcgYSBuZXcgc3RyaW5nIGlmIGl0J3MgYWxyZWFkeSBhbGwg
dXBwZXJjYXNlLgogICAgICAgICAgICAgaWYgKG1ldGhvZCA9PSB2YWx1ZSkKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgICAgIHJldHVy
biBTdHJpbmcgeyB2YWx1ZSB9OwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBtZXRob2Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5n
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCmlu
ZGV4IDIzNDU1MjViMmM4MC4uMTE3YzRkNDlkMjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJCYWNraW5nLmNwcApAQCAtMzMzOCw3ICszMzM4LDcgQEAgc3Rh
dGljIFJlZlB0cjxQYXR0ZXJuPiBwYXR0ZXJuRm9yRGVzY3JpcHRpb24oUGF0dGVybkRlc2NyaXB0
aW9uIGRlc2NyaXB0aW9uLCBGbG8KICAgICAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZv
bnREZXNjcmlwdGlvbiksIDAsIDApOwogICAgICAgICBmb250LnVwZGF0ZShudWxscHRyKTsKIAot
ICAgICAgICBUZXh0UnVuIHRleHRSdW4gPSBUZXh0UnVuKGRlc2NyaXB0aW9uLm5hbWUpOworICAg
ICAgICBUZXh0UnVuIHRleHRSdW4gPSBUZXh0UnVuKFN0cmluZyB7IGRlc2NyaXB0aW9uLm5hbWUg
fSk7CiAgICAgICAgIGltYWdlQ29udGV4dC5zZXRGaWxsQ29sb3IoZGVzY3JpcHRpb24uZmlsbENv
bG9yKTsKIAogICAgICAgICBjb25zdGV4cHIgZmxvYXQgdGV4dEdhcCA9IDQ7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXggNTY3MGI2YmZhNjdlLi5mMTVhNWE2NDQxMWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTY2MzUsNyArNjYzNSw3IEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IEludGVybmFsczo6c2V0TW9ja01lZGlhU2Vzc2lvbkNvb3JkaW5hdG9y
Q29tbWFuZHNTaG91bGRGYWlsKGJvCiB9CiAjZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NFU1NJT04p
CiAKLWNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgc3RyaW5nKFBhcnRpYWxPcmRlcmluZyBvcmRlcmlu
ZykKK2NvbnN0ZXhwciBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0cmluZyhQYXJ0aWFsT3JkZXJp
bmcgb3JkZXJpbmcpCiB7CiAgICAgaWYgKGlzX2x0KG9yZGVyaW5nKSkKICAgICAgICAgcmV0dXJu
ICJsZXNzIl9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggODk1ZGM5
ZDA4NTUwLi5lNzc1ZTlmM2IxMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNw
cApAQCAtNTIzLDcgKzUyMyw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0Ojpz
ZW5kKEJsb2ImIGJvZHkpCiAgICAgICAgICAgICAvLyBGSVhNRTogV2Ugd291bGQgbGlrZSB0byBz
dXBwb3J0IHBvc3RpbmcgQmxvYnMgdG8gbm9uLWh0dHAgVVJMcyAoZS5nLiBjdXN0b20gVVJMIHNj
aGVtZXMpCiAgICAgICAgICAgICAvLyBidXQgYmVjYXVzZSBvZiB0aGUgYXJjaGl0ZWN0dXJlIG9m
IGJsb2ItaGFuZGxpbmcgdGhhdCB3aWxsIHJlcXVpcmUgYSBmYWlyIGFtb3VudCBvZiB3b3JrLgog
ICAgICAgICAgICAgCi0gICAgICAgICAgICBBU0NJSUxpdGVyYWwgY29uc29sZU1lc3NhZ2UgeyAi
UE9TVCBvZiBhIEJsb2IgdG8gbm9uLUhUVFAgcHJvdG9jb2xzIGluIFhNTEh0dHBSZXF1ZXN0LnNl
bmQoKSBpcyBjdXJyZW50bHkgdW5zdXBwb3J0ZWQuIl9zIH07CisgICAgICAgICAgICBhdXRvIGNv
bnNvbGVNZXNzYWdlID0gIlBPU1Qgb2YgYSBCbG9iIHRvIG5vbi1IVFRQIHByb3RvY29scyBpbiBY
TUxIdHRwUmVxdWVzdC5zZW5kKCkgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkLiJfczsKICAgICAg
ICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2Fn
ZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgY29uc29sZU1lc3NhZ2UpOwogICAg
ICAgICAgICAgCiAgICAgICAgICAgICByZXR1cm4gY3JlYXRlUmVxdWVzdCgpOwpAQCAtNTY1LDcg
KzU2NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBSZXF1ZXN0OjpzZW5kKERPTUZvcm1E
YXRhJiBib2R5KQogCiBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2VuZChBcnJh
eUJ1ZmZlciYgYm9keSkKIHsKLSAgICBBU0NJSUxpdGVyYWwgY29uc29sZU1lc3NhZ2UgeyAiQXJy
YXlCdWZmZXIgaXMgZGVwcmVjYXRlZCBpbiBYTUxIdHRwUmVxdWVzdC5zZW5kKCkuIFVzZSBBcnJh
eUJ1ZmZlclZpZXcgaW5zdGVhZC4iX3MgfTsKKyAgICBhdXRvIGNvbnNvbGVNZXNzYWdlID0gIkFy
cmF5QnVmZmVyIGlzIGRlcHJlY2F0ZWQgaW4gWE1MSHR0cFJlcXVlc3Quc2VuZCgpLiBVc2UgQXJy
YXlCdWZmZXJWaWV3IGluc3RlYWQuIl9zOwogICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6V2Fybmlu
ZywgY29uc29sZU1lc3NhZ2UpOwogICAgIHJldHVybiBzZW5kQnl0ZXNEYXRhKGJvZHkuZGF0YSgp
LCBib2R5LmJ5dGVMZW5ndGgoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhGdW5jdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNw
cAppbmRleCAzMjJlM2JlMGY3NWQuLjA3MjNiZWU2Y2QxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBh
dGhGdW5jdGlvbnMuY3BwCkBAIC03MDksNyArNzA5LDcgQEAgc3RhdGljIE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIEZ1bmN0aW9uTWFwVmFsdWU+IGNyZWF0
ZUYKIAogICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcs
IEZ1bmN0aW9uTWFwVmFsdWU+IG1hcDsKICAgICBmb3IgKGF1dG8mIGZ1bmN0aW9uIDogZnVuY3Rp
b25zKQotICAgICAgICBtYXAuYWRkKGZ1bmN0aW9uLm5hbWUsIGZ1bmN0aW9uLmZ1bmN0aW9uKTsK
KyAgICAgICAgbWFwLmFkZChTdHJpbmcgeyBmdW5jdGlvbi5uYW1lIH0sIGZ1bmN0aW9uLmZ1bmN0
aW9uKTsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWFBhdGhQYXJzZXIuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcApp
bmRleCBlMzE1NjVlYmU3OGQuLmU4ZjljYjljYTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUveG1sL1hQYXRoUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJz
ZXIuY3BwCkBAIC05OCw3ICs5OCw3IEBAIHN0YXRpYyBNZW1vcnlDb21wYWN0TG9va3VwT25seVJv
YmluSG9vZEhhc2hNYXA8U3RyaW5nLCBTdGVwOjpBeGlzPiBjcmVhdGVBeGlzTmFtCiAgICAgfTsK
ICAgICBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBTdGVw
OjpBeGlzPiBtYXA7CiAgICAgZm9yIChhdXRvJiBheGlzTmFtZSA6IGF4aXNOYW1lTGlzdCkKLSAg
ICAgICAgbWFwLmFkZChheGlzTmFtZS5uYW1lLCBheGlzTmFtZS5heGlzKTsKKyAgICAgICAgbWFw
LmFkZChTdHJpbmcgeyBheGlzTmFtZS5uYW1lIH0sIGF4aXNOYW1lLmF4aXMpOwogICAgIHJldHVy
biBtYXA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xh
c3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0Rh
dGFiYXNlU3RvcmUuY3BwCmluZGV4IDUxNmEyZjUwMmNjOS4uNTM0ZGNhZmE0YzY3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2Fk
U3RhdGlzdGljc0RhdGFiYXNlU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAK
QEAgLTI3Miw3ICsyNzIsNyBAQCBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9v
ZEhhc2hNYXA8U3RyaW5nLCBUYWJsZUFuZEluZGV4UGFpcj4mIFJlc291cgogCiBTcGFuPGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNlU3RvcmU6OnNvcnRl
ZFRhYmxlcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNvcnRlZFRhYmxl
cyB7CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMTM+IHNv
cnRlZFRhYmxlcyB7CiAgICAgICAgICJPYnNlcnZlZERvbWFpbnMiX3MsCiAgICAgICAgICJUb3BM
ZXZlbERvbWFpbnMiX3MsCiAgICAgICAgICJTdG9yYWdlQWNjZXNzVW5kZXJUb3BGcmFtZURvbWFp
bnMiX3MsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNl
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGls
aXRpZXMuY3BwCmluZGV4IDE4ZjExZDMzOWUxZS4uNzE5NmM0ZDA0MTc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcApAQCAtMjk4
LDcgKzI5OCw3IEBAIHZvaWQgRGF0YWJhc2VVdGlsaXRpZXM6Om1pZ3JhdGVEYXRhVG9OZXdUYWJs
ZXNJZk5lY2Vzc2FyeSgpCiAKICAgICAvLyBNYWludGFpbiB0aGUgb3JkZXIgb2YgdGFibGVzIHRv
IG1ha2Ugc3VyZSB0aGUgT2JzZXJ2ZWREb21haW5zIHRhYmxlIGlzIGNyZWF0ZWQgZmlyc3QuIE90
aGVyIHRhYmxlcyBoYXZlIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnRzIHJlZmVyZW5jaW5nIGl0Lgog
ICAgIGZvciAoYXV0byYgdGFibGUgOiBzb3J0ZWRUYWJsZXMoKSkgewotICAgICAgICBhdXRvIG1p
Z3JhdGVUYWJsZURhdGEgPSBpbnNlcnREaXN0aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQobV9k
YXRhYmFzZSwgdGFibGUpOworICAgICAgICBhdXRvIG1pZ3JhdGVUYWJsZURhdGEgPSBpbnNlcnRE
aXN0aW5jdFZhbHVlc0luVGFibGVTdGF0ZW1lbnQobV9kYXRhYmFzZSwgU3RyaW5nIHsgdGFibGUg
fSk7CiAgICAgICAgIGlmICghbWlncmF0ZVRhYmxlRGF0YSB8fCBtaWdyYXRlVGFibGVEYXRhLT5z
dGVwKCkgIT0gU1FMSVRFX0RPTkUpIHsKICAgICAgICAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNr
KCk7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcml2YXRlQ2xpY2tNZWFzdXJlbWVu
dCwgIiVwIC0gRGF0YWJhc2VVdGlsaXRpZXM6Om1pZ3JhdGVEYXRhVG9OZXdUYWJsZXNJZk5lY2Vz
c2FyeSAodGFibGUgJXMpIGZhaWxlZCB0byBtaWdyYXRlIHNjaGVtYSwgZXJyb3IgbWVzc2FnZTog
JXMiLCB0aGlzLCB0YWJsZS5jaGFyYWN0ZXJzKCksIG1fZGF0YWJhc2UubGFzdEVycm9yTXNnKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tN
ZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNr
TWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKaW5kZXggYzA5MGNiZTU3MTg0Li5hZGE5MWY4ZDhiMDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xp
Y2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGNvbnN0IE1lbW9y
eUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQ
YWlyPiYgRGF0YWJhCiAKIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBEYXRhYmFzZTo6c29ydGVk
VGFibGVzKCkKIHsKLSAgICBzdGF0aWMgc3RkOjphcnJheSBzb3J0ZWRUYWJsZXMgeworICAgIHN0
YXRpYyBzdGQ6OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMz4gc29ydGVkVGFibGVzIHsKICAgICAgICAg
IlBDTU9ic2VydmVkRG9tYWlucyJfcywKICAgICAgICAgIlVuYXR0cmlidXRlZFByaXZhdGVDbGlj
a01lYXN1cmVtZW50Il9zLAogICAgICAgICAiQXR0cmlidXRlZFByaXZhdGVDbGlja01lYXN1cmVt
ZW50Il9zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2Uv
T3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9z
dG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAppbmRleCAyZmI4YWM1NzhmM2QuLmI3ZWQ1
ZTg0MWNkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdl
L09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCkBAIC00MSw3ICs0MSw3IEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi1zdGF0aWMgY29uc3RleHByIGF1dG8gb3JpZ2luRmlsZU5h
bWUgPSAib3JpZ2luIl9zOworc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgb3JpZ2luRmls
ZU5hbWUgPSAib3JpZ2luIl9zOwogZW51bSBjbGFzcyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3Rv
cmFnZUJ1Y2tldE1vZGUgOiBib29sIHsgQmVzdEVmZm9ydCwgUGVyc2lzdGVudCB9OwogCiBjbGFz
cyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFnZUJ1Y2tldCB7CkBAIC0zOTEsNyArMzkxLDcg
QEAgU3RyaW5nIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0OjpyZXNvbHZlZElE
QlN0b3JhZ2VQYXRoKCkKIAogU3RyaW5nIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpvcmlnaW5GaWxl
SWRlbnRpZmllcigpCiB7Ci0gICAgcmV0dXJuIG9yaWdpbkZpbGVOYW1lOworICAgIHJldHVybiBT
dHJpbmcgeyBvcmlnaW5GaWxlTmFtZSB9OwogfQogCiBzdGF0aWMgUmVmPFF1b3RhTWFuYWdlcj4g
Y3JlYXRlUXVvdGFNYW5hZ2VyKHVpbnQ2NF90IHF1b3RhLCBjb25zdCBTdHJpbmcmIGlkYlN0b3Jh
Z2VQYXRoLCBjb25zdCBTdHJpbmcmIGNhY2hlU3RvcmFnZVBhdGgsIFF1b3RhTWFuYWdlcjo6SW5j
cmVhc2VRdW90YUZ1bmN0aW9uJiYgaW5jcmVhc2VRdW90YUZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcCBiL1NvdXJjZS9XZWJL
aXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGluZy5jcHAKaW5kZXggMGJlMzk1YzFjMzdjLi5lODlj
MjUwNTYyNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmlu
ZGluZy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNw
cApAQCAtMzcsNyArMzcsNyBAQAogCiBuYW1lc3BhY2UgSVBDIHsKIAotc3RhdGljIEpTQzo6SlNW
YWx1ZSBqc1ZhbHVlRm9yRGVjb2RlZFN0cmluZ0FyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBBU0NJSUxpdGVyYWwgdHlw
ZSkKK3N0YXRpYyBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRTdHJpbmdBcmd1bWVudFZh
bHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0eXBlKQogewogICAgIGF1dG8mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KaW5kZXggNDdl
OWRjYTUwMGIxLi4xZmU2ODZlYTBlMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlZpZXdJbXBsLm1tCkBAIC0yOTIyLDcgKzI5MjIsNyBAQCBzdGF0aWMgY29uc3QgU2Vs
ZWN0b3JOYW1lTWFwJiBzZWxlY3RvckV4Y2VwdGlvbk1hcCgpCiAgICAgfTsKIAogICAgIGZvciAo
YXV0byYgbmFtZSA6IG5hbWVzKQotICAgICAgICBtYXAuZ2V0KCkuYWRkKG5hbWUuc2VsZWN0b3Is
IG5hbWUuY29tbWFuZE5hbWUpOworICAgICAgICBtYXAuZ2V0KCkuYWRkKG5hbWUuc2VsZWN0b3Is
IFN0cmluZyB7IG5hbWUuY29tbWFuZE5hbWUgfSk7CiAKICAgICByZXR1cm4gbWFwOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggMWM3YWQ0NGMyNDZhLi5h
MmU1MWIzZDZiZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApA
QCAtODE5MiwzMSArODE5MiwzMSBAQCBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGdw
dUlPS2l0Q2xhc3NlcygpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNlcnZp
Y2VzIHsKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAiQUdYRGV2aWNlVXNlckNs
aWVudCJfcywKLSAgICAgICAgIklPR1BVIl9zLAotICAgICAgICAiSU9TdXJmYWNlUm9vdFVzZXJD
bGllbnQiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIkFHWERldmljZVVz
ZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJJT0dQVSJf
cyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIklPU3VyZmFjZVJvb3RVc2Vy
Q2xpZW50Il9zKSwKICNlbmRpZgogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oTUFDQ0FU
QUxZU1QpCi0gICAgICAgICJBR1BNQ2xpZW50Il9zLAotICAgICAgICAiQXBwbGVHcmFwaGljc0Nv
bnRyb2xDbGllbnQiX3MsCi0gICAgICAgICJBcHBsZUdyYXBoaWNzUG9saWN5Q2xpZW50Il9zLAot
ICAgICAgICAiQXBwbGVJbnRlbE1FVXNlckNsaWVudCJfcywKLSAgICAgICAgIkFwcGxlTUdQVVBv
d2VyQ29udHJvbENsaWVudCJfcywKLSAgICAgICAgIkFwcGxlU05CRkJVc2VyQ2xpZW50Il9zLAot
ICAgICAgICAiQXBwbGVVcHN0cmVhbVVzZXJDbGllbnQiX3MsCi0gICAgICAgICJBdWRpb0FVVUMi
X3MsCi0gICAgICAgICJJT0FjY2VsZXJhdGlvblVzZXJDbGllbnQiX3MsCi0gICAgICAgICJJT0Fj
Y2VsZXJhdG9yIl9zLAotICAgICAgICAiSU9BdWRpb0NvbnRyb2xVc2VyQ2xpZW50Il9zLAotICAg
ICAgICAiSU9BdWRpb0VuZ2luZVVzZXJDbGllbnQiX3MsCi0gICAgICAgICJJT1N1cmZhY2VSb290
VXNlckNsaWVudCJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQUdQTUNs
aWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIkFwcGxlR3JhcGhp
Y3NDb250cm9sQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigi
QXBwbGVHcmFwaGljc1BvbGljeUNsaWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJ
TGl0ZXJhbD4oIkFwcGxlSW50ZWxNRVVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2Fz
dDxBU0NJSUxpdGVyYWw+KCJBcHBsZU1HUFVQb3dlckNvbnRyb2xDbGllbnQiX3MpLAorICAgICAg
ICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJBcHBsZVNOQkZCVXNlckNsaWVudCJfcyksCisg
ICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIkFwcGxlVXBzdHJlYW1Vc2VyQ2xpZW50
Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQXVkaW9BVVVDIl9zKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiSU9BY2NlbGVyYXRpb25Vc2VyQ2xp
ZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiSU9BY2NlbGVyYXRv
ciJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIklPQXVkaW9Db250cm9s
VXNlckNsaWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIklPQXVk
aW9FbmdpbmVVc2VyQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFs
PigiSU9TdXJmYWNlUm9vdFVzZXJDbGllbnQiX3MpLAogI2VuZGlmCiAgICAgICAgIC8vIEZJWE1F
OiBJcyB0aGlzIGFsc28gbmVlZGVkIGluIFBMQVRGT1JNKE1BQ0NBVEFMWVNUKT8KICNpZiBQTEFU
Rk9STShNQUMpICYmIENQVShBUk02NCkKLSAgICAgICAgIklPTW9iaWxlRnJhbWVidWZmZXJVc2Vy
Q2xpZW50Il9zLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJJT01vYmlsZUZy
YW1lYnVmZmVyVXNlckNsaWVudCJfcyksCiAjZW5kaWYKICNpZiAoUExBVEZPUk0oTUFDKSAmJiBD
UFUoQVJNNjQpKSB8fCBQTEFURk9STShJT1NfRkFNSUxZKQotICAgICAgICAiSU9TdXJmYWNlQWNj
ZWxlcmF0b3JDbGllbnQiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIklP
U3VyZmFjZUFjY2VsZXJhdG9yQ2xpZW50Il9zKSwKICNlbmRpZgogICAgIH07CiAgICAgcmV0dXJu
IHNlcnZpY2VzOwpAQCAtODIyNSw5ICs4MjI1LDkgQEAgc3RhdGljIFNwYW48Y29uc3QgQVNDSUlM
aXRlcmFsPiBncHVJT0tpdENsYXNzZXMoKQogc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFs
PiBncHVNYWNoU2VydmljZXMoKQogewogICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheSBz
ZXJ2aWNlcyB7Ci0gICAgICAgICJjb20uYXBwbGUuTVRMQ29tcGlsZXJTZXJ2aWNlIl9zLAorICAg
ICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJjb20uYXBwbGUuTVRMQ29tcGlsZXJTZXJ2
aWNlIl9zKSwKICNpZiBQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAg
ICAgICAiY29tLmFwcGxlLmN2bXNTZXJ2Il9zLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxp
dGVyYWw+KCJjb20uYXBwbGUuY3Ztc1NlcnYiX3MpLAogI2VuZGlmCiAgICAgfTsKICAgICByZXR1
cm4gc2VydmljZXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9JUENUZXN0aW5nQVBJLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwCmluZGV4IGVlMTY0NWVmNGUwYy4uM2U5YThkNTIwZjEwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcApA
QCAtNjEsMTEgKzYxLDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBuYW1lc3BhY2UgSVBDVGVz
dGluZ0FQSSB7CiAKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9jZXNzVGFyZ2V0TmFtZVVJID0g
IlVJIl9zOworc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgcHJvY2Vzc1RhcmdldE5hbWVV
SSA9ICJVSSJfczsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi1zdGF0aWMgY29uc3RleHByIGF1
dG8gcHJvY2Vzc1RhcmdldE5hbWVHUFUgPSAiR1BVIl9zOworc3RhdGljIGNvbnN0ZXhwciBBU0NJ
SUxpdGVyYWwgcHJvY2Vzc1RhcmdldE5hbWVHUFUgPSAiR1BVIl9zOwogI2VuZGlmCi1zdGF0aWMg
Y29uc3RleHByIGF1dG8gcHJvY2Vzc1RhcmdldE5hbWVOZXR3b3JraW5nID0gIk5ldHdvcmtpbmci
X3M7CitzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBwcm9jZXNzVGFyZ2V0TmFtZU5ldHdv
cmtpbmcgPSAiTmV0d29ya2luZyJfczsKIAogc3RhdGljIHN0ZDo6b3B0aW9uYWw8dWludDY0X3Q+
IGRlc3RpbmF0aW9uSURGcm9tQXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTVmFsdWVS
ZWYsIEpTVmFsdWVSZWYqKTsKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPHVpbnQ2NF90PiBtZXNzYWdl
SURGcm9tQXJndW1lbnQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTVmFsdWVSZWYsIEpTVmFsdWVS
ZWYqKTsKQEAgLTIwNjUsMTMgKzIwNjUsMTMgQEAgSlNWYWx1ZVJlZiBKU0lQQzo6cHJvY2Vzc1Rh
cmdldHMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIEoKICAg
ICBKU0M6OkpTT2JqZWN0KiBwcm9jZXNzVGFyZ2V0c09iamVjdCA9IEpTQzo6Y29uc3RydWN0RW1w
dHlBcnJheShnbG9iYWxPYmplY3QsIG51bGxwdHIpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKICAgICBpbnQgaW5kZXggPSAw
OwotICAgIHByb2Nlc3NUYXJnZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3Qs
IGluZGV4KyssIEpTQzo6anNTdHJpbmcodm0sIHByb2Nlc3NUYXJnZXROYW1lVUkpKTsKKyAgICBw
cm9jZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsr
LCBKU0M6OmpzU3RyaW5nKHZtLCBTdHJpbmcgeyBwcm9jZXNzVGFyZ2V0TmFtZVVJIH0pKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KSk7CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQotICAgIHByb2Nlc3NUYXJnZXRzT2JqZWN0LT5w
dXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNTdHJpbmcodm0sIHBy
b2Nlc3NUYXJnZXROYW1lR1BVKSk7CisgICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVj
dEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nIHsg
cHJvY2Vzc1RhcmdldE5hbWVHUFUgfSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsKICNlbmRpZgotICAgIHByb2Nlc3NUYXJn
ZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNT
dHJpbmcodm0sIHByb2Nlc3NUYXJnZXROYW1lTmV0d29ya2luZykpOworICAgIHByb2Nlc3NUYXJn
ZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNT
dHJpbmcodm0sIFN0cmluZyB7IHByb2Nlc3NUYXJnZXROYW1lTmV0d29ya2luZyB9KSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkp
OwogICAgIHJldHVybiB0b1JlZih2bSwgcHJvY2Vzc1RhcmdldHNPYmplY3QpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0g
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRl
eCAxYTc4OWY5OWQ4OWYuLjM5MzBmMGM5NGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KQEAgLTIzMCw3ICsyMzAsNyBAQCBz
dGF0aWMgU3RyaW5nIGNvbW1hbmROYW1lRm9yU2VsZWN0b3JOYW1lKGNvbnN0IFN0cmluZyYgc2Vs
ZWN0b3JOYW1lKQogICAgIH07CiAgICAgc3RhdGljIGNvbnN0ZXhwciBTb3J0ZWRBcnJheU1hcCBt
YXAgeyBzZWxlY3RvckV4Y2VwdGlvbnMgfTsKICAgICBpZiAoYXV0byBjb21tYW5kTmFtZSA9IG1h
cC50cnlHZXQoc2VsZWN0b3JOYW1lKSkKLSAgICAgICAgcmV0dXJuICpjb21tYW5kTmFtZTsKKyAg
ICAgICAgcmV0dXJuIFN0cmluZyB7ICpjb21tYW5kTmFtZSB9OwogCiAgICAgLy8gUmVtb3ZlIHRo
ZSB0cmFpbGluZyBjb2xvbi4KICAgICAvLyBObyBuZWVkIHRvIGNhcGl0YWxpemUgdGhlIGNvbW1h
bmQgbmFtZSBzaW5jZSBFZGl0b3IgY29tbWFuZCBuYW1lcyBhcmUgbm90IGNhc2Ugc2Vuc2l0aXZl
Lgo=
</data>
<flag name="commit-queue"
          id="483467"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455468</attachid>
            <date>2022-03-22 21:40:16 -0700</date>
            <delta_ts>2022-03-23 07:27:38 -0700</delta_ts>
            <desc>Geoff&apos;s alternative proposal</desc>
            <filename>238162_s_suffix_no_strlen_geoff_proposal_wip2.patch</filename>
            <type>text/plain</type>
            <size>148504</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZWYwZmY2MmE3OGEzLi42Nzkx
ZmFlYzI0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDAsOSAr
MTAwLDkgQEAgc3RhdGljIFQgcGFyc2VCcmVha3BvaW50T3B0aW9ucyhQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNPTjoKICAgICBzaXplX3QgaWdub3JlQ291bnQg
PSAwOwogCiAgICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgY29uZGl0aW9uID0gb3B0aW9ucy0+
Z2V0U3RyaW5nKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmNvbmRpdGlv
bktleSk7CisgICAgICAgIGNvbmRpdGlvbiA9IG9wdGlvbnMtPmdldFN0cmluZyhTdHJpbmcgeyBQ
cm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjpjb25kaXRpb25LZXkgfSk7CiAK
LSAgICAgICAgYXV0byBhY3Rpb25zUGF5bG9hZCA9IG9wdGlvbnMtPmdldEFycmF5KFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmFjdGlvbnNLZXkpOworICAgICAgICBhdXRv
IGFjdGlvbnNQYXlsb2FkID0gb3B0aW9ucy0+Z2V0QXJyYXkoU3RyaW5nIHsgUHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6YWN0aW9uc0tleSB9KTsKICAgICAgICAgaWYgKGF1
dG8gY291bnQgPSBhY3Rpb25zUGF5bG9hZCA/IGFjdGlvbnNQYXlsb2FkLT5sZW5ndGgoKSA6IDAp
IHsKICAgICAgICAgICAgIGFjdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CiAK
QEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgVCBwYXJzZUJyZWFrcG9pbnRPcHRpb25zKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGF1dG8gYWN0aW9uVHlwZVN0cmluZyA9IGFjdGlvbk9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6dHlwZUtleSk7CisgICAgICAgICAgICAgICAg
YXV0byBhY3Rpb25UeXBlU3RyaW5nID0gYWN0aW9uT2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsg
UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjp0eXBlS2V5IH0pOwogICAgICAg
ICAgICAgICAgIGlmICghYWN0aW9uVHlwZVN0cmluZykgewogICAgICAgICAgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHR5cGUgZm9yIGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEyNSwyMCArMTI1LDIwIEBAIHN0
YXRpYyBUIHBhcnNlQnJlYWtwb2ludE9wdGlvbnMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgUmVmUHRyPEpTT046CiAKICAgICAgICAgICAgICAgICBKU0M6OkJyZWFrcG9pbnQ6
OkFjdGlvbiBhY3Rpb24oKmFjdGlvblR5cGUpOwogCi0gICAgICAgICAgICAgICAgYWN0aW9uLmRh
dGEgPSBhY3Rpb25PYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9p
bnRBY3Rpb246OmRhdGFLZXkpOworICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gYWN0aW9u
T2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
QWN0aW9uOjpkYXRhS2V5IH0pOwogCiAgICAgICAgICAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBp
ZGVudGlmaWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBz
YW1wbGVzCiAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0aXBs
ZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgotICAg
ICAgICAgICAgICAgIGFjdGlvbi5pZCA9IGFjdGlvbk9iamVjdC0+Z2V0SW50ZWdlcihQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OmlkS2V5KS52YWx1ZV9vcihKU0M6Om5vQnJl
YWtwb2ludEFjdGlvbklEKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uaWQgPSBhY3Rpb25PYmpl
Y3QtPmdldEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0
aW9uOjppZEtleSB9KS52YWx1ZV9vcihKU0M6Om5vQnJlYWtwb2ludEFjdGlvbklEKTsKIAotICAg
ICAgICAgICAgICAgIGFjdGlvbi5lbXVsYXRlVXNlckdlc3R1cmUgPSBhY3Rpb25PYmplY3QtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjplbXVsYXRlVXNl
ckdlc3R1cmVLZXkpLnZhbHVlX29yKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uZW11
bGF0ZVVzZXJHZXN0dXJlID0gYWN0aW9uT2JqZWN0LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6ZW11bGF0ZVVzZXJHZXN0dXJlS2V5IH0p
LnZhbHVlX29yKGZhbHNlKTsKIAogICAgICAgICAgICAgICAgIGFjdGlvbnMudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFByb3RvY29sOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSkudmFsdWVfb3IoZmFsc2UpOwotICAg
ICAgICBpZ25vcmVDb3VudCA9IG9wdGlvbnMtPmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50T3B0aW9uczo6aWdub3JlQ291bnRLZXkpLnZhbHVlX29yKDApOworICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSB9KS52YWx1ZV9vcihm
YWxzZSk7CisgICAgICAgIGlnbm9yZUNvdW50ID0gb3B0aW9ucy0+Z2V0SW50ZWdlcihTdHJpbmcg
eyBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjppZ25vcmVDb3VudEtleSB9
KS52YWx1ZV9vcigwKTsKICAgICB9CiAKICAgICByZXR1cm4gY2FsbGJhY2soY29uZGl0aW9uLCBX
VEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKQEAgLTUxOCw3ICs1
MTgsNyBAQCBzdGF0aWMgUmVmPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGJ1aWxkRGVi
dWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcAogCiBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0
aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVj
dCYgbG9jYXRpb24sIEpTQzo6U291cmNlSUQmIHNvdXJjZUlELCB1bnNpZ25lZCYgbGluZU51bWJl
ciwgdW5zaWduZWQmIGNvbHVtbk51bWJlcikKIHsKLSAgICBhdXRvIGxpbmVOdW1iZXJWYWx1ZSA9
IGxvY2F0aW9uLmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6bGluZU51
bWJlcktleSk7CisgICAgYXV0byBsaW5lTnVtYmVyVmFsdWUgPSBsb2NhdGlvbi5nZXRJbnRlZ2Vy
KFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmxpbmVOdW1iZXJLZXkgfSk7
CiAgICAgaWYgKCFsaW5lTnVtYmVyVmFsdWUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5l
eHBlY3RlZCBub24taW50ZWdlciBsaW5lTnVtYmVyIGluIGdpdmVuIGxvY2F0aW9uIl9zOwogICAg
ICAgICBzb3VyY2VJRCA9IEpTQzo6bm9Tb3VyY2VJRDsKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0
aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IEpTT046Ok9iamVjdAogCiAgICAgbGluZU51bWJlciA9ICpsaW5lTnVtYmVyVmFsdWU7
CiAKLSAgICBhdXRvIHNjcmlwdElEU3RyID0gbG9jYXRpb24uZ2V0U3RyaW5nKFByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb246OnNjcmlwdElkS2V5KTsKKyAgICBhdXRvIHNjcmlwdElEU3RyID0g
bG9jYXRpb24uZ2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246
OnNjcmlwdElkS2V5IH0pOwogICAgIGlmICghc2NyaXB0SURTdHIpIHsKICAgICAgICAgc291cmNl
SUQgPSBKU0M6Om5vU291cmNlSUQ7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhlcGN0ZWQg
bm9uLXN0cmluZyBzY3JpcHRJZCBpbiBnaXZlbiBsb2NhdGlvbiJfczsKQEAgLTUzNSw3ICs1MzUs
NyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdAogICAgIH0KIAogICAgIHNvdXJjZUlEID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SURTdHIp
LnZhbHVlX29yKDApOwotICAgIGNvbHVtbk51bWJlciA9IGxvY2F0aW9uLmdldEludGVnZXIoUHJv
dG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y29sdW1uTnVtYmVyS2V5KS52YWx1ZV9vcigwKTsK
KyAgICBjb2x1bW5OdW1iZXIgPSBsb2NhdGlvbi5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29s
OjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNvbHVtbk51bWJlcktleSB9KS52YWx1ZV9vcigwKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
NmU5NzY2MjExODYzLi5kMWM5YWEyNjc1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6b3B0
aW9uYWw8aW50PiAvKiBzYXZlUmVzdWx0SW5kZXggKi8+IEluc3BlY3RvclJ1bnRpCiAKICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdDsKIAotICAgIGF1dG8gb2JqZWN0SWQgPSBjYWxs
QXJndW1lbnQtPmdldFN0cmluZyhQcm90b2NvbDo6UnVudGltZTo6Q2FsbEFyZ3VtZW50OjpvYmpl
Y3RJZEtleSk7CisgICAgYXV0byBvYmplY3RJZCA9IGNhbGxBcmd1bWVudC0+Z2V0U3RyaW5nKFN0
cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpDYWxsQXJndW1lbnQ6Om9iamVjdElkS2V5IH0pOwog
ICAgIGlmICghb2JqZWN0SWQpIHsKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNj
cmlwdEZvckV2YWwoZXJyb3JTdHJpbmcsIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSk7CiAg
ICAgICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCkBAIC00MDgsOSArNDA4LDkg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1
bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+PgogICAgICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmV4cGVjdGVkIG5vbi1vYmplY3QgaXRlbSBp
biBsb2NhdGlvbnMiX3MpOwogCi0gICAgICAgIGF1dG8gZGVzY3JpcHRvciA9IGxvY2F0aW9uLT5n
ZXRJbnRlZ2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OnR5cGVJbmZvcm1hdGlv
bkRlc2NyaXB0b3JLZXkpLnZhbHVlX29yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3Jt
YWwpOwotICAgICAgICBhdXRvIHNvdXJjZUlEU3RyaW5nID0gbG9jYXRpb24tPmdldFN0cmluZyhQ
cm90b2NvbDo6UnVudGltZTo6VHlwZUxvY2F0aW9uOjpzb3VyY2VJREtleSk7Ci0gICAgICAgIGF1
dG8gZGl2b3QgPSBsb2NhdGlvbi0+Z2V0SW50ZWdlcihQcm90b2NvbDo6UnVudGltZTo6VHlwZUxv
Y2F0aW9uOjpkaXZvdEtleSkudmFsdWVfb3IoMCk7CisgICAgICAgIGF1dG8gZGVzY3JpcHRvciA9
IGxvY2F0aW9uLT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0b3JLZXkgfSkudmFsdWVfb3IoVHlwZVByb2Zp
bGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCk7CisgICAgICAgIGF1dG8gc291cmNlSURTdHJpbmcg
PSBsb2NhdGlvbi0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnNvdXJjZUlES2V5IH0pOworICAgICAgICBhdXRvIGRpdm90ID0gbG9jYXRpb24tPmdl
dEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVMb2NhdGlvbjo6ZGl2b3RL
ZXkgfSkudmFsdWVfb3IoMCk7CiAKICAgICAgICAgYXV0byB0eXBlTG9jYXRpb24gPSBtX3ZtLnR5
cGVQcm9maWxlcigpLT5maW5kTG9jYXRpb24oZGl2b3QsIHBhcnNlSW50ZWdlcjx1aW50cHRyX3Q+
KHNvdXJjZUlEU3RyaW5nKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yPihkZXNjcmlwdG9yKSwgbV92bSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weQppbmRleCBkZWYyMWFjYWNmODguLjlkYTE0ZWM0NzM5YyAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weQpAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5
cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMu
YXBwZW5kKCd9OycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCdTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsnKQotICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICByZXR1cm4gZW51bV9jb25zdGFudF92YWx1ZXNbY29kZV07JykKKyAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIFN0cmluZyB7IGVudW1fY29uc3RhbnRfdmFs
dWVzW2NvZGVdIH07JykKICAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgcmV0dXJu
IFsnXG4nLmpvaW4obGluZXMpXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCBkYTYwMGVhMDBmMGMuLjFkZTg4YjE3YmRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ1
LDcgKzEwNDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQog
ICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7
CisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFN0cmlu
ZyB7IFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvciB9KSk7CiAgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihjb3VsZERlbGV0ZSkpOwogfQogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKIAogICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5p
c1N0cmljdCgpKQotICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKKyAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgVW5hYmxlVG9EZWxldGVQcm9w
ZXJ0eUVycm9yIH0pKTsKICAgICAKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGU5YmRiN2M4NWRhYS4uMGVkMTM2
YTc1NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDksNyArNDksNyBAQCBBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yOjpBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cgogCiB2b2lkIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6
OkFnZ3JlZ2F0ZUVycm9yKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgU3RyaW5nIHsgZXJy
b3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9LCBQcm9wZXJ0eUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIEFTU0VSVChpbmhlcml0cyh2
bSwgaW5mbygpKSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcAppbmRleCAxMTljZDVhMzliMTEuLjY5ZjZlMzg5
MTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRl
RXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBBZ2dyZWdhdGVFcnJv
clByb3RvdHlwZTo6QWdncmVnYXRlRXJyb3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIAogdm9pZCBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBlcnJvclR5cGVOYW1lKEVy
cm9yVHlwZTo6QWdncmVnYXRlRXJyb3IpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
U3RyaW5nIHsgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9KTsKICAg
ICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKaW5kZXggNDVh
MDAxM2FmMWM3Li43NWYyYWUwYjA3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyU2hhcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAg
ZW51bSBjbGFzcyBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIDogdWludDhfdCB7CiAgICAgU2hhcmVk
CiB9OwogCi1pbmxpbmUgQVNDSUlMaXRlcmFsIGFycmF5QnVmZmVyU2hhcmluZ01vZGVOYW1lKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUpCitpbmxpbmUgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBhcnJheUJ1ZmZlclNoYXJpbmdNb2RlTmFtZShBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
IHNoYXJpbmdNb2RlKQogewogICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKICAgICBjYXNlIEFy
cmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQ6CkBAIC00NCw3ICs0NCw3IEBAIGlubGluZSBB
U0NJSUxpdGVyYWwgYXJyYXlCdWZmZXJTaGFyaW5nTW9kZU5hbWUoQXJyYXlCdWZmZXJTaGFyaW5n
TW9kZSBzaGFyaW5nTW9kCiAgICAgICAgIHJldHVybiAiU2hhcmVkQXJyYXlCdWZmZXIiX3M7CiAg
ICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxs
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDE4MTVlMTQ3Yjk2NS4uZmUyZDJhODA2
M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCB1bnNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlzT2JqLCB1aW50NjRfdCBoZWFkZXIsIHUKICAgICBp
ZiAoaXNKU0FycmF5KHRoaXNPYmopKSB7CiAgICAgICAgIC8vIFNwZWMgc2F5cyBpZiB3ZSB3b3Vs
ZCBwcm9kdWNlIGFuIGFycmF5IG9mIHRoaXMgc2l6ZSwgd2UgbXVzdCB0aHJvdyBhIHJhbmdlIGVy
cm9yLgogICAgICAgICBpZiAoY291bnQgKyBsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCkpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKTsKKyAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBM
ZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExNDgsNyArMTE0OCw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NsaWNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsCiAgICAgICAgIHJlc3VsdCA9IHNwZWNpZXNSZXN1bHQuc2Vjb25kOwogICAgIGVs
c2UgewogICAgICAgICBpZiAoVU5MSUtFTFkoZW5kIC0gYmVnaW4gPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJv
cik7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgU3Ry
aW5nIHsgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KTsKICAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgICAgIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZW5kIC0gYmVnaW4pKTsKQEAgLTEyNDAsNyArMTI0MCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NwbGljZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhCiAgICAgICAgICAgICByZXN1bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29u
ZDsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYWN0dWFsRGVsZXRl
Q291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIExlbmd0aEV4Y2Vl
ZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1h
eGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gSlNBcnJheTo6
dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYWN0dWFsRGVsZXRlQ291bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDFlZWVlMmNiOWU0Ni4uMGIxZmEzZjgxNjA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2NoZWNrX3RkeikKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
dGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCiB7CiAgICAg
QkVHSU4oKTsKLSAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIFN0cmluZyB7IFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yIH0pKTsKIH0KIAogSlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9ub3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggZjYzOGI2NmRlYWUwLi5lMmFhOGRmMmMyOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTI3MiwxNiArMjcyLDIx
IEBAIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGhyb3dTY29wZSYgc2NvcGUpCiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QpKTsKIH0KIAotRXhjZXB0
aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dU
eXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgU3RyaW5nKGVycm9yTWVzc2FnZSkpOworICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBtZXNzYWdlKSk7CiB9CiAKLUV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbWVzc2FnZSkK
IHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWVzc2FnZSkpOwogfQogCitFeGNlcHRpb24qIHRocm93
VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3Bl
LCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsg
bWVzc2FnZSB9KSk7Cit9CisKIEV4Y2VwdGlvbiogdGhyb3dTeW50YXhFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFs
T2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAppbmRleCA1NGIxNDk0
NThmZjIuLmE3ZDgxNDNjN2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
CkBAIC03OCw4ICs3OCw5IEBAIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oVk0mLCBKU09iamVjdCog
ZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CiAvLyBDb252ZW5pZW5jZSB3cmFw
cGVycywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdl
LgogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVD
YWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IHRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwotSlNfRVhQT1JU
X1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93
U2NvcGUmLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKTsKIEpTX0VYUE9SVF9QUklWQVRFIEV4
Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0
aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRo
cm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIEFTQ0lJTGl0ZXJhbCBl
cnJvck1lc3NhZ2UpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1N5bnRheEVy
cm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhj
ZXB0aW9uKiB0aHJvd1N5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIGlubGluZSBFeGNlcHRpb24qIHRocm93UmFuZ2VF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBlcnJvck1lc3NhZ2Up
KTsgfQpAQCAtOTUsOCArOTYsOSBAQCBpbmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEV4Y2VwdAogaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
aHJvd1Njb3BlJiBzY29wZSwgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yKSk7IH0KIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVy
cm9yKGdsb2JhbE9iamVjdCwgZXJyb3JNZXNzYWdlKSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgdGhyb3dWTVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JN
ZXNzYWdlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBTdHJpbmcgeyBlcnJvck1lc3NhZ2UgfSk7IH0KK2lubGluZSBFbmNvZGVk
SlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRo
cm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN0cmluZyB7IGVycm9yTWVzc2FnZSB9
KTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRo
cm93Vk1ET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01B
dHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBw
cm9wZXJ0eU5hbWUpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1ET01BdHRyaWJ1
dGVTZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29w
ZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01BdHRyaWJ1dGVTZXR0ZXJU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKaW5kZXggZjE0OWQ0ZTU5YTcyLi4zZTJhM2Q5MzRmODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIEpTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xv
dyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICIiOworICAgICAg
ICBmdW5jdGlvbkhlYWRlciA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDFjOWZlNTU2NTAxZi4uNWE5ZTUzM2Jk
ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0x
MTMsNiArMTEzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnND
b3VudD4KICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgY2hhciAo
JmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b21TdHJpbmcoVk0mLCBBU0NJSUxpdGVyYWwpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21T
dHJpbmcoVk0mLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoKTsKICAgICBzdGF0aWMgSWRlbnRpZmll
ciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgTENoYXIqLCBpbnQgbGVuZ3RoKTsKICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsKICAg
ICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgU3RyaW5nJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRl
eCBhNTcyZjU3YTVjOWMuLjU3ZDAxZGExYjNjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC05MSw2ICs5MSwxMSBAQCBpbmxp
bmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNJiB2bSwgQVNDSUlMaXRlcmFs
IHMpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIFN0cmluZyhzKSk7CiB9CiAKK2lubGluZSBJ
ZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIHMpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIFN0cmluZyhzKSk7Cit9CisK
IGlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBjb25zdCBM
Q2hhciogcywgaW50IGxlbmd0aCkKIHsKICAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgcywgbGVu
Z3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3Bw
CmluZGV4IGI2YmI3NTE1ODBkNy4uNTljZjUzNzExNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCBKU1Zh
bHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RyaW5nVmlldyB4LAogICAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOwogfQogCi1B
U0NJSUxpdGVyYWwgSW50bENvbGxhdG9yOjp1c2FnZVN0cmluZyhVc2FnZSB1c2FnZSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bENvbGxhdG9yOjp1c2FnZVN0cmluZyhVc2FnZSB1c2FnZSkK
IHsKICAgICBzd2l0Y2ggKHVzYWdlKSB7CiAgICAgY2FzZSBVc2FnZTo6U29ydDoKQEAgLTMzMCwx
MCArMzMwLDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0b3I6OnVzYWdlU3RyaW5nKFVzYWdl
IHVzYWdlKQogICAgICAgICByZXR1cm4gInNlYXJjaCJfczsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRs
Q29sbGF0b3I6OnNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5IHNlbnNpdGl2aXR5KQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsQ29sbGF0b3I6OnNlbnNpdGl2aXR5U3RyaW5nKFNlbnNp
dGl2aXR5IHNlbnNpdGl2aXR5KQogewogICAgIHN3aXRjaCAoc2Vuc2l0aXZpdHkpIHsKICAgICBj
YXNlIFNlbnNpdGl2aXR5OjpCYXNlOgpAQCAtMzQ2LDEwICszNDYsMTAgQEAgQVNDSUlMaXRlcmFs
IEludGxDb2xsYXRvcjo6c2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkgc2Vuc2l0aXZpdHkp
CiAgICAgICAgIHJldHVybiAidmFyaWFudCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0
b3I6OmNhc2VGaXJzdFN0cmluZyhDYXNlRmlyc3QgY2FzZUZpcnN0KQorQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBJbnRsQ29sbGF0b3I6OmNhc2VGaXJzdFN0cmluZyhDYXNlRmlyc3QgY2FzZUZpcnN0
KQogewogICAgIHN3aXRjaCAoY2FzZUZpcnN0KSB7CiAgICAgY2FzZSBDYXNlRmlyc3Q6OkZhbHNl
OgpAQCAtMzYwLDcgKzM2MCw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0b3I6OmNhc2VGaXJz
dFN0cmluZyhDYXNlRmlyc3QgY2FzZUZpcnN0KQogICAgICAgICByZXR1cm4gInVwcGVyIl9zOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0K
IAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLmNvbGxhdG9yLnByb3RvdHlw
ZS5yZXNvbHZlZG9wdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yLmgKaW5kZXggODBhYTdjMzZiYTZjLi5hN2UwY2IxNTk4MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCkBAIC05NCw5ICs5NCw5IEBAIHBy
aXZhdGU6CiAKICAgICB1c2luZyBVQ29sbGF0b3JEZWxldGVyID0gSUNVRGVsZXRlcjx1Y29sX2Ns
b3NlPjsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdXNhZ2VTdHJpbmcoVXNhZ2UpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgc2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgY2FzZUZpcnN0U3RyaW5nKENhc2VGaXJzdCk7CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdXNhZ2VTdHJpbmcoVXNhZ2UpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5KTsK
KyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBjYXNlRmlyc3RTdHJpbmcoQ2FzZUZp
cnN0KTsKIAogICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRDb21wYXJl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVQ29sbGF0b3IsIFVDb2xsYXRvckRlbGV0ZXI+IG1fY29s
bGF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAppbmRleCBjMmQ0OWRhOThhNjYuLmU2MWZlOGViNzE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
CkBAIC0xMDA2LDcgKzEwMDYsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6
ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgdWNhbF9z
ZXRHcmVnb3JpYW5DaGFuZ2UoY2FsLCBtaW5FQ01BU2NyaXB0VGltZSwgJnN0YXR1cyk7CiB9CiAK
LUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhvdXJDeWNsZVN0cmluZyhIb3VyQ3lj
bGUgaG91ckN5Y2xlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmhvdXJDeWNsZVN0cmluZyhIb3VyQ3ljbGUgaG91ckN5Y2xlKQogewogICAgIHN3aXRjaCAoaG91
ckN5Y2xlKSB7CiAgICAgY2FzZSBIb3VyQ3ljbGU6OkgxMToKQEAgLTEwMTksMTMgKzEwMTksMTMg
QEAgQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6aG91ckN5Y2xlU3RyaW5nKEhvdXJD
eWNsZSBob3VyQ3ljbGUpCiAgICAgICAgIHJldHVybiAiaDI0Il9zOwogICAgIGNhc2UgSG91ckN5
Y2xlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExl
bmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6d2Vla2Rh
eVN0cmluZyhXZWVrZGF5IHdlZWtkYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRl
VGltZUZvcm1hdDo6d2Vla2RheVN0cmluZyhXZWVrZGF5IHdlZWtkYXkpCiB7CiAgICAgc3dpdGNo
ICh3ZWVrZGF5KSB7CiAgICAgY2FzZSBXZWVrZGF5OjpOYXJyb3c6CkBAIC0xMDM2LDEzICsxMDM2
LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OndlZWtkYXlTdHJpbmcoV2Vl
a2RheSB3ZWVrZGF5KQogICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2FzZSBXZWVrZGF5
OjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0
aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6
Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6ZXJhU3RyaW5n
KEVyYSBlcmEpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6ZXJh
U3RyaW5nKEVyYSBlcmEpCiB7CiAgICAgc3dpdGNoIChlcmEpIHsKICAgICBjYXNlIEVyYTo6TmFy
cm93OgpAQCAtMTA1MywxMyArMTA1MywxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9y
bWF0OjplcmFTdHJpbmcoRXJhIGVyYSkKICAgICAgICAgcmV0dXJuICJsb25nIl9zOwogICAgIGNh
c2UgRXJhOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0
aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6eWVh
clN0cmluZyhZZWFyIHllYXIpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZv
cm1hdDo6eWVhclN0cmluZyhZZWFyIHllYXIpCiB7CiAgICAgc3dpdGNoICh5ZWFyKSB7CiAgICAg
Y2FzZSBZZWFyOjpUd29EaWdpdDoKQEAgLTEwNjgsMTMgKzEwNjgsMTMgQEAgQVNDSUlMaXRlcmFs
IEludGxEYXRlVGltZUZvcm1hdDo6eWVhclN0cmluZyhZZWFyIHllYXIpCiAgICAgICAgIHJldHVy
biAibnVtZXJpYyJfczsKICAgICBjYXNlIFllYXI6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwg
SW50bERhdGVUaW1lRm9ybWF0Ojptb250aFN0cmluZyhNb250aCBtb250aCkKK0FTQ0lJTGl0ZXJh
bFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojptb250aFN0cmluZyhNb250aCBtb250aCkK
IHsKICAgICBzd2l0Y2ggKG1vbnRoKSB7CiAgICAgY2FzZSBNb250aDo6VHdvRGlnaXQ6CkBAIC0x
MDg5LDEzICsxMDg5LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1vbnRo
U3RyaW5nKE1vbnRoIG1vbnRoKQogICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2FzZSBN
b250aDo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRheVN0
cmluZyhEYXkgZGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmRheVN0cmluZyhEYXkgZGF5KQogewogICAgIHN3aXRjaCAoZGF5KSB7CiAgICAgY2FzZSBEYXk6
OlR3b0RpZ2l0OgpAQCAtMTEwNCwxMyArMTEwNCwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0OjpkYXlTdHJpbmcoRGF5IGRheSkKICAgICAgICAgcmV0dXJuICJudW1lcmljIl9z
OwogICAgIGNhc2UgRGF5OjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZv
cm1hdDo6ZGF5UGVyaW9kU3RyaW5nKERheVBlcmlvZCBkYXlQZXJpb2QpCitBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6ZGF5UGVyaW9kU3RyaW5nKERheVBlcmlvZCBk
YXlQZXJpb2QpCiB7CiAgICAgc3dpdGNoIChkYXlQZXJpb2QpIHsKICAgICBjYXNlIERheVBlcmlv
ZDo6TmFycm93OgpAQCAtMTEyMSwxMyArMTEyMSwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0OjpkYXlQZXJpb2RTdHJpbmcoRGF5UGVyaW9kIGRheVBlcmlvZCkKICAgICAgICAg
cmV0dXJuICJsb25nIl9zOwogICAgIGNhc2UgRGF5UGVyaW9kOjpOb25lOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlM
aXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6aG91clN0cmluZyhIb3VyIGhvdXIpCitBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6aG91clN0cmluZyhIb3VyIGhvdXIp
CiB7CiAgICAgc3dpdGNoIChob3VyKSB7CiAgICAgY2FzZSBIb3VyOjpUd29EaWdpdDoKQEAgLTEx
MzYsMTMgKzExMzYsMTMgQEAgQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6aG91clN0
cmluZyhIb3VyIGhvdXIpCiAgICAgICAgIHJldHVybiAibnVtZXJpYyJfczsKICAgICBjYXNlIEhv
dXI6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0
aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0OjptaW51dGVT
dHJpbmcoTWludXRlIG1pbnV0ZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1l
Rm9ybWF0OjptaW51dGVTdHJpbmcoTWludXRlIG1pbnV0ZSkKIHsKICAgICBzd2l0Y2ggKG1pbnV0
ZSkgewogICAgIGNhc2UgTWludXRlOjpUd29EaWdpdDoKQEAgLTExNTEsMTMgKzExNTEsMTMgQEAg
QVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6bWludXRlU3RyaW5nKE1pbnV0ZSBtaW51
dGUpCiAgICAgICAgIHJldHVybiAibnVtZXJpYyJfczsKICAgICBjYXNlIE1pbnV0ZTo6Tm9uZToK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwo
KTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7
CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNlY29uZFN0cmluZyhTZWNv
bmQgc2Vjb25kKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNl
Y29uZFN0cmluZyhTZWNvbmQgc2Vjb25kKQogewogICAgIHN3aXRjaCAoc2Vjb25kKSB7CiAgICAg
Y2FzZSBTZWNvbmQ6OlR3b0RpZ2l0OgpAQCAtMTE2NiwxMyArMTE2NiwxMyBAQCBBU0NJSUxpdGVy
YWwgSW50bERhdGVUaW1lRm9ybWF0OjpzZWNvbmRTdHJpbmcoU2Vjb25kIHNlY29uZCkKICAgICAg
ICAgcmV0dXJuICJudW1lcmljIl9zOwogICAgIGNhc2UgU2Vjb25kOjpOb25lOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgp
OworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxs
KCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVND
SUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6dGltZVpvbmVOYW1lU3RyaW5nKFRpbWVab25l
TmFtZSB0aW1lWm9uZU5hbWUpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZv
cm1hdDo6dGltZVpvbmVOYW1lU3RyaW5nKFRpbWVab25lTmFtZSB0aW1lWm9uZU5hbWUpCiB7CiAg
ICAgc3dpdGNoICh0aW1lWm9uZU5hbWUpIHsKICAgICBjYXNlIFRpbWVab25lTmFtZTo6U2hvcnQ6
CkBAIC0xMTg5LDEzICsxMTg5LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OnRpbWVab25lTmFtZVN0cmluZyhUaW1lWm9uZU5hbWUgdGltZVpvbmVOYW1lKQogICAgICAgICBy
ZXR1cm4gImxvbmdHZW5lcmljIl9zOwogICAgIGNhc2UgVGltZVpvbmVOYW1lOjpOb25lOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6
bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0K
IAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0U3R5bGVTdHJpbmcoRGF0
ZVRpbWVTdHlsZSBzdHlsZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9y
bWF0Ojpmb3JtYXRTdHlsZVN0cmluZyhEYXRlVGltZVN0eWxlIHN0eWxlKQogewogICAgIHN3aXRj
aCAoc3R5bGUpIHsKICAgICBjYXNlIERhdGVUaW1lU3R5bGU6OkZ1bGw6CkBAIC0xMjA4LDEwICsx
MjA4LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFN0eWxlU3Ry
aW5nKERhdGVUaW1lU3R5bGUgc3R5bGUpCiAgICAgICAgIHJldHVybiAic2hvcnQiX3M7CiAgICAg
Y2FzZSBEYXRlVGltZVN0eWxlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1pbnRsLmRhdGV0aW1lZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKQEAg
LTEyOTMsNyArMTI5Myw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjCiAgICAgcmV0dXJuIGpz
U3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0KSk7CiB9CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwgcGFy
dFR5cGVTdHJpbmcoVURhdGVGb3JtYXRGaWVsZCBmaWVsZCkKK3N0YXRpYyBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIHBhcnRUeXBlU3RyaW5nKFVEYXRlRm9ybWF0RmllbGQgZmllbGQpCiB7CiAgICAg
c3dpdGNoIChmaWVsZCkgewogICAgIGNhc2UgVURBVF9FUkFfRklFTEQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IDhiZjY3
N2Y0YTg3OS4uMjExZmY1YzA4MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMTA5LDE4ICsxMDksMTggQEAgcHJpdmF0
ZToKICAgICBlbnVtIGNsYXNzIERhdGVUaW1lU3R5bGUgOiB1aW50OF90IHsgTm9uZSwgRnVsbCwg
TG9uZywgTWVkaXVtLCBTaG9ydCB9OwogCiAgICAgdm9pZCBzZXRGb3JtYXRzRnJvbVBhdHRlcm4o
U3RyaW5nVmlldyk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBob3VyQ3ljbGVTdHJpbmcoSG91
ckN5Y2xlKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7
Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBlcmFTdHJpbmcoRXJhKTsKLSAgICBzdGF0aWMgQVND
SUlMaXRlcmFsIHllYXJTdHJpbmcoWWVhcik7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBtb250
aFN0cmluZyhNb250aCk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBkYXlTdHJpbmcoRGF5KTsK
LSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGRheVBlcmlvZFN0cmluZyhEYXlQZXJpb2QpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgaG91clN0cmluZyhIb3VyKTsKLSAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIG1pbnV0ZVN0cmluZyhNaW51dGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2Vj
b25kU3RyaW5nKFNlY29uZCk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0aW1lWm9uZU5hbWVT
dHJpbmcoVGltZVpvbmVOYW1lKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGZvcm1hdFN0eWxl
U3RyaW5nKERhdGVUaW1lU3R5bGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IGhvdXJDeWNsZVN0cmluZyhIb3VyQ3ljbGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggZXJhU3RyaW5nKEVyYSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGggeWVhclN0cmluZyhZZWFyKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBt
b250aFN0cmluZyhNb250aCk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZGF5
U3RyaW5nKERheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZGF5UGVyaW9k
U3RyaW5nKERheVBlcmlvZCk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggaG91
clN0cmluZyhIb3VyKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBtaW51dGVT
dHJpbmcoTWludXRlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzZWNvbmRT
dHJpbmcoU2Vjb25kKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0aW1lWm9u
ZU5hbWVTdHJpbmcoVGltZVpvbmVOYW1lKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExl
bmd0aCBmb3JtYXRTdHlsZVN0cmluZyhEYXRlVGltZVN0eWxlKTsKIAogICAgIHN0YXRpYyBIb3Vy
Q3ljbGUgaG91ckN5Y2xlRnJvbVN5bWJvbChVQ2hhcik7CiAgICAgc3RhdGljIEhvdXJDeWNsZSBw
YXJzZUhvdXJDeWNsZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKaW5kZXggZmJlODZlNGI3ZWFhLi45OTU2
NGJkYmU3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXMuY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAgSlNPYmplY3QqIEludGxEaXNwbGF5
TmFtZXM6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogICAgIHJldHVybiBvcHRpb25zOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1l
czo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxE
aXNwbGF5TmFtZXM6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogewogICAgIHN3aXRjaCAoc3R5
bGUpIHsKICAgICBjYXNlIFN0eWxlOjpOYXJyb3c6CkBAIC0zNzcsMTAgKzM3NywxMCBAQCBBU0NJ
SUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCiAgICAg
ICAgIHJldHVybiAibG9uZyJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjp0
eXBlU3RyaW5nKFR5cGUgdHlwZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERpc3BsYXlO
YW1lczo6dHlwZVN0cmluZyhUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBUeXBlOjpMYW5ndWFnZToKQEAgLTM5NywxMCArMzk3LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJ
bnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuICJk
YXRlVGltZUZpZWxkIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OmZhbGxi
YWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNrKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRs
RGlzcGxheU5hbWVzOjpmYWxsYmFja1N0cmluZyhGYWxsYmFjayBmYWxsYmFjaykKIHsKICAgICBz
d2l0Y2ggKGZhbGxiYWNrKSB7CiAgICAgY2FzZSBGYWxsYmFjazo6Q29kZToKQEAgLTQwOSwxMCAr
NDA5LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpmYWxsYmFja1N0cmluZyhG
YWxsYmFjayBmYWxsYmFjaykKICAgICAgICAgcmV0dXJuICJub25lIl9zOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cisg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRl
cmFsIEludGxEaXNwbGF5TmFtZXM6Omxhbmd1YWdlRGlzcGxheVN0cmluZyhMYW5ndWFnZURpc3Bs
YXkgbGFuZ3VhZ2VEaXNwbGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGlzcGxheU5h
bWVzOjpsYW5ndWFnZURpc3BsYXlTdHJpbmcoTGFuZ3VhZ2VEaXNwbGF5IGxhbmd1YWdlRGlzcGxh
eSkKIHsKICAgICBzd2l0Y2ggKGxhbmd1YWdlRGlzcGxheSkgewogICAgIGNhc2UgTGFuZ3VhZ2VE
aXNwbGF5OjpEaWFsZWN0OgpAQCAtNDIxLDcgKzQyMSw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGlz
cGxheU5hbWVzOjpsYW5ndWFnZURpc3BsYXlTdHJpbmcoTGFuZ3VhZ2VEaXNwbGF5IGxhbmd1YWdl
RGlzCiAgICAgICAgIHJldHVybiAic3RhbmRhcmQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaApp
bmRleCBkODBkYzNkODNhMTUuLmZiMmI2ODc3NGQxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaApAQCAtNjksMTAgKzY5LDEwIEBAIHBy
aXZhdGU6CiAgICAgZW51bSBjbGFzcyBGYWxsYmFjayA6IHVpbnQ4X3QgeyBDb2RlLCBOb25lIH07
CiAgICAgZW51bSBjbGFzcyBMYW5ndWFnZURpc3BsYXkgOiB1aW50OF90IHsgRGlhbGVjdCwgU3Rh
bmRhcmQgfTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOwot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdHlwZVN0cmluZyhUeXBlKTsKLSAgICBzdGF0aWMgQVND
SUlMaXRlcmFsIGZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRl
cmFsIGxhbmd1YWdlRGlzcGxheVN0cmluZyhMYW5ndWFnZURpc3BsYXkpOworICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVND
SUlMaXRlcmFsV2l0aExlbmd0aCB0eXBlU3RyaW5nKFR5cGUpOworICAgIHN0YXRpYyBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIGZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrKTsKKyAgICBzdGF0aWMgQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBsYW5ndWFnZURpc3BsYXlTdHJpbmcoTGFuZ3VhZ2VEaXNwbGF5
KTsKIAogICAgIHVzaW5nIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyID0gSUNVRGVsZXRlcjx1
bGRuX2Nsb3NlPjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VUxvY2FsZURpc3BsYXlOYW1lcywgVUxv
Y2FsZURpc3BsYXlOYW1lc0RlbGV0ZXI+IG1fZGlzcGxheU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwCmluZGV4IGY1YzMwNTcwOThj
OS4uNDZkNzBmMzlkYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bExpc3RGb3JtYXQuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgSlNPYmplY3QqIEludGxMaXN0
Rm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxMaXN0Rm9ybWF0
OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bExp
c3RGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogewogICAgIHN3aXRjaCAoc3R5bGUp
IHsKICAgICBjYXNlIFN0eWxlOjpMb25nOgpAQCAtMzUzLDEwICszNTMsMTAgQEAgQVNDSUlMaXRl
cmFsIEludGxMaXN0Rm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0
dXJuICJuYXJyb3ciX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExl
bmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bExpc3RGb3JtYXQ6OnR5cGVTdHJp
bmcoVHlwZSB0eXBlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTGlzdEZvcm1hdDo6dHlw
ZVN0cmluZyhUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBUeXBl
OjpDb25qdW5jdGlvbjoKQEAgLTM2Nyw3ICszNjcsNyBAQCBBU0NJSUxpdGVyYWwgSW50bExpc3RG
b3JtYXQ6OnR5cGVTdHJpbmcoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gInVuaXQiX3M7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6
Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMaXN0Rm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTGlzdEZvcm1hdC5oCmluZGV4IDhiMjc0MDJmOWQ0MC4uMjQ3YTU0YzA4ZDgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmgKQEAgLTc5LDgg
Kzc5LDggQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgQ29uanVu
Y3Rpb24sIERpc2p1bmN0aW9uLCBVbml0IH07CiAgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4
X3QgeyBTaG9ydCwgTG9uZywgTmFycm93IH07CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHR5
cGVTdHJpbmcoVHlwZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHls
ZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdHlwZVN0cmluZyhUeXBlKTsK
KyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHlsZVN0cmluZyhTdHlsZSk7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VUxpc3RGb3JtYXR0ZXIsIFVMaXN0Rm9ybWF0dGVyRGVsZXRl
cj4gbV9saXN0Rm9ybWF0OwogICAgIFN0cmluZyBtX2xvY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggOTUzYzM5ZmU2
NGE5Li5hMDZlM2I5ZGQ1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0SWRlbnRpZmllcihTdHJpbmdW
aWV3IHVuaXRJZGUKICAgICByZXR1cm4gV2VsbEZvcm1lZFVuaXQobnVtZXJhdG9yVW5pdC52YWx1
ZSgpLCBkZW5vbWluYXRvclVuaXQudmFsdWUoKSk7CiB9CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwg
cGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgSW50bE51bWJlckZvcm1h
dDo6U3R5bGUgc3R5bGUsIGJvb2wgc2lnbiwgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBwYXJ0VHlwZVN0cmluZyhV
TnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwg
Ym9vbCBzaWduLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGUgdHlwZSkKIHsKICAg
ICBzd2l0Y2ggKGZpZWxkKSB7CiAgICAgY2FzZSBVTlVNX0lOVEVHRVJfRklFTEQ6CkBAIC0xMjQ1
LDcgKzEyNDUsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTQogfQogI2VuZGlmCiAKLUFTQ0lJ
TGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5
bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBA
IC0xMjU4LDEwICsxMjU4LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzdHls
ZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJ1bml0Il9zOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlM
aXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURp
c3BsYXkgY3VycmVuY3lEaXNwbGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVy
Rm9ybWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlz
cGxheSkKIHsKICAgICBzd2l0Y2ggKGN1cnJlbmN5RGlzcGxheSkgewogICAgIGNhc2UgQ3VycmVu
Y3lEaXNwbGF5OjpDb2RlOgpAQCAtMTI3NCwxMCArMTI3NCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50
bE51bWJlckZvcm1hdDo6Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJy
ZW5jeURpcwogICAgICAgICByZXR1cm4gIm5hbWUiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51
bWJlckZvcm1hdDo6bm90YXRpb25TdHJpbmcoSW50bE5vdGF0aW9uIG5vdGF0aW9uKQorQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0cmluZyhJbnRsTm90
YXRpb24gbm90YXRpb24pCiB7CiAgICAgc3dpdGNoIChub3RhdGlvbikgewogICAgIGNhc2UgSW50
bE5vdGF0aW9uOjpTdGFuZGFyZDoKQEAgLTEyOTAsMTAgKzEyOTAsMTAgQEAgQVNDSUlMaXRlcmFs
IEludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlvbiBub3RhdGlvbikK
ICAgICAgICAgcmV0dXJuICJjb21wYWN0Il9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxOdW1iZXJG
b3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24gY3VycmVuY3lTaWduKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeVNpZ25TdHJpbmco
Q3VycmVuY3lTaWduIGN1cnJlbmN5U2lnbikKIHsKICAgICBzd2l0Y2ggKGN1cnJlbmN5U2lnbikg
ewogICAgIGNhc2UgQ3VycmVuY3lTaWduOjpTdGFuZGFyZDoKQEAgLTEzMDIsMTAgKzEzMDIsMTAg
QEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJy
ZW5jeVNpZ24gY3VycmVuY3lTaWduKQogICAgICAgICByZXR1cm4gImFjY291bnRpbmciX3M7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6
Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQog
Ci1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcoVW5pdERp
c3BsYXkgdW5pdERpc3BsYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3Jt
YXQ6OnVuaXREaXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5IHVuaXREaXNwbGF5KQogewogICAgIHN3
aXRjaCAodW5pdERpc3BsYXkpIHsKICAgICBjYXNlIFVuaXREaXNwbGF5OjpTaG9ydDoKQEAgLTEz
MTYsMTAgKzEzMTYsMTAgQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnVuaXREaXNw
bGF5U3RyaW5nKFVuaXREaXNwbGF5IHVuaXREaXNwbGF5KQogICAgICAgICByZXR1cm4gImxvbmci
X3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgp
OwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y29tcGFjdERpc3BsYXlTdHJp
bmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IEludGxOdW1iZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5IGNv
bXBhY3REaXNwbGF5KQogewogICAgIHN3aXRjaCAoY29tcGFjdERpc3BsYXkpIHsKICAgICBjYXNl
IENvbXBhY3REaXNwbGF5OjpTaG9ydDoKQEAgLTEzMjgsMTAgKzEzMjgsMTAgQEAgQVNDSUlMaXRl
cmFsIEludGxOdW1iZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5
IGNvbXBhY3REaXNwbGEKICAgICAgICAgcmV0dXJuICJsb25nIl9zOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFs
IEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5IHNpZ25EaXNw
bGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxh
eVN0cmluZyhTaWduRGlzcGxheSBzaWduRGlzcGxheSkKIHsKICAgICBzd2l0Y2ggKHNpZ25EaXNw
bGF5KSB7CiAgICAgY2FzZSBTaWduRGlzcGxheTo6QXV0bzoKQEAgLTEzNDYsMTAgKzEzNDYsMTAg
QEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25E
aXNwbGF5IHNpZ25EaXNwbGF5KQogICAgICAgICByZXR1cm4gIm5lZ2F0aXZlIl9zOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxs
KCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVND
SUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nTW9kZVN0cmluZyhSb3VuZGluZ01v
ZGUgcm91bmRpbmdNb2RlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0
Ojpyb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKIHsKICAgICBz
d2l0Y2ggKHJvdW5kaW5nTW9kZSkgewogICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgpAQCAt
MTM3MiwxMCArMTM3MiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6cm91bmRp
bmdNb2RlU3RyaW5nKFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCiAgICAgICAgIHJldHVybiAi
aGFsZkV2ZW4iX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0
aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmda
ZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5IHRyYWlsaW5nWmVyb0Rpc3BsYXkp
CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVyb0Rp
c3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFpbGluZ1plcm9EaXNwbGF5KQogewog
ICAgIHN3aXRjaCAodHJhaWxpbmdaZXJvRGlzcGxheSkgewogICAgIGNhc2UgVHJhaWxpbmdaZXJv
RGlzcGxheTo6QXV0bzoKQEAgLTEzODQsMTAgKzEzODQsMTAgQEAgQVNDSUlMaXRlcmFsIEludGxO
dW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxh
eSB0cmEKICAgICAgICAgcmV0dXJuICJzdHJpcElmSW50ZWdlciJfczsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJh
bCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5
cGUgcm91bmRpbmdUeXBlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0
Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUgcm91bmRpbmdUeXBlKQog
ewogICAgIHN3aXRjaCAocm91bmRpbmdUeXBlKSB7CiAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czoKQEAgLTEzOTksNyArMTM5OSw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRs
TnVtYmVyRm9ybWF0Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUgcm91
bmRpbmdUCiAgICAgICAgIHJldHVybiAibGVzc1ByZWNpc2lvbiJfczsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6dXNlR3JvdXBpbmdWYWx1ZShWTSYgdm0sIFVzZUdyb3VwaW5nIHVzZUdy
b3VwaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5oCmluZGV4IDY5OTE0ZWFmMzMzNi4uNTg2Y2E5YmEzNzA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC0yMDYsMTEgKzIw
NiwxMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+CiAgICAgZnJp
ZW5kIHZvaWQgYXBwZW5kTnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zVG9Ta2VsZXRvbihJbnRsVHlw
ZSosIFN0cmluZ0J1aWxkZXImKTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25T
dHJpbmcoSW50bE5vdGF0aW9uKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBu
b3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24pOwogCiAgICAgc3RhdGljIEludGxOdW1iZXJGb3Jt
YXQqIHVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCi0g
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGlu
Z1R5cGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHJvdW5kaW5nUHJpb3Jp
dHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSk7CiAKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZv
cm1hdChWTSYsIFN0cnVjdHVyZSopOwpAQCAtMjI3LDE0ICsyMjcsMTQgQEAgcHJpdmF0ZToKICAg
ICBlbnVtIGNsYXNzIFRyYWlsaW5nWmVyb0Rpc3BsYXkgOiB1aW50OF90IHsgQXV0bywgU3RyaXBJ
ZkludGVnZXIgfTsKICAgICBlbnVtIGNsYXNzIFVzZUdyb3VwaW5nIDogdWludDhfdCB7IEZhbHNl
LCBNaW4yLCBBdXRvLCBBbHdheXMgfTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVT
dHJpbmcoU3R5bGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3Ry
aW5nKEN1cnJlbmN5RGlzcGxheSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5jeVNp
Z25TdHJpbmcoQ3VycmVuY3lTaWduKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXREaXNw
bGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBhY3RE
aXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNp
Z25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJv
dW5kaW5nTW9kZVN0cmluZyhSb3VuZGluZ01vZGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwg
dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5KTsKKyAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHlsZVN0cmluZyhTdHlsZSk7CisgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlz
cGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggY3VycmVuY3lTaWduU3Ry
aW5nKEN1cnJlbmN5U2lnbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdW5p
dERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIGNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKKyAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7Cisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggcm91bmRpbmdNb2RlU3RyaW5nKFJvdW5k
aW5nTW9kZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdHJhaWxpbmdaZXJv
RGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5KTsKICAgICBzdGF0aWMgSlNWYWx1ZSB1
c2VHcm91cGluZ1ZhbHVlKFZNJiwgVXNlR3JvdXBpbmcpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpT
Qm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCmluZGV4IDQxYzJiZmRmNmVlNS4uMzZjYjM5
MjhlNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBJbnN0YW5jZVR5cGUqIHVud3JhcEZvckxl
Z2FjeUludGxDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlPgotUmVzdWx0VHlwZSBpbnRsT3B0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHksIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8QVNDSUlMaXRl
cmFsLCBSZXN1bHRUeXBlPj4gdmFsdWVzLCBBU0NJSUxpdGVyYWwgbm90Rm91bmRNZXNzYWdlLCBS
ZXN1bHRUeXBlIGZhbGxiYWNrKQorUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHks
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8QVNDSUlMaXRlcmFsLCBSZXN1bHRUeXBl
Pj4gdmFsdWVzLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG5vdEZvdW5kTWVzc2FnZSwgUmVzdWx0
VHlwZSBmYWxsYmFjaykKIHsKICAgICAvLyBHZXRPcHRpb24gKG9wdGlvbnMsIHByb3BlcnR5LCB0
eXBlPSJzdHJpbmciLCB2YWx1ZXMsIGZhbGxiYWNrKQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTQwMi8jc2VjLWdldG9wdGlvbgpAQCAtMTUyLDcgKzE1Miw3IEBAIFJlc3VsdFR5
cGUgaW50bE9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0
aW9ucywgUHJvcGVydHlOCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGU+Ci1SZXN1
bHRUeXBlIGludGxTdHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVzdWx0VHlw
ZSB0cnVlVmFsdWUsIFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0
PHN0ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJh
bCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCitSZXN1bHRUeXBlIGludGxT
dHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVzdWx0VHlwZSB0cnVlVmFsdWUs
IFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxB
U0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgg
bm90Rm91bmRNZXNzYWdlLCBSZXN1bHRUeXBlIGZhbGxiYWNrKQogewogICAgIC8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvbmVnb3RpYXRpb24vZGlm
Zi5odG1sI3NlYy1nZXRzdHJpbmdvcmJvb2xlYW5vcHRpb24KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRl
eCBlMzI4YTFjMWY0MGMuLmViOTg1NTE0ODM5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKQEAgLTE3NCw3
ICsxNzQsNyBAQCB2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVSZWxhdGl2
ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIH0KIH0KIAotQVNDSUlMaXRl
cmFsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpzdHlsZVN0cmluZyhT
dHlsZSBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAgICAgY2FzZSBTdHlsZTo6TG9u
ZzoKQEAgLTE4NSw3ICsxODUsNyBAQCBBU0NJSUxpdGVyYWwgSW50bFJlbGF0aXZlVGltZUZvcm1h
dDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCiAgICAgICAgIHJldHVybiAibmFycm93Il9zOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0K
IAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLnJlbGF0aXZldGltZWZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKaW5kZXggOWVkMDYxNTgwM2Y2
Li5hMDI4ZDM0NWRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToK
ICAgICB1c2luZyBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVy
PHVyZWxkYXRlZm10X2Nsb3NlPjsKICAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElD
VURlbGV0ZXI8dW51bV9jbG9zZT47CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3Ry
aW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHlsZVN0cmlu
ZyhTdHlsZSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXIsIFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlcj4gbV9yZWxhdGl2ZURhdGVUaW1l
Rm9ybWF0dGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9y
bWF0RGVsZXRlcj4gbV9udW1iZXJGb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCmluZGV4IDhkODVmZTdjOWNjMi4uN2MxZWNhMmExNGY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmNw
cApAQCAtMTUwLDcgKzE1MCw3IEBAIEpTT2JqZWN0KiBJbnRsU2VnbWVudGVyOjpyZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICByZXR1cm4gb3B0
aW9uczsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxTZWdtZW50ZXI6OmdyYW51bGFyaXR5U3RyaW5n
KEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsU2Vn
bWVudGVyOjpncmFudWxhcml0eVN0cmluZyhHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBHcmFudWxhcml0eTo6R3JhcGhlbWU6
CkBAIC0xNjEsNyArMTYxLDcgQEAgQVNDSUlMaXRlcmFsIEludGxTZWdtZW50ZXI6OmdyYW51bGFy
aXR5U3RyaW5nKEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogICAgICAgICByZXR1cm4gInNlbnRl
bmNlIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVND
SUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51
bGwoKTsKIH0KIAogSlNPYmplY3QqIEludGxTZWdtZW50ZXI6OmNyZWF0ZVNlZ21lbnREYXRhT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcsIGludDMy
X3Qgc3RhcnRJbmRleCwgaW50MzJfdCBlbmRJbmRleCwgVUJyZWFrSXRlcmF0b3ImIHNlZ21lbnRl
ciwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudGVyLmgKaW5kZXggZTczMTFhZjgxYmEyLi4wY2JhYTM2MzZkMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmgKQEAgLTY4
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBJbnRsU2VnbWVudGVyKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCi0gICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bCBncmFudWxhcml0eVN0cmluZyhHcmFudWxhcml0eSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bFdpdGhMZW5ndGggZ3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVu
dGVyOwogICAgIFN0cmluZyBtX2xvY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAKaW5kZXggMzE3OTg1ZmZlZDZhLi5hN2EyYjI5MDIzMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgYm9v
bCBKU0FycmF5OjphcHBlbmRNZW1jcHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCB1bnNpZ25lZCBzdGFydEkKICAgICBjaGVja2VkTmV3TGVuZ3RoICs9IG90aGVyTGVuZ3Ro
OwogCiAgICAgaWYgKGNoZWNrZWROZXdMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7Ci0gICAgICAg
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKSk7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxl
bmd0aEVycm9yIH0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB1bnNpZ25l
ZCBuZXdMZW5ndGggPSBjaGVja2VkTmV3TGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlJbmxpbmVzLmgKaW5kZXggZWRlNGRmMDI5MDM4Li4wZjE4YWUxZjE4
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMu
aApAQCAtMTQ1LDcgKzE0NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXNoSW5s
aW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAgICAgICAgIGlm
IChVTkxJS0VMWShsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgICAgICBtZXRo
b2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBsZW5ndGgsIHZhbHVl
LCB0cnVlKTsKICAgICAgICAgICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3Ip
KTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgTGVuZ3RoRXhjZWVkZWRUaGVN
YXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXNo
SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAgICAgICAg
IGlmIChVTkxJS0VMWShsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgICAgICBt
ZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBsZW5ndGgsIHZh
bHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJy
b3IpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgTGVuZ3RoRXhjZWVkZWRU
aGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMjAyLDcgKzIwMiw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5Ojpw
dXNoSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAgICAg
ICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgICAg
ICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBsZW5ndGgs
IHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3Ro
RXJyb3IpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgTGVuZ3RoRXhjZWVk
ZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5
OjpwdXNoSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAg
ICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0
LCBzdG9yYWdlLT5sZW5ndGgoKSwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgLy8gUGVyIEVT
NS4xIDE1LjQuNC43IHN0ZXAgNiAmIDE1LjQuNS4xIHN0ZXAgMy5kLgogICAgICAgICAgICAgaWYg
KCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVuZ3RoRXhj
ZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZmE2MjNlMDkwNzRjLi5k
OWQyYWYzYTYyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTY5MSw3ICs2OTEsNyBAQCBzdGF0aWMgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogdGVtcGxhdGU8RXJyb3JUeXBlIGVycm9yVHlwZT4KIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXRpYWxpemVFcnJvckNvbnN0cnVjdG9yKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXIm
IGluaXQpCiB7Ci0gICAgaW5pdC5zZXRQcm90b3R5cGUoTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNy
ZWF0ZShpbml0LnZtLCBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpKSwgZXJyb3JUeXBlTmFt
ZShlcnJvclR5cGUpKSk7CisgICAgaW5pdC5zZXRQcm90b3R5cGUoTmF0aXZlRXJyb3JQcm90b3R5
cGU6OmNyZWF0ZShpbml0LnZtLCBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGluaXQudm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpKSwgU3RyaW5n
IHsgZXJyb3JUeXBlTmFtZShlcnJvclR5cGUpIH0pKTsKICAgICBpbml0LnNldFN0cnVjdHVyZShF
cnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgaW5pdC5wcm90b3R5
cGUpKTsKICAgICBpbml0LnNldENvbnN0cnVjdG9yKE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJy
b3JUeXBlPjo6Y3JlYXRlKGluaXQudm0sIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBl
Pjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUuY29uc3Ry
dWN0b3IodGhpcykpLCBqc0Nhc3Q8TmF0aXZlRXJyb3JQcm90b3R5cGUqPihpbml0LnByb3RvdHlw
ZSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGQz
M2I3MjI4NjRhOC4uMjZiZGYxMmU5Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTc1LDYgKzc1LDggQEAgc3RydWN0IEhhc2hUYWJsZTsKIHN0cnVjdCBI
YXNoVGFibGVWYWx1ZTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcmKTsKK0pTX0VY
UE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBU
aHJvd1Njb3BlJiwgQVNDSUlMaXRlcmFsKTsKK0pTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiog
dGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwgQVNDSUlMaXRlcmFs
V2l0aExlbmd0aCk7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFs
IE5vbkV4dGVuc2libGVPYmplY3RQcm9wZXJ0eURlZmluZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9S
VF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcjsK
IGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgUmVhZG9ubHlQcm9w
ZXJ0eUNoYW5nZUVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCAyMTNkOWZiN2E2OGEuLjNiNTE4
MDliY2U3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yPGVycm9yVHlwZT46Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cgogCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3JCYXNlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUsIEVycm9yVHlw
ZSBlcnJvclR5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsIGVycm9yVHlw
ZU5hbWUoZXJyb3JUeXBlKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgU3RyaW5nIHsgZXJy
b3JUeXBlTmFtZShlcnJvclR5cGUpIH0sIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3Ry
dWN0dXJlVHJhbnNpdGlvbik7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKICAg
ICAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rp
b24uY3BwCmluZGV4IGYyMTliOTMyNmJiZC4uOGJhMTEyMjIxNGZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTk0
LDcgKzk0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUaHJvd0Vycm9yLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW0KICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxl
ZCBmcm9tIElDLiBBbmQgd2UgZG8gbm90IHdhbnQgdG8gaW5jbHVkZSB0aGlzIGZyYW1lIGluIEVy
cm9yJ3Mgc3RhY2suCiAgICAgY29uc3RleHByIGJvb2wgdXNlQ3VycmVudEZyYW1lID0gZmFsc2U7
Ci0gICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgRXJyb3JJbnN0YW5jZTo6
Y3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJy
b3JUeXBlOjpUeXBlRXJyb3IpLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvciwgSlNWYWx1ZSgp
LCBudWxscHRyLCBUeXBlTm90aGluZywgRXJyb3JUeXBlOjpUeXBlRXJyb3IsIHVzZUN1cnJlbnRG
cmFtZSkpOworICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIEVycm9ySW5z
dGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0
dXJlKEVycm9yVHlwZTo6VHlwZUVycm9yKSwgU3RyaW5nIHsgUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IgfSwgSlNWYWx1ZSgpLCBudWxscHRyLCBUeXBlTm90aGluZywgRXJyb3JUeXBlOjpUeXBl
RXJyb3IsIHVzZUN1cnJlbnRGcmFtZSkpOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApp
bmRleCAzY2U3NjEyNDJjMzIuLjllOTYxNDQzMDg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtMjYsNiArMjYs
NyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIEFTQ0lJTGl0ZXJhbDsKK2NsYXNzIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGg7CiBjbGFzcyBBYnN0cmFjdExvY2tlcjsKIGNsYXNzIEF0b21TdHJp
bmc7CiBjbGFzcyBBdG9tU3RyaW5nSW1wbDsKQEAgLTEyMSw2ICsxMjIsNyBAQCB0ZW1wbGF0ZTxj
bGFzcz4gY2xhc3MgdW5leHBlY3RlZDsKIH19fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBlcmltZW50
YWw6OmZ1bmRhbWVudGFsc192MwogCiB1c2luZyBXVEY6OkFTQ0lJTGl0ZXJhbDsKK3VzaW5nIFdU
Rjo6QVNDSUlMaXRlcmFsV2l0aExlbmd0aDsKIHVzaW5nIFdURjo6QWJzdHJhY3RMb2NrZXI7CiB1
c2luZyBXVEY6OkF0b21TdHJpbmc7CiB1c2luZyBXVEY6OkF0b21TdHJpbmdJbXBsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuY3BwCmluZGV4IDY4N2MxNzlhNWMxNC4uNTVkYzMyOTkwOTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuY3BwCkBAIC0zMCw2ICszMCwxMSBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAordm9pZCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fY2hhcmFjdGVycyk7Cit9
CisKIHZvaWQgQVNDSUlMaXRlcmFsOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAg
ICAgb3V0LnByaW50KG1fY2hhcmFjdGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaApp
bmRleCA1YzIzN2YzMDllMWIuLjcwNzA5NjVmMWY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0
ZXJhbC5oCkBAIC0zMyw4ICszMyw0NiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUHJpbnRT
dHJlYW07CiAKK2NsYXNzIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZmluYWwgeworcHVibGljOgor
ICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9
CisKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZnJvbUxpdGVy
YWxVbnNhZmUoY29uc3QgY2hhciogc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggeyBzdHJpbmcsIGxlbmd0aCB9OworICAg
IH0KKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbnVs
bCgpCisgICAgeworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB7IG51bGxw
dHIsIDAgfTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9jaGFyYWN0ZXJzOyB9CisKKyAgICBjb25zdGV4cHIgY29uc3QgY2hhciogY2hhcmFj
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNvbnN0IExDaGFyKiBj
aGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KG1f
Y2hhcmFjdGVycyk7IH0KKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5n
dGg7IH0KKworICAgIGNvbnN0ZXhwciBjaGFyIGNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBj
b25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnNbaW5kZXhdOyB9CisKK3ByaXZhdGU6CisgICAgY29u
c3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6
ZV90IGxlbmd0aCkKKyAgICAgICAgOiBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykKKyAgICAgICAg
LCBtX2xlbmd0aChsZW5ndGgpCisgICAgeyB9CisKKyAgICBjb25zdCBjaGFyKiBtX2NoYXJhY3Rl
cnM7CisgICAgc2l6ZV90IG1fbGVuZ3RoOworfTsKKwogY2xhc3MgQVNDSUlMaXRlcmFsIGZpbmFs
IHsKIHB1YmxpYzoKKyAgICBjb25zdGV4cHIgQVNDSUlMaXRlcmFsKEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGggb3RoZXIpCisgICAgICAgIDogbV9jaGFyYWN0ZXJzKG90aGVyLmNoYXJhY3RlcnMoKSkK
KyAgICB7IH0KKwogICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFyYWN0ZXJzOyB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBmcm9tTGl0
ZXJhbFVuc2FmZShjb25zdCBjaGFyKiBzdHJpbmcpCkBAIC02NSwxNSArMTAzLDEzIEBAIHByaXZh
dGU6CiAKIGlubGluZSBuYW1lc3BhY2UgU3RyaW5nTGl0ZXJhbHMgewogCi1jb25zdGV4cHIgQVND
SUlMaXRlcmFsIG9wZXJhdG9yIiIgX3MoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IG4p
Citjb25zdGV4cHIgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBvcGVyYXRvciIiIF9zKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKQogICAgICAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQo
aXNBU0NJSShjaGFyYWN0ZXJzW2ldKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShuKTsKICNl
bmRpZgotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6OmZyb21MaXRlcmFsVW5zYWZlKGNoYXJhY3Rl
cnMpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpmcm9tTGl0ZXJhbFVuc2Fm
ZShjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCiB9IC8vIGlubGluZSBTdHJpbmdMaXRlcmFscwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRleCAzM2IwZTU5NThkODMuLjJiNGYzMzc3NDlhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTczLDcgKzczLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoKGNoYXJhY3RlckNvdW50IC0gMSA8PSAoKHVuc2lnbmVkKH4w
KSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoTENoYXIpKSksIEF0b21TdHJpbmdGcm9t
TGl0ZXJhbENhbm5vdE92ZXJmbG93KTsKICAgICB9CiAKLSAgICBBdG9tU3RyaW5nKEFTQ0lJTGl0
ZXJhbCBsaXRlcmFsKQorICAgIGV4cGxpY2l0IEF0b21TdHJpbmcoQVNDSUlMaXRlcmFsIGxpdGVy
YWwpCisgICAgICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFkZExpdGVyYWwobGl0ZXJh
bC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpKQorICAgIHsKKyAgICB9CisKKyAgICBB
dG9tU3RyaW5nKEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbGl0ZXJhbCkKICAgICAgICAgOiBtX3N0
cmluZyhBdG9tU3RyaW5nSW1wbDo6YWRkTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0
ZXJhbC5sZW5ndGgoKSkpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaAppbmRleCBlMmMyNTRhNzY1NjAuLmI5NDRmYmNjOTk5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaApAQCAtNzUsNiArNzUsMjMgQEAgcHJpdmF0ZToK
ICAgICBVQ2hhciBtX2NoYXJhY3RlcjsKIH07CiAKK3RlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlw
ZUFkYXB0ZXI8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgdm9pZD4geworcHVibGljOgorICAgIFN0
cmluZ1R5cGVBZGFwdGVyKEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbGl0ZXJhbCkKKyAgICAgICAg
OiBtX2NoYXJhY3RlcnMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGxpdGVyYWwuY2hh
cmFjdGVycygpKSkKKyAgICAgICAgLCBtX2xlbmd0aChsaXRlcmFsLmxlbmd0aCgpKQorICAgIHsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsg
fQorICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0
aW5hdGlvbikgY29uc3QgeyBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwg
bV9jaGFyYWN0ZXJzLCBtX2xlbmd0aCk7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBMQ2hhciog
bV9jaGFyYWN0ZXJzOworICAgIHVuc2lnbmVkIG1fbGVuZ3RoOworfTsKKwogdGVtcGxhdGU8PiBj
bGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBMQ2hhciosIHZvaWQ+IHsKIHB1YmxpYzoKICAg
ICBTdHJpbmdUeXBlQWRhcHRlcihjb25zdCBMQ2hhciogY2hhcmFjdGVycykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2UyNi4uNDYyMDEzZGU1YjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTE2MywxMSArMTYzLDYgQEAgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMp
CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGNoYXJhY3RlcnMsIHN0cmxlbihjaGFyYWN0
ZXJzKSk7CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bChBU0NJSUxpdGVyYWwgbGl0ZXJhbCkKLXsKLSAgICByZXR1cm4gY3JlYXRlRnJvbUxpdGVyYWwo
bGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpOwotfQotCiBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKaW5kZXggYzc2Y2Q1MjM2NzYxLi4yMjI5YmNlMzgxYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCkBAIC0yNTAsNyArMjUwLDggQEAgcHVibGljOgogICAgIC8vIEZJWE1F
OiBSZXBsYWNlIGNhbGxzIHRvIHRoZXNlIG92ZXJsb2FkcyBvZiBjcmVhdGVGcm9tTGl0ZXJhbCB0
byBjcmVhdGVXaXRob3V0Q29weWluZyBpbnN0ZWFkLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0lt
cGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChBU0NJSUxpdGVyYWwp
OworICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoQVNDSUlMaXRl
cmFsIGxpdGVyYWwpIHsgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGxpdGVyYWwuY2hhcmFjdGVy
cygpLCBsaXRlcmFsLmxlbmd0aCgpKTsgfQorICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlRnJvbUxpdGVyYWwoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBsaXRlcmFsKSB7IHJldHVybiBj
cmVhdGVGcm9tTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0ZXJhbC5sZW5ndGgoKSk7
IH0KIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWlu
Zyhjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdP
cGVyYXRvcnMuaAppbmRleCAyNTU0YmI0ZDNmMmMuLjIyZjEzYzgzYmM0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdPcGVyYXRvcnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oCkBAIC0xNjQsNiArMTY0LDI4IEBAIGlubGluZSBTdHJp
bmdBcHBlbmQ8QVNDSUlMaXRlcmFsLCBTdHJpbmdBcHBlbmQ8VSwgVj4+IG9wZXJhdG9yKyhjb25z
dCBBU0NJSUxpdGVyCiAgICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIFN0cmlu
Z0FwcGVuZDxVLCBWPj4oc3RyaW5nMSwgc3RyaW5nMik7CiB9CiAKK2lubGluZSBTdHJpbmdBcHBl
bmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nPiBvcGVyYXRvcisoY29uc3QgQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCYgc3RyaW5nMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcyKQoreworICAg
IHJldHVybiBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nPihzdHJp
bmcxLCBzdHJpbmcyKTsKK30KKworaW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoLCBBdG9tU3RyaW5nPiBvcGVyYXRvcisoY29uc3QgQVNDSUlMaXRlcmFsV2l0aExlbmd0
aCYgc3RyaW5nMSwgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nMikKK3sKKyAgICByZXR1cm4gU3Ry
aW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIEF0b21TdHJpbmc+KHN0cmluZzEsIHN0
cmluZzIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19zYW1lPHN0ZDo6ZGVjYXlfdDxUPiwgU3RyaW5nVmlldz46OnZhbHVlPj4K
K2lubGluZSBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nVmlldz4g
b3BlcmF0b3IrKGNvbnN0IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgmIHN0cmluZzEsIFQgc3RyaW5n
MikKK3sKKyAgICByZXR1cm4gU3RyaW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIFN0
cmluZ1ZpZXc+KHN0cmluZzEsIHN0cmluZzIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgoraW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoLCBT
dHJpbmdBcHBlbmQ8VSwgVj4+IG9wZXJhdG9yKyhjb25zdCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
JiBzdHJpbmcxLCBjb25zdCBTdHJpbmdBcHBlbmQ8VSwgVj4mIHN0cmluZzIpCit7CisgICAgcmV0
dXJuIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoLCBTdHJpbmdBcHBlbmQ8VSwg
Vj4+KHN0cmluZzEsIHN0cmluZzIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogU3RyaW5n
QXBwZW5kPFN0cmluZywgVD4gb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwgVCBzdHJp
bmcyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA0NDhhZjc2ODlmNzQuLjMxMzFm
NWFjNWJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVi
bGljOgogICAgIFN0cmluZ1ZpZXcoY29uc3QgY2hhciopOwogICAgIFN0cmluZ1ZpZXcoY29uc3Qg
Y2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgZXhwbGljaXQgU3RyaW5nVmlldyhBU0NJSUxp
dGVyYWwpOworICAgIGV4cGxpY2l0IFN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCk7
CiAKICAgICBzdGF0aWMgU3RyaW5nVmlldyBlbXB0eSgpOwogCkBAIC0zNjAsNiArMzYxLDExIEBA
IGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCBzdHJpbmcpCiAgICAg
aW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIH0KIAor
aW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHJp
bmcpCit7CisgICAgaW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0
aCgpKTsKK30KKwogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1w
bCYgc3RyaW5nKQogewogICAgIHNldFVuZGVybHlpbmdTdHJpbmcoJnN0cmluZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAppbmRleCA1MTFiOWMxNjRhMWEuLjNmY2U2ODQ1MzgyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCkBAIC05Nyw3ICs5Nyw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcoU3Rh
dGljU3RyaW5nSW1wbCopOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZyb20gYSBjb25z
dGFudCBzdHJpbmcgbGl0ZXJhbC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKEFTQ0lJ
TGl0ZXJhbCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhBU0NJSUxp
dGVyYWwpOworICAgIFN0cmluZyhBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0cmluZykgOiBtX2lt
cGwoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc3RyaW5nKSkgeyB9CiAKICAgICAvLyBD
b25zdHJ1Y3QgYSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgogICAgIC8v
IFRoaXMgaXMgdGhlICJiaWciIHZlcnNpb246IHB1dHMgdGhlIGxlbmd0aCBpbiB0aGUgZnVuY3Rp
b24gY2FsbCBhbmQgZ2VuZXJhdGVzIGJpZ2dlciBjb2RlLgpAQCAtMzYxLDkgKzM2MiwxMSBAQCBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7
IHJldHVybiBlcXVhbChhLmltcGwoKQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJp
bmcmIGEsIGNvbnN0IExDaGFyKiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYik7IH0KIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJl
dHVybiBlcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsg
fQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIEFTQ0lJTGl0ZXJhbCBi
KSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGIuY2hhcmFjdGVycygpKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5n
JiBhLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBi
LmNoYXJhY3RlcnMoKSwgYi5sZW5ndGgoKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgTENoYXIqIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYSwgYi5pbXBsKCkp
OyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoYXIqIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpLCBiLmlt
cGwoKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IFN0
cmluZyYgYikgeyByZXR1cm4gZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEu
Y2hhcmFjdGVycygpKSwgYi5pbXBsKCkpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChiLmlt
cGwoKSwgYS5jaGFyYWN0ZXJzKCksIGEubGVuZ3RoKCkpOyB9CiB0ZW1wbGF0ZTxzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPGNoYXIsIGlu
bGluZUNhcGFjaXR5PiYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChiLmltcGwo
KSwgYS5kYXRhKCksIGEuc2l6ZSgpKTsgfQogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5
PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVmVjdG9yPGNo
YXIsIGlubGluZUNhcGFjaXR5PiYgYikgeyByZXR1cm4gYiA9PSBhOyB9CiAKQEAgLTM3MSw5ICsz
NzQsMTEgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0
cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgKIGlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU3RyaW5nJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgp
LCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IGNo
YXIqIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGIpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIEFT
Q0lJTGl0ZXJhbCBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihiLmNoYXJhY3RlcnMoKSkpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBiKSB7IHJldHVybiAhZXF1
YWwoYS5pbXBsKCksIGIuY2hhcmFjdGVycygpLCBiLmxlbmd0aCgpKTsgfQogaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBMQ2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1
YWwoYSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGEs
IGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihhKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KEFTQ0lJTGl0
ZXJhbCBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oYS5jaGFyYWN0ZXJzKCkpLCBiLmltcGwoKSk7IH0KK2lubGluZSBib29s
IG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhLCBjb25zdCBTdHJpbmcmIGIpIHsg
cmV0dXJuICFlcXVhbChiLmltcGwoKSwgYS5jaGFyYWN0ZXJzKCksIGEubGVuZ3RoKCkpOyB9CiB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJl
dHVybiAhKGEgPT0gYik7IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxp
bmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIgIT0gYTsgfQogCkBAIC02MjgsOSArNjMzLDkgQEAg
dGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFMKIAogaW5saW5lIG5hbWVzcGFjZSBTdHJpbmdMaXRlcmFs
cyB7CiAKLWlubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNoYXIqIGNoYXJhY3Rl
cnMsIHNpemVfdCkKK2lubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6ZnJv
bUxpdGVyYWxVbnNhZmUoY2hhcmFjdGVycyk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6OmZyb21MaXRlcmFsVW5zYWZlKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKIH0gLy8g
aW5saW5lIFN0cmluZ0xpdGVyYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5jcHAKaW5kZXggYjBkMWQ4MmU4ZWVjLi4xYTI4ODU2YTkyYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVPcHRpb25z
KGNvbnN0IEluaXQmIGluaXQpCiAKIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxFeGNlcHRp
b24+IHByb2Nlc3NJbnZhbGlkU2lnbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
CiB7Ci0gICAgQVNDSUlMaXRlcmFsIG1lc3NhZ2UgeyAiRmV0Y2hSZXF1ZXN0SW5pdC5zaWduYWwg
c2hvdWxkIGJlIHVuZGVmaW5lZCwgbnVsbCBvciBhbiBBYm9ydFNpZ25hbCBvYmplY3QuIFRoaXMg
d2lsbCB0aHJvdyBpbiBhIGZ1dHVyZSByZWxlYXNlLiJfcyB9OworICAgIGF1dG8gbWVzc2FnZSA9
ICJGZXRjaFJlcXVlc3RJbml0LnNpZ25hbCBzaG91bGQgYmUgdW5kZWZpbmVkLCBudWxsIG9yIGFu
IEFib3J0U2lnbmFsIG9iamVjdC4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2Uu
Il9zOwogICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CiAKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNv
bnRleHQpICYmIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5xdWlya3MoKS5zaG91bGRJZ25v
cmVJbnZhbGlkU2lnbmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb24uY3BwCmluZGV4IGNkMzcyZjQzNjkxYS4uNzI2MmE1MmZjMWFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
LmNwcApAQCAtMzgzLDcgKzM4Myw3IEBAIGJvb2wgR2VvbG9jYXRpb246OnNob3VsZEJsb2NrR2Vv
bG9jYXRpb25SZXF1ZXN0cygpCiB2b2lkIEdlb2xvY2F0aW9uOjpzdGFydFJlcXVlc3QoR2VvTm90
aWZpZXIqIG5vdGlmaWVyKQogewogICAgIGlmIChzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVz
dHMoKSkgewotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0
aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVO
SUVELCBvcmlnaW5DYW5ub3RSZXF1ZXN0R2VvbG9jYXRpb25FcnJvck1lc3NhZ2UpKTsKKyAgICAg
ICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVh
dGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgU3RyaW5nIHsg
b3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNzYWdlIH0pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBkb2N1bWVudCgpLT5zZXRHZW9sb2NhdGlvbkFjY2Vzc2VkKCk7
CkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RhcnRSZXF1ZXN0KEdlb05v
dGlmaWVyKiBub3RpZmllcikKICAgICAvLyBDaGVjayB3aGV0aGVyIHBlcm1pc3Npb25zIGhhdmUg
YWxyZWFkeSBiZWVuIGRlbmllZC4gTm90ZSB0aGF0IGlmIHRoaXMgaXMgdGhlIGNhc2UsCiAgICAg
Ly8gdGhlIHBlcm1pc3Npb24gc3RhdGUgY2FuIG5vdCBjaGFuZ2UgYWdhaW4gaW4gdGhlIGxpZmV0
aW1lIG9mIHRoaXMgcGFnZS4KICAgICBpZiAoaXNEZW5pZWQoKSkKLSAgICAgICAgbm90aWZpZXIt
PnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgcGVybWlzc2lvbkRlbmllZEVycm9y
TWVzc2FnZSkpOworICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05f
REVOSUVELCBTdHJpbmcgeyBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlIH0pKTsKICAgICBl
bHNlIGlmIChoYXZlU3VpdGFibGVDYWNoZWRQb3NpdGlvbihub3RpZmllci0+b3B0aW9ucygpKSkK
ICAgICAgICAgbm90aWZpZXItPnNldFVzZUNhY2hlZFBvc2l0aW9uKCk7CiAgICAgZWxzZSBpZiAo
bm90aWZpZXItPmhhc1plcm9UaW1lb3V0KCkpCkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBHZW9s
b2NhdGlvbjo6c3RhcnRSZXF1ZXN0KEdlb05vdGlmaWVyKiBub3RpZmllcikKICAgICB9IGVsc2Ug
aWYgKHN0YXJ0VXBkYXRpbmcobm90aWZpZXIpKQogICAgICAgICBub3RpZmllci0+c3RhcnRUaW1l
cklmTmVlZGVkKCk7CiAgICAgZWxzZQotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihH
ZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6
OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSkp
OworICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJy
b3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxF
LCBTdHJpbmcgeyBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSB9KSk7CiB9CiAKIHZv
aWQgR2VvbG9jYXRpb246OmZhdGFsRXJyb3JPY2N1cnJlZChHZW9Ob3RpZmllciogbm90aWZpZXIp
CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6cmVxdWVzdFVzZXNDYWNoZWRQ
b3NpdGlvbihHZW9Ob3RpZmllciogbm90aWZpZXIpCiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYXN5
bmNocm9ub3VzbHksIHNvIHRoZSBwZXJtaXNzaW9ucyBjb3VsZCBoYXZlIGJlZW4gZGVuaWVkCiAg
ICAgLy8gc2luY2Ugd2UgbGFzdCBjaGVja2VkIGluIHN0YXJ0UmVxdWVzdC4KICAgICBpZiAoaXNE
ZW5pZWQoKSkgewotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05f
REVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIG5vdGlmaWVy
LT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0
aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIFN0cmluZyB7IHBlcm1pc3Npb25E
ZW5pZWRFcnJvck1lc3NhZ2UgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTMs
NyArNDUzLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6bWFrZUNhY2hlZFBvc2l0aW9uQ2FsbGJhY2tz
KCkKICAgICAgICAgICAgIGlmIChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQoKSB8fCBzdGFydFVw
ZGF0aW5nKG5vdGlmaWVyLmdldCgpKSkKICAgICAgICAgICAgICAgICBub3RpZmllci0+c3RhcnRU
aW1lcklmTmVlZGVkKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbm90aWZp
ZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9j
YXRpb25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRSwgZmFpbGVkVG9TdGFydFNl
cnZpY2VFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICBub3RpZmllci0+c2V0RmF0YWxF
cnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9u
RXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBTdHJpbmcgeyBmYWlsZWRUb1N0YXJ0U2Vydmlj
ZUVycm9yTWVzc2FnZSB9KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUxNyw3ICs1MTcsNyBA
QCB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbikKICAgICB9CiAKICAgICBpZiAoIWlzQWxsb3dlZCgpKSB7
Ci0gICAgICAgIGF1dG8gZXJyb3IgPSBHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShH
ZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBwZXJtaXNzaW9uRGVu
aWVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgYXV0byBlcnJvciA9IEdlb2xvY2F0aW9uUG9zaXRp
b25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5J
RUQsIFN0cmluZyB7IHBlcm1pc3Npb25EZW5pZWRFcnJvck1lc3NhZ2UgfSk7CiAgICAgICAgIGVy
cm9yLT5zZXRJc0ZhdGFsKHRydWUpOwogICAgICAgICBoYW5kbGVFcnJvcihlcnJvcik7CiAgICAg
ICAgIG1fcmVxdWVzdHNBd2FpdGluZ0NhY2hlZFBvc2l0aW9uLmNsZWFyKCk7CkBAIC01NzYsNyAr
NTc2LDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RvcFRpbWVycygpCiB2b2lkIEdlb2xvY2F0aW9u
OjpjYW5jZWxSZXF1ZXN0cyhHZW9Ob3RpZmllclZlY3RvciYgbm90aWZpZXJzKQogewogICAgIGZv
ciAoYXV0byYgbm90aWZpZXIgOiBub3RpZmllcnMpCi0gICAgICAgIG5vdGlmaWVyLT5zZXRGYXRh
bEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRp
b25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIGZyYW1lbGVzc0RvY3VtZW50RXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRp
b25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJ
TEFCTEUsIFN0cmluZyB7IGZyYW1lbGVzc0RvY3VtZW50RXJyb3JNZXNzYWdlIH0pKTsKIH0KIAog
dm9pZCBHZW9sb2NhdGlvbjo6Y2FuY2VsQWxsUmVxdWVzdHMoKQpAQCAtNzUxLDkgKzc1MSw5IEBA
IHZvaWQgR2VvbG9jYXRpb246OmhhbmRsZVBlbmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCkKICAg
ICAgICAgICAgIGlmIChzdGFydFVwZGF0aW5nKG5vdGlmaWVyLmdldCgpKSkKICAgICAgICAgICAg
ICAgICBub3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlv
bkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlM
QUJMRSwgZmFpbGVkVG9TdGFydFNlcnZpY2VFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAg
ICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0
ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBTdHJpbmcg
eyBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSB9KSk7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVy
cm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwg
cGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAgbm90aWZpZXItPnNl
dEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Q
b3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgU3RyaW5nIHsgcGVybWlzc2lvbkRlbmll
ZEVycm9yTWVzc2FnZSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKaW5kZXggZGNhN2U0NmM0
OGE4Li5jM2Q1M2E2YjE0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBI
aWdobGlnaHRSZWdpc3Rlcjo6c2V0SGlnaGxpZ2h0VmlzaWJpbGl0eShIaWdobGlnaHRWaXNpYmls
aXR5IGhpZ2hsaWdodFZpc2kKICAgICAgICAgaGlnaGxpZ2h0LnZhbHVlLT5yZXBhaW50KCk7CiB9
CiAjZW5kaWYKLXN0YXRpYyBBU0NJSUxpdGVyYWwgYW5ub3RhdGlvbkhpZ2hsaWdodEtleSgpCitz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhbm5vdGF0aW9uSGlnaGxpZ2h0S2V5KCkKIHsK
ICAgICByZXR1cm4gImFubm90YXRpb25IaWdobGlnaHRLZXkiX3M7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDM5YzE0N2RhYTc4Yy4uNmE2ZmQyNmQwMTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRCbG9iVGFibGVzKCkKICAgICAg
ICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZChibG9iUmVjb3Jkc1RhYmxlU2NoZW1h
KCkpKQogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCBtYWtlU3Ry
aW5nKCJFcnJvciBjcmVhdGluZyBCbG9iUmVjb3JkcyB0YWJsZSAoIiwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yKCksICIpIC0gIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpIH07CiAKLSAgICAg
ICAgcmVjb3Jkc1RhYmxlU3RhdGVtZW50ID0gYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgpOworICAg
ICAgICByZWNvcmRzVGFibGVTdGF0ZW1lbnQgPSBTdHJpbmcgeyBibG9iUmVjb3Jkc1RhYmxlU2No
ZW1hKCkgfTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVChyZWNvcmRzVGFibGVTdGF0ZW1l
bnQgPT0gYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgpIHx8IHJlY29yZHNUYWJsZVN0YXRlbWVudCA9
PSBibG9iUmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkpOwpAQCAtMzA5LDcgKzMwOSw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRCbG9iVGFibGVzKCkK
ICAgICAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZChibG9iRmlsZXNUYWJsZVNj
aGVtYSgpKSkKICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgbWFr
ZVN0cmluZygiRXJyb3IgY3JlYXRpbmcgQmxvYkZpbGVzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3IoKSwgIikgLSAiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKIAotICAg
ICAgICBmaWxlc1RhYmxlU3RhdGVtZW50ID0gYmxvYkZpbGVzVGFibGVTY2hlbWEoKTsKKyAgICAg
ICAgZmlsZXNUYWJsZVN0YXRlbWVudCA9IFN0cmluZyB7IGJsb2JGaWxlc1RhYmxlU2NoZW1hKCkg
fTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVChmaWxlc1RhYmxlU3RhdGVtZW50ID09IGJs
b2JGaWxlc1RhYmxlU2NoZW1hKCkgfHwgZmlsZXNUYWJsZVN0YXRlbWVudCA9PSBibG9iRmlsZXNU
YWJsZVNjaGVtYUFsdGVybmF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCmluZGV4IDE4ZWQ3ZTIxYjM1NS4uYWQxZTM4
NjM3M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJFcnJvci5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQCBTdHJpbmcgSURCRXJyb3I6Om5h
bWUoKSBjb25zdAogewogICAgIGlmICghbV9jb2RlKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IHJldHVybiBET01FeGNlcHRpb246Om5hbWUobV9jb2RlLnZhbHVlKCkpOworICAgIHJldHVybiBT
dHJpbmcgeyBET01FeGNlcHRpb246Om5hbWUobV9jb2RlLnZhbHVlKCkpIH07CiB9CiAKIFN0cmlu
ZyBJREJFcnJvcjo6bWVzc2FnZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvZGUpCiAgICAgICAg
IHJldHVybiB7IH07Ci0gICAgcmV0dXJuIERPTUV4Y2VwdGlvbjo6bWVzc2FnZShtX2NvZGUudmFs
dWUoKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IERPTUV4Y2VwdGlvbjo6bWVzc2FnZShtX2NvZGUu
dmFsdWUoKSkgfTsKIH0KIAogUmVmUHRyPERPTUV4Y2VwdGlvbj4gSURCRXJyb3I6OnRvRE9NRXhj
ZXB0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01FeGNlcHRpb25IYW5kbGluZy5jcHAKaW5kZXggNzNmNmNjNjVkNTRjLi5lODE4OWI0MzMzNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFu
ZGxpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuY3BwCkBAIC0yMTcsMTkgKzIxNywxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBT
dHJpbmdUeXBlcz4gc3RhdGljIFN0cmluZyBtYWtlQXJndW1lbnRUeXBlRXJyb3JNZXNzYWdlKHVu
cwogdm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBtZXNz
YWdlKQogewogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uRXhjZXB0VGVybWluYXRpb24oKTsK
LSAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZURP
TUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgTm90U3VwcG9ydGVkRXJyb3IsIG1lc3Nh
Z2UpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgTm90U3VwcG9ydGVkRXJyb3Is
IFN0cmluZyB7IG1lc3NhZ2UgfSkpOwogfQogCiB2b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3Io
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCiB7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJbnZhbGlkU3RhdGVFcnJvciwgbWVzc2FnZSkpOworICAgIHRocm93RXhjZXB0aW9uKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJbnZhbGlkU3RhdGVFcnJvciwgU3RyaW5nIHsgbWVzc2FnZSB9KSk7CiB9CiAKIHZv
aWQgdGhyb3dTZWN1cml0eUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0aW9uKCk7Ci0gICAgdGhy
b3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVET01FeGNlcHRp
b24oJmxleGljYWxHbG9iYWxPYmplY3QsIFNlY3VyaXR5RXJyb3IsIG1lc3NhZ2UpKTsKKyAgICB0
aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2Vw
dGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgU2VjdXJpdHlFcnJvciwgU3RyaW5nIHsgbWVzc2Fn
ZSB9KSk7CiB9CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1F
cnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVu
dE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFZhbHVlcykKQEAgLTMxMSw3ICszMTEsNyBA
QCBKU0M6OkVuY29kZWRKU1ZhbHVlIHJlamVjdFByb21pc2VXaXRoVGhpc1R5cGVFcnJvcihKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsRwogdm9pZCB0aHJvd0RPTVN5bnRheEVycm9yKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQogewogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
RXhjZXB0VGVybWluYXRpb24oKTsKLSAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgU3lu
dGF4RXJyb3IsIG1lc3NhZ2UpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgU3lu
dGF4RXJyb3IsIFN0cmluZyB7IG1lc3NhZ2UgfSkpOwogfQogCiB2b2lkIHRocm93RGF0YUNsb25l
RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdE1vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRN
b2R1bGVMb2FkZXIuY3BwCmluZGV4IDcwMWQzOWMwOGIwYi4uODI4M2Y5Yzk5ZmI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCBKU0M6OklkZW50aWZpZXIgU2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNv
bHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlc3VsdC0+c3RyaW5nKCkpOwogfQogCi1zdGF0
aWMgdm9pZCByZWplY3RUb1Byb3BhZ2F0ZU5ldHdvcmtFcnJvcihEZWZlcnJlZFByb21pc2UmIGRl
ZmVycmVkLCBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kIGZhaWx1cmVLaW5kLCBBU0NJSUxpdGVyYWwg
bWVzc2FnZSkKK3N0YXRpYyB2b2lkIHJlamVjdFRvUHJvcGFnYXRlTmV0d29ya0Vycm9yKERlZmVy
cmVkUHJvbWlzZSYgZGVmZXJyZWQsIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQgZmFpbHVyZUtpbmQs
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbWVzc2FnZSkKIHsKICAgICBkZWZlcnJlZC5yZWplY3RX
aXRoQ2FsbGJhY2soWyZdIChKU0RPTUdsb2JhbE9iamVjdCYganNHbG9iYWxPYmplY3QpIHsKICAg
ICAgICAgLy8gV2UgYW5ub3RhdGUgZXhjZXB0aW9uIHdpdGggc3BlY2lhbCBwcml2YXRlIHN5bWJv
bC4gSXQgYWxsb3dzIHVzIHRvIGRpc3Rpbmd1aXNoIHRoZXNlIGVycm9ycyBmcm9tIHRoZSB1c2Vy
IHRocm93biBvbmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCmluZGV4IDBjYTYxYzEwMTRkMi4u
N2RmZWEwZDVkMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IHN0YXRpYyB2b2lkIHdyaXRlTGVuZ3RoVG9WZWN0b3JBdE9mZnNldChWZWN0b3I8dWludDhfdD4m
IHZlY3Rvciwgc2l6ZV90IG9mZnNldCkKIAogRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVyc0FjdGlvbiwg
c3RkOjplcnJvcl9jb2RlPiBNb2RpZnlIZWFkZXJzQWN0aW9uOjpwYXJzZShjb25zdCBKU09OOjpP
YmplY3QmIG1vZGlmeUhlYWRlcnMpCiB7Ci0gICAgYXV0byBwYXJzZUhlYWRlcnMgPSBbXSAoY29u
c3QgSlNPTjo6T2JqZWN0JiBtb2RpZnlIZWFkZXJzLCBBU0NJSUxpdGVyYWwgYXJyYXlOYW1lKSAt
PiBFeHBlY3RlZDxWZWN0b3I8TW9kaWZ5SGVhZGVySW5mbz4sIHN0ZDo6ZXJyb3JfY29kZT4gewor
ICAgIGF1dG8gcGFyc2VIZWFkZXJzID0gW10gKGNvbnN0IEpTT046Ok9iamVjdCYgbW9kaWZ5SGVh
ZGVycywgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhcnJheU5hbWUpIC0+IEV4cGVjdGVkPFZlY3Rv
cjxNb2RpZnlIZWFkZXJJbmZvPiwgc3RkOjplcnJvcl9jb2RlPiB7CiAgICAgICAgIGF1dG8gdmFs
dWUgPSBtb2RpZnlIZWFkZXJzLmdldFZhbHVlKGFycmF5TmFtZSk7CiAgICAgICAgIGlmICghdmFs
dWUpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCA1
MTNmZDkzOWU2NmQuLjRjNGU5NjQ2N2JmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTE2
Myw3ICsxNjMsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBs
b2FkVHJpZ2dlcihjb25zdCBKU09OOjpPYmplY3QmIHJ1bGVPYgogICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKICAgICB9CiAKLSAgICBhdXRvIGNoZWNrQ29uZGl0aW9u
ID0gWyZdIChBU0NJSUxpdGVyYWwga2V5LCBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgc3RkOjpl
cnJvcl9jb2RlPiAoKmxpc3RSZWFkZXIpKGNvbnN0IEpTT046OkFycmF5JiksIEFjdGlvbkNvbmRp
dGlvbiBhY3Rpb25Db25kaXRpb24pIC0+IHN0ZDo6ZXJyb3JfY29kZSB7CisgICAgYXV0byBjaGVj
a0NvbmRpdGlvbiA9IFsmXSAoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBrZXksIEV4cGVjdGVkPFZl
Y3RvcjxTdHJpbmc+LCBzdGQ6OmVycm9yX2NvZGU+ICgqbGlzdFJlYWRlcikoY29uc3QgSlNPTjo6
QXJyYXkmKSwgQWN0aW9uQ29uZGl0aW9uIGFjdGlvbkNvbmRpdGlvbikgLT4gc3RkOjplcnJvcl9j
b2RlIHsKICAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSB0cmlnZ2VyT2JqZWN0LT5nZXRWYWx1ZShr
ZXkpKSB7CiAgICAgICAgICAgICBpZiAodHJpZ2dlci5mbGFncyAmIEFjdGlvbkNvbmRpdGlvbk1h
c2spCiAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11
bHRpcGxlQ29uZGl0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlz
L0NyeXB0b0tleUVDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVD
LmNwcAppbmRleCBkMzZkMzQwZjcwYTguLmM3MTI0NmUzMTc0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmNwcApAQCAtMTUxLDEzICsxNTEsMTMgQEAgRXhjZXB0
aW9uT3I8SnNvbldlYktleT4gQ3J5cHRvS2V5RUM6OmV4cG9ydEp3aygpIGNvbnN0CiAgICAgcmVz
dWx0Lmt0eSA9ICJFQyI7CiAgICAgc3dpdGNoIChtX2N1cnZlKSB7CiAgICAgY2FzZSBOYW1lZEN1
cnZlOjpQMjU2OgotICAgICAgICByZXN1bHQuY3J2ID0gUDI1NjsKKyAgICAgICAgcmVzdWx0LmNy
diA9IFN0cmluZyB7IFAyNTYgfTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lZEN1cnZl
OjpQMzg0OgotICAgICAgICByZXN1bHQuY3J2ID0gUDM4NDsKKyAgICAgICAgcmVzdWx0LmNydiA9
IFN0cmluZyB7IFAzODQgfTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lZEN1cnZlOjpQ
NTIxOgotICAgICAgICByZXN1bHQuY3J2ID0gUDUyMTsKKyAgICAgICAgcmVzdWx0LmNydiA9IFN0
cmluZyB7IFA1MjEgfTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJlc3VsdC5rZXlfb3Bz
ID0gdXNhZ2VzKCk7CkBAIC0yMTYsMTMgKzIxNiwxMyBAQCBhdXRvIENyeXB0b0tleUVDOjphbGdv
cml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KIAogICAgIHN3aXRjaCAobV9jdXJ2ZSkgewog
ICAgIGNhc2UgTmFtZWRDdXJ2ZTo6UDI1NjoKLSAgICAgICAgcmVzdWx0Lm5hbWVkQ3VydmUgPSBQ
MjU2OworICAgICAgICByZXN1bHQubmFtZWRDdXJ2ZSA9IFN0cmluZyB7IFAyNTYgfTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lZEN1cnZlOjpQMzg0OgotICAgICAgICByZXN1bHQubmFt
ZWRDdXJ2ZSA9IFAzODQ7CisgICAgICAgIHJlc3VsdC5uYW1lZEN1cnZlID0gU3RyaW5nIHsgUDM4
NCB9OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlA1MjE6Ci0gICAgICAg
IHJlc3VsdC5uYW1lZEN1cnZlID0gUDUyMTsKKyAgICAgICAgcmVzdWx0Lm5hbWVkQ3VydmUgPSBT
dHJpbmcgeyBQNTIxIH07CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
RXhjZXB0aW9uLmNwcAppbmRleCAwMGFiNzQ5ZjNiOGIuLmVlNzQ5Y2M0MTU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIERPTUV4Y2Vw
dGlvbjo6TGVnYWN5Q29kZSBsZWdhY3lDb2RlRnJvbU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQog
UmVmPERPTUV4Y2VwdGlvbj4gRE9NRXhjZXB0aW9uOjpjcmVhdGUoRXhjZXB0aW9uQ29kZSBlYywg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGF1dG8mIGRlc2NyaXB0aW9uID0gRE9NRXhj
ZXB0aW9uOjpkZXNjcmlwdGlvbihlYyk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRXhj
ZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIGRlc2NyaXB0aW9uLm5hbWUsICFtZXNzYWdl
LmlzRW1wdHkoKSA/IG1lc3NhZ2UgOiBkZXNjcmlwdGlvbi5tZXNzYWdlKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRE9NRXhjZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIFN0cmlu
ZyB7IGRlc2NyaXB0aW9uLm5hbWUgfSwgIW1lc3NhZ2UuaXNFbXB0eSgpID8gbWVzc2FnZSA6IFN0
cmluZyB7IGRlc2NyaXB0aW9uLm1lc3NhZ2UgfSkpOwogfQogCiBSZWY8RE9NRXhjZXB0aW9uPiBE
T01FeGNlcHRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
bmFtZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNlcHRpb246
OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgbmFtZQogUmVmPERP
TUV4Y2VwdGlvbj4gRE9NRXhjZXB0aW9uOjpjcmVhdGUoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRp
b24pCiB7CiAgICAgYXV0byYgZGVzY3JpcHRpb24gPSBET01FeGNlcHRpb246OmRlc2NyaXB0aW9u
KGV4Y2VwdGlvbi5jb2RlKCkpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTUV4Y2VwdGlv
bihkZXNjcmlwdGlvbi5sZWdhY3lDb2RlLCBkZXNjcmlwdGlvbi5uYW1lLCBleGNlcHRpb24ubWVz
c2FnZSgpLmlzRW1wdHkoKSA/IGRlc2NyaXB0aW9uLm1lc3NhZ2UgOiBleGNlcHRpb24ubWVzc2Fn
ZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRXhjZXB0aW9uKGRlc2NyaXB0aW9u
LmxlZ2FjeUNvZGUsIFN0cmluZyB7IGRlc2NyaXB0aW9uLm5hbWUgfSwgZXhjZXB0aW9uLm1lc3Nh
Z2UoKS5pc0VtcHR5KCkgPyBTdHJpbmcgeyBkZXNjcmlwdGlvbi5tZXNzYWdlIH0gOiBleGNlcHRp
b24ubWVzc2FnZSgpKSk7CiB9CiAKIERPTUV4Y2VwdGlvbjo6RE9NRXhjZXB0aW9uKExlZ2FjeUNv
ZGUgbGVnYWN5Q29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMzNiNjJjM2E5YzJlLi4zMzA2
NGI1NDIzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTMyMyw3ICsz
MjMsNyBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RNb2R1bGVTY3JpcHQoY29uc3QgVGV4
dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uKQogICAgIFN0cmluZyBub25jZSA9IG1fZWxl
bWVudC5ub25jZSgpOwogICAgIFN0cmluZyBjcm9zc09yaWdpbk1vZGUgPSBtX2VsZW1lbnQuYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0cik7
CiAgICAgaWYgKGNyb3NzT3JpZ2luTW9kZS5pc051bGwoKSkKLSAgICAgICAgY3Jvc3NPcmlnaW5N
b2RlID0gU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6OmRlZmF1bHRDcm9zc09yaWdp
bk1vZGVGb3JNb2R1bGU7CisgICAgICAgIGNyb3NzT3JpZ2luTW9kZSA9IFN0cmluZyB7IFNjcmlw
dEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyOjpkZWZhdWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9k
dWxlIH07CiAKICAgICBpZiAoaGFzU291cmNlQXR0cmlidXRlKCkpIHsKICAgICAgICAgQVNTRVJU
KG1fZWxlbWVudC5pc0Nvbm5lY3RlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuY3BwCmluZGV4IDEwNDNiNzM3MmZi
MS4uMzc0MDYzODM5MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudENhY2hlZFNjcmlwdEZldGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBTY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0
Y2hlcjo6cmVxdWVzdE1vZHUKICAgICAvLyBJZiB0aGUgZmV0Y2hlciBpcyBub3QgbW9kdWxlIHNj
cmlwdCwgY3JlZGVudGlhbCBtb2RlIGlzIGFsd2F5cyAic2FtZS1vcmlnaW4iICgiYW5vbnltb3Vz
IikuCiAgICAgLy8gVGhpcyBjb2RlIGlzIGZvciBkeW5hbWljIG1vZHVsZSBpbXBvcnQgKGBpbXBv
cnRgIG9wZXJhdG9yKS4KIAotICAgIHJldHVybiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGRvY3Vt
ZW50LCBzb3VyY2VVUkwsIGlzQ2xhc3NpY1NjcmlwdCgpID8gZGVmYXVsdENyb3NzT3JpZ2luTW9k
ZUZvck1vZHVsZSA6IG1fY3Jvc3NPcmlnaW5Nb2RlLCBXVEZNb3ZlKGludGVncml0eSksIHsgfSk7
CisgICAgcmV0dXJuIHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNvdXJjZVVSTCwg
aXNDbGFzc2ljU2NyaXB0KCkgPyBBdG9tU3RyaW5nIHsgZGVmYXVsdENyb3NzT3JpZ2luTW9kZUZv
ck1vZHVsZSB9IDogbV9jcm9zc09yaWdpbk1vZGUsIFdURk1vdmUoaW50ZWdyaXR5KSwgeyB9KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggNjFh
MWVhNmI5NzU3Li4yZGM2OWM5MjZkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcApAQCAtMTgyOCw4ICsxODI4LDkgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAm
IGNyZWF0ZUNvbW1hbmRNYXAoKQogICAgIENvbW1hbmRNYXAmIGNvbW1hbmRNYXAgPSAqbmV3IENv
bW1hbmRNYXA7CiAKICAgICBmb3IgKGF1dG8mIGNvbW1hbmQgOiBjb21tYW5kcykgewotICAgICAg
ICBBU1NFUlQoIWNvbW1hbmRNYXAuZ2V0KGNvbW1hbmQubmFtZSkpOwotICAgICAgICBjb21tYW5k
TWFwLnNldChjb21tYW5kLm5hbWUsICZjb21tYW5kLmNvbW1hbmQpOworICAgICAgICBTdHJpbmcg
Y29tbWFuZE5hbWUgeyBjb21tYW5kLm5hbWUgfTsKKyAgICAgICAgQVNTRVJUKCFjb21tYW5kTWFw
LmdldChjb21tYW5kTmFtZSkpOworICAgICAgICBjb21tYW5kTWFwLnNldChjb21tYW5kTmFtZSwg
JmNvbW1hbmQuY29tbWFuZCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGNvbW1hbmRNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCmluZGV4IDBlNzgwNjNlM2E0MS4uOWYwMDNlZjg0MzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OlN0YXRlOjpTdGF0ZSgpCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6U3RhdGU6OmZvbnRTdHJpbmcoKSBjb25zdAogewogICAgIGlmICghZm9udC5yZWFsaXpl
ZCgpKQotICAgICAgICByZXR1cm4gRGVmYXVsdEZvbnQ7CisgICAgICAgIHJldHVybiBTdHJpbmcg
eyBEZWZhdWx0Rm9udCB9OwogCiAgICAgU3RyaW5nQnVpbGRlciBzZXJpYWxpemVkRm9udDsKICAg
ICBjb25zdCBhdXRvJiBmb250ID0gdGhpcy0+Zm9udC5mb250RGVzY3JpcHRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3Bw
CmluZGV4IGE1MTMwMDIxNjFiOS4uOTBlYTgyZThkZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IFByZWxvYWRSZXF1ZXN0OjpyZXNvdXJjZVJlcXVl
c3QoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIFN0cmluZyBjcm9zc09yaWdpbk1vZGUgPSBtX2Ny
b3NzT3JpZ2luTW9kZTsKICAgICBpZiAobV9tb2R1bGVTY3JpcHQgPT0gTW9kdWxlU2NyaXB0OjpZ
ZXMpIHsKICAgICAgICAgaWYgKGNyb3NzT3JpZ2luTW9kZS5pc051bGwoKSkKLSAgICAgICAgICAg
IGNyb3NzT3JpZ2luTW9kZSA9IFNjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyOjpkZWZh
dWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9kdWxlOworICAgICAgICAgICAgY3Jvc3NPcmlnaW5Nb2Rl
ID0gU3RyaW5nIHsgU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6OmRlZmF1bHRDcm9z
c09yaWdpbk1vZGVGb3JNb2R1bGUgfTsKICAgICB9CiAgICAgaWYgKG1fcmVzb3VyY2VUeXBlID09
IENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQgfHwgbV9yZXNvdXJjZVR5cGUgPT0gQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2UpCiAgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQ
b2xpY3kgPSBtX3JlZmVycmVyUG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCmluZGV4IDE5ZmM4NWNkODk3YS4uZmE0M2FhMzg5ZDhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC0zOTEsNyArMzkxLDcgQEAg
Ym9vbCBUZXh0VHJhY2tDdWU6Omhhc0VxdWl2YWxlbnRTdGFydFRpbWUoY29uc3QgVGV4dFRyYWNr
Q3VlJiBjdWUpIGNvbnN0CiAKIHZvaWQgVGV4dFRyYWNrQ3VlOjp0b0pTT04oSlNPTjo6T2JqZWN0
JiB2YWx1ZSkgY29uc3QKIHsKLSAgICBBU0NJSUxpdGVyYWwgdHlwZSA9ICJHZW5lcmljIl9zOwor
ICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdHlwZSA9ICJHZW5lcmljIl9zOwogICAgIHN3aXRj
aCAoY3VlVHlwZSgpKSB7CiAgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkNvbnZlcnRlZFRvV2ViVlRU
OgogICAgICAgICB0eXBlID0gIkNvbnZlcnRlZFRvV2ViVlRUIl9zOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCA4Mzg5MDhkYzkzNmUuLmRhYzYxNzRkYjMzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTQzNyw3ICs0MzcsNyBAQCBz
dGF0aWMgYm9vbCBwb3B1bGF0ZUVycm9yU3RyaW5nKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0
LCBFcnJvclN0cmluZyYgZXJyb3JTdAogewogICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBlcnJvclN0cmluZyA9IERPTUV4Y2VwdGlvbjo6
bmFtZShyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CisgICAgZXJyb3JTdHJpbmcg
PSBTdHJpbmcgeyBET01FeGNlcHRpb246Om5hbWUocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5j
b2RlKCkpIH07CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGJiY2M3OWFiYzM4Ni4uY2UyMzRlMjU1OGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAt
MTMzMiw3ICsxMzMyLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0
b3JDYW52YXM6OmJ1aWxkQWN0aW9uKFN0cmluZyYmIG5hbWUsIEluc3AKIAogUmVmPEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNH
cmFkaWVudChjb25zdCBDYW52YXNHcmFkaWVudCYgY2FudmFzR3JhZGllbnQpCiB7Ci0gICAgQVND
SUlMaXRlcmFsIHR5cGUgPSAibGluZWFyLWdyYWRpZW50Il9zOworICAgIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggdHlwZSA9ICJsaW5lYXItZ3JhZGllbnQiX3M7CiAgICAgYXV0byBwYXJhbWV0ZXJz
ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKICAgICBXVEY6OnN3aXRjaE9uKGNh
bnZhc0dyYWRpZW50LmdyYWRpZW50KCkuZGF0YSgpLAogICAgICAgICBbJl0gKGNvbnN0IEdyYWRp
ZW50OjpMaW5lYXJEYXRhJiBkYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggYTBiMjMyMTBiMjM4Li5iMmMxODQxMzIyMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKQEAgLTcxMywxMSArNzEzLDExIEBAIFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5z
cGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdAogICAgICAgICAgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+Pjo6aXRl
cmF0b3IgYWN0aXZlSXQgPSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZmlu
ZChjYW5vbmljYWxQcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgIGlmIChhY3RpdmVJdCAh
PSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZW5kKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHByb3BlcnR5RW50cnkucGFyc2VkT2spIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbmV3UHJpb3JpdHkgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhQ
cm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6cHJpb3JpdHlLZXkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byBuZXdQcmlvcml0eSA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKFN0
cmluZyB7IFByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5Ojpwcmlvcml0eUtleSB9KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghIW5ld1ByaW9yaXR5KQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByZXZpb3VzUHJpb3JpdHkgPSBuZXdQcmlvcml0eTsKIAotICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBuZXdTdGF0dXMgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhQ
cm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6c3RhdHVzS2V5KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gbmV3U3RhdHVzID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoU3RyaW5n
IHsgUHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OnN0YXR1c0tleSB9KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghIW5ld1N0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByZXZpb3VzU3RhdHVzID0gbmV3U3RhdHVzOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwcmV2aW91c1N0YXR1cyAhPSBQcm90b2NvbDo6SGVscGVyczo6Z2V0RW51bUNvbnN0
YW50VmFsdWUoUHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkluYWN0aXZlKSkgewpA
QCAtNzMwLDcgKzczMCw3IEBAIFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9y
U3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNQYXJzZWRPayA9
IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6
cGFyc2VkT2tLZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c1BhcnNl
ZE9rID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5OjpwYXJzZWRPa0tleSB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChwcmV2aW91c1BhcnNlZE9rICYmICFwcmV2aW91c1BhcnNlZE9rKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCmluZGV4IDBlMTg2YmNlYTcwMS4uYzY3OGNhNTJhNjE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNw
cApAQCAtMTM5LDEzICsxMzksMTMgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHBhcnNl
Q29sb3IoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBjb2xvck9iamVjdCkKICAgICBpZiAoIWNvbG9y
T2JqZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byByID0gY29s
b3JPYmplY3QtPmdldEludGVnZXIoUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpyS2V5KTsKLSAg
ICBhdXRvIGcgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihQcm90b2NvbDo6RE9NOjpSR0JBQ29s
b3I6OmdLZXkpOwotICAgIGF1dG8gYiA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFByb3RvY29s
OjpET006OlJHQkFDb2xvcjo6YktleSk7CisgICAgYXV0byByID0gY29sb3JPYmplY3QtPmdldElu
dGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpyS2V5IH0pOworICAgIGF1
dG8gZyA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpET006OlJH
QkFDb2xvcjo6Z0tleSB9KTsKKyAgICBhdXRvIGIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihT
dHJpbmcgeyBQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OmJLZXkgfSk7CiAgICAgaWYgKCFyIHx8
ICFnIHx8ICFiKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBhID0g
Y29sb3JPYmplY3QtPmdldERvdWJsZShQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OmFLZXkpOwor
ICAgIGF1dG8gYSA9IGNvbG9yT2JqZWN0LT5nZXREb3VibGUoU3RyaW5nIHsgUHJvdG9jb2w6OkRP
TTo6UkdCQUNvbG9yOjphS2V5IH0pOwogICAgIGlmICghYSkKICAgICAgICAgcmV0dXJuIHsgbWFr
ZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8dWludDhfdD4+KCpyLCAqZywgKmIpIH07CiAg
ICAgcmV0dXJuIHsgbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxTUkdCQTx1
aW50OF90Pj4oKnIsICpnLCAqYiwgY29udmVydEZsb2F0QWxwaGFUbzx1aW50OF90PigqYSkpIH07
CkBAIC0yODEsNyArMjgxLDcgQEAgU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3Ry
aW5nKEV4Y2VwdGlvbkNvZGUgZWMpCiAKIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJv
clN0cmluZyhFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7Ci0gICAgcmV0dXJuIERPTUV4Y2VwdGlv
bjo6bmFtZShleGNlcHRpb24uY29kZSgpKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgRE9NRXhjZXB0
aW9uOjpuYW1lKGV4Y2VwdGlvbi5jb2RlKCkpIH07CiB9CiAKIEluc3BlY3RvckRPTUFnZW50OjpJ
bnNwZWN0b3JET01BZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JPdmVy
bGF5KiBvdmVybGF5KQpAQCAtMTI4MiwxMSArMTI4MiwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpDb25maWc+IEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaAogICAgIH0KIAogICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkNvbmZpZz4oKTsKLSAgICBoaWdobGlnaHRDb25maWct
PnNob3dJbmZvID0gaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29s
OjpET006OkhpZ2hsaWdodENvbmZpZzo6c2hvd0luZm9LZXkpLnZhbHVlX29yKGZhbHNlKTsKLSAg
ICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbmZpZ0NvbG9yKFByb3RvY29sOjpE
T006OkhpZ2hsaWdodENvbmZpZzo6Y29udGVudENvbG9yS2V5LCAqaGlnaGxpZ2h0SW5zcGVjdG9y
T2JqZWN0KTsKLSAgICBoaWdobGlnaHRDb25maWctPnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0NvbG9y
KFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6cGFkZGluZ0NvbG9yS2V5LCAqaGlnaGxp
Z2h0SW5zcGVjdG9yT2JqZWN0KTsKLSAgICBoaWdobGlnaHRDb25maWctPmJvcmRlciA9IHBhcnNl
Q29uZmlnQ29sb3IoUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpib3JkZXJDb2xvcktl
eSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7Ci0gICAgaGlnaGxpZ2h0Q29uZmlnLT5tYXJn
aW4gPSBwYXJzZUNvbmZpZ0NvbG9yKFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6bWFy
Z2luQ29sb3JLZXksICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hsaWdodENv
bmZpZy0+c2hvd0luZm8gPSBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4oU3Ry
aW5nIHsgUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpzaG93SW5mb0tleSB9KS52YWx1
ZV9vcihmYWxzZSk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb25maWdD
b2xvcihTdHJpbmcgeyBQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OmNvbnRlbnRDb2xv
cktleSB9LCAqaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWct
PnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmluZyB7IFByb3RvY29sOjpET006OkhpZ2hs
aWdodENvbmZpZzo6cGFkZGluZ0NvbG9yS2V5IH0sICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3Qp
OworICAgIGhpZ2hsaWdodENvbmZpZy0+Ym9yZGVyID0gcGFyc2VDb25maWdDb2xvcihTdHJpbmcg
eyBQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OmJvcmRlckNvbG9yS2V5IH0sICpoaWdo
bGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hsaWdodENvbmZpZy0+bWFyZ2luID0gcGFy
c2VDb25maWdDb2xvcihTdHJpbmcgeyBQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6Om1h
cmdpbkNvbG9yS2V5IH0sICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwogICAgIHJldHVybiBo
aWdobGlnaHRDb25maWc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCAxM2ZjMGI4
MWVmODcuLmE4ZWQ1MzExMWQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6c2V0RE9NU3RvcmFnZUl0ZW0oUmVmPEpTCiAgICAgYm9vbCBxdW90YUV4Y2VwdGlv
biA9IGZhbHNlOwogICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKCpmcmFtZSwga2V5LCB2YWx1ZSwg
cXVvdGFFeGNlcHRpb24pOwogICAgIGlmIChxdW90YUV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKERPTUV4Y2VwdGlvbjo6bmFtZShRdW90YUV4Y2VlZGVkRXJyb3IpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0cmluZyB7IERPTUV4Y2VwdGlvbjo6bmFt
ZShRdW90YUV4Y2VlZGVkRXJyb3IpIH0pOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTE5NSwx
MyArMTk1LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERP
TVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uCiAKIFJlZlB0cjxTdG9yYWdlQXJl
YT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmPEpTT046Ok9iamVjdD4mJiBzdG9yYWdlSWQsIEZy
YW1lKiYgdGFyZ2V0RnJhbWUpCiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IHN0b3JhZ2VJ
ZC0+Z2V0U3RyaW5nKFByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OnNlY3VyaXR5T3Jp
Z2luS2V5KTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gc3RvcmFnZUlkLT5nZXRTdHJpbmco
U3RyaW5nIHsgUHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6c2VjdXJpdHlPcmlnaW5L
ZXkgfSk7CiAgICAgaWYgKCFzZWN1cml0eU9yaWdpbikgewogICAgICAgICBlcnJvclN0cmluZyA9
ICJNaXNzaW5nIHNlY3VyaXR5T3JpZ2luIGluIGdpdmVuIHN0b3JhZ2VJZCI7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaXNMb2NhbFN0b3JhZ2UgPSBzdG9yYWdl
SWQtPmdldEJvb2xlYW4oUHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6aXNMb2NhbFN0
b3JhZ2VLZXkpOworICAgIGF1dG8gaXNMb2NhbFN0b3JhZ2UgPSBzdG9yYWdlSWQtPmdldEJvb2xl
YW4oU3RyaW5nIHsgUHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6aXNMb2NhbFN0b3Jh
Z2VLZXkgfSk7CiAgICAgaWYgKCFpc0xvY2FsU3RvcmFnZSkgewogICAgICAgICBlcnJvclN0cmlu
ZyA9ICJNaXNzaW5nIGlzTG9jYWxTdG9yYWdlIGluIGdpdmVuIHN0b3JhZ2VJZCI7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA1ZDUxMmU3OGUyMDAu
LjFjMTM1MWFiOGU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTI1NSw3ICsyNTUsNyBA
QCBwcml2YXRlOgogCiBzdGF0aWMgUmVmUHRyPElEQktleT4gaWRiS2V5RnJvbUluc3BlY3Rvck9i
amVjdChSZWY8SlNPTjo6T2JqZWN0PiYmIGtleSkKIHsKLSAgICBhdXRvIHR5cGVTdHJpbmcgPSBr
ZXktPmdldFN0cmluZyhQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OnR5cGVLZXkpOworICAgIGF1
dG8gdHlwZVN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVk
REI6OktleTo6dHlwZUtleSB9KTsKICAgICBpZiAoIXR5cGVTdHJpbmcpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0yNjUsMjggKzI2NSwyOCBAQCBzdGF0aWMgUmVmUHRyPElEQktleT4g
aWRiS2V5RnJvbUluc3BlY3Rvck9iamVjdChSZWY8SlNPTjo6T2JqZWN0PiYmIGtleSkKIAogICAg
IHN3aXRjaCAoKnR5cGUpIHsKICAgICBjYXNlIFByb3RvY29sOjpJbmRleGVkREI6OktleTo6VHlw
ZTo6TnVtYmVyOiB7Ci0gICAgICAgIGF1dG8gbnVtYmVyID0ga2V5LT5nZXREb3VibGUoUHJvdG9j
b2w6OkluZGV4ZWREQjo6S2V5OjpudW1iZXJLZXkpOworICAgICAgICBhdXRvIG51bWJlciA9IGtl
eS0+Z2V0RG91YmxlKFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVkREI6OktleTo6bnVtYmVyS2V5
IH0pOwogICAgICAgICBpZiAoIW51bWJlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIoKm51bWJlcik7CiAgICAgfQogCiAg
ICAgY2FzZSBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OlR5cGU6OlN0cmluZzogewotICAgICAg
ICBhdXRvIHN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFByb3RvY29sOjpJbmRleGVkREI6OktleTo6
c3RyaW5nS2V5KTsKKyAgICAgICAgYXV0byBzdHJpbmcgPSBrZXktPmdldFN0cmluZyhTdHJpbmcg
eyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OnN0cmluZ0tleSB9KTsKICAgICAgICAgaWYgKCFz
dHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIElEQktl
eTo6Y3JlYXRlU3RyaW5nKHN0cmluZyk7CiAgICAgfQogCiAgICAgY2FzZSBQcm90b2NvbDo6SW5k
ZXhlZERCOjpLZXk6OlR5cGU6OkRhdGU6IHsKLSAgICAgICAgYXV0byBkYXRlID0ga2V5LT5nZXRE
b3VibGUoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpkYXRlS2V5KTsKKyAgICAgICAgYXV0byBk
YXRlID0ga2V5LT5nZXREb3VibGUoU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5Ojpk
YXRlS2V5IH0pOwogICAgICAgICBpZiAoIWRhdGUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlRGF0ZSgqZGF0ZSk7CiAgICAgfQogCiAg
ICAgY2FzZSBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OlR5cGU6OkFycmF5OiB7Ci0gICAgICAg
IGF1dG8gYXJyYXkgPSBrZXktPmdldEFycmF5KFByb3RvY29sOjpJbmRleGVkREI6OktleTo6YXJy
YXlLZXkpOworICAgICAgICBhdXRvIGFycmF5ID0ga2V5LT5nZXRBcnJheShTdHJpbmcgeyBQcm90
b2NvbDo6SW5kZXhlZERCOjpLZXk6OmFycmF5S2V5IH0pOwogICAgICAgICBpZiAoIWFycmF5KQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTMwOCwyNCArMzA4LDI0IEBAIHN0YXRp
YyBSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KFJlZjxKU09OOjpPYmpl
Y3Q+JiYga2V5KQogc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5
UmFuZ2UoSlNPTjo6T2JqZWN0JiBrZXlSYW5nZSkKIHsKICAgICBSZWZQdHI8SURCS2V5PiBpZGJM
b3dlcjsKLSAgICBpZiAoYXV0byBsb3dlciA9IGtleVJhbmdlLmdldE9iamVjdChQcm90b2NvbDo6
SW5kZXhlZERCOjpLZXlSYW5nZTo6bG93ZXJLZXkpKSB7CisgICAgaWYgKGF1dG8gbG93ZXIgPSBr
ZXlSYW5nZS5nZXRPYmplY3QoU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFuZ2U6
Omxvd2VyS2V5IH0pKSB7CiAgICAgICAgIGlkYkxvd2VyID0gaWRiS2V5RnJvbUluc3BlY3Rvck9i
amVjdChsb3dlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgaWYgKCFpZGJMb3dlcikKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFJlZlB0cjxJREJLZXk+IGlk
YlVwcGVyOwotICAgIGlmIChhdXRvIHVwcGVyID0ga2V5UmFuZ2UuZ2V0T2JqZWN0KFByb3RvY29s
OjpJbmRleGVkREI6OktleVJhbmdlOjp1cHBlcktleSkpIHsKKyAgICBpZiAoYXV0byB1cHBlciA9
IGtleVJhbmdlLmdldE9iamVjdChTdHJpbmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5n
ZTo6dXBwZXJLZXkgfSkpIHsKICAgICAgICAgaWRiVXBwZXIgPSBpZGJLZXlGcm9tSW5zcGVjdG9y
T2JqZWN0KHVwcGVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBpZiAoIWlkYlVwcGVyKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBsb3dlck9wZW4g
PSBrZXlSYW5nZS5nZXRCb29sZWFuKFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOjpsb3dl
ck9wZW5LZXkpOworICAgIGF1dG8gbG93ZXJPcGVuID0ga2V5UmFuZ2UuZ2V0Qm9vbGVhbihTdHJp
bmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5nZTo6bG93ZXJPcGVuS2V5IH0pOwogICAg
IGlmICghbG93ZXJPcGVuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gdXBw
ZXJPcGVuID0ga2V5UmFuZ2UuZ2V0Qm9vbGVhbihQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5n
ZTo6dXBwZXJPcGVuS2V5KTsKKyAgICBhdXRvIHVwcGVyT3BlbiA9IGtleVJhbmdlLmdldEJvb2xl
YW4oU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFuZ2U6OnVwcGVyT3BlbktleSB9
KTsKICAgICBpZiAoIXVwcGVyT3BlbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAppbmRleCA2ZTVhNWZjODljY2UuLjdkNDEzMGViNGZmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpCiAgICAg
aWYgKGNhY2hlZFJlc291cmNlKSB7CiAgICAgICAgIC8vIFVzZSBtaW1lIHR5cGUgZnJvbSBjYWNo
ZWQgcmVzb3VyY2UgaW4gY2FzZSB0aGUgb25lIGluIHJlc3BvbnNlIGlzIGVtcHR5LgogICAgICAg
ICBpZiAocmVzb3VyY2VSZXNwb25zZSAmJiByZXNwb25zZS5taW1lVHlwZSgpLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZyhQcm90b2NvbDo6TmV0d29y
azo6UmVzcG9uc2U6Om1pbWVUeXBlS2V5LCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1l
VHlwZSgpKTsKKyAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZyhTdHJpbmcg
eyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6Om1pbWVUeXBlS2V5IH0sIGNhY2hlZFJlc291
cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFk
ZENhY2hlZFJlc291cmNlKHJlcXVlc3RJZCwgY2FjaGVkUmVzb3VyY2UpOwogICAgIH0KIApAQCAt
NTUxLDEyICs1NTEsMTIgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmkKICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgcmVzb3VyY2VS
ZXNwb25zZS0+c2V0U3RyaW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6bWltZVR5cGVL
ZXksIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5taW1lVHlwZSgpKTsKKyAgICAgICAgICAgIHJlc291
cmNlUmVzcG9uc2UtPnNldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9u
c2U6Om1pbWVUeXBlS2V5IH0sIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5taW1lVHlwZSgpKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0SW50ZWdlcihQcm90
b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OnN0YXR1c0tleSwgcHJldmlvdXNSZXNvdXJjZURhdGEt
Pmh0dHBTdGF0dXNDb2RlKCkpOwotICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3Ry
aW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c3RhdHVzVGV4dEtleSwgcHJldmlvdXNS
ZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNUZXh0KCkpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNw
b25zZS0+c2V0SW50ZWdlcihTdHJpbmcgeyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OnN0
YXR1c0tleSB9LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0YXR1c0NvZGUoKSk7CisgICAg
ICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6Ok5l
dHdvcms6OlJlc3BvbnNlOjpzdGF0dXNUZXh0S2V5IH0sIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5o
dHRwU3RhdHVzVGV4dCgpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgcmVzb3VyY2VSZXNw
b25zZS0+c2V0U3RyaW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c291cmNlS2V5LCBQ
cm90b2NvbDo6SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6Ok5ldHdvcms6
OlJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZSkpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNw
b25zZS0+c2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c291
cmNlS2V5IH0sIFByb3RvY29sOjpIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2Nv
bDo6TmV0d29yazo6UmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAppbmRleCBkMWIyNjlmOGZhN2QuLjZkYjUyYjdhZmNmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtNTY4LDMxICs1NjgsMzEgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29va2ll
PiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIHsK
ICAgICBDb29raWUgY29va2llOwogCi0gICAgY29va2llLm5hbWUgPSBjb29raWVPYmplY3QtPmdl
dFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpuYW1lS2V5KTsKKyAgICBjb29raWUubmFt
ZSA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29r
aWU6Om5hbWVLZXkgfSk7CiAgICAgaWYgKCFjb29raWUubmFtZSkgewogICAgICAgICBlcnJvclN0
cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgbmFtZSBpbiBnaXZlbiBjb29raWUiOwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGNvb2tpZS52YWx1ZSA9IGNv
b2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnZhbHVlS2V5KTsK
KyAgICBjb29raWUudmFsdWUgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90
b2NvbDo6UGFnZTo6Q29va2llOjp2YWx1ZUtleSB9KTsKICAgICBpZiAoIWNvb2tpZS52YWx1ZSkg
ewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgdmFsdWUgaW4g
Z2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICBjb29raWUuZG9tYWluID0gY29va2llT2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6OlBhZ2U6
OkNvb2tpZTo6ZG9tYWluS2V5KTsKKyAgICBjb29raWUuZG9tYWluID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6ZG9tYWluS2V5IH0pOwog
ICAgIGlmICghY29va2llLmRvbWFpbikgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlk
IHZhbHVlIGZvciBrZXkgZG9tYWluIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgY29va2llLnBhdGggPSBjb29raWVPYmplY3QtPmdl
dFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpwYXRoS2V5KTsKKyAgICBjb29raWUucGF0
aCA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29r
aWU6OnBhdGhLZXkgfSk7CiAgICAgaWYgKCFjb29raWUucGF0aCkgewogICAgICAgICBlcnJvclN0
cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgcGF0aCBpbiBnaXZlbiBjb29raWUiOwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGF1dG8gaHR0cE9ubHkgPSBj
b29raWVPYmplY3QtPmdldEJvb2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6aHR0cE9ubHlL
ZXkpOworICAgIGF1dG8gaHR0cE9ubHkgPSBjb29raWVPYmplY3QtPmdldEJvb2xlYW4oU3RyaW5n
IHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6aHR0cE9ubHlLZXkgfSk7CiAgICAgaWYgKCFodHRw
T25seSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgaHR0
cE9ubHkgaW4gZ2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTYwMCw3ICs2MDAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2ll
T2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogCiAgICAgY29va2llLmh0
dHBPbmx5ID0gKmh0dHBPbmx5OwogCi0gICAgYXV0byBzZWN1cmUgPSBjb29raWVPYmplY3QtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6c2VjdXJlS2V5KTsKKyAgICBhdXRvIHNl
Y3VyZSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6
Q29va2llOjpzZWN1cmVLZXkgfSk7CiAgICAgaWYgKCFzZWN1cmUpIHsKICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNlY3VyZSBpbiBnaXZlbiBjb29raWUiOwog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjA4LDggKzYwOCw4IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiBlcnJvclN0cmluCiAKICAgICBjb29raWUuc2VjdXJlID0gKnNlY3VyZTsKIAotICAgIGF1
dG8gc2Vzc2lvbiA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6UGFnZTo6Q29v
a2llOjpzZXNzaW9uS2V5KTsKLSAgICBjb29raWUuZXhwaXJlcyA9IGNvb2tpZU9iamVjdC0+Z2V0
RG91YmxlKFByb3RvY29sOjpQYWdlOjpDb29raWU6OmV4cGlyZXNLZXkpOworICAgIGF1dG8gc2Vz
c2lvbiA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6
Q29va2llOjpzZXNzaW9uS2V5IH0pOworICAgIGNvb2tpZS5leHBpcmVzID0gY29va2llT2JqZWN0
LT5nZXREb3VibGUoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6ZXhwaXJlc0tleSB9
KTsKICAgICBpZiAoIXNlc3Npb24gJiYgIWNvb2tpZS5leHBpcmVzKSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBleHBpcmVzIGluIGdpdmVuIGNvb2tpZSI7
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC02MTcsNyArNjE3LDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW4KIAogICAgIGNvb2tpZS5zZXNzaW9uID0gKnNlc3Npb247CiAKLSAg
ICBhdXRvIHNhbWVTaXRlU3RyaW5nID0gY29va2llT2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6
OlBhZ2U6OkNvb2tpZTo6c2FtZVNpdGVLZXkpOworICAgIGF1dG8gc2FtZVNpdGVTdHJpbmcgPSBj
b29raWVPYmplY3QtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6Q29va2llOjpz
YW1lU2l0ZUtleSB9KTsKICAgICBpZiAoIXNhbWVTaXRlU3RyaW5nKSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBnaXZlbiBjb29raWUi
OwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXgg
OTk4OGVhOTVmM2YxLi41N2ZhYmU2YmY4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNzQ0
LDcgKzc0NCw3IEBAIHN0YXRpYyBQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZSB0b1Byb3Rv
Y29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmFkZFJlY29yZFRvVGltZWxpbmUoUmVmPEpTT046Ok9iamVjdD4mJiByZWNvcmQsIFRpbWVs
aW5lUmVjb3JkVHlwZSB0eXBlKQogewotICAgIHJlY29yZC0+c2V0U3RyaW5nKFByb3RvY29sOjpU
aW1lbGluZTo6VGltZWxpbmVFdmVudDo6dHlwZUtleSwgUHJvdG9jb2w6OkhlbHBlcnM6OmdldEVu
dW1Db25zdGFudFZhbHVlKHRvUHJvdG9jb2wodHlwZSkpKTsKKyAgICByZWNvcmQtPnNldFN0cmlu
ZyhTdHJpbmcgeyBQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OnR5cGVLZXkgfSwg
UHJvdG9jb2w6OkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKHRvUHJvdG9jb2wodHlwZSkp
KTsKIAogICAgIGlmIChtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBGSVhN
RTogcnVudGltZUNhc3QgaXMgYSBoYWNrLiBXZSBkbyBpdCBiZWNhdXNlIHdlIGNhbid0IGJ1aWxk
IFRpbWVsaW5lRXZlbnQgZGlyZWN0bHkgbm93LgpAQCAtNzc0LDkgKzc3NCw5IEBAIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0RnJhbWVJZGVudGlmaWVyKEpTT046Ok9iamVjdCogcmVj
b3JkLCBGcmFtZSogZnJhCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxl
dGVSZWNvcmRFbnRyeShjb25zdCBUaW1lbGluZVJlY29yZEVudHJ5JiBlbnRyeSkKIHsKLSAgICBl
bnRyeS5yZWNvcmQtPnNldE9iamVjdChQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6
OmRhdGFLZXksIGVudHJ5LmRhdGEuY29weVJlZigpKTsKKyAgICBlbnRyeS5yZWNvcmQtPnNldE9i
amVjdChTdHJpbmcgeyBQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmRhdGFLZXkg
fSwgZW50cnkuZGF0YS5jb3B5UmVmKCkpOwogICAgIGlmIChlbnRyeS5jaGlsZHJlbikKLSAgICAg
ICAgZW50cnkucmVjb3JkLT5zZXRBcnJheShQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZl
bnQ6OmNoaWxkcmVuS2V5LCAqZW50cnkuY2hpbGRyZW4pOworICAgICAgICBlbnRyeS5yZWNvcmQt
PnNldEFycmF5KFN0cmluZyB7IFByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6Y2hp
bGRyZW5LZXkgfSwgKmVudHJ5LmNoaWxkcmVuKTsKICAgICBlbnRyeS5yZWNvcmQtPnNldERvdWJs
ZSgiZW5kVGltZSJfcywgdGltZXN0YW1wKCkpOwogICAgIGFkZFJlY29yZFRvVGltZWxpbmUoZW50
cnkucmVjb3JkLmNvcHlSZWYoKSwgZW50cnkudHlwZSk7CiB9CkBAIC04MDEsNyArODAxLDcgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGlt
ZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFwcGVu
ZFJlY29yZChSZWY8SlNPTjo6T2JqZWN0PiYmIGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBl
LCBib29sIGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1lKiBmcmFtZSkKIHsKICAgICBSZWY8SlNPTjo6
T2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNv
cmQodGltZXN0YW1wKCksIGNhcHR1cmVDYWxsU3RhY2sgPyBtX21heENhbGxTdGFja0RlcHRoIDog
MCk7Ci0gICAgcmVjb3JkLT5zZXRPYmplY3QoUHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2
ZW50OjpkYXRhS2V5LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdChTdHJp
bmcgeyBQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmRhdGFLZXkgfSwgV1RGTW92
ZShkYXRhKSk7CiAgICAgc2V0RnJhbWVJZGVudGlmaWVyKCZyZWNvcmQuZ2V0KCksIGZyYW1lKTsK
ICAgICBhZGRSZWNvcmRUb1RpbWVsaW5lKFdURk1vdmUocmVjb3JkKSwgdHlwZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcAppbmRl
eCA3NGJkMTI5ZjFjODEuLjM2ZTU4YzcxNGFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBjcm9zc09yaWdpbk9wZW5l
clBvbGljeVRvU3RyaW5nKGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWUmIGNvb3Ap
CitzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBjcm9zc09yaWdpbk9wZW5lclBvbGljeVRv
U3RyaW5nKGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWUmIGNvb3ApCiB7CiAgICAg
c3dpdGNoIChjb29wKSB7CiAgICAgY2FzZSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpT
YW1lT3JpZ2luOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXgg
Y2VlODJhM2YwNzEzLi5iYzA5OTJmNGQyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcApAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Q
b3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAg
ICAgICAgIHVybC5zZXRRdWVyeShtYWtlU3RyaW5nKHF1ZXJ5LCAnJicsIGJvZHkpKTsKIH0KIAot
QVNDSUlMaXRlcmFsIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjptZXRob2RTdHJpbmcoTWV0
aG9kIG1ldGhvZCwgYm9vbCBkaWFsb2dFbGVtZW50RW5hYmxlZCkKK0FTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGggRm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6Om1ldGhvZFN0cmluZyhNZXRob2QgbWV0
aG9kLCBib29sIGRpYWxvZ0VsZW1lbnRFbmFibGVkKQogewogICAgIGlmIChkaWFsb2dFbGVtZW50
RW5hYmxlZCAmJiBtZXRob2QgPT0gTWV0aG9kOjpEaWFsb2cpCiAgICAgICAgIHJldHVybiAiZGlh
bG9nIl9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAppbmRleCBlMGM0OGVm
MWU0M2EuLmI3ZDQzMzhkMGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zv
cm1TdWJtaXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICBNZXRob2QgbWV0aG9kKCkgY29u
c3QgeyByZXR1cm4gbV9tZXRob2Q7IH0KICAgICAgICAgc3RhdGljIE1ldGhvZCBwYXJzZU1ldGhv
ZFR5cGUoY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgICAgIHZvaWQgdXBkYXRlTWV0aG9kVHlw
ZShjb25zdCBTdHJpbmcmLCBib29sKTsKLSAgICAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBtZXRo
b2RTdHJpbmcoTWV0aG9kLCBib29sKTsKKyAgICAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGggbWV0aG9kU3RyaW5nKE1ldGhvZCwgYm9vbCk7CiAKICAgICAgICAgY29uc3QgU3RyaW5n
JiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQogICAgICAgICB2b2lkIHBhcnNl
QWN0aW9uKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcApp
bmRleCA0YTExNDQyNWUxMTYuLjBiNmY3ODI3Mzk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dFBhcnNlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYKICAg
ICBib29sIGFsbG93RmFsbGJhY2tOYW1lc3BhY2VPdXRzaWRlTWFuaWZlc3RQYXRoID0gZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWFuaWZlc3RNSU1FVHlwZSwgY2FjaGVNYW5pZmVzdE1J
TUVUeXBlKTsKICAgICBhdXRvIG1hbmlmZXN0UGF0aCA9IFdlYkNvcmU6Om1hbmlmZXN0UGF0aCht
YW5pZmVzdFVSTCk7CiAKLSAgICBhdXRvIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVNYW5pZmVz
dE1JTUVUeXBlKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CisgICAg
YXV0byBtYW5pZmVzdFN0cmluZyA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoOjpmcm9tTGl0ZXJhbFVuc2FmZShjYWNoZU1hbmlmZXN0TUlNRVR5cGUs
IHNpemVvZihjYWNoZU1hbmlmZXN0TUlNRVR5cGUpIC0gMSksICJVVEYtOCIpLT5kZWNvZGVBbmRG
bHVzaChkYXRhLCBsZW5ndGgpOwogCiAgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2lu
ZyhtYW5pZmVzdFN0cmluZywgWyZdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEFwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdD4gewogICAgICAgICB1c2luZyBDaGFyYWN0ZXJUeXBlID0gdHlw
ZW5hbWUgZGVjbHR5cGUoYnVmZmVyKTo6Q2hhcmFjdGVyVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKaW5kZXggMmFl
NzkzMGY2NmMxLi4zMWFhM2Q5OTI4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGNv
bnN0IFN0cmluZyYgZG9tYWluKQogICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldERvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKGRvbWFpbik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgY29uc3RleHByIEFTQ0lJ
TGl0ZXJhbCBhY2NlcHRIZWFkZXJWYWx1ZUZvckltYWdlUmVzb3VyY2UoYm9vbCBzdXBwb3J0c1Zp
ZGVvSW1hZ2UpCitzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IGFjY2VwdEhlYWRlclZhbHVlRm9ySW1hZ2VSZXNvdXJjZShib29sIHN1cHBvcnRzVmlkZW9JbWFn
ZSkKIHsKICNpZiBIQVZFKFdFQlApIHx8IFVTRShXRUJQKQogICAgICNkZWZpbmUgV0VCUF9IRUFE
RVJfUEFSVCAiaW1hZ2Uvd2VicCwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rl
YnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCmluZGV4IDdiM2VjNzhmM2RhZi4uM2Q3MDQ3ZTg0NTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgTm9u
RmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgcGFnZU92
ZXJsYXksIEdyYXBoaWNzCiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbiksIDAsIDApOwogICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwogCi0gICAgYXV0byBkcmF3
TGVnZW5kID0gWyZdIChjb25zdCBDb2xvciYgY29sb3IsIEFTQ0lJTGl0ZXJhbCB0ZXh0KSB7Cisg
ICAgYXV0byBkcmF3TGVnZW5kID0gWyZdIChjb25zdCBDb2xvciYgY29sb3IsIEFTQ0lJTGl0ZXJh
bFdpdGhMZW5ndGggdGV4dCkgewogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7
CiAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QobGVnZW5kUmVjdCk7CiAgICAgICAgIGRyYXdSaWdo
dEFsaWduZWRUZXh0KHRleHQsIGNvbnRleHQsIGZvbnQsIGxlZ2VuZFJlY3QubG9jYXRpb24oKSk7
CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6
OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICB9OwogCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBhdXRvIGRyYXdFdmVudExlZ2VuZCA9IFsmXSAo
QVNDSUlMaXRlcmFsIGNvbG9yKSB7CisgICAgYXV0byBkcmF3RXZlbnRMZWdlbmQgPSBbJl0gKEFT
Q0lJTGl0ZXJhbFdpdGhMZW5ndGggY29sb3IpIHsKICAgICAgICAgZHJhd0xlZ2VuZChjb2xvcnMu
Z2V0KFN0cmluZ1ZpZXcgeyBjb2xvciB9KSwgY29sb3IpOwogICAgIH07CiAgICAgZHJhd0V2ZW50
TGVnZW5kKCJ0b3VjaHN0YXJ0Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAppbmRleCA0
MDJmNGZhYWJiMzYuLjNjZTVmN2U5MjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcApA
QCAtNDU5LDEzICs0NTksMTMgQEAgRnJhbWUmIEZyYW1lVHJlZTo6dG9wKCkgY29uc3QKICAgICBy
ZXR1cm4gKmZyYW1lOwogfQogCi1BU0NJSUxpdGVyYWwgYmxhbmtUYXJnZXRGcmFtZU5hbWUoKQor
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBibGFua1RhcmdldEZyYW1lTmFtZSgpCiB7CiAgICAgcmV0
dXJuICJfYmxhbmsiX3M7CiB9CiAKIC8vIEZJWE1FOiBJcyBpdCBpbXBvcnRhbnQgdG8gaGF2ZSB0
aGlzPyBDYW4ndCB3ZSBqdXN0IHVzZSB0aGUgZW1wdHkgc3RyaW5nIGV2ZXJ5d2hlcmUgdGhpcyBp
cyB1c2VkLCBpbnN0ZWFkPwotQVNDSUlMaXRlcmFsIHNlbGZUYXJnZXRGcmFtZU5hbWUoKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBzZWxmVGFyZ2V0RnJhbWVOYW1lKCkKIHsKICAgICByZXR1cm4g
Il9zZWxmIl9zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggNjQwY2M5ZTg3M2U4Li42
ZDhlZTc5N2Y3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaApAQCAtMTA3LDggKzEwNyw4IEBA
IHByaXZhdGU6CiAgICAgbXV0YWJsZSB1aW50NjRfdCBtX2ZyYW1lSURHZW5lcmF0b3IgeyAwIH07
CiB9OwogCi1BU0NJSUxpdGVyYWwgYmxhbmtUYXJnZXRGcmFtZU5hbWUoKTsKLUFTQ0lJTGl0ZXJh
bCBzZWxmVGFyZ2V0RnJhbWVOYW1lKCk7CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGJsYW5rVGFy
Z2V0RnJhbWVOYW1lKCk7CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNlbGZUYXJnZXRGcmFtZU5h
bWUoKTsKIAogYm9vbCBpc0JsYW5rVGFyZ2V0RnJhbWVOYW1lKFN0cmluZ1ZpZXcpOwogYm9vbCBp
c1BhcmVudFRhcmdldEZyYW1lTmFtZShTdHJpbmdWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZUVudHJ5LmgKaW5kZXggZjkyYzJmMjA0MDY3Li5kZDNlYjgwZGE2MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHBlcmZvcm1hbmNlRW50cnlUeXBlKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZW50cnlUeXBlKCkgY29uc3QgPSAwOwog
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gcGFyc2VFbnRyeVR5cGVTdHJpbmcoY29u
c3QgU3RyaW5nJiBlbnRyeVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlTWFyay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsu
aAppbmRleCA4N2E1NTg1ZDFiZTMuLjk2ZTM0NTkxNGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTWFyay5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgflBlcmZvcm1h
bmNlTWFyaygpOwogCiAgICAgVHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIFR5cGU6Ok1hcms7IH0KLSAgICBBU0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIm1hcmsiX3M7IH0KKyAgICBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJtYXJrIl9zOyB9CiAKICAgICBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3NlcmlhbGl6ZWREZXRhaWw7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1lYXN1cmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VNZWFzdXJlLmgKaW5kZXggMmQyYWEzZWUxMjk1Li4yYTU0NWNj
NmY3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNZWFzdXJl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1lYXN1cmUuaApAQCAtNDks
NyArNDksNyBAQCBwcml2YXRlOgogICAgIH5QZXJmb3JtYW5jZU1lYXN1cmUoKTsKIAogICAgIFR5
cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpNZWFz
dXJlOyB9Ci0gICAgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJtZWFzdXJlIl9zOyB9CisgICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAibWVhc3VyZSJfczsgfQogCiAgICAgUmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbV9zZXJpYWxpemVkRGV0YWlsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZy5oCmluZGV4IGM3YzFmMzZiNGM5ZS4u
YzAzYzA0YWQ5MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TmF2aWdhdGlvblRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uVGltaW5nLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH5QZXJmb3Jt
YW5jZU5hdmlnYXRpb25UaW1pbmcoKTsKIAogICAgIFR5cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpOYXZpZ2F0aW9uOyB9Ci0gICAgQVNDSUlMaXRl
cmFsIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJuYXZpZ2F0aW9uIl9zOyB9Cisg
ICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAibmF2aWdhdGlvbiJfczsgfQogCiAgICAgZG91YmxlIHVubG9hZEV2ZW50U3RhcnQoKSBjb25z
dDsKICAgICBkb3VibGUgdW5sb2FkRXZlbnRFbmQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VQYWludFRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZVBhaW50VGltaW5nLmgKaW5kZXggNzBmODA4NWY5Y2M3Li42MDllMzlh
ODVlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VQYWludFRp
bWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VQYWludFRpbWluZy5o
CkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIEFTQ0lJTGl0
ZXJhbCBlbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAicGFpbnQiX3M7IH0KKyAgICBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJw
YWludCJfczsgfQogICAgIFR5cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBUeXBlOjpQYWludDsgfQogCiAgICAgflBlcmZvcm1hbmNlUGFpbnRUaW1pbmcoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRp
bWluZy5oCmluZGV4IDY5NDM1ZWZiMDhhNi4uYTI0ZWVmMjNlNjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaApAQCAtNjgsNyArNjgsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFJlZjxQZXJmb3JtYW5jZVNlcnZlclRpbWluZz4+
JiBzZXJ2ZXJUaW1pbmcoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlclRpbWluZzsgfQogCiAgICAg
VHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFR5cGU6
OlJlc291cmNlOyB9Ci0gICAgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJyZXNvdXJjZSJfczsgfQorICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZW50
cnlUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gInJlc291cmNlIl9zOyB9CiAKIHByb3Rl
Y3RlZDoKICAgICBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKE1vbm90b25pY1RpbWUgdGltZU9y
aWdpbiwgUmVzb3VyY2VUaW1pbmcmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKaW5kZXggNWEzNGNlYTA1NGFjLi4zMzgwNjFjOTY0NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgdXNpbmcgQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uID0gU3Bh
bjxjb25zdCBBU0NJSUxpdGVyYWw+ICgqKSgpOwogc3RhdGljIHZvaWQgYWRkKFVSTFNjaGVtZXNN
YXAmIHNldCwgQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIGZvciAo
YXV0byYgc2NoZW1lIDogZnVuY3Rpb24oKSkKLSAgICAgICAgc2V0LmFkZChzY2hlbWUpOworICAg
ICAgICBzZXQuYWRkKFN0cmluZyB7IHNjaGVtZSB9KTsKIH0KIAogc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVSTFNjaGVtZXNNYXA+IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChBU0NJSUxpdGVy
YWxTcGFuRnVuY3Rpb24gZnVuY3Rpb24pCkBAIC0xMzYsMTUgKzEzNiwxNSBAQCBzdGF0aWMgVVJM
U2NoZW1lc01hcCYgZGlzcGxheUlzb2xhdGVkVVJMU2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NL
KHNjaGVtZVJlZ2lzdAogc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2Vj
dXJlU2NoZW1lcygpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMg
ewotICAgICAgICAiaHR0cHMiX3MsCi0gICAgICAgICJhYm91dCJfcywKLSAgICAgICAgImRhdGEi
X3MsCi0gICAgICAgICJ3c3MiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4o
Imh0dHBzIl9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiYWJvdXQiX3Mp
LAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJkYXRhIl9zKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigid3NzIl9zKSwKICNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkKLSAgICAgICAgInJlc291cmNlIl9zLAorICAgICAgICBzdGF0aWNfY2Fz
dDxBU0NJSUxpdGVyYWw+KCJyZXNvdXJjZSJfcyksCiAjZW5kaWYKICNpZiBFTkFCTEUoUERGSlMp
Ci0gICAgICAgICJ3ZWJraXQtcGRmanMtdmlld2VyIl9zLAorICAgICAgICBzdGF0aWNfY2FzdDxB
U0NJSUxpdGVyYWw+KCJ3ZWJraXQtcGRmanMtdmlld2VyIl9zKSwKICNlbmRpZgogICAgIH07CiAg
ICAgcmV0dXJuIHNjaGVtZXM7CkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIFVSTFNjaGVtZXNN
YXAmIHNlY3VyZVNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2sp
CiAKIHN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpblNjaGVtZXNXaXRoVW5p
cXVlT3JpZ2lucygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMg
eworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxBU0NJSUxpdGVyYWwsIDM+IHNjaGVt
ZXMgewogICAgICAgICAiYWJvdXQiX3MsCiAgICAgICAgICJqYXZhc2NyaXB0Il9zLAogICAgICAg
ICAvLyBUaGlzIGlzIGFuIGludGVudGlvbmFsIGRpZmZlcmVuY2UgZnJvbSB0aGUgYmVoYXZpb3Ig
dGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBjYWxscyBmb3IuCkBAIC0xNzgsNyArMTc4LDcgQEAgc3Rh
dGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpIFdURl9SRVFVSVJF
U19MT0NLKHNjaGVtZVJlZ2lzdHIKIAogc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBi
dWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMoKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjphcnJheSBzY2hlbWVzIHsgImFib3V0Il9zIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMT4gc2NoZW1lcyB7ICJhYm91dCJfcyB9OwogICAgIHJldHVy
biBzY2hlbWVzOwogfQogCkBAIC0xOTgsNyArMTk4LDcgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAm
IHNjaGVtZXNGb3JiaWRkZW5Gcm9tRG9tYWluUmVsYXhhdGlvbigpCiAKIHN0YXRpYyBTcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1l
cygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgeyAiYmxvYiJf
cyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxBU0NJSUxpdGVyYWwsIDE+IHNj
aGVtZXMgeyAiYmxvYiJfcyB9OwogICAgIHJldHVybiBzY2hlbWVzOwogfQogCkBAIC0yNjMsNyAr
MjYzLDcgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNj
ZXNzSW5Qcml2YXRlQnJvd3NpbmcoKQogCiBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+
IGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMoKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjphcnJheSBzY2hlbWVzIHsgImh0dHAiX3MsICJodHRwcyJfcyB9OworICAgIHN0YXRpYyBjb25z
dGV4cHIgc3RkOjphcnJheTxBU0NJSUxpdGVyYWwsIDI+IHNjaGVtZXMgeyAiaHR0cCJfcywgImh0
dHBzIl9zIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggNWFjYjI5Y2ZiNDU5Li4zYzFlNzBkZjNh
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBA
IC0yMTgsNyArMjE4LDcgQEAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUkKICAgICAgICAgLy8gVGhp
cyBjYW4gcmVzdWx0IGluIGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxpdGllcy4KICAg
ICAgICAgfTsKICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogc3VwcG9ydGVkSmF2YVNjcmlwdE1J
TUVUeXBlQXJyYXkpCi0gICAgICAgICAgICB0eXBlcy5hZGQodHlwZS5saXRlcmFsKTsKKyAgICAg
ICAgICAgIHR5cGVzLmFkZChTdHJpbmcgeyB0eXBlLmxpdGVyYWwgfSk7CiAjaWYgRU5BQkxFKFdF
Ql9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgICAgIEFyY2hpdmVGYWN0b3J5OjpyZWdp
c3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcyh0eXBlcyk7CiAjZW5kaWYKQEAgLTM2NCw3ICszNjQs
NyBAQCBzdGF0aWMgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+LCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBjb21tb25NaQogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBj
b21tb25NZWRpYVR5cGVzKSB7CiAgICAgICAgICAgICBBU0NJSUxpdGVyYWwgdHlwZSA9IHBhaXIu
dHlwZTsKICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCBleHRlbnNpb24gPSBwYWlyLmV4dGVuc2lv
bjsKLSAgICAgICAgICAgIG1hcC5lbnN1cmUoZXh0ZW5zaW9uLCBbdHlwZSwgZXh0ZW5zaW9uXSB7
CisgICAgICAgICAgICBtYXAuZW5zdXJlKFN0cmluZyB7IGV4dGVuc2lvbiB9LCBbdHlwZSwgZXh0
ZW5zaW9uXSB7CiAgICAgICAgICAgICAgICAgLy8gRmlyc3QgdHlwZSBpbiB0aGUgdmVjdG9yIG11
c3QgYWx3YXlzIGJlIHRoZSBvbmUgZnJvbSBtaW1lVHlwZUZvckV4dGVuc2lvbiwKICAgICAgICAg
ICAgICAgICAvLyBzbyB3ZSBjYW4gdXNlIHRoZSBtYXAgd2l0aG91dCBhbHNvIGNhbGxpbmcgbWlt
ZVR5cGVGb3JFeHRlbnNpb24gZWFjaCB0aW1lLgogICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHN5bm9ueW1zOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHN0YXRpYyBTdHJpbmcgbm9ybWFsaXpl
ZEltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB9OwogICAgIHN0YXRp
YyBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgYXNzb2NpYXRpb25NYXAgeyBtaW1lVHlwZUFzc29j
aWF0aW9uQXJyYXkgfTsKICAgICBhdXRvIG5vcm1hbGl6ZWRUeXBlID0gYXNzb2NpYXRpb25NYXAu
dHJ5R2V0KG1pbWVUeXBlKTsKLSAgICByZXR1cm4gbm9ybWFsaXplZFR5cGUgPyAqbm9ybWFsaXpl
ZFR5cGUgOiBtaW1lVHlwZTsKKyAgICByZXR1cm4gbm9ybWFsaXplZFR5cGUgPyBTdHJpbmcgeyAq
bm9ybWFsaXplZFR5cGUgfSA6IG1pbWVUeXBlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuY3BwCmluZGV4IDE2
Nzk5MTFiNTg3Zi4uMDJkODhlOTQ2YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9v
bCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKQogCiBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJh
bD4gYWd4Q29tcGlsZXJTZXJ2aWNlcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFy
cmF5IHNlcnZpY2VzIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8QVNDSUlMaXRl
cmFsLCAyPiBzZXJ2aWNlcyB7CiAgICAgICAgICJjb20uYXBwbGUuQUdYQ29tcGlsZXJTZXJ2aWNl
Il9zLAogICAgICAgICAiY29tLmFwcGxlLkFHWENvbXBpbGVyU2VydmljZS1TMkE4Il9zCiAgICAg
fTsKQEAgLTY5LDcgKzY5LDcgQEAgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGFneENvbXBpbGVy
U2VydmljZXMoKQogCiBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYWd4Q29tcGlsZXJDbGFzc2Vz
KCkKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgY2xhc3NlcyB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMTA+IGNsYXNzZXMgewogICAg
ICAgICAiQUdYQ29tbWFuZFF1ZXVlIl9zLAogICAgICAgICAiQUdYRGV2aWNlIl9zLAogICAgICAg
ICAiQUdYU2hhcmVkVXNlckNsaWVudCJfcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDEyY2UzZTk2ZGQzMS4uM2EzYzkxMDdjMzY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAg
LTI0Myw3ICsyNDMsNyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNhY2hlZEZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RAogICAgICAgICAgICAgLy8g
V2Ugd2VyZSB1bmFibGUgdG8gZmluZCBhIGZvbnQuIFdlIGhhdmUgYSBzbWFsbCBzZXQgb2YgZm9u
dHMgdGhhdCB3ZSBhbGlhcyB0byBvdGhlciBuYW1lcywKICAgICAgICAgICAgIC8vIGUuZy4sIEFy
aWFsL0hlbHZldGljYSwgQ291cmllci9Db3VyaWVyIE5ldywgZXRjLiBUcnkgbG9va2luZyB1cCB0
aGUgZm9udCB1bmRlciB0aGUgYWxpYXNlZCBuYW1lLgogICAgICAgICAgICAgaWYgKGF1dG8gYWx0
ZXJuYXRlTmFtZSA9IGFsdGVybmF0ZUZhbWlseU5hbWUoZmFtaWx5TmFtZSkpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvKiBhbHRlcm5hdGVEYXRhID0gY2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250
RGVzY3JpcHRpb24sICphbHRlcm5hdGVOYW1lLCBmb250Q3JlYXRpb25Db250ZXh0LCB0cnVlKTsK
KyAgICAgICAgICAgICAgICBhdXRvKiBhbHRlcm5hdGVEYXRhID0gY2FjaGVkRm9udFBsYXRmb3Jt
RGF0YShmb250RGVzY3JpcHRpb24sIFN0cmluZyB7ICphbHRlcm5hdGVOYW1lIH0sIGZvbnRDcmVh
dGlvbkNvbnRleHQsIHRydWUpOwogICAgICAgICAgICAgICAgIC8vIExvb2sgdXAgdGhlIGtleSBp
biB0aGUgaGFzaCB0YWJsZSBhZ2FpbiBhcyB0aGUgcHJldmlvdXMgaXRlcmF0b3IgbWF5IGhhdmUK
ICAgICAgICAgICAgICAgICAvLyBiZWVuIGludmFsaWRhdGVkIGJ5IHRoZSByZWN1cnNpdmUgY2Fs
bCB0byBjYWNoZWRGb250UGxhdGZvcm1EYXRhKCkuCiAgICAgICAgICAgICAgICAgaXQgPSBtX2Zv
bnREYXRhQ2FjaGVzLT5wbGF0Zm9ybURhdGEuZmluZChrZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVU
eXBlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbQppbmRleCBkODQ4MDVmMjM1MWUuLmEzY2Vk
MDMxMGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2Fj
aGUubW0KQEAgLTE1Miw3ICsxNTIsOCBAQCB2b2lkIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjppbml0
aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSAogI2lmIEVO
QUJMRShXRUJNX0ZPUk1BVF9SRUFERVIpCiAgICAgaWYgKFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OmlzV2ViTUZvcm1hdFJlYWRlckF2YWlsYWJsZSgpKSB7CiAgICAgICAgIGF1dG8gdHlwZXMgPSBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRNSU1FVHlwZXMoKTsKLSAgICAgICAgY2Fj
aGUuYWRkKHR5cGVzLmJlZ2luKCksIHR5cGVzLmVuZCgpKTsKKyAgICAgICAgZm9yIChhdXRvJiB0
eXBlIDogdHlwZXMpCisgICAgICAgICAgICBjYWNoZS5hZGQoU3RyaW5nIHsgdHlwZSB9KTsKICAg
ICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYjg2NmM3MTcxOGNiLi5mYzY3NGI5YWVj
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHN0YXRpYyBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5z
Zm9ybU9wCiAgICAgfQogfQogCi1zdGF0aWMgQVNDSUlMaXRlcmFsIHByb3BlcnR5SWRUb1N0cmlu
ZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCitzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExl
bmd0aCBwcm9wZXJ0eUlkVG9TdHJpbmcoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQogewog
ICAgIHN3aXRjaCAocHJvcGVydHkpIHsKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlUcmFuc2xh
dGU6CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBwcm9wZXJ0eUlkVG9T
dHJpbmcoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpu
dWxsKCk7CiB9CiAKIHN0YXRpYyBib29sIGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmlt
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggMTU3M2UxNjYwNDMxLi5hZGEw
MjM1MWIxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMzcwLDcgKzM3
MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
ICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAgICAgR0xfRW5hYmxlKEdyYXBoaWNzQ29udGV4
dEdMOjpQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKLSAgICBWZWN0b3I8QVNDSUlM
aXRlcmFsLCA0PiByZXF1aXJlZEV4dGVuc2lvbnM7CisgICAgVmVjdG9yPEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGgsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKICAgICBpZiAobV9pc0ZvcldlYkdMMikg
ewogICAgICAgICAvLyBGb3IgV2ViR0wgMi4wIG9jY2x1c2lvbiBxdWVyaWVzIHRvIHdvcmsuCiAg
ICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlf
Ym9vbGVhbiJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IGQ4ZTY2
MDdmODljZC4uY2FkMjVjOGIxMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgTG9nQXJndW1lbnQ7CiAKIHRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PHdlYm06
OlRyYWNrVHlwZT4gewotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdG9TdHJpbmcod2VibTo6VHJh
Y2tUeXBlIHR5cGUpCisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdG9TdHJpbmco
d2VibTo6VHJhY2tUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICAgICAgY2FzZSB3ZWJtOjpUcmFja1R5cGU6OmtWaWRlbzogcmV0dXJuICJWaWRlbyJfczsKQEAg
LTczLDcgKzczLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8d2VibTo6VHJhY2tU
eXBlPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDx3ZWJtOjpJZD4gewot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdG9TdHJpbmcod2VibTo6SWQgaWQpCisgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdG9TdHJpbmcod2VibTo6SWQgaWQpCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKGlkKSB7CiAgICAgICAgIGNhc2Ugd2VibTo6SWQ6OmtFYm1sOiByZXR1cm4g
IkVibWwiX3M7CkBAIC01MDMsMTAgKzUwMywxMCBAQCBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4g
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c3VwcG9ydGVkTUlNRVR5cGVzKCkKICNlbHNlCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHR5cGVzIHsKICNpZiBFTkFCTEUoVlA5KQotICAg
ICAgICAidmlkZW8vd2VibSJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigi
dmlkZW8vd2VibSJfcyksCiAjZW5kaWYKICNpZiBFTkFCTEUoVk9SQklTKSB8fCBFTkFCTEUoT1BV
UykKLSAgICAgICAgImF1ZGlvL3dlYm0iX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0
ZXJhbD4oImF1ZGlvL3dlYm0iX3MpLAogI2VuZGlmCiAgICAgfTsKICAgICByZXR1cm4gdHlwZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRnVuY3Rpb24uY3BwCmluZGV4IDYyOWY3MzRmYTU4YS4uYTA2ODI2NmU5N2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckZ1bmN0aW9uLmNwcApAQCAtNjcsNyArNjcsNyBAQCBBdG9tU3RyaW5nIEZpbHRl
ckZ1bmN0aW9uOjpmaWx0ZXJOYW1lKFR5cGUgZmlsdGVyVHlwZSkKICAgICBzdGF0aWMgY29uc3Rl
eHByIFNvcnRlZEFycmF5TWFwIG5hbWVzTWFwIHsgbmFtZXNBcnJheSB9OwogICAgIAogICAgIEFT
U0VSVChuYW1lc01hcC50cnlHZXQoZmlsdGVyVHlwZSkpOwotICAgIHJldHVybiBuYW1lc01hcC5n
ZXQoZmlsdGVyVHlwZSwgIiJfcyk7CisgICAgcmV0dXJuIEF0b21TdHJpbmcgeyBuYW1lc01hcC5n
ZXQoZmlsdGVyVHlwZSwgIiJfcykgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bhc3RlYm9hcmRNYWMubW0gYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbQppbmRleCBhMmMyNTBh
YTJiZWYuLjBlNmMyYzJhZTZkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1Bhc3RlYm9hcmRNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1Bh
c3RlYm9hcmRNYWMubW0KQEAgLTU1Niw3ICs1NTYsNyBAQCBBTExPV19ERVBSRUNBVEVEX0RFQ0xB
UkFUSU9OU19FTkQKICAgICAgICAgaWYgKCFidWZmZXIpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCksIG1pbWVUeXBlKTsKKyAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVy
LnJlbGVhc2VOb25OdWxsKCksIFN0cmluZyB7IG1pbWVUeXBlIH0pOwogICAgIH07CiAKICAgICBW
ZWN0b3I8SW1hZ2VSZWFkaW5nSW5mbywgNj4gdHJhbnNjb2RlZEltYWdlVHlwZXNUb1JlYWQ7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCmluZGV4
IGYzZjg3YTRmN2U5Yi4uMzEwMmI0MzJmNDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmNwcApAQCAtOTk1LDcgKzk5NSw3IEBAIFN0cmluZyBu
b3JtYWxpemVIVFRQTWV0aG9kKGNvbnN0IFN0cmluZyYgbWV0aG9kKQogICAgICAgICAgICAgLy8g
RG9uJ3QgYm90aGVyIGFsbG9jYXRpbmcgYSBuZXcgc3RyaW5nIGlmIGl0J3MgYWxyZWFkeSBhbGwg
dXBwZXJjYXNlLgogICAgICAgICAgICAgaWYgKG1ldGhvZCA9PSB2YWx1ZSkKICAgICAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgICAgIHJldHVy
biBTdHJpbmcgeyB2YWx1ZSB9OwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBtZXRob2Q7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW4vV2luZG93c0tleU5hbWVz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaW5kb3dzS2V5TmFtZXMuY3BwCmlu
ZGV4IDI2YmIyMTI5NjdkNi4uZTM0YzI4NzU2ZDQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS93aW4vV2luZG93c0tleU5hbWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS93aW4vV2luZG93c0tleU5hbWVzLmNwcApAQCAtMjMwLDcgKzIzMCw3IEBAIHN0YXRp
YyBTdHJpbmcgbm9uUHJpbnRhYmxlVmlydHVhbEtleVRvRG9tS2V5KGludCB2aXJ0dWFsS2V5LCBI
S0wgbGF5b3V0KQogICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnZpcnR1YWxLZXkgPCBuZWVkbGU7
CiAgICAgICAgIH0pOwogICAgIGlmIChyZXN1bHQgIT0gc3RkOjplbmQoY05vblByaW50YWJsZUtl
eU1hcCkgJiYgcmVzdWx0LT52aXJ0dWFsS2V5ID09IHZpcnR1YWxLZXkpCi0gICAgICAgIHJldHVy
biByZXN1bHQtPmRvbUtleTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyB7IHJlc3VsdC0+ZG9tS2V5
IH07CiAKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CkBAIC00NzAsNyArNDcwLDcgQEAgU3RyaW5n
IFdpbmRvd3NLZXlOYW1lczo6ZG9tQ29kZUZyb21MUGFyYW0oTFBBUkFNIGxQYXJhbSkKICAgICAg
ICAgICAgIHJldHVybiBlbnRyeS5zY2FuQ29kZSA8IG5lZWRsZTsKICAgICAgICAgfSk7CiAgICAg
aWYgKHJlc3VsdCAhPSBzdGQ6OmVuZChjRG9tQ29kZU1hcCkgJiYgcmVzdWx0LT5zY2FuQ29kZSA9
PSBleHRlbmRlZFNjYW5Db2RlKQotICAgICAgICByZXR1cm4gcmVzdWx0LT5kb21Db2RlOworICAg
ICAgICByZXR1cm4gU3RyaW5nIHsgcmVzdWx0LT5kb21Db2RlIH07CiAKICAgICByZXR1cm4gIlVu
aWRlbnRpZmllZCJfczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckJhY2tpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyQmFja2luZy5jcHAKaW5kZXggMjM0NTUyNWIyYzgwLi4xMTdjNGQ0OWQyOWUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckJhY2tpbmcuY3BwCkBAIC0zMzM4
LDcgKzMzMzgsNyBAQCBzdGF0aWMgUmVmUHRyPFBhdHRlcm4+IHBhdHRlcm5Gb3JEZXNjcmlwdGlv
bihQYXR0ZXJuRGVzY3JpcHRpb24gZGVzY3JpcHRpb24sIEZsbwogICAgICAgICBGb250Q2FzY2Fk
ZSBmb250KFdURk1vdmUoZm9udERlc2NyaXB0aW9uKSwgMCwgMCk7CiAgICAgICAgIGZvbnQudXBk
YXRlKG51bGxwdHIpOwogCi0gICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4oZGVzY3Jp
cHRpb24ubmFtZSk7CisgICAgICAgIFRleHRSdW4gdGV4dFJ1biA9IFRleHRSdW4oU3RyaW5nIHsg
ZGVzY3JpcHRpb24ubmFtZSB9KTsKICAgICAgICAgaW1hZ2VDb250ZXh0LnNldEZpbGxDb2xvcihk
ZXNjcmlwdGlvbi5maWxsQ29sb3IpOwogCiAgICAgICAgIGNvbnN0ZXhwciBmbG9hdCB0ZXh0R2Fw
ID0gNDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA1NjcwYjZiZmE2N2Uu
LmYxNWE1YTY0NDExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5h
bHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApAQCAtNjYz
NSw3ICs2NjM1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gSW50ZXJuYWxzOjpzZXRNb2NrTWVkaWFT
ZXNzaW9uQ29vcmRpbmF0b3JDb21tYW5kc1Nob3VsZEZhaWwoYm8KIH0KICNlbmRpZiAvLyBFTkFC
TEUoTUVESUFfU0VTU0lPTikKIAotY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBzdHJpbmcoUGFydGlh
bE9yZGVyaW5nIG9yZGVyaW5nKQorY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggc3Ry
aW5nKFBhcnRpYWxPcmRlcmluZyBvcmRlcmluZykKIHsKICAgICBpZiAoaXNfbHQob3JkZXJpbmcp
KQogICAgICAgICByZXR1cm4gImxlc3MiX3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS94
bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0
LmNwcAppbmRleCA4OTVkYzlkMDg1NTAuLmU3NzVlOWYzYjEzMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCkBAIC01MjMsNyArNTIzLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4g
WE1MSHR0cFJlcXVlc3Q6OnNlbmQoQmxvYiYgYm9keSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBX
ZSB3b3VsZCBsaWtlIHRvIHN1cHBvcnQgcG9zdGluZyBCbG9icyB0byBub24taHR0cCBVUkxzIChl
LmcuIGN1c3RvbSBVUkwgc2NoZW1lcykKICAgICAgICAgICAgIC8vIGJ1dCBiZWNhdXNlIG9mIHRo
ZSBhcmNoaXRlY3R1cmUgb2YgYmxvYi1oYW5kbGluZyB0aGF0IHdpbGwgcmVxdWlyZSBhIGZhaXIg
YW1vdW50IG9mIHdvcmsuCiAgICAgICAgICAgICAKLSAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCBj
b25zb2xlTWVzc2FnZSB7ICJQT1NUIG9mIGEgQmxvYiB0byBub24tSFRUUCBwcm90b2NvbHMgaW4g
WE1MSHR0cFJlcXVlc3Quc2VuZCgpIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZC4iX3MgfTsKKyAg
ICAgICAgICAgIGF1dG8gY29uc29sZU1lc3NhZ2UgPSAiUE9TVCBvZiBhIEJsb2IgdG8gbm9uLUhU
VFAgcHJvdG9jb2xzIGluIFhNTEh0dHBSZXF1ZXN0LnNlbmQoKSBpcyBjdXJyZW50bHkgdW5zdXBw
b3J0ZWQuIl9zOwogICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpXYXJuaW5nLCBjb25z
b2xlTWVzc2FnZSk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZXF1
ZXN0KCk7CkBAIC01NjUsNyArNTY1LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVl
c3Q6OnNlbmQoRE9NRm9ybURhdGEmIGJvZHkpCiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IFhNTEh0dHBS
ZXF1ZXN0OjpzZW5kKEFycmF5QnVmZmVyJiBib2R5KQogewotICAgIEFTQ0lJTGl0ZXJhbCBjb25z
b2xlTWVzc2FnZSB7ICJBcnJheUJ1ZmZlciBpcyBkZXByZWNhdGVkIGluIFhNTEh0dHBSZXF1ZXN0
LnNlbmQoKS4gVXNlIEFycmF5QnVmZmVyVmlldyBpbnN0ZWFkLiJfcyB9OworICAgIGF1dG8gY29u
c29sZU1lc3NhZ2UgPSAiQXJyYXlCdWZmZXIgaXMgZGVwcmVjYXRlZCBpbiBYTUxIdHRwUmVxdWVz
dC5zZW5kKCkuIFVzZSBBcnJheUJ1ZmZlclZpZXcgaW5zdGVhZC4iX3M7CiAgICAgc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVz
c2FnZUxldmVsOjpXYXJuaW5nLCBjb25zb2xlTWVzc2FnZSk7CiAgICAgcmV0dXJuIHNlbmRCeXRl
c0RhdGEoYm9keS5kYXRhKCksIGJvZHkuYnl0ZUxlbmd0aCgpKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhGdW5jdGlvbnMuY3BwCmluZGV4IDMyMmUzYmUwZjc1ZC4uMDcyM2JlZTZjZDE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhGdW5jdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKQEAgLTcwOSw3ICs3MDksNyBAQCBzdGF0
aWMgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgRnVuY3Rp
b25NYXBWYWx1ZT4gY3JlYXRlRgogCiAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhv
b2RIYXNoTWFwPFN0cmluZywgRnVuY3Rpb25NYXBWYWx1ZT4gbWFwOwogICAgIGZvciAoYXV0byYg
ZnVuY3Rpb24gOiBmdW5jdGlvbnMpCi0gICAgICAgIG1hcC5hZGQoZnVuY3Rpb24ubmFtZSwgZnVu
Y3Rpb24uZnVuY3Rpb24pOworICAgICAgICBtYXAuYWRkKFN0cmluZyB7IGZ1bmN0aW9uLm5hbWUg
fSwgZnVuY3Rpb24uZnVuY3Rpb24pOwogICAgIHJldHVybiBtYXA7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwv
WFBhdGhQYXJzZXIuY3BwCmluZGV4IGUzMTU2NWViZTc4ZC4uZThmOWNiOWNhM2ZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWFBhdGhQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3htbC9YUGF0aFBhcnNlci5jcHAKQEAgLTk4LDcgKzk4LDcgQEAgc3RhdGljIE1lbW9yeUNv
bXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFN0ZXA6OkF4aXM+IGNyZWF0
ZUF4aXNOYW0KICAgICB9OwogICAgIE1lbW9yeUNvbXBhY3RMb29rdXBPbmx5Um9iaW5Ib29kSGFz
aE1hcDxTdHJpbmcsIFN0ZXA6OkF4aXM+IG1hcDsKICAgICBmb3IgKGF1dG8mIGF4aXNOYW1lIDog
YXhpc05hbWVMaXN0KQotICAgICAgICBtYXAuYWRkKGF4aXNOYW1lLm5hbWUsIGF4aXNOYW1lLmF4
aXMpOworICAgICAgICBtYXAuYWRkKFN0cmluZyB7IGF4aXNOYW1lLm5hbWUgfSwgYXhpc05hbWUu
YXhpcyk7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0
b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9SZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKaW5kZXggNTE2YTJmNTAyY2M5Li41MzRk
Y2FmYTRjNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvQ2xhc3Np
Zmllci9SZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0YWJhc2VTdG9yZS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlLmNwcApAQCAtMjcyLDcgKzI3Miw3IEBAIGNvbnN0IE1lbW9yeUNvbXBhY3RM
b29rdXBPbmx5Um9iaW5Ib29kSGFzaE1hcDxTdHJpbmcsIFRhYmxlQW5kSW5kZXhQYWlyPiYgUmVz
b3VyCiAKIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGF0
YWJhc2VTdG9yZTo6c29ydGVkVGFibGVzKCkKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6
YXJyYXkgc29ydGVkVGFibGVzIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8QVND
SUlMaXRlcmFsLCAxMz4gc29ydGVkVGFibGVzIHsKICAgICAgICAgIk9ic2VydmVkRG9tYWlucyJf
cywKICAgICAgICAgIlRvcExldmVsRG9tYWlucyJfcywKICAgICAgICAgIlN0b3JhZ2VBY2Nlc3NV
bmRlclRvcEZyYW1lRG9tYWlucyJfcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvRGF0YWJhc2VVdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAKaW5kZXggMThmMTFkMzM5ZTFlLi43MTk2YzRkMDQx
NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGls
aXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvRGF0YWJhc2VVdGls
aXRpZXMuY3BwCkBAIC0yOTgsNyArMjk4LDcgQEAgdm9pZCBEYXRhYmFzZVV0aWxpdGllczo6bWln
cmF0ZURhdGFUb05ld1RhYmxlc0lmTmVjZXNzYXJ5KCkKIAogICAgIC8vIE1haW50YWluIHRoZSBv
cmRlciBvZiB0YWJsZXMgdG8gbWFrZSBzdXJlIHRoZSBPYnNlcnZlZERvbWFpbnMgdGFibGUgaXMg
Y3JlYXRlZCBmaXJzdC4gT3RoZXIgdGFibGVzIGhhdmUgZm9yZWlnbiBrZXkgY29uc3RyYWludHMg
cmVmZXJlbmNpbmcgaXQuCiAgICAgZm9yIChhdXRvJiB0YWJsZSA6IHNvcnRlZFRhYmxlcygpKSB7
Ci0gICAgICAgIGF1dG8gbWlncmF0ZVRhYmxlRGF0YSA9IGluc2VydERpc3RpbmN0VmFsdWVzSW5U
YWJsZVN0YXRlbWVudChtX2RhdGFiYXNlLCB0YWJsZSk7CisgICAgICAgIGF1dG8gbWlncmF0ZVRh
YmxlRGF0YSA9IGluc2VydERpc3RpbmN0VmFsdWVzSW5UYWJsZVN0YXRlbWVudChtX2RhdGFiYXNl
LCBTdHJpbmcgeyB0YWJsZSB9KTsKICAgICAgICAgaWYgKCFtaWdyYXRlVGFibGVEYXRhIHx8IG1p
Z3JhdGVUYWJsZURhdGEtPnN0ZXAoKSAhPSBTUUxJVEVfRE9ORSkgewogICAgICAgICAgICAgdHJh
bnNhY3Rpb24ucm9sbGJhY2soKTsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByaXZh
dGVDbGlja01lYXN1cmVtZW50LCAiJXAgLSBEYXRhYmFzZVV0aWxpdGllczo6bWlncmF0ZURhdGFU
b05ld1RhYmxlc0lmTmVjZXNzYXJ5ICh0YWJsZSAlcykgZmFpbGVkIHRvIG1pZ3JhdGUgc2NoZW1h
LCBlcnJvciBtZXNzYWdlOiAlcyIsIHRoaXMsIHRhYmxlLmNoYXJhY3RlcnMoKSwgbV9kYXRhYmFz
ZS5sYXN0RXJyb3JNc2coKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJh
c2UuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Qcml2YXRlQ2xpY2tNZWFzdXJl
bWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNlLmNwcAppbmRleCBjMDkwY2JlNTcx
ODQuLmFkYTkxZjhkOGIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudC9Qcml2YXRlQ2xpY2tNZWFzdXJlbWVudERhdGFiYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCkBAIC0xMTEsNyArMTEx
LDcgQEAgY29uc3QgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmlu
ZywgVGFibGVBbmRJbmRleFBhaXI+JiBEYXRhYmEKIAogU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+
IERhdGFiYXNlOjpzb3J0ZWRUYWJsZXMoKQogewotICAgIHN0YXRpYyBzdGQ6OmFycmF5IHNvcnRl
ZFRhYmxlcyB7CisgICAgc3RhdGljIHN0ZDo6YXJyYXk8QVNDSUlMaXRlcmFsLCAzPiBzb3J0ZWRU
YWJsZXMgewogICAgICAgICAiUENNT2JzZXJ2ZWREb21haW5zIl9zLAogICAgICAgICAiVW5hdHRy
aWJ1dGVkUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MsCiAgICAgICAgICJBdHRyaWJ1dGVkUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQiX3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCmluZGV4IDJm
YjhhYzU3OGYzZC4uYjdlZDVlODQxY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL3N0b3JhZ2UvT3JpZ2luU3RvcmFnZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXN0YXRpYyBjb25zdGV4cHIg
YXV0byBvcmlnaW5GaWxlTmFtZSA9ICJvcmlnaW4iX3M7CitzdGF0aWMgY29uc3RleHByIEFTQ0lJ
TGl0ZXJhbCBvcmlnaW5GaWxlTmFtZSA9ICJvcmlnaW4iX3M7CiBlbnVtIGNsYXNzIE9yaWdpblN0
b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0TW9kZSA6IGJvb2wgeyBCZXN0RWZmb3J0LCBQZXJz
aXN0ZW50IH07CiAKIGNsYXNzIE9yaWdpblN0b3JhZ2VNYW5hZ2VyOjpTdG9yYWdlQnVja2V0IHsK
QEAgLTM5MSw3ICszOTEsNyBAQCBTdHJpbmcgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VC
dWNrZXQ6OnJlc29sdmVkSURCU3RvcmFnZVBhdGgoKQogCiBTdHJpbmcgT3JpZ2luU3RvcmFnZU1h
bmFnZXI6Om9yaWdpbkZpbGVJZGVudGlmaWVyKCkKIHsKLSAgICByZXR1cm4gb3JpZ2luRmlsZU5h
bWU7CisgICAgcmV0dXJuIFN0cmluZyB7IG9yaWdpbkZpbGVOYW1lIH07CiB9CiAKIHN0YXRpYyBS
ZWY8UXVvdGFNYW5hZ2VyPiBjcmVhdGVRdW90YU1hbmFnZXIodWludDY0X3QgcXVvdGEsIGNvbnN0
IFN0cmluZyYgaWRiU3RvcmFnZVBhdGgsIGNvbnN0IFN0cmluZyYgY2FjaGVTdG9yYWdlUGF0aCwg
UXVvdGFNYW5hZ2VyOjpJbmNyZWFzZVF1b3RhRnVuY3Rpb24mJiBpbmNyZWFzZVF1b3RhRnVuY3Rp
b24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcu
Y3BwIGIvU291cmNlL1dlYktpdC9QbGF0Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAppbmRleCAw
YmUzOTVjMWMzN2MuLmU4OWMyNTA1NjI1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9QbGF0
Zm9ybS9JUEMvSlNJUENCaW5kaW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQ
Qy9KU0lQQ0JpbmRpbmcuY3BwCkBAIC0zNyw3ICszNyw3IEBACiAKIG5hbWVzcGFjZSBJUEMgewog
Ci1zdGF0aWMgSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNvZGVkU3RyaW5nQXJndW1lbnRWYWx1
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFN0cmluZyYgdmFsdWUs
IEFTQ0lJTGl0ZXJhbCB0eXBlKQorc3RhdGljIEpTQzo6SlNWYWx1ZSBqc1ZhbHVlRm9yRGVjb2Rl
ZFN0cmluZ0FyZ3VtZW50VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTdHJpbmcmIHZhbHVlLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHR5cGUpCiB7CiAgICAg
YXV0byYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3
SW1wbC5tbQppbmRleCA0N2U5ZGNhNTAwYjEuLjFmZTY4NmVhMGUyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAgLTI5MjIsNyArMjkyMiw3IEBA
IHN0YXRpYyBjb25zdCBTZWxlY3Rvck5hbWVNYXAmIHNlbGVjdG9yRXhjZXB0aW9uTWFwKCkKICAg
ICB9OwogCiAgICAgZm9yIChhdXRvJiBuYW1lIDogbmFtZXMpCi0gICAgICAgIG1hcC5nZXQoKS5h
ZGQobmFtZS5zZWxlY3RvciwgbmFtZS5jb21tYW5kTmFtZSk7CisgICAgICAgIG1hcC5nZXQoKS5h
ZGQobmFtZS5zZWxlY3RvciwgU3RyaW5nIHsgbmFtZS5jb21tYW5kTmFtZSB9KTsKIAogICAgIHJl
dHVybiBtYXA7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRl
eCAxYzdhZDQ0YzI0NmEuLmEyZTUxYjNkNmJlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCkBAIC04MTkyLDMxICs4MTkyLDMxIEBAIHN0YXRpYyBTcGFuPGNvbnN0
IEFTQ0lJTGl0ZXJhbD4gZ3B1SU9LaXRDbGFzc2VzKCkKIHsKICAgICBzdGF0aWMgY29uc3RleHBy
IHN0ZDo6YXJyYXkgc2VydmljZXMgewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgICAg
ICJBR1hEZXZpY2VVc2VyQ2xpZW50Il9zLAotICAgICAgICAiSU9HUFUiX3MsCi0gICAgICAgICJJ
T1N1cmZhY2VSb290VXNlckNsaWVudCJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRl
cmFsPigiQUdYRGV2aWNlVXNlckNsaWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJ
TGl0ZXJhbD4oIklPR1BVIl9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigi
SU9TdXJmYWNlUm9vdFVzZXJDbGllbnQiX3MpLAogI2VuZGlmCiAjaWYgUExBVEZPUk0oTUFDKSB8
fCBQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICAgICAgIkFHUE1DbGllbnQiX3MsCi0gICAgICAg
ICJBcHBsZUdyYXBoaWNzQ29udHJvbENsaWVudCJfcywKLSAgICAgICAgIkFwcGxlR3JhcGhpY3NQ
b2xpY3lDbGllbnQiX3MsCi0gICAgICAgICJBcHBsZUludGVsTUVVc2VyQ2xpZW50Il9zLAotICAg
ICAgICAiQXBwbGVNR1BVUG93ZXJDb250cm9sQ2xpZW50Il9zLAotICAgICAgICAiQXBwbGVTTkJG
QlVzZXJDbGllbnQiX3MsCi0gICAgICAgICJBcHBsZVVwc3RyZWFtVXNlckNsaWVudCJfcywKLSAg
ICAgICAgIkF1ZGlvQVVVQyJfcywKLSAgICAgICAgIklPQWNjZWxlcmF0aW9uVXNlckNsaWVudCJf
cywKLSAgICAgICAgIklPQWNjZWxlcmF0b3IiX3MsCi0gICAgICAgICJJT0F1ZGlvQ29udHJvbFVz
ZXJDbGllbnQiX3MsCi0gICAgICAgICJJT0F1ZGlvRW5naW5lVXNlckNsaWVudCJfcywKLSAgICAg
ICAgIklPU3VyZmFjZVJvb3RVc2VyQ2xpZW50Il9zLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJ
SUxpdGVyYWw+KCJBR1BNQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRl
cmFsPigiQXBwbGVHcmFwaGljc0NvbnRyb2xDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2Fz
dDxBU0NJSUxpdGVyYWw+KCJBcHBsZUdyYXBoaWNzUG9saWN5Q2xpZW50Il9zKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQXBwbGVJbnRlbE1FVXNlckNsaWVudCJfcyksCisg
ICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIkFwcGxlTUdQVVBvd2VyQ29udHJvbENs
aWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIkFwcGxlU05CRkJV
c2VyQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQXBwbGVV
cHN0cmVhbVVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+
KCJBdWRpb0FVVUMiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJJT0Fj
Y2VsZXJhdGlvblVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVy
YWw+KCJJT0FjY2VsZXJhdG9yIl9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFs
PigiSU9BdWRpb0NvbnRyb2xVc2VyQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVND
SUlMaXRlcmFsPigiSU9BdWRpb0VuZ2luZVVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNf
Y2FzdDxBU0NJSUxpdGVyYWw+KCJJT1N1cmZhY2VSb290VXNlckNsaWVudCJfcyksCiAjZW5kaWYK
ICAgICAgICAgLy8gRklYTUU6IElzIHRoaXMgYWxzbyBuZWVkZWQgaW4gUExBVEZPUk0oTUFDQ0FU
QUxZU1QpPwogI2lmIFBMQVRGT1JNKE1BQykgJiYgQ1BVKEFSTTY0KQotICAgICAgICAiSU9Nb2Jp
bGVGcmFtZWJ1ZmZlclVzZXJDbGllbnQiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0
ZXJhbD4oIklPTW9iaWxlRnJhbWVidWZmZXJVc2VyQ2xpZW50Il9zKSwKICNlbmRpZgogI2lmIChQ
TEFURk9STShNQUMpICYmIENQVShBUk02NCkpIHx8IFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAg
ICAgICJJT1N1cmZhY2VBY2NlbGVyYXRvckNsaWVudCJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8
QVNDSUlMaXRlcmFsPigiSU9TdXJmYWNlQWNjZWxlcmF0b3JDbGllbnQiX3MpLAogI2VuZGlmCiAg
ICAgfTsKICAgICByZXR1cm4gc2VydmljZXM7CkBAIC04MjI1LDkgKzgyMjUsOSBAQCBzdGF0aWMg
U3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGdwdUlPS2l0Q2xhc3NlcygpCiBzdGF0aWMgU3Bhbjxj
b25zdCBBU0NJSUxpdGVyYWw+IGdwdU1hY2hTZXJ2aWNlcygpCiB7CiAgICAgc3RhdGljIGNvbnN0
ZXhwciBzdGQ6OmFycmF5IHNlcnZpY2VzIHsKLSAgICAgICAgImNvbS5hcHBsZS5NVExDb21waWxl
clNlcnZpY2UiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oImNvbS5hcHBs
ZS5NVExDb21waWxlclNlcnZpY2UiX3MpLAogI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
TUFDQ0FUQUxZU1QpCi0gICAgICAgICJjb20uYXBwbGUuY3Ztc1NlcnYiX3MsCisgICAgICAgIHN0
YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oImNvbS5hcHBsZS5jdm1zU2VydiJfcyksCiAjZW5kaWYK
ICAgICB9OwogICAgIHJldHVybiBzZXJ2aWNlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0lQQ1Rlc3RpbmdBUEkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAKaW5kZXggZWUxNjQ1ZWY0ZTBjLi4zZTlh
OGQ1MjBmMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0lQ
Q1Rlc3RpbmdBUEkuY3BwCkBAIC02MSwxMSArNjEsMTEgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IG5hbWVzcGFjZSBJUENUZXN0aW5nQVBJIHsKIAotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2Nl
c3NUYXJnZXROYW1lVUkgPSAiVUkiX3M7CitzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBw
cm9jZXNzVGFyZ2V0TmFtZVVJID0gIlVJIl9zOwogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLXN0
YXRpYyBjb25zdGV4cHIgYXV0byBwcm9jZXNzVGFyZ2V0TmFtZUdQVSA9ICJHUFUiX3M7CitzdGF0
aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBwcm9jZXNzVGFyZ2V0TmFtZUdQVSA9ICJHUFUiX3M7
CiAjZW5kaWYKLXN0YXRpYyBjb25zdGV4cHIgYXV0byBwcm9jZXNzVGFyZ2V0TmFtZU5ldHdvcmtp
bmcgPSAiTmV0d29ya2luZyJfczsKK3N0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHByb2Nl
c3NUYXJnZXROYW1lTmV0d29ya2luZyA9ICJOZXR3b3JraW5nIl9zOwogCiBzdGF0aWMgc3RkOjpv
cHRpb25hbDx1aW50NjRfdD4gZGVzdGluYXRpb25JREZyb21Bcmd1bWVudChKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZVJlZiwgSlNWYWx1ZVJlZiopOwogc3RhdGljIHN0ZDo6b3B0aW9uYWw8
dWludDY0X3Q+IG1lc3NhZ2VJREZyb21Bcmd1bWVudChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZVJlZiwgSlNWYWx1ZVJlZiopOwpAQCAtMjA2NSwxMyArMjA2NSwxMyBAQCBKU1ZhbHVlUmVm
IEpTSVBDOjpwcm9jZXNzVGFyZ2V0cyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYg
dGhpc09iamVjdCwgSgogICAgIEpTQzo6SlNPYmplY3QqIHByb2Nlc3NUYXJnZXRzT2JqZWN0ID0g
SlNDOjpjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdCwgbnVsbHB0cik7CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwog
ICAgIGludCBpbmRleCA9IDA7Ci0gICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdElu
ZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgcHJvY2Vzc1Rhcmdl
dE5hbWVVSSkpOworICAgIHByb2Nlc3NUYXJnZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNTdHJpbmcodm0sIFN0cmluZyB7IHByb2Nlc3NUYXJn
ZXROYW1lVUkgfSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpKTsKICNpZiBFTkFCTEUoR1BVX1BST0NFU1MpCi0gICAgcHJvY2Vz
c1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwgaW5kZXgrKywgSlND
Ojpqc1N0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVHUFUpKTsKKyAgICBwcm9jZXNzVGFyZ2V0
c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBKU0M6OmpzU3Ry
aW5nKHZtLCBTdHJpbmcgeyBwcm9jZXNzVGFyZ2V0TmFtZUdQVSB9KSk7CiAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOwogI2VuZGlm
Ci0gICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwg
aW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgcHJvY2Vzc1RhcmdldE5hbWVOZXR3b3JraW5nKSk7
CisgICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdCwg
aW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nIHsgcHJvY2Vzc1RhcmdldE5hbWVOZXR3
b3JraW5nIH0pKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KSk7CiAgICAgcmV0dXJuIHRvUmVmKHZtLCBwcm9jZXNzVGFyZ2V0c09i
amVjdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9X
ZWJQYWdlTWFjLm1tCmluZGV4IDFhNzg5Zjk5ZDg5Zi4uMzkzMGYwYzk0ZTZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQpAQCAt
MjMwLDcgKzIzMCw3IEBAIHN0YXRpYyBTdHJpbmcgY29tbWFuZE5hbWVGb3JTZWxlY3Rvck5hbWUo
Y29uc3QgU3RyaW5nJiBzZWxlY3Rvck5hbWUpCiAgICAgfTsKICAgICBzdGF0aWMgY29uc3RleHBy
IFNvcnRlZEFycmF5TWFwIG1hcCB7IHNlbGVjdG9yRXhjZXB0aW9ucyB9OwogICAgIGlmIChhdXRv
IGNvbW1hbmROYW1lID0gbWFwLnRyeUdldChzZWxlY3Rvck5hbWUpKQotICAgICAgICByZXR1cm4g
KmNvbW1hbmROYW1lOworICAgICAgICByZXR1cm4gU3RyaW5nIHsgKmNvbW1hbmROYW1lIH07CiAK
ICAgICAvLyBSZW1vdmUgdGhlIHRyYWlsaW5nIGNvbG9uLgogICAgIC8vIE5vIG5lZWQgdG8gY2Fw
aXRhbGl6ZSB0aGUgY29tbWFuZCBuYW1lIHNpbmNlIEVkaXRvciBjb21tYW5kIG5hbWVzIGFyZSBu
b3QgY2FzZSBzZW5zaXRpdmUuCg==
</data>
<flag name="commit-queue"
          id="483472"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455497</attachid>
            <date>2022-03-23 07:27:38 -0700</date>
            <delta_ts>2022-03-23 13:50:30 -0700</delta_ts>
            <desc>Geoff&apos;s alternative proposal</desc>
            <filename>238162_s_suffix_no_strlen_geoff_proposal_wip2.patch</filename>
            <type>text/plain</type>
            <size>151698</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZWYwZmY2MmE3OGEzLi42Nzkx
ZmFlYzI0NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0xMDAsOSAr
MTAwLDkgQEAgc3RhdGljIFQgcGFyc2VCcmVha3BvaW50T3B0aW9ucyhQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNPTjoKICAgICBzaXplX3QgaWdub3JlQ291bnQg
PSAwOwogCiAgICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgY29uZGl0aW9uID0gb3B0aW9ucy0+
Z2V0U3RyaW5nKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmNvbmRpdGlv
bktleSk7CisgICAgICAgIGNvbmRpdGlvbiA9IG9wdGlvbnMtPmdldFN0cmluZyhTdHJpbmcgeyBQ
cm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjpjb25kaXRpb25LZXkgfSk7CiAK
LSAgICAgICAgYXV0byBhY3Rpb25zUGF5bG9hZCA9IG9wdGlvbnMtPmdldEFycmF5KFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmFjdGlvbnNLZXkpOworICAgICAgICBhdXRv
IGFjdGlvbnNQYXlsb2FkID0gb3B0aW9ucy0+Z2V0QXJyYXkoU3RyaW5nIHsgUHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50T3B0aW9uczo6YWN0aW9uc0tleSB9KTsKICAgICAgICAgaWYgKGF1
dG8gY291bnQgPSBhY3Rpb25zUGF5bG9hZCA/IGFjdGlvbnNQYXlsb2FkLT5sZW5ndGgoKSA6IDAp
IHsKICAgICAgICAgICAgIGFjdGlvbnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShjb3VudCk7CiAK
QEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgVCBwYXJzZUJyZWFrcG9pbnRPcHRpb25zKFByb3Rv
Y29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOgogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4geyB9OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGF1dG8gYWN0aW9uVHlwZVN0cmluZyA9IGFjdGlvbk9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6dHlwZUtleSk7CisgICAgICAgICAgICAgICAg
YXV0byBhY3Rpb25UeXBlU3RyaW5nID0gYWN0aW9uT2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsg
UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjp0eXBlS2V5IH0pOwogICAgICAg
ICAgICAgICAgIGlmICghYWN0aW9uVHlwZVN0cmluZykgewogICAgICAgICAgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJNaXNzaW5nIHR5cGUgZm9yIGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTEyNSwyMCArMTI1LDIwIEBAIHN0
YXRpYyBUIHBhcnNlQnJlYWtwb2ludE9wdGlvbnMoUHJvdG9jb2w6OkVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgUmVmUHRyPEpTT046CiAKICAgICAgICAgICAgICAgICBKU0M6OkJyZWFrcG9pbnQ6
OkFjdGlvbiBhY3Rpb24oKmFjdGlvblR5cGUpOwogCi0gICAgICAgICAgICAgICAgYWN0aW9uLmRh
dGEgPSBhY3Rpb25PYmplY3QtPmdldFN0cmluZyhQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9p
bnRBY3Rpb246OmRhdGFLZXkpOworICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gYWN0aW9u
T2JqZWN0LT5nZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
QWN0aW9uOjpkYXRhS2V5IH0pOwogCiAgICAgICAgICAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBp
ZGVudGlmaWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBz
YW1wbGVzCiAgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0aXBs
ZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgotICAg
ICAgICAgICAgICAgIGFjdGlvbi5pZCA9IGFjdGlvbk9iamVjdC0+Z2V0SW50ZWdlcihQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OmlkS2V5KS52YWx1ZV9vcihKU0M6Om5vQnJl
YWtwb2ludEFjdGlvbklEKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uaWQgPSBhY3Rpb25PYmpl
Y3QtPmdldEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0
aW9uOjppZEtleSB9KS52YWx1ZV9vcihKU0M6Om5vQnJlYWtwb2ludEFjdGlvbklEKTsKIAotICAg
ICAgICAgICAgICAgIGFjdGlvbi5lbXVsYXRlVXNlckdlc3R1cmUgPSBhY3Rpb25PYmplY3QtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjplbXVsYXRlVXNl
ckdlc3R1cmVLZXkpLnZhbHVlX29yKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBhY3Rpb24uZW11
bGF0ZVVzZXJHZXN0dXJlID0gYWN0aW9uT2JqZWN0LT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6ZW11bGF0ZVVzZXJHZXN0dXJlS2V5IH0p
LnZhbHVlX29yKGZhbHNlKTsKIAogICAgICAgICAgICAgICAgIGFjdGlvbnMudW5jaGVja2VkQXBw
ZW5kKFdURk1vdmUoYWN0aW9uKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFByb3RvY29sOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSkudmFsdWVfb3IoZmFsc2UpOwotICAg
ICAgICBpZ25vcmVDb3VudCA9IG9wdGlvbnMtPmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50T3B0aW9uczo6aWdub3JlQ291bnRLZXkpLnZhbHVlX29yKDApOworICAgICAg
ICBhdXRvQ29udGludWUgPSBvcHRpb25zLT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludE9wdGlvbnM6OmF1dG9Db250aW51ZUtleSB9KS52YWx1ZV9vcihm
YWxzZSk7CisgICAgICAgIGlnbm9yZUNvdW50ID0gb3B0aW9ucy0+Z2V0SW50ZWdlcihTdHJpbmcg
eyBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRPcHRpb25zOjppZ25vcmVDb3VudEtleSB9
KS52YWx1ZV9vcigwKTsKICAgICB9CiAKICAgICByZXR1cm4gY2FsbGJhY2soY29uZGl0aW9uLCBX
VEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKQEAgLTUxOCw3ICs1
MTgsNyBAQCBzdGF0aWMgUmVmPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGJ1aWxkRGVi
dWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcAogCiBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0
aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVj
dCYgbG9jYXRpb24sIEpTQzo6U291cmNlSUQmIHNvdXJjZUlELCB1bnNpZ25lZCYgbGluZU51bWJl
ciwgdW5zaWduZWQmIGNvbHVtbk51bWJlcikKIHsKLSAgICBhdXRvIGxpbmVOdW1iZXJWYWx1ZSA9
IGxvY2F0aW9uLmdldEludGVnZXIoUHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6bGluZU51
bWJlcktleSk7CisgICAgYXV0byBsaW5lTnVtYmVyVmFsdWUgPSBsb2NhdGlvbi5nZXRJbnRlZ2Vy
KFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmxpbmVOdW1iZXJLZXkgfSk7
CiAgICAgaWYgKCFsaW5lTnVtYmVyVmFsdWUpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5l
eHBlY3RlZCBub24taW50ZWdlciBsaW5lTnVtYmVyIGluIGdpdmVuIGxvY2F0aW9uIl9zOwogICAg
ICAgICBzb3VyY2VJRCA9IEpTQzo6bm9Tb3VyY2VJRDsKQEAgLTUyNyw3ICs1MjcsNyBAQCBzdGF0
aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IEpTT046Ok9iamVjdAogCiAgICAgbGluZU51bWJlciA9ICpsaW5lTnVtYmVyVmFsdWU7
CiAKLSAgICBhdXRvIHNjcmlwdElEU3RyID0gbG9jYXRpb24uZ2V0U3RyaW5nKFByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb246OnNjcmlwdElkS2V5KTsKKyAgICBhdXRvIHNjcmlwdElEU3RyID0g
bG9jYXRpb24uZ2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246
OnNjcmlwdElkS2V5IH0pOwogICAgIGlmICghc2NyaXB0SURTdHIpIHsKICAgICAgICAgc291cmNl
SUQgPSBKU0M6Om5vU291cmNlSUQ7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhlcGN0ZWQg
bm9uLXN0cmluZyBzY3JpcHRJZCBpbiBnaXZlbiBsb2NhdGlvbiJfczsKQEAgLTUzNSw3ICs1MzUs
NyBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdAogICAgIH0KIAogICAgIHNvdXJjZUlEID0gcGFy
c2VJbnRlZ2VyQWxsb3dpbmdUcmFpbGluZ0p1bms8SlNDOjpTb3VyY2VJRD4oc2NyaXB0SURTdHIp
LnZhbHVlX29yKDApOwotICAgIGNvbHVtbk51bWJlciA9IGxvY2F0aW9uLmdldEludGVnZXIoUHJv
dG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbjo6Y29sdW1uTnVtYmVyS2V5KS52YWx1ZV9vcigwKTsK
KyAgICBjb2x1bW5OdW1iZXIgPSBsb2NhdGlvbi5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29s
OjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNvbHVtbk51bWJlcktleSB9KS52YWx1ZV9vcigwKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
NmU5NzY2MjExODYzLi5kMWM5YWEyNjc1NGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcApAQCAtMzQ3LDcgKzM0Nyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHN0ZDo6b3B0
aW9uYWw8aW50PiAvKiBzYXZlUmVzdWx0SW5kZXggKi8+IEluc3BlY3RvclJ1bnRpCiAKICAgICBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdDsKIAotICAgIGF1dG8gb2JqZWN0SWQgPSBjYWxs
QXJndW1lbnQtPmdldFN0cmluZyhQcm90b2NvbDo6UnVudGltZTo6Q2FsbEFyZ3VtZW50OjpvYmpl
Y3RJZEtleSk7CisgICAgYXV0byBvYmplY3RJZCA9IGNhbGxBcmd1bWVudC0+Z2V0U3RyaW5nKFN0
cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpDYWxsQXJndW1lbnQ6Om9iamVjdElkS2V5IH0pOwog
ICAgIGlmICghb2JqZWN0SWQpIHsKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQgPSBpbmplY3RlZFNj
cmlwdEZvckV2YWwoZXJyb3JTdHJpbmcsIFdURk1vdmUoZXhlY3V0aW9uQ29udGV4dElkKSk7CiAg
ICAgICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCkBAIC00MDgsOSArNDA4LDkg
QEAgUHJvdG9jb2w6OkVycm9yU3RyaW5nT3I8UmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OlJ1
bnRpbWU6OlR5cGVEZXNjcmlwdGlvbj4+PgogICAgICAgICBpZiAoIWxvY2F0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJVbmV4cGVjdGVkIG5vbi1vYmplY3QgaXRlbSBp
biBsb2NhdGlvbnMiX3MpOwogCi0gICAgICAgIGF1dG8gZGVzY3JpcHRvciA9IGxvY2F0aW9uLT5n
ZXRJbnRlZ2VyKFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9jYXRpb246OnR5cGVJbmZvcm1hdGlv
bkRlc2NyaXB0b3JLZXkpLnZhbHVlX29yKFR5cGVQcm9maWxlclNlYXJjaERlc2NyaXB0b3JOb3Jt
YWwpOwotICAgICAgICBhdXRvIHNvdXJjZUlEU3RyaW5nID0gbG9jYXRpb24tPmdldFN0cmluZyhQ
cm90b2NvbDo6UnVudGltZTo6VHlwZUxvY2F0aW9uOjpzb3VyY2VJREtleSk7Ci0gICAgICAgIGF1
dG8gZGl2b3QgPSBsb2NhdGlvbi0+Z2V0SW50ZWdlcihQcm90b2NvbDo6UnVudGltZTo6VHlwZUxv
Y2F0aW9uOjpkaXZvdEtleSkudmFsdWVfb3IoMCk7CisgICAgICAgIGF1dG8gZGVzY3JpcHRvciA9
IGxvY2F0aW9uLT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnR5cGVJbmZvcm1hdGlvbkRlc2NyaXB0b3JLZXkgfSkudmFsdWVfb3IoVHlwZVByb2Zp
bGVyU2VhcmNoRGVzY3JpcHRvck5vcm1hbCk7CisgICAgICAgIGF1dG8gc291cmNlSURTdHJpbmcg
PSBsb2NhdGlvbi0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpSdW50aW1lOjpUeXBlTG9j
YXRpb246OnNvdXJjZUlES2V5IH0pOworICAgICAgICBhdXRvIGRpdm90ID0gbG9jYXRpb24tPmdl
dEludGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OlJ1bnRpbWU6OlR5cGVMb2NhdGlvbjo6ZGl2b3RL
ZXkgfSkudmFsdWVfb3IoMCk7CiAKICAgICAgICAgYXV0byB0eXBlTG9jYXRpb24gPSBtX3ZtLnR5
cGVQcm9maWxlcigpLT5maW5kTG9jYXRpb24oZGl2b3QsIHBhcnNlSW50ZWdlcjx1aW50cHRyX3Q+
KHNvdXJjZUlEU3RyaW5nKS52YWx1ZSgpLCBzdGF0aWNfY2FzdDxUeXBlUHJvZmlsZXJTZWFyY2hE
ZXNjcmlwdG9yPihkZXNjcmlwdG9yKSwgbV92bSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2Nv
bF90eXBlc19pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBlc19pbXBsZW1lbnRh
dGlvbi5weQppbmRleCBkZWYyMWFjYWNmODguLjlkYTE0ZWM0NzM5YyAxMDA3NTUKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X3Byb3RvY29sX3R5cGVzX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9wcm90b2NvbF90eXBl
c19pbXBsZW1lbnRhdGlvbi5weQpAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBDcHBQcm90b2NvbFR5
cGVzSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoQ3BwR2VuZXJhdG9yKToKICAgICAgICAgbGluZXMu
YXBwZW5kKCd9OycpCiAgICAgICAgIGxpbmVzLmFwcGVuZCgnJykKICAgICAgICAgbGluZXMuYXBw
ZW5kKCdTdHJpbmcgZ2V0RW51bUNvbnN0YW50VmFsdWUoaW50IGNvZGUpIHsnKQotICAgICAgICBs
aW5lcy5hcHBlbmQoJyAgICByZXR1cm4gZW51bV9jb25zdGFudF92YWx1ZXNbY29kZV07JykKKyAg
ICAgICAgbGluZXMuYXBwZW5kKCcgICAgcmV0dXJuIFN0cmluZyB7IGVudW1fY29uc3RhbnRfdmFs
dWVzW2NvZGVdIH07JykKICAgICAgICAgbGluZXMuYXBwZW5kKCd9JykKICAgICAgICAgcmV0dXJu
IFsnXG4nLmpvaW4obGluZXMpXQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
bGxpbnQvTExJbnRTbG93UGF0aHMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xM
SW50U2xvd1BhdGhzLmNwcAppbmRleCBkYTYwMGVhMDBmMGMuLjFkZTg4YjE3YmRjMiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnRTbG93UGF0aHMuY3BwCkBAIC0xMDQ1
LDcgKzEwNDUsNyBAQCBMTElOVF9TTE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X2lkKQog
ICAgIGJvb2wgY291bGREZWxldGUgPSBKU0NlbGw6OmRlbGV0ZVByb3BlcnR5KGJhc2VPYmplY3Qs
IGdsb2JhbE9iamVjdCwgY29kZUJsb2NrLT5pZGVudGlmaWVyKGJ5dGVjb2RlLm1fcHJvcGVydHkp
KTsKICAgICBMTElOVF9DSEVDS19FWENFUFRJT04oKTsKICAgICBpZiAoIWNvdWxkRGVsZXRlICYm
IGJ5dGVjb2RlLm1fZWNtYU1vZGUuaXNTdHJpY3QoKSkKLSAgICAgICAgTExJTlRfVEhST1coY3Jl
YXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgVW5hYmxlVG9EZWxldGVQcm9wZXJ0eUVycm9yKSk7
CisgICAgICAgIExMSU5UX1RIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIFN0cmlu
ZyB7IFVuYWJsZVRvRGVsZXRlUHJvcGVydHlFcnJvciB9KSk7CiAgICAgTExJTlRfUkVUVVJOKGpz
Qm9vbGVhbihjb3VsZERlbGV0ZSkpOwogfQogCkBAIC0xNDUwLDcgKzE0NTAsNyBAQCBMTElOVF9T
TE9XX1BBVEhfREVDTChzbG93X3BhdGhfZGVsX2J5X3ZhbCkKICAgICBMTElOVF9DSEVDS19FWENF
UFRJT04oKTsKIAogICAgIGlmICghY291bGREZWxldGUgJiYgYnl0ZWNvZGUubV9lY21hTW9kZS5p
c1N0cmljdCgpKQotICAgICAgICBMTElOVF9USFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBVbmFibGVUb0RlbGV0ZVByb3BlcnR5RXJyb3IpKTsKKyAgICAgICAgTExJTlRfVEhST1co
Y3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgVW5hYmxlVG9EZWxldGVQcm9w
ZXJ0eUVycm9yIH0pKTsKICAgICAKICAgICBMTElOVF9SRVRVUk4oanNCb29sZWFuKGNvdWxkRGVs
ZXRlKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IGU5YmRiN2M4NWRhYS4uMGVkMTM2
YTc1NDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yLmNwcApAQCAtNDksNyArNDksNyBAQCBBZ2dyZWdh
dGVFcnJvckNvbnN0cnVjdG9yOjpBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9yKFZNJiB2bSwgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cgogCiB2b2lkIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3I6OmZpbmlz
aENyZWF0aW9uKFZNJiB2bSwgQWdncmVnYXRlRXJyb3JQcm90b3R5cGUqIHByb3RvdHlwZSkKIHsK
LSAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6
OkFnZ3JlZ2F0ZUVycm9yKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMiwgU3RyaW5nIHsgZXJy
b3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9LCBQcm9wZXJ0eUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIEFTU0VSVChpbmhlcml0cyh2
bSwgaW5mbygpKSk7CiAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0FnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcAppbmRleCAxMTljZDVhMzliMTEuLjY5ZjZlMzg5
MTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQWdncmVnYXRl
RXJyb3JQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcApAQCAtNDAsNyArNDAsNyBAQCBBZ2dyZWdhdGVFcnJv
clByb3RvdHlwZTo6QWdncmVnYXRlRXJyb3JQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0
cnVjdHVyZSkKIAogdm9pZCBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtKQogewotICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCBlcnJvclR5cGVOYW1lKEVy
cm9yVHlwZTo6QWdncmVnYXRlRXJyb3IpKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwg
U3RyaW5nIHsgZXJyb3JUeXBlTmFtZShFcnJvclR5cGU6OkFnZ3JlZ2F0ZUVycm9yKSB9KTsKICAg
ICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKaW5kZXggNDVh
MDAxM2FmMWM3Li43NWYyYWUwYjA3ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0FycmF5QnVmZmVyU2hhcmluZ01vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgKQEAgLTM1LDcgKzM1LDcgQEAg
ZW51bSBjbGFzcyBBcnJheUJ1ZmZlclNoYXJpbmdNb2RlIDogdWludDhfdCB7CiAgICAgU2hhcmVk
CiB9OwogCi1pbmxpbmUgQVNDSUlMaXRlcmFsIGFycmF5QnVmZmVyU2hhcmluZ01vZGVOYW1lKEFy
cmF5QnVmZmVyU2hhcmluZ01vZGUgc2hhcmluZ01vZGUpCitpbmxpbmUgQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBhcnJheUJ1ZmZlclNoYXJpbmdNb2RlTmFtZShBcnJheUJ1ZmZlclNoYXJpbmdNb2Rl
IHNoYXJpbmdNb2RlKQogewogICAgIHN3aXRjaCAoc2hhcmluZ01vZGUpIHsKICAgICBjYXNlIEFy
cmF5QnVmZmVyU2hhcmluZ01vZGU6OkRlZmF1bHQ6CkBAIC00NCw3ICs0NCw3IEBAIGlubGluZSBB
U0NJSUxpdGVyYWwgYXJyYXlCdWZmZXJTaGFyaW5nTW9kZU5hbWUoQXJyYXlCdWZmZXJTaGFyaW5n
TW9kZSBzaGFyaW5nTW9kCiAgICAgICAgIHJldHVybiAiU2hhcmVkQXJyYXlCdWZmZXIiX3M7CiAg
ICAgfQogICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxs
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IDE4MTVlMTQ3Yjk2NS4uZmUyZDJhODA2
M2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCkBAIC0zNzcsNyArMzc3LDcgQEAgdm9pZCB1bnNoaWZ0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0aGlzT2JqLCB1aW50NjRfdCBoZWFkZXIsIHUKICAgICBp
ZiAoaXNKU0FycmF5KHRoaXNPYmopKSB7CiAgICAgICAgIC8vIFNwZWMgc2F5cyBpZiB3ZSB3b3Vs
ZCBwcm9kdWNlIGFuIGFycmF5IG9mIHRoaXMgc2l6ZSwgd2UgbXVzdCB0aHJvdyBhIHJhbmdlIGVy
cm9yLgogICAgICAgICBpZiAoY291bnQgKyBsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVp
bnQzMl90Pjo6bWF4KCkpIHsKLSAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKTsKKyAg
ICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBM
ZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKQEAgLTExNDgsNyArMTE0OCw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NsaWNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgQ2FsCiAgICAgICAgIHJlc3VsdCA9IHNwZWNpZXNSZXN1bHQuc2Vjb25kOwogICAgIGVs
c2UgewogICAgICAgICBpZiAoVU5MSUtFTFkoZW5kIC0gYmVnaW4gPiBzdGQ6Om51bWVyaWNfbGlt
aXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJv
cik7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgU3Ry
aW5nIHsgTGVuZ3RoRXhjZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KTsKICAgICAg
ICAgICAgIHJldHVybiBlbmNvZGVkSlNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgICAgIHJlc3Vs
dCA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD4oZW5kIC0gYmVnaW4pKTsKQEAgLTEyNDAsNyArMTI0MCw3IEBAIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihhcnJheVByb3RvRnVuY1NwbGljZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhCiAgICAgICAgICAgICByZXN1bHQgPSBzcGVjaWVzUmVzdWx0LnNlY29u
ZDsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoYWN0dWFsRGVsZXRl
Q291bnQgPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVpbnQzMl90Pjo6bWF4KCkpKSB7Ci0gICAgICAg
ICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIExlbmd0aEV4Y2Vl
ZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3IpOworICAgICAgICAgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1h
eGltdW1BcnJheUxlbmd0aEVycm9yIH0pOwogICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGVk
SlNWYWx1ZSgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gSlNBcnJheTo6
dHJ5Q3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmFycmF5U3RydWN0dXJlRm9ySW5kZXhpbmdUeXBl
RHVyaW5nQWxsb2NhdGlvbihBcnJheVdpdGhVbmRlY2lkZWQpLCBzdGF0aWNfY2FzdDx1aW50MzJf
dD4oYWN0dWFsRGVsZXRlQ291bnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0NvbW1vblNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9Db21tb25TbG93UGF0aHMuY3BwCmluZGV4IDFlZWVlMmNiOWU0Ni4uMGIxZmEzZjgxNjA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0
aHMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vblNsb3dQYXRo
cy5jcHAKQEAgLTM4NCw3ICszODQsNyBAQCBKU0NfREVGSU5FX0NPTU1PTl9TTE9XX1BBVEgoc2xv
d19wYXRoX2NoZWNrX3RkeikKIEpTQ19ERUZJTkVfQ09NTU9OX1NMT1dfUEFUSChzbG93X3BhdGhf
dGhyb3dfc3RyaWN0X21vZGVfcmVhZG9ubHlfcHJvcGVydHlfd3JpdGVfZXJyb3IpCiB7CiAgICAg
QkVHSU4oKTsKLSAgICBUSFJPVyhjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBSZWFkb25s
eVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgIFRIUk9XKGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIFN0cmluZyB7IFJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yIH0pKTsKIH0KIAogSlND
X0RFRklORV9DT01NT05fU0xPV19QQVRIKHNsb3dfcGF0aF9ub3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9FcnJvci5jcHAKaW5kZXggZjYzOGI2NmRlYWUwLi5lMmFhOGRmMmMyOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKQEAgLTI3MiwxNiArMjcyLDIx
IEBAIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgVGhyb3dTY29wZSYgc2NvcGUpCiAgICAgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QpKTsKIH0KIAotRXhjZXB0
aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSwgQVNDSUlMaXRlcmFsIGVycm9yTWVzc2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dU
eXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgU3RyaW5nKGVycm9yTWVzc2FnZSkpOworICAgIHJldHVybiB0aHJv
d0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBtZXNzYWdlKSk7CiB9CiAKLUV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKK0V4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbWVzc2FnZSkK
IHsKICAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWVzc2FnZSkpOwogfQogCitFeGNlcHRpb24qIHRocm93
VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3Bl
LCBBU0NJSUxpdGVyYWwgbWVzc2FnZSkKK3sKKyAgICByZXR1cm4gdGhyb3dFeGNlcHRpb24oZ2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsg
bWVzc2FnZSB9KSk7Cit9CisKIEV4Y2VwdGlvbiogdGhyb3dTeW50YXhFcnJvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSkKIHsKICAgICByZXR1cm4gdGhy
b3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlU3ludGF4RXJyb3IoZ2xvYmFs
T2JqZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAppbmRleCA1NGIxNDk0
NThmZjIuLmE3ZDgxNDNjN2NhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5o
CkBAIC03OCw4ICs3OCw5IEBAIEpTT2JqZWN0KiBhZGRFcnJvckluZm8oVk0mLCBKU09iamVjdCog
ZXJyb3IsIGludCBsaW5lLCBjb25zdCBTb3VyY2VDb2RlJik7CiAvLyBDb252ZW5pZW5jZSB3cmFw
cGVycywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGEgZGVmYXVsdCBtZXNzYWdl
LgogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVD
YWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IGNoYXIqIGNvbnN0cnVjdG9yTmFtZSk7CiBKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24q
IHRocm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwotSlNfRVhQT1JU
X1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93
U2NvcGUmLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKTsKIEpTX0VYUE9SVF9QUklWQVRFIEV4
Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0
aHJvd1R5cGVFcnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSk7CitKU19FWFBPUlRfUFJJVkFURSBFeGNlcHRpb24qIHRo
cm93VHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIEFTQ0lJTGl0ZXJhbCBl
cnJvck1lc3NhZ2UpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1N5bnRheEVy
cm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYpOwogSlNfRVhQT1JUX1BSSVZBVEUgRXhj
ZXB0aW9uKiB0aHJvd1N5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiwgVGhyb3dTY29wZSYsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIGlubGluZSBFeGNlcHRpb24qIHRocm93UmFuZ2VF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Njb3BlJiBzY29wZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIHRocm93RXhjZXB0aW9uKGdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBlcnJvck1lc3NhZ2Up
KTsgfQpAQCAtOTUsOCArOTYsOSBAQCBpbmxpbmUgdm9pZCB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEV4Y2VwdAogaW5saW5lIEVu
Y29kZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBU
aHJvd1Njb3BlJiBzY29wZSwgSlNWYWx1ZSBlcnJvcikgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGVycm9yKSk7IH0KIGlubGluZSBF
bmNvZGVkSlNWYWx1ZSB0aHJvd1ZNRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IGNoYXIqIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZUVy
cm9yKGdsb2JhbE9iamVjdCwgZXJyb3JNZXNzYWdlKSkpOyB9CiBpbmxpbmUgRW5jb2RlZEpTVmFs
dWUgdGhyb3dWTVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUaHJvd1Nj
b3BlJiBzY29wZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUpKTsgfQotaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJy
b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJ
TGl0ZXJhbCBlcnJvck1lc3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgZXJyb3JN
ZXNzYWdlKSk7IH0KK2lubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIGVycm9yTWVzc2FnZSkgeyByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBTdHJpbmcgeyBlcnJvck1lc3NhZ2UgfSk7IH0KK2lubGluZSBFbmNvZGVk
SlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRo
cm93U2NvcGUmIHNjb3BlLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIFN0cmluZyB7IGVycm9yTWVzc2FnZSB9
KTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFRocm93U2NvcGUmIHNjb3BlLCBjb25zdCBTdHJpbmcmIGVycm9y
TWVzc2FnZSkgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCBlcnJvck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRo
cm93Vk1ET01BdHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgVGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01B
dHRyaWJ1dGVHZXR0ZXJUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBw
cm9wZXJ0eU5hbWUpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1ET01BdHRyaWJ1
dGVTZXR0ZXJUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGhyb3dTY29w
ZSYgc2NvcGUsIGNvbnN0IENsYXNzSW5mbyogY2xhc3NJbmZvLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dET01BdHRyaWJ1dGVTZXR0ZXJU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgY2xhc3NJbmZvLCBwcm9wZXJ0eU5hbWUpKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0
YWJsZS5jcHAKaW5kZXggZjE0OWQ0ZTU5YTcyLi4zZTJhM2Q5MzRmODkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uRXhlY3V0YWJsZS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25FeGVjdXRhYmxlLmNwcApAQCAt
MTY0LDcgKzE2NCw3IEBAIEpTU3RyaW5nKiBGdW5jdGlvbkV4ZWN1dGFibGU6OnRvU3RyaW5nU2xv
dyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgY2FzZSBTb3VyY2VQYXJzZU1v
ZGU6OkFycm93RnVuY3Rpb25Nb2RlOgogICAgIGNhc2UgU291cmNlUGFyc2VNb2RlOjpDbGFzc0Zp
ZWxkSW5pdGlhbGl6ZXJNb2RlOgotICAgICAgICBmdW5jdGlvbkhlYWRlciA9ICIiOworICAgICAg
ICBmdW5jdGlvbkhlYWRlciA9IGVtcHR5U3RyaW5nKCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAg
Y2FzZSBTb3VyY2VQYXJzZU1vZGU6OkFzeW5jRnVuY3Rpb25Nb2RlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCmluZGV4IDFjOWZlNTU2NTAxZi4uNWE5ZTUzM2Jk
ZTJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVy
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllci5oCkBAIC0x
MTMsNiArMTEzLDcgQEAgcHVibGljOgogICAgIHRlbXBsYXRlPHVuc2lnbmVkIGNoYXJhY3RlcnND
b3VudD4KICAgICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgY2hhciAo
JmNoYXJhY3RlcnMpW2NoYXJhY3RlcnNDb3VudF0pOwogICAgIHN0YXRpYyBJZGVudGlmaWVyIGZy
b21TdHJpbmcoVk0mLCBBU0NJSUxpdGVyYWwpOworICAgIHN0YXRpYyBJZGVudGlmaWVyIGZyb21T
dHJpbmcoVk0mLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoKTsKICAgICBzdGF0aWMgSWRlbnRpZmll
ciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgTENoYXIqLCBpbnQgbGVuZ3RoKTsKICAgICBzdGF0aWMg
SWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgVUNoYXIqLCBpbnQgbGVuZ3RoKTsKICAg
ICBzdGF0aWMgSWRlbnRpZmllciBmcm9tU3RyaW5nKFZNJiwgY29uc3QgU3RyaW5nJik7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAppbmRl
eCBhNTcyZjU3YTVjOWMuLjU3ZDAxZGExYjNjNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSWRlbnRpZmllcklubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JZGVudGlmaWVySW5saW5lcy5oCkBAIC05MSw2ICs5MSwxMSBAQCBpbmxp
bmUgSWRlbnRpZmllciBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKFZNJiB2bSwgQVNDSUlMaXRlcmFs
IHMpCiAgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIFN0cmluZyhzKSk7CiB9CiAKK2lubGluZSBJ
ZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIHMpCit7CisgICAgcmV0dXJuIElkZW50aWZpZXIodm0sIFN0cmluZyhzKSk7Cit9CisK
IGlubGluZSBJZGVudGlmaWVyIElkZW50aWZpZXI6OmZyb21TdHJpbmcoVk0mIHZtLCBjb25zdCBM
Q2hhciogcywgaW50IGxlbmd0aCkKIHsKICAgICByZXR1cm4gSWRlbnRpZmllcih2bSwgcywgbGVu
Z3RoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xs
YXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3Bw
CmluZGV4IGI2YmI3NTE1ODBkNy4uNTljZjUzNzExNDNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKQEAgLTMyMSw3ICszMjEsNyBAQCBKU1Zh
bHVlIEludGxDb2xsYXRvcjo6Y29tcGFyZVN0cmluZ3MoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgU3RyaW5nVmlldyB4LAogICAgIHJldHVybiBqc051bWJlcihyZXN1bHQpOwogfQogCi1B
U0NJSUxpdGVyYWwgSW50bENvbGxhdG9yOjp1c2FnZVN0cmluZyhVc2FnZSB1c2FnZSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bENvbGxhdG9yOjp1c2FnZVN0cmluZyhVc2FnZSB1c2FnZSkK
IHsKICAgICBzd2l0Y2ggKHVzYWdlKSB7CiAgICAgY2FzZSBVc2FnZTo6U29ydDoKQEAgLTMzMCwx
MCArMzMwLDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0b3I6OnVzYWdlU3RyaW5nKFVzYWdl
IHVzYWdlKQogICAgICAgICByZXR1cm4gInNlYXJjaCJfczsKICAgICB9CiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVy
biBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRs
Q29sbGF0b3I6OnNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5IHNlbnNpdGl2aXR5KQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsQ29sbGF0b3I6OnNlbnNpdGl2aXR5U3RyaW5nKFNlbnNp
dGl2aXR5IHNlbnNpdGl2aXR5KQogewogICAgIHN3aXRjaCAoc2Vuc2l0aXZpdHkpIHsKICAgICBj
YXNlIFNlbnNpdGl2aXR5OjpCYXNlOgpAQCAtMzQ2LDEwICszNDYsMTAgQEAgQVNDSUlMaXRlcmFs
IEludGxDb2xsYXRvcjo6c2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkgc2Vuc2l0aXZpdHkp
CiAgICAgICAgIHJldHVybiAidmFyaWFudCJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJ
SUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0
b3I6OmNhc2VGaXJzdFN0cmluZyhDYXNlRmlyc3QgY2FzZUZpcnN0KQorQVNDSUlMaXRlcmFsV2l0
aExlbmd0aCBJbnRsQ29sbGF0b3I6OmNhc2VGaXJzdFN0cmluZyhDYXNlRmlyc3QgY2FzZUZpcnN0
KQogewogICAgIHN3aXRjaCAoY2FzZUZpcnN0KSB7CiAgICAgY2FzZSBDYXNlRmlyc3Q6OkZhbHNl
OgpAQCAtMzYwLDcgKzM2MCw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsQ29sbGF0b3I6OmNhc2VGaXJz
dFN0cmluZyhDYXNlRmlyc3QgY2FzZUZpcnN0KQogICAgICAgICByZXR1cm4gInVwcGVyIl9zOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0K
IAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLmNvbGxhdG9yLnByb3RvdHlw
ZS5yZXNvbHZlZG9wdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxDb2xsYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENv
bGxhdG9yLmgKaW5kZXggODBhYTdjMzZiYTZjLi5hN2UwY2IxNTk4MjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5oCkBAIC05NCw5ICs5NCw5IEBAIHBy
aXZhdGU6CiAKICAgICB1c2luZyBVQ29sbGF0b3JEZWxldGVyID0gSUNVRGVsZXRlcjx1Y29sX2Ns
b3NlPjsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdXNhZ2VTdHJpbmcoVXNhZ2UpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgc2Vuc2l0aXZpdHlTdHJpbmcoU2Vuc2l0aXZpdHkpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgY2FzZUZpcnN0U3RyaW5nKENhc2VGaXJzdCk7CisgICAgc3Rh
dGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdXNhZ2VTdHJpbmcoVXNhZ2UpOworICAgIHN0YXRp
YyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNlbnNpdGl2aXR5U3RyaW5nKFNlbnNpdGl2aXR5KTsK
KyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBjYXNlRmlyc3RTdHJpbmcoQ2FzZUZp
cnN0KTsKIAogICAgIFdyaXRlQmFycmllcjxKU0JvdW5kRnVuY3Rpb24+IG1fYm91bmRDb21wYXJl
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVQ29sbGF0b3IsIFVDb2xsYXRvckRlbGV0ZXI+IG1fY29s
bGF0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0
ZVRpbWVGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVU
aW1lRm9ybWF0LmNwcAppbmRleCBjMmQ0OWRhOThhNjYuLmU2MWZlOGViNzE5YSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3Bw
CkBAIC0xMDA2LDcgKzEwMDYsNyBAQCB2b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6
ZURhdGVUaW1lRm9ybWF0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgdWNhbF9z
ZXRHcmVnb3JpYW5DaGFuZ2UoY2FsLCBtaW5FQ01BU2NyaXB0VGltZSwgJnN0YXR1cyk7CiB9CiAK
LUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmhvdXJDeWNsZVN0cmluZyhIb3VyQ3lj
bGUgaG91ckN5Y2xlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmhvdXJDeWNsZVN0cmluZyhIb3VyQ3ljbGUgaG91ckN5Y2xlKQogewogICAgIHN3aXRjaCAoaG91
ckN5Y2xlKSB7CiAgICAgY2FzZSBIb3VyQ3ljbGU6OkgxMToKQEAgLTEwMTksMTMgKzEwMTksMTMg
QEAgQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6aG91ckN5Y2xlU3RyaW5nKEhvdXJD
eWNsZSBob3VyQ3ljbGUpCiAgICAgICAgIHJldHVybiAiaDI0Il9zOwogICAgIGNhc2UgSG91ckN5
Y2xlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJu
IEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExl
bmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1
cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6d2Vla2Rh
eVN0cmluZyhXZWVrZGF5IHdlZWtkYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRl
VGltZUZvcm1hdDo6d2Vla2RheVN0cmluZyhXZWVrZGF5IHdlZWtkYXkpCiB7CiAgICAgc3dpdGNo
ICh3ZWVrZGF5KSB7CiAgICAgY2FzZSBXZWVrZGF5OjpOYXJyb3c6CkBAIC0xMDM2LDEzICsxMDM2
LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OndlZWtkYXlTdHJpbmcoV2Vl
a2RheSB3ZWVrZGF5KQogICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2FzZSBXZWVrZGF5
OjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0
aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6
Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6ZXJhU3RyaW5n
KEVyYSBlcmEpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6ZXJh
U3RyaW5nKEVyYSBlcmEpCiB7CiAgICAgc3dpdGNoIChlcmEpIHsKICAgICBjYXNlIEVyYTo6TmFy
cm93OgpAQCAtMTA1MywxMyArMTA1MywxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9y
bWF0OjplcmFTdHJpbmcoRXJhIGVyYSkKICAgICAgICAgcmV0dXJuICJsb25nIl9zOwogICAgIGNh
c2UgRXJhOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0
aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6eWVh
clN0cmluZyhZZWFyIHllYXIpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZv
cm1hdDo6eWVhclN0cmluZyhZZWFyIHllYXIpCiB7CiAgICAgc3dpdGNoICh5ZWFyKSB7CiAgICAg
Y2FzZSBZZWFyOjpUd29EaWdpdDoKQEAgLTEwNjgsMTMgKzEwNjgsMTMgQEAgQVNDSUlMaXRlcmFs
IEludGxEYXRlVGltZUZvcm1hdDo6eWVhclN0cmluZyhZZWFyIHllYXIpCiAgICAgICAgIHJldHVy
biAibnVtZXJpYyJfczsKICAgICBjYXNlIFllYXI6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAg
IHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwg
SW50bERhdGVUaW1lRm9ybWF0Ojptb250aFN0cmluZyhNb250aCBtb250aCkKK0FTQ0lJTGl0ZXJh
bFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9ybWF0Ojptb250aFN0cmluZyhNb250aCBtb250aCkK
IHsKICAgICBzd2l0Y2ggKG1vbnRoKSB7CiAgICAgY2FzZSBNb250aDo6VHdvRGlnaXQ6CkBAIC0x
MDg5LDEzICsxMDg5LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6Om1vbnRo
U3RyaW5nKE1vbnRoIG1vbnRoKQogICAgICAgICByZXR1cm4gImxvbmciX3M7CiAgICAgY2FzZSBN
b250aDo6Tm9uZToKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0
dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmRheVN0
cmluZyhEYXkgZGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OmRheVN0cmluZyhEYXkgZGF5KQogewogICAgIHN3aXRjaCAoZGF5KSB7CiAgICAgY2FzZSBEYXk6
OlR3b0RpZ2l0OgpAQCAtMTEwNCwxMyArMTEwNCwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0OjpkYXlTdHJpbmcoRGF5IGRheSkKICAgICAgICAgcmV0dXJuICJudW1lcmljIl9z
OwogICAgIGNhc2UgRGF5OjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlM
aXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZv
cm1hdDo6ZGF5UGVyaW9kU3RyaW5nKERheVBlcmlvZCBkYXlQZXJpb2QpCitBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6ZGF5UGVyaW9kU3RyaW5nKERheVBlcmlvZCBk
YXlQZXJpb2QpCiB7CiAgICAgc3dpdGNoIChkYXlQZXJpb2QpIHsKICAgICBjYXNlIERheVBlcmlv
ZDo6TmFycm93OgpAQCAtMTEyMSwxMyArMTEyMSwxMyBAQCBBU0NJSUxpdGVyYWwgSW50bERhdGVU
aW1lRm9ybWF0OjpkYXlQZXJpb2RTdHJpbmcoRGF5UGVyaW9kIGRheVBlcmlvZCkKICAgICAgICAg
cmV0dXJuICJsb25nIl9zOwogICAgIGNhc2UgRGF5UGVyaW9kOjpOb25lOgogICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOwor
ICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlM
aXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6aG91clN0cmluZyhIb3VyIGhvdXIpCitBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZvcm1hdDo6aG91clN0cmluZyhIb3VyIGhvdXIp
CiB7CiAgICAgc3dpdGNoIChob3VyKSB7CiAgICAgY2FzZSBIb3VyOjpUd29EaWdpdDoKQEAgLTEx
MzYsMTMgKzExMzYsMTMgQEAgQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6aG91clN0
cmluZyhIb3VyIGhvdXIpCiAgICAgICAgIHJldHVybiAibnVtZXJpYyJfczsKICAgICBjYXNlIEhv
dXI6Ok5vbmU6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4g
QVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVu
Z3RoOjpudWxsKCk7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0
aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERhdGVUaW1lRm9ybWF0OjptaW51dGVT
dHJpbmcoTWludXRlIG1pbnV0ZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1l
Rm9ybWF0OjptaW51dGVTdHJpbmcoTWludXRlIG1pbnV0ZSkKIHsKICAgICBzd2l0Y2ggKG1pbnV0
ZSkgewogICAgIGNhc2UgTWludXRlOjpUd29EaWdpdDoKQEAgLTExNTEsMTMgKzExNTEsMTMgQEAg
QVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6bWludXRlU3RyaW5nKE1pbnV0ZSBtaW51
dGUpCiAgICAgICAgIHJldHVybiAibnVtZXJpYyJfczsKICAgICBjYXNlIE1pbnV0ZTo6Tm9uZToK
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiBBU0NJSUxpdGVy
YWw6Om51bGwoKTsKKyAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwo
KTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0
ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7
CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNlY29uZFN0cmluZyhTZWNv
bmQgc2Vjb25kKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OnNl
Y29uZFN0cmluZyhTZWNvbmQgc2Vjb25kKQogewogICAgIHN3aXRjaCAoc2Vjb25kKSB7CiAgICAg
Y2FzZSBTZWNvbmQ6OlR3b0RpZ2l0OgpAQCAtMTE2NiwxMyArMTE2NiwxMyBAQCBBU0NJSUxpdGVy
YWwgSW50bERhdGVUaW1lRm9ybWF0OjpzZWNvbmRTdHJpbmcoU2Vjb25kIHNlY29uZCkKICAgICAg
ICAgcmV0dXJuICJudW1lcmljIl9zOwogICAgIGNhc2UgU2Vjb25kOjpOb25lOgogICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgp
OworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxs
KCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVND
SUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6dGltZVpvbmVOYW1lU3RyaW5nKFRpbWVab25l
TmFtZSB0aW1lWm9uZU5hbWUpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxEYXRlVGltZUZv
cm1hdDo6dGltZVpvbmVOYW1lU3RyaW5nKFRpbWVab25lTmFtZSB0aW1lWm9uZU5hbWUpCiB7CiAg
ICAgc3dpdGNoICh0aW1lWm9uZU5hbWUpIHsKICAgICBjYXNlIFRpbWVab25lTmFtZTo6U2hvcnQ6
CkBAIC0xMTg5LDEzICsxMTg5LDEzIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6
OnRpbWVab25lTmFtZVN0cmluZyhUaW1lWm9uZU5hbWUgdGltZVpvbmVOYW1lKQogICAgICAgICBy
ZXR1cm4gImxvbmdHZW5lcmljIl9zOwogICAgIGNhc2UgVGltZVpvbmVOYW1lOjpOb25lOgogICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6
bnVsbCgpOworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0K
IAotQVNDSUlMaXRlcmFsIEludGxEYXRlVGltZUZvcm1hdDo6Zm9ybWF0U3R5bGVTdHJpbmcoRGF0
ZVRpbWVTdHlsZSBzdHlsZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERhdGVUaW1lRm9y
bWF0Ojpmb3JtYXRTdHlsZVN0cmluZyhEYXRlVGltZVN0eWxlIHN0eWxlKQogewogICAgIHN3aXRj
aCAoc3R5bGUpIHsKICAgICBjYXNlIERhdGVUaW1lU3R5bGU6OkZ1bGw6CkBAIC0xMjA4LDEwICsx
MjA4LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGF0ZVRpbWVGb3JtYXQ6OmZvcm1hdFN0eWxlU3Ry
aW5nKERhdGVUaW1lU3R5bGUgc3R5bGUpCiAgICAgICAgIHJldHVybiAic2hvcnQiX3M7CiAgICAg
Y2FzZSBEYXRlVGltZVN0eWxlOjpOb25lOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsK
LSAgICAgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgICAgICByZXR1cm4gQVND
SUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0
MDIvI3NlYy1pbnRsLmRhdGV0aW1lZm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZG9wdGlvbnMKQEAg
LTEyOTMsNyArMTI5Myw3IEBAIEpTVmFsdWUgSW50bERhdGVUaW1lRm9ybWF0Ojpmb3JtYXQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgZG91YmxlIHZhbHVlKSBjCiAgICAgcmV0dXJuIGpz
U3RyaW5nKHZtLCBTdHJpbmcocmVzdWx0KSk7CiB9CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwgcGFy
dFR5cGVTdHJpbmcoVURhdGVGb3JtYXRGaWVsZCBmaWVsZCkKK3N0YXRpYyBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoIHBhcnRUeXBlU3RyaW5nKFVEYXRlRm9ybWF0RmllbGQgZmllbGQpCiB7CiAgICAg
c3dpdGNoIChmaWVsZCkgewogICAgIGNhc2UgVURBVF9FUkFfRklFTEQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5oCmluZGV4IDhiZjY3
N2Y0YTg3OS4uMjExZmY1YzA4MjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuaApAQCAtMTA5LDE4ICsxMDksMTggQEAgcHJpdmF0
ZToKICAgICBlbnVtIGNsYXNzIERhdGVUaW1lU3R5bGUgOiB1aW50OF90IHsgTm9uZSwgRnVsbCwg
TG9uZywgTWVkaXVtLCBTaG9ydCB9OwogCiAgICAgdm9pZCBzZXRGb3JtYXRzRnJvbVBhdHRlcm4o
U3RyaW5nVmlldyk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBob3VyQ3ljbGVTdHJpbmcoSG91
ckN5Y2xlKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7
Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBlcmFTdHJpbmcoRXJhKTsKLSAgICBzdGF0aWMgQVND
SUlMaXRlcmFsIHllYXJTdHJpbmcoWWVhcik7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBtb250
aFN0cmluZyhNb250aCk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBkYXlTdHJpbmcoRGF5KTsK
LSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGRheVBlcmlvZFN0cmluZyhEYXlQZXJpb2QpOwotICAg
IHN0YXRpYyBBU0NJSUxpdGVyYWwgaG91clN0cmluZyhIb3VyKTsKLSAgICBzdGF0aWMgQVNDSUlM
aXRlcmFsIG1pbnV0ZVN0cmluZyhNaW51dGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc2Vj
b25kU3RyaW5nKFNlY29uZCk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCB0aW1lWm9uZU5hbWVT
dHJpbmcoVGltZVpvbmVOYW1lKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGZvcm1hdFN0eWxl
U3RyaW5nKERhdGVUaW1lU3R5bGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IGhvdXJDeWNsZVN0cmluZyhIb3VyQ3ljbGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIHdlZWtkYXlTdHJpbmcoV2Vla2RheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggZXJhU3RyaW5nKEVyYSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5n
dGggeWVhclN0cmluZyhZZWFyKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBt
b250aFN0cmluZyhNb250aCk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZGF5
U3RyaW5nKERheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZGF5UGVyaW9k
U3RyaW5nKERheVBlcmlvZCk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggaG91
clN0cmluZyhIb3VyKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBtaW51dGVT
dHJpbmcoTWludXRlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzZWNvbmRT
dHJpbmcoU2Vjb25kKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB0aW1lWm9u
ZU5hbWVTdHJpbmcoVGltZVpvbmVOYW1lKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExl
bmd0aCBmb3JtYXRTdHlsZVN0cmluZyhEYXRlVGltZVN0eWxlKTsKIAogICAgIHN0YXRpYyBIb3Vy
Q3ljbGUgaG91ckN5Y2xlRnJvbVN5bWJvbChVQ2hhcik7CiAgICAgc3RhdGljIEhvdXJDeWNsZSBw
YXJzZUhvdXJDeWNsZShjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5jcHAKaW5kZXggZmJlODZlNGI3ZWFhLi45OTU2
NGJkYmU3NjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxE
aXNwbGF5TmFtZXMuY3BwCkBAIC0zNjYsNyArMzY2LDcgQEAgSlNPYmplY3QqIEludGxEaXNwbGF5
TmFtZXM6OnJlc29sdmVkT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KSBjb25z
dAogICAgIHJldHVybiBvcHRpb25zOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bERpc3BsYXlOYW1l
czo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxE
aXNwbGF5TmFtZXM6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogewogICAgIHN3aXRjaCAoc3R5
bGUpIHsKICAgICBjYXNlIFN0eWxlOjpOYXJyb3c6CkBAIC0zNzcsMTAgKzM3NywxMCBAQCBBU0NJ
SUxpdGVyYWwgSW50bERpc3BsYXlOYW1lczo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCiAgICAg
ICAgIHJldHVybiAibG9uZyJfczsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxX
aXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjp0
eXBlU3RyaW5nKFR5cGUgdHlwZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bERpc3BsYXlO
YW1lczo6dHlwZVN0cmluZyhUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAg
Y2FzZSBUeXBlOjpMYW5ndWFnZToKQEAgLTM5NywxMCArMzk3LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJ
bnRsRGlzcGxheU5hbWVzOjp0eXBlU3RyaW5nKFR5cGUgdHlwZSkKICAgICAgICAgcmV0dXJuICJk
YXRlVGltZUZpZWxkIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICBy
ZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxEaXNwbGF5TmFtZXM6OmZhbGxi
YWNrU3RyaW5nKEZhbGxiYWNrIGZhbGxiYWNrKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRs
RGlzcGxheU5hbWVzOjpmYWxsYmFja1N0cmluZyhGYWxsYmFjayBmYWxsYmFjaykKIHsKICAgICBz
d2l0Y2ggKGZhbGxiYWNrKSB7CiAgICAgY2FzZSBGYWxsYmFjazo6Q29kZToKQEAgLTQwOSwxMCAr
NDA5LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGlzcGxheU5hbWVzOjpmYWxsYmFja1N0cmluZyhG
YWxsYmFjayBmYWxsYmFjaykKICAgICAgICAgcmV0dXJuICJub25lIl9zOwogICAgIH0KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7Cisg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRl
cmFsIEludGxEaXNwbGF5TmFtZXM6Omxhbmd1YWdlRGlzcGxheVN0cmluZyhMYW5ndWFnZURpc3Bs
YXkgbGFuZ3VhZ2VEaXNwbGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsRGlzcGxheU5h
bWVzOjpsYW5ndWFnZURpc3BsYXlTdHJpbmcoTGFuZ3VhZ2VEaXNwbGF5IGxhbmd1YWdlRGlzcGxh
eSkKIHsKICAgICBzd2l0Y2ggKGxhbmd1YWdlRGlzcGxheSkgewogICAgIGNhc2UgTGFuZ3VhZ2VE
aXNwbGF5OjpEaWFsZWN0OgpAQCAtNDIxLDcgKzQyMSw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRsRGlz
cGxheU5hbWVzOjpsYW5ndWFnZURpc3BsYXlTdHJpbmcoTGFuZ3VhZ2VEaXNwbGF5IGxhbmd1YWdl
RGlzCiAgICAgICAgIHJldHVybiAic3RhbmRhcmQiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFt
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaApp
bmRleCBkODBkYzNkODNhMTUuLmZiMmI2ODc3NGQxOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bERpc3BsYXlOYW1lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxEaXNwbGF5TmFtZXMuaApAQCAtNjksMTAgKzY5LDEwIEBAIHBy
aXZhdGU6CiAgICAgZW51bSBjbGFzcyBGYWxsYmFjayA6IHVpbnQ4X3QgeyBDb2RlLCBOb25lIH07
CiAgICAgZW51bSBjbGFzcyBMYW5ndWFnZURpc3BsYXkgOiB1aW50OF90IHsgRGlhbGVjdCwgU3Rh
bmRhcmQgfTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVTdHJpbmcoU3R5bGUpOwot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdHlwZVN0cmluZyhUeXBlKTsKLSAgICBzdGF0aWMgQVND
SUlMaXRlcmFsIGZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRl
cmFsIGxhbmd1YWdlRGlzcGxheVN0cmluZyhMYW5ndWFnZURpc3BsYXkpOworICAgIHN0YXRpYyBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0eWxlU3RyaW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVND
SUlMaXRlcmFsV2l0aExlbmd0aCB0eXBlU3RyaW5nKFR5cGUpOworICAgIHN0YXRpYyBBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoIGZhbGxiYWNrU3RyaW5nKEZhbGxiYWNrKTsKKyAgICBzdGF0aWMgQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBsYW5ndWFnZURpc3BsYXlTdHJpbmcoTGFuZ3VhZ2VEaXNwbGF5
KTsKIAogICAgIHVzaW5nIFVMb2NhbGVEaXNwbGF5TmFtZXNEZWxldGVyID0gSUNVRGVsZXRlcjx1
bGRuX2Nsb3NlPjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VUxvY2FsZURpc3BsYXlOYW1lcywgVUxv
Y2FsZURpc3BsYXlOYW1lc0RlbGV0ZXI+IG1fZGlzcGxheU5hbWVzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExpc3RGb3JtYXQuY3BwCmluZGV4IGY1YzMwNTcwOThj
OS4uNDZkNzBmMzlkYjA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsTGlzdEZvcm1hdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bExpc3RGb3JtYXQuY3BwCkBAIC0zNDIsNyArMzQyLDcgQEAgSlNPYmplY3QqIEludGxMaXN0
Rm9ybWF0OjpyZXNvbHZlZE9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29u
c3QKICAgICByZXR1cm4gb3B0aW9uczsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxMaXN0Rm9ybWF0
OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKK0FTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggSW50bExp
c3RGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQogewogICAgIHN3aXRjaCAoc3R5bGUp
IHsKICAgICBjYXNlIFN0eWxlOjpMb25nOgpAQCAtMzUzLDEwICszNTMsMTAgQEAgQVNDSUlMaXRl
cmFsIEludGxMaXN0Rm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0
dXJuICJuYXJyb3ciX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJl
dHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExl
bmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bExpc3RGb3JtYXQ6OnR5cGVTdHJp
bmcoVHlwZSB0eXBlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTGlzdEZvcm1hdDo6dHlw
ZVN0cmluZyhUeXBlIHR5cGUpCiB7CiAgICAgc3dpdGNoICh0eXBlKSB7CiAgICAgY2FzZSBUeXBl
OjpDb25qdW5jdGlvbjoKQEAgLTM2Nyw3ICszNjcsNyBAQCBBU0NJSUxpdGVyYWwgSW50bExpc3RG
b3JtYXQ6OnR5cGVTdHJpbmcoVHlwZSB0eXBlKQogICAgICAgICByZXR1cm4gInVuaXQiX3M7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6
Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxMaXN0Rm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsTGlzdEZvcm1hdC5oCmluZGV4IDhiMjc0MDJmOWQ0MC4uMjQ3YTU0YzA4ZDgyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTGlzdEZvcm1hdC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMaXN0Rm9ybWF0LmgKQEAgLTc5LDgg
Kzc5LDggQEAgcHJpdmF0ZToKICAgICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsgQ29uanVu
Y3Rpb24sIERpc2p1bmN0aW9uLCBVbml0IH07CiAgICAgZW51bSBjbGFzcyBTdHlsZSA6IHVpbnQ4
X3QgeyBTaG9ydCwgTG9uZywgTmFycm93IH07CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHR5
cGVTdHJpbmcoVHlwZSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBzdHlsZVN0cmluZyhTdHls
ZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdHlwZVN0cmluZyhUeXBlKTsK
KyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHlsZVN0cmluZyhTdHlsZSk7CiAK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8VUxpc3RGb3JtYXR0ZXIsIFVMaXN0Rm9ybWF0dGVyRGVsZXRl
cj4gbV9saXN0Rm9ybWF0OwogICAgIFN0cmluZyBtX2xvY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAKaW5kZXggOTUzYzM5ZmU2
NGE5Li5hMDZlM2I5ZGQ1OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0yMzcsNyArMjM3LDcgQEAgc3RhdGljIHN0ZDo6
b3B0aW9uYWw8V2VsbEZvcm1lZFVuaXQ+IHdlbGxGb3JtZWRVbml0SWRlbnRpZmllcihTdHJpbmdW
aWV3IHVuaXRJZGUKICAgICByZXR1cm4gV2VsbEZvcm1lZFVuaXQobnVtZXJhdG9yVW5pdC52YWx1
ZSgpLCBkZW5vbWluYXRvclVuaXQudmFsdWUoKSk7CiB9CiAKLXN0YXRpYyBBU0NJSUxpdGVyYWwg
cGFydFR5cGVTdHJpbmcoVU51bWJlckZvcm1hdEZpZWxkcyBmaWVsZCwgSW50bE51bWJlckZvcm1h
dDo6U3R5bGUgc3R5bGUsIGJvb2wgc2lnbiwgSW50bE1hdGhlbWF0aWNhbFZhbHVlOjpOdW1iZXJU
eXBlIHR5cGUpCitzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBwYXJ0VHlwZVN0cmluZyhV
TnVtYmVyRm9ybWF0RmllbGRzIGZpZWxkLCBJbnRsTnVtYmVyRm9ybWF0OjpTdHlsZSBzdHlsZSwg
Ym9vbCBzaWduLCBJbnRsTWF0aGVtYXRpY2FsVmFsdWU6Ok51bWJlclR5cGUgdHlwZSkKIHsKICAg
ICBzd2l0Y2ggKGZpZWxkKSB7CiAgICAgY2FzZSBVTlVNX0lOVEVHRVJfRklFTEQ6CkBAIC0xMjQ1
LDcgKzEyNDUsNyBAQCBKU1ZhbHVlIEludGxOdW1iZXJGb3JtYXQ6OmZvcm1hdFJhbmdlVG9QYXJ0
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbnRsTQogfQogI2VuZGlmCiAKLUFTQ0lJ
TGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzdHlsZVN0cmluZyhTdHlsZSBzdHlsZSkKK0FTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggSW50bE51bWJlckZvcm1hdDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5
bGUpCiB7CiAgICAgc3dpdGNoIChzdHlsZSkgewogICAgIGNhc2UgU3R5bGU6OkRlY2ltYWw6CkBA
IC0xMjU4LDEwICsxMjU4LDEwIEBAIEFTQ0lJTGl0ZXJhbCBJbnRsTnVtYmVyRm9ybWF0OjpzdHls
ZVN0cmluZyhTdHlsZSBzdHlsZSkKICAgICAgICAgcmV0dXJuICJ1bml0Il9zOwogICAgIH0KICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7
CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlM
aXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5RGlzcGxheVN0cmluZyhDdXJyZW5jeURp
c3BsYXkgY3VycmVuY3lEaXNwbGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVy
Rm9ybWF0OjpjdXJyZW5jeURpc3BsYXlTdHJpbmcoQ3VycmVuY3lEaXNwbGF5IGN1cnJlbmN5RGlz
cGxheSkKIHsKICAgICBzd2l0Y2ggKGN1cnJlbmN5RGlzcGxheSkgewogICAgIGNhc2UgQ3VycmVu
Y3lEaXNwbGF5OjpDb2RlOgpAQCAtMTI3NCwxMCArMTI3NCwxMCBAQCBBU0NJSUxpdGVyYWwgSW50
bE51bWJlckZvcm1hdDo6Y3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlzcGxheSBjdXJy
ZW5jeURpcwogICAgICAgICByZXR1cm4gIm5hbWUiX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4g
QVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51
bWJlckZvcm1hdDo6bm90YXRpb25TdHJpbmcoSW50bE5vdGF0aW9uIG5vdGF0aW9uKQorQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0Ojpub3RhdGlvblN0cmluZyhJbnRsTm90
YXRpb24gbm90YXRpb24pCiB7CiAgICAgc3dpdGNoIChub3RhdGlvbikgewogICAgIGNhc2UgSW50
bE5vdGF0aW9uOjpTdGFuZGFyZDoKQEAgLTEyOTAsMTAgKzEyOTAsMTAgQEAgQVNDSUlMaXRlcmFs
IEludGxOdW1iZXJGb3JtYXQ6Om5vdGF0aW9uU3RyaW5nKEludGxOb3RhdGlvbiBub3RhdGlvbikK
ICAgICAgICAgcmV0dXJuICJjb21wYWN0Il9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxOdW1iZXJG
b3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJyZW5jeVNpZ24gY3VycmVuY3lTaWduKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0OjpjdXJyZW5jeVNpZ25TdHJpbmco
Q3VycmVuY3lTaWduIGN1cnJlbmN5U2lnbikKIHsKICAgICBzd2l0Y2ggKGN1cnJlbmN5U2lnbikg
ewogICAgIGNhc2UgQ3VycmVuY3lTaWduOjpTdGFuZGFyZDoKQEAgLTEzMDIsMTAgKzEzMDIsMTAg
QEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OmN1cnJlbmN5U2lnblN0cmluZyhDdXJy
ZW5jeVNpZ24gY3VycmVuY3lTaWduKQogICAgICAgICByZXR1cm4gImFjY291bnRpbmciX3M7CiAg
ICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6
Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgpOwogfQog
Ci1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dW5pdERpc3BsYXlTdHJpbmcoVW5pdERp
c3BsYXkgdW5pdERpc3BsYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3Jt
YXQ6OnVuaXREaXNwbGF5U3RyaW5nKFVuaXREaXNwbGF5IHVuaXREaXNwbGF5KQogewogICAgIHN3
aXRjaCAodW5pdERpc3BsYXkpIHsKICAgICBjYXNlIFVuaXREaXNwbGF5OjpTaG9ydDoKQEAgLTEz
MTYsMTAgKzEzMTYsMTAgQEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnVuaXREaXNw
bGF5U3RyaW5nKFVuaXREaXNwbGF5IHVuaXREaXNwbGF5KQogICAgICAgICByZXR1cm4gImxvbmci
X3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVybiBBU0NJSUxp
dGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aDo6bnVsbCgp
OwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6Y29tcGFjdERpc3BsYXlTdHJp
bmcoQ29tcGFjdERpc3BsYXkgY29tcGFjdERpc3BsYXkpCitBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IEludGxOdW1iZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5IGNv
bXBhY3REaXNwbGF5KQogewogICAgIHN3aXRjaCAoY29tcGFjdERpc3BsYXkpIHsKICAgICBjYXNl
IENvbXBhY3REaXNwbGF5OjpTaG9ydDoKQEAgLTEzMjgsMTAgKzEzMjgsMTAgQEAgQVNDSUlMaXRl
cmFsIEludGxOdW1iZXJGb3JtYXQ6OmNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5
IGNvbXBhY3REaXNwbGEKICAgICAgICAgcmV0dXJuICJsb25nIl9zOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxsKCk7CisgICAg
cmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVNDSUlMaXRlcmFs
IEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5IHNpZ25EaXNw
bGF5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0OjpzaWduRGlzcGxh
eVN0cmluZyhTaWduRGlzcGxheSBzaWduRGlzcGxheSkKIHsKICAgICBzd2l0Y2ggKHNpZ25EaXNw
bGF5KSB7CiAgICAgY2FzZSBTaWduRGlzcGxheTo6QXV0bzoKQEAgLTEzNDYsMTAgKzEzNDYsMTAg
QEAgQVNDSUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnNpZ25EaXNwbGF5U3RyaW5nKFNpZ25E
aXNwbGF5IHNpZ25EaXNwbGF5KQogICAgICAgICByZXR1cm4gIm5lZ2F0aXZlIl9zOwogICAgIH0K
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFsOjpudWxs
KCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0KIAotQVND
SUlMaXRlcmFsIEludGxOdW1iZXJGb3JtYXQ6OnJvdW5kaW5nTW9kZVN0cmluZyhSb3VuZGluZ01v
ZGUgcm91bmRpbmdNb2RlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0
Ojpyb3VuZGluZ01vZGVTdHJpbmcoUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSkKIHsKICAgICBz
d2l0Y2ggKHJvdW5kaW5nTW9kZSkgewogICAgIGNhc2UgUm91bmRpbmdNb2RlOjpDZWlsOgpAQCAt
MTM3MiwxMCArMTM3MiwxMCBAQCBBU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6cm91bmRp
bmdNb2RlU3RyaW5nKFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUpCiAgICAgICAgIHJldHVybiAi
aGFsZkV2ZW4iX3M7CiAgICAgfQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIHJldHVy
biBBU0NJSUxpdGVyYWw6Om51bGwoKTsKKyAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0
aDo6bnVsbCgpOwogfQogCi1BU0NJSUxpdGVyYWwgSW50bE51bWJlckZvcm1hdDo6dHJhaWxpbmda
ZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5IHRyYWlsaW5nWmVyb0Rpc3BsYXkp
CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIEludGxOdW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVyb0Rp
c3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxheSB0cmFpbGluZ1plcm9EaXNwbGF5KQogewog
ICAgIHN3aXRjaCAodHJhaWxpbmdaZXJvRGlzcGxheSkgewogICAgIGNhc2UgVHJhaWxpbmdaZXJv
RGlzcGxheTo6QXV0bzoKQEAgLTEzODQsMTAgKzEzODQsMTAgQEAgQVNDSUlMaXRlcmFsIEludGxO
dW1iZXJGb3JtYXQ6OnRyYWlsaW5nWmVyb0Rpc3BsYXlTdHJpbmcoVHJhaWxpbmdaZXJvRGlzcGxh
eSB0cmEKICAgICAgICAgcmV0dXJuICJzdHJpcElmSW50ZWdlciJfczsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKLUFTQ0lJTGl0ZXJh
bCBJbnRsTnVtYmVyRm9ybWF0Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5
cGUgcm91bmRpbmdUeXBlKQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsTnVtYmVyRm9ybWF0
Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUgcm91bmRpbmdUeXBlKQog
ewogICAgIHN3aXRjaCAocm91bmRpbmdUeXBlKSB7CiAgICAgY2FzZSBJbnRsUm91bmRpbmdUeXBl
OjpGcmFjdGlvbkRpZ2l0czoKQEAgLTEzOTksNyArMTM5OSw3IEBAIEFTQ0lJTGl0ZXJhbCBJbnRs
TnVtYmVyRm9ybWF0Ojpyb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGluZ1R5cGUgcm91
bmRpbmdUCiAgICAgICAgIHJldHVybiAibGVzc1ByZWNpc2lvbiJfczsKICAgICB9CiAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6bnVsbCgpOworICAg
IHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpudWxsKCk7CiB9CiAKIEpTVmFsdWUgSW50
bE51bWJlckZvcm1hdDo6dXNlR3JvdXBpbmdWYWx1ZShWTSYgdm0sIFVzZUdyb3VwaW5nIHVzZUdy
b3VwaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51
bWJlckZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZv
cm1hdC5oCmluZGV4IDY5OTE0ZWFmMzMzNi4uNTg2Y2E5YmEzNzA3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVtYmVyRm9ybWF0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5oCkBAIC0yMDYsMTEgKzIw
NiwxMSBAQCBwdWJsaWM6CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSW50bFR5cGU+CiAgICAgZnJp
ZW5kIHZvaWQgYXBwZW5kTnVtYmVyRm9ybWF0RGlnaXRPcHRpb25zVG9Ta2VsZXRvbihJbnRsVHlw
ZSosIFN0cmluZ0J1aWxkZXImKTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgbm90YXRpb25T
dHJpbmcoSW50bE5vdGF0aW9uKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBu
b3RhdGlvblN0cmluZyhJbnRsTm90YXRpb24pOwogCiAgICAgc3RhdGljIEludGxOdW1iZXJGb3Jt
YXQqIHVud3JhcEZvck9sZEZ1bmN0aW9ucyhKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCi0g
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCByb3VuZGluZ1ByaW9yaXR5U3RyaW5nKEludGxSb3VuZGlu
Z1R5cGUpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHJvdW5kaW5nUHJpb3Jp
dHlTdHJpbmcoSW50bFJvdW5kaW5nVHlwZSk7CiAKIHByaXZhdGU6CiAgICAgSW50bE51bWJlckZv
cm1hdChWTSYsIFN0cnVjdHVyZSopOwpAQCAtMjI3LDE0ICsyMjcsMTQgQEAgcHJpdmF0ZToKICAg
ICBlbnVtIGNsYXNzIFRyYWlsaW5nWmVyb0Rpc3BsYXkgOiB1aW50OF90IHsgQXV0bywgU3RyaXBJ
ZkludGVnZXIgfTsKICAgICBlbnVtIGNsYXNzIFVzZUdyb3VwaW5nIDogdWludDhfdCB7IEZhbHNl
LCBNaW4yLCBBdXRvLCBBbHdheXMgfTsKIAotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgc3R5bGVT
dHJpbmcoU3R5bGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgY3VycmVuY3lEaXNwbGF5U3Ry
aW5nKEN1cnJlbmN5RGlzcGxheSk7Ci0gICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBjdXJyZW5jeVNp
Z25TdHJpbmcoQ3VycmVuY3lTaWduKTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHVuaXREaXNw
bGF5U3RyaW5nKFVuaXREaXNwbGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIGNvbXBhY3RE
aXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHNp
Z25EaXNwbGF5U3RyaW5nKFNpZ25EaXNwbGF5KTsKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHJv
dW5kaW5nTW9kZVN0cmluZyhSb3VuZGluZ01vZGUpOwotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwg
dHJhaWxpbmdaZXJvRGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5KTsKKyAgICBzdGF0
aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHlsZVN0cmluZyhTdHlsZSk7CisgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggY3VycmVuY3lEaXNwbGF5U3RyaW5nKEN1cnJlbmN5RGlz
cGxheSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggY3VycmVuY3lTaWduU3Ry
aW5nKEN1cnJlbmN5U2lnbik7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdW5p
dERpc3BsYXlTdHJpbmcoVW5pdERpc3BsYXkpOworICAgIHN0YXRpYyBBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoIGNvbXBhY3REaXNwbGF5U3RyaW5nKENvbXBhY3REaXNwbGF5KTsKKyAgICBzdGF0aWMg
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzaWduRGlzcGxheVN0cmluZyhTaWduRGlzcGxheSk7Cisg
ICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggcm91bmRpbmdNb2RlU3RyaW5nKFJvdW5k
aW5nTW9kZSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdHJhaWxpbmdaZXJv
RGlzcGxheVN0cmluZyhUcmFpbGluZ1plcm9EaXNwbGF5KTsKICAgICBzdGF0aWMgSlNWYWx1ZSB1
c2VHcm91cGluZ1ZhbHVlKFZNJiwgVXNlR3JvdXBpbmcpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpT
Qm91bmRGdW5jdGlvbj4gbV9ib3VuZEZvcm1hdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCmluZGV4IDQxYzJiZmRmNmVlNS4uMzZjYjM5
MjhlNjM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgKQEAgLTEyMCw3ICsxMjAsNyBAQCBJbnN0YW5jZVR5cGUqIHVud3JhcEZvckxl
Z2FjeUludGxDb25zdHJ1Y3RvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbAog
fQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZXN1bHRUeXBlPgotUmVzdWx0VHlwZSBpbnRsT3B0aW9u
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHksIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8QVNDSUlMaXRl
cmFsLCBSZXN1bHRUeXBlPj4gdmFsdWVzLCBBU0NJSUxpdGVyYWwgbm90Rm91bmRNZXNzYWdlLCBS
ZXN1bHRUeXBlIGZhbGxiYWNrKQorUmVzdWx0VHlwZSBpbnRsT3B0aW9uKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHks
IHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxzdGQ6OnBhaXI8QVNDSUlMaXRlcmFsLCBSZXN1bHRUeXBl
Pj4gdmFsdWVzLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIG5vdEZvdW5kTWVzc2FnZSwgUmVzdWx0
VHlwZSBmYWxsYmFjaykKIHsKICAgICAvLyBHZXRPcHRpb24gKG9wdGlvbnMsIHByb3BlcnR5LCB0
eXBlPSJzdHJpbmciLCB2YWx1ZXMsIGZhbGxiYWNrKQogICAgIC8vIGh0dHBzOi8vdGMzOS5naXRo
dWIuaW8vZWNtYTQwMi8jc2VjLWdldG9wdGlvbgpAQCAtMTUyLDcgKzE1Miw3IEBAIFJlc3VsdFR5
cGUgaW50bE9wdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0
aW9ucywgUHJvcGVydHlOCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFJlc3VsdFR5cGU+Ci1SZXN1
bHRUeXBlIGludGxTdHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVzdWx0VHlw
ZSB0cnVlVmFsdWUsIFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0
PHN0ZDo6cGFpcjxBU0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJh
bCBub3RGb3VuZE1lc3NhZ2UsIFJlc3VsdFR5cGUgZmFsbGJhY2spCitSZXN1bHRUeXBlIGludGxT
dHJpbmdPckJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eSwgUmVzdWx0VHlwZSB0cnVlVmFsdWUs
IFJlc3VsdFR5cGUgZmFsc3lWYWx1ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PHN0ZDo6cGFpcjxB
U0NJSUxpdGVyYWwsIFJlc3VsdFR5cGU+PiB2YWx1ZXMsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgg
bm90Rm91bmRNZXNzYWdlLCBSZXN1bHRUeXBlIGZhbGxiYWNrKQogewogICAgIC8vIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC1pbnRsLW51bWJlcmZvcm1hdC12My9vdXQvbmVnb3RpYXRpb24vZGlm
Zi5odG1sI3NlYy1nZXRzdHJpbmdvcmJvb2xlYW5vcHRpb24KIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmNwcAppbmRl
eCBlMzI4YTFjMWY0MGMuLmViOTg1NTE0ODM5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bFJlbGF0aXZlVGltZUZvcm1hdC5jcHAKQEAgLTE3NCw3
ICsxNzQsNyBAQCB2b2lkIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVSZWxhdGl2
ZVRpbWVGb3JtYXQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIH0KIH0KIAotQVNDSUlMaXRl
cmFsIEludGxSZWxhdGl2ZVRpbWVGb3JtYXQ6OnN0eWxlU3RyaW5nKFN0eWxlIHN0eWxlKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsUmVsYXRpdmVUaW1lRm9ybWF0OjpzdHlsZVN0cmluZyhT
dHlsZSBzdHlsZSkKIHsKICAgICBzd2l0Y2ggKHN0eWxlKSB7CiAgICAgY2FzZSBTdHlsZTo6TG9u
ZzoKQEAgLTE4NSw3ICsxODUsNyBAQCBBU0NJSUxpdGVyYWwgSW50bFJlbGF0aXZlVGltZUZvcm1h
dDo6c3R5bGVTdHJpbmcoU3R5bGUgc3R5bGUpCiAgICAgICAgIHJldHVybiAibmFycm93Il9zOwog
ICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVNDSUlMaXRlcmFs
OjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51bGwoKTsKIH0K
IAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1pbnRsLnJlbGF0aXZldGltZWZvcm1h
dC5wcm90b3R5cGUucmVzb2x2ZWRvcHRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKaW5kZXggOWVkMDYxNTgwM2Y2
Li5hMDI4ZDM0NWRiZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxSZWxhdGl2ZVRpbWVGb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsUmVsYXRpdmVUaW1lRm9ybWF0LmgKQEAgLTc1LDcgKzc1LDcgQEAgcHJpdmF0ZToK
ICAgICB1c2luZyBVUmVsYXRpdmVEYXRlVGltZUZvcm1hdHRlckRlbGV0ZXIgPSBJQ1VEZWxldGVy
PHVyZWxkYXRlZm10X2Nsb3NlPjsKICAgICB1c2luZyBVTnVtYmVyRm9ybWF0RGVsZXRlciA9IElD
VURlbGV0ZXI8dW51bV9jbG9zZT47CiAKLSAgICBzdGF0aWMgQVNDSUlMaXRlcmFsIHN0eWxlU3Ry
aW5nKFN0eWxlKTsKKyAgICBzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHlsZVN0cmlu
ZyhTdHlsZSk7CiAKICAgICBzdGQ6OnVuaXF1ZV9wdHI8VVJlbGF0aXZlRGF0ZVRpbWVGb3JtYXR0
ZXIsIFVSZWxhdGl2ZURhdGVUaW1lRm9ybWF0dGVyRGVsZXRlcj4gbV9yZWxhdGl2ZURhdGVUaW1l
Rm9ybWF0dGVyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxVTnVtYmVyRm9ybWF0LCBVTnVtYmVyRm9y
bWF0RGVsZXRlcj4gbV9udW1iZXJGb3JtYXQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxTZWdtZW50ZXIuY3BwCmluZGV4IDhkODVmZTdjOWNjMi4uN2MxZWNhMmExNGY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmNw
cApAQCAtMTUwLDcgKzE1MCw3IEBAIEpTT2JqZWN0KiBJbnRsU2VnbWVudGVyOjpyZXNvbHZlZE9w
dGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkgY29uc3QKICAgICByZXR1cm4gb3B0
aW9uczsKIH0KIAotQVNDSUlMaXRlcmFsIEludGxTZWdtZW50ZXI6OmdyYW51bGFyaXR5U3RyaW5n
KEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQorQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBJbnRsU2Vn
bWVudGVyOjpncmFudWxhcml0eVN0cmluZyhHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAg
ICBzd2l0Y2ggKGdyYW51bGFyaXR5KSB7CiAgICAgY2FzZSBHcmFudWxhcml0eTo6R3JhcGhlbWU6
CkBAIC0xNjEsNyArMTYxLDcgQEAgQVNDSUlMaXRlcmFsIEludGxTZWdtZW50ZXI6OmdyYW51bGFy
aXR5U3RyaW5nKEdyYW51bGFyaXR5IGdyYW51bGFyaXR5KQogICAgICAgICByZXR1cm4gInNlbnRl
bmNlIl9zOwogICAgIH0KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gQVND
SUlMaXRlcmFsOjpudWxsKCk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGg6Om51
bGwoKTsKIH0KIAogSlNPYmplY3QqIEludGxTZWdtZW50ZXI6OmNyZWF0ZVNlZ21lbnREYXRhT2Jq
ZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTU3RyaW5nKiBzdHJpbmcsIGludDMy
X3Qgc3RhcnRJbmRleCwgaW50MzJfdCBlbmRJbmRleCwgVUJyZWFrSXRlcmF0b3ImIHNlZ21lbnRl
ciwgR3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsU2VnbWVudGVyLmgKaW5kZXggZTczMTFhZjgxYmEyLi4wY2JhYTM2MzZkMjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxTZWdtZW50ZXIuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsU2VnbWVudGVyLmgKQEAgLTY4
LDcgKzY4LDcgQEAgcHJpdmF0ZToKICAgICBJbnRsU2VnbWVudGVyKFZNJiwgU3RydWN0dXJlKik7
CiAgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYpOwogCi0gICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bCBncmFudWxhcml0eVN0cmluZyhHcmFudWxhcml0eSk7CisgICAgc3RhdGljIEFTQ0lJTGl0ZXJh
bFdpdGhMZW5ndGggZ3JhbnVsYXJpdHlTdHJpbmcoR3JhbnVsYXJpdHkpOwogCiAgICAgc3RkOjp1
bmlxdWVfcHRyPFVCcmVha0l0ZXJhdG9yLCBVQnJlYWtJdGVyYXRvckRlbGV0ZXI+IG1fc2VnbWVu
dGVyOwogICAgIFN0cmluZyBtX2xvY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNBcnJheS5jcHAKaW5kZXggMzE3OTg1ZmZlZDZhLi5hN2EyYjI5MDIzMTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXkuY3BwCkBAIC01MDgsNyArNTA4LDcgQEAgYm9v
bCBKU0FycmF5OjphcHBlbmRNZW1jcHkoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVk0m
IHZtLCB1bnNpZ25lZCBzdGFydEkKICAgICBjaGVja2VkTmV3TGVuZ3RoICs9IG90aGVyTGVuZ3Ro
OwogCiAgICAgaWYgKGNoZWNrZWROZXdMZW5ndGguaGFzT3ZlcmZsb3dlZCgpKSB7Ci0gICAgICAg
IHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yKSk7Cisg
ICAgICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxl
bmd0aEVycm9yIH0pKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICB1bnNpZ25l
ZCBuZXdMZW5ndGggPSBjaGVja2VkTmV3TGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlJbmxpbmVzLmgKaW5kZXggZWRlNGRmMDI5MDM4Li4wZjE4YWUxZjE4
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlJbmxp
bmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUlubGluZXMu
aApAQCAtMTQ1LDcgKzE0NSw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXNoSW5s
aW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAgICAgICAgIGlm
IChVTkxJS0VMWShsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgICAgICBtZXRo
b2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBsZW5ndGgsIHZhbHVl
LCB0cnVlKTsKICAgICAgICAgICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJyb3Ip
KTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3BlLCBj
cmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgTGVuZ3RoRXhjZWVkZWRUaGVN
YXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
IH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5OjpwdXNo
SW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAgICAgICAg
IGlmIChVTkxJS0VMWShsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgICAgICBt
ZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBsZW5ndGgsIHZh
bHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3RoRXJy
b3IpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgTGVuZ3RoRXhjZWVkZWRU
aGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIApAQCAtMjAyLDcgKzIwMiw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5Ojpw
dXNoSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAgICAg
ICAgIGlmIChVTkxJS0VMWShsZW5ndGggPiBNQVhfQVJSQVlfSU5ERVgpKSB7CiAgICAgICAgICAg
ICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0LCBsZW5ndGgs
IHZhbHVlLCB0cnVlKTsKICAgICAgICAgICAgIGlmICghc2NvcGUuZXhjZXB0aW9uKCkpCi0gICAg
ICAgICAgICAgICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlUmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIExlbmd0aEV4Y2VlZGVkVGhlTWF4aW11bUFycmF5TGVuZ3Ro
RXJyb3IpKTsKKyAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9iYWxPYmplY3QsIHNj
b3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgU3RyaW5nIHsgTGVuZ3RoRXhjZWVk
ZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvciB9KSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KIApAQCAtMjQzLDcgKzI0Myw3IEBAIEFMV0FZU19JTkxJTkUgdm9pZCBKU0FycmF5
OjpwdXNoSW5saW5lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdmFsCiAg
ICAgICAgICAgICBtZXRob2RUYWJsZSh2bSktPnB1dEJ5SW5kZXgodGhpcywgZ2xvYmFsT2JqZWN0
LCBzdG9yYWdlLT5sZW5ndGgoKSwgdmFsdWUsIHRydWUpOwogICAgICAgICAgICAgLy8gUGVyIEVT
NS4xIDE1LjQuNC43IHN0ZXAgNiAmIDE1LjQuNS4xIHN0ZXAgMy5kLgogICAgICAgICAgICAgaWYg
KCFzY29wZS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd0V4Y2VwdGlvbihnbG9i
YWxPYmplY3QsIHNjb3BlLCBjcmVhdGVSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgTGVuZ3RoRXhj
ZWVkZWRUaGVNYXhpbXVtQXJyYXlMZW5ndGhFcnJvcikpOworICAgICAgICAgICAgICAgIHRocm93
RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZVJhbmdlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBTdHJpbmcgeyBMZW5ndGhFeGNlZWRlZFRoZU1heGltdW1BcnJheUxlbmd0aEVycm9yIH0p
KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggZmE2MjNlMDkwNzRjLi5k
OWQyYWYzYTYyNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHAKQEAgLTY5MSw3ICs2OTEsNyBAQCBzdGF0aWMgT2JqZWN0UHJvcGVydHlD
b25kaXRpb24gc2V0dXBBZGFwdGl2ZVdhdGNocG9pbnQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogdGVtcGxhdGU8RXJyb3JUeXBlIGVycm9yVHlwZT4KIHZvaWQgSlNHbG9iYWxPYmplY3Q6Omlu
aXRpYWxpemVFcnJvckNvbnN0cnVjdG9yKExhenlDbGFzc1N0cnVjdHVyZTo6SW5pdGlhbGl6ZXIm
IGluaXQpCiB7Ci0gICAgaW5pdC5zZXRQcm90b3R5cGUoTmF0aXZlRXJyb3JQcm90b3R5cGU6OmNy
ZWF0ZShpbml0LnZtLCBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpKSwgZXJyb3JUeXBlTmFt
ZShlcnJvclR5cGUpKSk7CisgICAgaW5pdC5zZXRQcm90b3R5cGUoTmF0aXZlRXJyb3JQcm90b3R5
cGU6OmNyZWF0ZShpbml0LnZtLCBOYXRpdmVFcnJvclByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KGluaXQudm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUucHJvdG90eXBlKHRoaXMpKSwgU3RyaW5n
IHsgZXJyb3JUeXBlTmFtZShlcnJvclR5cGUpIH0pKTsKICAgICBpbml0LnNldFN0cnVjdHVyZShF
cnJvckluc3RhbmNlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgdGhpcywgaW5pdC5wcm90b3R5
cGUpKTsKICAgICBpbml0LnNldENvbnN0cnVjdG9yKE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJy
b3JUeXBlPjo6Y3JlYXRlKGluaXQudm0sIE5hdGl2ZUVycm9yQ29uc3RydWN0b3I8ZXJyb3JUeXBl
Pjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIHRoaXMsIG1fZXJyb3JTdHJ1Y3R1cmUuY29uc3Ry
dWN0b3IodGhpcykpLCBqc0Nhc3Q8TmF0aXZlRXJyb3JQcm90b3R5cGUqPihpbml0LnByb3RvdHlw
ZSkpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCmluZGV4IGQz
M2I3MjI4NjRhOC4uMjZiZGYxMmU5Yjc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKQEAgLTc1LDYgKzc1LDggQEAgc3RydWN0IEhhc2hUYWJsZTsKIHN0cnVjdCBI
YXNoVGFibGVWYWx1ZTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgRXhjZXB0aW9uKiB0aHJvd1R5cGVF
cnJvcihKU0dsb2JhbE9iamVjdCosIFRocm93U2NvcGUmLCBjb25zdCBTdHJpbmcmKTsKK0pTX0VY
UE9SVF9QUklWQVRFIEV4Y2VwdGlvbiogdGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBU
aHJvd1Njb3BlJiwgQVNDSUlMaXRlcmFsKTsKK0pTX0VYUE9SVF9QUklWQVRFIEV4Y2VwdGlvbiog
dGhyb3dUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqLCBUaHJvd1Njb3BlJiwgQVNDSUlMaXRlcmFs
V2l0aExlbmd0aCk7CiBleHRlcm4gSlNfRVhQT1JUX1BSSVZBVEUgY29uc3QgQVNDSUlMaXRlcmFs
IE5vbkV4dGVuc2libGVPYmplY3RQcm9wZXJ0eURlZmluZUVycm9yOwogZXh0ZXJuIEpTX0VYUE9S
VF9QUklWQVRFIGNvbnN0IEFTQ0lJTGl0ZXJhbCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcjsK
IGV4dGVybiBKU19FWFBPUlRfUFJJVkFURSBjb25zdCBBU0NJSUxpdGVyYWwgUmVhZG9ubHlQcm9w
ZXJ0eUNoYW5nZUVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcAppbmRleCAyMTNkOWZiN2E2OGEuLjNiNTE4
MDliY2U3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmF0aXZl
RXJyb3JDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TmF0aXZlRXJyb3JDb25zdHJ1Y3Rvci5jcHAKQEAgLTE1NSw3ICsxNTUsNyBAQCBOYXRpdmVFcnJv
ckNvbnN0cnVjdG9yPGVycm9yVHlwZT46Ok5hdGl2ZUVycm9yQ29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cgogCiB2b2lkIE5hdGl2ZUVycm9yQ29uc3RydWN0b3JCYXNlOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0sIE5hdGl2ZUVycm9yUHJvdG90eXBlKiBwcm90b3R5cGUsIEVycm9yVHlw
ZSBlcnJvclR5cGUpCiB7Ci0gICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDEsIGVycm9yVHlw
ZU5hbWUoZXJyb3JUeXBlKSwgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVU
cmFuc2l0aW9uKTsKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMSwgU3RyaW5nIHsgZXJy
b3JUeXBlTmFtZShlcnJvclR5cGUpIH0sIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3Ry
dWN0dXJlVHJhbnNpdGlvbik7CiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKICAg
ICAKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+
cHJvdG90eXBlLCBwcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5j
dGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rp
b24uY3BwCmluZGV4IGYyMTliOTMyNmJiZC4uOGJhMTEyMjIxNGZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdWxsU2V0dGVyRnVuY3Rpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bGxTZXR0ZXJGdW5jdGlvbi5jcHAKQEAgLTk0
LDcgKzk0LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUaHJvd0Vycm9yLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW0KICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGNhbGxl
ZCBmcm9tIElDLiBBbmQgd2UgZG8gbm90IHdhbnQgdG8gaW5jbHVkZSB0aGlzIGZyYW1lIGluIEVy
cm9yJ3Mgc3RhY2suCiAgICAgY29uc3RleHByIGJvb2wgdXNlQ3VycmVudEZyYW1lID0gZmFsc2U7
Ci0gICAgdGhyb3dFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBzY29wZSwgRXJyb3JJbnN0YW5jZTo6
Y3JlYXRlKGdsb2JhbE9iamVjdCwgdm0sIGdsb2JhbE9iamVjdC0+ZXJyb3JTdHJ1Y3R1cmUoRXJy
b3JUeXBlOjpUeXBlRXJyb3IpLCBSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvciwgSlNWYWx1ZSgp
LCBudWxscHRyLCBUeXBlTm90aGluZywgRXJyb3JUeXBlOjpUeXBlRXJyb3IsIHVzZUN1cnJlbnRG
cmFtZSkpOworICAgIHRocm93RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgc2NvcGUsIEVycm9ySW5z
dGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QsIHZtLCBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0
dXJlKEVycm9yVHlwZTo6VHlwZUVycm9yKSwgU3RyaW5nIHsgUmVhZG9ubHlQcm9wZXJ0eVdyaXRl
RXJyb3IgfSwgSlNWYWx1ZSgpLCBudWxscHRyLCBUeXBlTm90aGluZywgRXJyb3JUeXBlOjpUeXBl
RXJyb3IsIHVzZUN1cnJlbnRGcmFtZSkpOwogICAgIHJldHVybiB7IH07CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaCBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApp
bmRleCAzY2U3NjEyNDJjMzIuLjllOTYxNDQzMDg1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvRm9yd2FyZC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL0ZvcndhcmQuaApAQCAtMjYsNiArMjYs
NyBAQAogbmFtZXNwYWNlIFdURiB7CiAKIGNsYXNzIEFTQ0lJTGl0ZXJhbDsKK2NsYXNzIEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGg7CiBjbGFzcyBBYnN0cmFjdExvY2tlcjsKIGNsYXNzIEF0b21TdHJp
bmc7CiBjbGFzcyBBdG9tU3RyaW5nSW1wbDsKQEAgLTEyMSw2ICsxMjIsNyBAQCB0ZW1wbGF0ZTxj
bGFzcz4gY2xhc3MgdW5leHBlY3RlZDsKIH19fSAvLyBuYW1lc3BhY2Ugc3RkOjpleHBlcmltZW50
YWw6OmZ1bmRhbWVudGFsc192MwogCiB1c2luZyBXVEY6OkFTQ0lJTGl0ZXJhbDsKK3VzaW5nIFdU
Rjo6QVNDSUlMaXRlcmFsV2l0aExlbmd0aDsKIHVzaW5nIFdURjo6QWJzdHJhY3RMb2NrZXI7CiB1
c2luZyBXVEY6OkF0b21TdHJpbmc7CiB1c2luZyBXVEY6OkF0b21TdHJpbmdJbXBsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuY3BwIGIvU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuY3BwCmluZGV4IDY4N2MxNzlhNWMxNC4uNTVkYzMyOTkwOTYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0ZXJhbC5jcHAKKysrIGIv
U291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuY3BwCkBAIC0zMCw2ICszMCwxMSBAQAog
CiBuYW1lc3BhY2UgV1RGIHsKIAordm9pZCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpkdW1wKFBy
aW50U3RyZWFtJiBvdXQpIGNvbnN0Cit7CisgICAgb3V0LnByaW50KG1fY2hhcmFjdGVycyk7Cit9
CisKIHZvaWQgQVNDSUlMaXRlcmFsOjpkdW1wKFByaW50U3RyZWFtJiBvdXQpIGNvbnN0CiB7CiAg
ICAgb3V0LnByaW50KG1fY2hhcmFjdGVycyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L0FTQ0lJTGl0ZXJhbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9BU0NJSUxpdGVyYWwuaApp
bmRleCA1YzIzN2YzMDllMWIuLjcwNzA5NjVmMWY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9BU0NJSUxpdGVyYWwuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L0FTQ0lJTGl0
ZXJhbC5oCkBAIC0zMyw4ICszMyw0NiBAQCBuYW1lc3BhY2UgV1RGIHsKIAogY2xhc3MgUHJpbnRT
dHJlYW07CiAKK2NsYXNzIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZmluYWwgeworcHVibGljOgor
ICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkgY29uc3QgeyByZXR1cm4gbV9jaGFyYWN0ZXJzOyB9
CisKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZnJvbUxpdGVy
YWxVbnNhZmUoY29uc3QgY2hhciogc3RyaW5nLCBzaXplX3QgbGVuZ3RoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggeyBzdHJpbmcsIGxlbmd0aCB9OworICAg
IH0KKworICAgIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkg
Y29uc3Q7CisKKyAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbnVs
bCgpCisgICAgeworICAgICAgICByZXR1cm4gQVNDSUlMaXRlcmFsV2l0aExlbmd0aCB7IG51bGxw
dHIsIDAgfTsKKyAgICB9CisKKyAgICBjb25zdGV4cHIgYm9vbCBpc051bGwoKSBjb25zdCB7IHJl
dHVybiAhbV9jaGFyYWN0ZXJzOyB9CisKKyAgICBjb25zdGV4cHIgY29uc3QgY2hhciogY2hhcmFj
dGVycygpIGNvbnN0IHsgcmV0dXJuIG1fY2hhcmFjdGVyczsgfQorICAgIGNvbnN0IExDaGFyKiBj
aGFyYWN0ZXJzOCgpIGNvbnN0IHsgcmV0dXJuIGJpdHdpc2VfY2FzdDxjb25zdCBMQ2hhcio+KG1f
Y2hhcmFjdGVycyk7IH0KKyAgICBzaXplX3QgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5n
dGg7IH0KKworICAgIGNvbnN0ZXhwciBjaGFyIGNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBj
b25zdCB7IHJldHVybiBtX2NoYXJhY3RlcnNbaW5kZXhdOyB9CisKK3ByaXZhdGU6CisgICAgY29u
c3RleHByIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6
ZV90IGxlbmd0aCkKKyAgICAgICAgOiBtX2NoYXJhY3RlcnMoY2hhcmFjdGVycykKKyAgICAgICAg
LCBtX2xlbmd0aChsZW5ndGgpCisgICAgeyB9CisKKyAgICBjb25zdCBjaGFyKiBtX2NoYXJhY3Rl
cnM7CisgICAgc2l6ZV90IG1fbGVuZ3RoOworfTsKKwogY2xhc3MgQVNDSUlMaXRlcmFsIGZpbmFs
IHsKIHB1YmxpYzoKKyAgICBjb25zdGV4cHIgQVNDSUlMaXRlcmFsKEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGggb3RoZXIpCisgICAgICAgIDogbV9jaGFyYWN0ZXJzKG90aGVyLmNoYXJhY3RlcnMoKSkK
KyAgICB7IH0KKwogICAgIG9wZXJhdG9yIGNvbnN0IGNoYXIqKCkgY29uc3QgeyByZXR1cm4gbV9j
aGFyYWN0ZXJzOyB9CiAKICAgICBzdGF0aWMgY29uc3RleHByIEFTQ0lJTGl0ZXJhbCBmcm9tTGl0
ZXJhbFVuc2FmZShjb25zdCBjaGFyKiBzdHJpbmcpCkBAIC02NSwxNSArMTAzLDEzIEBAIHByaXZh
dGU6CiAKIGlubGluZSBuYW1lc3BhY2UgU3RyaW5nTGl0ZXJhbHMgewogCi1jb25zdGV4cHIgQVND
SUlMaXRlcmFsIG9wZXJhdG9yIiIgX3MoY29uc3QgY2hhciogY2hhcmFjdGVycywgc2l6ZV90IG4p
Citjb25zdGV4cHIgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBvcGVyYXRvciIiIF9zKGNvbnN0IGNo
YXIqIGNoYXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiB7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGxlbmd0aDsgKytpKQogICAgICAgICBBU1NFUlRfVU5ERVJfQ09OU1RFWFBSX0NPTlRFWFQo
aXNBU0NJSShjaGFyYWN0ZXJzW2ldKSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShuKTsKICNl
bmRpZgotICAgIHJldHVybiBBU0NJSUxpdGVyYWw6OmZyb21MaXRlcmFsVW5zYWZlKGNoYXJhY3Rl
cnMpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpmcm9tTGl0ZXJhbFVuc2Fm
ZShjaGFyYWN0ZXJzLCBsZW5ndGgpOwogfQogCiB9IC8vIGlubGluZSBTdHJpbmdMaXRlcmFscwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmggYi9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L0F0b21TdHJpbmcuaAppbmRleCAzM2IwZTU5NThkODMuLjJiNGYzMzc3NDlhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKKysrIGIvU291cmNl
L1dURi93dGYvdGV4dC9BdG9tU3RyaW5nLmgKQEAgLTczLDcgKzczLDEyIEBAIHB1YmxpYzoKICAg
ICAgICAgQ09NUElMRV9BU1NFUlQoKGNoYXJhY3RlckNvdW50IC0gMSA8PSAoKHVuc2lnbmVkKH4w
KSAtIHNpemVvZihTdHJpbmdJbXBsKSkgLyBzaXplb2YoTENoYXIpKSksIEF0b21TdHJpbmdGcm9t
TGl0ZXJhbENhbm5vdE92ZXJmbG93KTsKICAgICB9CiAKLSAgICBBdG9tU3RyaW5nKEFTQ0lJTGl0
ZXJhbCBsaXRlcmFsKQorICAgIGV4cGxpY2l0IEF0b21TdHJpbmcoQVNDSUlMaXRlcmFsIGxpdGVy
YWwpCisgICAgICAgIDogbV9zdHJpbmcoQXRvbVN0cmluZ0ltcGw6OmFkZExpdGVyYWwobGl0ZXJh
bC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpKQorICAgIHsKKyAgICB9CisKKyAgICBB
dG9tU3RyaW5nKEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbGl0ZXJhbCkKICAgICAgICAgOiBtX3N0
cmluZyhBdG9tU3RyaW5nSW1wbDo6YWRkTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0
ZXJhbC5sZW5ndGgoKSkpCiAgICAgewogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3Rm
L3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nQ29u
Y2F0ZW5hdGUuaAppbmRleCBlMmMyNTRhNzY1NjAuLmI5NDRmYmNjOTk5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGUuaApAQCAtNzUsNiArNzUsMjMgQEAgcHJpdmF0ZToK
ICAgICBVQ2hhciBtX2NoYXJhY3RlcjsKIH07CiAKK3RlbXBsYXRlPD4gY2xhc3MgU3RyaW5nVHlw
ZUFkYXB0ZXI8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgdm9pZD4geworcHVibGljOgorICAgIFN0
cmluZ1R5cGVBZGFwdGVyKEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbGl0ZXJhbCkKKyAgICAgICAg
OiBtX2NoYXJhY3RlcnMocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGxpdGVyYWwuY2hh
cmFjdGVycygpKSkKKyAgICAgICAgLCBtX2xlbmd0aChsaXRlcmFsLmxlbmd0aCgpKQorICAgIHsK
KyAgICB9CisKKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsg
fQorICAgIGJvb2wgaXM4Qml0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+IHZvaWQgd3JpdGVUbyhDaGFyYWN0ZXJUeXBlKiBkZXN0
aW5hdGlvbikgY29uc3QgeyBTdHJpbmdJbXBsOjpjb3B5Q2hhcmFjdGVycyhkZXN0aW5hdGlvbiwg
bV9jaGFyYWN0ZXJzLCBtX2xlbmd0aCk7IH0KKworcHJpdmF0ZToKKyAgICBjb25zdCBMQ2hhciog
bV9jaGFyYWN0ZXJzOworICAgIHVuc2lnbmVkIG1fbGVuZ3RoOworfTsKKwogdGVtcGxhdGU8PiBj
bGFzcyBTdHJpbmdUeXBlQWRhcHRlcjxjb25zdCBMQ2hhciosIHZvaWQ+IHsKIHB1YmxpYzoKICAg
ICBTdHJpbmdUeXBlQWRhcHRlcihjb25zdCBMQ2hhciogY2hhcmFjdGVycykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2UyNi4uNDYyMDEzZGU1YjU2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTE2MywxMSArMTYzLDYgQEAgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMp
CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGNoYXJhY3RlcnMsIHN0cmxlbihjaGFyYWN0
ZXJzKSk7CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bChBU0NJSUxpdGVyYWwgbGl0ZXJhbCkKLXsKLSAgICByZXR1cm4gY3JlYXRlRnJvbUxpdGVyYWwo
bGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpOwotfQotCiBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKaW5kZXggYzc2Y2Q1MjM2NzYxLi4yMjI5YmNlMzgxYjggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nSW1wbC5oCkBAIC0yNTAsNyArMjUwLDggQEAgcHVibGljOgogICAgIC8vIEZJWE1F
OiBSZXBsYWNlIGNhbGxzIHRvIHRoZXNlIG92ZXJsb2FkcyBvZiBjcmVhdGVGcm9tTGl0ZXJhbCB0
byBjcmVhdGVXaXRob3V0Q29weWluZyBpbnN0ZWFkLgogICAgIFdURl9FWFBPUlRfUFJJVkFURSBz
dGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqLCB1bnNp
Z25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0lt
cGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqKTsKLSAgICBXVEZfRVhQT1JUX1BSSVZB
VEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChBU0NJSUxpdGVyYWwp
OworICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoQVNDSUlMaXRl
cmFsIGxpdGVyYWwpIHsgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGxpdGVyYWwuY2hhcmFjdGVy
cygpLCBsaXRlcmFsLmxlbmd0aCgpKTsgfQorICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3Jl
YXRlRnJvbUxpdGVyYWwoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBsaXRlcmFsKSB7IHJldHVybiBj
cmVhdGVGcm9tTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0ZXJhbC5sZW5ndGgoKSk7
IH0KIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0
ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKICAgICBXVEZf
RVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVXaXRob3V0Q29weWlu
Zyhjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L3d0Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdP
cGVyYXRvcnMuaAppbmRleCAyNTU0YmI0ZDNmMmMuLjIyZjEzYzgzYmM0NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdPcGVyYXRvcnMuaAorKysgYi9Tb3VyY2UvV1RGL3d0
Zi90ZXh0L1N0cmluZ09wZXJhdG9ycy5oCkBAIC0xNjQsNiArMTY0LDI4IEBAIGlubGluZSBTdHJp
bmdBcHBlbmQ8QVNDSUlMaXRlcmFsLCBTdHJpbmdBcHBlbmQ8VSwgVj4+IG9wZXJhdG9yKyhjb25z
dCBBU0NJSUxpdGVyCiAgICAgcmV0dXJuIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWwsIFN0cmlu
Z0FwcGVuZDxVLCBWPj4oc3RyaW5nMSwgc3RyaW5nMik7CiB9CiAKK2lubGluZSBTdHJpbmdBcHBl
bmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nPiBvcGVyYXRvcisoY29uc3QgQVNDSUlM
aXRlcmFsV2l0aExlbmd0aCYgc3RyaW5nMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcyKQoreworICAg
IHJldHVybiBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nPihzdHJp
bmcxLCBzdHJpbmcyKTsKK30KKworaW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRo
TGVuZ3RoLCBBdG9tU3RyaW5nPiBvcGVyYXRvcisoY29uc3QgQVNDSUlMaXRlcmFsV2l0aExlbmd0
aCYgc3RyaW5nMSwgY29uc3QgQXRvbVN0cmluZyYgc3RyaW5nMikKK3sKKyAgICByZXR1cm4gU3Ry
aW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIEF0b21TdHJpbmc+KHN0cmluZzEsIHN0
cmluZzIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSA9IHN0ZDo6ZW5hYmxl
X2lmX3Q8c3RkOjppc19zYW1lPHN0ZDo6ZGVjYXlfdDxUPiwgU3RyaW5nVmlldz46OnZhbHVlPj4K
K2lubGluZSBTdHJpbmdBcHBlbmQ8QVNDSUlMaXRlcmFsV2l0aExlbmd0aCwgU3RyaW5nVmlldz4g
b3BlcmF0b3IrKGNvbnN0IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgmIHN0cmluZzEsIFQgc3RyaW5n
MikKK3sKKyAgICByZXR1cm4gU3RyaW5nQXBwZW5kPEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGgsIFN0
cmluZ1ZpZXc+KHN0cmluZzEsIHN0cmluZzIpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBVLCB0
eXBlbmFtZSBWPgoraW5saW5lIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoLCBT
dHJpbmdBcHBlbmQ8VSwgVj4+IG9wZXJhdG9yKyhjb25zdCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
JiBzdHJpbmcxLCBjb25zdCBTdHJpbmdBcHBlbmQ8VSwgVj4mIHN0cmluZzIpCit7CisgICAgcmV0
dXJuIFN0cmluZ0FwcGVuZDxBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoLCBTdHJpbmdBcHBlbmQ8VSwg
Vj4+KHN0cmluZzEsIHN0cmluZzIpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogU3RyaW5n
QXBwZW5kPFN0cmluZywgVD4gb3BlcmF0b3IrKGNvbnN0IFN0cmluZyYgc3RyaW5nMSwgVCBzdHJp
bmcyKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA0NDhhZjc2ODlmNzQuLjMxMzFm
NWFjNWJiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysr
IGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgKQEAgLTY5LDYgKzY5LDcgQEAgcHVi
bGljOgogICAgIFN0cmluZ1ZpZXcoY29uc3QgY2hhciopOwogICAgIFN0cmluZ1ZpZXcoY29uc3Qg
Y2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgZXhwbGljaXQgU3RyaW5nVmlldyhBU0NJSUxp
dGVyYWwpOworICAgIGV4cGxpY2l0IFN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCk7
CiAKICAgICBzdGF0aWMgU3RyaW5nVmlldyBlbXB0eSgpOwogCkBAIC0zNjAsNiArMzYxLDExIEBA
IGlubGluZSBTdHJpbmdWaWV3OjpTdHJpbmdWaWV3KEFTQ0lJTGl0ZXJhbCBzdHJpbmcpCiAgICAg
aW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0aCgpKTsKIH0KIAor
aW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzdHJp
bmcpCit7CisgICAgaW5pdGlhbGl6ZShzdHJpbmcuY2hhcmFjdGVyczgoKSwgc3RyaW5nLmxlbmd0
aCgpKTsKK30KKwogaW5saW5lIFN0cmluZ1ZpZXc6OlN0cmluZ1ZpZXcoY29uc3QgU3RyaW5nSW1w
bCYgc3RyaW5nKQogewogICAgIHNldFVuZGVybHlpbmdTdHJpbmcoJnN0cmluZyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oIGIvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAppbmRleCA1MTFiOWMxNjRhMWEuLjNmY2U2ODQ1MzgyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1dURlN0cmluZy5oCkBAIC05Nyw3ICs5Nyw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcoU3Rh
dGljU3RyaW5nSW1wbCopOwogCiAgICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZyb20gYSBjb25z
dGFudCBzdHJpbmcgbGl0ZXJhbC4KLSAgICBXVEZfRVhQT1JUX1BSSVZBVEUgU3RyaW5nKEFTQ0lJ
TGl0ZXJhbCk7CisgICAgV1RGX0VYUE9SVF9QUklWQVRFIGV4cGxpY2l0IFN0cmluZyhBU0NJSUxp
dGVyYWwpOworICAgIFN0cmluZyhBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHN0cmluZykgOiBtX2lt
cGwoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoc3RyaW5nKSkgeyB9CiAKICAgICAvLyBD
b25zdHJ1Y3QgYSBzdHJpbmcgZnJvbSBhIGNvbnN0YW50IHN0cmluZyBsaXRlcmFsLgogICAgIC8v
IFRoaXMgaXMgdGhlICJiaWciIHZlcnNpb246IHB1dHMgdGhlIGxlbmd0aCBpbiB0aGUgZnVuY3Rp
b24gY2FsbCBhbmQgZ2VuZXJhdGVzIGJpZ2dlciBjb2RlLgpAQCAtMzYxLDkgKzM2MiwxMSBAQCBp
bmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgU3RyaW5nJiBiKSB7
IHJldHVybiBlcXVhbChhLmltcGwoKQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJp
bmcmIGEsIGNvbnN0IExDaGFyKiBiKSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgYik7IH0KIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5nJiBhLCBjb25zdCBjaGFyKiBiKSB7IHJl
dHVybiBlcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGIpKTsg
fQogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJpbmcmIGEsIEFTQ0lJTGl0ZXJhbCBi
KSB7IHJldHVybiBlcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+
KGIuY2hhcmFjdGVycygpKSk7IH0KK2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3RyaW5n
JiBhLCBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGIpIHsgcmV0dXJuIGVxdWFsKGEuaW1wbCgpLCBi
LmNoYXJhY3RlcnMoKSwgYi5sZW5ndGgoKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29u
c3QgTENoYXIqIGEsIGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gZXF1YWwoYSwgYi5pbXBsKCkp
OyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IGNoYXIqIGEsIGNvbnN0IFN0cmluZyYg
YikgeyByZXR1cm4gZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEpLCBiLmlt
cGwoKSk7IH0KIGlubGluZSBib29sIG9wZXJhdG9yPT0oQVNDSUlMaXRlcmFsIGEsIGNvbnN0IFN0
cmluZyYgYikgeyByZXR1cm4gZXF1YWwocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGEu
Y2hhcmFjdGVycygpKSwgYi5pbXBsKCkpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvcj09KEFTQ0lJ
TGl0ZXJhbFdpdGhMZW5ndGggYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChiLmlt
cGwoKSwgYS5jaGFyYWN0ZXJzKCksIGEubGVuZ3RoKCkpOyB9CiB0ZW1wbGF0ZTxzaXplX3QgaW5s
aW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgVmVjdG9yPGNoYXIsIGlu
bGluZUNhcGFjaXR5PiYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiBlcXVhbChiLmltcGwo
KSwgYS5kYXRhKCksIGEuc2l6ZSgpKTsgfQogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5
PiBpbmxpbmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0cmluZyYgYSwgY29uc3QgVmVjdG9yPGNo
YXIsIGlubGluZUNhcGFjaXR5PiYgYikgeyByZXR1cm4gYiA9PSBhOyB9CiAKQEAgLTM3MSw5ICsz
NzQsMTEgQEAgaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFN0
cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgKIGlubGluZSBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU3RyaW5nJiBhLCBjb25zdCBMQ2hhciogYikgeyByZXR1cm4gIWVxdWFsKGEuaW1wbCgp
LCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IGNo
YXIqIGIpIHsgcmV0dXJuICFlcXVhbChhLmltcGwoKSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBM
Q2hhcio+KGIpKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIEFT
Q0lJTGl0ZXJhbCBiKSB7IHJldHVybiAhZXF1YWwoYS5pbXBsKCksIHJlaW50ZXJwcmV0X2Nhc3Q8
Y29uc3QgTENoYXIqPihiLmNoYXJhY3RlcnMoKSkpOyB9CitpbmxpbmUgYm9vbCBvcGVyYXRvciE9
KGNvbnN0IFN0cmluZyYgYSwgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBiKSB7IHJldHVybiAhZXF1
YWwoYS5pbXBsKCksIGIuY2hhcmFjdGVycygpLCBiLmxlbmd0aCgpKTsgfQogaW5saW5lIGJvb2wg
b3BlcmF0b3IhPShjb25zdCBMQ2hhciogYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJldHVybiAhZXF1
YWwoYSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KGNvbnN0IGNoYXIqIGEs
IGNvbnN0IFN0cmluZyYgYikgeyByZXR1cm4gIWVxdWFsKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPihhKSwgYi5pbXBsKCkpOyB9CiBpbmxpbmUgYm9vbCBvcGVyYXRvciE9KEFTQ0lJTGl0
ZXJhbCBhLCBjb25zdCBTdHJpbmcmIGIpIHsgcmV0dXJuICFlcXVhbChyZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oYS5jaGFyYWN0ZXJzKCkpLCBiLmltcGwoKSk7IH0KK2lubGluZSBib29s
IG9wZXJhdG9yIT0oQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhLCBjb25zdCBTdHJpbmcmIGIpIHsg
cmV0dXJuICFlcXVhbChiLmltcGwoKSwgYS5jaGFyYWN0ZXJzKCksIGEubGVuZ3RoKCkpOyB9CiB0
ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHk+IGlubGluZSBib29sIG9wZXJhdG9yIT0oY29u
c3QgVmVjdG9yPGNoYXIsIGlubGluZUNhcGFjaXR5PiYgYSwgY29uc3QgU3RyaW5nJiBiKSB7IHJl
dHVybiAhKGEgPT0gYik7IH0KIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eT4gaW5saW5l
IGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHJpbmcmIGEsIGNvbnN0IFZlY3RvcjxjaGFyLCBpbmxp
bmVDYXBhY2l0eT4mIGIpIHsgcmV0dXJuIGIgIT0gYTsgfQogCkBAIC02MjgsOSArNjMzLDkgQEAg
dGVtcGxhdGU8dW5zaWduZWQgbGVuZ3RoPiBpbmxpbmUgYm9vbCBzdGFydHNXaXRoTGV0dGVyc0ln
bm9yaW5nQVNDSUlDYXNlKGNvbnN0IFMKIAogaW5saW5lIG5hbWVzcGFjZSBTdHJpbmdMaXRlcmFs
cyB7CiAKLWlubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNoYXIqIGNoYXJhY3Rl
cnMsIHNpemVfdCkKK2lubGluZSBTdHJpbmcgb3BlcmF0b3IiIiBfc3RyKGNvbnN0IGNoYXIqIGNo
YXJhY3RlcnMsIHNpemVfdCBsZW5ndGgpCiB7Ci0gICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbDo6ZnJv
bUxpdGVyYWxVbnNhZmUoY2hhcmFjdGVycyk7CisgICAgcmV0dXJuIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGg6OmZyb21MaXRlcmFsVW5zYWZlKGNoYXJhY3RlcnMsIGxlbmd0aCk7CiB9CiAKIH0gLy8g
aW5saW5lIFN0cmluZ0xpdGVyYWxzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0Zl
dGNoUmVxdWVzdC5jcHAKaW5kZXggYjBkMWQ4MmU4ZWVjLi4xYTI4ODU2YTkyYTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXF1ZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoUmVxdWVzdC5jcHAKQEAgLTE0Nyw3ICsx
NDcsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaFJlcXVlc3Q6OmluaXRpYWxpemVPcHRpb25z
KGNvbnN0IEluaXQmIGluaXQpCiAKIHN0YXRpYyBpbmxpbmUgc3RkOjpvcHRpb25hbDxFeGNlcHRp
b24+IHByb2Nlc3NJbnZhbGlkU2lnbmFsKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQp
CiB7Ci0gICAgQVNDSUlMaXRlcmFsIG1lc3NhZ2UgeyAiRmV0Y2hSZXF1ZXN0SW5pdC5zaWduYWwg
c2hvdWxkIGJlIHVuZGVmaW5lZCwgbnVsbCBvciBhbiBBYm9ydFNpZ25hbCBvYmplY3QuIFRoaXMg
d2lsbCB0aHJvdyBpbiBhIGZ1dHVyZSByZWxlYXNlLiJfcyB9OworICAgIGF1dG8gbWVzc2FnZSA9
ICJGZXRjaFJlcXVlc3RJbml0LnNpZ25hbCBzaG91bGQgYmUgdW5kZWZpbmVkLCBudWxsIG9yIGFu
IEFib3J0U2lnbmFsIG9iamVjdC4gVGhpcyB3aWxsIHRocm93IGluIGEgZnV0dXJlIHJlbGVhc2Uu
Il9zOwogICAgIGNvbnRleHQuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1l
c3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CiAKICAgICBpZiAoaXM8RG9jdW1lbnQ+KGNv
bnRleHQpICYmIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5xdWlya3MoKS5zaG91bGRJZ25v
cmVJbnZhbGlkU2lnbmFsKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dl
b2xvY2F0aW9uL0dlb2xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvZ2VvbG9j
YXRpb24vR2VvbG9jYXRpb24uY3BwCmluZGV4IGNkMzcyZjQzNjkxYS4uNzI2MmE1MmZjMWFhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
LmNwcApAQCAtMzgzLDcgKzM4Myw3IEBAIGJvb2wgR2VvbG9jYXRpb246OnNob3VsZEJsb2NrR2Vv
bG9jYXRpb25SZXF1ZXN0cygpCiB2b2lkIEdlb2xvY2F0aW9uOjpzdGFydFJlcXVlc3QoR2VvTm90
aWZpZXIqIG5vdGlmaWVyKQogewogICAgIGlmIChzaG91bGRCbG9ja0dlb2xvY2F0aW9uUmVxdWVz
dHMoKSkgewotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0
aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVO
SUVELCBvcmlnaW5DYW5ub3RSZXF1ZXN0R2VvbG9jYXRpb25FcnJvck1lc3NhZ2UpKTsKKyAgICAg
ICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVh
dGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgU3RyaW5nIHsg
b3JpZ2luQ2Fubm90UmVxdWVzdEdlb2xvY2F0aW9uRXJyb3JNZXNzYWdlIH0pKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICBkb2N1bWVudCgpLT5zZXRHZW9sb2NhdGlvbkFjY2Vzc2VkKCk7
CkBAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RhcnRSZXF1ZXN0KEdlb05v
dGlmaWVyKiBub3RpZmllcikKICAgICAvLyBDaGVjayB3aGV0aGVyIHBlcm1pc3Npb25zIGhhdmUg
YWxyZWFkeSBiZWVuIGRlbmllZC4gTm90ZSB0aGF0IGlmIHRoaXMgaXMgdGhlIGNhc2UsCiAgICAg
Ly8gdGhlIHBlcm1pc3Npb24gc3RhdGUgY2FuIG5vdCBjaGFuZ2UgYWdhaW4gaW4gdGhlIGxpZmV0
aW1lIG9mIHRoaXMgcGFnZS4KICAgICBpZiAoaXNEZW5pZWQoKSkKLSAgICAgICAgbm90aWZpZXIt
PnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRp
b25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgcGVybWlzc2lvbkRlbmllZEVycm9y
TWVzc2FnZSkpOworICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05f
REVOSUVELCBTdHJpbmcgeyBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlIH0pKTsKICAgICBl
bHNlIGlmIChoYXZlU3VpdGFibGVDYWNoZWRQb3NpdGlvbihub3RpZmllci0+b3B0aW9ucygpKSkK
ICAgICAgICAgbm90aWZpZXItPnNldFVzZUNhY2hlZFBvc2l0aW9uKCk7CiAgICAgZWxzZSBpZiAo
bm90aWZpZXItPmhhc1plcm9UaW1lb3V0KCkpCkBAIC00MDMsNyArNDAzLDcgQEAgdm9pZCBHZW9s
b2NhdGlvbjo6c3RhcnRSZXF1ZXN0KEdlb05vdGlmaWVyKiBub3RpZmllcikKICAgICB9IGVsc2Ug
aWYgKHN0YXJ0VXBkYXRpbmcobm90aWZpZXIpKQogICAgICAgICBub3RpZmllci0+c3RhcnRUaW1l
cklmTmVlZGVkKCk7CiAgICAgZWxzZQotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihH
ZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6
OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSkp
OworICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJy
b3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxF
LCBTdHJpbmcgeyBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSB9KSk7CiB9CiAKIHZv
aWQgR2VvbG9jYXRpb246OmZhdGFsRXJyb3JPY2N1cnJlZChHZW9Ob3RpZmllciogbm90aWZpZXIp
CkBAIC00MjEsNyArNDIxLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6cmVxdWVzdFVzZXNDYWNoZWRQ
b3NpdGlvbihHZW9Ob3RpZmllciogbm90aWZpZXIpCiAgICAgLy8gVGhpcyBpcyBjYWxsZWQgYXN5
bmNocm9ub3VzbHksIHNvIHRoZSBwZXJtaXNzaW9ucyBjb3VsZCBoYXZlIGJlZW4gZGVuaWVkCiAg
ICAgLy8gc2luY2Ugd2UgbGFzdCBjaGVja2VkIGluIHN0YXJ0UmVxdWVzdC4KICAgICBpZiAoaXNE
ZW5pZWQoKSkgewotICAgICAgICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBv
c2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05f
REVOSUVELCBwZXJtaXNzaW9uRGVuaWVkRXJyb3JNZXNzYWdlKSk7CisgICAgICAgIG5vdGlmaWVy
LT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0
aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5JRUQsIFN0cmluZyB7IHBlcm1pc3Npb25E
ZW5pZWRFcnJvck1lc3NhZ2UgfSkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NTMs
NyArNDUzLDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6bWFrZUNhY2hlZFBvc2l0aW9uQ2FsbGJhY2tz
KCkKICAgICAgICAgICAgIGlmIChub3RpZmllci0+aGFzWmVyb1RpbWVvdXQoKSB8fCBzdGFydFVw
ZGF0aW5nKG5vdGlmaWVyLmdldCgpKSkKICAgICAgICAgICAgICAgICBub3RpZmllci0+c3RhcnRU
aW1lcklmTmVlZGVkKCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgbm90aWZp
ZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9j
YXRpb25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlMQUJMRSwgZmFpbGVkVG9TdGFydFNl
cnZpY2VFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAgICBub3RpZmllci0+c2V0RmF0YWxF
cnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShHZW9sb2NhdGlvblBvc2l0aW9u
RXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBTdHJpbmcgeyBmYWlsZWRUb1N0YXJ0U2Vydmlj
ZUVycm9yTWVzc2FnZSB9KSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTUxNyw3ICs1MTcsNyBA
QCB2b2lkIEdlb2xvY2F0aW9uOjpzZXRJc0FsbG93ZWQoYm9vbCBhbGxvd2VkLCBjb25zdCBTdHJp
bmcmIGF1dGhvcml6YXRpb25Ub2tlbikKICAgICB9CiAKICAgICBpZiAoIWlzQWxsb3dlZCgpKSB7
Ci0gICAgICAgIGF1dG8gZXJyb3IgPSBHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0ZShH
ZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBFUk1JU1NJT05fREVOSUVELCBwZXJtaXNzaW9uRGVu
aWVkRXJyb3JNZXNzYWdlKTsKKyAgICAgICAgYXV0byBlcnJvciA9IEdlb2xvY2F0aW9uUG9zaXRp
b25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9ERU5J
RUQsIFN0cmluZyB7IHBlcm1pc3Npb25EZW5pZWRFcnJvck1lc3NhZ2UgfSk7CiAgICAgICAgIGVy
cm9yLT5zZXRJc0ZhdGFsKHRydWUpOwogICAgICAgICBoYW5kbGVFcnJvcihlcnJvcik7CiAgICAg
ICAgIG1fcmVxdWVzdHNBd2FpdGluZ0NhY2hlZFBvc2l0aW9uLmNsZWFyKCk7CkBAIC01NzYsNyAr
NTc2LDcgQEAgdm9pZCBHZW9sb2NhdGlvbjo6c3RvcFRpbWVycygpCiB2b2lkIEdlb2xvY2F0aW9u
OjpjYW5jZWxSZXF1ZXN0cyhHZW9Ob3RpZmllclZlY3RvciYgbm90aWZpZXJzKQogewogICAgIGZv
ciAoYXV0byYgbm90aWZpZXIgOiBub3RpZmllcnMpCi0gICAgICAgIG5vdGlmaWVyLT5zZXRGYXRh
bEVycm9yKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRp
b25FcnJvcjo6UE9TSVRJT05fVU5BVkFJTEFCTEUsIGZyYW1lbGVzc0RvY3VtZW50RXJyb3JNZXNz
YWdlKSk7CisgICAgICAgIG5vdGlmaWVyLT5zZXRGYXRhbEVycm9yKEdlb2xvY2F0aW9uUG9zaXRp
b25FcnJvcjo6Y3JlYXRlKEdlb2xvY2F0aW9uUG9zaXRpb25FcnJvcjo6UE9TSVRJT05fVU5BVkFJ
TEFCTEUsIFN0cmluZyB7IGZyYW1lbGVzc0RvY3VtZW50RXJyb3JNZXNzYWdlIH0pKTsKIH0KIAog
dm9pZCBHZW9sb2NhdGlvbjo6Y2FuY2VsQWxsUmVxdWVzdHMoKQpAQCAtNzUxLDkgKzc1MSw5IEBA
IHZvaWQgR2VvbG9jYXRpb246OmhhbmRsZVBlbmRpbmdQZXJtaXNzaW9uTm90aWZpZXJzKCkKICAg
ICAgICAgICAgIGlmIChzdGFydFVwZGF0aW5nKG5vdGlmaWVyLmdldCgpKSkKICAgICAgICAgICAg
ICAgICBub3RpZmllci0+c3RhcnRUaW1lcklmTmVlZGVkKCk7CiAgICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlv
bkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQT1NJVElPTl9VTkFWQUlM
QUJMRSwgZmFpbGVkVG9TdGFydFNlcnZpY2VFcnJvck1lc3NhZ2UpKTsKKyAgICAgICAgICAgICAg
ICBub3RpZmllci0+c2V0RmF0YWxFcnJvcihHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OmNyZWF0
ZShHZW9sb2NhdGlvblBvc2l0aW9uRXJyb3I6OlBPU0lUSU9OX1VOQVZBSUxBQkxFLCBTdHJpbmcg
eyBmYWlsZWRUb1N0YXJ0U2VydmljZUVycm9yTWVzc2FnZSB9KSk7CiAgICAgICAgIH0gZWxzZQot
ICAgICAgICAgICAgbm90aWZpZXItPnNldEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVy
cm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwg
cGVybWlzc2lvbkRlbmllZEVycm9yTWVzc2FnZSkpOworICAgICAgICAgICAgbm90aWZpZXItPnNl
dEZhdGFsRXJyb3IoR2VvbG9jYXRpb25Qb3NpdGlvbkVycm9yOjpjcmVhdGUoR2VvbG9jYXRpb25Q
b3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0RFTklFRCwgU3RyaW5nIHsgcGVybWlzc2lvbkRlbmll
ZEVycm9yTWVzc2FnZSB9KSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKaW5kZXggZGNhN2U0NmM0
OGE4Li5jM2Q1M2E2YjE0ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0hpZ2hsaWdodFJlZ2lzdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9IaWdobGlnaHRSZWdpc3Rlci5jcHAKQEAgLTY0LDcgKzY0LDcgQEAgdm9pZCBI
aWdobGlnaHRSZWdpc3Rlcjo6c2V0SGlnaGxpZ2h0VmlzaWJpbGl0eShIaWdobGlnaHRWaXNpYmls
aXR5IGhpZ2hsaWdodFZpc2kKICAgICAgICAgaGlnaGxpZ2h0LnZhbHVlLT5yZXBhaW50KCk7CiB9
CiAjZW5kaWYKLXN0YXRpYyBBU0NJSUxpdGVyYWwgYW5ub3RhdGlvbkhpZ2hsaWdodEtleSgpCitz
dGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhbm5vdGF0aW9uSGlnaGxpZ2h0S2V5KCkKIHsK
ICAgICByZXR1cm4gImFubm90YXRpb25IaWdobGlnaHRLZXkiX3M7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0
b3JlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3NlcnZlci9TUUxpdGVJ
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDM5YzE0N2RhYTc4Yy4uNmE2ZmQyNmQwMTdlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zZXJ2ZXIvU1FMaXRlSURC
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9z
ZXJ2ZXIvU1FMaXRlSURCQmFja2luZ1N0b3JlLmNwcApAQCAtMjk5LDcgKzI5OSw3IEBAIElEQkVy
cm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRCbG9iVGFibGVzKCkKICAgICAg
ICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZChibG9iUmVjb3Jkc1RhYmxlU2NoZW1h
KCkpKQogICAgICAgICAgICAgcmV0dXJuIElEQkVycm9yIHsgVW5rbm93bkVycm9yLCBtYWtlU3Ry
aW5nKCJFcnJvciBjcmVhdGluZyBCbG9iUmVjb3JkcyB0YWJsZSAoIiwgbV9zcWxpdGVEQi0+bGFz
dEVycm9yKCksICIpIC0gIiwgbV9zcWxpdGVEQi0+bGFzdEVycm9yTXNnKCkpIH07CiAKLSAgICAg
ICAgcmVjb3Jkc1RhYmxlU3RhdGVtZW50ID0gYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgpOworICAg
ICAgICByZWNvcmRzVGFibGVTdGF0ZW1lbnQgPSBTdHJpbmcgeyBibG9iUmVjb3Jkc1RhYmxlU2No
ZW1hKCkgfTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVChyZWNvcmRzVGFibGVTdGF0ZW1l
bnQgPT0gYmxvYlJlY29yZHNUYWJsZVNjaGVtYSgpIHx8IHJlY29yZHNUYWJsZVN0YXRlbWVudCA9
PSBibG9iUmVjb3Jkc1RhYmxlU2NoZW1hQWx0ZXJuYXRlKCkpOwpAQCAtMzA5LDcgKzMwOSw3IEBA
IElEQkVycm9yIFNRTGl0ZUlEQkJhY2tpbmdTdG9yZTo6ZW5zdXJlVmFsaWRCbG9iVGFibGVzKCkK
ICAgICAgICAgaWYgKCFtX3NxbGl0ZURCLT5leGVjdXRlQ29tbWFuZChibG9iRmlsZXNUYWJsZVNj
aGVtYSgpKSkKICAgICAgICAgICAgIHJldHVybiBJREJFcnJvciB7IFVua25vd25FcnJvciwgbWFr
ZVN0cmluZygiRXJyb3IgY3JlYXRpbmcgQmxvYkZpbGVzIHRhYmxlICgiLCBtX3NxbGl0ZURCLT5s
YXN0RXJyb3IoKSwgIikgLSAiLCBtX3NxbGl0ZURCLT5sYXN0RXJyb3JNc2coKSkgfTsKIAotICAg
ICAgICBmaWxlc1RhYmxlU3RhdGVtZW50ID0gYmxvYkZpbGVzVGFibGVTY2hlbWEoKTsKKyAgICAg
ICAgZmlsZXNUYWJsZVN0YXRlbWVudCA9IFN0cmluZyB7IGJsb2JGaWxlc1RhYmxlU2NoZW1hKCkg
fTsKICAgICB9CiAKICAgICBSRUxFQVNFX0FTU0VSVChmaWxlc1RhYmxlU3RhdGVtZW50ID09IGJs
b2JGaWxlc1RhYmxlU2NoZW1hKCkgfHwgZmlsZXNUYWJsZVN0YXRlbWVudCA9PSBibG9iRmlsZXNU
YWJsZVNjaGVtYUFsdGVybmF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvaW5kZXhlZGRiL3NoYXJlZC9JREJFcnJvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2luZGV4ZWRkYi9zaGFyZWQvSURCRXJyb3IuY3BwCmluZGV4IDE4ZWQ3ZTIxYjM1NS4uYWQxZTM4
NjM3M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2luZGV4ZWRkYi9zaGFy
ZWQvSURCRXJyb3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaW5kZXhlZGRiL3No
YXJlZC9JREJFcnJvci5jcHAKQEAgLTQwLDE0ICs0MCwxNCBAQCBTdHJpbmcgSURCRXJyb3I6Om5h
bWUoKSBjb25zdAogewogICAgIGlmICghbV9jb2RlKQogICAgICAgICByZXR1cm4geyB9OwotICAg
IHJldHVybiBET01FeGNlcHRpb246Om5hbWUobV9jb2RlLnZhbHVlKCkpOworICAgIHJldHVybiBT
dHJpbmcgeyBET01FeGNlcHRpb246Om5hbWUobV9jb2RlLnZhbHVlKCkpIH07CiB9CiAKIFN0cmlu
ZyBJREJFcnJvcjo6bWVzc2FnZSgpIGNvbnN0CiB7CiAgICAgaWYgKCFtX2NvZGUpCiAgICAgICAg
IHJldHVybiB7IH07Ci0gICAgcmV0dXJuIERPTUV4Y2VwdGlvbjo6bWVzc2FnZShtX2NvZGUudmFs
dWUoKSk7CisgICAgcmV0dXJuIFN0cmluZyB7IERPTUV4Y2VwdGlvbjo6bWVzc2FnZShtX2NvZGUu
dmFsdWUoKSkgfTsKIH0KIAogUmVmUHRyPERPTUV4Y2VwdGlvbj4gSURCRXJyb3I6OnRvRE9NRXhj
ZXB0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NRXhjZXB0aW9uSGFuZGxpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01FeGNlcHRpb25IYW5kbGluZy5jcHAKaW5kZXggNzNmNmNjNjVkNTRjLi5lODE4OWI0MzMzNDUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9uSGFu
ZGxpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NRXhjZXB0aW9u
SGFuZGxpbmcuY3BwCkBAIC0yMTcsMTkgKzIxNywxOSBAQCB0ZW1wbGF0ZTx0eXBlbmFtZS4uLiBT
dHJpbmdUeXBlcz4gc3RhdGljIFN0cmluZyBtYWtlQXJndW1lbnRUeXBlRXJyb3JNZXNzYWdlKHVu
cwogdm9pZCB0aHJvd05vdFN1cHBvcnRlZEVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIEFTQ0lJTGl0ZXJhbCBtZXNz
YWdlKQogewogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uRXhjZXB0VGVybWluYXRpb24oKTsK
LSAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZURP
TUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgTm90U3VwcG9ydGVkRXJyb3IsIG1lc3Nh
Z2UpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNy
ZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgTm90U3VwcG9ydGVkRXJyb3Is
IFN0cmluZyB7IG1lc3NhZ2UgfSkpOwogfQogCiB2b2lkIHRocm93SW52YWxpZFN0YXRlRXJyb3Io
SlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJvd1Njb3Bl
JiBzY29wZSwgQVNDSUlMaXRlcmFsIG1lc3NhZ2UpCiB7CiAgICAgc2NvcGUuYXNzZXJ0Tm9FeGNl
cHRpb25FeGNlcHRUZXJtaW5hdGlvbigpOwotICAgIHRocm93RXhjZXB0aW9uKCZsZXhpY2FsR2xv
YmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LCBJbnZhbGlkU3RhdGVFcnJvciwgbWVzc2FnZSkpOworICAgIHRocm93RXhjZXB0aW9uKCZsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBzY29wZSwgY3JlYXRlRE9NRXhjZXB0aW9uKCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBJbnZhbGlkU3RhdGVFcnJvciwgU3RyaW5nIHsgbWVzc2FnZSB9KSk7CiB9CiAKIHZv
aWQgdGhyb3dTZWN1cml0eUVycm9yKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxP
YmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2NvcGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbkV4Y2VwdFRlcm1pbmF0aW9uKCk7Ci0gICAgdGhy
b3dFeGNlcHRpb24oJmxleGljYWxHbG9iYWxPYmplY3QsIHNjb3BlLCBjcmVhdGVET01FeGNlcHRp
b24oJmxleGljYWxHbG9iYWxPYmplY3QsIFNlY3VyaXR5RXJyb3IsIG1lc3NhZ2UpKTsKKyAgICB0
aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2Vw
dGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgU2VjdXJpdHlFcnJvciwgU3RyaW5nIHsgbWVzc2Fn
ZSB9KSk7CiB9CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudE11c3RCZUVudW1F
cnJvcihKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93
U2NvcGUmIHNjb3BlLCB1bnNpZ25lZCBhcmd1bWVudEluZGV4LCBjb25zdCBjaGFyKiBhcmd1bWVu
dE5hbWUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uSW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lLCBjb25zdCBjaGFyKiBleHBlY3RlZFZhbHVlcykKQEAgLTMxMSw3ICszMTEsNyBA
QCBKU0M6OkVuY29kZWRKU1ZhbHVlIHJlamVjdFByb21pc2VXaXRoVGhpc1R5cGVFcnJvcihKU0M6
OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsRwogdm9pZCB0aHJvd0RPTVN5bnRheEVycm9yKEpTQzo6
SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6VGhyb3dTY29wZSYgc2Nv
cGUsIEFTQ0lJTGl0ZXJhbCBtZXNzYWdlKQogewogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9u
RXhjZXB0VGVybWluYXRpb24oKTsKLSAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgU3lu
dGF4RXJyb3IsIG1lc3NhZ2UpKTsKKyAgICB0aHJvd0V4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9i
amVjdCwgc2NvcGUsIGNyZWF0ZURPTUV4Y2VwdGlvbigmbGV4aWNhbEdsb2JhbE9iamVjdCwgU3lu
dGF4RXJyb3IsIFN0cmluZyB7IG1lc3NhZ2UgfSkpOwogfQogCiB2b2lkIHRocm93RGF0YUNsb25l
RXJyb3IoSlNDOjpKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpUaHJv
d1Njb3BlJiBzY29wZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
cmlwdE1vZHVsZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRN
b2R1bGVMb2FkZXIuY3BwCmluZGV4IDcwMWQzOWMwOGIwYi4uODI4M2Y5Yzk5ZmI2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRNb2R1bGVMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdE1vZHVsZUxvYWRlci5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCBKU0M6OklkZW50aWZpZXIgU2NyaXB0TW9kdWxlTG9hZGVyOjpyZXNv
bHZlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGpzR2xvYmFsT2JqZWN0LAogICAgIHJldHVybiBKU0M6
OklkZW50aWZpZXI6OmZyb21TdHJpbmcodm0sIHJlc3VsdC0+c3RyaW5nKCkpOwogfQogCi1zdGF0
aWMgdm9pZCByZWplY3RUb1Byb3BhZ2F0ZU5ldHdvcmtFcnJvcihEZWZlcnJlZFByb21pc2UmIGRl
ZmVycmVkLCBNb2R1bGVGZXRjaEZhaWx1cmVLaW5kIGZhaWx1cmVLaW5kLCBBU0NJSUxpdGVyYWwg
bWVzc2FnZSkKK3N0YXRpYyB2b2lkIHJlamVjdFRvUHJvcGFnYXRlTmV0d29ya0Vycm9yKERlZmVy
cmVkUHJvbWlzZSYgZGVmZXJyZWQsIE1vZHVsZUZldGNoRmFpbHVyZUtpbmQgZmFpbHVyZUtpbmQs
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggbWVzc2FnZSkKIHsKICAgICBkZWZlcnJlZC5yZWplY3RX
aXRoQ2FsbGJhY2soWyZdIChKU0RPTUdsb2JhbE9iamVjdCYganNHbG9iYWxPYmplY3QpIHsKICAg
ICAgICAgLy8gV2UgYW5ub3RhdGUgZXhjZXB0aW9uIHdpdGggc3BlY2lhbCBwcml2YXRlIHN5bWJv
bC4gSXQgYWxsb3dzIHVzIHRvIGRpc3Rpbmd1aXNoIHRoZXNlIGVycm9ycyBmcm9tIHRoZSB1c2Vy
IHRocm93biBvbmVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY29udGVudGV4dGVuc2lv
bnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvY29udGVudGV4
dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCmluZGV4IDBjYTYxYzEwMTRkMi4u
N2RmZWEwZDVkMDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jb250ZW50ZXh0ZW5zaW9u
cy9Db250ZW50RXh0ZW5zaW9uQWN0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY29udGVu
dGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvbkFjdGlvbnMuY3BwCkBAIC04Nyw3ICs4Nyw3IEBA
IHN0YXRpYyB2b2lkIHdyaXRlTGVuZ3RoVG9WZWN0b3JBdE9mZnNldChWZWN0b3I8dWludDhfdD4m
IHZlY3Rvciwgc2l6ZV90IG9mZnNldCkKIAogRXhwZWN0ZWQ8TW9kaWZ5SGVhZGVyc0FjdGlvbiwg
c3RkOjplcnJvcl9jb2RlPiBNb2RpZnlIZWFkZXJzQWN0aW9uOjpwYXJzZShjb25zdCBKU09OOjpP
YmplY3QmIG1vZGlmeUhlYWRlcnMpCiB7Ci0gICAgYXV0byBwYXJzZUhlYWRlcnMgPSBbXSAoY29u
c3QgSlNPTjo6T2JqZWN0JiBtb2RpZnlIZWFkZXJzLCBBU0NJSUxpdGVyYWwgYXJyYXlOYW1lKSAt
PiBFeHBlY3RlZDxWZWN0b3I8TW9kaWZ5SGVhZGVySW5mbz4sIHN0ZDo6ZXJyb3JfY29kZT4gewor
ICAgIGF1dG8gcGFyc2VIZWFkZXJzID0gW10gKGNvbnN0IEpTT046Ok9iamVjdCYgbW9kaWZ5SGVh
ZGVycywgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBhcnJheU5hbWUpIC0+IEV4cGVjdGVkPFZlY3Rv
cjxNb2RpZnlIZWFkZXJJbmZvPiwgc3RkOjplcnJvcl9jb2RlPiB7CiAgICAgICAgIGF1dG8gdmFs
dWUgPSBtb2RpZnlIZWFkZXJzLmdldFZhbHVlKGFycmF5TmFtZSk7CiAgICAgICAgIGlmICghdmFs
dWUpCiAgICAgICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Y29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9jb250ZW50ZXh0ZW5zaW9ucy9Db250ZW50RXh0ZW5zaW9uUGFyc2VyLmNwcAppbmRleCA1
MTNmZDkzOWU2NmQuLjRjNGU5NjQ2N2JmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY29u
dGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvY29udGVudGV4dGVuc2lvbnMvQ29udGVudEV4dGVuc2lvblBhcnNlci5jcHAKQEAgLTE2
Myw3ICsxNjMsNyBAQCBzdGF0aWMgRXhwZWN0ZWQ8VHJpZ2dlciwgc3RkOjplcnJvcl9jb2RlPiBs
b2FkVHJpZ2dlcihjb25zdCBKU09OOjpPYmplY3QmIHJ1bGVPYgogICAgICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKGVycm9yKTsKICAgICB9CiAKLSAgICBhdXRvIGNoZWNrQ29uZGl0aW9u
ID0gWyZdIChBU0NJSUxpdGVyYWwga2V5LCBFeHBlY3RlZDxWZWN0b3I8U3RyaW5nPiwgc3RkOjpl
cnJvcl9jb2RlPiAoKmxpc3RSZWFkZXIpKGNvbnN0IEpTT046OkFycmF5JiksIEFjdGlvbkNvbmRp
dGlvbiBhY3Rpb25Db25kaXRpb24pIC0+IHN0ZDo6ZXJyb3JfY29kZSB7CisgICAgYXV0byBjaGVj
a0NvbmRpdGlvbiA9IFsmXSAoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBrZXksIEV4cGVjdGVkPFZl
Y3RvcjxTdHJpbmc+LCBzdGQ6OmVycm9yX2NvZGU+ICgqbGlzdFJlYWRlcikoY29uc3QgSlNPTjo6
QXJyYXkmKSwgQWN0aW9uQ29uZGl0aW9uIGFjdGlvbkNvbmRpdGlvbikgLT4gc3RkOjplcnJvcl9j
b2RlIHsKICAgICAgICAgaWYgKGF1dG8gdmFsdWUgPSB0cmlnZ2VyT2JqZWN0LT5nZXRWYWx1ZShr
ZXkpKSB7CiAgICAgICAgICAgICBpZiAodHJpZ2dlci5mbGFncyAmIEFjdGlvbkNvbmRpdGlvbk1h
c2spCiAgICAgICAgICAgICAgICAgcmV0dXJuIENvbnRlbnRFeHRlbnNpb25FcnJvcjo6SlNPTk11
bHRpcGxlQ29uZGl0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlz
L0NyeXB0b0tleUVDLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2NyeXB0by9rZXlzL0NyeXB0b0tleUVD
LmNwcAppbmRleCBkMzZkMzQwZjcwYTguLmM3MTI0NmUzMTc0MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvY3J5cHRvL2tleXMvQ3J5cHRvS2V5RUMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2NyeXB0by9rZXlzL0NyeXB0b0tleUVDLmNwcApAQCAtMTUxLDEzICsxNTEsMTMgQEAgRXhjZXB0
aW9uT3I8SnNvbldlYktleT4gQ3J5cHRvS2V5RUM6OmV4cG9ydEp3aygpIGNvbnN0CiAgICAgcmVz
dWx0Lmt0eSA9ICJFQyI7CiAgICAgc3dpdGNoIChtX2N1cnZlKSB7CiAgICAgY2FzZSBOYW1lZEN1
cnZlOjpQMjU2OgotICAgICAgICByZXN1bHQuY3J2ID0gUDI1NjsKKyAgICAgICAgcmVzdWx0LmNy
diA9IFN0cmluZyB7IFAyNTYgfTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lZEN1cnZl
OjpQMzg0OgotICAgICAgICByZXN1bHQuY3J2ID0gUDM4NDsKKyAgICAgICAgcmVzdWx0LmNydiA9
IFN0cmluZyB7IFAzODQgfTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lZEN1cnZlOjpQ
NTIxOgotICAgICAgICByZXN1bHQuY3J2ID0gUDUyMTsKKyAgICAgICAgcmVzdWx0LmNydiA9IFN0
cmluZyB7IFA1MjEgfTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIHJlc3VsdC5rZXlfb3Bz
ID0gdXNhZ2VzKCk7CkBAIC0yMTYsMTMgKzIxNiwxMyBAQCBhdXRvIENyeXB0b0tleUVDOjphbGdv
cml0aG0oKSBjb25zdCAtPiBLZXlBbGdvcml0aG0KIAogICAgIHN3aXRjaCAobV9jdXJ2ZSkgewog
ICAgIGNhc2UgTmFtZWRDdXJ2ZTo6UDI1NjoKLSAgICAgICAgcmVzdWx0Lm5hbWVkQ3VydmUgPSBQ
MjU2OworICAgICAgICByZXN1bHQubmFtZWRDdXJ2ZSA9IFN0cmluZyB7IFAyNTYgfTsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBOYW1lZEN1cnZlOjpQMzg0OgotICAgICAgICByZXN1bHQubmFt
ZWRDdXJ2ZSA9IFAzODQ7CisgICAgICAgIHJlc3VsdC5uYW1lZEN1cnZlID0gU3RyaW5nIHsgUDM4
NCB9OwogICAgICAgICBicmVhazsKICAgICBjYXNlIE5hbWVkQ3VydmU6OlA1MjE6Ci0gICAgICAg
IHJlc3VsdC5uYW1lZEN1cnZlID0gUDUyMTsKKyAgICAgICAgcmVzdWx0Lm5hbWVkQ3VydmUgPSBT
dHJpbmcgeyBQNTIxIH07CiAgICAgICAgIGJyZWFrOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9N
RXhjZXB0aW9uLmNwcAppbmRleCAwMGFiNzQ5ZjNiOGIuLmVlNzQ5Y2M0MTU2OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RPTUV4Y2VwdGlvbi5jcHAKQEAgLTkzLDcgKzkzLDcgQEAgc3RhdGljIERPTUV4Y2Vw
dGlvbjo6TGVnYWN5Q29kZSBsZWdhY3lDb2RlRnJvbU5hbWUoY29uc3QgU3RyaW5nJiBuYW1lKQog
UmVmPERPTUV4Y2VwdGlvbj4gRE9NRXhjZXB0aW9uOjpjcmVhdGUoRXhjZXB0aW9uQ29kZSBlYywg
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogewogICAgIGF1dG8mIGRlc2NyaXB0aW9uID0gRE9NRXhj
ZXB0aW9uOjpkZXNjcmlwdGlvbihlYyk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRXhj
ZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIGRlc2NyaXB0aW9uLm5hbWUsICFtZXNzYWdl
LmlzRW1wdHkoKSA/IG1lc3NhZ2UgOiBkZXNjcmlwdGlvbi5tZXNzYWdlKSk7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgRE9NRXhjZXB0aW9uKGRlc2NyaXB0aW9uLmxlZ2FjeUNvZGUsIFN0cmlu
ZyB7IGRlc2NyaXB0aW9uLm5hbWUgfSwgIW1lc3NhZ2UuaXNFbXB0eSgpID8gbWVzc2FnZSA6IFN0
cmluZyB7IGRlc2NyaXB0aW9uLm1lc3NhZ2UgfSkpOwogfQogCiBSZWY8RE9NRXhjZXB0aW9uPiBE
T01FeGNlcHRpb246OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYg
bmFtZSkKQEAgLTEwNCw3ICsxMDQsNyBAQCBSZWY8RE9NRXhjZXB0aW9uPiBET01FeGNlcHRpb246
OmNyZWF0ZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIGNvbnN0IFN0cmluZyYgbmFtZQogUmVmPERP
TUV4Y2VwdGlvbj4gRE9NRXhjZXB0aW9uOjpjcmVhdGUoY29uc3QgRXhjZXB0aW9uJiBleGNlcHRp
b24pCiB7CiAgICAgYXV0byYgZGVzY3JpcHRpb24gPSBET01FeGNlcHRpb246OmRlc2NyaXB0aW9u
KGV4Y2VwdGlvbi5jb2RlKCkpOwotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTUV4Y2VwdGlv
bihkZXNjcmlwdGlvbi5sZWdhY3lDb2RlLCBkZXNjcmlwdGlvbi5uYW1lLCBleGNlcHRpb24ubWVz
c2FnZSgpLmlzRW1wdHkoKSA/IGRlc2NyaXB0aW9uLm1lc3NhZ2UgOiBleGNlcHRpb24ubWVzc2Fn
ZSgpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRE9NRXhjZXB0aW9uKGRlc2NyaXB0aW9u
LmxlZ2FjeUNvZGUsIFN0cmluZyB7IGRlc2NyaXB0aW9uLm5hbWUgfSwgZXhjZXB0aW9uLm1lc3Nh
Z2UoKS5pc0VtcHR5KCkgPyBTdHJpbmcgeyBkZXNjcmlwdGlvbi5tZXNzYWdlIH0gOiBleGNlcHRp
b24ubWVzc2FnZSgpKSk7CiB9CiAKIERPTUV4Y2VwdGlvbjo6RE9NRXhjZXB0aW9uKExlZ2FjeUNv
ZGUgbGVnYWN5Q29kZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKaW5kZXggMzNiNjJjM2E5YzJlLi4zMzA2
NGI1NDIzYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKQEAgLTMyMyw3ICsz
MjMsNyBAQCBib29sIFNjcmlwdEVsZW1lbnQ6OnJlcXVlc3RNb2R1bGVTY3JpcHQoY29uc3QgVGV4
dFBvc2l0aW9uJiBzY3JpcHRTdGFydFBvc2l0aW9uKQogICAgIFN0cmluZyBub25jZSA9IG1fZWxl
bWVudC5ub25jZSgpOwogICAgIFN0cmluZyBjcm9zc09yaWdpbk1vZGUgPSBtX2VsZW1lbnQuYXR0
cmlidXRlV2l0aG91dFN5bmNocm9uaXphdGlvbihIVE1MTmFtZXM6OmNyb3Nzb3JpZ2luQXR0cik7
CiAgICAgaWYgKGNyb3NzT3JpZ2luTW9kZS5pc051bGwoKSkKLSAgICAgICAgY3Jvc3NPcmlnaW5N
b2RlID0gU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6OmRlZmF1bHRDcm9zc09yaWdp
bk1vZGVGb3JNb2R1bGU7CisgICAgICAgIGNyb3NzT3JpZ2luTW9kZSA9IFN0cmluZyB7IFNjcmlw
dEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyOjpkZWZhdWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9k
dWxlIH07CiAKICAgICBpZiAoaGFzU291cmNlQXR0cmlidXRlKCkpIHsKICAgICAgICAgQVNTRVJU
KG1fZWxlbWVudC5pc0Nvbm5lY3RlZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXIuY3BwCmluZGV4IDEwNDNiNzM3MmZi
MS4uMzc0MDYzODM5MjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxl
bWVudENhY2hlZFNjcmlwdEZldGNoZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3Jp
cHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKQEAgLTM5LDcgKzM5LDcgQEAgQ2FjaGVk
UmVzb3VyY2VIYW5kbGU8Q2FjaGVkU2NyaXB0PiBTY3JpcHRFbGVtZW50Q2FjaGVkU2NyaXB0RmV0
Y2hlcjo6cmVxdWVzdE1vZHUKICAgICAvLyBJZiB0aGUgZmV0Y2hlciBpcyBub3QgbW9kdWxlIHNj
cmlwdCwgY3JlZGVudGlhbCBtb2RlIGlzIGFsd2F5cyAic2FtZS1vcmlnaW4iICgiYW5vbnltb3Vz
IikuCiAgICAgLy8gVGhpcyBjb2RlIGlzIGZvciBkeW5hbWljIG1vZHVsZSBpbXBvcnQgKGBpbXBv
cnRgIG9wZXJhdG9yKS4KIAotICAgIHJldHVybiByZXF1ZXN0U2NyaXB0V2l0aENhY2hlKGRvY3Vt
ZW50LCBzb3VyY2VVUkwsIGlzQ2xhc3NpY1NjcmlwdCgpID8gZGVmYXVsdENyb3NzT3JpZ2luTW9k
ZUZvck1vZHVsZSA6IG1fY3Jvc3NPcmlnaW5Nb2RlLCBXVEZNb3ZlKGludGVncml0eSksIHsgfSk7
CisgICAgcmV0dXJuIHJlcXVlc3RTY3JpcHRXaXRoQ2FjaGUoZG9jdW1lbnQsIHNvdXJjZVVSTCwg
aXNDbGFzc2ljU2NyaXB0KCkgPyBBdG9tU3RyaW5nIHsgZGVmYXVsdENyb3NzT3JpZ2luTW9kZUZv
ck1vZHVsZSB9IDogbV9jcm9zc09yaWdpbk1vZGUsIFdURk1vdmUoaW50ZWdyaXR5KSwgeyB9KTsK
IH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggNjFh
MWVhNmI5NzU3Li4yZGM2OWM5MjZkOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JD
b21tYW5kLmNwcApAQCAtMTgyOCw4ICsxODI4LDkgQEAgc3RhdGljIGNvbnN0IENvbW1hbmRNYXAm
IGNyZWF0ZUNvbW1hbmRNYXAoKQogICAgIENvbW1hbmRNYXAmIGNvbW1hbmRNYXAgPSAqbmV3IENv
bW1hbmRNYXA7CiAKICAgICBmb3IgKGF1dG8mIGNvbW1hbmQgOiBjb21tYW5kcykgewotICAgICAg
ICBBU1NFUlQoIWNvbW1hbmRNYXAuZ2V0KGNvbW1hbmQubmFtZSkpOwotICAgICAgICBjb21tYW5k
TWFwLnNldChjb21tYW5kLm5hbWUsICZjb21tYW5kLmNvbW1hbmQpOworICAgICAgICBTdHJpbmcg
Y29tbWFuZE5hbWUgeyBjb21tYW5kLm5hbWUgfTsKKyAgICAgICAgQVNTRVJUKCFjb21tYW5kTWFw
LmdldChjb21tYW5kTmFtZSkpOworICAgICAgICBjb21tYW5kTWFwLnNldChjb21tYW5kTmFtZSwg
JmNvbW1hbmQuY29tbWFuZCk7CiAgICAgfQogCiAgICAgcmV0dXJuIGNvbW1hbmRNYXA7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQyREJhc2UuY3BwCmluZGV4IDBlNzgwNjNlM2E0MS4uOWYwMDNlZjg0MzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkRCYXNlLmNwcApAQCAtMjk1LDcgKzI5NSw3IEBAIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2U6OlN0YXRlOjpTdGF0ZSgpCiBTdHJpbmcgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
QmFzZTo6U3RhdGU6OmZvbnRTdHJpbmcoKSBjb25zdAogewogICAgIGlmICghZm9udC5yZWFsaXpl
ZCgpKQotICAgICAgICByZXR1cm4gRGVmYXVsdEZvbnQ7CisgICAgICAgIHJldHVybiBTdHJpbmcg
eyBEZWZhdWx0Rm9udCB9OwogCiAgICAgU3RyaW5nQnVpbGRlciBzZXJpYWxpemVkRm9udDsKICAg
ICBjb25zdCBhdXRvJiBmb250ID0gdGhpcy0+Zm9udC5mb250RGVzY3JpcHRpb24oKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3Bw
CmluZGV4IGE1MTMwMDIxNjFiOS4uOTBlYTgyZThkZjU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUmVzb3VyY2VQcmVsb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxSZXNvdXJjZVByZWxvYWRlci5jcHAKQEAgLTU5LDcgKzU5
LDcgQEAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IFByZWxvYWRSZXF1ZXN0OjpyZXNvdXJjZVJlcXVl
c3QoRG9jdW1lbnQmIGRvY3VtZW50KQogICAgIFN0cmluZyBjcm9zc09yaWdpbk1vZGUgPSBtX2Ny
b3NzT3JpZ2luTW9kZTsKICAgICBpZiAobV9tb2R1bGVTY3JpcHQgPT0gTW9kdWxlU2NyaXB0OjpZ
ZXMpIHsKICAgICAgICAgaWYgKGNyb3NzT3JpZ2luTW9kZS5pc051bGwoKSkKLSAgICAgICAgICAg
IGNyb3NzT3JpZ2luTW9kZSA9IFNjcmlwdEVsZW1lbnRDYWNoZWRTY3JpcHRGZXRjaGVyOjpkZWZh
dWx0Q3Jvc3NPcmlnaW5Nb2RlRm9yTW9kdWxlOworICAgICAgICAgICAgY3Jvc3NPcmlnaW5Nb2Rl
ID0gU3RyaW5nIHsgU2NyaXB0RWxlbWVudENhY2hlZFNjcmlwdEZldGNoZXI6OmRlZmF1bHRDcm9z
c09yaWdpbk1vZGVGb3JNb2R1bGUgfTsKICAgICB9CiAgICAgaWYgKG1fcmVzb3VyY2VUeXBlID09
IENhY2hlZFJlc291cmNlOjpUeXBlOjpTY3JpcHQgfHwgbV9yZXNvdXJjZVR5cGUgPT0gQ2FjaGVk
UmVzb3VyY2U6OlR5cGU6OkltYWdlUmVzb3VyY2UpCiAgICAgICAgIG9wdGlvbnMucmVmZXJyZXJQ
b2xpY3kgPSBtX3JlZmVycmVyUG9saWN5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9UZXh0VHJhY2tDdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9UZXh0
VHJhY2tDdWUuY3BwCmluZGV4IDE5ZmM4NWNkODk3YS4uZmE0M2FhMzg5ZDhkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL1RleHRUcmFja0N1ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9UZXh0VHJhY2tDdWUuY3BwCkBAIC0zOTEsNyArMzkxLDcgQEAg
Ym9vbCBUZXh0VHJhY2tDdWU6Omhhc0VxdWl2YWxlbnRTdGFydFRpbWUoY29uc3QgVGV4dFRyYWNr
Q3VlJiBjdWUpIGNvbnN0CiAKIHZvaWQgVGV4dFRyYWNrQ3VlOjp0b0pTT04oSlNPTjo6T2JqZWN0
JiB2YWx1ZSkgY29uc3QKIHsKLSAgICBBU0NJSUxpdGVyYWwgdHlwZSA9ICJHZW5lcmljIl9zOwor
ICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdHlwZSA9ICJHZW5lcmljIl9zOwogICAgIHN3aXRj
aCAoY3VlVHlwZSgpKSB7CiAgICAgY2FzZSBUZXh0VHJhY2tDdWU6OkNvbnZlcnRlZFRvV2ViVlRU
OgogICAgICAgICB0eXBlID0gIkNvbnZlcnRlZFRvV2ViVlRUIl9zOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCA4Mzg5MDhkYzkzNmUuLmRhYzYxNzRkYjMzMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKQEAgLTQzNyw3ICs0MzcsNyBAQCBz
dGF0aWMgYm9vbCBwb3B1bGF0ZUVycm9yU3RyaW5nKEV4Y2VwdGlvbk9yPHZvaWQ+JiYgcmVzdWx0
LCBFcnJvclN0cmluZyYgZXJyb3JTdAogewogICAgIGlmICghcmVzdWx0Lmhhc0V4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICBlcnJvclN0cmluZyA9IERPTUV4Y2VwdGlvbjo6
bmFtZShyZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpLmNvZGUoKSk7CisgICAgZXJyb3JTdHJpbmcg
PSBTdHJpbmcgeyBET01FeGNlcHRpb246Om5hbWUocmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKS5j
b2RlKCkpIH07CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGJiY2M3OWFiYzM4Ni4uY2UyMzRlMjU1OGRl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcApAQCAt
MTMzMiw3ICsxMzMyLDcgQEAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0
b3JDYW52YXM6OmJ1aWxkQWN0aW9uKFN0cmluZyYmIG5hbWUsIEluc3AKIAogUmVmPEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQXJyYXlGb3JDYW52YXNH
cmFkaWVudChjb25zdCBDYW52YXNHcmFkaWVudCYgY2FudmFzR3JhZGllbnQpCiB7Ci0gICAgQVND
SUlMaXRlcmFsIHR5cGUgPSAibGluZWFyLWdyYWRpZW50Il9zOworICAgIEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGggdHlwZSA9ICJsaW5lYXItZ3JhZGllbnQiX3M7CiAgICAgYXV0byBwYXJhbWV0ZXJz
ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKICAgICBXVEY6OnN3aXRjaE9uKGNh
bnZhc0dyYWRpZW50LmdyYWRpZW50KCkuZGF0YSgpLAogICAgICAgICBbJl0gKGNvbnN0IEdyYWRp
ZW50OjpMaW5lYXJEYXRhJiBkYXRhKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKaW5kZXggYTBiMjMyMTBiMjM4Li5iMmMxODQxMzIyMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5j
cHAKQEAgLTcxMywxMSArNzEzLDExIEBAIFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5z
cGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdAogICAgICAgICAgICAgICAg
IEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8UHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk+Pjo6aXRl
cmF0b3IgYWN0aXZlSXQgPSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZmlu
ZChjYW5vbmljYWxQcm9wZXJ0eU5hbWUpOwogICAgICAgICAgICAgICAgIGlmIChhY3RpdmVJdCAh
PSBwcm9wZXJ0eU5hbWVUb1ByZXZpb3VzQWN0aXZlUHJvcGVydHkuZW5kKCkpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKHByb3BlcnR5RW50cnkucGFyc2VkT2spIHsKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbmV3UHJpb3JpdHkgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhQ
cm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6cHJpb3JpdHlLZXkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYXV0byBuZXdQcmlvcml0eSA9IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0U3RyaW5nKFN0
cmluZyB7IFByb3RvY29sOjpDU1M6OkNTU1Byb3BlcnR5Ojpwcmlvcml0eUtleSB9KTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmICghIW5ld1ByaW9yaXR5KQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByZXZpb3VzUHJpb3JpdHkgPSBuZXdQcmlvcml0eTsKIAotICAgICAgICAgICAg
ICAgICAgICAgICAgYXV0byBuZXdTdGF0dXMgPSBhY3RpdmVJdC0+dmFsdWUtPmdldFN0cmluZyhQ
cm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6c3RhdHVzS2V5KTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGF1dG8gbmV3U3RhdHVzID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRTdHJpbmcoU3RyaW5n
IHsgUHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHk6OnN0YXR1c0tleSB9KTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmICghIW5ld1N0YXR1cykgewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByZXZpb3VzU3RhdHVzID0gbmV3U3RhdHVzOwogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChwcmV2aW91c1N0YXR1cyAhPSBQcm90b2NvbDo6SGVscGVyczo6Z2V0RW51bUNvbnN0
YW50VmFsdWUoUHJvdG9jb2w6OkNTUzo6Q1NTUHJvcGVydHlTdGF0dXM6OkluYWN0aXZlKSkgewpA
QCAtNzMwLDcgKzczMCw3IEBAIFJlZjxQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9y
U3R5bGU6OnN0eWxlV2l0aFByb3BlcnRpZXMoKSBjb25zdAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGF1dG8gcHJldmlvdXNQYXJzZWRPayA9
IGFjdGl2ZUl0LT52YWx1ZS0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eTo6
cGFyc2VkT2tLZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgYXV0byBwcmV2aW91c1BhcnNl
ZE9rID0gYWN0aXZlSXQtPnZhbHVlLT5nZXRCb29sZWFuKFN0cmluZyB7IFByb3RvY29sOjpDU1M6
OkNTU1Byb3BlcnR5OjpwYXJzZWRPa0tleSB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IChwcmV2aW91c1BhcnNlZE9rICYmICFwcmV2aW91c1BhcnNlZE9rKQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNob3VsZEluYWN0aXZhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCmluZGV4IDBlMTg2YmNlYTcwMS4uYzY3OGNhNTJhNjE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNw
cApAQCAtMTM5LDEzICsxMzksMTMgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29sb3I+IHBhcnNl
Q29sb3IoUmVmUHRyPEpTT046Ok9iamVjdD4mJiBjb2xvck9iamVjdCkKICAgICBpZiAoIWNvbG9y
T2JqZWN0KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byByID0gY29s
b3JPYmplY3QtPmdldEludGVnZXIoUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpyS2V5KTsKLSAg
ICBhdXRvIGcgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihQcm90b2NvbDo6RE9NOjpSR0JBQ29s
b3I6OmdLZXkpOwotICAgIGF1dG8gYiA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFByb3RvY29s
OjpET006OlJHQkFDb2xvcjo6YktleSk7CisgICAgYXV0byByID0gY29sb3JPYmplY3QtPmdldElu
dGVnZXIoU3RyaW5nIHsgUHJvdG9jb2w6OkRPTTo6UkdCQUNvbG9yOjpyS2V5IH0pOworICAgIGF1
dG8gZyA9IGNvbG9yT2JqZWN0LT5nZXRJbnRlZ2VyKFN0cmluZyB7IFByb3RvY29sOjpET006OlJH
QkFDb2xvcjo6Z0tleSB9KTsKKyAgICBhdXRvIGIgPSBjb2xvck9iamVjdC0+Z2V0SW50ZWdlcihT
dHJpbmcgeyBQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OmJLZXkgfSk7CiAgICAgaWYgKCFyIHx8
ICFnIHx8ICFiKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgYXV0byBhID0g
Y29sb3JPYmplY3QtPmdldERvdWJsZShQcm90b2NvbDo6RE9NOjpSR0JBQ29sb3I6OmFLZXkpOwor
ICAgIGF1dG8gYSA9IGNvbG9yT2JqZWN0LT5nZXREb3VibGUoU3RyaW5nIHsgUHJvdG9jb2w6OkRP
TTo6UkdCQUNvbG9yOjphS2V5IH0pOwogICAgIGlmICghYSkKICAgICAgICAgcmV0dXJuIHsgbWFr
ZUZyb21Db21wb25lbnRzQ2xhbXBpbmc8U1JHQkE8dWludDhfdD4+KCpyLCAqZywgKmIpIH07CiAg
ICAgcmV0dXJuIHsgbWFrZUZyb21Db21wb25lbnRzQ2xhbXBpbmdFeGNlcHRBbHBoYTxTUkdCQTx1
aW50OF90Pj4oKnIsICpnLCAqYiwgY29udmVydEZsb2F0QWxwaGFUbzx1aW50OF90PigqYSkpIH07
CkBAIC0yODEsNyArMjgxLDcgQEAgU3RyaW5nIEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3Ry
aW5nKEV4Y2VwdGlvbkNvZGUgZWMpCiAKIFN0cmluZyBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJv
clN0cmluZyhFeGNlcHRpb24mJiBleGNlcHRpb24pCiB7Ci0gICAgcmV0dXJuIERPTUV4Y2VwdGlv
bjo6bmFtZShleGNlcHRpb24uY29kZSgpKTsKKyAgICByZXR1cm4gU3RyaW5nIHsgRE9NRXhjZXB0
aW9uOjpuYW1lKGV4Y2VwdGlvbi5jb2RlKCkpIH07CiB9CiAKIEluc3BlY3RvckRPTUFnZW50OjpJ
bnNwZWN0b3JET01BZ2VudChQYWdlQWdlbnRDb250ZXh0JiBjb250ZXh0LCBJbnNwZWN0b3JPdmVy
bGF5KiBvdmVybGF5KQpAQCAtMTI4MiwxMSArMTI4MiwxMSBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yT3ZlcmxheTo6SGlnaGxpZ2h0OjpDb25maWc+IEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaAogICAgIH0KIAogICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gbWFrZVVuaXF1ZTxJbnNw
ZWN0b3JPdmVybGF5OjpIaWdobGlnaHQ6OkNvbmZpZz4oKTsKLSAgICBoaWdobGlnaHRDb25maWct
PnNob3dJbmZvID0gaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LT5nZXRCb29sZWFuKFByb3RvY29s
OjpET006OkhpZ2hsaWdodENvbmZpZzo6c2hvd0luZm9LZXkpLnZhbHVlX29yKGZhbHNlKTsKLSAg
ICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbmZpZ0NvbG9yKFByb3RvY29sOjpE
T006OkhpZ2hsaWdodENvbmZpZzo6Y29udGVudENvbG9yS2V5LCAqaGlnaGxpZ2h0SW5zcGVjdG9y
T2JqZWN0KTsKLSAgICBoaWdobGlnaHRDb25maWctPnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0NvbG9y
KFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6cGFkZGluZ0NvbG9yS2V5LCAqaGlnaGxp
Z2h0SW5zcGVjdG9yT2JqZWN0KTsKLSAgICBoaWdobGlnaHRDb25maWctPmJvcmRlciA9IHBhcnNl
Q29uZmlnQ29sb3IoUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpib3JkZXJDb2xvcktl
eSwgKmhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7Ci0gICAgaGlnaGxpZ2h0Q29uZmlnLT5tYXJn
aW4gPSBwYXJzZUNvbmZpZ0NvbG9yKFByb3RvY29sOjpET006OkhpZ2hsaWdodENvbmZpZzo6bWFy
Z2luQ29sb3JLZXksICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hsaWdodENv
bmZpZy0+c2hvd0luZm8gPSBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xlYW4oU3Ry
aW5nIHsgUHJvdG9jb2w6OkRPTTo6SGlnaGxpZ2h0Q29uZmlnOjpzaG93SW5mb0tleSB9KS52YWx1
ZV9vcihmYWxzZSk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb25maWdD
b2xvcihTdHJpbmcgeyBQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OmNvbnRlbnRDb2xv
cktleSB9LCAqaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICBoaWdobGlnaHRDb25maWct
PnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0NvbG9yKFN0cmluZyB7IFByb3RvY29sOjpET006OkhpZ2hs
aWdodENvbmZpZzo6cGFkZGluZ0NvbG9yS2V5IH0sICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3Qp
OworICAgIGhpZ2hsaWdodENvbmZpZy0+Ym9yZGVyID0gcGFyc2VDb25maWdDb2xvcihTdHJpbmcg
eyBQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6OmJvcmRlckNvbG9yS2V5IH0sICpoaWdo
bGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIGhpZ2hsaWdodENvbmZpZy0+bWFyZ2luID0gcGFy
c2VDb25maWdDb2xvcihTdHJpbmcgeyBQcm90b2NvbDo6RE9NOjpIaWdobGlnaHRDb25maWc6Om1h
cmdpbkNvbG9yS2V5IH0sICpoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwogICAgIHJldHVybiBo
aWdobGlnaHRDb25maWc7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAppbmRleCAxM2ZjMGI4
MWVmODcuLmE4ZWQ1MzExMWQxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMTI3LDcg
KzEyNyw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckRPTVN0b3Jh
Z2VBZ2VudDo6c2V0RE9NU3RvcmFnZUl0ZW0oUmVmPEpTCiAgICAgYm9vbCBxdW90YUV4Y2VwdGlv
biA9IGZhbHNlOwogICAgIHN0b3JhZ2VBcmVhLT5zZXRJdGVtKCpmcmFtZSwga2V5LCB2YWx1ZSwg
cXVvdGFFeGNlcHRpb24pOwogICAgIGlmIChxdW90YUV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKERPTUV4Y2VwdGlvbjo6bmFtZShRdW90YUV4Y2VlZGVkRXJyb3IpKTsK
KyAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKFN0cmluZyB7IERPTUV4Y2VwdGlvbjo6bmFt
ZShRdW90YUV4Y2VlZGVkRXJyb3IpIH0pOwogCiAgICAgcmV0dXJuIHsgfTsKIH0KQEAgLTE5NSwx
MyArMTk1LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaWREaXNwYXRjaERP
TVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uCiAKIFJlZlB0cjxTdG9yYWdlQXJl
YT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEoUHJvdG9jb2w6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmPEpTT046Ok9iamVjdD4mJiBzdG9yYWdlSWQsIEZy
YW1lKiYgdGFyZ2V0RnJhbWUpCiB7Ci0gICAgYXV0byBzZWN1cml0eU9yaWdpbiA9IHN0b3JhZ2VJ
ZC0+Z2V0U3RyaW5nKFByb3RvY29sOjpET01TdG9yYWdlOjpTdG9yYWdlSWQ6OnNlY3VyaXR5T3Jp
Z2luS2V5KTsKKyAgICBhdXRvIHNlY3VyaXR5T3JpZ2luID0gc3RvcmFnZUlkLT5nZXRTdHJpbmco
U3RyaW5nIHsgUHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6c2VjdXJpdHlPcmlnaW5L
ZXkgfSk7CiAgICAgaWYgKCFzZWN1cml0eU9yaWdpbikgewogICAgICAgICBlcnJvclN0cmluZyA9
ICJNaXNzaW5nIHNlY3VyaXR5T3JpZ2luIGluIGdpdmVuIHN0b3JhZ2VJZCI7CiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGF1dG8gaXNMb2NhbFN0b3JhZ2UgPSBzdG9yYWdl
SWQtPmdldEJvb2xlYW4oUHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6aXNMb2NhbFN0
b3JhZ2VLZXkpOworICAgIGF1dG8gaXNMb2NhbFN0b3JhZ2UgPSBzdG9yYWdlSWQtPmdldEJvb2xl
YW4oU3RyaW5nIHsgUHJvdG9jb2w6OkRPTVN0b3JhZ2U6OlN0b3JhZ2VJZDo6aXNMb2NhbFN0b3Jh
Z2VLZXkgfSk7CiAgICAgaWYgKCFpc0xvY2FsU3RvcmFnZSkgewogICAgICAgICBlcnJvclN0cmlu
ZyA9ICJNaXNzaW5nIGlzTG9jYWxTdG9yYWdlIGluIGdpdmVuIHN0b3JhZ2VJZCI7CiAgICAgICAg
IHJldHVybiBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA1ZDUxMmU3OGUyMDAu
LjFjMTM1MWFiOGU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAKQEAgLTI1NSw3ICsyNTUsNyBA
QCBwcml2YXRlOgogCiBzdGF0aWMgUmVmUHRyPElEQktleT4gaWRiS2V5RnJvbUluc3BlY3Rvck9i
amVjdChSZWY8SlNPTjo6T2JqZWN0PiYmIGtleSkKIHsKLSAgICBhdXRvIHR5cGVTdHJpbmcgPSBr
ZXktPmdldFN0cmluZyhQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OnR5cGVLZXkpOworICAgIGF1
dG8gdHlwZVN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVk
REI6OktleTo6dHlwZUtleSB9KTsKICAgICBpZiAoIXR5cGVTdHJpbmcpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwogCkBAIC0yNjUsMjggKzI2NSwyOCBAQCBzdGF0aWMgUmVmUHRyPElEQktleT4g
aWRiS2V5RnJvbUluc3BlY3Rvck9iamVjdChSZWY8SlNPTjo6T2JqZWN0PiYmIGtleSkKIAogICAg
IHN3aXRjaCAoKnR5cGUpIHsKICAgICBjYXNlIFByb3RvY29sOjpJbmRleGVkREI6OktleTo6VHlw
ZTo6TnVtYmVyOiB7Ci0gICAgICAgIGF1dG8gbnVtYmVyID0ga2V5LT5nZXREb3VibGUoUHJvdG9j
b2w6OkluZGV4ZWREQjo6S2V5OjpudW1iZXJLZXkpOworICAgICAgICBhdXRvIG51bWJlciA9IGtl
eS0+Z2V0RG91YmxlKFN0cmluZyB7IFByb3RvY29sOjpJbmRleGVkREI6OktleTo6bnVtYmVyS2V5
IH0pOwogICAgICAgICBpZiAoIW51bWJlcikKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgICAgICByZXR1cm4gSURCS2V5OjpjcmVhdGVOdW1iZXIoKm51bWJlcik7CiAgICAgfQogCiAg
ICAgY2FzZSBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OlR5cGU6OlN0cmluZzogewotICAgICAg
ICBhdXRvIHN0cmluZyA9IGtleS0+Z2V0U3RyaW5nKFByb3RvY29sOjpJbmRleGVkREI6OktleTo6
c3RyaW5nS2V5KTsKKyAgICAgICAgYXV0byBzdHJpbmcgPSBrZXktPmdldFN0cmluZyhTdHJpbmcg
eyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OnN0cmluZ0tleSB9KTsKICAgICAgICAgaWYgKCFz
dHJpbmcpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIElEQktl
eTo6Y3JlYXRlU3RyaW5nKHN0cmluZyk7CiAgICAgfQogCiAgICAgY2FzZSBQcm90b2NvbDo6SW5k
ZXhlZERCOjpLZXk6OlR5cGU6OkRhdGU6IHsKLSAgICAgICAgYXV0byBkYXRlID0ga2V5LT5nZXRE
b3VibGUoUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5OjpkYXRlS2V5KTsKKyAgICAgICAgYXV0byBk
YXRlID0ga2V5LT5nZXREb3VibGUoU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5Ojpk
YXRlS2V5IH0pOwogICAgICAgICBpZiAoIWRhdGUpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0
cjsKICAgICAgICAgcmV0dXJuIElEQktleTo6Y3JlYXRlRGF0ZSgqZGF0ZSk7CiAgICAgfQogCiAg
ICAgY2FzZSBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXk6OlR5cGU6OkFycmF5OiB7Ci0gICAgICAg
IGF1dG8gYXJyYXkgPSBrZXktPmdldEFycmF5KFByb3RvY29sOjpJbmRleGVkREI6OktleTo6YXJy
YXlLZXkpOworICAgICAgICBhdXRvIGFycmF5ID0ga2V5LT5nZXRBcnJheShTdHJpbmcgeyBQcm90
b2NvbDo6SW5kZXhlZERCOjpLZXk6OmFycmF5S2V5IH0pOwogICAgICAgICBpZiAoIWFycmF5KQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTMwOCwyNCArMzA4LDI0IEBAIHN0YXRp
YyBSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5zcGVjdG9yT2JqZWN0KFJlZjxKU09OOjpPYmpl
Y3Q+JiYga2V5KQogc3RhdGljIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5
UmFuZ2UoSlNPTjo6T2JqZWN0JiBrZXlSYW5nZSkKIHsKICAgICBSZWZQdHI8SURCS2V5PiBpZGJM
b3dlcjsKLSAgICBpZiAoYXV0byBsb3dlciA9IGtleVJhbmdlLmdldE9iamVjdChQcm90b2NvbDo6
SW5kZXhlZERCOjpLZXlSYW5nZTo6bG93ZXJLZXkpKSB7CisgICAgaWYgKGF1dG8gbG93ZXIgPSBr
ZXlSYW5nZS5nZXRPYmplY3QoU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFuZ2U6
Omxvd2VyS2V5IH0pKSB7CiAgICAgICAgIGlkYkxvd2VyID0gaWRiS2V5RnJvbUluc3BlY3Rvck9i
amVjdChsb3dlci5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgaWYgKCFpZGJMb3dlcikKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAogICAgIFJlZlB0cjxJREJLZXk+IGlk
YlVwcGVyOwotICAgIGlmIChhdXRvIHVwcGVyID0ga2V5UmFuZ2UuZ2V0T2JqZWN0KFByb3RvY29s
OjpJbmRleGVkREI6OktleVJhbmdlOjp1cHBlcktleSkpIHsKKyAgICBpZiAoYXV0byB1cHBlciA9
IGtleVJhbmdlLmdldE9iamVjdChTdHJpbmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5n
ZTo6dXBwZXJLZXkgfSkpIHsKICAgICAgICAgaWRiVXBwZXIgPSBpZGJLZXlGcm9tSW5zcGVjdG9y
T2JqZWN0KHVwcGVyLnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICBpZiAoIWlkYlVwcGVyKQog
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgYXV0byBsb3dlck9wZW4g
PSBrZXlSYW5nZS5nZXRCb29sZWFuKFByb3RvY29sOjpJbmRleGVkREI6OktleVJhbmdlOjpsb3dl
ck9wZW5LZXkpOworICAgIGF1dG8gbG93ZXJPcGVuID0ga2V5UmFuZ2UuZ2V0Qm9vbGVhbihTdHJp
bmcgeyBQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5nZTo6bG93ZXJPcGVuS2V5IH0pOwogICAg
IGlmICghbG93ZXJPcGVuKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGF1dG8gdXBw
ZXJPcGVuID0ga2V5UmFuZ2UuZ2V0Qm9vbGVhbihQcm90b2NvbDo6SW5kZXhlZERCOjpLZXlSYW5n
ZTo6dXBwZXJPcGVuS2V5KTsKKyAgICBhdXRvIHVwcGVyT3BlbiA9IGtleVJhbmdlLmdldEJvb2xl
YW4oU3RyaW5nIHsgUHJvdG9jb2w6OkluZGV4ZWREQjo6S2V5UmFuZ2U6OnVwcGVyT3BlbktleSB9
KTsKICAgICBpZiAoIXVwcGVyT3BlbikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29y
a0FnZW50LmNwcAppbmRleCA2ZTVhNWZjODljY2UuLjdkNDEzMGViNGZmNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JOZXR3b3JrQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yTmV0d29ya0Fn
ZW50LmNwcApAQCAtNTI4LDcgKzUyOCw3IEBAIHZvaWQgSW5zcGVjdG9yTmV0d29ya0FnZW50Ojpk
aWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VMb2FkZXJJZGVudGlmaWVyIGlkZW50aWZpCiAgICAg
aWYgKGNhY2hlZFJlc291cmNlKSB7CiAgICAgICAgIC8vIFVzZSBtaW1lIHR5cGUgZnJvbSBjYWNo
ZWQgcmVzb3VyY2UgaW4gY2FzZSB0aGUgb25lIGluIHJlc3BvbnNlIGlzIGVtcHR5LgogICAgICAg
ICBpZiAocmVzb3VyY2VSZXNwb25zZSAmJiByZXNwb25zZS5taW1lVHlwZSgpLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZyhQcm90b2NvbDo6TmV0d29y
azo6UmVzcG9uc2U6Om1pbWVUeXBlS2V5LCBjYWNoZWRSZXNvdXJjZS0+cmVzcG9uc2UoKS5taW1l
VHlwZSgpKTsKKyAgICAgICAgICAgIHJlc291cmNlUmVzcG9uc2UtPnNldFN0cmluZyhTdHJpbmcg
eyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6Om1pbWVUeXBlS2V5IH0sIGNhY2hlZFJlc291
cmNlLT5yZXNwb25zZSgpLm1pbWVUeXBlKCkpOwogICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFk
ZENhY2hlZFJlc291cmNlKHJlcXVlc3RJZCwgY2FjaGVkUmVzb3VyY2UpOwogICAgIH0KIApAQCAt
NTUxLDEyICs1NTEsMTIgQEAgdm9pZCBJbnNwZWN0b3JOZXR3b3JrQWdlbnQ6OmRpZFJlY2VpdmVS
ZXNwb25zZShSZXNvdXJjZUxvYWRlcklkZW50aWZpZXIgaWRlbnRpZmkKICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICAgICAgcmVzb3VyY2VS
ZXNwb25zZS0+c2V0U3RyaW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6bWltZVR5cGVL
ZXksIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5taW1lVHlwZSgpKTsKKyAgICAgICAgICAgIHJlc291
cmNlUmVzcG9uc2UtPnNldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9u
c2U6Om1pbWVUeXBlS2V5IH0sIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5taW1lVHlwZSgpKTsKICAg
ICAgICAgICAgIAotICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0SW50ZWdlcihQcm90
b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OnN0YXR1c0tleSwgcHJldmlvdXNSZXNvdXJjZURhdGEt
Pmh0dHBTdGF0dXNDb2RlKCkpOwotICAgICAgICAgICAgcmVzb3VyY2VSZXNwb25zZS0+c2V0U3Ry
aW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c3RhdHVzVGV4dEtleSwgcHJldmlvdXNS
ZXNvdXJjZURhdGEtPmh0dHBTdGF0dXNUZXh0KCkpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNw
b25zZS0+c2V0SW50ZWdlcihTdHJpbmcgeyBQcm90b2NvbDo6TmV0d29yazo6UmVzcG9uc2U6OnN0
YXR1c0tleSB9LCBwcmV2aW91c1Jlc291cmNlRGF0YS0+aHR0cFN0YXR1c0NvZGUoKSk7CisgICAg
ICAgICAgICByZXNvdXJjZVJlc3BvbnNlLT5zZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6Ok5l
dHdvcms6OlJlc3BvbnNlOjpzdGF0dXNUZXh0S2V5IH0sIHByZXZpb3VzUmVzb3VyY2VEYXRhLT5o
dHRwU3RhdHVzVGV4dCgpKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgcmVzb3VyY2VSZXNw
b25zZS0+c2V0U3RyaW5nKFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c291cmNlS2V5LCBQ
cm90b2NvbDo6SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6Ok5ldHdvcms6
OlJlc3BvbnNlOjpTb3VyY2U6OkRpc2tDYWNoZSkpOworICAgICAgICAgICAgcmVzb3VyY2VSZXNw
b25zZS0+c2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpOZXR3b3JrOjpSZXNwb25zZTo6c291
cmNlS2V5IH0sIFByb3RvY29sOjpIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2Nv
bDo6TmV0d29yazo6UmVzcG9uc2U6OlNvdXJjZTo6RGlza0NhY2hlKSk7CiAgICAgICAgIH0KICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yUGFnZUFnZW50LmNwcAppbmRleCBkMWIyNjlmOGZhN2QuLjZkYjUyYjdhZmNmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JQYWdlQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUGFnZUFn
ZW50LmNwcApAQCAtNTY4LDMxICs1NjgsMzEgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8Q29va2ll
PiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KIHsK
ICAgICBDb29raWUgY29va2llOwogCi0gICAgY29va2llLm5hbWUgPSBjb29raWVPYmplY3QtPmdl
dFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpuYW1lS2V5KTsKKyAgICBjb29raWUubmFt
ZSA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29r
aWU6Om5hbWVLZXkgfSk7CiAgICAgaWYgKCFjb29raWUubmFtZSkgewogICAgICAgICBlcnJvclN0
cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgbmFtZSBpbiBnaXZlbiBjb29raWUiOwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGNvb2tpZS52YWx1ZSA9IGNv
b2tpZU9iamVjdC0+Z2V0U3RyaW5nKFByb3RvY29sOjpQYWdlOjpDb29raWU6OnZhbHVlS2V5KTsK
KyAgICBjb29raWUudmFsdWUgPSBjb29raWVPYmplY3QtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90
b2NvbDo6UGFnZTo6Q29va2llOjp2YWx1ZUtleSB9KTsKICAgICBpZiAoIWNvb2tpZS52YWx1ZSkg
ewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgdmFsdWUgaW4g
Z2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICB9CiAKLSAg
ICBjb29raWUuZG9tYWluID0gY29va2llT2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6OlBhZ2U6
OkNvb2tpZTo6ZG9tYWluS2V5KTsKKyAgICBjb29raWUuZG9tYWluID0gY29va2llT2JqZWN0LT5n
ZXRTdHJpbmcoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6ZG9tYWluS2V5IH0pOwog
ICAgIGlmICghY29va2llLmRvbWFpbikgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlk
IHZhbHVlIGZvciBrZXkgZG9tYWluIGluIGdpdmVuIGNvb2tpZSI7CiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAgICAgfQogCi0gICAgY29va2llLnBhdGggPSBjb29raWVPYmplY3QtPmdl
dFN0cmluZyhQcm90b2NvbDo6UGFnZTo6Q29va2llOjpwYXRoS2V5KTsKKyAgICBjb29raWUucGF0
aCA9IGNvb2tpZU9iamVjdC0+Z2V0U3RyaW5nKFN0cmluZyB7IFByb3RvY29sOjpQYWdlOjpDb29r
aWU6OnBhdGhLZXkgfSk7CiAgICAgaWYgKCFjb29raWUucGF0aCkgewogICAgICAgICBlcnJvclN0
cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgcGF0aCBpbiBnaXZlbiBjb29raWUiOwogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIH0KIAotICAgIGF1dG8gaHR0cE9ubHkgPSBj
b29raWVPYmplY3QtPmdldEJvb2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6aHR0cE9ubHlL
ZXkpOworICAgIGF1dG8gaHR0cE9ubHkgPSBjb29raWVPYmplY3QtPmdldEJvb2xlYW4oU3RyaW5n
IHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6aHR0cE9ubHlLZXkgfSk7CiAgICAgaWYgKCFodHRw
T25seSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJJbnZhbGlkIHZhbHVlIGZvciBrZXkgaHR0
cE9ubHkgaW4gZ2l2ZW4gY29va2llIjsKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKQEAg
LTYwMCw3ICs2MDAsNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxDb29raWU+IHBhcnNlQ29va2ll
T2JqZWN0KFByb3RvY29sOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogCiAgICAgY29va2llLmh0
dHBPbmx5ID0gKmh0dHBPbmx5OwogCi0gICAgYXV0byBzZWN1cmUgPSBjb29raWVPYmplY3QtPmdl
dEJvb2xlYW4oUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6c2VjdXJlS2V5KTsKKyAgICBhdXRvIHNl
Y3VyZSA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6
Q29va2llOjpzZWN1cmVLZXkgfSk7CiAgICAgaWYgKCFzZWN1cmUpIHsKICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiSW52YWxpZCB2YWx1ZSBmb3Iga2V5IHNlY3VyZSBpbiBnaXZlbiBjb29raWUiOwog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpAQCAtNjA4LDggKzYwOCw4IEBAIHN0YXRpYyBz
dGQ6Om9wdGlvbmFsPENvb2tpZT4gcGFyc2VDb29raWVPYmplY3QoUHJvdG9jb2w6OkVycm9yU3Ry
aW5nJiBlcnJvclN0cmluCiAKICAgICBjb29raWUuc2VjdXJlID0gKnNlY3VyZTsKIAotICAgIGF1
dG8gc2Vzc2lvbiA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihQcm90b2NvbDo6UGFnZTo6Q29v
a2llOjpzZXNzaW9uS2V5KTsKLSAgICBjb29raWUuZXhwaXJlcyA9IGNvb2tpZU9iamVjdC0+Z2V0
RG91YmxlKFByb3RvY29sOjpQYWdlOjpDb29raWU6OmV4cGlyZXNLZXkpOworICAgIGF1dG8gc2Vz
c2lvbiA9IGNvb2tpZU9iamVjdC0+Z2V0Qm9vbGVhbihTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6
Q29va2llOjpzZXNzaW9uS2V5IH0pOworICAgIGNvb2tpZS5leHBpcmVzID0gY29va2llT2JqZWN0
LT5nZXREb3VibGUoU3RyaW5nIHsgUHJvdG9jb2w6OlBhZ2U6OkNvb2tpZTo6ZXhwaXJlc0tleSB9
KTsKICAgICBpZiAoIXNlc3Npb24gJiYgIWNvb2tpZS5leHBpcmVzKSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBleHBpcmVzIGluIGdpdmVuIGNvb2tpZSI7
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CkBAIC02MTcsNyArNjE3LDcgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8Q29va2llPiBwYXJzZUNvb2tpZU9iamVjdChQcm90b2NvbDo6RXJyb3JT
dHJpbmcmIGVycm9yU3RyaW4KIAogICAgIGNvb2tpZS5zZXNzaW9uID0gKnNlc3Npb247CiAKLSAg
ICBhdXRvIHNhbWVTaXRlU3RyaW5nID0gY29va2llT2JqZWN0LT5nZXRTdHJpbmcoUHJvdG9jb2w6
OlBhZ2U6OkNvb2tpZTo6c2FtZVNpdGVLZXkpOworICAgIGF1dG8gc2FtZVNpdGVTdHJpbmcgPSBj
b29raWVPYmplY3QtPmdldFN0cmluZyhTdHJpbmcgeyBQcm90b2NvbDo6UGFnZTo6Q29va2llOjpz
YW1lU2l0ZUtleSB9KTsKICAgICBpZiAoIXNhbWVTaXRlU3RyaW5nKSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gIkludmFsaWQgdmFsdWUgZm9yIGtleSBzYW1lU2l0ZSBpbiBnaXZlbiBjb29raWUi
OwogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXgg
OTk4OGVhOTVmM2YxLi41N2ZhYmU2YmY4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNzQ0
LDcgKzc0NCw3IEBAIHN0YXRpYyBQcm90b2NvbDo6VGltZWxpbmU6OkV2ZW50VHlwZSB0b1Byb3Rv
Y29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQogCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdl
bnQ6OmFkZFJlY29yZFRvVGltZWxpbmUoUmVmPEpTT046Ok9iamVjdD4mJiByZWNvcmQsIFRpbWVs
aW5lUmVjb3JkVHlwZSB0eXBlKQogewotICAgIHJlY29yZC0+c2V0U3RyaW5nKFByb3RvY29sOjpU
aW1lbGluZTo6VGltZWxpbmVFdmVudDo6dHlwZUtleSwgUHJvdG9jb2w6OkhlbHBlcnM6OmdldEVu
dW1Db25zdGFudFZhbHVlKHRvUHJvdG9jb2wodHlwZSkpKTsKKyAgICByZWNvcmQtPnNldFN0cmlu
ZyhTdHJpbmcgeyBQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OnR5cGVLZXkgfSwg
UHJvdG9jb2w6OkhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKHRvUHJvdG9jb2wodHlwZSkp
KTsKIAogICAgIGlmIChtX3JlY29yZFN0YWNrLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBGSVhN
RTogcnVudGltZUNhc3QgaXMgYSBoYWNrLiBXZSBkbyBpdCBiZWNhdXNlIHdlIGNhbid0IGJ1aWxk
IFRpbWVsaW5lRXZlbnQgZGlyZWN0bHkgbm93LgpAQCAtNzc0LDkgKzc3NCw5IEBAIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6c2V0RnJhbWVJZGVudGlmaWVyKEpTT046Ok9iamVjdCogcmVj
b3JkLCBGcmFtZSogZnJhCiAKIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkQ29tcGxl
dGVSZWNvcmRFbnRyeShjb25zdCBUaW1lbGluZVJlY29yZEVudHJ5JiBlbnRyeSkKIHsKLSAgICBl
bnRyeS5yZWNvcmQtPnNldE9iamVjdChQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6
OmRhdGFLZXksIGVudHJ5LmRhdGEuY29weVJlZigpKTsKKyAgICBlbnRyeS5yZWNvcmQtPnNldE9i
amVjdChTdHJpbmcgeyBQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmRhdGFLZXkg
fSwgZW50cnkuZGF0YS5jb3B5UmVmKCkpOwogICAgIGlmIChlbnRyeS5jaGlsZHJlbikKLSAgICAg
ICAgZW50cnkucmVjb3JkLT5zZXRBcnJheShQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZl
bnQ6OmNoaWxkcmVuS2V5LCAqZW50cnkuY2hpbGRyZW4pOworICAgICAgICBlbnRyeS5yZWNvcmQt
PnNldEFycmF5KFN0cmluZyB7IFByb3RvY29sOjpUaW1lbGluZTo6VGltZWxpbmVFdmVudDo6Y2hp
bGRyZW5LZXkgfSwgKmVudHJ5LmNoaWxkcmVuKTsKICAgICBlbnRyeS5yZWNvcmQtPnNldERvdWJs
ZSgiZW5kVGltZSJfcywgdGltZXN0YW1wKCkpOwogICAgIGFkZFJlY29yZFRvVGltZWxpbmUoZW50
cnkucmVjb3JkLmNvcHlSZWYoKSwgZW50cnkudHlwZSk7CiB9CkBAIC04MDEsNyArODAxLDcgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGlt
ZWxpbmVSZWNvcmRUeXBlIHR5cGUpCiB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmFwcGVu
ZFJlY29yZChSZWY8SlNPTjo6T2JqZWN0PiYmIGRhdGEsIFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBl
LCBib29sIGNhcHR1cmVDYWxsU3RhY2ssIEZyYW1lKiBmcmFtZSkKIHsKICAgICBSZWY8SlNPTjo6
T2JqZWN0PiByZWNvcmQgPSBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUdlbmVyaWNSZWNv
cmQodGltZXN0YW1wKCksIGNhcHR1cmVDYWxsU3RhY2sgPyBtX21heENhbGxTdGFja0RlcHRoIDog
MCk7Ci0gICAgcmVjb3JkLT5zZXRPYmplY3QoUHJvdG9jb2w6OlRpbWVsaW5lOjpUaW1lbGluZUV2
ZW50OjpkYXRhS2V5LCBXVEZNb3ZlKGRhdGEpKTsKKyAgICByZWNvcmQtPnNldE9iamVjdChTdHJp
bmcgeyBQcm90b2NvbDo6VGltZWxpbmU6OlRpbWVsaW5lRXZlbnQ6OmRhdGFLZXkgfSwgV1RGTW92
ZShkYXRhKSk7CiAgICAgc2V0RnJhbWVJZGVudGlmaWVyKCZyZWNvcmQuZ2V0KCksIGZyYW1lKTsK
ICAgICBhZGRSZWNvcmRUb1RpbWVsaW5lKFdURk1vdmUocmVjb3JkKSwgdHlwZSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcAppbmRl
eCA3NGJkMTI5ZjFjODEuLjM2ZTU4YzcxNGFiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0Nyb3NzT3JpZ2luT3BlbmVyUG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvQ3Jvc3NPcmlnaW5PcGVuZXJQb2xpY3kuY3BwCkBAIC00Miw3ICs0Miw3IEBACiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIEFTQ0lJTGl0ZXJhbCBjcm9zc09yaWdpbk9wZW5l
clBvbGljeVRvU3RyaW5nKGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWUmIGNvb3Ap
CitzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBjcm9zc09yaWdpbk9wZW5lclBvbGljeVRv
U3RyaW5nKGNvbnN0IENyb3NzT3JpZ2luT3BlbmVyUG9saWN5VmFsdWUmIGNvb3ApCiB7CiAgICAg
c3dpdGNoIChjb29wKSB7CiAgICAgY2FzZSBDcm9zc09yaWdpbk9wZW5lclBvbGljeVZhbHVlOjpT
YW1lT3JpZ2luOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNz
aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKaW5kZXgg
Y2VlODJhM2YwNzEzLi5iYzA5OTJmNGQyMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Gb3JtU3VibWlzc2lvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1T
dWJtaXNzaW9uLmNwcApAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgdm9pZCBhcHBlbmRNYWlsdG9Q
b3N0Rm9ybURhdGFUb1VSTChVUkwmIHVybCwgY29uc3QgRm9ybURhdGEmIGRhdGEsIGNvbnN0CiAg
ICAgICAgIHVybC5zZXRRdWVyeShtYWtlU3RyaW5nKHF1ZXJ5LCAnJicsIGJvZHkpKTsKIH0KIAot
QVNDSUlMaXRlcmFsIEZvcm1TdWJtaXNzaW9uOjpBdHRyaWJ1dGVzOjptZXRob2RTdHJpbmcoTWV0
aG9kIG1ldGhvZCwgYm9vbCBkaWFsb2dFbGVtZW50RW5hYmxlZCkKK0FTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGggRm9ybVN1Ym1pc3Npb246OkF0dHJpYnV0ZXM6Om1ldGhvZFN0cmluZyhNZXRob2QgbWV0
aG9kLCBib29sIGRpYWxvZ0VsZW1lbnRFbmFibGVkKQogewogICAgIGlmIChkaWFsb2dFbGVtZW50
RW5hYmxlZCAmJiBtZXRob2QgPT0gTWV0aG9kOjpEaWFsb2cpCiAgICAgICAgIHJldHVybiAiZGlh
bG9nIl9zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRm9ybVN1Ym1pc3Npb24uaAppbmRleCBlMGM0OGVm
MWU0M2EuLmI3ZDQzMzhkMGYyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zv
cm1TdWJtaXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0Zvcm1TdWJtaXNzaW9u
LmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgICAgICBNZXRob2QgbWV0aG9kKCkgY29u
c3QgeyByZXR1cm4gbV9tZXRob2Q7IH0KICAgICAgICAgc3RhdGljIE1ldGhvZCBwYXJzZU1ldGhv
ZFR5cGUoY29uc3QgU3RyaW5nJiwgYm9vbCk7CiAgICAgICAgIHZvaWQgdXBkYXRlTWV0aG9kVHlw
ZShjb25zdCBTdHJpbmcmLCBib29sKTsKLSAgICAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBtZXRo
b2RTdHJpbmcoTWV0aG9kLCBib29sKTsKKyAgICAgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhM
ZW5ndGggbWV0aG9kU3RyaW5nKE1ldGhvZCwgYm9vbCk7CiAKICAgICAgICAgY29uc3QgU3RyaW5n
JiBhY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbjsgfQogICAgICAgICB2b2lkIHBhcnNl
QWN0aW9uKGNvbnN0IFN0cmluZyYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0UGFyc2VyLmNwcApp
bmRleCA0YTExNDQyNWUxMTYuLjBiNmY3ODI3Mzk0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdFBhcnNlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVz
dFBhcnNlci5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RkOjpvcHRpb25hbDxBcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3Q+IHBhcnNlQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0KGNvbnN0IFVSTCYKICAg
ICBib29sIGFsbG93RmFsbGJhY2tOYW1lc3BhY2VPdXRzaWRlTWFuaWZlc3RQYXRoID0gZXF1YWxM
ZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobWFuaWZlc3RNSU1FVHlwZSwgY2FjaGVNYW5pZmVzdE1J
TUVUeXBlKTsKICAgICBhdXRvIG1hbmlmZXN0UGF0aCA9IFdlYkNvcmU6Om1hbmlmZXN0UGF0aCht
YW5pZmVzdFVSTCk7CiAKLSAgICBhdXRvIG1hbmlmZXN0U3RyaW5nID0gVGV4dFJlc291cmNlRGVj
b2Rlcjo6Y3JlYXRlKEFTQ0lJTGl0ZXJhbDo6ZnJvbUxpdGVyYWxVbnNhZmUoY2FjaGVNYW5pZmVz
dE1JTUVUeXBlKSwgIlVURi04IiktPmRlY29kZUFuZEZsdXNoKGRhdGEsIGxlbmd0aCk7CisgICAg
YXV0byBtYW5pZmVzdFN0cmluZyA9IFRleHRSZXNvdXJjZURlY29kZXI6OmNyZWF0ZShBU0NJSUxp
dGVyYWxXaXRoTGVuZ3RoOjpmcm9tTGl0ZXJhbFVuc2FmZShjYWNoZU1hbmlmZXN0TUlNRVR5cGUs
IHNpemVvZihjYWNoZU1hbmlmZXN0TUlNRVR5cGUpIC0gMSksICJVVEYtOCIpLT5kZWNvZGVBbmRG
bHVzaChkYXRhLCBsZW5ndGgpOwogCiAgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2lu
ZyhtYW5pZmVzdFN0cmluZywgWyZdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPEFwcGxp
Y2F0aW9uQ2FjaGVNYW5pZmVzdD4gewogICAgICAgICB1c2luZyBDaGFyYWN0ZXJUeXBlID0gdHlw
ZW5hbWUgZGVjbHR5cGUoYnVmZmVyKTo6Q2hhcmFjdGVyVHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5jcHAKaW5kZXggMmFl
NzkzMGY2NmMxLi4zMWFhM2Q5OTI4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuY3BwCkBAIC0xMjYsNyArMTI2LDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZVJlcXVlc3Q6OnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGNv
bnN0IFN0cmluZyYgZG9tYWluKQogICAgIG1fcmVzb3VyY2VSZXF1ZXN0LnNldERvbWFpbkZvckNh
Y2hlUGFydGl0aW9uKGRvbWFpbik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgY29uc3RleHByIEFTQ0lJ
TGl0ZXJhbCBhY2NlcHRIZWFkZXJWYWx1ZUZvckltYWdlUmVzb3VyY2UoYm9vbCBzdXBwb3J0c1Zp
ZGVvSW1hZ2UpCitzdGF0aWMgaW5saW5lIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IGFjY2VwdEhlYWRlclZhbHVlRm9ySW1hZ2VSZXNvdXJjZShib29sIHN1cHBvcnRzVmlkZW9JbWFn
ZSkKIHsKICNpZiBIQVZFKFdFQlApIHx8IFVTRShXRUJQKQogICAgICNkZWZpbmUgV0VCUF9IRUFE
RVJfUEFSVCAiaW1hZ2Uvd2VicCwiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Rl
YnVnUGFnZU92ZXJsYXlzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRGVidWdQYWdlT3Zlcmxh
eXMuY3BwCmluZGV4IDdiM2VjNzhmM2RhZi4uM2Q3MDQ3ZTg0NTFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RlYnVnUGFnZU92ZXJsYXlzLmNwcApAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgTm9u
RmFzdFNjcm9sbGFibGVSZWdpb25PdmVybGF5OjpkcmF3UmVjdChQYWdlT3ZlcmxheSYgcGFnZU92
ZXJsYXksIEdyYXBoaWNzCiAgICAgRm9udENhc2NhZGUgZm9udChXVEZNb3ZlKGZvbnREZXNjcmlw
dGlvbiksIDAsIDApOwogICAgIGZvbnQudXBkYXRlKG51bGxwdHIpOwogCi0gICAgYXV0byBkcmF3
TGVnZW5kID0gWyZdIChjb25zdCBDb2xvciYgY29sb3IsIEFTQ0lJTGl0ZXJhbCB0ZXh0KSB7Cisg
ICAgYXV0byBkcmF3TGVnZW5kID0gWyZdIChjb25zdCBDb2xvciYgY29sb3IsIEFTQ0lJTGl0ZXJh
bFdpdGhMZW5ndGggdGV4dCkgewogICAgICAgICBjb250ZXh0LnNldEZpbGxDb2xvcihjb2xvcik7
CiAgICAgICAgIGNvbnRleHQuZmlsbFJlY3QobGVnZW5kUmVjdCk7CiAgICAgICAgIGRyYXdSaWdo
dEFsaWduZWRUZXh0KHRleHQsIGNvbnRleHQsIGZvbnQsIGxlZ2VuZFJlY3QubG9jYXRpb24oKSk7
CkBAIC0xOTgsNyArMTk4LDcgQEAgdm9pZCBOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbk92ZXJsYXk6
OmRyYXdSZWN0KFBhZ2VPdmVybGF5JiBwYWdlT3ZlcmxheSwgR3JhcGhpY3MKICAgICB9OwogCiAj
aWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKLSAgICBhdXRvIGRyYXdFdmVudExlZ2VuZCA9IFsmXSAo
QVNDSUlMaXRlcmFsIGNvbG9yKSB7CisgICAgYXV0byBkcmF3RXZlbnRMZWdlbmQgPSBbJl0gKEFT
Q0lJTGl0ZXJhbFdpdGhMZW5ndGggY29sb3IpIHsKICAgICAgICAgZHJhd0xlZ2VuZChjb2xvcnMu
Z2V0KFN0cmluZ1ZpZXcgeyBjb2xvciB9KSwgY29sb3IpOwogICAgIH07CiAgICAgZHJhd0V2ZW50
TGVnZW5kKCJ0b3VjaHN0YXJ0Il9zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RnJhbWVUcmVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAppbmRleCA0
MDJmNGZhYWJiMzYuLjNjZTVmN2U5MjMzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVRyZWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcApA
QCAtNDU5LDEzICs0NTksMTMgQEAgRnJhbWUmIEZyYW1lVHJlZTo6dG9wKCkgY29uc3QKICAgICBy
ZXR1cm4gKmZyYW1lOwogfQogCi1BU0NJSUxpdGVyYWwgYmxhbmtUYXJnZXRGcmFtZU5hbWUoKQor
QVNDSUlMaXRlcmFsV2l0aExlbmd0aCBibGFua1RhcmdldEZyYW1lTmFtZSgpCiB7CiAgICAgcmV0
dXJuICJfYmxhbmsiX3M7CiB9CiAKIC8vIEZJWE1FOiBJcyBpdCBpbXBvcnRhbnQgdG8gaGF2ZSB0
aGlzPyBDYW4ndCB3ZSBqdXN0IHVzZSB0aGUgZW1wdHkgc3RyaW5nIGV2ZXJ5d2hlcmUgdGhpcyBp
cyB1c2VkLCBpbnN0ZWFkPwotQVNDSUlMaXRlcmFsIHNlbGZUYXJnZXRGcmFtZU5hbWUoKQorQVND
SUlMaXRlcmFsV2l0aExlbmd0aCBzZWxmVGFyZ2V0RnJhbWVOYW1lKCkKIHsKICAgICByZXR1cm4g
Il9zZWxmIl9zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUu
aCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgKaW5kZXggNjQwY2M5ZTg3M2U4Li42
ZDhlZTc5N2Y3OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaApAQCAtMTA3LDggKzEwNyw4IEBA
IHByaXZhdGU6CiAgICAgbXV0YWJsZSB1aW50NjRfdCBtX2ZyYW1lSURHZW5lcmF0b3IgeyAwIH07
CiB9OwogCi1BU0NJSUxpdGVyYWwgYmxhbmtUYXJnZXRGcmFtZU5hbWUoKTsKLUFTQ0lJTGl0ZXJh
bCBzZWxmVGFyZ2V0RnJhbWVOYW1lKCk7CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGJsYW5rVGFy
Z2V0RnJhbWVOYW1lKCk7CitBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoIHNlbGZUYXJnZXRGcmFtZU5h
bWUoKTsKIAogYm9vbCBpc0JsYW5rVGFyZ2V0RnJhbWVOYW1lKFN0cmluZ1ZpZXcpOwogYm9vbCBp
c1BhcmVudFRhcmdldEZyYW1lTmFtZShTdHJpbmdWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJm
b3JtYW5jZUVudHJ5LmgKaW5kZXggZjkyYzJmMjA0MDY3Li5kZDNlYjgwZGE2MDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VFbnRyeS5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoK
ICAgICB9OwogCiAgICAgdmlydHVhbCBUeXBlIHBlcmZvcm1hbmNlRW50cnlUeXBlKCkgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNvbnN0ID0gMDsKKyAg
ICB2aXJ0dWFsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZW50cnlUeXBlKCkgY29uc3QgPSAwOwog
CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VHlwZT4gcGFyc2VFbnRyeVR5cGVTdHJpbmcoY29u
c3QgU3RyaW5nJiBlbnRyeVR5cGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BlcmZvcm1hbmNlTWFyay5oIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsu
aAppbmRleCA4N2E1NTg1ZDFiZTMuLjk2ZTM0NTkxNGExZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1hcmsuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bl
cmZvcm1hbmNlTWFyay5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiAgICAgflBlcmZvcm1h
bmNlTWFyaygpOwogCiAgICAgVHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIFR5cGU6Ok1hcms7IH0KLSAgICBBU0NJSUxpdGVyYWwgZW50cnlUeXBlKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIm1hcmsiX3M7IH0KKyAgICBBU0NJSUxpdGVyYWxXaXRoTGVuZ3Ro
IGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJtYXJrIl9zOyB9CiAKICAgICBSZWY8
U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtX3NlcmlhbGl6ZWREZXRhaWw7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1lYXN1cmUuaCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGVyZm9ybWFuY2VNZWFzdXJlLmgKaW5kZXggMmQyYWEzZWUxMjk1Li4yYTU0NWNj
NmY3MTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VNZWFzdXJl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZU1lYXN1cmUuaApAQCAtNDks
NyArNDksNyBAQCBwcml2YXRlOgogICAgIH5QZXJmb3JtYW5jZU1lYXN1cmUoKTsKIAogICAgIFR5
cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpNZWFz
dXJlOyB9Ci0gICAgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
ICJtZWFzdXJlIl9zOyB9CisgICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAibWVhc3VyZSJfczsgfQogCiAgICAgUmVmPFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gbV9zZXJpYWxpemVkRGV0YWlsOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VOYXZpZ2F0aW9uVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1BlcmZvcm1hbmNlTmF2aWdhdGlvblRpbWluZy5oCmluZGV4IGM3YzFmMzZiNGM5ZS4u
YzAzYzA0YWQ5MTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
TmF2aWdhdGlvblRpbWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VO
YXZpZ2F0aW9uVGltaW5nLmgKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIH5QZXJmb3Jt
YW5jZU5hdmlnYXRpb25UaW1pbmcoKTsKIAogICAgIFR5cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiBUeXBlOjpOYXZpZ2F0aW9uOyB9Ci0gICAgQVNDSUlMaXRl
cmFsIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJuYXZpZ2F0aW9uIl9zOyB9Cisg
ICAgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBlbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAibmF2aWdhdGlvbiJfczsgfQogCiAgICAgZG91YmxlIHVubG9hZEV2ZW50U3RhcnQoKSBjb25z
dDsKICAgICBkb3VibGUgdW5sb2FkRXZlbnRFbmQoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VQYWludFRpbWluZy5oIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9QZXJmb3JtYW5jZVBhaW50VGltaW5nLmgKaW5kZXggNzBmODA4NWY5Y2M3Li42MDllMzlh
ODVlYjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VQYWludFRp
bWluZy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VQYWludFRpbWluZy5o
CkBAIC00Myw3ICs0Myw3IEBAIHByaXZhdGU6CiAgICAgewogICAgIH0KIAotICAgIEFTQ0lJTGl0
ZXJhbCBlbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAicGFpbnQiX3M7IH0KKyAgICBB
U0NJSUxpdGVyYWxXaXRoTGVuZ3RoIGVudHJ5VHlwZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJw
YWludCJfczsgfQogICAgIFR5cGUgcGVyZm9ybWFuY2VFbnRyeVR5cGUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBUeXBlOjpQYWludDsgfQogCiAgICAgflBlcmZvcm1hbmNlUGFpbnRUaW1pbmcoKSA9
IGRlZmF1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVz
b3VyY2VUaW1pbmcuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VSZXNvdXJjZVRp
bWluZy5oCmluZGV4IDY5NDM1ZWZiMDhhNi4uYTI0ZWVmMjNlNjY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlUmVzb3VyY2VUaW1pbmcuaApAQCAtNjgsNyArNjgsNyBA
QCBwdWJsaWM6CiAgICAgY29uc3QgVmVjdG9yPFJlZjxQZXJmb3JtYW5jZVNlcnZlclRpbWluZz4+
JiBzZXJ2ZXJUaW1pbmcoKSBjb25zdCB7IHJldHVybiBtX3NlcnZlclRpbWluZzsgfQogCiAgICAg
VHlwZSBwZXJmb3JtYW5jZUVudHJ5VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFR5cGU6
OlJlc291cmNlOyB9Ci0gICAgQVNDSUlMaXRlcmFsIGVudHJ5VHlwZSgpIGNvbnN0IG92ZXJyaWRl
IHsgcmV0dXJuICJyZXNvdXJjZSJfczsgfQorICAgIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggZW50
cnlUeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gInJlc291cmNlIl9zOyB9CiAKIHByb3Rl
Y3RlZDoKICAgICBQZXJmb3JtYW5jZVJlc291cmNlVGltaW5nKE1vbm90b25pY1RpbWUgdGltZU9y
aWdpbiwgUmVzb3VyY2VUaW1pbmcmJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9M
ZWdhY3lTY2hlbWVSZWdpc3RyeS5jcHAKaW5kZXggNWEzNGNlYTA1NGFjLi4zMzgwNjFjOTY0NzIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0xlZ2FjeVNjaGVtZVJlZ2lzdHJ5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9MZWdhY3lTY2hlbWVSZWdpc3RyeS5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgdXNpbmcgQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uID0gU3Bh
bjxjb25zdCBBU0NJSUxpdGVyYWw+ICgqKSgpOwogc3RhdGljIHZvaWQgYWRkKFVSTFNjaGVtZXNN
YXAmIHNldCwgQVNDSUlMaXRlcmFsU3BhbkZ1bmN0aW9uIGZ1bmN0aW9uKQogewogICAgIGZvciAo
YXV0byYgc2NoZW1lIDogZnVuY3Rpb24oKSkKLSAgICAgICAgc2V0LmFkZChzY2hlbWUpOworICAg
ICAgICBzZXQuYWRkKFN0cmluZyB7IHNjaGVtZSB9KTsKIH0KIAogc3RhdGljIE5ldmVyRGVzdHJv
eWVkPFVSTFNjaGVtZXNNYXA+IG1ha2VOZXZlckRlc3Ryb3llZFNjaGVtZVNldChBU0NJSUxpdGVy
YWxTcGFuRnVuY3Rpb24gZnVuY3Rpb24pCkBAIC0xMzYsMTUgKzEzNiwxNSBAQCBzdGF0aWMgVVJM
U2NoZW1lc01hcCYgZGlzcGxheUlzb2xhdGVkVVJMU2NoZW1lcygpIFdURl9SRVFVSVJFU19MT0NL
KHNjaGVtZVJlZ2lzdAogc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBidWlsdGluU2Vj
dXJlU2NoZW1lcygpCiB7CiAgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMg
ewotICAgICAgICAiaHR0cHMiX3MsCi0gICAgICAgICJhYm91dCJfcywKLSAgICAgICAgImRhdGEi
X3MsCi0gICAgICAgICJ3c3MiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4o
Imh0dHBzIl9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiYWJvdXQiX3Mp
LAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJkYXRhIl9zKSwKKyAgICAgICAg
c3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigid3NzIl9zKSwKICNpZiBQTEFURk9STShHVEspIHx8
IFBMQVRGT1JNKFdQRSkKLSAgICAgICAgInJlc291cmNlIl9zLAorICAgICAgICBzdGF0aWNfY2Fz
dDxBU0NJSUxpdGVyYWw+KCJyZXNvdXJjZSJfcyksCiAjZW5kaWYKICNpZiBFTkFCTEUoUERGSlMp
Ci0gICAgICAgICJ3ZWJraXQtcGRmanMtdmlld2VyIl9zLAorICAgICAgICBzdGF0aWNfY2FzdDxB
U0NJSUxpdGVyYWw+KCJ3ZWJraXQtcGRmanMtdmlld2VyIl9zKSwKICNlbmRpZgogICAgIH07CiAg
ICAgcmV0dXJuIHNjaGVtZXM7CkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIFVSTFNjaGVtZXNN
YXAmIHNlY3VyZVNjaGVtZXMoKSBXVEZfUkVRVUlSRVNfTE9DSyhzY2hlbWVSZWdpc3RyeUxvY2sp
CiAKIHN0YXRpYyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpblNjaGVtZXNXaXRoVW5p
cXVlT3JpZ2lucygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMg
eworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxBU0NJSUxpdGVyYWwsIDM+IHNjaGVt
ZXMgewogICAgICAgICAiYWJvdXQiX3MsCiAgICAgICAgICJqYXZhc2NyaXB0Il9zLAogICAgICAg
ICAvLyBUaGlzIGlzIGFuIGludGVudGlvbmFsIGRpZmZlcmVuY2UgZnJvbSB0aGUgYmVoYXZpb3Ig
dGhlIEhUTUwgc3BlY2lmaWNhdGlvbiBjYWxscyBmb3IuCkBAIC0xNzgsNyArMTc4LDcgQEAgc3Rh
dGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNXaXRoVW5pcXVlT3JpZ2lucygpIFdURl9SRVFVSVJF
U19MT0NLKHNjaGVtZVJlZ2lzdHIKIAogc3RhdGljIFNwYW48Y29uc3QgQVNDSUlMaXRlcmFsPiBi
dWlsdGluRW1wdHlEb2N1bWVudFNjaGVtZXMoKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjphcnJheSBzY2hlbWVzIHsgImFib3V0Il9zIH07CisgICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6
OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMT4gc2NoZW1lcyB7ICJhYm91dCJfcyB9OwogICAgIHJldHVy
biBzY2hlbWVzOwogfQogCkBAIC0xOTgsNyArMTk4LDcgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAm
IHNjaGVtZXNGb3JiaWRkZW5Gcm9tRG9tYWluUmVsYXhhdGlvbigpCiAKIHN0YXRpYyBTcGFuPGNv
bnN0IEFTQ0lJTGl0ZXJhbD4gYnVpbHRpbkNhbkRpc3BsYXlPbmx5SWZDYW5SZXF1ZXN0U2NoZW1l
cygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHNjaGVtZXMgeyAiYmxvYiJf
cyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxBU0NJSUxpdGVyYWwsIDE+IHNj
aGVtZXMgeyAiYmxvYiJfcyB9OwogICAgIHJldHVybiBzY2hlbWVzOwogfQogCkBAIC0yNjMsNyAr
MjYzLDcgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIHNjaGVtZXNBbGxvd2luZ0RhdGFiYXNlQWNj
ZXNzSW5Qcml2YXRlQnJvd3NpbmcoKQogCiBzdGF0aWMgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+
IGJ1aWx0aW5DT1JTRW5hYmxlZFNjaGVtZXMoKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjphcnJheSBzY2hlbWVzIHsgImh0dHAiX3MsICJodHRwcyJfcyB9OworICAgIHN0YXRpYyBjb25z
dGV4cHIgc3RkOjphcnJheTxBU0NJSUxpdGVyYWwsIDI+IHNjaGVtZXMgeyAiaHR0cCJfcywgImh0
dHBzIl9zIH07CiAgICAgcmV0dXJuIHNjaGVtZXM7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vTUlNRVR5cGVSZWdpc3RyeS5jcHAKaW5kZXggNWFjYjI5Y2ZiNDU5Li4zYzFlNzBkZjNh
MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL01JTUVUeXBlUmVnaXN0cnkuY3BwCkBA
IC0yMTgsNyArMjE4LDcgQEAgSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSGFz
aD4mIE1JTUVUeXBlUmVnaXN0cnk6OnN1cHBvcnRlZE5vbkltYWdlTUkKICAgICAgICAgLy8gVGhp
cyBjYW4gcmVzdWx0IGluIGNyb3NzLXNpdGUgc2NyaXB0aW5nIHZ1bG5lcmFiaWxpdGllcy4KICAg
ICAgICAgfTsKICAgICAgICAgZm9yIChhdXRvJiB0eXBlIDogc3VwcG9ydGVkSmF2YVNjcmlwdE1J
TUVUeXBlQXJyYXkpCi0gICAgICAgICAgICB0eXBlcy5hZGQodHlwZS5saXRlcmFsKTsKKyAgICAg
ICAgICAgIHR5cGVzLmFkZChTdHJpbmcgeyB0eXBlLmxpdGVyYWwgfSk7CiAjaWYgRU5BQkxFKFdF
Ql9BUkNISVZFKSB8fCBFTkFCTEUoTUhUTUwpCiAgICAgICAgIEFyY2hpdmVGYWN0b3J5OjpyZWdp
c3Rlcktub3duQXJjaGl2ZU1JTUVUeXBlcyh0eXBlcyk7CiAjZW5kaWYKQEAgLTM2NCw3ICszNjQs
NyBAQCBzdGF0aWMgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxTdHJpbmc+LCBBU0NJSUNh
c2VJbnNlbnNpdGl2ZUhhc2g+JiBjb21tb25NaQogICAgICAgICBmb3IgKGF1dG8mIHBhaXIgOiBj
b21tb25NZWRpYVR5cGVzKSB7CiAgICAgICAgICAgICBBU0NJSUxpdGVyYWwgdHlwZSA9IHBhaXIu
dHlwZTsKICAgICAgICAgICAgIEFTQ0lJTGl0ZXJhbCBleHRlbnNpb24gPSBwYWlyLmV4dGVuc2lv
bjsKLSAgICAgICAgICAgIG1hcC5lbnN1cmUoZXh0ZW5zaW9uLCBbdHlwZSwgZXh0ZW5zaW9uXSB7
CisgICAgICAgICAgICBtYXAuZW5zdXJlKFN0cmluZyB7IGV4dGVuc2lvbiB9LCBbdHlwZSwgZXh0
ZW5zaW9uXSB7CiAgICAgICAgICAgICAgICAgLy8gRmlyc3QgdHlwZSBpbiB0aGUgdmVjdG9yIG11
c3QgYWx3YXlzIGJlIHRoZSBvbmUgZnJvbSBtaW1lVHlwZUZvckV4dGVuc2lvbiwKICAgICAgICAg
ICAgICAgICAvLyBzbyB3ZSBjYW4gdXNlIHRoZSBtYXAgd2l0aG91dCBhbHNvIGNhbGxpbmcgbWlt
ZVR5cGVGb3JFeHRlbnNpb24gZWFjaCB0aW1lLgogICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJp
bmc+IHN5bm9ueW1zOwpAQCAtNzYzLDcgKzc2Myw3IEBAIHN0YXRpYyBTdHJpbmcgbm9ybWFsaXpl
ZEltYWdlTUlNRVR5cGUoY29uc3QgU3RyaW5nJiBtaW1lVHlwZSkKICAgICB9OwogICAgIHN0YXRp
YyBjb25zdGV4cHIgU29ydGVkQXJyYXlNYXAgYXNzb2NpYXRpb25NYXAgeyBtaW1lVHlwZUFzc29j
aWF0aW9uQXJyYXkgfTsKICAgICBhdXRvIG5vcm1hbGl6ZWRUeXBlID0gYXNzb2NpYXRpb25NYXAu
dHJ5R2V0KG1pbWVUeXBlKTsKLSAgICByZXR1cm4gbm9ybWFsaXplZFR5cGUgPyAqbm9ybWFsaXpl
ZFR5cGUgOiBtaW1lVHlwZTsKKyAgICByZXR1cm4gbm9ybWFsaXplZFR5cGUgPyBTdHJpbmcgeyAq
bm9ybWFsaXplZFR5cGUgfSA6IG1pbWVUeXBlOwogI2VuZGlmCiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuY3BwCmluZGV4IDE2
Nzk5MTFiNTg3Zi4uMDJkODhlOTQ2YWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jb2NvYS9BR1hDb21waWxlclNlcnZpY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL0FHWENvbXBpbGVyU2VydmljZS5jcHAKQEAgLTYwLDcgKzYwLDcgQEAgYm9v
bCBkZXZpY2VIYXNBR1hDb21waWxlclNlcnZpY2UoKQogCiBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJh
bD4gYWd4Q29tcGlsZXJTZXJ2aWNlcygpCiB7Ci0gICAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFy
cmF5IHNlcnZpY2VzIHsKKyAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8QVNDSUlMaXRl
cmFsLCAyPiBzZXJ2aWNlcyB7CiAgICAgICAgICJjb20uYXBwbGUuQUdYQ29tcGlsZXJTZXJ2aWNl
Il9zLAogICAgICAgICAiY29tLmFwcGxlLkFHWENvbXBpbGVyU2VydmljZS1TMkE4Il9zCiAgICAg
fTsKQEAgLTY5LDcgKzY5LDcgQEAgU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IGFneENvbXBpbGVy
U2VydmljZXMoKQogCiBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gYWd4Q29tcGlsZXJDbGFzc2Vz
KCkKIHsKLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXkgY2xhc3NlcyB7CisgICAgc3Rh
dGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5PEFTQ0lJTGl0ZXJhbCwgMTA+IGNsYXNzZXMgewogICAg
ICAgICAiQUdYQ29tbWFuZFF1ZXVlIl9zLAogICAgICAgICAiQUdYRGV2aWNlIl9zLAogICAgICAg
ICAiQUdYU2hhcmVkVXNlckNsaWVudCJfcywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCmluZGV4IDEyY2UzZTk2ZGQzMS4uM2EzYzkxMDdjMzY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Gb250Q2FjaGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNoZS5jcHAKQEAg
LTI0Myw3ICsyNDMsNyBAQCBGb250UGxhdGZvcm1EYXRhKiBGb250Q2FjaGU6OmNhY2hlZEZvbnRQ
bGF0Zm9ybURhdGEoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RAogICAgICAgICAgICAgLy8g
V2Ugd2VyZSB1bmFibGUgdG8gZmluZCBhIGZvbnQuIFdlIGhhdmUgYSBzbWFsbCBzZXQgb2YgZm9u
dHMgdGhhdCB3ZSBhbGlhcyB0byBvdGhlciBuYW1lcywKICAgICAgICAgICAgIC8vIGUuZy4sIEFy
aWFsL0hlbHZldGljYSwgQ291cmllci9Db3VyaWVyIE5ldywgZXRjLiBUcnkgbG9va2luZyB1cCB0
aGUgZm9udCB1bmRlciB0aGUgYWxpYXNlZCBuYW1lLgogICAgICAgICAgICAgaWYgKGF1dG8gYWx0
ZXJuYXRlTmFtZSA9IGFsdGVybmF0ZUZhbWlseU5hbWUoZmFtaWx5TmFtZSkpIHsKLSAgICAgICAg
ICAgICAgICBhdXRvKiBhbHRlcm5hdGVEYXRhID0gY2FjaGVkRm9udFBsYXRmb3JtRGF0YShmb250
RGVzY3JpcHRpb24sICphbHRlcm5hdGVOYW1lLCBmb250Q3JlYXRpb25Db250ZXh0LCB0cnVlKTsK
KyAgICAgICAgICAgICAgICBhdXRvKiBhbHRlcm5hdGVEYXRhID0gY2FjaGVkRm9udFBsYXRmb3Jt
RGF0YShmb250RGVzY3JpcHRpb24sIFN0cmluZyB7ICphbHRlcm5hdGVOYW1lIH0sIGZvbnRDcmVh
dGlvbkNvbnRleHQsIHRydWUpOwogICAgICAgICAgICAgICAgIC8vIExvb2sgdXAgdGhlIGtleSBp
biB0aGUgaGFzaCB0YWJsZSBhZ2FpbiBhcyB0aGUgcHJldmlvdXMgaXRlcmF0b3IgbWF5IGhhdmUK
ICAgICAgICAgICAgICAgICAvLyBiZWVuIGludmFsaWRhdGVkIGJ5IHRoZSByZWN1cnNpdmUgY2Fs
bCB0byBjYWNoZWRGb250UGxhdGZvcm1EYXRhKCkuCiAgICAgICAgICAgICAgICAgaXQgPSBtX2Zv
bnREYXRhQ2FjaGVzLT5wbGF0Zm9ybURhdGEuZmluZChrZXkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVU
eXBlQ2FjaGUubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRp
b24vb2JqYy9BVkFzc2V0TUlNRVR5cGVDYWNoZS5tbQppbmRleCBkODQ4MDVmMjM1MWUuLmEzY2Vk
MDMxMGI4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZm
b3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2FjaGUubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvQVZBc3NldE1JTUVUeXBlQ2Fj
aGUubW0KQEAgLTE1Miw3ICsxNTIsOCBAQCB2b2lkIEFWQXNzZXRNSU1FVHlwZUNhY2hlOjppbml0
aWFsaXplQ2FjaGUoSGFzaFNldDxTdHJpbmcsIEFTQ0lJQ2FzZUluc2Vuc2l0aXZlSAogI2lmIEVO
QUJMRShXRUJNX0ZPUk1BVF9SRUFERVIpCiAgICAgaWYgKFNvdXJjZUJ1ZmZlclBhcnNlcldlYk06
OmlzV2ViTUZvcm1hdFJlYWRlckF2YWlsYWJsZSgpKSB7CiAgICAgICAgIGF1dG8gdHlwZXMgPSBT
b3VyY2VCdWZmZXJQYXJzZXJXZWJNOjpzdXBwb3J0ZWRNSU1FVHlwZXMoKTsKLSAgICAgICAgY2Fj
aGUuYWRkKHR5cGVzLmJlZ2luKCksIHR5cGVzLmVuZCgpKTsKKyAgICAgICAgZm9yIChhdXRvJiB0
eXBlIDogdHlwZXMpCisgICAgICAgICAgICBjYWNoZS5hZGQoU3RyaW5nIHsgdHlwZSB9KTsKICAg
ICB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2EvR3JhcGhpY3NMYXllckNBLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhL0dyYXBoaWNzTGF5ZXJDQS5jcHAKaW5kZXggYjg2NmM3MTcxOGNiLi5mYzY3NGI5YWVj
ZmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL0dyYXBo
aWNzTGF5ZXJDQS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
R3JhcGhpY3NMYXllckNBLmNwcApAQCAtMjUyLDcgKzI1Miw3IEBAIHN0YXRpYyBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpWYWx1ZUZ1bmN0aW9uVHlwZSBnZXRWYWx1ZUZ1bmN0aW9uTmFtZUZvclRyYW5z
Zm9ybU9wCiAgICAgfQogfQogCi1zdGF0aWMgQVNDSUlMaXRlcmFsIHByb3BlcnR5SWRUb1N0cmlu
ZyhBbmltYXRlZFByb3BlcnR5SUQgcHJvcGVydHkpCitzdGF0aWMgQVNDSUlMaXRlcmFsV2l0aExl
bmd0aCBwcm9wZXJ0eUlkVG9TdHJpbmcoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQogewog
ICAgIHN3aXRjaCAocHJvcGVydHkpIHsKICAgICBjYXNlIEFuaW1hdGVkUHJvcGVydHlUcmFuc2xh
dGU6CkBAIC0yNzQsNyArMjc0LDcgQEAgc3RhdGljIEFTQ0lJTGl0ZXJhbCBwcm9wZXJ0eUlkVG9T
dHJpbmcoQW5pbWF0ZWRQcm9wZXJ0eUlEIHByb3BlcnR5KQogICAgICAgICBBU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFT
Q0lJTGl0ZXJhbDo6bnVsbCgpOworICAgIHJldHVybiBBU0NJSUxpdGVyYWxXaXRoTGVuZ3RoOjpu
dWxsKCk7CiB9CiAKIHN0YXRpYyBib29sIGFuaW1hdGlvbkhhc1N0ZXBzVGltaW5nRnVuY3Rpb24o
Y29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlTGlzdCwgY29uc3QgQW5pbWF0aW9uKiBhbmlt
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29jb2EvR3Jh
cGhpY3NDb250ZXh0R0xDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvY29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KaW5kZXggMTU3M2UxNjYwNDMxLi5hZGEw
MjM1MWIxMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nv
Y29hL0dyYXBoaWNzQ29udGV4dEdMQ29jb2EubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29jb2EvR3JhcGhpY3NDb250ZXh0R0xDb2NvYS5tbQpAQCAtMzcwLDcgKzM3
MCw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0R0xDb2NvYTo6cGxhdGZvcm1Jbml0aWFsaXplKCkK
ICAgICBpZiAobV9pc0ZvcldlYkdMMikKICAgICAgICAgR0xfRW5hYmxlKEdyYXBoaWNzQ29udGV4
dEdMOjpQUklNSVRJVkVfUkVTVEFSVF9GSVhFRF9JTkRFWCk7CiAKLSAgICBWZWN0b3I8QVNDSUlM
aXRlcmFsLCA0PiByZXF1aXJlZEV4dGVuc2lvbnM7CisgICAgVmVjdG9yPEFTQ0lJTGl0ZXJhbFdp
dGhMZW5ndGgsIDQ+IHJlcXVpcmVkRXh0ZW5zaW9uczsKICAgICBpZiAobV9pc0ZvcldlYkdMMikg
ewogICAgICAgICAvLyBGb3IgV2ViR0wgMi4wIG9jY2x1c2lvbiBxdWVyaWVzIHRvIHdvcmsuCiAg
ICAgICAgIHJlcXVpcmVkRXh0ZW5zaW9ucy5hcHBlbmQoIkdMX0VYVF9vY2NsdXNpb25fcXVlcnlf
Ym9vbGVhbiJfcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NvY29hL1NvdXJjZUJ1ZmZlclBhcnNlcldlYk0uY3BwCmluZGV4IGQ4ZTY2
MDdmODljZC4uY2FkMjVjOGIxMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb2NvYS9Tb3VyY2VCdWZmZXJQYXJzZXJXZWJNLmNw
cApAQCAtNTcsNyArNTcsNyBAQCBuYW1lc3BhY2UgV1RGIHsKIHRlbXBsYXRlPHR5cGVuYW1lPiBz
dHJ1Y3QgTG9nQXJndW1lbnQ7CiAKIHRlbXBsYXRlPD4gc3RydWN0IExvZ0FyZ3VtZW50PHdlYm06
OlRyYWNrVHlwZT4gewotICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdG9TdHJpbmcod2VibTo6VHJh
Y2tUeXBlIHR5cGUpCisgICAgc3RhdGljIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdG9TdHJpbmco
d2VibTo6VHJhY2tUeXBlIHR5cGUpCiAgICAgewogICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKICAg
ICAgICAgY2FzZSB3ZWJtOjpUcmFja1R5cGU6OmtWaWRlbzogcmV0dXJuICJWaWRlbyJfczsKQEAg
LTczLDcgKzczLDcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgTG9nQXJndW1lbnQ8d2VibTo6VHJhY2tU
eXBlPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBMb2dBcmd1bWVudDx3ZWJtOjpJZD4gewot
ICAgIHN0YXRpYyBBU0NJSUxpdGVyYWwgdG9TdHJpbmcod2VibTo6SWQgaWQpCisgICAgc3RhdGlj
IEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdG9TdHJpbmcod2VibTo6SWQgaWQpCiAgICAgewogICAg
ICAgICBzd2l0Y2ggKGlkKSB7CiAgICAgICAgIGNhc2Ugd2VibTo6SWQ6OmtFYm1sOiByZXR1cm4g
IkVibWwiX3M7CkBAIC01MDMsMTAgKzUwMywxMCBAQCBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4g
U291cmNlQnVmZmVyUGFyc2VyV2ViTTo6c3VwcG9ydGVkTUlNRVR5cGVzKCkKICNlbHNlCiAgICAg
c3RhdGljIGNvbnN0ZXhwciBzdGQ6OmFycmF5IHR5cGVzIHsKICNpZiBFTkFCTEUoVlA5KQotICAg
ICAgICAidmlkZW8vd2VibSJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigi
dmlkZW8vd2VibSJfcyksCiAjZW5kaWYKICNpZiBFTkFCTEUoVk9SQklTKSB8fCBFTkFCTEUoT1BV
UykKLSAgICAgICAgImF1ZGlvL3dlYm0iX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0
ZXJhbD4oImF1ZGlvL3dlYm0iX3MpLAogI2VuZGlmCiAgICAgfTsKICAgICByZXR1cm4gdHlwZXM7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlckZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRnVuY3Rpb24uY3BwCmluZGV4IDYyOWY3MzRmYTU4YS4uYTA2ODI2NmU5N2JhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckZ1bmN0aW9uLmNwcApAQCAtNjcsNyArNjcsNyBAQCBBdG9tU3RyaW5nIEZpbHRl
ckZ1bmN0aW9uOjpmaWx0ZXJOYW1lKFR5cGUgZmlsdGVyVHlwZSkKICAgICBzdGF0aWMgY29uc3Rl
eHByIFNvcnRlZEFycmF5TWFwIG5hbWVzTWFwIHsgbmFtZXNBcnJheSB9OwogICAgIAogICAgIEFT
U0VSVChuYW1lc01hcC50cnlHZXQoZmlsdGVyVHlwZSkpOwotICAgIHJldHVybiBuYW1lc01hcC5n
ZXQoZmlsdGVyVHlwZSwgIiJfcyk7CisgICAgcmV0dXJuIEF0b21TdHJpbmcgeyBuYW1lc01hcC5n
ZXQoZmlsdGVyVHlwZSwgIiJfcykgfTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCmluZGV4IDFmNWNh
M2IyYWMzOS4uNWRiOTM5NDkyOWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvUGFzdGVib2FyZEd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L1Bhc3RlYm9hcmRHdGsuY3BwCkBAIC0yOTcsNyArMjk3LDcgQEAgdm9pZCBQYXN0ZWJvYXJkOjpy
ZWFkKFBhc3RlYm9hcmRXZWJDb250ZW50UmVhZGVyJiByZWFkZXIsIFdlYkNvbnRlbnRSZWFkaW5n
UG9saWMKICAgICBzdGF0aWMgY29uc3QgQVNDSUlMaXRlcmFsIGltYWdlVHlwZXNbXSA9IHsgImlt
YWdlL3BuZyJfcywgImltYWdlL2pwZWciX3MsICJpbWFnZS9naWYiX3MsICJpbWFnZS9ibXAiX3Ms
ICJpbWFnZS92bmQubWljcm9zb2Z0Lmljb24iX3MsICJpbWFnZS94LWljb24iX3MgfTsKICAgICBm
b3IgKGNvbnN0IGF1dG8mIGltYWdlVHlwZSA6IGltYWdlVHlwZXMpIHsKICAgICAgICAgaWYgKHR5
cGVzLmNvbnRhaW5zKGltYWdlVHlwZSkpIHsKLSAgICAgICAgICAgIGF1dG8gYnVmZmVyID0gcGxh
dGZvcm1TdHJhdGVnaWVzKCktPnBhc3RlYm9hcmRTdHJhdGVneSgpLT5yZWFkQnVmZmVyRnJvbUNs
aXBib2FyZChtX25hbWUsIGltYWdlVHlwZSk7CisgICAgICAgICAgICBhdXRvIGJ1ZmZlciA9IHBs
YXRmb3JtU3RyYXRlZ2llcygpLT5wYXN0ZWJvYXJkU3RyYXRlZ3koKS0+cmVhZEJ1ZmZlckZyb21D
bGlwYm9hcmQobV9uYW1lLCBTdHJpbmcgeyBpbWFnZVR5cGUgfSk7CiAgICAgICAgICAgICBpZiAo
IWJ1ZmZlci0+aXNFbXB0eSgpICYmIHJlYWRlci5yZWFkSW1hZ2UoYnVmZmVyLnJlbGVhc2VOb25O
dWxsKCksIGltYWdlVHlwZSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGFzdGVib2FyZE1hYy5tbSBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QYXN0ZWJvYXJkTWFjLm1tCmluZGV4IGEyYzI1
MGFhMmJlZi4uMGU2YzJjMmFlNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvUGFzdGVib2FyZE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
UGFzdGVib2FyZE1hYy5tbQpAQCAtNTU2LDcgKzU1Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfREVD
TEFSQVRJT05TX0VORAogICAgICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWRJbWFnZShidWZmZXIucmVsZWFzZU5v
bk51bGwoKSwgbWltZVR5cGUpOworICAgICAgICByZXR1cm4gcmVhZGVyLnJlYWRJbWFnZShidWZm
ZXIucmVsZWFzZU5vbk51bGwoKSwgU3RyaW5nIHsgbWltZVR5cGUgfSk7CiAgICAgfTsKIAogICAg
IFZlY3RvcjxJbWFnZVJlYWRpbmdJbmZvLCA2PiB0cmFuc2NvZGVkSW1hZ2VUeXBlc1RvUmVhZDsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAKaW5k
ZXggZjNmODdhNGY3ZTliLi4zMTAyYjQzMmY0MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCkBAIC05OTUsNyArOTk1LDcgQEAgU3RyaW5n
IG5vcm1hbGl6ZUhUVFBNZXRob2QoY29uc3QgU3RyaW5nJiBtZXRob2QpCiAgICAgICAgICAgICAv
LyBEb24ndCBib3RoZXIgYWxsb2NhdGluZyBhIG5ldyBzdHJpbmcgaWYgaXQncyBhbHJlYWR5IGFs
bCB1cHBlcmNhc2UuCiAgICAgICAgICAgICBpZiAobWV0aG9kID09IHZhbHVlKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICAgICAgcmV0
dXJuIFN0cmluZyB7IHZhbHVlIH07CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG1ldGhv
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29r
aWVKYXJEQi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2ll
SmFyREIuY3BwCmluZGV4IGNlMTFjN2Q4NjFhYS4uNzQyMDQ0ZDRhNzBhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFyREIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Db29raWVKYXJEQi5jcHAKQEAg
LTY0MCw3ICs2NDAsNyBAQCBib29sIENvb2tpZUphckRCOjpkZWxldGVBbGxDb29raWVzKCkKICAg
ICByZXR1cm4gZXhlY3V0ZVNRTFN0YXRlbWVudChtX2RhdGFiYXNlLnByZXBhcmVTdGF0ZW1lbnQo
REVMRVRFX0FMTF9DT09LSUVfU1FMKSk7CiB9CiAKLXZvaWQgQ29va2llSmFyREI6OmNyZWF0ZVBy
ZXBhcmVTdGF0ZW1lbnQoQVNDSUlMaXRlcmFsIHNxbCkKK3ZvaWQgQ29va2llSmFyREI6OmNyZWF0
ZVByZXBhcmVTdGF0ZW1lbnQoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBzcWwpCiB7CiAgICAgYXV0
byBzdGF0ZW1lbnQgPSBtX2RhdGFiYXNlLnByZXBhcmVIZWFwU3RhdGVtZW50KHNxbCk7CiAgICAg
QVNTRVJUKHN0YXRlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvQ29va2llSmFyREIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9Db29raWVKYXJEQi5oCmluZGV4IGM0ZWI2N2Q2ZjdjMy4uMjUyMzRhYzQ1NWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ29va2llSmFy
REIuaApAQCAtOTMsNyArOTMsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgdmVyaWZ5U2NoZW1hVmVy
c2lvbigpOwogICAgIHZvaWQgZGVsZXRlQWxsVGFibGVzKCk7CiAKLSAgICB2b2lkIGNyZWF0ZVBy
ZXBhcmVTdGF0ZW1lbnQoQVNDSUlMaXRlcmFsKTsKKyAgICB2b2lkIGNyZWF0ZVByZXBhcmVTdGF0
ZW1lbnQoQVNDSUlMaXRlcmFsV2l0aExlbmd0aCk7CiAgICAgU1FMaXRlU3RhdGVtZW50JiBwcmVw
YXJlZFN0YXRlbWVudChjb25zdCBTdHJpbmcmKTsKICAgICBib29sIGV4ZWN1dGVTUUxTdGF0ZW1l
bnQoRXhwZWN0ZWQ8U1FMaXRlU3RhdGVtZW50LCBpbnQ+JiYpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAppbmRleCA3Mjhj
Yjg4YmZiMDUuLjEzMWM4M2U0MWZjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jdXJsL0N1cmxDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybENvbnRleHQuY3BwCkBAIC04MzUsMTEgKzgzNSwxMSBAQCBz
dGQ6Om9wdGlvbmFsPE5ldHdvcmtMb2FkTWV0cmljcz4gQ3VybEhhbmRsZTo6Z2V0TmV0d29ya0xv
YWRNZXRyaWNzKE1vbm90b25pY1RpbQogICAgIG5ldHdvcmtMb2FkTWV0cmljcy5yZXNwb25zZVN0
YXJ0ID0gc3RhcnRUaW1lICsgU2Vjb25kcyhzdGFydFRyYW5zZmVyKTsKIAogICAgIGlmICh2ZXJz
aW9uID09IENVUkxfSFRUUF9WRVJTSU9OXzFfMCkKLSAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNz
LnByb3RvY29sID0gaHR0cFZlcnNpb24xMDsKKyAgICAgICAgbmV0d29ya0xvYWRNZXRyaWNzLnBy
b3RvY29sID0gU3RyaW5nIHsgaHR0cFZlcnNpb24xMCB9OwogICAgIGVsc2UgaWYgKHZlcnNpb24g
PT0gQ1VSTF9IVFRQX1ZFUlNJT05fMV8xKQotICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucHJv
dG9jb2wgPSBodHRwVmVyc2lvbjExOworICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucHJvdG9j
b2wgPSBTdHJpbmcgeyBodHRwVmVyc2lvbjExIH07CiAgICAgZWxzZSBpZiAodmVyc2lvbiA9PSBD
VVJMX0hUVFBfVkVSU0lPTl8yKQotICAgICAgICBuZXR3b3JrTG9hZE1ldHJpY3MucHJvdG9jb2wg
PSBodHRwVmVyc2lvbjI7CisgICAgICAgIG5ldHdvcmtMb2FkTWV0cmljcy5wcm90b2NvbCA9IFN0
cmluZyB7IGh0dHBWZXJzaW9uMiB9OwogCiAgICAgcmV0dXJuIG5ldHdvcmtMb2FkTWV0cmljczsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbi9XaW5kb3dzS2V5TmFt
ZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luL1dpbmRvd3NLZXlOYW1lcy5jcHAK
aW5kZXggMjZiYjIxMjk2N2Q2Li5lMzRjMjg3NTZkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbi9XaW5kb3dzS2V5TmFtZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3dpbi9XaW5kb3dzS2V5TmFtZXMuY3BwCkBAIC0yMzAsNyArMjMwLDcgQEAgc3Rh
dGljIFN0cmluZyBub25QcmludGFibGVWaXJ0dWFsS2V5VG9Eb21LZXkoaW50IHZpcnR1YWxLZXks
IEhLTCBsYXlvdXQpCiAgICAgICAgICAgICByZXR1cm4gZW50cnkudmlydHVhbEtleSA8IG5lZWRs
ZTsKICAgICAgICAgfSk7CiAgICAgaWYgKHJlc3VsdCAhPSBzdGQ6OmVuZChjTm9uUHJpbnRhYmxl
S2V5TWFwKSAmJiByZXN1bHQtPnZpcnR1YWxLZXkgPT0gdmlydHVhbEtleSkKLSAgICAgICAgcmV0
dXJuIHJlc3VsdC0+ZG9tS2V5OworICAgICAgICByZXR1cm4gU3RyaW5nIHsgcmVzdWx0LT5kb21L
ZXkgfTsKIAogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KQEAgLTQ3MCw3ICs0NzAsNyBAQCBTdHJp
bmcgV2luZG93c0tleU5hbWVzOjpkb21Db2RlRnJvbUxQYXJhbShMUEFSQU0gbFBhcmFtKQogICAg
ICAgICAgICAgcmV0dXJuIGVudHJ5LnNjYW5Db2RlIDwgbmVlZGxlOwogICAgICAgICB9KTsKICAg
ICBpZiAocmVzdWx0ICE9IHN0ZDo6ZW5kKGNEb21Db2RlTWFwKSAmJiByZXN1bHQtPnNjYW5Db2Rl
ID09IGV4dGVuZGVkU2NhbkNvZGUpCi0gICAgICAgIHJldHVybiByZXN1bHQtPmRvbUNvZGU7Cisg
ICAgICAgIHJldHVybiBTdHJpbmcgeyByZXN1bHQtPmRvbUNvZGUgfTsKIAogICAgIHJldHVybiAi
VW5pZGVudGlmaWVkIl9zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyQmFja2luZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXJCYWNraW5nLmNwcAppbmRleCAyMzQ1NTI1YjJjODAuLjExN2M0ZDQ5ZDI5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQmFja2luZy5jcHAKQEAgLTMz
MzgsNyArMzMzOCw3IEBAIHN0YXRpYyBSZWZQdHI8UGF0dGVybj4gcGF0dGVybkZvckRlc2NyaXB0
aW9uKFBhdHRlcm5EZXNjcmlwdGlvbiBkZXNjcmlwdGlvbiwgRmxvCiAgICAgICAgIEZvbnRDYXNj
YWRlIGZvbnQoV1RGTW92ZShmb250RGVzY3JpcHRpb24pLCAwLCAwKTsKICAgICAgICAgZm9udC51
cGRhdGUobnVsbHB0cik7CiAKLSAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0gVGV4dFJ1bihkZXNj
cmlwdGlvbi5uYW1lKTsKKyAgICAgICAgVGV4dFJ1biB0ZXh0UnVuID0gVGV4dFJ1bihTdHJpbmcg
eyBkZXNjcmlwdGlvbi5uYW1lIH0pOwogICAgICAgICBpbWFnZUNvbnRleHQuc2V0RmlsbENvbG9y
KGRlc2NyaXB0aW9uLmZpbGxDb2xvcik7CiAKICAgICAgICAgY29uc3RleHByIGZsb2F0IHRleHRH
YXAgPSA0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDU2NzBiNmJmYTY3
ZS4uZjE1YTVhNjQ0MTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC02
NjM1LDcgKzY2MzUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbnRlcm5hbHM6OnNldE1vY2tNZWRp
YVNlc3Npb25Db29yZGluYXRvckNvbW1hbmRzU2hvdWxkRmFpbChibwogfQogI2VuZGlmIC8vIEVO
QUJMRShNRURJQV9TRVNTSU9OKQogCi1jb25zdGV4cHIgQVNDSUlMaXRlcmFsIHN0cmluZyhQYXJ0
aWFsT3JkZXJpbmcgb3JkZXJpbmcpCitjb25zdGV4cHIgQVNDSUlMaXRlcmFsV2l0aExlbmd0aCBz
dHJpbmcoUGFydGlhbE9yZGVyaW5nIG9yZGVyaW5nKQogewogICAgIGlmIChpc19sdChvcmRlcmlu
ZykpCiAgICAgICAgIHJldHVybiAibGVzcyJfczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVl
c3QuY3BwCmluZGV4IDg5NWRjOWQwODU1MC4uZTc3NWU5ZjNiMTMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTUyMyw3ICs1MjMsNyBAQCBFeGNlcHRpb25Pcjx2b2lk
PiBYTUxIdHRwUmVxdWVzdDo6c2VuZChCbG9iJiBib2R5KQogICAgICAgICAgICAgLy8gRklYTUU6
IFdlIHdvdWxkIGxpa2UgdG8gc3VwcG9ydCBwb3N0aW5nIEJsb2JzIHRvIG5vbi1odHRwIFVSTHMg
KGUuZy4gY3VzdG9tIFVSTCBzY2hlbWVzKQogICAgICAgICAgICAgLy8gYnV0IGJlY2F1c2Ugb2Yg
dGhlIGFyY2hpdGVjdHVyZSBvZiBibG9iLWhhbmRsaW5nIHRoYXQgd2lsbCByZXF1aXJlIGEgZmFp
ciBhbW91bnQgb2Ygd29yay4KICAgICAgICAgICAgIAotICAgICAgICAgICAgQVNDSUlMaXRlcmFs
IGNvbnNvbGVNZXNzYWdlIHsgIlBPU1Qgb2YgYSBCbG9iIHRvIG5vbi1IVFRQIHByb3RvY29scyBp
biBYTUxIdHRwUmVxdWVzdC5zZW5kKCkgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkLiJfcyB9Owor
ICAgICAgICAgICAgYXV0byBjb25zb2xlTWVzc2FnZSA9ICJQT1NUIG9mIGEgQmxvYiB0byBub24t
SFRUUCBwcm90b2NvbHMgaW4gWE1MSHR0cFJlcXVlc3Quc2VuZCgpIGlzIGN1cnJlbnRseSB1bnN1
cHBvcnRlZC4iX3M7CiAgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIGNv
bnNvbGVNZXNzYWdlKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJl
cXVlc3QoKTsKQEAgLTU2NSw3ICs1NjUsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVx
dWVzdDo6c2VuZChET01Gb3JtRGF0YSYgYm9keSkKIAogRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0
cFJlcXVlc3Q6OnNlbmQoQXJyYXlCdWZmZXImIGJvZHkpCiB7Ci0gICAgQVNDSUlMaXRlcmFsIGNv
bnNvbGVNZXNzYWdlIHsgIkFycmF5QnVmZmVyIGlzIGRlcHJlY2F0ZWQgaW4gWE1MSHR0cFJlcXVl
c3Quc2VuZCgpLiBVc2UgQXJyYXlCdWZmZXJWaWV3IGluc3RlYWQuIl9zIH07CisgICAgYXV0byBj
b25zb2xlTWVzc2FnZSA9ICJBcnJheUJ1ZmZlciBpcyBkZXByZWNhdGVkIGluIFhNTEh0dHBSZXF1
ZXN0LnNlbmQoKS4gVXNlIEFycmF5QnVmZmVyVmlldyBpbnN0ZWFkLiJfczsKICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBN
ZXNzYWdlTGV2ZWw6Oldhcm5pbmcsIGNvbnNvbGVNZXNzYWdlKTsKICAgICByZXR1cm4gc2VuZEJ5
dGVzRGF0YShib2R5LmRhdGEoKSwgYm9keS5ieXRlTGVuZ3RoKCkpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aEZ1bmN0aW9ucy5jcHAKaW5kZXggMzIyZTNiZTBmNzVkLi4wNzIzYmVlNmNkMTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aEZ1bmN0aW9ucy5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUveG1sL1hQYXRoRnVuY3Rpb25zLmNwcApAQCAtNzA5LDcgKzcwOSw3IEBAIHN0
YXRpYyBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3RyaW5nLCBGdW5j
dGlvbk1hcFZhbHVlPiBjcmVhdGVGCiAKICAgICBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmlu
SG9vZEhhc2hNYXA8U3RyaW5nLCBGdW5jdGlvbk1hcFZhbHVlPiBtYXA7CiAgICAgZm9yIChhdXRv
JiBmdW5jdGlvbiA6IGZ1bmN0aW9ucykKLSAgICAgICAgbWFwLmFkZChmdW5jdGlvbi5uYW1lLCBm
dW5jdGlvbi5mdW5jdGlvbik7CisgICAgICAgIG1hcC5hZGQoU3RyaW5nIHsgZnVuY3Rpb24ubmFt
ZSB9LCBmdW5jdGlvbi5mdW5jdGlvbik7CiAgICAgcmV0dXJuIG1hcDsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3ht
bC9YUGF0aFBhcnNlci5jcHAKaW5kZXggZTMxNTY1ZWJlNzhkLi5lOGY5Y2I5Y2EzZmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3htbC9YUGF0aFBhcnNlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUveG1sL1hQYXRoUGFyc2VyLmNwcApAQCAtOTgsNyArOTgsNyBAQCBzdGF0aWMgTWVtb3J5
Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgU3RlcDo6QXhpcz4gY3Jl
YXRlQXhpc05hbQogICAgIH07CiAgICAgTWVtb3J5Q29tcGFjdExvb2t1cE9ubHlSb2Jpbkhvb2RI
YXNoTWFwPFN0cmluZywgU3RlcDo6QXhpcz4gbWFwOwogICAgIGZvciAoYXV0byYgYXhpc05hbWUg
OiBheGlzTmFtZUxpc3QpCi0gICAgICAgIG1hcC5hZGQoYXhpc05hbWUubmFtZSwgYXhpc05hbWUu
YXhpcyk7CisgICAgICAgIG1hcC5hZGQoU3RyaW5nIHsgYXhpc05hbWUubmFtZSB9LCBheGlzTmFt
ZS5heGlzKTsKICAgICByZXR1cm4gbWFwOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGljc0RhdGFiYXNl
U3RvcmUuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1Jlc291
cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAppbmRleCA1MTZhMmY1MDJjYzkuLjUz
NGRjYWZhNGM2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1Jlc291cmNlTG9hZFN0YXRpc3RpY3NEYXRhYmFzZVN0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL0NsYXNzaWZpZXIvUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0RhdGFiYXNlU3RvcmUuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAgY29uc3QgTWVtb3J5Q29tcGFj
dExvb2t1cE9ubHlSb2Jpbkhvb2RIYXNoTWFwPFN0cmluZywgVGFibGVBbmRJbmRleFBhaXI+JiBS
ZXNvdXIKIAogU3Bhbjxjb25zdCBBU0NJSUxpdGVyYWw+IFJlc291cmNlTG9hZFN0YXRpc3RpY3NE
YXRhYmFzZVN0b3JlOjpzb3J0ZWRUYWJsZXMoKQogewotICAgIHN0YXRpYyBjb25zdGV4cHIgc3Rk
OjphcnJheSBzb3J0ZWRUYWJsZXMgeworICAgIHN0YXRpYyBjb25zdGV4cHIgc3RkOjphcnJheTxB
U0NJSUxpdGVyYWwsIDEzPiBzb3J0ZWRUYWJsZXMgewogICAgICAgICAiT2JzZXJ2ZWREb21haW5z
Il9zLAogICAgICAgICAiVG9wTGV2ZWxEb21haW5zIl9zLAogICAgICAgICAiU3RvcmFnZUFjY2Vz
c1VuZGVyVG9wRnJhbWVEb21haW5zIl9zLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9EYXRhYmFzZVV0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL0RhdGFiYXNlVXRpbGl0aWVzLmNwcAppbmRleCAxOGYxMWQzMzllMWUuLjcxOTZjNGQw
NDE3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0
aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9EYXRhYmFzZVV0
aWxpdGllcy5jcHAKQEAgLTI5OCw3ICsyOTgsNyBAQCB2b2lkIERhdGFiYXNlVXRpbGl0aWVzOjpt
aWdyYXRlRGF0YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkoKQogCiAgICAgLy8gTWFpbnRhaW4gdGhl
IG9yZGVyIG9mIHRhYmxlcyB0byBtYWtlIHN1cmUgdGhlIE9ic2VydmVkRG9tYWlucyB0YWJsZSBp
cyBjcmVhdGVkIGZpcnN0LiBPdGhlciB0YWJsZXMgaGF2ZSBmb3JlaWduIGtleSBjb25zdHJhaW50
cyByZWZlcmVuY2luZyBpdC4KICAgICBmb3IgKGF1dG8mIHRhYmxlIDogc29ydGVkVGFibGVzKCkp
IHsKLSAgICAgICAgYXV0byBtaWdyYXRlVGFibGVEYXRhID0gaW5zZXJ0RGlzdGluY3RWYWx1ZXNJ
blRhYmxlU3RhdGVtZW50KG1fZGF0YWJhc2UsIHRhYmxlKTsKKyAgICAgICAgYXV0byBtaWdyYXRl
VGFibGVEYXRhID0gaW5zZXJ0RGlzdGluY3RWYWx1ZXNJblRhYmxlU3RhdGVtZW50KG1fZGF0YWJh
c2UsIFN0cmluZyB7IHRhYmxlIH0pOwogICAgICAgICBpZiAoIW1pZ3JhdGVUYWJsZURhdGEgfHwg
bWlncmF0ZVRhYmxlRGF0YS0+c3RlcCgpICE9IFNRTElURV9ET05FKSB7CiAgICAgICAgICAgICB0
cmFuc2FjdGlvbi5yb2xsYmFjaygpOwogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJp
dmF0ZUNsaWNrTWVhc3VyZW1lbnQsICIlcCAtIERhdGFiYXNlVXRpbGl0aWVzOjptaWdyYXRlRGF0
YVRvTmV3VGFibGVzSWZOZWNlc3NhcnkgKHRhYmxlICVzKSBmYWlsZWQgdG8gbWlncmF0ZSBzY2hl
bWEsIGVycm9yIG1lc3NhZ2U6ICVzIiwgdGhpcywgdGFibGUuY2hhcmFjdGVycygpLCBtX2RhdGFi
YXNlLmxhc3RFcnJvck1zZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRh
YmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1ByaXZhdGVDbGlja01lYXN1
cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJhc2UuY3BwCmluZGV4IGMwOTBjYmU1
NzE4NC4uYWRhOTFmOGQ4YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1ByaXZhdGVDbGlja01lYXN1cmVtZW50L1ByaXZhdGVDbGlja01lYXN1cmVtZW50RGF0YWJh
c2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUHJpdmF0ZUNsaWNrTWVh
c3VyZW1lbnQvUHJpdmF0ZUNsaWNrTWVhc3VyZW1lbnREYXRhYmFzZS5jcHAKQEAgLTExMSw3ICsx
MTEsNyBAQCBjb25zdCBNZW1vcnlDb21wYWN0TG9va3VwT25seVJvYmluSG9vZEhhc2hNYXA8U3Ry
aW5nLCBUYWJsZUFuZEluZGV4UGFpcj4mIERhdGFiYQogCiBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJh
bD4gRGF0YWJhc2U6OnNvcnRlZFRhYmxlcygpCiB7Ci0gICAgc3RhdGljIHN0ZDo6YXJyYXkgc29y
dGVkVGFibGVzIHsKKyAgICBzdGF0aWMgc3RkOjphcnJheTxBU0NJSUxpdGVyYWwsIDM+IHNvcnRl
ZFRhYmxlcyB7CiAgICAgICAgICJQQ01PYnNlcnZlZERvbWFpbnMiX3MsCiAgICAgICAgICJVbmF0
dHJpYnV0ZWRQcml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcywKICAgICAgICAgIkF0dHJpYnV0ZWRQ
cml2YXRlQ2xpY2tNZWFzdXJlbWVudCJfcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKaW5kZXgg
MmZiOGFjNTc4ZjNkLi5iN2VkNWU4NDFjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3Mvc3RvcmFnZS9PcmlnaW5TdG9yYWdlTWFuYWdlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zdG9yYWdlL09yaWdpblN0b3JhZ2VNYW5hZ2VyLmNwcApA
QCAtNDEsNyArNDEsNyBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotc3RhdGljIGNvbnN0ZXhw
ciBhdXRvIG9yaWdpbkZpbGVOYW1lID0gIm9yaWdpbiJfczsKK3N0YXRpYyBjb25zdGV4cHIgQVND
SUlMaXRlcmFsIG9yaWdpbkZpbGVOYW1lID0gIm9yaWdpbiJfczsKIGVudW0gY2xhc3MgT3JpZ2lu
U3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXRNb2RlIDogYm9vbCB7IEJlc3RFZmZvcnQsIFBl
cnNpc3RlbnQgfTsKIAogY2xhc3MgT3JpZ2luU3RvcmFnZU1hbmFnZXI6OlN0b3JhZ2VCdWNrZXQg
ewpAQCAtMzkxLDcgKzM5MSw3IEBAIFN0cmluZyBPcmlnaW5TdG9yYWdlTWFuYWdlcjo6U3RvcmFn
ZUJ1Y2tldDo6cmVzb2x2ZWRJREJTdG9yYWdlUGF0aCgpCiAKIFN0cmluZyBPcmlnaW5TdG9yYWdl
TWFuYWdlcjo6b3JpZ2luRmlsZUlkZW50aWZpZXIoKQogewotICAgIHJldHVybiBvcmlnaW5GaWxl
TmFtZTsKKyAgICByZXR1cm4gU3RyaW5nIHsgb3JpZ2luRmlsZU5hbWUgfTsKIH0KIAogc3RhdGlj
IFJlZjxRdW90YU1hbmFnZXI+IGNyZWF0ZVF1b3RhTWFuYWdlcih1aW50NjRfdCBxdW90YSwgY29u
c3QgU3RyaW5nJiBpZGJTdG9yYWdlUGF0aCwgY29uc3QgU3RyaW5nJiBjYWNoZVN0b3JhZ2VQYXRo
LCBRdW90YU1hbmFnZXI6OkluY3JlYXNlUXVvdGFGdW5jdGlvbiYmIGluY3JlYXNlUXVvdGFGdW5j
dGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0vSVBDL0pTSVBDQmluZGlu
Zy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwCmluZGV4
IDBiZTM5NWMxYzM3Yy4uZTg5YzI1MDU2MjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1Bs
YXRmb3JtL0lQQy9KU0lQQ0JpbmRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvUGxhdGZvcm0v
SVBDL0pTSVBDQmluZGluZy5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIAogbmFtZXNwYWNlIElQQyB7
CiAKLXN0YXRpYyBKU0M6OkpTVmFsdWUganNWYWx1ZUZvckRlY29kZWRTdHJpbmdBcmd1bWVudFZh
bHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgQVNDSUlMaXRlcmFsIHR5cGUpCitzdGF0aWMgSlNDOjpKU1ZhbHVlIGpzVmFsdWVGb3JEZWNv
ZGVkU3RyaW5nQXJndW1lbnRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFN0cmluZyYgdmFsdWUsIEFTQ0lJTGl0ZXJhbFdpdGhMZW5ndGggdHlwZSkKIHsKICAg
ICBhdXRvJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJWaWV3SW1wbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlZp
ZXdJbXBsLm1tCmluZGV4IDQ3ZTlkY2E1MDBiMS4uMWZlNjg2ZWEwZTJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjkyMiw3ICsyOTIyLDcg
QEAgc3RhdGljIGNvbnN0IFNlbGVjdG9yTmFtZU1hcCYgc2VsZWN0b3JFeGNlcHRpb25NYXAoKQog
ICAgIH07CiAKICAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1lcykKLSAgICAgICAgbWFwLmdldCgp
LmFkZChuYW1lLnNlbGVjdG9yLCBuYW1lLmNvbW1hbmROYW1lKTsKKyAgICAgICAgbWFwLmdldCgp
LmFkZChuYW1lLnNlbGVjdG9yLCBTdHJpbmcgeyBuYW1lLmNvbW1hbmROYW1lIH0pOwogCiAgICAg
cmV0dXJuIG1hcDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmlu
ZGV4IDFjN2FkNDRjMjQ2YS4uYTJlNTFiM2Q2YmU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTgxOTIsMzEgKzgxOTIsMzEgQEAgc3RhdGljIFNwYW48Y29u
c3QgQVNDSUlMaXRlcmFsPiBncHVJT0tpdENsYXNzZXMoKQogewogICAgIHN0YXRpYyBjb25zdGV4
cHIgc3RkOjphcnJheSBzZXJ2aWNlcyB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAgICAg
ICAgIkFHWERldmljZVVzZXJDbGllbnQiX3MsCi0gICAgICAgICJJT0dQVSJfcywKLSAgICAgICAg
IklPU3VyZmFjZVJvb3RVc2VyQ2xpZW50Il9zLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxp
dGVyYWw+KCJBR1hEZXZpY2VVc2VyQ2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVND
SUlMaXRlcmFsPigiSU9HUFUiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+
KCJJT1N1cmZhY2VSb290VXNlckNsaWVudCJfcyksCiAjZW5kaWYKICNpZiBQTEFURk9STShNQUMp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgICAgICAiQUdQTUNsaWVudCJfcywKLSAgICAg
ICAgIkFwcGxlR3JhcGhpY3NDb250cm9sQ2xpZW50Il9zLAotICAgICAgICAiQXBwbGVHcmFwaGlj
c1BvbGljeUNsaWVudCJfcywKLSAgICAgICAgIkFwcGxlSW50ZWxNRVVzZXJDbGllbnQiX3MsCi0g
ICAgICAgICJBcHBsZU1HUFVQb3dlckNvbnRyb2xDbGllbnQiX3MsCi0gICAgICAgICJBcHBsZVNO
QkZCVXNlckNsaWVudCJfcywKLSAgICAgICAgIkFwcGxlVXBzdHJlYW1Vc2VyQ2xpZW50Il9zLAot
ICAgICAgICAiQXVkaW9BVVVDIl9zLAotICAgICAgICAiSU9BY2NlbGVyYXRpb25Vc2VyQ2xpZW50
Il9zLAotICAgICAgICAiSU9BY2NlbGVyYXRvciJfcywKLSAgICAgICAgIklPQXVkaW9Db250cm9s
VXNlckNsaWVudCJfcywKLSAgICAgICAgIklPQXVkaW9FbmdpbmVVc2VyQ2xpZW50Il9zLAotICAg
ICAgICAiSU9TdXJmYWNlUm9vdFVzZXJDbGllbnQiX3MsCisgICAgICAgIHN0YXRpY19jYXN0PEFT
Q0lJTGl0ZXJhbD4oIkFHUE1DbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxp
dGVyYWw+KCJBcHBsZUdyYXBoaWNzQ29udHJvbENsaWVudCJfcyksCisgICAgICAgIHN0YXRpY19j
YXN0PEFTQ0lJTGl0ZXJhbD4oIkFwcGxlR3JhcGhpY3NQb2xpY3lDbGllbnQiX3MpLAorICAgICAg
ICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJBcHBsZUludGVsTUVVc2VyQ2xpZW50Il9zKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQXBwbGVNR1BVUG93ZXJDb250cm9s
Q2xpZW50Il9zKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiQXBwbGVTTkJG
QlVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVyYWw+KCJBcHBs
ZVVwc3RyZWFtVXNlckNsaWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJh
bD4oIkF1ZGlvQVVVQyJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0ZXJhbD4oIklP
QWNjZWxlcmF0aW9uVXNlckNsaWVudCJfcyksCisgICAgICAgIHN0YXRpY19jYXN0PEFTQ0lJTGl0
ZXJhbD4oIklPQWNjZWxlcmF0b3IiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxBU0NJSUxpdGVy
YWw+KCJJT0F1ZGlvQ29udHJvbFVzZXJDbGllbnQiX3MpLAorICAgICAgICBzdGF0aWNfY2FzdDxB
U0NJSUxpdGVyYWw+KCJJT0F1ZGlvRW5naW5lVXNlckNsaWVudCJfcyksCisgICAgICAgIHN0YXRp
Y19jYXN0PEFTQ0lJTGl0ZXJhbD4oIklPU3VyZmFjZVJvb3RVc2VyQ2xpZW50Il9zKSwKICNlbmRp
ZgogICAgICAgICAvLyBGSVhNRTogSXMgdGhpcyBhbHNvIG5lZWRlZCBpbiBQTEFURk9STShNQUND
QVRBTFlTVCk/CiAjaWYgUExBVEZPUk0oTUFDKSAmJiBDUFUoQVJNNjQpCi0gICAgICAgICJJT01v
YmlsZUZyYW1lYnVmZmVyVXNlckNsaWVudCJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlM
aXRlcmFsPigiSU9Nb2JpbGVGcmFtZWJ1ZmZlclVzZXJDbGllbnQiX3MpLAogI2VuZGlmCiAjaWYg
KFBMQVRGT1JNKE1BQykgJiYgQ1BVKEFSTTY0KSkgfHwgUExBVEZPUk0oSU9TX0ZBTUlMWSkKLSAg
ICAgICAgIklPU3VyZmFjZUFjY2VsZXJhdG9yQ2xpZW50Il9zLAorICAgICAgICBzdGF0aWNfY2Fz
dDxBU0NJSUxpdGVyYWw+KCJJT1N1cmZhY2VBY2NlbGVyYXRvckNsaWVudCJfcyksCiAjZW5kaWYK
ICAgICB9OwogICAgIHJldHVybiBzZXJ2aWNlczsKQEAgLTgyMjUsOSArODIyNSw5IEBAIHN0YXRp
YyBTcGFuPGNvbnN0IEFTQ0lJTGl0ZXJhbD4gZ3B1SU9LaXRDbGFzc2VzKCkKIHN0YXRpYyBTcGFu
PGNvbnN0IEFTQ0lJTGl0ZXJhbD4gZ3B1TWFjaFNlcnZpY2VzKCkKIHsKICAgICBzdGF0aWMgY29u
c3RleHByIHN0ZDo6YXJyYXkgc2VydmljZXMgewotICAgICAgICAiY29tLmFwcGxlLk1UTENvbXBp
bGVyU2VydmljZSJfcywKKyAgICAgICAgc3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiY29tLmFw
cGxlLk1UTENvbXBpbGVyU2VydmljZSJfcyksCiAjaWYgUExBVEZPUk0oTUFDKSB8fCBQTEFURk9S
TShNQUNDQVRBTFlTVCkKLSAgICAgICAgImNvbS5hcHBsZS5jdm1zU2VydiJfcywKKyAgICAgICAg
c3RhdGljX2Nhc3Q8QVNDSUlMaXRlcmFsPigiY29tLmFwcGxlLmN2bXNTZXJ2Il9zKSwKICNlbmRp
ZgogICAgIH07CiAgICAgcmV0dXJuIHNlcnZpY2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvSVBDVGVzdGluZ0FQSS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9JUENUZXN0aW5nQVBJLmNwcAppbmRleCBlZTE2NDVlZjRlMGMuLjNl
OWE4ZDUyMGYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
SVBDVGVzdGluZ0FQSS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
SVBDVGVzdGluZ0FQSS5jcHAKQEAgLTYxLDExICs2MSwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsK
IAogbmFtZXNwYWNlIElQQ1Rlc3RpbmdBUEkgewogCi1zdGF0aWMgY29uc3RleHByIGF1dG8gcHJv
Y2Vzc1RhcmdldE5hbWVVSSA9ICJVSSJfczsKK3N0YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFs
IHByb2Nlc3NUYXJnZXROYW1lVUkgPSAiVUkiX3M7CiAjaWYgRU5BQkxFKEdQVV9QUk9DRVNTKQot
c3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2Nlc3NUYXJnZXROYW1lR1BVID0gIkdQVSJfczsKK3N0
YXRpYyBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHByb2Nlc3NUYXJnZXROYW1lR1BVID0gIkdQVSJf
czsKICNlbmRpZgotc3RhdGljIGNvbnN0ZXhwciBhdXRvIHByb2Nlc3NUYXJnZXROYW1lTmV0d29y
a2luZyA9ICJOZXR3b3JraW5nIl9zOworc3RhdGljIGNvbnN0ZXhwciBBU0NJSUxpdGVyYWwgcHJv
Y2Vzc1RhcmdldE5hbWVOZXR3b3JraW5nID0gIk5ldHdvcmtpbmciX3M7CiAKIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPHVpbnQ2NF90PiBkZXN0aW5hdGlvbklERnJvbUFyZ3VtZW50KEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKik7CiBzdGF0aWMgc3RkOjpvcHRpb25h
bDx1aW50NjRfdD4gbWVzc2FnZUlERnJvbUFyZ3VtZW50KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlUmVmLCBKU1ZhbHVlUmVmKik7CkBAIC0yMDY1LDEzICsyMDY1LDEzIEBAIEpTVmFsdWVS
ZWYgSlNJUEM6OnByb2Nlc3NUYXJnZXRzKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiB0aGlzT2JqZWN0LCBKCiAgICAgSlNDOjpKU09iamVjdCogcHJvY2Vzc1RhcmdldHNPYmplY3Qg
PSBKU0M6OmNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LCBudWxscHRyKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7
CiAgICAgaW50IGluZGV4ID0gMDsKLSAgICBwcm9jZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0
SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBKU0M6OmpzU3RyaW5nKHZtLCBwcm9jZXNzVGFy
Z2V0TmFtZVVJKSk7CisgICAgcHJvY2Vzc1RhcmdldHNPYmplY3QtPnB1dERpcmVjdEluZGV4KGds
b2JhbE9iamVjdCwgaW5kZXgrKywgSlNDOjpqc1N0cmluZyh2bSwgU3RyaW5nIHsgcHJvY2Vzc1Rh
cmdldE5hbWVVSSB9KSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCkpOwogI2lmIEVOQUJMRShHUFVfUFJPQ0VTUykKLSAgICBwcm9j
ZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LCBpbmRleCsrLCBK
U0M6OmpzU3RyaW5nKHZtLCBwcm9jZXNzVGFyZ2V0TmFtZUdQVSkpOworICAgIHByb2Nlc3NUYXJn
ZXRzT2JqZWN0LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QsIGluZGV4KyssIEpTQzo6anNT
dHJpbmcodm0sIFN0cmluZyB7IHByb2Nlc3NUYXJnZXROYW1lR1BVIH0pKTsKICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CiAjZW5k
aWYKLSAgICBwcm9jZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0
LCBpbmRleCsrLCBKU0M6OmpzU3RyaW5nKHZtLCBwcm9jZXNzVGFyZ2V0TmFtZU5ldHdvcmtpbmcp
KTsKKyAgICBwcm9jZXNzVGFyZ2V0c09iamVjdC0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0
LCBpbmRleCsrLCBKU0M6OmpzU3RyaW5nKHZtLCBTdHJpbmcgeyBwcm9jZXNzVGFyZ2V0TmFtZU5l
dHdvcmtpbmcgfSkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpKTsKICAgICByZXR1cm4gdG9SZWYodm0sIHByb2Nlc3NUYXJnZXRz
T2JqZWN0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L21hYy9XZWJQYWdlTWFjLm1tIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1dlYlBhZ2VNYWMubW0KaW5kZXggMWE3ODlmOTlkODlmLi4zOTMwZjBjOTRlNmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCkBA
IC0yMzAsNyArMjMwLDcgQEAgc3RhdGljIFN0cmluZyBjb21tYW5kTmFtZUZvclNlbGVjdG9yTmFt
ZShjb25zdCBTdHJpbmcmIHNlbGVjdG9yTmFtZSkKICAgICB9OwogICAgIHN0YXRpYyBjb25zdGV4
cHIgU29ydGVkQXJyYXlNYXAgbWFwIHsgc2VsZWN0b3JFeGNlcHRpb25zIH07CiAgICAgaWYgKGF1
dG8gY29tbWFuZE5hbWUgPSBtYXAudHJ5R2V0KHNlbGVjdG9yTmFtZSkpCi0gICAgICAgIHJldHVy
biAqY29tbWFuZE5hbWU7CisgICAgICAgIHJldHVybiBTdHJpbmcgeyAqY29tbWFuZE5hbWUgfTsK
IAogICAgIC8vIFJlbW92ZSB0aGUgdHJhaWxpbmcgY29sb24uCiAgICAgLy8gTm8gbmVlZCB0byBj
YXBpdGFsaXplIHRoZSBjb21tYW5kIG5hbWUgc2luY2UgRWRpdG9yIGNvbW1hbmQgbmFtZXMgYXJl
IG5vdCBjYXNlIHNlbnNpdGl2ZS4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455546</attachid>
            <date>2022-03-23 13:50:36 -0700</date>
            <delta_ts>2022-03-23 13:51:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238162-20220323135035.patch</filename>
            <type>text/plain</type>
            <size>3924</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY4NzM2MjM2MjJhMGMwN2UxYWYyZTU4
OTQ2OTk1MmQwMGJkZDY1MmQuLjY5ZGM3NzY5ZmUyMjMwM2NkODNmMzQ4YzE2ZmM5YTMwMzJmMzJh
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBpbmxpbmUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgY29uc3Ry
dWN0b3Igc28gdGhlIGNvbXBpbGVyIGNhbiBvcHRpbWl6ZSBvdXQgc3RybGVuKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE2MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgaGF2ZSB2ZXJpZmllZCB1
c2luZyBhIHByb2ZpbGVyIHRoYXQgc3RybGVuKCkgaXMgbm8gbG9uZ2VyIGNhbGxlZCB1bmRlciBT
dHJpbmc6OlN0cmluZyhXVEY6OkFTQ0lJTGl0ZXJhbCkKKyAgICAgICAgb3IgU3RyaW5nSW1wbDo6
Y3JlYXRlRnJvbUxpdGVyYWwoV1RGOjpBU0NJSUxpdGVyYWwpIHdoZW4gcnVubmluZyBTcGVlZG9t
ZXRlci4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAqIHd0
Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgICog
d3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6U3RyaW5nKToKKwog
MjAyMi0wMy0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEltcGxlbWVudCBQQ00gdG8gU0tBZE5ldHdvcmsgYnJpZGdlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcAppbmRleCBkNTg0NTEwMGNlMjYxYTI4NjJkYjRhMTBmNmY4MjEyZDM5
YWZlMjYyLi40NjIwMTNkZTViNTZjY2Y4ODBkNjg2ZjZjZmIyMDNkYWRlNGVkZjk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTE2MywxMSArMTYzLDYgQEAgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMp
CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGNoYXJhY3RlcnMsIHN0cmxlbihjaGFyYWN0
ZXJzKSk7CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bChBU0NJSUxpdGVyYWwgbGl0ZXJhbCkKLXsKLSAgICByZXR1cm4gY3JlYXRlRnJvbUxpdGVyYWwo
bGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpOwotfQotCiBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKaW5kZXggYzc2Y2Q1MjM2NzYxMWM5NDJkMzQyYmYwOTFiMTYyYTBhNjc3NDRl
MC4uNjM2ZTcyMzY0NTEyYzQ3YzA2M2Q2N2UyYmJlYTRiZThjZjg0ZTU1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmgKQEAgLTk4Miw2ICs5ODIsMTEgQEAgQUxXQVlTX0lOTElORSBSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5nSW1w
bCYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5n
SW1wbChyZXAubV9kYXRhMTYgKyBvZmZzZXQsIGxlbmd0aCwgKm93bmVyUmVwKSk7CiB9CiAKK2lu
bGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoQVNDSUlM
aXRlcmFsIGxpdGVyYWwpCit7CisgICAgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGxpdGVyYWwu
Y2hhcmFjdGVycygpLCBsaXRlcmFsLmxlbmd0aCgpKTsKK30KKwogdGVtcGxhdGU8dW5zaWduZWQg
Y2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3Vu
dF0pCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoY2hhcmFjdGVyQ291bnQgPiAxLCBTdHJpbmdJbXBs
RnJvbUxpdGVyYWxOb3RFbXB0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggM2E5
MWE2NzdkNWMwMzhlMDNiN2M1ZWIzMmYzNzMzYmVmYzA4Y2E1NS4uYWIxYWQ5YTYxYTJhODAxMDkx
YTZmOTNkNGU1NGY3YjJkYjdjNWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAt
NzksMTEgKzc5LDYgQEAgU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciogbnVsbFRlcm1pbmF0ZWRT
dHJpbmcpCiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4obnVsbFRlcm1pbmF0ZWRTdHJpbmcpKTsKIH0KIAotU3RyaW5nOjpT
dHJpbmcoQVNDSUlMaXRlcmFsIGNoYXJhY3RlcnMpCi0gICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6
Y3JlYXRlRnJvbUxpdGVyYWwoY2hhcmFjdGVycykpCi17Ci19Ci0KIHZvaWQgU3RyaW5nOjphcHBl
bmQoY29uc3QgU3RyaW5nJiBvdGhlclN0cmluZykKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBl
eHRyZW1lbHkgaW5lZmZpY2llbnQuIFNvIG11Y2ggc28gdGhhdCB3ZSBtaWdodCB3YW50IHRvIHRh
a2UgdGhpcyBvdXQgb2YgU3RyaW5nJ3MgQVBJLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXgg
NTExYjljMTY0YTFhNThjMTFkNGNmZDUzMjFlMzJmNTI3YjRjOWVkNi4uYTIwNzI4ZjkzYzQyZmZl
OTA3MDg3OTU4NzA0MGYwYmI3OWI1NjY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC00
NzAsNiArNDcwLDExIEBAIGlubGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKiBz
dHJpbmcpCiB7CiB9CiAKK2lubGluZSBTdHJpbmc6OlN0cmluZyhBU0NJSUxpdGVyYWwgY2hhcmFj
dGVycykKKyAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChjaGFyYWN0
ZXJzKSkKK3sKK30KKwogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXI+IFN0cmluZzo6U3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIHZlY3RvcikKICAgICA6IG1faW1wbCh2ZWN0b3Iu
c2l6ZSgpID8gU3RyaW5nSW1wbDo6Y3JlYXRlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkp
IDogUmVmPFN0cmluZ0ltcGw+IHsgKlN0cmluZ0ltcGw6OmVtcHR5KCkgfSkKIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455547</attachid>
            <date>2022-03-23 13:51:15 -0700</date>
            <delta_ts>2022-03-23 16:52:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238162-20220323135115.patch</filename>
            <type>text/plain</type>
            <size>3924</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY4NzM2MjM2MjJhMGMwN2UxYWYyZTU4
OTQ2OTk1MmQwMGJkZDY1MmQuLmRhYzJiNjA2NzVjNmMwZGVjZjYxNjA3YjIyZGIyZTE4Y2Y4ZTNk
ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgY29uc3Ry
dWN0b3Igc28gdGhlIGNvbXBpbGVyIGNhbiBvcHRpbWl6ZSBvdXQgc3RybGVuKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE2MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEkgaGF2ZSB2ZXJpZmllZCB1
c2luZyBhIHByb2ZpbGVyIHRoYXQgc3RybGVuKCkgaXMgbm8gbG9uZ2VyIGNhbGxlZCB1bmRlciBT
dHJpbmc6OlN0cmluZyhXVEY6OkFTQ0lJTGl0ZXJhbCkKKyAgICAgICAgb3IgU3RyaW5nSW1wbDo6
Y3JlYXRlRnJvbUxpdGVyYWwoV1RGOjpBU0NJSUxpdGVyYWwpIHdoZW4gcnVubmluZyBTcGVlZG9t
ZXRlci4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAqIHd0
Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgICog
d3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6U3RyaW5nKToKKwog
MjAyMi0wMy0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEltcGxlbWVudCBQQ00gdG8gU0tBZE5ldHdvcmsgYnJpZGdlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcAppbmRleCBkNTg0NTEwMGNlMjYxYTI4NjJkYjRhMTBmNmY4MjEyZDM5
YWZlMjYyLi40NjIwMTNkZTViNTZjY2Y4ODBkNjg2ZjZjZmIyMDNkYWRlNGVkZjk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTE2MywxMSArMTYzLDYgQEAgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMp
CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGNoYXJhY3RlcnMsIHN0cmxlbihjaGFyYWN0
ZXJzKSk7CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bChBU0NJSUxpdGVyYWwgbGl0ZXJhbCkKLXsKLSAgICByZXR1cm4gY3JlYXRlRnJvbUxpdGVyYWwo
bGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpOwotfQotCiBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKaW5kZXggYzc2Y2Q1MjM2NzYxMWM5NDJkMzQyYmYwOTFiMTYyYTBhNjc3NDRl
MC4uNjM2ZTcyMzY0NTEyYzQ3YzA2M2Q2N2UyYmJlYTRiZThjZjg0ZTU1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmgKQEAgLTk4Miw2ICs5ODIsMTEgQEAgQUxXQVlTX0lOTElORSBSZWY8U3Ry
aW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5nSW1w
bCYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyAoTm90TnVsbCwgc3RyaW5nSW1wbCkgU3RyaW5n
SW1wbChyZXAubV9kYXRhMTYgKyBvZmZzZXQsIGxlbmd0aCwgKm93bmVyUmVwKSk7CiB9CiAKK2lu
bGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoQVNDSUlM
aXRlcmFsIGxpdGVyYWwpCit7CisgICAgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGxpdGVyYWwu
Y2hhcmFjdGVycygpLCBsaXRlcmFsLmxlbmd0aCgpKTsKK30KKwogdGVtcGxhdGU8dW5zaWduZWQg
Y2hhcmFjdGVyQ291bnQ+IEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3Vu
dF0pCiB7CiAgICAgQ09NUElMRV9BU1NFUlQoY2hhcmFjdGVyQ291bnQgPiAxLCBTdHJpbmdJbXBs
RnJvbUxpdGVyYWxOb3RFbXB0eSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dU
RlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKaW5kZXggM2E5
MWE2NzdkNWMwMzhlMDNiN2M1ZWIzMmYzNzMzYmVmYzA4Y2E1NS4uYWIxYWQ5YTYxYTJhODAxMDkx
YTZmOTNkNGU1NGY3YjJkYjdjNWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4dC9X
VEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmNwcApAQCAt
NzksMTEgKzc5LDYgQEAgU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciogbnVsbFRlcm1pbmF0ZWRT
dHJpbmcpCiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4obnVsbFRlcm1pbmF0ZWRTdHJpbmcpKTsKIH0KIAotU3RyaW5nOjpT
dHJpbmcoQVNDSUlMaXRlcmFsIGNoYXJhY3RlcnMpCi0gICAgOiBtX2ltcGwoU3RyaW5nSW1wbDo6
Y3JlYXRlRnJvbUxpdGVyYWwoY2hhcmFjdGVycykpCi17Ci19Ci0KIHZvaWQgU3RyaW5nOjphcHBl
bmQoY29uc3QgU3RyaW5nJiBvdGhlclN0cmluZykKIHsKICAgICAvLyBGSVhNRTogVGhpcyBpcyBl
eHRyZW1lbHkgaW5lZmZpY2llbnQuIFNvIG11Y2ggc28gdGhhdCB3ZSBtaWdodCB3YW50IHRvIHRh
a2UgdGhpcyBvdXQgb2YgU3RyaW5nJ3MgQVBJLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9XVEZTdHJpbmcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKaW5kZXgg
NTExYjljMTY0YTFhNThjMTFkNGNmZDUzMjFlMzJmNTI3YjRjOWVkNi4uYTIwNzI4ZjkzYzQyZmZl
OTA3MDg3OTU4NzA0MGYwYmI3OWI1NjY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvdGV4
dC9XVEZTdHJpbmcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCkBAIC00
NzAsNiArNDcwLDExIEBAIGlubGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKiBz
dHJpbmcpCiB7CiB9CiAKK2lubGluZSBTdHJpbmc6OlN0cmluZyhBU0NJSUxpdGVyYWwgY2hhcmFj
dGVycykKKyAgICA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChjaGFyYWN0
ZXJzKSkKK3sKK30KKwogdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBP
dmVyZmxvd0hhbmRsZXI+IFN0cmluZzo6U3RyaW5nKGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5l
Q2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIHZlY3RvcikKICAgICA6IG1faW1wbCh2ZWN0b3Iu
c2l6ZSgpID8gU3RyaW5nSW1wbDo6Y3JlYXRlKHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkp
IDogUmVmPFN0cmluZ0ltcGw+IHsgKlN0cmluZ0ltcGw6OmVtcHR5KCkgfSkKIHsK
</data>
<flag name="commit-queue"
          id="483619"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455577</attachid>
            <date>2022-03-23 16:16:50 -0700</date>
            <delta_ts>2022-03-23 18:42:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238162-20220323161649.patch</filename>
            <type>text/plain</type>
            <size>25434</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGY4NzM2MjM2MjJhMGMwN2UxYWYyZTU4
OTQ2OTk1MmQwMGJkZDY1MmQuLjE5ZWI1YmJmNmY1ZjZiM2IwOTgxYzQ4MzViYWVhMWRjZmRkNzBj
NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgY29uc3Ry
dWN0b3Igc28gdGhlIGNvbXBpbGVyIGNhbiBvcHRpbWl6ZSBvdXQgc3RybGVuKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE2MgorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIEkgaGF2ZSB2ZXJpZmllZCB1
c2luZyBhIHByb2ZpbGVyIHRoYXQgc3RybGVuKCkgaXMgbm8gbG9uZ2VyIGNhbGxlZCB1bmRlciBT
dHJpbmc6OlN0cmluZyhXVEY6OkFTQ0lJTGl0ZXJhbCkKKyAgICAgICAgb3IgU3RyaW5nSW1wbDo6
Y3JlYXRlRnJvbUxpdGVyYWwoV1RGOjpBU0NJSUxpdGVyYWwpIHdoZW4gcnVubmluZyBTcGVlZG9t
ZXRlci4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAqIHd0
Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgICog
d3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6U3RyaW5nKToKKwog
MjAyMi0wMy0yMiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgog
CiAgICAgICAgIEltcGxlbWVudCBQQ00gdG8gU0tBZE5ldHdvcmsgYnJpZGdlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmNwcAppbmRleCBkNTg0NTEwMGNlMjYxYTI4NjJkYjRhMTBmNmY4MjEyZDM5
YWZlMjYyLi40NjIwMTNkZTViNTZjY2Y4ODBkNjg2ZjZjZmIyMDNkYWRlNGVkZjk0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nSW1wbC5jcHAKQEAgLTE2MywxMSArMTYzLDYgQEAgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqIGNoYXJhY3RlcnMp
CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21MaXRlcmFsKGNoYXJhY3RlcnMsIHN0cmxlbihjaGFyYWN0
ZXJzKSk7CiB9CiAKLVJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bChBU0NJSUxpdGVyYWwgbGl0ZXJhbCkKLXsKLSAgICByZXR1cm4gY3JlYXRlRnJvbUxpdGVyYWwo
bGl0ZXJhbC5jaGFyYWN0ZXJzKCksIGxpdGVyYWwubGVuZ3RoKCkpOwotfQotCiBSZWY8U3RyaW5n
SW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlV2l0aG91dENvcHlpbmcoY29uc3QgVUNoYXIqIGNoYXJh
Y3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIWxlbmd0aCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5oIGIvU291cmNlL1dURi93dGYvdGV4dC9T
dHJpbmdJbXBsLmgKaW5kZXggYzc2Y2Q1MjM2NzYxMWM5NDJkMzQyYmYwOTFiMTYyYTBhNjc3NDRl
MC4uNjA3NDhhYTViOWE5MzcwZmIxNjUwZmY5MjAzMGYyZGZjY2Y5MTI5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4
dC9TdHJpbmdJbXBsLmgKQEAgLTI0NSwxMiArMjQ1LDEwIEBAIHB1YmxpYzoKIAogICAgIHN0YXRp
YyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlU3Vic3RyaW5nU2hhcmluZ0ltcGwoU3RyaW5nSW1wbCYs
IHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgbGVuZ3RoKTsKIAotICAgIHRlbXBsYXRlPHVuc2ln
bmVkIGNoYXJhY3RlckNvdW50PiBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRl
cmFsKGNvbnN0IGNoYXIgKCYpW2NoYXJhY3RlckNvdW50XSk7Ci0KICAgICAvLyBGSVhNRTogUmVw
bGFjZSBjYWxscyB0byB0aGVzZSBvdmVybG9hZHMgb2YgY3JlYXRlRnJvbUxpdGVyYWwgdG8gY3Jl
YXRlV2l0aG91dENvcHlpbmcgaW5zdGVhZC4KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBj
cmVhdGVGcm9tTGl0ZXJhbChjb25zdCBjaGFyKik7Ci0gICAgV1RGX0VYUE9SVF9QUklWQVRFIHN0
YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoQVNDSUlMaXRlcmFsKTsKKyAg
ICBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKEFTQ0lJTGl0ZXJhbCk7
CiAKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVX
aXRob3V0Q29weWluZyhjb25zdCBVQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CiAgICAgV1RGX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlV2l0aG91dENvcHlpbmco
Y29uc3QgTENoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwpAQCAtOTgyLDEyICs5ODAsOSBAQCBBTFdB
WVNfSU5MSU5FIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVTdWJzdHJpbmdTaGFy
aW5nSW1wbChTdHJpbmdJbXBsJgogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IChOb3ROdWxsLCBz
dHJpbmdJbXBsKSBTdHJpbmdJbXBsKHJlcC5tX2RhdGExNiArIG9mZnNldCwgbGVuZ3RoLCAqb3du
ZXJSZXApKTsKIH0KIAotdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IEFMV0FZU19J
TkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0
IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0pCitpbmxpbmUgUmVmPFN0cmluZ0lt
cGw+IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKEFTQ0lJTGl0ZXJhbCBsaXRlcmFsKQog
ewotICAgIENPTVBJTEVfQVNTRVJUKGNoYXJhY3RlckNvdW50ID4gMSwgU3RyaW5nSW1wbEZyb21M
aXRlcmFsTm90RW1wdHkpOwotICAgIENPTVBJTEVfQVNTRVJUKChjaGFyYWN0ZXJDb3VudCAtIDEg
PD0gKCh1bnNpZ25lZCh+MCkgLSBzaXplb2YoU3RyaW5nSW1wbCkpIC8gc2l6ZW9mKExDaGFyKSkp
LCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxDYW5ub3RPdmVyZmxvdyk7Ci0KLSAgICByZXR1cm4gY3Jl
YXRlV2l0aG91dENvcHlpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KGNoYXJhY3Rl
cnMpLCBjaGFyYWN0ZXJDb3VudCAtIDEpOworICAgIHJldHVybiBjcmVhdGVGcm9tTGl0ZXJhbChs
aXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0ZXJhbC5sZW5ndGgoKSk7CiB9CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+IEFMV0FZU19JTkxJTkUgUmVmUHRyPFN0cmluZ0ltcGw+IFN0
cmluZ0ltcGw6OnRyeUNyZWF0ZVVuaW5pdGlhbGl6ZWQodW5zaWduZWQgbGVuZ3RoLCBDaGFyYWN0
ZXJUeXBlKiYgb3V0cHV0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJp
bmcuY3BwIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCmluZGV4IDNhOTFhNjc3
ZDVjMDM4ZTAzYjdjNWViMzJmMzczM2JlZmMwOGNhNTUuLmFiMWFkOWE2MWEyYTgwMTA5MWE2Zjkz
ZDRlNTRmN2IyZGI3YzVlOGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RGU3Ry
aW5nLmNwcAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAKQEAgLTc5LDEx
ICs3OSw2IEBAIFN0cmluZzo6U3RyaW5nKGNvbnN0IGNoYXIqIG51bGxUZXJtaW5hdGVkU3RyaW5n
KQogICAgICAgICBtX2ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KG51bGxUZXJtaW5hdGVkU3RyaW5nKSk7CiB9CiAKLVN0cmluZzo6U3RyaW5n
KEFTQ0lJTGl0ZXJhbCBjaGFyYWN0ZXJzKQotICAgIDogbV9pbXBsKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKGNoYXJhY3RlcnMpKQotewotfQotCiB2b2lkIFN0cmluZzo6YXBwZW5kKGNv
bnN0IFN0cmluZyYgb3RoZXJTdHJpbmcpCiB7CiAgICAgLy8gRklYTUU6IFRoaXMgaXMgZXh0cmVt
ZWx5IGluZWZmaWNpZW50LiBTbyBtdWNoIHNvIHRoYXQgd2UgbWlnaHQgd2FudCB0byB0YWtlIHRo
aXMgb3V0IG9mIFN0cmluZydzIEFQSS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
V1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmluZy5oCmluZGV4IDUxMWI5
YzE2NGExYTU4YzExZDRjZmQ1MzIxZTMyZjUyN2I0YzllZDYuLjM2MGRiZjI1OTViNGRlNDFmZjI5
YmY2YWRkOTMwNzg0ZWNlYmQ1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZTdHJpbmcuaApAQCAtOTksMTEg
Kzk5LDYgQEAgcHVibGljOgogICAgIC8vIENvbnN0cnVjdCBhIHN0cmluZyBmcm9tIGEgY29uc3Rh
bnQgc3RyaW5nIGxpdGVyYWwuCiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIFN0cmluZyhBU0NJSUxp
dGVyYWwpOwogCi0gICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZyb20gYSBjb25zdGFudCBzdHJp
bmcgbGl0ZXJhbC4KLSAgICAvLyBUaGlzIGlzIHRoZSAiYmlnIiB2ZXJzaW9uOiBwdXRzIHRoZSBs
ZW5ndGggaW4gdGhlIGZ1bmN0aW9uIGNhbGwgYW5kIGdlbmVyYXRlcyBiaWdnZXIgY29kZS4KLSAg
ICBlbnVtIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnIHsgQ29uc3RydWN0RnJvbUxpdGVyYWwgfTsK
LSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4gU3RyaW5nKGNvbnN0IGNoYXIg
KCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnKSA6
IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbDxjaGFyYWN0ZXJDb3VudD4oY2hh
cmFjdGVycykpIHsgfQotCiAgICAgU3RyaW5nKGNvbnN0IFN0cmluZyYpID0gZGVmYXVsdDsKICAg
ICBTdHJpbmcoU3RyaW5nJiYpID0gZGVmYXVsdDsKICAgICBTdHJpbmcmIG9wZXJhdG9yPShjb25z
dCBTdHJpbmcmKSA9IGRlZmF1bHQ7CkBAIC00NzAsNiArNDY1LDExIEBAIGlubGluZSBTdHJpbmc6
OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKiBzdHJpbmcpCiB7CiB9CiAKK2lubGluZSBTdHJpbmc6
OlN0cmluZyhBU0NJSUxpdGVyYWwgY2hhcmFjdGVycykKKyAgICA6IG1faW1wbChTdHJpbmdJbXBs
OjpjcmVhdGVGcm9tTGl0ZXJhbChjaGFyYWN0ZXJzKSkKK3sKK30KKwogdGVtcGxhdGU8c2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+IFN0cmluZzo6U3RyaW5n
KGNvbnN0IFZlY3RvcjxVQ2hhciwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4mIHZl
Y3RvcikKICAgICA6IG1faW1wbCh2ZWN0b3Iuc2l6ZSgpID8gU3RyaW5nSW1wbDo6Y3JlYXRlKHZl
Y3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpIDogUmVmPFN0cmluZ0ltcGw+IHsgKlN0cmluZ0lt
cGw6OmVtcHR5KCkgfSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luL0ZvbnRDYWNoZVdpbi5jcHAKaW5kZXggNjE5OWE0YzgwNmRhNGRmZjQ3ZDc4ZDVj
ZjViNWRlODA5MDE3NjI5YS4uNDUwNGQwMThmMWQ3N2QyNDRiMzdjOWFiOGVlNmJiZjQ4MzIxMjE0
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRD
YWNoZVdpbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDYWNoZVdpbi5jcHAKQEAgLTM3OCwxMSArMzc4LDExIEBAIFJlZjxGb250PiBGb250Q2FjaGU6
Omxhc3RSZXNvcnRGYWxsYmFja0ZvbnQoY29uc3QgRm9udERlc2NyaXB0aW9uJiBmb250RGVzY3Jp
cHRpCiAgICAgICAgIC8vIFNvcnRlZCBieSBtb3N0IHRvIGxlYXN0IGdseXBocyBhY2NvcmRpbmcg
dG8gaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Vbmljb2RlX3R5cGVmYWNlcwogICAgICAg
ICAvLyBTdGFydCB3aXRoIFRpbWVzIE5ldyBSb21hbiBhbHNvIHNpbmNlIGl0IGlzIHRoZSBkZWZh
dWx0IGlmIHRoZSB1c2VyIGRvZXNuJ3QgY2hhbmdlIHByZWZzLgogICAgICAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8Y29uc3QgU3RyaW5nPiBmYWxsYmFja0ZvbnRzW10gPSB7Ci0gICAgICAgICAg
ICBTdHJpbmcoIlRpbWVzIE5ldyBSb21hbiIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwp
LAotICAgICAgICAgICAgU3RyaW5nKCJNaWNyb3NvZnQgU2FucyBTZXJpZiIsIFN0cmluZzo6Q29u
c3RydWN0RnJvbUxpdGVyYWwpLAotICAgICAgICAgICAgU3RyaW5nKCJUYWhvbWEiLCBTdHJpbmc6
OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwKLSAgICAgICAgICAgIFN0cmluZygiTHVjaWRhIFNhbnMg
VW5pY29kZSIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpLAotICAgICAgICAgICAgU3Ry
aW5nKCJBcmlhbCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpCisgICAgICAgICAgICAi
VGltZXMgTmV3IFJvbWFuIl9zdHIsCisgICAgICAgICAgICAiTWljcm9zb2Z0IFNhbnMgU2VyaWYi
X3N0ciwKKyAgICAgICAgICAgICJUYWhvbWEiX3N0ciwKKyAgICAgICAgICAgICJMdWNpZGEgU2Fu
cyBVbmljb2RlIl9zdHIsCisgICAgICAgICAgICAiQXJpYWwiX3N0cgogICAgICAgICB9OwogICAg
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IFdURl9BUlJBWV9MRU5HVEgoZmFsbGJhY2tGb250
cyk7ICsraSkgewogICAgICAgICAgICAgaWYgKGZvbnRGb3JGYW1pbHkoZm9udERlc2NyaXB0aW9u
LCBmYWxsYmFja0ZvbnRzW2ldKSkgewpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9G
aWxlU3lzdGVtLmNwcAppbmRleCA1Zjk2Yjc1NmQzOTZlMGQ5OTIxOGNkYjQxNGY5MzhjOTZkOTk0
NmE5Li45OTk1NzVhNmVjMjcyZjhiNDIxYmJlMDI0MTI3MGQ5NjQzMGJjZTM0IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcAorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaWxlU3lzdGVtLmNwcApAQCAtODQwLDcgKzg0MCw3
IEBAIFRFU1RfRihGaWxlU3lzdGVtVGVzdCwgcmVhZEVudGlyZUZpbGUpCiBURVNUX0YoRmlsZVN5
c3RlbVRlc3QsIG1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKQogewogICAgIEVYUEVDVF9U
UlVFKEZpbGVTeXN0ZW06Om1ha2VTYWZlVG9Vc2VNZW1vcnlNYXBGb3JQYXRoKHRlbXBGaWxlUGF0
aCgpKSk7Ci0gICAgYXV0byByZXN1bHQgPSBGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5
TWFwRm9yUGF0aChTdHJpbmcoIlRoaXNpc25vdGFyZWFsZmlsZSIsIFN0cmluZzo6Q29uc3RydWN0
RnJvbUxpdGVyYWwpKTsKKyAgICBhdXRvIHJlc3VsdCA9IEZpbGVTeXN0ZW06Om1ha2VTYWZlVG9V
c2VNZW1vcnlNYXBGb3JQYXRoKCJUaGlzaXNub3RhcmVhbGZpbGUiX3N0cik7CiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKElPU19GQU1JTFlfU0lNVUxBVE9SKQogICAgIC8v
IE5TRmlsZVByb3RlY3Rpb25LZXkgb25seSBhY3R1YWxseSBtZWFucyBhbnl0aGluZyBvbi1kZXZp
Y2UuCiAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL1N0cmluZ0ltcGwuY3BwCmluZGV4IGFhZGY0ZjljZTNlNTFiZjU2ZDEwOGMzYmU0ZDA3
YmY5YzNkZTM2YmQuLjA3MTVmYzA0Y2RiYTI0MDcyM2I0NTEyNDFmZTFiNTljZTIwMTM1MmIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ0ltcGwuY3BwCkBAIC0zNiw3
ICszNiw3IEBAIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIFRFU1QoV1RGLCBTdHJpbmdJbXBs
Q3JlYXRpb25Gcm9tTGl0ZXJhbCkKIHsKICAgICAvLyBDb25zdHJ1Y3RvciB1c2luZyB0aGUgdGVt
cGxhdGUgdG8gZGV0ZXJtaW5lIHRoZSBzaXplLgotICAgIGF1dG8gc3RyaW5nV2l0aFRlbXBsYXRl
ID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIlRlbXBsYXRlIExpdGVyYWwiKTsKKyAg
ICBhdXRvIHN0cmluZ1dpdGhUZW1wbGF0ZSA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFs
KCJUZW1wbGF0ZSBMaXRlcmFsIl9zKTsKICAgICBBU1NFUlRfRVEoc3RybGVuKCJUZW1wbGF0ZSBM
aXRlcmFsIiksIHN0cmluZ1dpdGhUZW1wbGF0ZS0+bGVuZ3RoKCkpOwogICAgIEFTU0VSVF9UUlVF
KGVxdWFsKHN0cmluZ1dpdGhUZW1wbGF0ZS5nZXQoKSwgIlRlbXBsYXRlIExpdGVyYWwiKSk7CiAg
ICAgQVNTRVJUX1RSVUUoc3RyaW5nV2l0aFRlbXBsYXRlLT5pczhCaXQoKSk7CkBAIC03MSwxNCAr
NzEsMTQgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxDcmVhdGlvbkZyb21MaXRlcmFsKQogCiBURVNU
KFdURiwgU3RyaW5nSW1wbFJlcGxhY2VXaXRoTGl0ZXJhbCkKIHsKLSAgICBhdXRvIHRlc3RTdHJp
bmdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIjEyMjQiKTsKKyAgICBhdXRv
IHRlc3RTdHJpbmdJbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIjEyMjQiX3Mp
OwogICAgIEFTU0VSVF9UUlVFKHRlc3RTdHJpbmdJbXBsLT5pczhCaXQoKSk7CiAKICAgICAvLyBD
YXNlcyBmb3IgOEJpdCBzb3VyY2UuCiAgICAgdGVzdFN0cmluZ0ltcGwgPSB0ZXN0U3RyaW5nSW1w
bC0+cmVwbGFjZSgnMicsICIiLCAwKTsKICAgICBBU1NFUlRfVFJVRShlcXVhbCh0ZXN0U3RyaW5n
SW1wbC5nZXQoKSwgIjE0IikpOwogCi0gICAgdGVzdFN0cmluZ0ltcGwgPSBTdHJpbmdJbXBsOjpj
cmVhdGVGcm9tTGl0ZXJhbCgiMTIyNCIpOworICAgIHRlc3RTdHJpbmdJbXBsID0gU3RyaW5nSW1w
bDo6Y3JlYXRlRnJvbUxpdGVyYWwoIjEyMjQiX3MpOwogICAgIEFTU0VSVF9UUlVFKHRlc3RTdHJp
bmdJbXBsLT5pczhCaXQoKSk7CiAKICAgICB0ZXN0U3RyaW5nSW1wbCA9IHRlc3RTdHJpbmdJbXBs
LT5yZXBsYWNlKCczJywgIk5vdEZvdW5kIiwgOCk7CkBAIC04Nyw3ICs4Nyw3IEBAIFRFU1QoV1RG
LCBTdHJpbmdJbXBsUmVwbGFjZVdpdGhMaXRlcmFsKQogICAgIHRlc3RTdHJpbmdJbXBsID0gdGVz
dFN0cmluZ0ltcGwtPnJlcGxhY2UoJzInLCAiMyIsIDEpOwogICAgIEFTU0VSVF9UUlVFKGVxdWFs
KHRlc3RTdHJpbmdJbXBsLmdldCgpLCAiMTMzNCIpKTsKIAotICAgIHRlc3RTdHJpbmdJbXBsID0g
U3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIjEyMjQiKTsKKyAgICB0ZXN0U3RyaW5nSW1w
bCA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCIxMjI0Il9zKTsKICAgICBBU1NFUlRf
VFJVRSh0ZXN0U3RyaW5nSW1wbC0+aXM4Qml0KCkpOwogICAgIHRlc3RTdHJpbmdJbXBsID0gdGVz
dFN0cmluZ0ltcGwtPnJlcGxhY2UoJzInLCAiNTU1IiwgMyk7CiAgICAgQVNTRVJUX1RSVUUoZXF1
YWwodGVzdFN0cmluZ0ltcGwuZ2V0KCksICIxNTU1NTU1NCIpKTsKQEAgLTExNSwxMyArMTE1LDEz
IEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsUmVwbGFjZVdpdGhMaXRlcmFsKQogCiBURVNUKFdURiwg
U3RyaW5nSW1wbEVxdWFsSWdub3JpbmdBU0NJSUNhc2VCYXNpYykKIHsKLSAgICBhdXRvIGEgPSBT
dHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyIpOwotICAgIGF1dG8gYiA9IFN0
cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJBQkNERUZHIik7Ci0gICAgYXV0byBjID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFiY2RlZmciKTsKKyAgICBhdXRvIGEgPSBTdHJp
bmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyJfcyk7CisgICAgYXV0byBiID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIkFCQ0RFRkciX3MpOworICAgIGF1dG8gYyA9IFN0
cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhYmNkZWZnIl9zKTsKICAgICBjb25zdCBjaGFy
IGRbXSA9ICJhQmNEZUZHIjsKICAgICBhdXRvIGVtcHR5ID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiIikpOwotICAgIGF1dG8gc2hvcnRlciA9IFN0
cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhYmNkZWYiKTsKLSAgICBhdXRvIGRpZmZlcmVu
dCA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhYmNyZWZnIik7CisgICAgYXV0byBz
aG9ydGVyID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFiY2RlZiJfcyk7CisgICAg
YXV0byBkaWZmZXJlbnQgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYWJjcmVmZyJf
cyk7CiAKICAgICAvLyBJZGVudGl0eS4KICAgICBBU1NFUlRfVFJVRShlcXVhbElnbm9yaW5nQVND
SUlDYXNlKGEucHRyKCksIGEucHRyKCkpKTsKQEAgLTE1Myw3ICsxNTMsNyBAQCBURVNUKFdURiwg
U3RyaW5nSW1wbEVxdWFsSWdub3JpbmdBU0NJSUNhc2VCYXNpYykKIAogVEVTVChXVEYsIFN0cmlu
Z0ltcGxFcXVhbElnbm9yaW5nQVNDSUlDYXNlV2l0aE51bGwpCiB7Ci0gICAgYXV0byByZWZlcmVu
Y2UgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyIpOworICAgIGF1dG8g
cmVmZXJlbmNlID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFCY0RlRkciX3MpOwog
ICAgIFN0cmluZ0ltcGwqIG51bGxTdHJpbmdJbXBsID0gbnVsbHB0cjsKICAgICBBU1NFUlRfRkFM
U0UoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShudWxsU3RyaW5nSW1wbCwgcmVmZXJlbmNlLnB0cigp
KSk7CiAgICAgQVNTRVJUX0ZBTFNFKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UocmVmZXJlbmNlLnB0
cigpLCBudWxsU3RyaW5nSW1wbCkpOwpAQCAtMjE0LDI2ICsyMTQsMjYgQEAgVEVTVChXVEYsIFN0
cmluZ0ltcGxGaW5kSWdub3JpbmdBU0NJSUNhc2VCYXNpYykKICAgICBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihub3RGb3VuZCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShyZWZlcmVuY2VBLnB0cigpKSk7CiAKICAgICAvLyBGaW5kIHRoZSBwcmVmaXguCi0gICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJlZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYSIpLnB0cigpKSk7CisgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJlZmVyZW5jZUEtPmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYSJfcykucHRyKCkpKTsK
ICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgcmVmZXJlbmNlQS0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4KCJhYmPDqSIpLnB0cigpKSk7Ci0gICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJlZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiQSIpLnB0cigpKSk7CisgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJlZmVyZW5jZUEtPmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiQSJfcykucHRyKCkpKTsK
ICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgcmVmZXJlbmNlQS0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4KCJBQkPDqSIpLnB0cigpKSk7Ci0gICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYSIpLnB0cigpKSk7CisgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYSJfcykucHRyKCkpKTsK
ICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgcmVmZXJlbmNlQi0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4KCJhYmPDiSIpLnB0cigpKSk7Ci0gICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiQSIpLnB0cigpKSk7CisgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmlu
Z0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiQSJfcykucHRyKCkpKTsK
ICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigwKSwgcmVmZXJlbmNlQi0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4KCJBQkPDiSIpLnB0cigpKSk7CiAKICAgICAv
LyBOb3QgYSBwcmVmaXguCi0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpu
b3RGb3VuZCksIHJlZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpj
cmVhdGVGcm9tTGl0ZXJhbCgieCIpLnB0cigpKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgieCJfcykucHRyKCkpKTsKICAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQS0+Zmlu
ZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4KCJhY2PDqSIpLnB0cigpKSk7CiAgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZUEt
PmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiYWJjw4kiKS5wdHIoKSkpOwot
ICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVu
Y2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwo
IlgiKS5wdHIoKSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90
Rm91bmQpLCByZWZlcmVuY2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3Jl
YXRlRnJvbUxpdGVyYWwoIlgiX3MpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmdGcm9tVVRGOCgiQUJEw6kiKS5wdHIoKSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNf
Y2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VBLT5maW5kSWdub3JpbmdBU0NJ
SUNhc2Uoc3RyaW5nRnJvbVVURjgoIkFCQ8OJIikucHRyKCkpKTsKLSAgICBFWFBFQ1RfRVEoc3Rh
dGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5n
QVNDSUlDYXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJ5IikucHRyKCkpKTsKKyAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNl
Qi0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJ5
Il9zKS5wdHIoKSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90
Rm91bmQpLCByZWZlcmVuY2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nRnJvbVVURjgo
ImFjY8OJIikucHRyKCkpKTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6
Om5vdEZvdW5kKSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21V
VEY4KCJhYmPDqSIpLnB0cigpKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4o
V1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdJ
bXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiWSIpLnB0cigpKSk7CisgICAgRVhQRUNUX0VRKHN0YXRp
Y19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FT
Q0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiWSJfcykucHRyKCkpKTsKICAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNl
Qi0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4KCJBQmTDiSIpLnB0cigpKSk7
CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVy
ZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiQUJDw6kiKS5wdHIo
KSkpOwogCkBAIC0yODAsMzIgKzI4MCwzMiBAQCBURVNUKFdURiwgU3RyaW5nSW1wbEZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZUJhc2ljKQogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdU
Rjo6bm90Rm91bmQpLCByZWZlcmVuY2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nRnJv
bVVURjgoInoiKS5wdHIoKSkpOwogCiAgICAgLy8gRmluZCB0aGUgc3VmZml4LgotICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDYpLCByZWZlcmVuY2VBLT5maW5kSWdub3JpbmdBU0NJ
SUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImciKS5wdHIoKSkpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDYpLCByZWZlcmVuY2VBLT5maW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImciX3MpLnB0cigpKSk7CiAg
ICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oNCksIHJlZmVyZW5jZUEtPmZpbmRJZ25v
cmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiZWZnIikucHRyKCkpKTsKICAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigzKSwgcmVmZXJlbmNlQS0+ZmluZElnbm9yaW5nQVNDSUlD
YXNlKHN0cmluZ0Zyb21VVEY4KCLDqWVmZyIpLnB0cigpKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRp
Y19jYXN0PHNpemVfdD4oNiksIHJlZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJp
bmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiRyIpLnB0cigpKSk7CisgICAgRVhQRUNUX0VRKHN0
YXRpY19jYXN0PHNpemVfdD4oNiksIHJlZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiRyJfcykucHRyKCkpKTsKICAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8c2l6ZV90Pig0KSwgcmVmZXJlbmNlQS0+ZmluZElnbm9yaW5nQVNDSUlD
YXNlKHN0cmluZ0Zyb21VVEY4KCJFRkciKS5wdHIoKSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNf
Y2FzdDxzaXplX3Q+KDMpLCByZWZlcmVuY2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5n
RnJvbVVURjgoIsOpRUZHIikucHRyKCkpKTsKIAotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxz
aXplX3Q+KDYpLCByZWZlcmVuY2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6
Y3JlYXRlRnJvbUxpdGVyYWwoImciKS5wdHIoKSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxzaXplX3Q+KDYpLCByZWZlcmVuY2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1w
bDo6Y3JlYXRlRnJvbUxpdGVyYWwoImciX3MpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRp
Y19jYXN0PHNpemVfdD4oNCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJp
bmdGcm9tVVRGOCgiZWZnIikucHRyKCkpKTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6
ZV90PigzKSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4
KCLDiWVmZyIpLnB0cigpKSk7Ci0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oNiks
IHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9t
TGl0ZXJhbCgiRyIpLnB0cigpKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4o
NiksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVG
cm9tTGl0ZXJhbCgiRyJfcykucHRyKCkpKTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6
ZV90Pig0KSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4
KCJFRkciKS5wdHIoKSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDMpLCBy
ZWZlcmVuY2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nRnJvbVVURjgoIsOJRUZHIiku
cHRyKCkpKTsKIAogICAgIC8vIE5vdCBhIHN1ZmZpeC4KLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nh
c3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQS0+ZmluZElnbm9yaW5nQVNDSUlD
YXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJYIikucHRyKCkpKTsKKyAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQS0+Zmlu
ZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJYIl9zKS5w
dHIoKSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQp
LCByZWZlcmVuY2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nRnJvbVVURjgoImVkZyIp
LnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3Vu
ZCksIHJlZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiw4ll
ZmciKS5wdHIoKSkpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90
Rm91bmQpLCByZWZlcmVuY2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3Jl
YXRlRnJvbUxpdGVyYWwoInciKS5wdHIoKSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxz
aXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
U3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoInciX3MpLnB0cigpKSk7CiAgICAgRVhQRUNU
X0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZUEtPmZpbmRJ
Z25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiZEZHIikucHRyKCkpKTsKICAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQS0+Zmlu
ZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4KCLDiUVGRyIpLnB0cigpKSk7CiAKLSAg
ICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNl
Qi0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJa
IikucHRyKCkpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZv
dW5kKSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKCJaIl9zKS5wdHIoKSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxz
aXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uo
c3RyaW5nRnJvbVVURjgoImZmZyIpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0
PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmdGcm9tVVRGOCgiw6llZmciKS5wdHIoKSkpOwotICAgIEVYUEVDVF9FUShzdGF0aWNf
Y2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VCLT5maW5kSWdub3JpbmdBU0NJ
SUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoInIiKS5wdHIoKSkpOworICAgIEVY
UEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VCLT5m
aW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoInIiX3Mp
LnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3Vu
ZCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiRWdH
IikucHRyKCkpKTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZv
dW5kKSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4KCLD
qUVGRyIpLnB0cigpKSk7CiB9CkBAIC0zODAsMTcgKzM4MCwxNyBAQCBURVNUKFdURiwgU3RyaW5n
SW1wbFN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZUJhc2ljKQogICAgIEFTU0VSVF9UUlVFKHJl
ZmVyZW5jZUVxdWl2YWxlbnQtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqcmVmZXJlbmNl
RXF1aXZhbGVudC5wdHIoKSkpOwogCiAgICAgLy8gUHJvcGVyIHByZWZpeGVzLgotICAgIGF1dG8g
YUxvd2VyID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImEiKTsKKyAgICBhdXRvIGFM
b3dlciA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhIl9zKTsKICAgICBBU1NFUlRf
VFJVRShyZWZlcmVuY2UtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShhTG93ZXIucHRyKCkp
KTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZSgqYUxvd2VyLnB0cigpKSk7Ci0gICAgYXV0byBhVXBwZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVG
cm9tTGl0ZXJhbCgiQSIpOworICAgIGF1dG8gYVVwcGVyID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwoIkEiX3MpOwogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+c3RhcnRzV2l0aEln
bm9yaW5nQVNDSUlDYXNlKGFVcHBlci5wdHIoKSkpOwogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5j
ZS0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCphVXBwZXIucHRyKCkpKTsKIAotICAgIGF1
dG8gYWJjTG93ZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYWJjIik7CisgICAg
YXV0byBhYmNMb3dlciA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhYmMiX3MpOwog
ICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGFi
Y0xvd2VyLnB0cigpKSk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5zdGFydHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoKmFiY0xvd2VyLnB0cigpKSk7Ci0gICAgYXV0byBhYmNVcHBlciA9IFN0
cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJBQkMiKTsKKyAgICBhdXRvIGFiY1VwcGVyID0g
U3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIkFCQyJfcyk7CiAgICAgQVNTRVJUX1RSVUUo
cmVmZXJlbmNlLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoYWJjVXBwZXIucHRyKCkpKTsK
ICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgq
YWJjVXBwZXIucHRyKCkpKTsKIApAQCAtNDE5LDcgKzQxOSw3IEBAIFRFU1QoV1RGLCBTdHJpbmdJ
bXBsU3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCiAKIFRFU1QoV1RGLCBTdHJpbmdJ
bXBsU3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlV2l0aE51bGwpCiB7Ci0gICAgYXV0byByZWZl
cmVuY2UgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyIpOworICAgIGF1
dG8gcmVmZXJlbmNlID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFCY0RlRkciX3Mp
OwogICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZShudWxscHRyKSk7CiAKICAgICBhdXRvIGVtcHR5ID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiIikpOwpAQCAtNDI4LDcgKzQyOCw3IEBAIFRFU1Qo
V1RGLCBTdHJpbmdJbXBsU3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlV2l0aE51bGwpCiAKIFRF
U1QoV1RGLCBTdHJpbmdJbXBsU3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlV2l0aEVtcHR5KQog
ewotICAgIGF1dG8gcmVmZXJlbmNlID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFC
Y0RlRkciKTsKKyAgICBhdXRvIHJlZmVyZW5jZSA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRl
cmFsKCJhQmNEZUZHIl9zKTsKICAgICBhdXRvIGVtcHR5ID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiIikpOwogICAgIEFTU0VSVF9UUlVFKHJlZmVy
ZW5jZS0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGVtcHR5LnB0cigpKSk7CiAgICAgQVNT
RVJUX1RSVUUocmVmZXJlbmNlLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoKmVtcHR5LnB0
cigpKSk7CkBAIC00NjksMTcgKzQ2OSwxNyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbEVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2VCYXNpYykKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2VFcXVpdmFs
ZW50LT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCpyZWZlcmVuY2VFcXVpdmFsZW50LnB0cigp
KSk7CiAKICAgICAvLyBQcm9wZXIgc3VmZml4ZXMuCi0gICAgYXV0byBhTG93ZXIgPSBTdHJpbmdJ
bXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYSIpOworICAgIGF1dG8gYUxvd2VyID0gU3RyaW5nSW1w
bDo6Y3JlYXRlRnJvbUxpdGVyYWwoImEiX3MpOwogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+
ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShhTG93ZXIucHRyKCkpKTsKICAgICBBU1NFUlRfVFJV
RShyZWZlcmVuY2UtPmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoKmFMb3dlci5wdHIoKSkpOwot
ICAgIGF1dG8gYVVwcGVyID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImEiKTsKKyAg
ICBhdXRvIGFVcHBlciA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhIl9zKTsKICAg
ICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoYVVwcGVy
LnB0cigpKSk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5lbmRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKCphVXBwZXIucHRyKCkpKTsKIAotICAgIGF1dG8gYWJjTG93ZXIgPSBTdHJpbmdJbXBs
OjpjcmVhdGVGcm9tTGl0ZXJhbCgiY2JhIik7CisgICAgYXV0byBhYmNMb3dlciA9IFN0cmluZ0lt
cGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJjYmEiX3MpOwogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5j
ZS0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShhYmNMb3dlci5wdHIoKSkpOwogICAgIEFTU0VS
VF9UUlVFKHJlZmVyZW5jZS0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqYWJjTG93ZXIucHRy
KCkpKTsKLSAgICBhdXRvIGFiY1VwcGVyID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwo
IkNCQSIpOworICAgIGF1dG8gYWJjVXBwZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bCgiQ0JBIl9zKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmVuZHNXaXRoSWdub3JpbmdB
U0NJSUNhc2UoYWJjVXBwZXIucHRyKCkpKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmVu
ZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoKmFiY1VwcGVyLnB0cigpKSk7CiAKQEAgLTUwOCw3ICs1
MDgsNyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbEVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2VCYXNp
YykKIAogVEVTVChXVEYsIFN0cmluZ0ltcGxFbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlV2l0aE51
bGwpCiB7Ci0gICAgYXV0byByZWZlcmVuY2UgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJh
bCgiYUJjRGVGRyIpOworICAgIGF1dG8gcmVmZXJlbmNlID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwoImFCY0RlRkciX3MpOwogICAgIEFTU0VSVF9GQUxTRShyZWZlcmVuY2UtPmVuZHNX
aXRoSWdub3JpbmdBU0NJSUNhc2UobnVsbHB0cikpOwogCiAgICAgYXV0byBlbXB0eSA9IFN0cmlu
Z0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIiIpKTsKQEAgLTUx
Nyw3ICs1MTcsNyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbEVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2VXaXRoTnVsbCkKIAogVEVTVChXVEYsIFN0cmluZ0ltcGxFbmRzV2l0aElnbm9yaW5nQVNDSUlD
YXNlV2l0aEVtcHR5KQogewotICAgIGF1dG8gcmVmZXJlbmNlID0gU3RyaW5nSW1wbDo6Y3JlYXRl
RnJvbUxpdGVyYWwoImFCY0RlRkciKTsKKyAgICBhdXRvIHJlZmVyZW5jZSA9IFN0cmluZ0ltcGw6
OmNyZWF0ZUZyb21MaXRlcmFsKCJhQmNEZUZHIl9zKTsKICAgICBhdXRvIGVtcHR5ID0gU3RyaW5n
SW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiIikpOwogICAgIEFT
U0VSVF9UUlVFKHJlZmVyZW5jZS0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShlbXB0eS5wdHIo
KSkpOwogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZSgqZW1wdHkucHRyKCkpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V1RGL1N0cmluZ1ZpZXcuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5n
Vmlldy5jcHAKaW5kZXggODRlYzVkYWYyZTQzYmVhOWM0ODUyN2NhMjVjZGZkODI5YWYwN2Y0My4u
MWZkMzViYThlZGQ2MmFmOWViZDYwMTQ3YzlmMGM0MjQ1ZmRlN2EzOCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nVmlldy5jcHAKQEAgLTMzNSwxMyArMzM1LDEzIEBA
IFRFU1QoV1RGLCBTdHJpbmdWaWV3RXF1YWxCYXNpYykKIAogVEVTVChXVEYsIFN0cmluZ1ZpZXdF
cXVhbElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCiB7Ci0gICAgUmVmUHRyPFN0cmluZ0ltcGw+IGEg
PSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyIpOwotICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiBiID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIkFCQ0RFRkciKTsK
LSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gYyA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFs
KCJhYmNkZWZnIik7CisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGEgPSBTdHJpbmdJbXBsOjpjcmVh
dGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyJfcyk7CisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGIgPSBT
dHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiQUJDREVGRyJfcyk7CisgICAgUmVmUHRyPFN0
cmluZ0ltcGw+IGMgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYWJjZGVmZyJfcyk7
CiAgICAgY29uc3QgY2hhciBkW10gPSAiYUJjRGVGRyI7CiAgICAgUmVmUHRyPFN0cmluZ0ltcGw+
IGVtcHR5ID0gU3RyaW5nSW1wbDo6Y3JlYXRlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIq
PigiIikpOwotICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBzaG9ydGVyID0gU3RyaW5nSW1wbDo6Y3Jl
YXRlRnJvbUxpdGVyYWwoImFiY2RlZiIpOwotICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBkaWZmZXJl
bnQgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYWJjcmVmZyIpOworICAgIFJlZlB0
cjxTdHJpbmdJbXBsPiBzaG9ydGVyID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFi
Y2RlZiJfcyk7CisgICAgUmVmUHRyPFN0cmluZ0ltcGw+IGRpZmZlcmVudCA9IFN0cmluZ0ltcGw6
OmNyZWF0ZUZyb21MaXRlcmFsKCJhYmNyZWZnIl9zKTsKIAogICAgIFN0cmluZ1ZpZXcgc3RyaW5n
Vmlld0EoKmEuZ2V0KCkpOwogICAgIFN0cmluZ1ZpZXcgc3RyaW5nVmlld0IoKmIuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKaW5kZXggMGUwZTlj
N2Y4ODdmM2VhZjdjNDc3NWEwMTRmMWU2Y2NhOGQ0MTBmMS4uZjFlNzM0OTdjZjczOTdlZTUzYzY1
MzFmOWM3NzQyYmE3ZmJlZDI2OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XVEYvV1RGU3RyaW5nLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9X
VEZTdHJpbmcuY3BwCkBAIC00NywxMiArNDcsNiBAQCBURVNUKFdURiwgU3RyaW5nQ3JlYXRpb25G
cm9tTGl0ZXJhbCkKICAgICBFWFBFQ1RfRVEoIlN0cmluZyBMaXRlcmFsIiwgc3RyaW5nRnJvbUxp
dGVyYWwpOwogICAgIEVYUEVDVF9UUlVFKHN0cmluZ0Zyb21MaXRlcmFsLmlzOEJpdCgpKTsKICAg
ICBFWFBFQ1RfRVEoU3RyaW5nKCJTdHJpbmcgTGl0ZXJhbCIpLCBzdHJpbmdGcm9tTGl0ZXJhbCk7
Ci0KLSAgICBTdHJpbmcgc3RyaW5nV2l0aFRlbXBsYXRlKCJUZW1wbGF0ZSBMaXRlcmFsIiwgU3Ry
aW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgRVhQRUNUX0VRKHN0cmxlbigiVGVtcGxh
dGUgTGl0ZXJhbCIpLCBzdHJpbmdXaXRoVGVtcGxhdGUubGVuZ3RoKCkpOwotICAgIEVYUEVDVF9F
USgiVGVtcGxhdGUgTGl0ZXJhbCIsIHN0cmluZ1dpdGhUZW1wbGF0ZSk7Ci0gICAgRVhQRUNUX1RS
VUUoc3RyaW5nV2l0aFRlbXBsYXRlLmlzOEJpdCgpKTsKLSAgICBFWFBFQ1RfRVEoU3RyaW5nKCJU
ZW1wbGF0ZSBMaXRlcmFsIiksIHN0cmluZ1dpdGhUZW1wbGF0ZSk7CiB9CiAKIFRFU1QoV1RGLCBT
dHJpbmdBU0NJSSkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455594</attachid>
            <date>2022-03-23 18:42:45 -0700</date>
            <delta_ts>2022-03-23 23:28:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238162-20220323184244.patch</filename>
            <type>text/plain</type>
            <size>25564</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGEwMTUxYTRlNjAzOWFkM2RmMTFmNjk5
OGEyNTc2NTY1OTIxM2FiMjcuLjdhY2VjM2ExYjUxOWM2M2NkM2U3ODE5NTk1MzMxMzlmZTNmOWI4
MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjItMDMtMjMgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KKworICAgICAgICBJbmxpbmUgU3RyaW5nKEFTQ0lJTGl0ZXJhbCkgY29uc3Ry
dWN0b3Igc28gdGhlIGNvbXBpbGVyIGNhbiBvcHRpbWl6ZSBvdXQgc3RybGVuKCkKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODE2MgorCisgICAgICAg
IFJldmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgIEkgaGF2ZSB2ZXJpZmllZCB1
c2luZyBhIHByb2ZpbGVyIHRoYXQgc3RybGVuKCkgaXMgbm8gbG9uZ2VyIGNhbGxlZCB1bmRlciBT
dHJpbmc6OlN0cmluZyhXVEY6OkFTQ0lJTGl0ZXJhbCkKKyAgICAgICAgb3IgU3RyaW5nSW1wbDo6
Y3JlYXRlRnJvbUxpdGVyYWwoV1RGOjpBU0NJSUxpdGVyYWwpIHdoZW4gcnVubmluZyBTcGVlZG9t
ZXRlci4KKworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwOgorICAgICAgICAqIHd0
Zi90ZXh0L1N0cmluZ0ltcGwuaDoKKyAgICAgICAgKFdURjo6U3RyaW5nSW1wbDo6Y3JlYXRlRnJv
bUxpdGVyYWwpOgorICAgICAgICAqIHd0Zi90ZXh0L1dURlN0cmluZy5jcHA6CisgICAgICAgICog
d3RmL3RleHQvV1RGU3RyaW5nLmg6CisgICAgICAgIChXVEY6OlN0cmluZzo6U3RyaW5nKToKKwog
MjAyMi0wMy0yMyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFBy
ZXBhcmUgSlNDIGZvciBtYWtpbmcgdGhlIFN0cmluZyhjb25zdCBjaGFyKikgY29uc3RydWN0b3Ig
ZXhwbGljaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5jcHAg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuY3BwCmluZGV4IGQ1ODQ1MTAwY2UyNjFh
Mjg2MmRiNGExMGY2ZjgyMTJkMzlhZmUyNjIuLjQ2MjAxM2RlNWI1NmNjZjg4MGQ2ODZmNmNmYjIw
M2RhZGU0ZWRmOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nSW1wbC5j
cHAKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmNwcApAQCAtMTYzLDExICsx
NjMsNiBAQCBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoY29u
c3QgY2hhciogY2hhcmFjdGVycykKICAgICByZXR1cm4gY3JlYXRlRnJvbUxpdGVyYWwoY2hhcmFj
dGVycywgc3RybGVuKGNoYXJhY3RlcnMpKTsKIH0KIAotUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0lt
cGw6OmNyZWF0ZUZyb21MaXRlcmFsKEFTQ0lJTGl0ZXJhbCBsaXRlcmFsKQotewotICAgIHJldHVy
biBjcmVhdGVGcm9tTGl0ZXJhbChsaXRlcmFsLmNoYXJhY3RlcnMoKSwgbGl0ZXJhbC5sZW5ndGgo
KSk7Ci19Ci0KIFJlZjxTdHJpbmdJbXBsPiBTdHJpbmdJbXBsOjpjcmVhdGVXaXRob3V0Q29weWlu
Zyhjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAgIGlmICgh
bGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdJbXBsLmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAppbmRleCA4ZDgwZjc4Nzc4M2Q0M2M1NjJm
OGUwY2QzZTM2NzViOTc2YmE4MjU5Li41MzBiYWM3NWNiM2I1ZjQxNmIzNThkMmRjZWI2Y2UyNWM1
MTQ1NWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ0ltcGwuaApAQCAtMjQ1LDEyICsyNDUsMTAgQEAg
cHVibGljOgogCiAgICAgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVTdWJzdHJpbmdTaGFy
aW5nSW1wbChTdHJpbmdJbXBsJiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBsZW5ndGgpOwog
Ci0gICAgdGVtcGxhdGU8dW5zaWduZWQgY2hhcmFjdGVyQ291bnQ+IHN0YXRpYyBSZWY8U3RyaW5n
SW1wbD4gY3JlYXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciAoJilbY2hhcmFjdGVyQ291bnRdKTsK
LQogICAgIC8vIEZJWE1FOiBSZXBsYWNlIGNhbGxzIHRvIHRoZXNlIG92ZXJsb2FkcyBvZiBjcmVh
dGVGcm9tTGl0ZXJhbCB0byBjcmVhdGVXaXRob3V0Q29weWluZyBpbnN0ZWFkLgogICAgIFdURl9F
WFBPUlRfUFJJVkFURSBzdGF0aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNv
bnN0IGNoYXIqLCB1bnNpZ25lZCBsZW5ndGgpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0
aWMgUmVmPFN0cmluZ0ltcGw+IGNyZWF0ZUZyb21MaXRlcmFsKGNvbnN0IGNoYXIqKTsKLSAgICBX
VEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBjcmVhdGVGcm9tTGl0ZXJh
bChBU0NJSUxpdGVyYWwpOworICAgIHN0YXRpYyBSZWY8U3RyaW5nSW1wbD4gY3JlYXRlRnJvbUxp
dGVyYWwoQVNDSUlMaXRlcmFsKTsKIAogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgUmVm
PFN0cmluZ0ltcGw+IGNyZWF0ZVdpdGhvdXRDb3B5aW5nKGNvbnN0IFVDaGFyKiwgdW5zaWduZWQg
bGVuZ3RoKTsKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGljIFJlZjxTdHJpbmdJbXBsPiBj
cmVhdGVXaXRob3V0Q29weWluZyhjb25zdCBMQ2hhciosIHVuc2lnbmVkIGxlbmd0aCk7CkBAIC05
ODIsMTIgKzk4MCw5IEBAIEFMV0FZU19JTkxJTkUgUmVmPFN0cmluZ0ltcGw+IFN0cmluZ0ltcGw6
OmNyZWF0ZVN1YnN0cmluZ1NoYXJpbmdJbXBsKFN0cmluZ0ltcGwmCiAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgKE5vdE51bGwsIHN0cmluZ0ltcGwpIFN0cmluZ0ltcGwocmVwLm1fZGF0YTE2ICsg
b2Zmc2V0LCBsZW5ndGgsICpvd25lclJlcCkpOwogfQogCi10ZW1wbGF0ZTx1bnNpZ25lZCBjaGFy
YWN0ZXJDb3VudD4gQUxXQVlTX0lOTElORSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3Jl
YXRlRnJvbUxpdGVyYWwoY29uc3QgY2hhciAoJmNoYXJhY3RlcnMpW2NoYXJhY3RlckNvdW50XSkK
K2lubGluZSBSZWY8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoQVND
SUlMaXRlcmFsIGxpdGVyYWwpCiB7Ci0gICAgQ09NUElMRV9BU1NFUlQoY2hhcmFjdGVyQ291bnQg
PiAxLCBTdHJpbmdJbXBsRnJvbUxpdGVyYWxOb3RFbXB0eSk7Ci0gICAgQ09NUElMRV9BU1NFUlQo
KGNoYXJhY3RlckNvdW50IC0gMSA8PSAoKHVuc2lnbmVkKH4wKSAtIHNpemVvZihTdHJpbmdJbXBs
KSkgLyBzaXplb2YoTENoYXIpKSksIFN0cmluZ0ltcGxGcm9tTGl0ZXJhbENhbm5vdE92ZXJmbG93
KTsKLQotICAgIHJldHVybiBjcmVhdGVXaXRob3V0Q29weWluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IExDaGFyKj4oY2hhcmFjdGVycyksIGNoYXJhY3RlckNvdW50IC0gMSk7CisgICAgcmV0dXJu
IGNyZWF0ZUZyb21MaXRlcmFsKGxpdGVyYWwuY2hhcmFjdGVycygpLCBsaXRlcmFsLmxlbmd0aCgp
KTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4gQUxXQVlTX0lOTElORSBS
ZWZQdHI8U3RyaW5nSW1wbD4gU3RyaW5nSW1wbDo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZCh1bnNp
Z25lZCBsZW5ndGgsIENoYXJhY3RlclR5cGUqJiBvdXRwdXQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1dURlN0cmluZy5jcHAgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0cmlu
Zy5jcHAKaW5kZXggZjM0NTkzNGI3M2NjOGQ0NTIwNWUzYTQ2YWM2MTkyMGE5YTM5OTljNS4uYWE0
N2RiNGVmN2JlODhmNDk0MWY4MGJiZWE3NmIxNWE1MGI1MWE1ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dURi93dGYvdGV4dC9XVEZTdHJpbmcuY3BwCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvV1RG
U3RyaW5nLmNwcApAQCAtNzksMTEgKzc5LDYgQEAgU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciog
bnVsbFRlcm1pbmF0ZWRTdHJpbmcpCiAgICAgICAgIG1faW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0
ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4obnVsbFRlcm1pbmF0ZWRTdHJpbmcpKTsK
IH0KIAotU3RyaW5nOjpTdHJpbmcoQVNDSUlMaXRlcmFsIGNoYXJhY3RlcnMpCi0gICAgOiBtX2lt
cGwoY2hhcmFjdGVycy5pc051bGwoKSA/IG51bGxwdHIgOiBSZWZQdHI8U3RyaW5nSW1wbD4geyBT
dHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbChjaGFyYWN0ZXJzKSB9KQotewotfQotCiB2b2lk
IFN0cmluZzo6YXBwZW5kKGNvbnN0IFN0cmluZyYgb3RoZXJTdHJpbmcpCiB7CiAgICAgLy8gRklY
TUU6IFRoaXMgaXMgZXh0cmVtZWx5IGluZWZmaWNpZW50LiBTbyBtdWNoIHNvIHRoYXQgd2UgbWln
aHQgd2FudCB0byB0YWtlIHRoaXMgb3V0IG9mIFN0cmluZydzIEFQSS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1dURlN0
cmluZy5oCmluZGV4IDQxZWQzNWNjYTZlOWY3MWYyNmVkZGJkMzVhNzhhZTZhZTY0NzgwODEuLjA2
YTRiNzMyZTFhZDI0ZDg3Yzg1MjVkYWI2NTMyOWQ3ZDg1NjczOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XVEYvd3RmL3RleHQvV1RGU3RyaW5nLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9XVEZT
dHJpbmcuaApAQCAtOTksMTEgKzk5LDYgQEAgcHVibGljOgogICAgIC8vIENvbnN0cnVjdCBhIHN0
cmluZyBmcm9tIGEgY29uc3RhbnQgc3RyaW5nIGxpdGVyYWwuCiAgICAgV1RGX0VYUE9SVF9QUklW
QVRFIFN0cmluZyhBU0NJSUxpdGVyYWwpOwogCi0gICAgLy8gQ29uc3RydWN0IGEgc3RyaW5nIGZy
b20gYSBjb25zdGFudCBzdHJpbmcgbGl0ZXJhbC4KLSAgICAvLyBUaGlzIGlzIHRoZSAiYmlnIiB2
ZXJzaW9uOiBwdXRzIHRoZSBsZW5ndGggaW4gdGhlIGZ1bmN0aW9uIGNhbGwgYW5kIGdlbmVyYXRl
cyBiaWdnZXIgY29kZS4KLSAgICBlbnVtIENvbnN0cnVjdEZyb21MaXRlcmFsVGFnIHsgQ29uc3Ry
dWN0RnJvbUxpdGVyYWwgfTsKLSAgICB0ZW1wbGF0ZTx1bnNpZ25lZCBjaGFyYWN0ZXJDb3VudD4g
U3RyaW5nKGNvbnN0IGNoYXIgKCZjaGFyYWN0ZXJzKVtjaGFyYWN0ZXJDb3VudF0sIENvbnN0cnVj
dEZyb21MaXRlcmFsVGFnKSA6IG1faW1wbChTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbDxj
aGFyYWN0ZXJDb3VudD4oY2hhcmFjdGVycykpIHsgfQotCiAgICAgU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpID0gZGVmYXVsdDsKICAgICBTdHJpbmcoU3RyaW5nJiYpID0gZGVmYXVsdDsKICAgICBTdHJp
bmcmIG9wZXJhdG9yPShjb25zdCBTdHJpbmcmKSA9IGRlZmF1bHQ7CkBAIC00NzEsNiArNDY2LDEx
IEBAIGlubGluZSBTdHJpbmc6OlN0cmluZyhTdGF0aWNTdHJpbmdJbXBsKiBzdHJpbmcpCiB7CiB9
CiAKK2lubGluZSBTdHJpbmc6OlN0cmluZyhBU0NJSUxpdGVyYWwgY2hhcmFjdGVycykKKyAgICA6
IG1faW1wbChjaGFyYWN0ZXJzLmlzTnVsbCgpID8gbnVsbHB0ciA6IFJlZlB0cjxTdHJpbmdJbXBs
PiB7IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKGNoYXJhY3RlcnMpIH0pCit7Cit9CisK
IHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
PiBTdHJpbmc6OlN0cmluZyhjb25zdCBWZWN0b3I8VUNoYXIsIGlubGluZUNhcGFjaXR5LCBPdmVy
Zmxvd0hhbmRsZXI+JiB2ZWN0b3IpCiAgICAgOiBtX2ltcGwodmVjdG9yLnNpemUoKSA/IFN0cmlu
Z0ltcGw6OmNyZWF0ZSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSA6IFJlZjxTdHJpbmdJ
bXBsPiB7ICpTdHJpbmdJbXBsOjplbXB0eSgpIH0pCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udENhY2hlV2luLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCmluZGV4IDYxOTlhNGM4
MDZkYTRkZmY0N2Q3OGQ1Y2Y1YjVkZTgwOTAxNzYyOWEuLjQ1MDRkMDE4ZjFkNzdkMjQ0YjM3Yzlh
YjhlZTZiYmY0ODMyMTIxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q2FjaGVXaW4uY3BwCkBAIC0zNzgsMTEgKzM3OCwxMSBAQCBSZWY8
Rm9udD4gRm9udENhY2hlOjpsYXN0UmVzb3J0RmFsbGJhY2tGb250KGNvbnN0IEZvbnREZXNjcmlw
dGlvbiYgZm9udERlc2NyaXB0aQogICAgICAgICAvLyBTb3J0ZWQgYnkgbW9zdCB0byBsZWFzdCBn
bHlwaHMgYWNjb3JkaW5nIHRvIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVW5pY29kZV90
eXBlZmFjZXMKICAgICAgICAgLy8gU3RhcnQgd2l0aCBUaW1lcyBOZXcgUm9tYW4gYWxzbyBzaW5j
ZSBpdCBpcyB0aGUgZGVmYXVsdCBpZiB0aGUgdXNlciBkb2Vzbid0IGNoYW5nZSBwcmVmcy4KICAg
ICAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPGNvbnN0IFN0cmluZz4gZmFsbGJhY2tGb250c1td
ID0gewotICAgICAgICAgICAgU3RyaW5nKCJUaW1lcyBOZXcgUm9tYW4iLCBTdHJpbmc6OkNvbnN0
cnVjdEZyb21MaXRlcmFsKSwKLSAgICAgICAgICAgIFN0cmluZygiTWljcm9zb2Z0IFNhbnMgU2Vy
aWYiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwKLSAgICAgICAgICAgIFN0cmluZygi
VGFob21hIiwgU3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCksCi0gICAgICAgICAgICBTdHJp
bmcoIkx1Y2lkYSBTYW5zIFVuaWNvZGUiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSwK
LSAgICAgICAgICAgIFN0cmluZygiQXJpYWwiLCBTdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFs
KQorICAgICAgICAgICAgIlRpbWVzIE5ldyBSb21hbiJfc3RyLAorICAgICAgICAgICAgIk1pY3Jv
c29mdCBTYW5zIFNlcmlmIl9zdHIsCisgICAgICAgICAgICAiVGFob21hIl9zdHIsCisgICAgICAg
ICAgICAiTHVjaWRhIFNhbnMgVW5pY29kZSJfc3RyLAorICAgICAgICAgICAgIkFyaWFsIl9zdHIK
ICAgICAgICAgfTsKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBXVEZfQVJSQVlfTEVO
R1RIKGZhbGxiYWNrRm9udHMpOyArK2kpIHsKICAgICAgICAgICAgIGlmIChmb250Rm9yRmFtaWx5
KGZvbnREZXNjcmlwdGlvbiwgZmFsbGJhY2tGb250c1tpXSkpIHsKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpbGVTeXN0ZW0uY3BwIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAKaW5kZXggNWY5NmI3NTZkMzk2ZTBkOTkyMThj
ZGI0MTRmOTM4Yzk2ZDk5NDZhOS4uOTk5NTc1YTZlYzI3MmY4YjQyMWJiZTAyNDEyNzBkOTY0MzBi
Y2UzNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3Rl
bS5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRmlsZVN5c3RlbS5jcHAK
QEAgLTg0MCw3ICs4NDAsNyBAQCBURVNUX0YoRmlsZVN5c3RlbVRlc3QsIHJlYWRFbnRpcmVGaWxl
KQogVEVTVF9GKEZpbGVTeXN0ZW1UZXN0LCBtYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aCkK
IHsKICAgICBFWFBFQ1RfVFJVRShGaWxlU3lzdGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9y
UGF0aCh0ZW1wRmlsZVBhdGgoKSkpOwotICAgIGF1dG8gcmVzdWx0ID0gRmlsZVN5c3RlbTo6bWFr
ZVNhZmVUb1VzZU1lbW9yeU1hcEZvclBhdGgoU3RyaW5nKCJUaGlzaXNub3RhcmVhbGZpbGUiLCBT
dHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKSk7CisgICAgYXV0byByZXN1bHQgPSBGaWxlU3lz
dGVtOjptYWtlU2FmZVRvVXNlTWVtb3J5TWFwRm9yUGF0aCgiVGhpc2lzbm90YXJlYWxmaWxlIl9z
dHIpOwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShJT1NfRkFNSUxZX1NJ
TVVMQVRPUikKICAgICAvLyBOU0ZpbGVQcm90ZWN0aW9uS2V5IG9ubHkgYWN0dWFsbHkgbWVhbnMg
YW55dGhpbmcgb24tZGV2aWNlLgogICAgIEVYUEVDVF9GQUxTRShyZXN1bHQpOwpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvU3RyaW5nSW1wbC5jcHAgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJbXBsLmNwcAppbmRleCBhYWRmNGY5Y2UzZTUx
YmY1NmQxMDhjM2JlNGQwN2JmOWMzZGUzNmJkLi4wNzE1ZmMwNGNkYmEyNDA3MjNiNDUxMjQxZmUx
YjU5Y2UyMDEzNTJiIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9T
dHJpbmdJbXBsLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdJ
bXBsLmNwcApAQCAtMzYsNyArMzYsNyBAQCBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiBURVNU
KFdURiwgU3RyaW5nSW1wbENyZWF0aW9uRnJvbUxpdGVyYWwpCiB7CiAgICAgLy8gQ29uc3RydWN0
b3IgdXNpbmcgdGhlIHRlbXBsYXRlIHRvIGRldGVybWluZSB0aGUgc2l6ZS4KLSAgICBhdXRvIHN0
cmluZ1dpdGhUZW1wbGF0ZSA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJUZW1wbGF0
ZSBMaXRlcmFsIik7CisgICAgYXV0byBzdHJpbmdXaXRoVGVtcGxhdGUgPSBTdHJpbmdJbXBsOjpj
cmVhdGVGcm9tTGl0ZXJhbCgiVGVtcGxhdGUgTGl0ZXJhbCJfcyk7CiAgICAgQVNTRVJUX0VRKHN0
cmxlbigiVGVtcGxhdGUgTGl0ZXJhbCIpLCBzdHJpbmdXaXRoVGVtcGxhdGUtPmxlbmd0aCgpKTsK
ICAgICBBU1NFUlRfVFJVRShlcXVhbChzdHJpbmdXaXRoVGVtcGxhdGUuZ2V0KCksICJUZW1wbGF0
ZSBMaXRlcmFsIikpOwogICAgIEFTU0VSVF9UUlVFKHN0cmluZ1dpdGhUZW1wbGF0ZS0+aXM4Qml0
KCkpOwpAQCAtNzEsMTQgKzcxLDE0IEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsQ3JlYXRpb25Gcm9t
TGl0ZXJhbCkKIAogVEVTVChXVEYsIFN0cmluZ0ltcGxSZXBsYWNlV2l0aExpdGVyYWwpCiB7Ci0g
ICAgYXV0byB0ZXN0U3RyaW5nSW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCIx
MjI0Iik7CisgICAgYXV0byB0ZXN0U3RyaW5nSW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21M
aXRlcmFsKCIxMjI0Il9zKTsKICAgICBBU1NFUlRfVFJVRSh0ZXN0U3RyaW5nSW1wbC0+aXM4Qml0
KCkpOwogCiAgICAgLy8gQ2FzZXMgZm9yIDhCaXQgc291cmNlLgogICAgIHRlc3RTdHJpbmdJbXBs
ID0gdGVzdFN0cmluZ0ltcGwtPnJlcGxhY2UoJzInLCAiIiwgMCk7CiAgICAgQVNTRVJUX1RSVUUo
ZXF1YWwodGVzdFN0cmluZ0ltcGwuZ2V0KCksICIxNCIpKTsKIAotICAgIHRlc3RTdHJpbmdJbXBs
ID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIjEyMjQiKTsKKyAgICB0ZXN0U3RyaW5n
SW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCIxMjI0Il9zKTsKICAgICBBU1NF
UlRfVFJVRSh0ZXN0U3RyaW5nSW1wbC0+aXM4Qml0KCkpOwogCiAgICAgdGVzdFN0cmluZ0ltcGwg
PSB0ZXN0U3RyaW5nSW1wbC0+cmVwbGFjZSgnMycsICJOb3RGb3VuZCIsIDgpOwpAQCAtODcsNyAr
ODcsNyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbFJlcGxhY2VXaXRoTGl0ZXJhbCkKICAgICB0ZXN0
U3RyaW5nSW1wbCA9IHRlc3RTdHJpbmdJbXBsLT5yZXBsYWNlKCcyJywgIjMiLCAxKTsKICAgICBB
U1NFUlRfVFJVRShlcXVhbCh0ZXN0U3RyaW5nSW1wbC5nZXQoKSwgIjEzMzQiKSk7CiAKLSAgICB0
ZXN0U3RyaW5nSW1wbCA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCIxMjI0Iik7Cisg
ICAgdGVzdFN0cmluZ0ltcGwgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiMTIyNCJf
cyk7CiAgICAgQVNTRVJUX1RSVUUodGVzdFN0cmluZ0ltcGwtPmlzOEJpdCgpKTsKICAgICB0ZXN0
U3RyaW5nSW1wbCA9IHRlc3RTdHJpbmdJbXBsLT5yZXBsYWNlKCcyJywgIjU1NSIsIDMpOwogICAg
IEFTU0VSVF9UUlVFKGVxdWFsKHRlc3RTdHJpbmdJbXBsLmdldCgpLCAiMTU1NTU1NTQiKSk7CkBA
IC0xMTUsMTMgKzExNSwxMyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbFJlcGxhY2VXaXRoTGl0ZXJh
bCkKIAogVEVTVChXVEYsIFN0cmluZ0ltcGxFcXVhbElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCiB7
Ci0gICAgYXV0byBhID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFCY0RlRkciKTsK
LSAgICBhdXRvIGIgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiQUJDREVGRyIpOwot
ICAgIGF1dG8gYyA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhYmNkZWZnIik7Cisg
ICAgYXV0byBhID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFCY0RlRkciX3MpOwor
ICAgIGF1dG8gYiA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJBQkNERUZHIl9zKTsK
KyAgICBhdXRvIGMgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYWJjZGVmZyJfcyk7
CiAgICAgY29uc3QgY2hhciBkW10gPSAiYUJjRGVGRyI7CiAgICAgYXV0byBlbXB0eSA9IFN0cmlu
Z0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIiIpKTsKLSAgICBh
dXRvIHNob3J0ZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYWJjZGVmIik7Ci0g
ICAgYXV0byBkaWZmZXJlbnQgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYWJjcmVm
ZyIpOworICAgIGF1dG8gc2hvcnRlciA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJh
YmNkZWYiX3MpOworICAgIGF1dG8gZGlmZmVyZW50ID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxp
dGVyYWwoImFiY3JlZmciX3MpOwogCiAgICAgLy8gSWRlbnRpdHkuCiAgICAgQVNTRVJUX1RSVUUo
ZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShhLnB0cigpLCBhLnB0cigpKSk7CkBAIC0xNTMsNyArMTUz
LDcgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxFcXVhbElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCiAK
IFRFU1QoV1RGLCBTdHJpbmdJbXBsRXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhOdWxsKQogewot
ICAgIGF1dG8gcmVmZXJlbmNlID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFCY0Rl
RkciKTsKKyAgICBhdXRvIHJlZmVyZW5jZSA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFs
KCJhQmNEZUZHIl9zKTsKICAgICBTdHJpbmdJbXBsKiBudWxsU3RyaW5nSW1wbCA9IG51bGxwdHI7
CiAgICAgQVNTRVJUX0ZBTFNFKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UobnVsbFN0cmluZ0ltcGws
IHJlZmVyZW5jZS5wdHIoKSkpOwogICAgIEFTU0VSVF9GQUxTRShlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHJlZmVyZW5jZS5wdHIoKSwgbnVsbFN0cmluZ0ltcGwpKTsKQEAgLTIxNCwyNiArMjE0LDI2
IEBAIFRFU1QoV1RGLCBTdHJpbmdJbXBsRmluZElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCiAgICAg
RVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4obm90Rm91bmQpLCByZWZlcmVuY2VCLT5maW5k
SWdub3JpbmdBU0NJSUNhc2UocmVmZXJlbmNlQS5wdHIoKSkpOwogCiAgICAgLy8gRmluZCB0aGUg
cHJlZml4LgotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCByZWZlcmVuY2VB
LT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImEi
KS5wdHIoKSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCByZWZlcmVu
Y2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwo
ImEiX3MpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJl
ZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiYWJjw6kiKS5w
dHIoKSkpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCByZWZlcmVuY2VB
LT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIkEi
KS5wdHIoKSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCByZWZlcmVu
Y2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwo
IkEiX3MpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJl
ZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiQUJDw6kiKS5w
dHIoKSkpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCByZWZlcmVuY2VC
LT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImEi
KS5wdHIoKSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCByZWZlcmVu
Y2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwo
ImEiX3MpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJl
ZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiYWJjw4kiKS5w
dHIoKSkpOwotICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCByZWZlcmVuY2VC
LT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIkEi
KS5wdHIoKSkpOworICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDApLCByZWZlcmVu
Y2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwo
IkEiX3MpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMCksIHJl
ZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiQUJDw4kiKS5w
dHIoKSkpOwogCiAgICAgLy8gTm90IGEgcHJlZml4LgotICAgIEVYUEVDVF9FUShzdGF0aWNfY2Fz
dDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VBLT5maW5kSWdub3JpbmdBU0NJSUNh
c2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIngiKS5wdHIoKSkpOworICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VBLT5maW5k
SWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIngiX3MpLnB0
cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCks
IHJlZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiYWNjw6ki
KS5wdHIoKSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91
bmQpLCByZWZlcmVuY2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nRnJvbVVURjgoImFi
Y8OJIikucHRyKCkpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5v
dEZvdW5kKSwgcmVmZXJlbmNlQS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ0ltcGw6OmNy
ZWF0ZUZyb21MaXRlcmFsKCJYIikucHRyKCkpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQS0+ZmluZElnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJYIl9zKS5wdHIoKSkpOwogICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VBLT5maW5k
SWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nRnJvbVVURjgoIkFCRMOpIikucHRyKCkpKTsKICAgICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQS0+
ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4KCJBQkPDiSIpLnB0cigpKSk7Ci0g
ICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5j
ZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgi
eSIpLnB0cigpKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RG
b3VuZCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVh
dGVGcm9tTGl0ZXJhbCgieSJfcykucHRyKCkpKTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5nQVNDSUlDYXNl
KHN0cmluZ0Zyb21VVEY4KCJhY2PDiSIpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19j
YXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJ
Q2FzZShzdHJpbmdGcm9tVVRGOCgiYWJjw6kiKS5wdHIoKSkpOwotICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VCLT5maW5kSWdub3JpbmdB
U0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIlkiKS5wdHIoKSkpOworICAg
IEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VC
LT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIlki
X3MpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RG
b3VuZCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgi
QUJkw4kiKS5wdHIoKSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6
bm90Rm91bmQpLCByZWZlcmVuY2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nRnJvbVVU
RjgoIkFCQ8OpIikucHRyKCkpKTsKIApAQCAtMjgwLDMyICsyODAsMzIgQEAgVEVTVChXVEYsIFN0
cmluZ0ltcGxGaW5kSWdub3JpbmdBU0NJSUNhc2VCYXNpYykKICAgICBFWFBFQ1RfRVEoc3RhdGlj
X2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5nQVND
SUlDYXNlKHN0cmluZ0Zyb21VVEY4KCJ6IikucHRyKCkpKTsKIAogICAgIC8vIEZpbmQgdGhlIHN1
ZmZpeC4KLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90Pig2KSwgcmVmZXJlbmNlQS0+
ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJnIiku
cHRyKCkpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90Pig2KSwgcmVmZXJlbmNl
QS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJn
Il9zKS5wdHIoKSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDQpLCByZWZl
cmVuY2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nRnJvbVVURjgoImVmZyIpLnB0cigp
KSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oMyksIHJlZmVyZW5jZUEtPmZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiw6llZmciKS5wdHIoKSkpOwotICAg
IEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDYpLCByZWZlcmVuY2VBLT5maW5kSWdub3Jp
bmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIkciKS5wdHIoKSkpOwor
ICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDYpLCByZWZlcmVuY2VBLT5maW5kSWdu
b3JpbmdBU0NJSUNhc2UoU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIkciX3MpLnB0cigp
KSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oNCksIHJlZmVyZW5jZUEtPmZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiRUZHIikucHRyKCkpKTsKICAgICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PigzKSwgcmVmZXJlbmNlQS0+ZmluZElnbm9yaW5n
QVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4KCLDqUVGRyIpLnB0cigpKSk7CiAKLSAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8c2l6ZV90Pig2KSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5nQVNDSUlD
YXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJnIikucHRyKCkpKTsKKyAgICBFWFBF
Q1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90Pig2KSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5nQVND
SUlDYXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJnIl9zKS5wdHIoKSkpOwogICAg
IEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KDQpLCByZWZlcmVuY2VCLT5maW5kSWdub3Jp
bmdBU0NJSUNhc2Uoc3RyaW5nRnJvbVVURjgoImVmZyIpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PHNpemVfdD4oMyksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmdGcm9tVVRGOCgiw4llZmciKS5wdHIoKSkpOwotICAgIEVYUEVDVF9FUShzdGF0aWNf
Y2FzdDxzaXplX3Q+KDYpLCByZWZlcmVuY2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3RyaW5n
SW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIkciKS5wdHIoKSkpOworICAgIEVYUEVDVF9FUShzdGF0
aWNfY2FzdDxzaXplX3Q+KDYpLCByZWZlcmVuY2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2UoU3Ry
aW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIkciX3MpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VR
KHN0YXRpY19jYXN0PHNpemVfdD4oNCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2Fz
ZShzdHJpbmdGcm9tVVRGOCgiRUZHIikucHRyKCkpKTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nh
c3Q8c2l6ZV90PigzKSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zy
b21VVEY4KCLDiUVGRyIpLnB0cigpKSk7CiAKICAgICAvLyBOb3QgYSBzdWZmaXguCi0gICAgRVhQ
RUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZUEtPmZp
bmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiWCIpLnB0
cigpKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCks
IHJlZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVhdGVGcm9t
TGl0ZXJhbCgiWCJfcykucHRyKCkpKTsKICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90
PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQS0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKHN0cmlu
Z0Zyb21VVEY4KCJlZGciKS5wdHIoKSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXpl
X3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3Ry
aW5nRnJvbVVURjgoIsOJZWZnIikucHRyKCkpKTsKLSAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8
c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQS0+ZmluZElnbm9yaW5nQVNDSUlDYXNl
KFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJ3IikucHRyKCkpKTsKKyAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQS0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJ3Il9zKS5wdHIo
KSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCBy
ZWZlcmVuY2VBLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nRnJvbVVURjgoImRGRyIpLnB0
cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RGb3VuZCks
IHJlZmVyZW5jZUEtPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmdGcm9tVVRGOCgiw4lFRkci
KS5wdHIoKSkpOwogCi0gICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNpemVfdD4oV1RGOjpub3RG
b3VuZCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShTdHJpbmdJbXBsOjpjcmVh
dGVGcm9tTGl0ZXJhbCgiWiIpLnB0cigpKSk7CisgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNp
emVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShT
dHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiWiJfcykucHRyKCkpKTsKICAgICBFWFBFQ1Rf
RVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQi0+ZmluZEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZ0Zyb21VVEY4KCJmZmciKS5wdHIoKSkpOwogICAgIEVYUEVD
VF9FUShzdGF0aWNfY2FzdDxzaXplX3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VCLT5maW5k
SWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nRnJvbVVURjgoIsOpZWZnIikucHRyKCkpKTsKLSAgICBF
WFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5kKSwgcmVmZXJlbmNlQi0+
ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJyIiku
cHRyKCkpKTsKKyAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8c2l6ZV90PihXVEY6Om5vdEZvdW5k
KSwgcmVmZXJlbmNlQi0+ZmluZElnbm9yaW5nQVNDSUlDYXNlKFN0cmluZ0ltcGw6OmNyZWF0ZUZy
b21MaXRlcmFsKCJyIl9zKS5wdHIoKSkpOwogICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxzaXpl
X3Q+KFdURjo6bm90Rm91bmQpLCByZWZlcmVuY2VCLT5maW5kSWdub3JpbmdBU0NJSUNhc2Uoc3Ry
aW5nRnJvbVVURjgoIkVnRyIpLnB0cigpKSk7CiAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PHNp
emVfdD4oV1RGOjpub3RGb3VuZCksIHJlZmVyZW5jZUItPmZpbmRJZ25vcmluZ0FTQ0lJQ2FzZShz
dHJpbmdGcm9tVVRGOCgiw6lFRkciKS5wdHIoKSkpOwogfQpAQCAtMzgwLDE3ICszODAsMTcgQEAg
VEVTVChXVEYsIFN0cmluZ0ltcGxTdGFydHNXaXRoSWdub3JpbmdBU0NJSUNhc2VCYXNpYykKICAg
ICBBU1NFUlRfVFJVRShyZWZlcmVuY2VFcXVpdmFsZW50LT5zdGFydHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoKnJlZmVyZW5jZUVxdWl2YWxlbnQucHRyKCkpKTsKIAogICAgIC8vIFByb3BlciBwcmVm
aXhlcy4KLSAgICBhdXRvIGFMb3dlciA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJh
Iik7CisgICAgYXV0byBhTG93ZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYSJf
cyk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5zdGFydHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoYUxvd2VyLnB0cigpKSk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5zdGFydHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoKmFMb3dlci5wdHIoKSkpOwotICAgIGF1dG8gYVVwcGVyID0gU3Ry
aW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIkEiKTsKKyAgICBhdXRvIGFVcHBlciA9IFN0cmlu
Z0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJBIl9zKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVu
Y2UtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShhVXBwZXIucHRyKCkpKTsKICAgICBBU1NF
UlRfVFJVRShyZWZlcmVuY2UtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqYVVwcGVyLnB0
cigpKSk7CiAKLSAgICBhdXRvIGFiY0xvd2VyID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVy
YWwoImFiYyIpOworICAgIGF1dG8gYWJjTG93ZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbCgiYWJjIl9zKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPnN0YXJ0c1dpdGhJZ25v
cmluZ0FTQ0lJQ2FzZShhYmNMb3dlci5wdHIoKSkpOwogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5j
ZS0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCphYmNMb3dlci5wdHIoKSkpOwotICAgIGF1
dG8gYWJjVXBwZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiQUJDIik7CisgICAg
YXV0byBhYmNVcHBlciA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJBQkMiX3MpOwog
ICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+c3RhcnRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGFi
Y1VwcGVyLnB0cigpKSk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5zdGFydHNXaXRoSWdu
b3JpbmdBU0NJSUNhc2UoKmFiY1VwcGVyLnB0cigpKSk7CiAKQEAgLTQxOSw3ICs0MTksNyBAQCBU
RVNUKFdURiwgU3RyaW5nSW1wbFN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZUJhc2ljKQogCiBU
RVNUKFdURiwgU3RyaW5nSW1wbFN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhOdWxsKQog
ewotICAgIGF1dG8gcmVmZXJlbmNlID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFC
Y0RlRkciKTsKKyAgICBhdXRvIHJlZmVyZW5jZSA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRl
cmFsKCJhQmNEZUZHIl9zKTsKICAgICBBU1NFUlRfRkFMU0UocmVmZXJlbmNlLT5zdGFydHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UobnVsbHB0cikpOwogCiAgICAgYXV0byBlbXB0eSA9IFN0cmluZ0lt
cGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIiIpKTsKQEAgLTQyOCw3
ICs0MjgsNyBAQCBURVNUKFdURiwgU3RyaW5nSW1wbFN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2Fz
ZVdpdGhOdWxsKQogCiBURVNUKFdURiwgU3RyaW5nSW1wbFN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJ
Q2FzZVdpdGhFbXB0eSkKIHsKLSAgICBhdXRvIHJlZmVyZW5jZSA9IFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKCJhQmNEZUZHIik7CisgICAgYXV0byByZWZlcmVuY2UgPSBTdHJpbmdJbXBs
OjpjcmVhdGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyJfcyk7CiAgICAgYXV0byBlbXB0eSA9IFN0cmlu
Z0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFyKj4oIiIpKTsKICAgICBB
U1NFUlRfVFJVRShyZWZlcmVuY2UtPnN0YXJ0c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZShlbXB0eS5w
dHIoKSkpOwogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+c3RhcnRzV2l0aElnbm9yaW5nQVND
SUlDYXNlKCplbXB0eS5wdHIoKSkpOwpAQCAtNDY5LDE3ICs0NjksMTcgQEAgVEVTVChXVEYsIFN0
cmluZ0ltcGxFbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlQmFzaWMpCiAgICAgQVNTRVJUX1RSVUUo
cmVmZXJlbmNlRXF1aXZhbGVudC0+ZW5kc1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqcmVmZXJlbmNl
RXF1aXZhbGVudC5wdHIoKSkpOwogCiAgICAgLy8gUHJvcGVyIHN1ZmZpeGVzLgotICAgIGF1dG8g
YUxvd2VyID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImEiKTsKKyAgICBhdXRvIGFM
b3dlciA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhIl9zKTsKICAgICBBU1NFUlRf
VFJVRShyZWZlcmVuY2UtPmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoYUxvd2VyLnB0cigpKSk7
CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCph
TG93ZXIucHRyKCkpKTsKLSAgICBhdXRvIGFVcHBlciA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21M
aXRlcmFsKCJhIik7CisgICAgYXV0byBhVXBwZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0
ZXJhbCgiYSJfcyk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5lbmRzV2l0aElnbm9yaW5n
QVNDSUlDYXNlKGFVcHBlci5wdHIoKSkpOwogICAgIEFTU0VSVF9UUlVFKHJlZmVyZW5jZS0+ZW5k
c1dpdGhJZ25vcmluZ0FTQ0lJQ2FzZSgqYVVwcGVyLnB0cigpKSk7CiAKLSAgICBhdXRvIGFiY0xv
d2VyID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImNiYSIpOworICAgIGF1dG8gYWJj
TG93ZXIgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiY2JhIl9zKTsKICAgICBBU1NF
UlRfVFJVRShyZWZlcmVuY2UtPmVuZHNXaXRoSWdub3JpbmdBU0NJSUNhc2UoYWJjTG93ZXIucHRy
KCkpKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmVuZHNXaXRoSWdub3JpbmdBU0NJSUNh
c2UoKmFiY0xvd2VyLnB0cigpKSk7Ci0gICAgYXV0byBhYmNVcHBlciA9IFN0cmluZ0ltcGw6OmNy
ZWF0ZUZyb21MaXRlcmFsKCJDQkEiKTsKKyAgICBhdXRvIGFiY1VwcGVyID0gU3RyaW5nSW1wbDo6
Y3JlYXRlRnJvbUxpdGVyYWwoIkNCQSJfcyk7CiAgICAgQVNTRVJUX1RSVUUocmVmZXJlbmNlLT5l
bmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKGFiY1VwcGVyLnB0cigpKSk7CiAgICAgQVNTRVJUX1RS
VUUocmVmZXJlbmNlLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKCphYmNVcHBlci5wdHIoKSkp
OwogCkBAIC01MDgsNyArNTA4LDcgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxFbmRzV2l0aElnbm9y
aW5nQVNDSUlDYXNlQmFzaWMpCiAKIFRFU1QoV1RGLCBTdHJpbmdJbXBsRW5kc1dpdGhJZ25vcmlu
Z0FTQ0lJQ2FzZVdpdGhOdWxsKQogewotICAgIGF1dG8gcmVmZXJlbmNlID0gU3RyaW5nSW1wbDo6
Y3JlYXRlRnJvbUxpdGVyYWwoImFCY0RlRkciKTsKKyAgICBhdXRvIHJlZmVyZW5jZSA9IFN0cmlu
Z0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhQmNEZUZHIl9zKTsKICAgICBBU1NFUlRfRkFMU0Uo
cmVmZXJlbmNlLT5lbmRzV2l0aElnbm9yaW5nQVNDSUlDYXNlKG51bGxwdHIpKTsKIAogICAgIGF1
dG8gZW1wdHkgPSBTdHJpbmdJbXBsOjpjcmVhdGUocmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hh
cio+KCIiKSk7CkBAIC01MTcsNyArNTE3LDcgQEAgVEVTVChXVEYsIFN0cmluZ0ltcGxFbmRzV2l0
aElnbm9yaW5nQVNDSUlDYXNlV2l0aE51bGwpCiAKIFRFU1QoV1RGLCBTdHJpbmdJbXBsRW5kc1dp
dGhJZ25vcmluZ0FTQ0lJQ2FzZVdpdGhFbXB0eSkKIHsKLSAgICBhdXRvIHJlZmVyZW5jZSA9IFN0
cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhQmNEZUZHIik7CisgICAgYXV0byByZWZlcmVu
Y2UgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYUJjRGVGRyJfcyk7CiAgICAgYXV0
byBlbXB0eSA9IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oIiIpKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmVuZHNXaXRoSWdub3JpbmdBU0NJ
SUNhc2UoZW1wdHkucHRyKCkpKTsKICAgICBBU1NFUlRfVFJVRShyZWZlcmVuY2UtPmVuZHNXaXRo
SWdub3JpbmdBU0NJSUNhc2UoKmVtcHR5LnB0cigpKSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dURi9TdHJpbmdWaWV3LmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCmluZGV4IDg0ZWM1ZGFmMmU0M2JlYTljNDg1MjdjYTI1
Y2RmZDgyOWFmMDdmNDMuLjFmZDM1YmE4ZWRkNjJhZjllYmQ2MDE0N2M5ZjBjNDI0NWZkZTdhMzgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3Bw
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL1N0cmluZ1ZpZXcuY3BwCkBAIC0z
MzUsMTMgKzMzNSwxMyBAQCBURVNUKFdURiwgU3RyaW5nVmlld0VxdWFsQmFzaWMpCiAKIFRFU1Qo
V1RGLCBTdHJpbmdWaWV3RXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZUJhc2ljKQogewotICAgIFJlZlB0
cjxTdHJpbmdJbXBsPiBhID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFCY0RlRkci
KTsKLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gYiA9IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRl
cmFsKCJBQkNERUZHIik7Ci0gICAgUmVmUHRyPFN0cmluZ0ltcGw+IGMgPSBTdHJpbmdJbXBsOjpj
cmVhdGVGcm9tTGl0ZXJhbCgiYWJjZGVmZyIpOworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBhID0g
U3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFCY0RlRkciX3MpOworICAgIFJlZlB0cjxT
dHJpbmdJbXBsPiBiID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoIkFCQ0RFRkciX3Mp
OworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBjID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVy
YWwoImFiY2RlZmciX3MpOwogICAgIGNvbnN0IGNoYXIgZFtdID0gImFCY0RlRkciOwogICAgIFJl
ZlB0cjxTdHJpbmdJbXBsPiBlbXB0eSA9IFN0cmluZ0ltcGw6OmNyZWF0ZShyZWludGVycHJldF9j
YXN0PGNvbnN0IExDaGFyKj4oIiIpKTsKLSAgICBSZWZQdHI8U3RyaW5nSW1wbD4gc2hvcnRlciA9
IFN0cmluZ0ltcGw6OmNyZWF0ZUZyb21MaXRlcmFsKCJhYmNkZWYiKTsKLSAgICBSZWZQdHI8U3Ry
aW5nSW1wbD4gZGlmZmVyZW50ID0gU3RyaW5nSW1wbDo6Y3JlYXRlRnJvbUxpdGVyYWwoImFiY3Jl
ZmciKTsKKyAgICBSZWZQdHI8U3RyaW5nSW1wbD4gc2hvcnRlciA9IFN0cmluZ0ltcGw6OmNyZWF0
ZUZyb21MaXRlcmFsKCJhYmNkZWYiX3MpOworICAgIFJlZlB0cjxTdHJpbmdJbXBsPiBkaWZmZXJl
bnQgPSBTdHJpbmdJbXBsOjpjcmVhdGVGcm9tTGl0ZXJhbCgiYWJjcmVmZyJfcyk7CiAKICAgICBT
dHJpbmdWaWV3IHN0cmluZ1ZpZXdBKCphLmdldCgpKTsKICAgICBTdHJpbmdWaWV3IHN0cmluZ1Zp
ZXdCKCpiLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L1dURlN0cmluZy5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9XVEZTdHJpbmcu
Y3BwCmluZGV4IDBlMGU5YzdmODg3ZjNlYWY3YzQ3NzVhMDE0ZjFlNmNjYThkNDEwZjEuLmYxZTcz
NDk3Y2Y3Mzk3ZWU1M2M2NTMxZjljNzc0MmJhN2ZiZWQyNjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV1RGL1dURlN0cmluZy5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XVEYvV1RGU3RyaW5nLmNwcApAQCAtNDcsMTIgKzQ3LDYgQEAgVEVTVChXVEYs
IFN0cmluZ0NyZWF0aW9uRnJvbUxpdGVyYWwpCiAgICAgRVhQRUNUX0VRKCJTdHJpbmcgTGl0ZXJh
bCIsIHN0cmluZ0Zyb21MaXRlcmFsKTsKICAgICBFWFBFQ1RfVFJVRShzdHJpbmdGcm9tTGl0ZXJh
bC5pczhCaXQoKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygiU3RyaW5nIExpdGVyYWwiKSwgc3Ry
aW5nRnJvbUxpdGVyYWwpOwotCi0gICAgU3RyaW5nIHN0cmluZ1dpdGhUZW1wbGF0ZSgiVGVtcGxh
dGUgTGl0ZXJhbCIsIFN0cmluZzo6Q29uc3RydWN0RnJvbUxpdGVyYWwpOwotICAgIEVYUEVDVF9F
UShzdHJsZW4oIlRlbXBsYXRlIExpdGVyYWwiKSwgc3RyaW5nV2l0aFRlbXBsYXRlLmxlbmd0aCgp
KTsKLSAgICBFWFBFQ1RfRVEoIlRlbXBsYXRlIExpdGVyYWwiLCBzdHJpbmdXaXRoVGVtcGxhdGUp
OwotICAgIEVYUEVDVF9UUlVFKHN0cmluZ1dpdGhUZW1wbGF0ZS5pczhCaXQoKSk7Ci0gICAgRVhQ
RUNUX0VRKFN0cmluZygiVGVtcGxhdGUgTGl0ZXJhbCIpLCBzdHJpbmdXaXRoVGVtcGxhdGUpOwog
fQogCiBURVNUKFdURiwgU3RyaW5nQVNDSUkpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>