<?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>4127</bug_id>
          
          <creation_ts>2005-07-25 08:14:17 -0700</creation_ts>
          <short_desc>WebCore doesn&apos;t support Media Queries (CSS3 module)</short_desc>
          <delta_ts>2006-06-09 10:50:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://www.w3.org/TR/css3-mediaqueries/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kimmo Kinnunen">kimmo.t.kinnunen</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>bdakin</cc>
    
    <cc>bugs-webkit</cc>
    
    <cc>joost</cc>
    
    <cc>nickshanks</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>15163</commentid>
    <comment_count>0</comment_count>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2005-07-25 08:14:17 -0700</bug_when>
    <thetext>WebCore doesn&apos;t support css3 media queries. They&apos;re extension of CSS media types, and allow small 
queries to be made about display device capabilities. 

http://www.w3.org/TR/css3-mediaqueries/

A media query can be inserted where a media type can appear in stylesheet or media -attribute of &lt;style&gt; 
tag.

Media Queries are not that interesting though, as there is zero real world content (Google finds one 
page..). Opera has some media queries support.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15164</commentid>
    <comment_count>1</comment_count>
      <attachid>3080</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2005-07-25 08:17:31 -0700</bug_when>
    <thetext>Created attachment 3080
Initial implementation of CSS Media Queries

Patch to implement CSS3 Media Queries. Affects WebCore/khtml/{css,html}

Note that the patch was created with ordinary diff, as I couldn&apos;t get
&apos;cvs-create-patch&apos; to include new files into the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15165</commentid>
    <comment_count>2</comment_count>
      <attachid>3081</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2005-07-25 08:21:02 -0700</bug_when>
    <thetext>Created attachment 3081
~20 adhoc layout tests to test CSS3 Media Queries

Layout tests to test the media query implementation.
First three test also HTML4 media descriptions parsing.
Last two will fail because khtml doesn&apos;t do style recalc if stylesheet&apos;s media
attribute is changed via JS.

Note that this patch is create with ordinary diff, as I couldn&apos;t get
&apos;cvs-create-patch&apos; to include new files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>15167</commentid>
    <comment_count>3</comment_count>
      <attachid>3082</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2005-07-25 08:40:33 -0700</bug_when>
    <thetext>Created attachment 3082
Initial implementation of CSS Media Queries (contains ForwardingHeaders and xcodeproj also)

Initial implementation of CSS Media Queriesedia Queries. The first one was
missing ForwardingHeaders and xcodeproj files. Sorry for the inconvinience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19155</commentid>
    <comment_count>4</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2005-09-08 23:42:39 -0700</bug_when>
    <thetext>Dave said he&apos;d like to discuss the need for this change, since it&apos;s a significant hunk of new code and does 
not appear to have any current real-world uses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>19802</commentid>
    <comment_count>5</comment_count>
      <attachid>3082</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2005-09-17 14:15:13 -0700</bug_when>
    <thetext>Comment on attachment 3082
Initial implementation of CSS Media Queries (contains ForwardingHeaders and xcodeproj also)

Beth officially owns CSS (according to the assignment guidelines) and thus have
assigned this patch to her.  Hyatt should also take a look.  Regardless, this
patch has been waiting for nearly TWO MONTHS and needs to be reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>20419</commentid>
    <comment_count>6</comment_count>
      <attachid>3082</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2005-09-23 18:22:50 -0700</bug_when>
    <thetext>Comment on attachment 3082
Initial implementation of CSS Media Queries (contains ForwardingHeaders and xcodeproj also)

Just talked to Dave, and he&apos;s going to be the one reviewing this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>22188</commentid>
    <comment_count>7</comment_count>
      <attachid>3082</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2005-10-17 20:32:05 -0700</bug_when>
    <thetext>Comment on attachment 3082
Initial implementation of CSS Media Queries (contains ForwardingHeaders and xcodeproj also)

Looks good to me.  We need some tests, and also need to check for leaks. 
Finally someone from Apple will have to run the perf tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>29508</commentid>
    <comment_count>8</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-01-22 18:55:27 -0800</bug_when>
    <thetext>I asked Tim to land a couple patches that have been here for a long time, and he agreed to do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>30989</commentid>
    <comment_count>9</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-02-01 11:57:32 -0800</bug_when>
    <thetext>This patch no long applies cleanly. We have recently removed QPaintDeviceMetrics from the tree which this patch relies heavily. I am attempting to modify it for work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31004</commentid>
    <comment_count>10</comment_count>
      <attachid>6200</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-02-01 17:21:13 -0800</bug_when>
    <thetext>Created attachment 6200
Revised patch impelmentiaon (applies clean, needs fixes to build)

I have been working on getting this finally landed. However, since this suck an old patch I had to manually apply it to TOT and account for recent directory changes/renames. I am getting some build errors in the css grammar file and tokenizer but I don&apos;t know bison nor flex.

/Volumes/Data/Safari-TOT/OpenSource/WebCore/css/css_grammar.y:528: invalid $ value
/Volumes/Data/Safari-TOT/OpenSource/WebCore/css/css_grammar.y:528: $4 of `media_list&apos; has no declared type
/Volumes/Data/Safari-TOT/OpenSource/WebCore/css/css_grammar.y:530: invalid $ value
/Volumes/Data/Safari-TOT/OpenSource/WebCore/css/css_grammar.y:530: $4 of `media_list&apos; has no declared type
/Volumes/Data/Safari-TOT/OpenSource/WebCore/css/css_grammar.y:541: invalid $ value
/Volumes/Data/Safari-TOT/OpenSource/WebCore/css/css_grammar.y:541: $3 of `media_list&apos; has no declared type
/Volumes/Data/Safari-TOT/OpenSource/WebCore/css/css_grammar.y:541: invalid $ value
/Volumes/Data/Safari-TOT/OpenSource/WebCore/css/css_grammar.y:541: $6 of `media_list&apos; has no declared type

css/tokenizer.flex: In member function &apos;int WebCore::CSSParser::lex()&apos;:
css/tokenizer.flex:38: error: &apos;MEDIA_NOT&apos; was not declared in this scope
css/tokenizer.flex:39: error: &apos;MEDIA_ONLY&apos; was not declared in this scope
css/tokenizer.flex:40: error: &apos;MEDIA_AND&apos; was not declared in this scope
css/tokenizer.flex:48: error: &apos;BEGIN&apos; was not declared in this scope
css/tokenizer.flex:50: error: &apos;BEGIN&apos; was not declared in this scope
css/tokenizer.flex:57: error: &apos;BEGIN&apos; was not declared in this scope
css/tokenizer.flex:57: error: &apos;KHTML_MEDIAQUERY_SYM&apos; was not declared in this scope
css/tokenizer.flex:89: error: &apos;BEGIN&apos; was not declared in this scope

If someone or Kimmo would like to take this patch and fix it up I will be more than happy to run the performance tests and land it ASAP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31005</commentid>
    <comment_count>11</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-02-01 17:31:26 -0800</bug_when>
    <thetext>Correction: &quot;However, since this such an old patch...&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31165</commentid>
    <comment_count>12</comment_count>
      <attachid>6220</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2006-02-03 07:43:28 -0800</bug_when>
    <thetext>Created attachment 6220
Ad-hoc layout tests in the new directory layout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31166</commentid>
    <comment_count>13</comment_count>
      <attachid>6221</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2006-02-03 07:47:24 -0800</bug_when>
    <thetext>Created attachment 6221
Revised media queries patch

Freudian slip on your comments?-) 

Anyway, here&apos;s the patch revised. It adds some functionality to Screen.h, so new review should probably be done if this is wanted to be checked in.
Also the old one leaked, this ought not to..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31170</commentid>
    <comment_count>14</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-03 09:41:28 -0800</bug_when>
    <thetext>I think we can probably just have screenIsMonochrome return false for Mac OS.

On the other hand, the code here is probably fine. I think in practice the only color spaces used for gray-scale are NSCalibratedWhiteColorSpace and NSDeviceWhiteColorSpace.

If we want to try to do it right, then we should presumably get the NSColorSpaceModel and check for NSGrayColorSpaceModel. I don&apos;t see how to get from a color space name to an NSColorSpace object. Those objects are new for 10.4, but our minimum system requirement is 10.4.

One way that might work is to make an NSColor, then call -[NSColor colorUsingColorSpaceName:] on that NSColor, then call -[NSColor colorSpace] on the result of that, and then call -[NSColorSpace colorSpaceModel] on the result of that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31217</commentid>
    <comment_count>15</comment_count>
      <attachid>6221</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-02-03 17:33:38 -0800</bug_when>
    <thetext>Comment on attachment 6221
Revised media queries patch

I think this solution for monochrome is fine. Performance tests are fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31219</commentid>
    <comment_count>16</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2006-02-03 18:00:29 -0800</bug_when>
    <thetext>Landed in r12549.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31391</commentid>
    <comment_count>17</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2006-02-04 21:38:21 -0800</bug_when>
    <thetext>I rolled out this change and reopened the bug. The revised version was causing random crashes on the layout tests, see bug 7068.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>31408</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-02-05 00:25:45 -0800</bug_when>
    <thetext>I noticed when looking over the patch that it has some examples of using an explicit delete on objects that are subclasses of TreeShared. Such objects should use ref/deref or RefPtr, and not explicit delete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40658</commentid>
    <comment_count>19</comment_count>
      <attachid>8019</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2006-04-28 04:50:50 -0700</bug_when>
    <thetext>Created attachment 8019
Revised test cases for CSS Media Queries</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40659</commentid>
    <comment_count>20</comment_count>
      <attachid>8020</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2006-04-28 04:57:41 -0700</bug_when>
    <thetext>Created attachment 8020
Revised CSS Media Queries patch

Yet another version of revised patch implementing CSS Media Queries, inspired by the blog post. Doesn&apos;t include ChangeLog entry.

The previous patch leaked and additionally crashed in Debug builds. I&apos;ve tested this with Debug and Production builds, but it&apos;d be really great if somebody more experienced with the tools would test the patch, especially for leaks. Of course the semantics could be tested aswell...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>40668</commentid>
    <comment_count>21</comment_count>
      <attachid>8020</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-04-28 09:29:26 -0700</bug_when>
    <thetext>Comment on attachment 8020
Revised CSS Media Queries patch

Nice work. I think it would be great to have this in the engine. Here are some things that need to be fixed before another round of review:

There are many tabs in this patch; please use spaces instead of tabs for formatting.

In the parser, we can&apos;t simply use new and delete. It&apos;s always possible for the parse to fail entirely. For that reason anything allocated during parsing must be owned by the parser and freed by the parser if it&apos;s never used. That&apos;s the reason for all the CSSParser functions like createMediaList and createFloatingFunction. Here are problematic cases:

+        $$ = new MediaQueryExp($3, $5);

The old strategy of trying to do the deletion in error cases in the parser didn&apos;t work. There are details of this in bug 7331 and the check-in I did on 2006-02-20.

Please use our new formatting in new code:

+         CSSParser *p = static_cast&lt;CSSParser *&gt;(parser);

That should be CSSParser* p = static_cast&lt;CSSParser*&gt;(parser).

+		$$ = getMediaFeatureID( str.lower().latin1(), str.length() );

And that should be getMediaFeatureID(str.lower().latin1(), str.length()) with no spaces. Also, please don&apos;t use DeprecatedString in new code unless you can&apos;t find any alternative.

Please use FIXME: instead of XXX: in comments that represent things that you think need to be investigated, and lets try to get rid of as many of those as possible before landing.

+        MediaQueryEvaluator allEval(true), screenEval(&quot;screen&quot;, true), printEval(&quot;print&quot;, true);

Please don&apos;t define multiple objects with a single statement.

+    if (string.isEmpty() || string.isNull()) {
+		return true;
+    }

We don&apos;t use braces around single statements like this, and there&apos;s no need to check for isNull() once you&apos;ve checked for isEmpty() since all null strngs are also empty.

+#define BEGIN yy_start = 1 + 2 *

What&apos;s the reason for that line?

+    delete (m_value);

Please don&apos;t use parentheses for delete statements.

+        RenderStyle *defaultStyleForRoot(Element* e);

Should be:

        RenderStyle* defaultStyleForRoot(Element*);

What is the status of these?

+        $$-&gt;appendMediaQuery($1); //FIXME: domString($1).lower() );
+            $$-&gt;appendMediaQuery($4); //FIXME: domString($4) );

I&apos;d like to see use of Vector&lt;RefPtr&lt;MediaQuery&gt;&gt; instead of DeprecatedPtrList&lt;MediaQuery&gt; for the list of queries. Also, I think that m_queries is a fine name, no need for &quot;m_lst&quot;.

We can remove the &quot;_NOT_ part of the DOM!&quot; comment.

Perhaps we can use atomic strings instead of integers for the media features. I&apos;d prefer not to add yet another special gperf file since we have a more-modern solution to such problems.

I didn&apos;t review the actual evaluator carefully enough, but I noticed a few things. First, we don&apos;t need braces around each case in a case statement. We only use braces when there&apos;s a variable declaration. Also, no need for &quot;else&quot; statements after return statements. A line like this:

+                return (isNumberValue &amp;&amp;  (int)numberValue == 0 );

should instead be

    return isNumberValue &amp;&amp; numberValue == 0;

after removing extra parentheses, space, and unnecessary type cast.

The new structure is supposed to be a class per file, and the file named after the class. So the file should be named MediaQuery, not CSSMediaQuery. I&apos;d suggest not even using a class for MediaQueryExpList; just Vector&lt;MediaQueryExp&gt; should do.

We also need to figure out how to test this. The patch should include both change log and test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42449</commentid>
    <comment_count>22</comment_count>
    <who name="Joost de Valk (AlthA)">joost</who>
    <bug_when>2006-05-16 00:55:54 -0700</bug_when>
    <thetext>I&apos;d really, really like to see this working :) Don&apos;t let this become an orphan patch, please :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43375</commentid>
    <comment_count>23</comment_count>
      <attachid>8508</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2006-05-24 00:42:40 -0700</bug_when>
    <thetext>Created attachment 8508
Revised CSS Media Queries patch including testcases

The patch is revised taking into account Darin&apos;s comments
 - removed tabs and corrected whitespaces in ptrs and refs
 - use float-sink in CSSParser
 - reduced FIXMEs, removed XXXs
 - no multiple objects in single statement
 - removed redundant parentheses
 - one class per file, removed MediaQueryExpList class
 - using atomicstring+hashset function table instead of gperf
 - attached test cases to the patch (was in separate file previously)
 - added changelogs
 - removed usage of Deprecated* with the exception of DeprecatedStringList

Other things modified
 - more clear distinction between media descriptors and media types
 - small changes to SVG part
 - renamed testcases
 - make setting of media.mediaTest throw if syntax error
 - added few test cases

Like previously, it&apos;d be great if somebody else than me could also try out the patch..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43411</commentid>
    <comment_count>24</comment_count>
      <attachid>8508</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-05-24 13:08:17 -0700</bug_when>
    <thetext>Comment on attachment 8508
Revised CSS Media Queries patch including testcases

Great!  I have a few comments/suggestions:

(1) Rename adjustFont to updateFont.
(2) Rename matchUAAndPrintRules to matchUARules.
(3) The defaultStyleForRoot method feels really gross to me (the way it has to duplicate the style resolution process).  Is there no way to just compute this style during the normal process?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43412</commentid>
    <comment_count>25</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-05-24 13:15:37 -0700</bug_when>
    <thetext>e.g., maybe have a mode during styleForElement that will just exclude the author and user rules.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43590</commentid>
    <comment_count>26</comment_count>
      <attachid>8549</attachid>
    <who name="Kimmo Kinnunen">kimmo.t.kinnunen</who>
    <bug_when>2006-05-26 00:42:28 -0700</bug_when>
    <thetext>Created attachment 8549
Revised patch

Renamed functions and merged defaultStyleForRoot (back) to styleForElement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43929</commentid>
    <comment_count>27</comment_count>
      <attachid>8549</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2006-05-29 23:07:45 -0700</bug_when>
    <thetext>Comment on attachment 8549
Revised patch

r=me.

To the person who commits this, here&apos;s some tests to run before landing:

(1) Performance test PLT and i-bench
(2) Run all the layout tests
(3) Test the Web Inspector and make sure the style pane still works, since that is the only real test of the style rule collection code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>45200</commentid>
    <comment_count>28</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2006-06-09 10:50:23 -0700</bug_when>
    <thetext>I performance tested this a bunch, Maciej fixed a performance regression the patch caused, and i landed it all as r14779.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3080</attachid>
            <date>2005-07-25 08:17:31 -0700</date>
            <delta_ts>2005-07-25 08:40:33 -0700</delta_ts>
            <desc>Initial implementation of CSS Media Queries</desc>
            <filename>webcore-mediaquery.patch</filename>
            <type>text/plain</type>
            <size>60048</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">ZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3Jl
L2todG1sL2Nzcy9jc3NfbWVkaWFxdWVyeWV2YWwuY3BwIHdlYmtpdC1tb2RpZmllZC9XZWJDb3Jl
L2todG1sL2Nzcy9jc3NfbWVkaWFxdWVyeWV2YWwuY3BwCi0tLSB3ZWJraXQvV2ViQ29yZS9raHRt
bC9jc3MvY3NzX21lZGlhcXVlcnlldmFsLmNwcAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAw
MCArMDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc19tZWRpYXF1
ZXJ5ZXZhbC5jcHAJMjAwNS0wNy0yNCAxMjo1MTowNy4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCAr
MSwzMzcgQEAKKyNpbmNsdWRlICJjc3MvY3NzX21lZGlhcXVlcnlldmFsLmgiCisjaW5jbHVkZSAi
Y3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oIgorI2luY2x1ZGUgImNzcy9jc3NtZWRpYWZlYXR1cmVz
LmgiCisjaW5jbHVkZSAiY3NzL2Nzc192YWx1ZWltcGwuaCIKKyNpbmNsdWRlICJyZW5kZXJpbmcv
cmVuZGVyX3N0eWxlLmgiCisKKyNpbmNsdWRlICJraHRtbHZpZXcuaCIKKyNpbmNsdWRlIDxxYXBw
bGljYXRpb24uaD4KKyNpbmNsdWRlIDxxcGFpbnRkZXZpY2VtZXRyaWNzLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBraHRtbDsKK3VzaW5nIG5hbWVzcGFjZSBET007CisKK01lZGlhUXVlcnlFdmFsdWF0
b3I6OiBNZWRpYVF1ZXJ5RXZhbHVhdG9yKGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0KQorICAgIDpt
X3ZpZXcoMCkKKyAgICAsbV9wYWludE1ldHJpY3MoMCkKKyAgICAsbV9zdHlsZSgwKQorICAgICxt
X2V4cFJlc3VsdChtZWRpYUZlYXR1cmVSZXN1bHQpCit7Cit9CisKK01lZGlhUXVlcnlFdmFsdWF0
b3I6OiBNZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFFTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBl
LCBib29sIG1lZGlhRmVhdHVyZVJlc3VsdCkKKyAgICA6bV9tZWRpYVR5cGUoYWNjZXB0ZWRNZWRp
YVR5cGUpCisgICAgLG1fdmlldygwKQorICAgICxtX3BhaW50TWV0cmljcygwKQorICAgICxtX3N0
eWxlKDApCisgICAgLG1fZXhwUmVzdWx0KG1lZGlhRmVhdHVyZVJlc3VsdCkKK3sKK30KKworTWVk
aWFRdWVyeUV2YWx1YXRvcjo6IE1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgUVN0cmluZyYgYWNj
ZXB0ZWRNZWRpYVR5cGUsIEtIVE1MVmlldyogdmlldywgUVBhaW50RGV2aWNlTWV0cmljcyogbWV0
cmljcywgUmVuZGVyU3R5bGUqIHN0eWxlKQorICAgIDptX21lZGlhVHlwZShhY2NlcHRlZE1lZGlh
VHlwZS5sb3dlcigpKQorICAgICxtX3ZpZXcodmlldykKKyAgICAsbV9wYWludE1ldHJpY3MobWV0
cmljcykKKyAgICAsbV9zdHlsZShzdHlsZSkKKyAgICAsbV9leHBSZXN1bHQoZmFsc2UpIC8vIGRv
ZXNuJ3QgbWF0dGVyCit7Cit9CisKK01lZGlhUXVlcnlFdmFsdWF0b3I6On5NZWRpYVF1ZXJ5RXZh
bHVhdG9yKCkKK3sKK30KKworYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYVR5cGVNYXRj
aChjb25zdCBRU3RyaW5nJiBtZWRpYVR5cGVUb01hdGNoKSBjb25zdAoreworICAgIHJldHVybiBt
ZWRpYVR5cGVUb01hdGNoLmlzTnVsbCgpCisgICAgfHwgbWVkaWFUeXBlVG9NYXRjaC5pc0VtcHR5
KCkKKyAgICB8fCAobWVkaWFUeXBlVG9NYXRjaC5zdGFydHNXaXRoKCJhbGwiLCBmYWxzZSkgJiYg
bWVkaWFUeXBlVG9NYXRjaC5sZW5ndGgoKSA9PSAzKQorICAgIHx8IG1lZGlhVHlwZVRvTWF0Y2gu
bG93ZXIoKSA9PSBtX21lZGlhVHlwZTsKK30KKworc3RhdGljIGJvb2wgYXBwbHlSZXN0cmljdG9y
KE1lZGlhUXVlcnlJbXBsOjpSZXN0cmljdG9yIHIsIGJvb2wgdmFsdWUpCit7CisgICAgcmV0dXJu
IHIgPT0gTWVkaWFRdWVyeUltcGw6Ok5vdCA/ICF2YWx1ZSA6IHZhbHVlOworfQorCitib29sIE1l
ZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWwoY29uc3QgTWVkaWFMaXN0SW1wbCogbWVkaWFMaXN0KSBj
b25zdAoreworICAgIGlmICghbWVkaWFMaXN0KQorCQlyZXR1cm4gdHJ1ZTsKKworICAgIFFQdHJM
aXN0SXRlcmF0b3I8TWVkaWFRdWVyeUltcGw+IGl0KCptZWRpYUxpc3QtPm1lZGlhUXVlcmllcygp
LT5saXN0KCkpOworICAgIGlmICghaXQuY3VycmVudCgpKQorICAgIAlyZXR1cm4gdHJ1ZTsgLy8g
ZW1wdHkgcXVlcnkgbGlzdCBldmFsdWF0ZXMgdG8gdHJ1ZQorCisgICAgLy8gaXRlcmF0ZSBvdmVy
IHF1ZXJpZXMsIHN0b3AgaWYgYW55IG9mIHRoZW0gZXZhbCB0byB0cnVlIChPUiBzZW1hbnRpY3Mp
CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBmb3IgKE1lZGlhUXVlcnlJbXBsKiBxdWVy
eSA9IGl0LmN1cnJlbnQoKTsgcXVlcnkgJiYgKHJlc3VsdD09ZmFsc2UpOyBxdWVyeSA9ICsraXQp
IHsKKworICAgICAgICBpZiAobWVkaWFUeXBlTWF0Y2gocXVlcnktPm1lZGlhVHlwZSgpKSkgewor
ICAgICAgICAgICAgUVB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5RXhwSW1wbD4gZXhwX2l0KCpx
dWVyeS0+ZXhwcmVzc2lvbnMoKS0+bGlzdCgpKTsKKyAgICAgICAgICAgIC8vIGl0ZXJhdGUgdGhy
b3VnaCBleHByZXNzaW9ucywgc3RvcCBpZiBhbnkgb2YgdGhlbSBldmFsIHRvIGZhbHNlIChBTkQg
c2VtYW50aWNzKQorICAgICAgICAgICAgTWVkaWFRdWVyeUV4cEltcGwqIGV4cCA9IDA7CisgICAg
ICAgICAgICBmb3IgKGV4cCA9IGV4cF9pdC5jdXJyZW50KCk7IGV4cCAmJiBldmFsKGV4cCk7IGV4
cCA9ICsrZXhwX2l0KSAvKiBlbXB0eSovOworCisgICAgICAgICAgICAvLyBhc3N1bWUgdHJ1ZSBp
ZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgb3RoZXJ3aXNlIGFzc3VtZSBmYWxzZQor
ICAgICAgICAgICAgcmVzdWx0ID0gYXBwbHlSZXN0cmljdG9yKHF1ZXJ5LT5yZXN0cmljdG9yKCks
ICFleHApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gYXBwbHlSZXN0
cmljdG9yKHF1ZXJ5LT5yZXN0cmljdG9yKCksIGZhbHNlKTsKKwkJfQorICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbCBwYXJzZUFzcGVjdFJhdGlvKENTU1ZhbHVlSW1w
bCogdmFsdWUsIGludCogYSwgaW50KiBiKQoreworICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3Qo
KSApeworICAgICAgICBDU1NWYWx1ZUxpc3RJbXBsKiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxD
U1NWYWx1ZUxpc3RJbXBsKj4odmFsdWUpOworICAgICAgICBpZiAodmFsdWVMaXN0LT5sZW5ndGgo
KSA9PSAzICkgeworICAgICAgICAgICAgQ1NTVmFsdWVJbXBsKiBpMCA9IHZhbHVlTGlzdC0+aXRl
bSgwKTsKKyAgICAgICAgICAgIENTU1ZhbHVlSW1wbCogaTEgPSB2YWx1ZUxpc3QtPml0ZW0oMSk7
CisgICAgICAgICAgICBDU1NWYWx1ZUltcGwqIGkyID0gdmFsdWVMaXN0LT5pdGVtKDIpOworICAg
ICAgICAgICAgaWYgKGkwLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWVJbXBsKj4oaTApLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIKKyAgICAgICAgICAgICAgICAmJiBpMS0+aXNQcmltaXRpdmVWYWx1ZSgp
ICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlSW1wbCo+KGkxKS0+cHJpbWl0aXZlVHlw
ZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HCisgICAgICAgICAgICAgICAgJiYg
aTItPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZUlt
cGwqPihpMiktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UikgeworICAgICAgICAgICAgICAgIERPTVN0cmluZyBzdHIgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZUltcGwqPihpMSktPmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICAgICAg
aWYgKCFzdHIuaXNOdWxsKCkgJiYgc3RyLmxlbmd0aCgpID09IDEgJiYgc3RyWzBdID09IFFDaGFy
KCcvJykpIHsKKyAgICAgICAgICAgICAgICAgICAgKmEgPSAoaW50KSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZUltcGwqPihpMCktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpOworICAgICAgICAgICAgICAgICAgICAqYiA9IChpbnQpIHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlSW1wbCo+KGkyKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChjb25zdCBNZWRp
YVF1ZXJ5RXhwSW1wbCogZXhwcikgY29uc3QKK3sKKyAgICBpZiAoIW1fdmlldyB8fCAhbV9zdHls
ZSkKKyAgICAgICAgcmV0dXJuIG1fZXhwUmVzdWx0OworICAgIENTU1ZhbHVlSW1wbCogdmFsdWUg
PSBleHByLT52YWx1ZSgpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlSW1wbCogcHJpbWl0aXZlID0g
MDsKKworICAgIGJvb2wgaXNOdW1iZXJWYWx1ZSA9IGZhbHNlOworICAgIGRvdWJsZSBudW1iZXJW
YWx1ZSA9IC0xOworICAgIGludCBwcmltaXRpdmVMZW5ndGggPSAtMTsKKworICAgIGlmICh2YWx1
ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIHByaW1pdGl2ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlSW1wbCo+KHZhbHVlKTsKKyAgICAgICAgcHJpbWl0
aXZlTGVuZ3RoID0gcHJpbWl0aXZlLT5jb21wdXRlTGVuZ3RoKG1fc3R5bGUsIG1fcGFpbnRNZXRy
aWNzKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CisgICAgICAgICAgICBpc051bWJlclZhbHVlID0gdHJ1
ZTsKKyAgICAgICAgICAgIG51bWJlclZhbHVlID0gcHJpbWl0aXZlLT5nZXRGbG9hdFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3
aXRjaCAoZXhwci0+bWVkaWFGZWF0dXJlKCkpIHsKKworICAgICAgICBjYXNlIENTU19NRURJQV9G
RUFUX0NPTE9SOiB7CisgICAgICAgICAgICBpbnQgYml0c1BlckNvbXBvbmVudCA9IG1fcGFpbnRN
ZXRyaWNzLT5kZXB0aCgpIC8gM0w7CisgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIChpc051bWJlclZhbHVlICYmIGJpdHNQZXJDb21wb25lbnQgPT0gKGludClu
dW1iZXJWYWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGJp
dHNQZXJDb21wb25lbnQgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElB
X0ZFQVRfTUlOX0NPTE9SOiB7CisgICAgICAgICAgICBpbnQgYml0c1BlckNvbXBvbmVudCA9IG1f
cGFpbnRNZXRyaWNzLT5kZXB0aCgpIC8gM0w7CisgICAgICAgICAgICBpZiAodmFsdWUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIChpc051bWJlclZhbHVlICYmIGJpdHNQZXJDb21wb25lbnQgPj0g
KGludCludW1iZXJWYWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0
dXJuIGJpdHNQZXJDb21wb25lbnQgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NT
X01FRElBX0ZFQVRfTUFYX0NPTE9SOiB7CisgICAgICAgICAgICBpbnQgYml0c1BlckNvbXBvbmVu
dCA9IG1fcGFpbnRNZXRyaWNzLT5kZXB0aCgpIC8gM0w7CisgICAgICAgICAgICBpZiAodmFsdWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIChpc051bWJlclZhbHVlICYmIGJpdHNQZXJDb21wb25l
bnQgPD0gKGludCludW1iZXJWYWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGJpdHNQZXJDb21wb25lbnQgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgQ1NTX01FRElBX0ZFQVRfTU9OT0NIUk9NRToKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVB
VF9NSU5fTU9OT0NIUk9NRToKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NQVhfTU9OT0NI
Uk9NRToKKyAgICAgICAgICAgIC8vLyBYWFg6IGhvdyB0byBnZXQgZGlzcGxheSBtb2RlIGZyb20g
UXQ/CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX0NP
TE9SX0lOREVYOgorICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9DT0xPUl9JTkRFWDoK
KyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NQVhfQ09MT1JfSU5ERVg6CisgICAgICAgICAg
ICAvLy8gWFhYOiBob3cgdG8gZ2V0IGRpc3BsYXkgbW9kZSBmcm9tIFF0PworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9ERVZJQ0VfQVNQRUNUX1JBVElP
OiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBRUmVjdCBzZyA9
IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5HZW9tZXRyeShRQXBwbGljYXRpb246OmRl
c2t0b3AoKS0+c2NyZWVuTnVtYmVyKG1fdmlldykpOworICAgICAgICAgICAgICAgIGludCBhOwor
ICAgICAgICAgICAgICAgIGludCBiOworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFzcGVjdFJh
dGlvKHZhbHVlLCAmYSwgJmIpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGIhPTApICYm
IChhKnNnLmhlaWdodCgpID09IGIqc2cud2lkdGgoKSk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIC8vIChkZXZpY2UtYXNwZWN0LXJhdGlvKSwgYXNzdW1lIGlmIHdlIGhh
dmUgYSBkZXZpY2UsIGl0cyBhc3BlY3QgcmF0aW8gaXMgbm9uLXplcm8KKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
Q1NTX01FRElBX0ZFQVRfTUlOX0RFVklDRV9BU1BFQ1RfUkFUSU86IHsKKyAgICAgICAgICAgIGlm
ICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIFFSZWN0IHNnID0gUUFwcGxpY2F0aW9uOjpkZXNr
dG9wKCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5OdW1i
ZXIobV92aWV3KSk7CisgICAgICAgICAgICAgICAgaW50IGE7CisgICAgICAgICAgICAgICAgaW50
IGI7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlQXNwZWN0UmF0aW8odmFsdWUsICZhLCAmYikp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoYiE9MCkgJiYgKCgoZG91YmxlKXNnLndpZHRo
KCkvc2cuaGVpZ2h0KCkpID49ICgoZG91YmxlKWEvYikpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAvLyAobWluLWRldmljZS1hc3BlY3QtcmF0aW8pLCBhc3N1bWUgaWYg
d2UgaGF2ZSBhIGRldmljZSwgaXRzIGFzcGVjdCByYXRpbyBpcyBub24temVybworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBDU1NfTUVESUFfRkVBVF9NQVhfREVWSUNFX0FTUEVDVF9SQVRJTzogeworICAgICAgICAg
ICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgUVJlY3Qgc2cgPSBRQXBwbGljYXRpb246
OmRlc2t0b3AoKS0+c2NyZWVuR2VvbWV0cnkoUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPnNjcmVl
bk51bWJlcihtX3ZpZXcpKTsKKyAgICAgICAgICAgICAgICBpbnQgYTsKKyAgICAgICAgICAgICAg
ICBpbnQgYjsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VBc3BlY3RSYXRpbyh2YWx1ZSwgJmEs
ICZiKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChiIT0wKSAmJiAoKChkb3VibGUpc2cu
d2lkdGgoKS9zZy5oZWlnaHQoKSkgPD0gKChkb3VibGUpYS9iKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIC8vIChtYXgtZGV2aWNlLWFzcGVjdC1yYXRpbyksIGFzc3Vt
ZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBpdHMgYXNwZWN0IHJhdGlvIGlzIG5vbi16ZXJvCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIENTU19NRURJQV9GRUFUX0RFVklDRV9IRUlHSFQ6IHsKKyAgICAgICAgICAgIGlm
ICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIFFSZWN0IHNnID0gUUFwcGxpY2F0aW9uOjpkZXNr
dG9wKCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5OdW1i
ZXIobV92aWV3KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChwcmltaXRpdmUgJiYgc2cuaGVp
Z2h0KCkgPT0gcHJpbWl0aXZlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgLy8gKGRldmljZS1oZWlnaHQpLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwg
YXNzdW1lIG5vbi16ZXJvCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9ERVZJQ0Vf
SEVJR0hUOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBRUmVj
dCBzZyA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5HZW9tZXRyeShRQXBwbGljYXRp
b246OmRlc2t0b3AoKS0+c2NyZWVuTnVtYmVyKG1fdmlldykpOworICAgICAgICAgICAgICAgIHJl
dHVybiAocHJpbWl0aXZlICYmIHNnLmhlaWdodCgpID49IHByaW1pdGl2ZUxlbmd0aCk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIChtaW4tZGV2aWNlLWhlaWdodCks
IGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBhc3N1bWUgbm9uLXplcm8KKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgQ1NTX01FRElBX0ZFQVRfTUFYX0RFVklDRV9IRUlHSFQ6IHsKKyAgICAgICAgICAgIGlmICh2
YWx1ZSkgeworICAgICAgICAgICAgICAgIFFSZWN0IHNnID0gUUFwcGxpY2F0aW9uOjpkZXNrdG9w
KCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5OdW1iZXIo
bV92aWV3KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChwcmltaXRpdmUgJiYgc2cuaGVpZ2h0
KCkgPD0gcHJpbWl0aXZlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgLy8gKG1heC1kZXZpY2UtaGVpZ2h0KSwgYXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2Us
IGFzc3VtZSBub24temVybworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9ERVZJQ0VfV0lE
VEg6IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIFFSZWN0IHNn
ID0gUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6
ZGVza3RvcCgpLT5zY3JlZW5OdW1iZXIobV92aWV3KSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IChwcmltaXRpdmUgJiYgc2cud2lkdGgoKSA9PSBwcmltaXRpdmVMZW5ndGgpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyAoZGV2aWNlLXdpZHRoKSwgYXNzdW1lIGlm
IHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybworICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVE
SUFfRkVBVF9NSU5fREVWSUNFX1dJRFRIOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBRUmVjdCBzZyA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5H
ZW9tZXRyeShRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuTnVtYmVyKG1fdmlldykpOwor
ICAgICAgICAgICAgICAgIHJldHVybiAocHJpbWl0aXZlICYmIHNnLndpZHRoKCkgPj0gcHJpbWl0
aXZlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gKG1p
bi1kZXZpY2Utd2lkdGgpLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgYXNzdW1lIG5vbi16
ZXJvCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01BWF9ERVZJQ0VfV0lEVEg6IHsKKyAg
ICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIFFSZWN0IHNnID0gUUFwcGxp
Y2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgp
LT5zY3JlZW5OdW1iZXIobV92aWV3KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChwcmltaXRp
dmUgJiYgc2cud2lkdGgoKSA8PSBwcmltaXRpdmVMZW5ndGgpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAvLyAobWF4LWRldmljZS13aWR0aCksIGFzc3VtZSBpZiB3ZSBo
YXZlIGEgZGV2aWNlLCBhc3N1bWUgbm9uLXplcm8KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZF
QVRfR1JJRDogeworICAgICAgICAgICAgLy8gaWYgb3V0cHV0IGRldmljZSBpcyBiaXRtYXAsIGdy
aWQ6IDAgPT0gdHJ1ZQorICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJl
dHVybiAoaXNOdW1iZXJWYWx1ZSAmJiAgKGludCludW1iZXJWYWx1ZSA9PSAwICk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9IRUlHSFQ6IHsKKyAgICAgICAgICAgIGlmICh2YWx1
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlICYmIG1fdmlldy0+dmlzaWJsZUhl
aWdodCgpID09IHByaW1pdGl2ZUxlbmd0aDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbV92aWV3LT52aXNpYmxlSGVpZ2h0KCkgIT0gMDsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUlOX0hFSUdIVDogeworICAgICAgICAgICAgaWYg
KHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmUgJiYgbV92aWV3LT52aXNp
YmxlSGVpZ2h0KCkgPj0gcHJpbWl0aXZlTGVuZ3RoOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHJldHVybiBtX3ZpZXctPnZpc2libGVIZWlnaHQoKSAhPSAwOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NQVhfSEVJR0hUOiB7CisgICAgICAgICAg
ICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIChwcmltaXRpdmUgJiYgbV92aWV3
LT52aXNpYmxlSGVpZ2h0KCkgPD0gcHJpbWl0aXZlTGVuZ3RoKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICByZXR1cm4gKG1fdmlldy0+dmlzaWJsZUhlaWdodCgpICE9IDApOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9XSURUSDogeworICAgICAg
ICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmUgJiYgbV92
aWV3LT52aXNpYmxlV2lkdGgoKSA9PSBwcmltaXRpdmVMZW5ndGg7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdmlldy0+dmlzaWJsZVdpZHRoKCkgIT0gMDsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUlOX1dJRFRIOiB7CisgICAg
ICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZSAmJiBt
X3ZpZXctPnZpc2libGVXaWR0aCgpID49IHByaW1pdGl2ZUxlbmd0aDsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92aWV3LT52aXNpYmxlV2lkdGgoKSAhPSAwOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NQVhfV0lEVEg6eworICAg
ICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmUgJiYg
bV92aWV3LT52aXNpYmxlV2lkdGgoKSA8PSBwcmltaXRpdmVMZW5ndGg7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdmlldy0+dmlzaWJsZVdpZHRoKCkgIT0gMDsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfUkVTT0xVVElPTjoKKyAg
ICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NSU5fUkVTT0xVVElPTjoKKyAgICAgICAgY2FzZSBD
U1NfTUVESUFfRkVBVF9NQVhfUkVTT0xVVElPTjoKKyAgICAgICAgICAgIC8vWFhYOiBDU1NfRElN
RU5TSU9OIGRvZXNuJ3Qgc2VlbSB0byBiZSBzdXBwb3J0ZWQgYnkgS0hUTUwKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfU0NBTjoKKyAgICAgICAgICAg
IC8vIHNjYW4gYXBwbGllcyB0byB0diBtZWRpYSB0eXBlcworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfSU5WQUxJRDoKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
ZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3Jl
L2todG1sL2Nzcy9jc3NfbWVkaWFxdWVyeWV2YWwuaCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9r
aHRtbC9jc3MvY3NzX21lZGlhcXVlcnlldmFsLmgKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nz
cy9jc3NfbWVkaWFxdWVyeWV2YWwuaAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIw
MAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc19tZWRpYXF1ZXJ5ZXZh
bC5oCTIwMDUtMDctMjQgMTI6NTE6MDguMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsNzAgQEAK
KyNpZm5kZWYgQ1NTX2Nzc19tZWRpYXF1ZXJ5ZXZhbF9oCisjZGVmaW5lIENTU19jc3NfbWVkaWFx
dWVyeWV2YWxfaAorCisjaW5jbHVkZSA8cXN0cmluZy5oPgorI2luY2x1ZGUgPHF2YWx1ZWxpc3Qu
aD4KKworI2luY2x1ZGUgImNzcy9jc3NfbWVkaWFxdWVyeWltcGwuaCIKKworY2xhc3MgUVBhaW50
RGV2aWNlTWV0cmljczsKK2NsYXNzIEtIVE1MVmlldzsKKworbmFtZXNwYWNlIGtodG1sIHsKK2Ns
YXNzIFJlbmRlclN0eWxlOworfQorCituYW1lc3BhY2UgRE9NeworY2xhc3MgTWVkaWFMaXN0SW1w
bDsKKworLyoqCisgKiBDbGFzcyB0aGF0IGV2YWx1YXRlcyBjc3MgbWVkaWEgcXVlcmllcyBhcyBk
ZWZpbmVkIGluCisgKiBDU1MzIE1vZHVsZSAiTWVkaWEgUXVlcmllcyIgKGh0dHA6Ly93d3cudzMu
b3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLykKKyAqIFNwZWNpYWwgY29uc3RydWN0b3JzIGFyZSBu
ZWVkZWQsIGlmIHNpbXBsZSBtZWRpYSBxdWVyaWVzIGFyZSB0byBiZQorICogZXZhbHVhdGVkIHdp
dGhvdXQga25vd2xlZGdlIG9mIHRoZSBtZWRpdW0gZmVhdHVyZXMuIFRoaXMgY2FuIGhhcHBlbgor
ICogZm9yIGV4YW1wbGUgd2hlbiBwYXJzaW5nIFVBIHN0eWxlc2hlZXRzLCBpZiBldmFsdWF0aW9u
IGlzIGRvbmUKKyAqIHJpZ2h0IGFmdGVyIHBhcnNpbmcuCisgKgorICogdGhlIGJvb2xlYW4gcGFy
YW1ldGVyIGlzIHVzZWQgdG8gYXBwcm94aW1hdGUgcmVzdWx0cyBvZiBldmFsdWF0aW9uLCBpZgor
ICogdGhlIGRldmljZSBjaGFyYWN0ZXJpc3RpY3MgYXJlIG5vdCBrbm93bi4gVGhpcyBjYW4gYmUg
dXNlZCB0byBwcnVuZSB0aGUgbG9hZGluZworICogb2Ygc3R5bGVzaGVldHMgdG8gb25seSB0aG9z
ZSB3aGljaCBhcmUgcHJvYmFibGUgdG8gbWF0Y2guCisgKi8KK2NsYXNzIE1lZGlhUXVlcnlFdmFs
dWF0b3IKK3sKK3B1YmxpYzoKKwkvKiogQ3JlYXRlcyBldmFsdWF0b3Igd2hpY2ggZXZhbHVhdGVz
IG9ubHkgc2ltcGxlIG1lZGlhIHF1ZXJpZXMKKwkgKiAgRXZhbHVhdG9yIHJldHVybnMgdHJ1ZSBm
b3IgImFsbCIsIGFuZCByZXR1cm5zIHZhbHVlIG9mIFxtZWRpYUZlYXR1cmVSZXN1bHQKKyAgICAg
KiAgZm9yIGFueSBtZWRpYSBmZWF0dXJlcworCSAqLworICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Io
Ym9vbCBtZWRpYUZlYXR1cmVSZXN1bHQgPSBmYWxzZSk7CisKKyAgICAvKiogQ3JlYXRlcyBldmFs
dWF0b3Igd2hpY2ggZXZhbHVhdGVzIG9ubHkgc2ltcGxlIG1lZGlhIHF1ZXJpZXMKKyAgICAgKiAg
RXZhbHVhdG9yICByZXR1cm5zIHRydWUgZm9yIGFjY2VwdGVkTWVkaWFUeXBlLCBidXQgbm90IGFu
eSBtZWRpYSBmZWF0dXJlcworICAgICAqLworICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3Qg
UVN0cmluZyYgYWNjZXB0ZWRNZWRpYVR5cGUsIGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0ID0gZmFs
c2UpOworCisgICAgLyoqIENyZWF0ZXMgZXZhbHVhdG9yIHdoaWNoIGV2YWx1YXRlcyBmdWxsIG1l
ZGlhIHF1ZXJpZXMKKyAgICAgKi8KKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFFTdHJp
bmcmIGFjY2VwdGVkTWVkaWFUeXBlLCBLSFRNTFZpZXcqIHZpZXcsCisgICAgCQkJCQlRUGFpbnRE
ZXZpY2VNZXRyaWNzKiBwYWludE1ldHJpY3MsIGtodG1sOjpSZW5kZXJTdHlsZSogc3R5bGUpOwor
CisgICAgdmlydHVhbCB+TWVkaWFRdWVyeUV2YWx1YXRvcigpOworCisgICAgYm9vbCBtZWRpYVR5
cGVNYXRjaChjb25zdCBRU3RyaW5nJiBtZWRpYVR5cGVUb01hdGNoKSBjb25zdDsKKworCS8qKiBF
dmFsdWF0ZXMgYSBsaXN0IG9mIG1lZGlhIHF1ZXJpZXMgKi8KKyAgICB2aXJ0dWFsIGJvb2wgZXZh
bChjb25zdCBET006Ok1lZGlhTGlzdEltcGwqIHF1ZXJ5KSBjb25zdDsKKworICAgIC8qKiBFdmFs
dWF0ZXMgbWVkaWEgcXVlcnkgc3ViZXhwcmVzc2lvbiwgaWUgImFuZCAobWVkaWEtZmVhdHVyZTog
dmFsdWUpIiBwYXJ0ICovCisgICAgdmlydHVhbCBib29sIGV2YWwoY29uc3QgRE9NOjpNZWRpYVF1
ZXJ5RXhwSW1wbCogZXhwcikgY29uc3Q7CisKK3ByaXZhdGU6CisKKyAgICBRU3RyaW5nIG1fbWVk
aWFUeXBlOworICAgIEtIVE1MVmlldyogbV92aWV3OyAvLyBub3Qgb3duZWQKKyAgICBRUGFpbnRE
ZXZpY2VNZXRyaWNzKiBtX3BhaW50TWV0cmljczsgLy8gbm90IG93bmVkCisgICAga2h0bWw6OlJl
bmRlclN0eWxlKiBtX3N0eWxlOyAvLyBub3Qgb3duZWQKKyAgICBib29sIG1fZXhwUmVzdWx0Owor
fTsKKworfSAvLyBuYW1lc3BhY2UKKyNlbmRpZgpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicg
LS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19tZWRpYXF1ZXJ5aW1w
bC5jcHAgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc19tZWRpYXF1ZXJ5aW1w
bC5jcHAKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9jc3NfbWVkaWFxdWVyeWltcGwuY3Bw
CTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQv
V2ViQ29yZS9raHRtbC9jc3MvY3NzX21lZGlhcXVlcnlpbXBsLmNwcAkyMDA1LTA3LTI0IDEyOjUx
OjA4LjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDExNyBAQAorI2luY2x1ZGUgImNzc19tZWRp
YXF1ZXJ5aW1wbC5oIgorI2luY2x1ZGUgImNzc3BhcnNlci5oIgorI2luY2x1ZGUgImNzc19iYXNl
LmgiCisjaW5jbHVkZSAiY3NzX3ZhbHVlaW1wbC5oIgorCit1c2luZyBuYW1lc3BhY2UgRE9NOwor
dXNpbmcgbmFtZXNwYWNlIGtodG1sOworCitNZWRpYVF1ZXJ5RXhwSW1wbDo6TWVkaWFRdWVyeUV4
cEltcGwoaW50IG1lZGlhRmVhdHVyZUlkLCBET006OlZhbHVlTGlzdCogdmFsdWVMaXN0KQorICAg
IDptX21lZGlhRmVhdHVyZUlkKG1lZGlhRmVhdHVyZUlkKQoreworICAgIG1fdmFsdWUgPSAwOwor
ICAgIGlmICh2YWx1ZUxpc3QpIHsKKworCWlmICggdmFsdWVMaXN0LT5udW1WYWx1ZXMgPT0gMSAp
IHsKKwkgICAgRE9NOjpWYWx1ZSogdmFsdWUgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKTsKKworCSAg
ICBpZiAoIHZhbHVlLT5pZCAhPSAwICkgeworCQkvLyBxRGVidWcoIiBuZXcgdmFsdWU6IGlkPSVk
IiwgaWQgKTsKKwkJbV92YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwoIHZhbHVlLT5p
ZCApOworCSAgICB9IGVsc2UgaWYgKCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORyApCisJCW1fdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKCBkb21T
dHJpbmcoIHZhbHVlLT5zdHJpbmcgKSwKKwkJCQkJCSAgICAgKENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMpIHZhbHVlLT51bml0ICk7CisJICAgIGVsc2UgaWYgKCB2YWx1ZS0+dW5pdCA+PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiAmJgorCQkgICAgICB2YWx1ZS0+dW5pdCA8PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0tIWiApIHsKKwkJLy8gcURlYnVnKCIgbmV3IHZhbHVlOiB2
YWx1ZT0lLjJmLCB1bml0PSVkIiwgdmFsdWUtPmZWYWx1ZSwgdmFsdWUtPnVuaXQgKTsKKwkJbV92
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwoIHZhbHVlLT5mVmFsdWUsCisJCQkJCQkg
ICAgIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSB2YWx1ZS0+dW5pdCApOworCSAgICB9
CisJICAgIHZhbHVlTGlzdC0+bmV4dCgpOworCX0gZWxzZSBpZiAoIHZhbHVlTGlzdC0+bnVtVmFs
dWVzID4gMSkgeworCSAgICAvLyBjcmVhdGUgbGlzdCBvZiB2YWx1ZXMKKwkgICAgLy8gY3VycmVu
dGx5IGFjY2VwdHMgb25seSA8aW50ZWdlcj4vPGludGVnZXI+CisKKwkgICAgQ1NTVmFsdWVMaXN0
SW1wbCogbGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3RJbXBsKCk7CisJICAgIFZhbHVlKiB2YWx1ZSA9
IDA7CisJICAgIGJvb2wgaXNWYWxpZCA9IHRydWU7CisKKwkgICAgd2hpbGUgKCh2YWx1ZSA9IHZh
bHVlTGlzdC0+Y3VycmVudCgpKSAmJiBpc1ZhbGlkKSB7CisJCWlmICggdmFsdWUtPnVuaXQgPT0g
VmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5pVmFsdWUgPT0gJy8nICkgeworCQkgICAgbGlzdC0+
YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwoIi8iLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORykpOworCQl9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKSB7CisJCSAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZh
bHVlSW1wbCh2YWx1ZS0+ZlZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwor
CQl9IGVsc2UgeworCQkgICAgaXNWYWxpZCA9IGZhbHNlOworCQl9CisJCXZhbHVlID0gdmFsdWVM
aXN0LT5uZXh0KCk7CisJICAgIH0KKwkgICAgaWYgKGlzVmFsaWQpCisJCW1fdmFsdWUgPSBsaXN0
OworCSAgICBlbHNlCisJCWRlbGV0ZShsaXN0KTsKKworCX0KKyAgICB9Cit9CisKK01lZGlhUXVl
cnlFeHBJbXBsOjp+TWVkaWFRdWVyeUV4cEltcGwoKQoreworICAgIGRlbGV0ZSAobV92YWx1ZSk7
Cit9CisKK2ludCBNZWRpYVF1ZXJ5RXhwSW1wbDo6bWVkaWFGZWF0dXJlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9tZWRpYUZlYXR1cmVJZDsKK30KKworQ1NTVmFsdWVJbXBsKiBNZWRpYVF1ZXJ5
RXhwSW1wbDo6dmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ZhbHVlOworfQorCitNZWRp
YVF1ZXJ5SW1wbDo6TWVkaWFRdWVyeUltcGwoUmVzdHJpY3RvciByLCBjb25zdCBET006OkRPTVN0
cmluZyAmbWVkaWFUeXBlLCBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwqIGV4cHJzKQorICAgIDptX3Jl
c3RyaWN0b3IocikKKyAgICAsbV9tZWRpYVR5cGUobWVkaWFUeXBlKQorICAgICxtX2V4cHJlc3Np
b25zKGV4cHJzKQoreworfQorCitNZWRpYVF1ZXJ5SW1wbDo6fk1lZGlhUXVlcnlJbXBsKCkKK3sK
KyAgICBkZWxldGUobV9leHByZXNzaW9ucyk7Cit9CisKK01lZGlhUXVlcnlJbXBsOjpSZXN0cmlj
dG9yIE1lZGlhUXVlcnlJbXBsOjpyZXN0cmljdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9y
ZXN0cmljdG9yOworfQorCitNZWRpYVF1ZXJ5RXhwTGlzdEltcGwqIE1lZGlhUXVlcnlJbXBsOjpl
eHByZXNzaW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXhwcmVzc2lvbnM7Cit9CisKK1FT
dHJpbmcgTWVkaWFRdWVyeUltcGw6Om1lZGlhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bWVkaWFUeXBlLnN0cmluZygpOworfQorCitib29sIE1lZGlhUXVlcnlJbXBsOjpvcGVyYXRvcj09
KGNvbnN0IE1lZGlhUXVlcnlJbXBsJiBvdGhlcikgY29uc3QKK3sKKyAgICAvLyBYWFg6IGNhc2Ug
c2Vuc2l0aXZlbmVzcz8KKyAgICBpZiAobV9yZXN0cmljdG9yICE9IG90aGVyLm1fcmVzdHJpY3Rv
ciB8fCBtX21lZGlhVHlwZSAhPSBvdGhlci5tX21lZGlhVHlwZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgUVB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5RXhwSW1wbD4gZXhwX2l0KCpt
X2V4cHJlc3Npb25zLT5saXN0KCkpOworICAgIFFQdHJMaXN0SXRlcmF0b3I8TWVkaWFRdWVyeUV4
cEltcGw+IG9leHBfaXQoKm90aGVyLm1fZXhwcmVzc2lvbnMtPmxpc3QoKSk7CisgICAgTWVkaWFR
dWVyeUV4cEltcGwqIGV4cCA9IDA7CisgICAgTWVkaWFRdWVyeUV4cEltcGwqIG9leHAgPSAwOwor
ICAgIGZvciAoZXhwID0gZXhwX2l0LmN1cnJlbnQoKSwgb2V4cCA9IG9leHBfaXQuY3VycmVudCgp
OyBleHAgJiYgb2V4cDsgZXhwID0gKytleHBfaXQsIG9leHAgPSArK29leHBfaXQpIHsKKyAgICAg
ICAgaWYgKCEoKmV4cCA9PSAqb2V4cCkgKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiAoIWV4cCAmJiAhb2V4cCk7Cit9CisKZGlmZiAtTnJ1cCAtLWV4Y2x1
ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9jc3NfbWVk
aWFxdWVyeWltcGwuaCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9raHRtbC9jc3MvY3NzX21lZGlh
cXVlcnlpbXBsLmgKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9jc3NfbWVkaWFxdWVyeWlt
cGwuaAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1vZGlm
aWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc19tZWRpYXF1ZXJ5aW1wbC5oCTIwMDUtMDctMjQgMTI6
NTE6MDguMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsODUgQEAKKyNpZm5kZWYgQ1NTX2Nzc19t
ZWRpYXF1ZXJ5aW1wbF9oCisjZGVmaW5lIENTU19jc3NfbWVkaWFxdWVyeWltcGxfaAorCisjaW5j
bHVkZSA8cXZhbHVlbGlzdC5oPgorI2luY2x1ZGUgPHFwdHJsaXN0Lmg+CisKKyNpbmNsdWRlICJk
b20vZG9tX3N0cmluZy5oIgorI2luY2x1ZGUgImNzcy9jc3NfYmFzZS5oIgorI2luY2x1ZGUgImNz
cy9jc3NfdmFsdWVpbXBsLmgiCituYW1lc3BhY2UgRE9NIHsKK2NsYXNzIFZhbHVlTGlzdDsKK2Ns
YXNzIENTU1ByaW1pdGl2ZVZhbHVlOworCitjbGFzcyBNZWRpYVF1ZXJ5RXhwSW1wbCB7CitwdWJs
aWM6CisgICAgTWVkaWFRdWVyeUV4cEltcGwoaW50IG1lZGlhRmVhdHVyZUlkLCBWYWx1ZUxpc3Qq
IHZhbHVlcyk7CisgICAgfk1lZGlhUXVlcnlFeHBJbXBsKCk7CisKKyAgICBpbnQgbWVkaWFGZWF0
dXJlKCkgY29uc3Q7CisgICAgQ1NTVmFsdWVJbXBsKiB2YWx1ZSgpIGNvbnN0OworCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnlFeHBJbXBsJiBvdGhlcikgY29uc3QgIHsKKyAg
ICAgICAgcmV0dXJuIChvdGhlci5tX21lZGlhRmVhdHVyZUlkID09IG1fbWVkaWFGZWF0dXJlSWQp
CisgICAgICAgICAgICAmJiAoKCFvdGhlci5tX3ZhbHVlICYmICFtX3ZhbHVlKQorICAgICAgICAg
ICAgICAgIHx8IChvdGhlci5tX3ZhbHVlICYmIG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+Y3Nz
VGV4dCgpID09IG1fdmFsdWUtPmNzc1RleHQoKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBp
bnQgbV9tZWRpYUZlYXR1cmVJZDsKKyAgICBDU1NWYWx1ZUltcGwqIG1fdmFsdWU7Cit9OworCitj
bGFzcyBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwKK3sKK3B1YmxpYzoKKyAgICBNZWRpYVF1ZXJ5RXhw
TGlzdEltcGwoKQorICAgIHsgZXhwcy5zZXRBdXRvRGVsZXRlKHRydWUpOyB9CisKKyAgICB2b2lk
IGFwcGVuZChNZWRpYVF1ZXJ5RXhwSW1wbCogbmV3RXhwKSB7IGV4cHMuYXBwZW5kKG5ld0V4cCk7
IH0KKyAgICBjb25zdCBRUHRyTGlzdDxNZWRpYVF1ZXJ5RXhwSW1wbD4qIGxpc3QoKSBjb25zdCB7
IHJldHVybiAmZXhwczsgfQorCitwcml2YXRlOgorICAgIFFQdHJMaXN0PE1lZGlhUXVlcnlFeHBJ
bXBsPiBleHBzOworfTsKKworCitjbGFzcyBNZWRpYVF1ZXJ5SW1wbCB7CitwdWJsaWM6CisgICAg
ZW51bSBSZXN0cmljdG9yeworCU9ubHksIE5vdCwgTm9uZQorICAgIH07CisKKyAgICBNZWRpYVF1
ZXJ5SW1wbChSZXN0cmljdG9yIHIsIGNvbnN0IERPTVN0cmluZyAmbWVkaWFUeXBlLCBNZWRpYVF1
ZXJ5RXhwTGlzdEltcGwqIGV4cHJzKTsKKyAgICB+TWVkaWFRdWVyeUltcGwoKTsKKworICAgIFJl
c3RyaWN0b3IgcmVzdHJpY3RvcigpIGNvbnN0OworICAgIE1lZGlhUXVlcnlFeHBMaXN0SW1wbCog
ZXhwcmVzc2lvbnMoKSBjb25zdDsKKyAgICBRU3RyaW5nIG1lZGlhVHlwZSgpIGNvbnN0OworCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnlJbXBsJiBvdGhlcikgY29uc3Q7CisK
KyBwcml2YXRlOgorICAgIFJlc3RyaWN0b3IgbV9yZXN0cmljdG9yOworICAgIERPTVN0cmluZyBt
X21lZGlhVHlwZTsKKyAgICBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwqIG1fZXhwcmVzc2lvbnM7Cit9
OworCitjbGFzcyBNZWRpYVF1ZXJ5TGlzdEltcGwgeworcHVibGljOgorICAgIE1lZGlhUXVlcnlM
aXN0SW1wbCgpCisgICAgeyBxdWVyaWVzLnNldEF1dG9EZWxldGUodHJ1ZSk7IH0KKyAgICB1bnNp
Z25lZCBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBxdWVyaWVzLmNvdW50KCk7IH0KKyAgICB2
b2lkIGNsZWFyKCkgeyBxdWVyaWVzLmNsZWFyKCk7IH0KKyAgICB2b2lkIGFwcGVuZChNZWRpYVF1
ZXJ5SW1wbCogbmV3UXVlcnkpIHsgcXVlcmllcy5hcHBlbmQobmV3UXVlcnkpOyB9CisgICAgY29u
c3QgUVB0ckxpc3Q8TWVkaWFRdWVyeUltcGw+KiBsaXN0KCkgY29uc3QgeyByZXR1cm4gJnF1ZXJp
ZXM7IH0KKyAgICB2b2lkIHJlbW92ZShNZWRpYVF1ZXJ5SW1wbCogcXVlcnkpIHsgcXVlcmllcy5y
ZW1vdmUocXVlcnkpOyB9CisKK3ByaXZhdGU6CisgICAgUVB0ckxpc3Q8TWVkaWFRdWVyeUltcGw+
IHF1ZXJpZXM7Cit9OworCisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpkaWZmIC1OcnVwIC0t
ZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nz
c19zdHlsZXNoZWV0aW1wbC5jcHAgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nz
c19zdHlsZXNoZWV0aW1wbC5jcHAKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9jc3Nfc3R5
bGVzaGVldGltcGwuY3BwCTIwMDUtMDctMTkgMDA6NDQ6MTMuMDAwMDAwMDAwICswMzAwCisrKyB3
ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9raHRtbC9jc3MvY3NzX3N0eWxlc2hlZXRpbXBsLmNwcAky
MDA1LTA3LTI1IDE0OjEzOjM4LjAwMDAwMDAwMCArMDMwMApAQCAtMzMsNiArMzMsOCBAQAogI2lu
Y2x1ZGUgImNzcy9jc3NfdmFsdWVpbXBsLmgiCiAjaW5jbHVkZSAiY3NzL2Nzc3BhcnNlci5oIgog
I2luY2x1ZGUgImNzcy9jc3Nfc3R5bGVzaGVldGltcGwuaCIKKyNpbmNsdWRlICJjc3MvY3NzX21l
ZGlhcXVlcnlldmFsLmgiCisjaW5jbHVkZSAiY3NzL2Nzc21lZGlhZmVhdHVyZXMuaCIKIAogI2lu
Y2x1ZGUgInhtbC9kb21fbm9kZWltcGwuaCIKICNpbmNsdWRlICJodG1sL2h0bWxfZG9jdW1lbnRp
bXBsLmgiCkBAIC0zNTAsMTIgKzM1Miw2IEBAIE1lZGlhTGlzdEltcGw6Ok1lZGlhTGlzdEltcGwo
IENTU1J1bGVJbXAKICAgICBzZXRNZWRpYVRleHQoIG1lZGlhICk7CiB9CiAKLWJvb2wgTWVkaWFM
aXN0SW1wbDo6Y29udGFpbnMoIGNvbnN0IERPTVN0cmluZyAmbWVkaXVtICkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9sc3RNZWRpYS5jb3VudCgpID09IDAgfHwgbV9sc3RNZWRpYS5jb250YWlucygg
bWVkaXVtICkgfHwKLSAgICAgICAgICAgIG1fbHN0TWVkaWEuY29udGFpbnMoICJhbGwiICk7Ci19
Ci0KIENTU1N0eWxlU2hlZXRJbXBsICpNZWRpYUxpc3RJbXBsOjpwYXJlbnRTdHlsZVNoZWV0KCkg
Y29uc3QKIHsKICAgICBpZiggbV9wYXJlbnQtPmlzQ1NTU3R5bGVTaGVldCgpICkgcmV0dXJuIHN0
YXRpY19jYXN0PENTU1N0eWxlU2hlZXRJbXBsICo+KG1fcGFyZW50KTsKQEAgLTM2OCwzNSArMzY0
LDExMCBAQCBDU1NSdWxlSW1wbCAqTWVkaWFMaXN0SW1wbDo6cGFyZW50UnVsZSgpCiAgICAgcmV0
dXJuIDA7CiB9CiAKKwogdm9pZCBNZWRpYUxpc3RJbXBsOjpkZWxldGVNZWRpdW0oIGNvbnN0IERP
TVN0cmluZyAmb2xkTWVkaXVtICkKIHsKLSAgICBmb3IgKCBRVmFsdWVMaXN0PERPTVN0cmluZz46
Okl0ZXJhdG9yIGl0ID0gbV9sc3RNZWRpYS5iZWdpbigpOyBpdCAhPSBtX2xzdE1lZGlhLmVuZCgp
OyArK2l0ICkgewotICAgICAgICBpZiggKCppdCkgPT0gb2xkTWVkaXVtICkgewotICAgICAgICAg
ICAgbV9sc3RNZWRpYS5yZW1vdmUoIGl0ICk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgTWVk
aWFMaXN0SW1wbCB0ZW1wTWVkaWFMaXN0OworICAgIENTU1BhcnNlciBwKHRydWUpOyAgICAgCisK
KwlpZiAoIHAucGFyc2VNZWRpYVF1ZXJ5KCAmdGVtcE1lZGlhTGlzdCwgb2xkTWVkaXVtICkgKSB7
CisgICAgICAgIGNvbnN0IE1lZGlhUXVlcnlJbXBsKiBvbGRRdWVyeSA9IFFQdHJMaXN0SXRlcmF0
b3I8TWVkaWFRdWVyeUltcGw+KCp0ZW1wTWVkaWFMaXN0Lm1lZGlhUXVlcmllcygpLT5saXN0KCkp
LmN1cnJlbnQoKTsKKyAgICAgICAgCisgICAgICAgCVFQdHJMaXN0SXRlcmF0b3I8TWVkaWFRdWVy
eUltcGw+IHFfaXQoKm1fbHN0UXVlcmllcy5saXN0KCkpOworICAgICAgICBmb3IoTWVkaWFRdWVy
eUltcGwqIHF1ZXJ5ID0gcV9pdC5jdXJyZW50KCk7IHF1ZXJ5OyBxdWVyeSA9ICsrcV9pdCkgewor
ICAgICAgICAgICAgaWYgKCpxdWVyeSA9PSAqb2xkUXVlcnkpIHsKKyAgICAgICAgICAgICAgICBt
X2xzdFF1ZXJpZXMucmVtb3ZlKHF1ZXJ5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFhYWDogdGhyb3cg
RE9NIGV4Y2VwdGlvbgogICAgIH0KIH0KK3N0YXRpYyBET006OkRPTVN0cmluZyBtZWRpYVF1ZXJ5
QXNET01TdHJpbmcoY29uc3QgTWVkaWFRdWVyeUltcGwqIHF1ZXJ5KSAKK3sKKyAgICBET006OkRP
TVN0cmluZyB0ZXh0OworICAgIHN3aXRjaCAocXVlcnktPnJlc3RyaWN0b3IoKSkgeworICAgICAg
ICBjYXNlIE1lZGlhUXVlcnlJbXBsOjpPbmx5OgorICAgICAgICAgICAgdGV4dCArPSAib25seSAi
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFRdWVyeUltcGw6Ok5vdDoK
KyAgICAgICAgICAgIHRleHQgKz0gIm5vdCAiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgdGV4dCArPSBxdWVyeS0+
bWVkaWFUeXBlKCk7CisgICAgUVB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5RXhwSW1wbD4gZXhw
X2l0KCpxdWVyeS0+ZXhwcmVzc2lvbnMoKS0+bGlzdCgpKTsKKyAgICBmb3IgKE1lZGlhUXVlcnlF
eHBJbXBsKiBleHAgPSBleHBfaXQuY3VycmVudCgpOyBleHA7IGV4cCA9ICsrZXhwX2l0KSB7Cisg
ICAgICAgIHRleHQgKz0gIiBhbmQgKCI7CisgICAgICAgIHRleHQgKz0gZ2V0TWVkaWFGZWF0dXJl
TmFtZShleHAtPm1lZGlhRmVhdHVyZSgpKTsKKyAgICAgICAgaWYgKGV4cC0+dmFsdWUoKSkgewor
ICAgICAgICAgICAgdGV4dCArPSAiOiAiOworICAgICAgICAgICAgdGV4dCArPSBleHAtPnZhbHVl
KCktPmNzc1RleHQoKTsKKyAgICAgICAgfQorICAgICAgICB0ZXh0ICs9ICIpIjsKKyAgICB9Cisg
ICAgcmV0dXJuIHRleHQ7Cit9CiAKIERPTTo6RE9NU3RyaW5nIE1lZGlhTGlzdEltcGw6Om1lZGlh
VGV4dCgpIGNvbnN0CiB7CiAgICAgRE9NU3RyaW5nIHRleHQ7Ci0gICAgZm9yICggUVZhbHVlTGlz
dDxET01TdHJpbmc+OjpDb25zdEl0ZXJhdG9yIGl0ID0gbV9sc3RNZWRpYS5iZWdpbigpOyBpdCAh
PSBtX2xzdE1lZGlhLmVuZCgpOyArK2l0ICkgewotICAgICAgICB0ZXh0ICs9ICppdDsKLSAgICAg
ICAgdGV4dCArPSAiLCAiOworICAgIFFQdHJMaXN0SXRlcmF0b3I8TWVkaWFRdWVyeUltcGw+IHFf
aXQoKm1fbHN0UXVlcmllcy5saXN0KCkpOworICAgIGJvb2wgZmlyc3QgPSB0cnVlOworICAgIGZv
cihNZWRpYVF1ZXJ5SW1wbCogcXVlcnkgPSBxX2l0LmN1cnJlbnQoKTsgcXVlcnk7IHF1ZXJ5ID0g
KytxX2l0KSB7ICAgICAgICAKKyAgICAgICAgaWYgKCFmaXJzdCkKKyAgICAgICAgICAgIHRleHQg
Kz0gIiwgIjsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAg
ICAgIHRleHQgKz0gbWVkaWFRdWVyeUFzRE9NU3RyaW5nKHF1ZXJ5KTsKICAgICB9CiAgICAgcmV0
dXJuIHRleHQ7CiB9CiAKIHZvaWQgTWVkaWFMaXN0SW1wbDo6c2V0TWVkaWFUZXh0KGNvbnN0IERP
TTo6RE9NU3RyaW5nICZ2YWx1ZSkKIHsKLSAgICBtX2xzdE1lZGlhLmNsZWFyKCk7Ci0gICAgUVN0
cmluZyB2YWwgPSB2YWx1ZS5zdHJpbmcoKTsKKwlDU1NQYXJzZXIgcCh0cnVlKTsgICAJCisgICAJ
bV9sc3RRdWVyaWVzLmNsZWFyKCk7ICAgCQorCiAgICAgUVN0cmluZ0xpc3QgbGlzdCA9IFFTdHJp
bmdMaXN0OjpzcGxpdCggJywnLCB2YWx1ZS5zdHJpbmcoKSApOwogICAgIGZvciAoIFFTdHJpbmdM
aXN0OjpJdGVyYXRvciBpdCA9IGxpc3QuYmVnaW4oKTsgaXQgIT0gbGlzdC5lbmQoKTsgKytpdCAp
CiAgICAgewogICAgICAgICBET01TdHJpbmcgbWVkaXVtID0gKCppdCkuc3RyaXBXaGl0ZVNwYWNl
KCk7Ci0gICAgICAgIGlmKCBtZWRpdW0gIT0gIiIgKQotICAgICAgICAgICAgbV9sc3RNZWRpYS5h
cHBlbmQoIG1lZGl1bSApOworICAgICAgICBpZiggbWVkaXVtICE9ICIiICkgeyAgICAgICAgICAg
ICAJCSAgIAkJCQorICAgCQkJaWYgKCBwLnBhcnNlTWVkaWFRdWVyeSggdGhpcywgbWVkaXVtICkg
KSB7CisgICAJCQkJLy8gT0sKKwkJICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRkFJ
TAorICAgICAgICAgICAgICAgIC8vIFhYWDogdGhyb3cgRE9NIGV4Y2VwdGlvbgorCQkgICAgfQor
CQl9CiAgICAgfQogfQorCitET006OkRPTVN0cmluZyBNZWRpYUxpc3RJbXBsOjppdGVtICggdW5z
aWduZWQgbG9uZyBpbmRleCApIGNvbnN0IAoreworICAgIC8vIFhYWDogaW5lZmZpY2llbnQgYW5k
IHVnbHkhIFFQdHJMaXN0IGRvZXNuJ3QgaGF2ZSBhdCgpIGNvbnN0IAorICAgIFFQdHJMaXN0SXRl
cmF0b3I8TWVkaWFRdWVyeUltcGw+IHFfaXQoKm1fbHN0UXVlcmllcy5saXN0KCkpOworICAgIE1l
ZGlhUXVlcnlJbXBsKiBxdWVyeSA9IHFfaXQuY3VycmVudCgpOworICAgIGZvciAoOyBxdWVyeSAm
JiBpbmRleDsgcXVlcnkgPSArK3FfaXQpIC0taW5kZXg7CisgICAgaWYgKHF1ZXJ5KQorICAgICAg
ICByZXR1cm4gbWVkaWFRdWVyeUFzRE9NU3RyaW5nKHF1ZXJ5KTsKKyAgICByZXR1cm4gRE9NOjpE
T01TdHJpbmcoKTsKK30KKwordm9pZCBNZWRpYUxpc3RJbXBsOjphcHBlbmRNZWRpdW0gKCBjb25z
dCBET006OkRPTVN0cmluZyAmbmV3TWVkaXVtICkKK3sKKwlDU1NQYXJzZXIgcCh0cnVlKTsgICAg
IAorCWlmICggcC5wYXJzZU1lZGlhUXVlcnkoIHRoaXMsIG5ld01lZGl1bSApICkgeworCQkvLyBP
SworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFhYWDogdGhyb3cgZG9tIGV4Y2VwdGlvbiAgICAg
ICAgCisgICAgfQkKK30KKwordm9pZCBNZWRpYUxpc3RJbXBsOjphcHBlbmRNZWRpYVF1ZXJ5KCBN
ZWRpYVF1ZXJ5SW1wbCogbWVkaWFRdWVyeSApCit7CisgICAgbV9sc3RRdWVyaWVzLmFwcGVuZCgg
bWVkaWFRdWVyeSApOworfQpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcu
Kicgd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oIHdlYmtpdC1t
b2RpZmllZC9XZWJDb3JlL2todG1sL2Nzcy9jc3Nfc3R5bGVzaGVldGltcGwuaAotLS0gd2Via2l0
L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oCTIwMDUtMDctMDkgMjM6MTk6
MDAuMDAwMDAwMDAwICswMzAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9raHRtbC9jc3Mv
Y3NzX3N0eWxlc2hlZXRpbXBsLmgJMjAwNS0wNy0yNCAxMTo0MzowNS4wMDAwMDAwMDAgKzAzMDAK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgImRvbS9kb21fc3RyaW5nLmgiCiAjaW5jbHVk
ZSAiY3NzL2Nzc19iYXNlLmgiCisjaW5jbHVkZSAiY3NzL2Nzc19tZWRpYXF1ZXJ5aW1wbC5oIgog
I2luY2x1ZGUgIm1pc2MvbG9hZGVyX2NsaWVudC5oIgogCiBuYW1lc3BhY2Uga2h0bWwgewpAQCAt
MTU3LDI2ICsxNTgsMjIgQEAgcHVibGljOgogCiAgICAgQ1NTU3R5bGVTaGVldEltcGwgKnBhcmVu
dFN0eWxlU2hlZXQoKSBjb25zdDsKICAgICBDU1NSdWxlSW1wbCAqcGFyZW50UnVsZSgpIGNvbnN0
OwotICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sc3RNZWRpYS5j
b3VudCgpOyB9Ci0gICAgRE9NOjpET01TdHJpbmcgaXRlbSAoIHVuc2lnbmVkIGxvbmcgaW5kZXgg
KSBjb25zdCB7IHJldHVybiBtX2xzdE1lZGlhW2luZGV4XTsgfQorICAgIHVuc2lnbmVkIGxvbmcg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sc3RRdWVyaWVzLmNvdW50KCk7IH0KKyAgICBET006
OkRPTVN0cmluZyBpdGVtICggdW5zaWduZWQgbG9uZyBpbmRleCApIGNvbnN0OwogICAgIHZvaWQg
ZGVsZXRlTWVkaXVtICggY29uc3QgRE9NOjpET01TdHJpbmcgJm9sZE1lZGl1bSApOwotICAgIHZv
aWQgYXBwZW5kTWVkaXVtICggY29uc3QgRE9NOjpET01TdHJpbmcgJm5ld01lZGl1bSApIHsgbV9s
c3RNZWRpYS5hcHBlbmQobmV3TWVkaXVtKTsgfQorICAgIHZvaWQgYXBwZW5kTWVkaXVtICggY29u
c3QgRE9NOjpET01TdHJpbmcgJm5ld01lZGl1bSApOwogCiAgICAgRE9NOjpET01TdHJpbmcgbWVk
aWFUZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYVRleHQoY29uc3QgRE9NOjpET01TdHJp
bmcgJnZhbHVlKTsKIAogICAgIC8qKgotICAgICAqIENoZWNrIGlmIHRoZSBsaXN0IGNvbnRhaW5z
IGVpdGhlciB0aGUgcmVxdWVzdGVkIG1lZGl1bSwgb3IgdGhlCi0gICAgICogY2F0Y2gtYWxsICJh
bGwiIG1lZGlhIHR5cGUuIFJldHVybnMgdHJ1ZSB3aGVuIGZvdW5kLCBmYWxzZSBvdGhlcndpc2Uu
Ci0gICAgICogU2luY2Ugbm90IHNwZWNpZnlpbmcgbWVkaWEgdHlwZXMgc2hvdWxkIGJlIHRyZWF0
ZWQgYXMgImFsbCIgYWNjb3JkaW5nCi0gICAgICogdG8gRE9NIHNwZWNzLCBhbiBlbXB0eSBsaXN0
IGFsd2F5cyByZXR1cm5zIHRydWUuCi0gICAgICoKICAgICAgKiBfTk9UXyBwYXJ0IG9mIHRoZSBE
T00hCiAgICAgICovCi0gICAgYm9vbCBjb250YWlucyggY29uc3QgRE9NOjpET01TdHJpbmcgJm1l
ZGl1bSApIGNvbnN0OwotCisgICAJdm9pZCBhcHBlbmRNZWRpYVF1ZXJ5KE1lZGlhUXVlcnlJbXBs
KiBtZWRpYVF1ZXJ5KTsKKwljb25zdCBNZWRpYVF1ZXJ5TGlzdEltcGwqIG1lZGlhUXVlcmllcygp
IGNvbnN0IHsgcmV0dXJuICZtX2xzdFF1ZXJpZXM7IH0KIHByb3RlY3RlZDoKLSAgICBRVmFsdWVM
aXN0PERPTTo6RE9NU3RyaW5nPiBtX2xzdE1lZGlhOworICAgIE1lZGlhUXVlcnlMaXN0SW1wbCBt
X2xzdFF1ZXJpZXM7CisgICAgRE9NOjpET01TdHJpbmcgbV9tZWRpYVRleHQ7ICAgIAogfTsKIAog
CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29y
ZS9raHRtbC9jc3MvY3NzbWVkaWFmZWF0dXJlcy5pbiB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9r
aHRtbC9jc3MvY3NzbWVkaWFmZWF0dXJlcy5pbgotLS0gd2Via2l0L1dlYkNvcmUva2h0bWwvY3Nz
L2Nzc21lZGlhZmVhdHVyZXMuaW4JMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAK
KysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2todG1sL2Nzcy9jc3NtZWRpYWZlYXR1cmVzLmlu
CTIwMDUtMDctMjEgMTE6MjQ6MTMuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMjkgQEAKK2Nv
bG9yCitjb2xvci1pbmRleAorZGV2aWNlLWFzcGVjdC1yYXRpbworZGV2aWNlLWhlaWdodAorZGV2
aWNlLXdpZHRoCitncmlkCitoZWlnaHQKK21heC1jb2xvcgorbWF4LWNvbG9yLWluZGV4CittYXgt
ZGV2aWNlLWFzcGVjdC1yYXRpbworbWF4LWRldmljZS1oZWlnaHQKK21heC1kZXZpY2Utd2lkdGgK
K21heC1oZWlnaHQKK21heC1tb25vY2hyb21lCittYXgtcmVzb2x1dGlvbgorbWF4LXdpZHRoCitt
aW4tY29sb3IKK21pbi1jb2xvci1pbmRleAorbWluLWRldmljZS1hc3BlY3QtcmF0aW8KK21pbi1k
ZXZpY2UtaGVpZ2h0CittaW4tZGV2aWNlLXdpZHRoCittaW4taGVpZ2h0CittaW4tbW9ub2Nocm9t
ZQorbWluLXJlc29sdXRpb24KK21pbi13aWR0aAorbW9ub2Nocm9tZQorcmVzb2x1dGlvbgorc2Nh
bgord2lkdGgKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtp
dC9XZWJDb3JlL2todG1sL2Nzcy9jc3NwYXJzZXIuY3BwIHdlYmtpdC1tb2RpZmllZC9XZWJDb3Jl
L2todG1sL2Nzcy9jc3NwYXJzZXIuY3BwCi0tLSB3ZWJraXQvV2ViQ29yZS9raHRtbC9jc3MvY3Nz
cGFyc2VyLmNwcAkyMDA1LTA3LTE5IDAzOjAyOjA3LjAwMDAwMDAwMCArMDMwMAorKysgd2Via2l0
LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc3BhcnNlci5jcHAJMjAwNS0wNy0yNSAxNDox
MzozOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjc3NfdmFs
dWVpbXBsLmgiCiAjaW5jbHVkZSAiY3NzX3J1bGVpbXBsLmgiCiAjaW5jbHVkZSAiY3NzX3N0eWxl
c2hlZXRpbXBsLmgiCisjaW5jbHVkZSAiY3NzX21lZGlhcXVlcnlpbXBsLmgiCiAjaW5jbHVkZSAi
Y3NzcHJvcGVydGllcy5oIgogI2luY2x1ZGUgImNzc3ZhbHVlcy5oIgogI2luY2x1ZGUgIm1pc2Mv
aGVscGVyLmgiCkBAIC0zMDksNiArMzEwLDMwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xh
cmF0aW9uKCBDU1NNdXQKICAgICByZXR1cm4gb2s7CiB9CiAKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJz
ZU1lZGlhUXVlcnkoIERPTTo6TWVkaWFMaXN0SW1wbCAqcXVlcmllcywgY29uc3QgRE9NOjpET01T
dHJpbmcgJnN0cmluZyApCit7ICAgIAorICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpIHx8IHN0cmlu
Zy5pc051bGwoKSkgeworCQlyZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgbWVkaWFRdWVyeSA9IDA7
CisgICAgLy8gY2FuJ3QgdXNlIHsgYmVjYXVzZSB0b2tlbml6ZXIgc3RhdGUgc3dpdGNoZXMgZnJv
bSBtZWRpYXF1ZXJ5IHRvIGluaXRpYWwgc3RhdGUgd2hlbiBpdCBzZWVzIHsgdG9rZW4uCisgICAg
Ly8gaW5zdGVhZCBpbnNlcnQgb25lICIgIiAod2hpY2ggaXMgV0hJVEVTUEFDRSBpbiBwYXJzZXIu
eSkKKyAgICBzZXR1cFBhcnNlciAoIkAta2h0bWwtbWVkaWFxdWVyeSAiLCBzdHJpbmcsICJ9ICIp
OworICAgIAorICAgIENTU1BhcnNlciAqb2xkID0gY3VycmVudFBhcnNlcjsKKyAgICBjdXJyZW50
UGFyc2VyID0gdGhpczsKKyAgICBjc3N5eXBhcnNlKCB0aGlzICk7CisgICAgY3VycmVudFBhcnNl
ciA9IG9sZDsKKyAgICAKKyAgICBib29sIG9rID0gZmFsc2U7CisgICAgaWYgKG1lZGlhUXVlcnkp
IHsKKyAgICAJb2sgPSB0cnVlOworICAgIAlxdWVyaWVzLT5hcHBlbmRNZWRpYVF1ZXJ5KG1lZGlh
UXVlcnkpOworICAgICAgICBtZWRpYVF1ZXJ5ID0gMDsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IG9rOworfQogCiB2b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoIGludCBwcm9wSWQsIENTU1Zh
bHVlSW1wbCAqdmFsdWUsIGJvb2wgaW1wb3J0YW50ICkKIHsKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUg
J0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9jc3NwYXJzZXIu
aCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9raHRtbC9jc3MvY3NzcGFyc2VyLmgKLS0tIHdlYmtp
dC9XZWJDb3JlL2todG1sL2Nzcy9jc3NwYXJzZXIuaAkyMDA1LTA3LTA5IDIzOjE5OjAwLjAwMDAw
MDAwMCArMDMwMAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc3BhcnNl
ci5oCTIwMDUtMDctMjEgMTE6MjQ6MTMuMDAwMDAwMDAwICswMzAwCkBAIC00MCw2ICs0MCw4IEBA
IG5hbWVzcGFjZSBET00gewogICAgIGNsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uSW1w
bDsKICAgICBjbGFzcyBDU1NQcm9wZXJ0eTsKICAgICBjbGFzcyBDU1NSdWxlTGlzdEltcGw7Cisg
ICAgY2xhc3MgTWVkaWFMaXN0SW1wbDsKKyAgICBjbGFzcyBNZWRpYVF1ZXJ5SW1wbDsKIAogCiAg
ICAgc3RydWN0IFBhcnNlU3RyaW5nIHsKQEAgLTExMyw3ICsxMTUsOCBAQCBuYW1lc3BhY2UgRE9N
IHsKICAgICAgICAgc3RhdGljIFFSZ2IgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKCBjb25zdCBET006
OkRPTVN0cmluZyAmc3RyaW5nICk7CiAJYm9vbCBwYXJzZUNvbG9yKCBET006OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uSW1wbCAqZGVjbGFyYXRpb24sIGNvbnN0IERPTTo6RE9NU3RyaW5nICZz
dHJpbmcgKTsKIAlib29sIHBhcnNlRGVjbGFyYXRpb24oIERPTTo6Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb25JbXBsICpkZWNscywgY29uc3QgRE9NOjpET01TdHJpbmcgJnN0cmluZyApOwotCisg
ICAgYm9vbCBwYXJzZU1lZGlhUXVlcnkoIERPTTo6TWVkaWFMaXN0SW1wbCAqcXVlcmllcywgY29u
c3QgRE9NOjpET01TdHJpbmcgJnN0cmluZyApOworICAgIAogCXN0YXRpYyBDU1NQYXJzZXIgKmN1
cnJlbnQoKSB7IHJldHVybiBjdXJyZW50UGFyc2VyOyB9CiAKIApAQCAtMTU4LDYgKzE2MSw3IEBA
IG5hbWVzcGFjZSBET00gewogCWludCBpZDsKIAlET006OlN0eWxlTGlzdEltcGwgKnN0eWxlRWxl
bWVudDsKIAlET006OkNTU1J1bGVJbXBsICpydWxlOworCURPTTo6TWVkaWFRdWVyeUltcGwgKm1l
ZGlhUXVlcnk7CiAJVmFsdWVMaXN0ICp2YWx1ZUxpc3Q7CiAJQ1NTUHJvcGVydHkgKipwYXJzZWRQ
cm9wZXJ0aWVzOwogCWludCBudW1QYXJzZWRQcm9wZXJ0aWVzOwpkaWZmIC1OcnVwIC0tZXhjbHVk
ZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0eWxl
c2VsZWN0b3IuY3BwIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2todG1sL2Nzcy9jc3NzdHlsZXNl
bGVjdG9yLmNwcAotLS0gd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3Iu
Y3BwCTIwMDUtMDctMjAgMDM6NDU6NDguMDAwMDAwMDAwICswMzAwCisrKyB3ZWJraXQtbW9kaWZp
ZWQvV2ViQ29yZS9raHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJMjAwNS0wNy0yNSAxNDox
Mzo0MC4wMDAwMDAwMDAgKzAzMDAKQEAgLTM5LDYgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIERP
TTsKIAogI2luY2x1ZGUgImNzcy9jc3Nwcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiY3NzL2Nzc3Zh
bHVlcy5oIgorI2luY2x1ZGUgImNzcy9jc3NfbWVkaWFxdWVyeWV2YWwuaCIKIAogI2luY2x1ZGUg
Im1pc2Mva2h0bWxsYXlvdXQuaCIKICNpbmNsdWRlICJraHRtbF9zZXR0aW5ncy5oIgpAQCAtMTk2
LDEyICsxOTcsMzIgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvciggRG9jdQog
ICAgIHN0cmljdFBhcnNpbmcgPSBfc3RyaWN0UGFyc2luZzsKICAgICBzZXR0aW5ncyA9IHZpZXcg
PyB2aWV3LT5wYXJ0KCktPnNldHRpbmdzKCkgOiAwOwogICAgIGlmKCFkZWZhdWx0U3R5bGUpIGxv
YWREZWZhdWx0U3R5bGUoc2V0dGluZ3MpOwotICAgIG1fbWVkaXVtID0gdmlldyA/IHZpZXctPm1l
ZGlhVHlwZSgpIDogUVN0cmluZygiYWxsIik7Ci0KKyAgICAKICAgICBtX3VzZXJTdHlsZSA9IDA7
CiAgICAgbV91c2VyU2hlZXQgPSAwOwotICAgIHBhaW50RGV2aWNlTWV0cmljcyA9IGRvYy0+cGFp
bnREZXZpY2VNZXRyaWNzKCk7CisgICAgcGFpbnREZXZpY2VNZXRyaWNzID0gZG9jLT5wYWludERl
dmljZU1ldHJpY3MoKTsgICAgCiAKKyAgICAvLyBjb25zdHJ1Y3QgZG9jdW1lbnQgcm9vdCBlbGVt
ZW50IGRlZmF1bHQgc3R5bGUuIHRoaXMgaXMgbmVlZGVkIAorICAgCS8vIHRvIGV2YWx1YXRlIG1l
ZGlhIHF1ZXJpZXMgdGhhdCBjb250YWluIHJlbGF0aXZlIGNvbnN0cmFpbnRzLCBsaWtlICJzY3Jl
ZW4gYW5kIChtYXgtd2lkdGg6IDEwZW0pIgorICAgCS8vIFRoaXMgaXMgaGVyZSBpbnN0ZWFkIG9m
IGNvbnN0cnVjdG9yLCBiZWNhdXNlIHdoZW4gY29uc3RydWN0b3IgaXMgcnVuLCAKKyAgIAkvLyBk
b2N1bWVudCBkb2Vzbid0IGhhdmUgZG9jdW1lbnRFbGVtZW50CisgICAJLy8gWFhYOiB0aGlzIGFz
c3VtZXMgdGhhdCBlbGVtZW50IHRoYXQgZ2V0cyBwYXNzZWQgdG8gc3R5bGVGb3JFbGVtZW50IC1j
YWxsIAorICAgCS8vIGlzIGZyb20gdGhlIGRvY3VtZW50IHRoYXQgb3ducyB0aGUgc3R5bGUgc2Vs
ZWN0b3IgICAJCQorICAgCWlmICh2aWV3KSB7CisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlh
UXVlcnlFdmFsdWF0b3Iodmlldy0+bWVkaWFUeXBlKCkpOworICAgIH0gZWxzZSB7ICAgIAkKKwkJ
bV9tZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigiYWxsIik7CisgICAgfSAgICAKKyAg
IAlFbGVtZW50SW1wbCAqcm9vdCA9IGRvYy0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAJaWYgKHJv
b3QpIHsgICAJCQorCQltX3Jvb3REZWZhdWx0U3R5bGUgPSBkZWZhdWx0U3R5bGVGb3JSb290KHJv
b3QpOworICAgCQltX3Jvb3REZWZhdWx0U3R5bGUtPnJlZigpOworICAgCX0gICAJCisgICAJaWYg
KG1fcm9vdERlZmF1bHRTdHlsZSAmJiB2aWV3KSB7ICAgCQkKKyAgIAkJZGVsZXRlIG1fbWVkaXVt
OworICAgCQltX21lZGl1bSA9IG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKHZpZXctPm1lZGlhVHlw
ZSgpLCB2aWV3LCBwYWludERldmljZU1ldHJpY3MsIG1fcm9vdERlZmF1bHRTdHlsZSk7CisgICAJ
fSAJCQorICAgIAogICAgIC8vIEZJWE1FOiBUaGlzIHN1Y2tzISBUaGUgdXNlciBzaGVldCBpcyBy
ZXBhcnNlZCBldmVyeSB0aW1lIQogICAgIGlmICghdXNlclN0eWxlU2hlZXQuaXNFbXB0eSgpKSB7
CiAgICAgICAgIG1fdXNlclNoZWV0ID0gbmV3IERPTTo6Q1NTU3R5bGVTaGVldEltcGwoZG9jKTsK
QEAgLTIxMCwxNSArMjMxLDE1IEBAIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3Io
IERvY3UKICAgICAgICAgbV91c2VyU3R5bGUgPSBuZXcgQ1NTUnVsZVNldCgpOwogICAgICAgICBt
X3VzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoIG1fdXNlclNoZWV0LCBtX21lZGl1bSApOwog
ICAgIH0KLQorICAgIAogICAgIC8vIGFkZCBzdHlsZXNoZWV0cyBmcm9tIGRvY3VtZW50Ci0gICAg
bV9hdXRob3JTdHlsZSA9IG5ldyBDU1NSdWxlU2V0KCk7CisgICAgbV9hdXRob3JTdHlsZSA9IG5l
dyBDU1NSdWxlU2V0KCk7ICAgICAgICAKIAogICAgIFFQdHJMaXN0SXRlcmF0b3I8U3R5bGVTaGVl
dEltcGw+IGl0KHN0eWxlU2hlZXRzLT5zdHlsZVNoZWV0cyk7CiAgICAgZm9yICg7IGl0LmN1cnJl
bnQoKTsgKytpdCkKICAgICAgICAgaWYgKGl0LmN1cnJlbnQoKS0+aXNDU1NTdHlsZVNoZWV0KCkp
CiAgICAgICAgICAgICBtX2F1dGhvclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzdGF0aWNfY2Fz
dDxDU1NTdHlsZVNoZWV0SW1wbCo+KGl0LmN1cnJlbnQoKSksIG1fbWVkaXVtKTsKLQorICAgCQog
ICAgIC8va2REZWJ1ZyggNjA4MCApIDw8ICJudW1iZXIgb2Ygc3R5bGUgc2hlZXRzIGluIGRvY3Vt
ZW50ICIgPDwgYXV0aG9yU3R5bGVTaGVldHMuY291bnQoKSA8PCBlbmRsOwogICAgIC8va2REZWJ1
ZyggNjA4MCApIDw8ICJDU1NTdHlsZVNlbGVjdG9yOiBhdXRob3Igc3R5bGUgaGFzICIgPDwgYXV0
aG9yU3R5bGUtPmNvdW50KCkgPDwgIiBlbGVtZW50cyI8PCBlbmRsOwogfQpAQCAtMjI5LDEwICsy
NTAsMjUgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvciggQ1NTUwogCiAgICAg
aWYoIWRlZmF1bHRTdHlsZSkgbG9hZERlZmF1bHRTdHlsZSgpOwogICAgIEtIVE1MVmlldyAqdmll
dyA9IHNoZWV0LT5kb2MoKS0+dmlldygpOwotICAgIG1fbWVkaXVtID0gIHZpZXcgPyB2aWV3LT5t
ZWRpYVR5cGUoKSA6IFFTdHJpbmcoImFsbCIpOworICAgIAorICAgIAorICAgIGlmICh2aWV3KSB7
CisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlhUXVlcnlFdmFsdWF0b3Iodmlldy0+bWVkaWFU
eXBlKCkpOworICAgIH0gZWxzZSB7ICAgIAkKKwkJbV9tZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2
YWx1YXRvcigiYWxsIik7CisgICAgfSAKKyAgICBFbGVtZW50SW1wbCAqcm9vdCA9IHNoZWV0LT5k
b2MoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAJaWYgKHJvb3QpIHsgICAJCQorCQltX3Jvb3RE
ZWZhdWx0U3R5bGUgPSBkZWZhdWx0U3R5bGVGb3JSb290KHJvb3QpOworICAgCQltX3Jvb3REZWZh
dWx0U3R5bGUtPnJlZigpOworICAgCX0gICAJCisgICAJaWYgKG1fcm9vdERlZmF1bHRTdHlsZSAm
JiB2aWV3KSB7ICAgCQkKKyAgIAkJZGVsZXRlIG1fbWVkaXVtOworICAgCQltX21lZGl1bSA9IG5l
dyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKHZpZXctPm1lZGlhVHlwZSgpLCB2aWV3LCBwYWludERldmlj
ZU1ldHJpY3MsIG1fcm9vdERlZmF1bHRTdHlsZSk7CisgICAJfQogCiAgICAgbV9hdXRob3JTdHls
ZSA9IG5ldyBDU1NSdWxlU2V0KCk7Ci0gICAgbV9hdXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hl
ZXQoIHNoZWV0LCBtX21lZGl1bSApOworICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KCBzaGVldCwgbV9tZWRpdW0gKTsgICAgCiB9CiAKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
aW5pdCgpCkBAIC0yNDEsNiArMjc3LDggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjppbml0KCkK
ICAgICBzZXR0aW5ncyA9IDA7CiAgICAgcGFpbnREZXZpY2VNZXRyaWNzID0gMDsKICAgICBtX21h
dGNoZWRSdWxlQ291bnQgPSBtX21hdGNoZWREZWNsQ291bnQgPSBtX3RtcFJ1bGVDb3VudCA9IDA7
CisgICAgbV9yb290RGVmYXVsdFN0eWxlID0gMDsKKyAgICBtX3Jlc29sdmluZ0ZvclJvb3REZWZh
dWx0U3R5bGUgPSBmYWxzZTsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzZXRFbmNvZGVk
VVJMKGNvbnN0IEtVUkwmIHVybCkKQEAgLTI2NCw2ICszMDIsOCBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OnNldEVuY29kZWRVUkwoY29uCiAKIENTU1N0eWxlU2VsZWN0b3I6On5DU1NTdHlsZVNl
bGVjdG9yKCkKIHsKKwlkZWxldGUgbV9tZWRpdW07CQorCTo6ZGVsZXRlIG1fcm9vdERlZmF1bHRT
dHlsZTsKICAgICBkZWxldGUgbV9hdXRob3JTdHlsZTsKICAgICBkZWxldGUgbV91c2VyU3R5bGU7
CiAgICAgZGVsZXRlIG1fdXNlclNoZWV0OwpAQCAtMjk2LDE2ICszMzYsMTggQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjpsb2FkRGVmYXVsdFN0eWxlKAogICAgIGRlZmF1bHRTaGVldCA9IHBhcnNl
VUFTaGVldChzLCAia2h0bWwvY3NzL2h0bWw0LmNzcyIpOwogCiAgICAgLy8gQ29sbGVjdCBvbmx5
IHN0cmljdC1tb2RlIHJ1bGVzLgorICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Igc2NyZWVuRXZhbCgi
c2NyZWVuIik7CiAgICAgZGVmYXVsdFN0eWxlID0gbmV3IENTU1J1bGVTZXQoKTsKLSAgICBkZWZh
dWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgInNjcmVlbiIpOworICAg
IGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCAmc2NyZWVuRXZh
bCk7CiAKLSAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IG5ldyBDU1NSdWxlU2V0KCk7Ci0gICAgZGVm
YXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgInByaW50Iik7
CisgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWwoInByaW50Iik7CisgICAgZGVmYXVs
dFByaW50U3R5bGUgPSBuZXcgQ1NTUnVsZVNldCgpOyAgICAKKyAgICBkZWZhdWx0UHJpbnRTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCAmcHJpbnRFdmFsKTsKIAogICAgIC8v
IENvbGxlY3Qgb25seSBxdWlya3MtbW9kZSBydWxlcy4KICAgICBxdWlya3NTaGVldCA9IHBhcnNl
VUFTaGVldCgwLCAia2h0bWwvY3NzL3F1aXJrcy5jc3MiKTsKICAgICBkZWZhdWx0UXVpcmtzU3R5
bGUgPSBuZXcgQ1NTUnVsZVNldCgpOwotICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNG
cm9tU2hlZXQocXVpcmtzU2hlZXQsICJzY3JlZW4iKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCAmc2NyZWVuRXZhbCk7CiB9CiAKIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6YWRkTWF0Y2hlZFJ1bGUoQ1NTUnVsZURhdGEqIHJ1bGUpCkBAIC00
ODYsOCArNTI4LDggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjppbml0Rm9yU3R5bGVSZXNvbAog
ICAgIGlzWE1MRG9jID0gIWVsZW1lbnQtPmdldERvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCk7
CiAgICAgcGFydCA9IGVsZW1lbnQtPmdldERvY3VtZW50KCktPnBhcnQoKTsKICAgICBzZXR0aW5n
cyA9IHBhcnQgPyBwYXJ0LT5zZXR0aW5ncygpIDogMDsKLSAgICBwYWludERldmljZU1ldHJpY3Mg
PSBlbGVtZW50LT5nZXREb2N1bWVudCgpLT5wYWludERldmljZU1ldHJpY3MoKTsKLSAgICAKKyAg
ICBwYWludERldmljZU1ldHJpY3MgPSBlbGVtZW50LT5nZXREb2N1bWVudCgpLT5wYWludERldmlj
ZU1ldHJpY3MoKTsgICAJICAgCQorICAgICAgICAgICAgCiAgICAgc3R5bGUgPSAwOwogICAgIAog
ICAgIG1fbWF0Y2hlZFJ1bGVDb3VudCA9IDA7CkBAIC02ODAsNyArNzIyLDcgQEAgUmVuZGVyU3R5
bGUqIENTU1N0eWxlU2VsZWN0b3I6OmxvY2F0ZVNoYQogCiBSZW5kZXJTdHlsZSogQ1NTU3R5bGVT
ZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnRJbXBsKiBlLCBSZW5kZXJTdHlsZSogZGVm
YXVsdFBhcmVudCwgYm9vbCBhbGxvd1NoYXJpbmcpCiB7Ci0gICAgaWYgKCFlLT5nZXREb2N1bWVu
dCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkgeworICAgIGlmICghbV9yZXNvbHZpbmdGb3JS
b290RGVmYXVsdFN0eWxlICYmICFlLT5nZXREb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2Fk
ZWQoKSkgewogICAgICAgICBpZiAoIXN0eWxlTm90WWV0QXZhaWxhYmxlKSB7CiAgICAgICAgICAg
ICBzdHlsZU5vdFlldEF2YWlsYWJsZSA9IDo6bmV3IFJlbmRlclN0eWxlKCk7CiAgICAgICAgICAg
ICBzdHlsZU5vdFlldEF2YWlsYWJsZS0+c2V0RGlzcGxheShOT05FKTsKQEAgLTcwMiw3ICs3NDQs
MTEgQEAgUmVuZGVyU3R5bGUqIENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRQogICAgIH0KICAg
ICBpbml0Rm9yU3R5bGVSZXNvbHZlKGUsIGRlZmF1bHRQYXJlbnQpOwogCi0gICAgc3R5bGUgPSBu
ZXcgKGUtPmdldERvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpIFJlbmRlclN0eWxlKCk7CisJaWYg
KG1fcmVzb2x2aW5nRm9yUm9vdERlZmF1bHRTdHlsZSkgeworCQlzdHlsZSA9IDo6bmV3IFJlbmRl
clN0eWxlKCk7CQkKKwl9IGVsc2UgewkKKyAgICAJc3R5bGUgPSBuZXcgKGUtPmdldERvY3VtZW50
KCktPnJlbmRlckFyZW5hKCkpIFJlbmRlclN0eWxlKCk7CisJfQogICAgIGlmIChwYXJlbnRTdHls
ZSkKICAgICAgICAgc3R5bGUtPmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKICAgICBlbHNlCkBA
IC03MTcsMTYgKzc2MywxNyBAQCBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVG
b3JFCiAgICAgICAgIG1hdGNoUnVsZXMoZGVmYXVsdFF1aXJrc1N0eWxlLCBmaXJzdFVBUnVsZSwg
bGFzdFVBUnVsZSk7CiAgICAgCiAgICAgLy8gMy4gSWYgb3VyIG1lZGl1bSBpcyBwcmludCwgdGhl
biB3ZSBtYXRjaCBydWxlcyBmcm9tIHRoZSBwcmludCBzaGVldC4KLSAgICBpZiAobV9tZWRpdW0g
PT0gInByaW50IikKKyAgICBpZiAobV9tZWRpdW0tPm1lZGlhVHlwZU1hdGNoKCJwcmludCIpKQog
ICAgICAgICBtYXRjaFJ1bGVzKGRlZmF1bHRQcmludFN0eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVB
UnVsZSk7Ci0gICAgCi0gICAgLy8gNC4gTm93IHdlIGNoZWNrIHVzZXIgc2hlZXQgcnVsZXMuCisK
ICAgICBpbnQgZmlyc3RVc2VyUnVsZSA9IC0xLCBsYXN0VXNlclJ1bGUgPSAtMTsKKyAgICBpbnQg
Zmlyc3RBdXRob3JSdWxlID0gLTEsIGxhc3RBdXRob3JSdWxlID0gLTE7CisgICAgaWYgKCFtX3Jl
c29sdmluZ0ZvclJvb3REZWZhdWx0U3R5bGUpIHsKKyAgICAvLyA0LiBOb3cgd2UgY2hlY2sgdXNl
ciBzaGVldCBydWxlcy4KICAgICBtYXRjaFJ1bGVzKG1fdXNlclN0eWxlLCBmaXJzdFVzZXJSdWxl
LCBsYXN0VXNlclJ1bGUpOwogCiAgICAgLy8gNS4gTm93IGNoZWNrIGF1dGhvciBydWxlcywgYmVn
aW5uaW5nIGZpcnN0IHdpdGggcHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcwogICAgIC8vIG1hcHBl
ZCBmcm9tIEhUTUwuCi0gICAgaW50IGZpcnN0QXV0aG9yUnVsZSA9IC0xLCBsYXN0QXV0aG9yUnVs
ZSA9IC0xOwogICAgIGlmIChzdHlsZWRFbGVtZW50KSB7CiAgICAgICAgIC8vIEFzayBpZiB0aGUg
SFRNTCBlbGVtZW50IGhhcyBtYXBwZWQgYXR0cmlidXRlcy4KICAgICAgICAgaWYgKHN0eWxlZEVs
ZW1lbnQtPmhhc01hcHBlZEF0dHJpYnV0ZXMoKSkgewpAQCAtNzY1LDEzICs4MTIsMTUgQEAgUmVu
ZGVyU3R5bGUqIENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRQogICAgICAgICAgICAgYWRkTWF0
Y2hlZERlY2xhcmF0aW9uKGlubGluZURlY2wpOwogICAgICAgICB9CiAgICAgfQotICAgIAorIH0g
ICAKICAgICAvLyBOb3cgd2UgaGF2ZSBhbGwgb2YgdGhlIG1hdGNoZWQgcnVsZXMgaW4gdGhlIGFw
cHJvcHJpYXRlIG9yZGVyLiAgV2FsayB0aGUgcnVsZXMgYW5kIGFwcGx5CiAgICAgLy8gaGlnaC1w
cmlvcml0eSBwcm9wZXJ0aWVzIGZpcnN0LCBpLmUuLCB0aG9zZSBwcm9wZXJ0aWVzIHRoYXQgb3Ro
ZXIgcHJvcGVydGllcyBkZXBlbmQgb24uCiAgICAgLy8gVGhlIG9yZGVyIGlzICgxKSBoaWdoLXBy
aW9yaXR5IG5vdCBpbXBvcnRhbnQsICgyKSBoaWdoLXByaW9yaXR5IGltcG9ydGFudCwgKDMpIG5v
cm1hbCBub3QgaW1wb3J0YW50CiAgICAgLy8gYW5kICg0KSBub3JtYWwgaW1wb3J0YW50LgotICAg
IGFwcGx5RGVjbGFyYXRpb25zKHRydWUsIGZhbHNlLCAwLCBtX21hdGNoZWREZWNsQ291bnQtMSk7
Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RBdXRob3JSdWxlLCBsYXN0
QXV0aG9yUnVsZSk7CisgICAgaWYgKCFtX3Jlc29sdmluZ0ZvclJvb3REZWZhdWx0U3R5bGUpIHsK
KyAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xD
b3VudC0xKTsKKyAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RBdXRo
b3JSdWxlLCBsYXN0QXV0aG9yUnVsZSk7CisgICAgfQogICAgIGFwcGx5RGVjbGFyYXRpb25zKHRy
dWUsIHRydWUsIGZpcnN0VXNlclJ1bGUsIGxhc3RVc2VyUnVsZSk7CiAgICAgYXBwbHlEZWNsYXJh
dGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogICAgIApAQCAtNzg2
LDkgKzgzNSwxMCBAQCBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFCiAg
ICAgLy8gTm93IGRvIHRoZSBub3JtYWwgcHJpb3JpdHkgcHJvcGVydGllcy4KICAgICBhcHBseURl
Y2xhcmF0aW9ucyhmYWxzZSwgZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xDb3VudC0xKTsKICAgICBh
cHBseURlY2xhcmF0aW9ucyhmYWxzZSwgdHJ1ZSwgZmlyc3RBdXRob3JSdWxlLCBsYXN0QXV0aG9y
UnVsZSk7Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIHRydWUsIGZpcnN0VXNlclJ1bGUs
IGxhc3RVc2VyUnVsZSk7Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIHRydWUsIGZpcnN0
VUFSdWxlLCBsYXN0VUFSdWxlKTsKLSAgICAKKyAgICBpZiAoIW1fcmVzb2x2aW5nRm9yUm9vdERl
ZmF1bHRTdHlsZSl7CisgICAgICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVlLCBmaXJz
dFVzZXJSdWxlLCBsYXN0VXNlclJ1bGUpOworICAgICAgICBhcHBseURlY2xhcmF0aW9ucyhmYWxz
ZSwgdHJ1ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOworICAgIH0KICAgICAvLyBJZiBvdXIg
Zm9udCBnb3QgZGlydGllZCBieSBvbmUgb2YgdGhlIG5vbi1lc3NlbnRpYWwgZm9udCBwcm9wcywg
CiAgICAgLy8gZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBhIHNlY29uZCB0aW1lLgogICAgIGlmIChm
b250RGlydHkpIHsKQEAgLTE0NDMsMTMgKzE0OTMsMTMgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRS
dWxlKENTU1N0eWxlUnVsZUltcAogICAgICAgICBtX3VuaXZlcnNhbFJ1bGVzLT5hcHBlbmQobV9y
dWxlQ291bnQrKywgcnVsZSwgc2VsKTsKIH0KIAotdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zy
b21TaGVldChDU1NTdHlsZVNoZWV0SW1wbCAqc2hlZXQsIGNvbnN0IERPTVN0cmluZyAmbWVkaXVt
KQordm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNoZWV0SW1wbCAq
c2hlZXQsIE1lZGlhUXVlcnlFdmFsdWF0b3IgKm1lZGl1bSkKIHsKICAgICBpZiAoIXNoZWV0IHx8
ICFzaGVldC0+aXNDU1NTdHlsZVNoZWV0KCkpIHJldHVybjsKIAogICAgIC8vIE5vIG1lZGlhIGlt
cGxpZXMgImFsbCIsIGJ1dCBpZiBhIG1lZGlhIGxpc3QgZXhpc3RzIGl0IG11c3QKICAgICAvLyBj
b250YWluIG91ciBjdXJyZW50IG1lZGl1bQotICAgIGlmIChzaGVldC0+bWVkaWEoKSAmJiAhc2hl
ZXQtPm1lZGlhKCktPmNvbnRhaW5zKG1lZGl1bSkpCisgICAgaWYgKHNoZWV0LT5tZWRpYSgpICYm
ICFtZWRpdW0tPmV2YWwoc2hlZXQtPm1lZGlhKCkpKQogICAgICAgICByZXR1cm47IC8vIHRoZSBz
dHlsZSBzaGVldCBkb2Vzbid0IGFwcGx5CiAKICAgICBpbnQgbGVuID0gc2hlZXQtPmxlbmd0aCgp
OwpAQCAtMTQ2Nyw3ICsxNTE3LDcgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVl
dChDU1NTdAogICAgICAgICAgICAgLy9rZERlYnVnKCA2MDgwICkgPDwgIkBpbXBvcnQ6IE1lZGlh
OiAiCiAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICA8PCBpbXBvcnQtPm1lZGlhKCktPm1l
ZGlhVGV4dCgpLnN0cmluZygpIDw8IGVuZGw7CiAKLSAgICAgICAgICAgIGlmICghaW1wb3J0LT5t
ZWRpYSgpIHx8IGltcG9ydC0+bWVkaWEoKS0+Y29udGFpbnMobWVkaXVtKSkKKyAgICAgICAgICAg
IGlmICghaW1wb3J0LT5tZWRpYSgpIHx8IG1lZGl1bS0+ZXZhbChpbXBvcnQtPm1lZGlhKCkpKQog
ICAgICAgICAgICAgICAgIGFkZFJ1bGVzRnJvbVNoZWV0KGltcG9ydC0+c3R5bGVTaGVldCgpLCBt
ZWRpdW0pOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYoaXRlbS0+aXNNZWRpYVJ1bGUoKSkg
ewpAQCAtMTQ3OCw3ICsxNTI4LDcgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVl
dChDU1NTdAogICAgICAgICAgICAgLy9rZERlYnVnKCA2MDgwICkgPDwgIkBtZWRpYTogTWVkaWE6
ICIKICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIDw8IHItPm1lZGlhKCktPm1lZGlhVGV4
dCgpLnN0cmluZygpIDw8IGVuZGw7CiAKLSAgICAgICAgICAgIGlmICgoIXItPm1lZGlhKCkgfHwg
ci0+bWVkaWEoKS0+Y29udGFpbnMobWVkaXVtKSkgJiYgcnVsZXMpIHsKKyAgICAgICAgICAgIGlm
ICgoIXItPm1lZGlhKCkgfHwgbWVkaXVtLT5ldmFsKHItPm1lZGlhKCkpKSAmJiBydWxlcykgewog
ICAgICAgICAgICAgICAgIC8vIFRyYXZlcnNlIGNoaWxkIGVsZW1lbnRzIG9mIHRoZSBAbWVkaWEg
cnVsZS4KICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcnVsZXMtPmxl
bmd0aCgpOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgLy9rZERlYnVnKCA2MDgwICkgPDwg
IioqKiBSdWxlICMiIDw8IGogPDwgZW5kbDsKQEAgLTQxMTgsNSArNDE2OCwxNSBAQCBRQ29sb3Ig
Q1NTU3R5bGVTZWxlY3Rvcjo6Z2V0Q29sb3JGcm9tUHJpCiAgICAgICAgIGNvbC5zZXRSZ2IocHJp
bWl0aXZlVmFsdWUtPmdldFJHQkNvbG9yVmFsdWUoKSk7CiAgICAgcmV0dXJuIGNvbDsgICAgCiB9
CisJCitSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6ZGVmYXVsdFN0eWxlRm9yUm9vdChF
bGVtZW50SW1wbCogZSkKK3sKKyAgICAvLyBYWFg6IE5vdCBhIG5pY2Ugd2F5IHRvIG1ha2UgdGhl
IGFsbG9jYXRpb24gb2YgbmV3IHN0eWxlIGZyb20gZ2xvYmFsIGhlYXAgCisgICAgLy8gKGFuZCBu
b3QgZnJvbSBSZW5kZXJBcmVuYSksIGFuZCB0byBwcmV2ZW50IHNlbGVjdG9yIHRvIG1hdGNoIGF1
dGhvciBzdHlsZXNoZWV0IHJ1bGVzIAorICAgIG1fcmVzb2x2aW5nRm9yUm9vdERlZmF1bHRTdHls
ZSA9IHRydWU7CisgICAgUmVuZGVyU3R5bGUqIHJlc3VsdCA9IHN0eWxlRm9yRWxlbWVudChlLCAw
LCBmYWxzZSk7CisgICAgbV9yZXNvbHZpbmdGb3JSb290RGVmYXVsdFN0eWxlID0gZmFsc2U7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KIAogfSAvLyBuYW1lc3BhY2Uga2h0bWwKZGlmZiAtTnJ1cCAt
LWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9j
c3NzdHlsZXNlbGVjdG9yLmggd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0
eWxlc2VsZWN0b3IuaAotLS0gd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0
b3IuaAkyMDA1LTA3LTA5IDIzOjE5OjAwLjAwMDAwMDAwMCArMDMwMAorKysgd2Via2l0LW1vZGlm
aWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaAkyMDA1LTA3LTI0IDEyOjM2
OjA5LjAwMDAwMDAwMCArMDMwMApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgInJlbmRlcmlu
Zy9yZW5kZXJfc3R5bGUuaCIKICNpbmNsdWRlICJkb20vZG9tX3N0cmluZy5oIgogI2luY2x1ZGUg
ImNzcy9jc3NfcnVsZWltcGwuaCIKKwogI2luY2x1ZGUgIm1pc2MvbWFpbl90aHJlYWRfbWFsbG9j
LmgiCiAKIGNsYXNzIEtIVE1MU2V0dGluZ3M7CkBAIC00Nyw2ICs0OCw3IEBAIG5hbWVzcGFjZSBE
T00gewogICAgIGNsYXNzIENTU1Byb3BlcnR5OwogICAgIGNsYXNzIFN0eWxlU2hlZXRMaXN0SW1w
bDsKICAgICBjbGFzcyBDU1NWYWx1ZUltcGw7CisgICAgY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRv
cjsKIH0KIAogbmFtZXNwYWNlIGtodG1sCkBAIC0xODIsNiArMTg0LDcgQEAgcHVibGljOgogIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdCgpOworICAgICAgICBSZW5kZXJTdHlsZSAq
ZGVmYXVsdFN0eWxlRm9yUm9vdChET006OkVsZW1lbnRJbXBsKiBlKTsKICAgICAgICAgCiAgICAg
ICAgIHZvaWQgbWFwQmFja2dyb3VuZEF0dGFjaG1lbnQoQmFja2dyb3VuZExheWVyKiBsYXllciwg
RE9NOjpDU1NWYWx1ZUltcGwqIHZhbHVlKTsKICAgICAgICAgdm9pZCBtYXBCYWNrZ3JvdW5kSW1h
Z2UoQmFja2dyb3VuZExheWVyKiBsYXllciwgRE9NOjpDU1NWYWx1ZUltcGwqIHZhbHVlKTsKQEAg
LTIwNCw4ICsyMDcsMTAgQEAgcHVibGljOgogICAgICAgICBRTWVtQXJyYXk8Q1NTUnVsZURhdGEq
PiBtX3RtcFJ1bGVzOwogICAgICAgICB1bnNpZ25lZCBtX3RtcFJ1bGVDb3VudDsKICAgICAgICAg
Ci0gICAgICAgIFFTdHJpbmcgbV9tZWRpdW07Ci0KKyAgICAgICAgRE9NOjpNZWRpYVF1ZXJ5RXZh
bHVhdG9yKiBtX21lZGl1bTsKKyAgICAgICAgUmVuZGVyU3R5bGUqIG1fcm9vdERlZmF1bHRTdHls
ZTsKKyAgICAgICAgYm9vbCBtX3Jlc29sdmluZ0ZvclJvb3REZWZhdWx0U3R5bGU7CisJCQogCVJl
bmRlclN0eWxlOjpQc2V1ZG9JZCBkeW5hbWljUHNldWRvOwogCQogCVJlbmRlclN0eWxlICpzdHls
ZTsKQEAgLTI3NCw3ICsyNzksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PERPTTo6RE9NU3RyaW5nSW1wbCAqLCBDU1NSdWxlRGF0YUxpc3QgKiwgUG9pbnRlckhhc2g8RE9N
OjpET01TdHJpbmdJbXBsICo+ID4gQXRvbVJ1bGVNYXA7CiAKLSAgICAgICAgdm9pZCBhZGRSdWxl
c0Zyb21TaGVldChET006OkNTU1N0eWxlU2hlZXRJbXBsKiBzaGVldCwgY29uc3QgRE9NOjpET01T
dHJpbmcgJm1lZGl1bSA9ICJzY3JlZW4iKTsKKyAgICAgICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVl
dChET006OkNTU1N0eWxlU2hlZXRJbXBsKiBzaGVldCwgRE9NOjpNZWRpYVF1ZXJ5RXZhbHVhdG9y
KiBtZWRpdW0pOwogCiAgICAgICAgIHZvaWQgYWRkUnVsZShET006OkNTU1N0eWxlUnVsZUltcGwq
IHJ1bGUsIERPTTo6Q1NTU2VsZWN0b3IqIHNlbCk7CiAgICAgICAgIHZvaWQgYWRkVG9SdWxlU2V0
KERPTTo6RE9NU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1hcCYgbWFwLApkaWZmIC1OcnVwIC0t
ZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL21h
a2VtZWRpYWZlYXR1cmVzIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2todG1sL2Nzcy9tYWtlbWVk
aWFmZWF0dXJlcwotLS0gd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL21ha2VtZWRpYWZlYXR1cmVz
CTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQv
V2ViQ29yZS9raHRtbC9jc3MvbWFrZW1lZGlhZmVhdHVyZXMJMjAwNS0wNy0yMiAxNjoxMDo0Ny4w
MDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSw1NyBAQAorIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBLREUgbGlicmFyaWVzCisjCisjICAgQ29weXJpZ2h0IChDKSAxOTk5IFdhbGRvIEJhc3Rp
YW4gKGJhc3RpYW5Aa2RlLm9yZykKKyMKKyMgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyMgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisjCisjICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyMgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyMgICBCb3N0b24sIE1B
IDAyMTExLTEzMDcsIFVTQS4KKyMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjICBLREUgSFRN
TCBXaWRnZXQgLS0gU2NyaXB0IHRvIGdlbmVyYXRlIGNzc21lZGlhZmVhdHVyZXMuYyBhbmQgY3Nz
bWVkaWFmZWF0dXJlcy5oCisjCitncmVwICJeW15cI10iIGNzc21lZGlhZmVhdHVyZXMuaW4gPiBj
c3NtZWRpYWZlYXR1cmVzLnN0cmlwCisKK2VjaG8gLWUgJyV7XG4vKiBUaGlzIGZpbGUgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjc3NtZWRpYWZlYXR1cmVzLmluIGJ5IG1ha2Vwcm9w
LCBkbyBub3QgZWRpdCAqL1xuLyogQ29weXJpZ2h0IDE5OTkgVy4gQmFzdGlhbiAqL1xuI2luY2x1
ZGUgImNzc21lZGlhZmVhdHVyZXMuaCJcbiV9XG5zdHJ1Y3QgY3NzX21lZGlhX2ZlYXR1cmVfcGFp
ciB7XG4gICAgY29uc3QgY2hhciAqbmFtZTtcbiAgICBpbnQgaWQ7XG59O1xuJSUnID4gY3NzbWVk
aWFmZWF0dXJlcy5ncGVyZgorY2F0IGNzc21lZGlhZmVhdHVyZXMuc3RyaXAgfCBhd2sgJ3sgZG8g
eyBwcm9wID0gJDA7IGdzdWIoIi0iLCAiXyIpOyBwcmludCBwcm9wICIsIENTU19NRURJQV9GRUFU
XyIgdG91cHBlcigkMCkgfSB3aGlsZSAoZ2V0bGluZSkgfScgPj4gY3NzbWVkaWFmZWF0dXJlcy5n
cGVyZgorZWNobyAnJSUnID4+IGNzc21lZGlhZmVhdHVyZXMuZ3BlcmYKK2VjaG8gLWUgJy8qIFRo
aXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNzc21lZGlhZmVhdHVyZXMu
aW4gYnkgbWFrZXByb3AsIGRvIG5vdCBlZGl0ICovXG4vKiBDb3B5cmlnaHQgMTk5OCBXLiBCYXN0
aWFuICovXG5cbiNpZm5kZWYgQ1NTTUVESUFGRUFUVVJFU19IXG4jZGVmaW5lIENTU01FRElBRkVB
VFVSRVNfSFxuXG5ET006OkRPTVN0cmluZyBnZXRNZWRpYUZlYXR1cmVOYW1lKHVuc2lnbmVkIHNo
b3J0IGlkKTtcbicgPiBjc3NtZWRpYWZlYXR1cmVzLmgKK2NhdCBjc3NtZWRpYWZlYXR1cmVzLnN0
cmlwIHwgYXdrICd7IFwKK2k9MTsgXAorcHJpbnQgIiNkZWZpbmUgQ1NTX01FRElBX0ZFQVRfSU5W
QUxJRCAwIjsgXAorcHJpbnQgIiNkZWZpbmUgQ1NTX01FRElBX0ZFQVRfTUlOIDEiOyBcCitkbyB7
IGdzdWIoIi0iLCAiXyIpOyBwcmludCAiI2RlZmluZSBDU1NfTUVESUFfRkVBVF8iIHRvdXBwZXIo
JDApICIgIiBpOyBpID0gaSArIDEgfSB3aGlsZSAoZ2V0bGluZSk7IFwKK3ByaW50ICIiOyBcCitw
cmludCAiI2RlZmluZSBDU1NfTUVESUFfRkVBVF9NQVggQ1NTX01FRElBX0ZFQVRfV0lEVEgiOyBc
CitwcmludCAiI2RlZmluZSBDU1NfTUVESUFfRkVBVF9UT1RBTCAiIGkgXAorfScgPj4gY3NzbWVk
aWFmZWF0dXJlcy5oCitncGVyZiAtYSAtTCAnQU5TSS1DJyAtRSAtQyAtYyAtbyAtdCAtayAnKicg
LU5maW5kTWVkaWFGZWF0dXJlIC1IaGFzaF9tZWRpYV9mZWF0IC1Xd29yZGxpc3RfbWVkaWFfZmVh
dCAtRCAtcyAyIGNzc21lZGlhZmVhdHVyZXMuZ3BlcmYgPiBjc3NtZWRpYWZlYXR1cmVzLmMgfHwg
ZXhpdCAxCitlY2hvIC1lICcjZW5kaWZcbicgPj4gY3NzbWVkaWFmZWF0dXJlcy5oCisKK2NhdCBj
c3NtZWRpYWZlYXR1cmVzLnN0cmlwIHwgYXdrICd7IFwKK2k9MTsgXAorcHJpbnQgInN0YXRpYyBj
b25zdCBjaGFyICogY29uc3QgbWVkaWFGZWF0dXJlTGlzdFtdID0geyI7IFwKK3ByaW50ICJcIlwi
LCI7IFwKK2RvIHsgcHJpbnQgIlwiIiAkMCAiXCIsICI7IGkgPSBpICsgMSB9IHdoaWxlIChnZXRs
aW5lKTsgXAorcHJpbnQgIiAgICAwIjsgXAorcHJpbnQgIn07IjsgXAorcHJpbnQgIkRPTVN0cmlu
ZyBnZXRNZWRpYUZlYXR1cmVOYW1lKHVuc2lnbmVkIHNob3J0IGlkKSI7IFwKK3ByaW50ICJ7Ijsg
XAorcHJpbnQgIiAgICBpZihpZCA+PSBDU1NfTUVESUFfRkVBVF9UT1RBTCB8fCBpZCA9PSAwKSI7
IFwKK3ByaW50ICIgICAgICByZXR1cm4gRE9NU3RyaW5nKCk7IjtcCitwcmludCAiICAgIGVsc2Ui
O1wKK3ByaW50ICIgICAgICByZXR1cm4gRE9NU3RyaW5nKG1lZGlhRmVhdHVyZUxpc3RbaWRdKTsi
OyBcCitwcmludCAifTsiOyBcCitwcmludCAiIjsgXAorfScgPj4gY3NzbWVkaWFmZWF0dXJlcy5j
CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29y
ZS9raHRtbC9jc3MvbWFrZXRva2VuaXplciB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9raHRtbC9j
c3MvbWFrZXRva2VuaXplcgotLS0gd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL21ha2V0b2tlbml6
ZXIJMjAwMy0wNC0xMCAxOTo1MjozNC4wMDAwMDAwMDAgKzAzMDAKKysrIHdlYmtpdC1tb2RpZmll
ZC9XZWJDb3JlL2todG1sL2Nzcy9tYWtldG9rZW5pemVyCTIwMDUtMDctMjEgMTE6MjQ6MTMuMDAw
MDAwMDAwICswMzAwCkBAIC01Myw2ICs1MywxNSBAQCB3aGlsZSAoPD4pIHsKICAgICBwcmludDsK
IH0KIAorIyBtZWRpYSBxdWVyeSwgdG9rZW5pemVyIHN0YXRlIHN1cHBvcnQKK3doaWxlICg8Pikg
eworICBsYXN0IGlmIC95eXRleHQvOworfQord2hpbGUgKDw+KSB7CisgIGxhc3QgaWYgbm90ICgv
ZGVmaW5lLyB8fCAvbGluZS8pIDsKKyAgcHJpbnQ7Cit9CisKIHdoaWxlICg8PikgewogICAgIGxh
c3QgaWYgL15ZWV9ERUNMLzsKIH0KZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVk
ZSAnLionIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9wYXJzZXIueSB3ZWJraXQtbW9kaWZpZWQv
V2ViQ29yZS9raHRtbC9jc3MvcGFyc2VyLnkKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9w
YXJzZXIueQkyMDA1LTA3LTE5IDAwOjQ0OjEzLjAwMDAwMDAwMCArMDMwMAorKysgd2Via2l0LW1v
ZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL3BhcnNlci55CTIwMDUtMDctMjUgMTU6MzE6MDQuMDAw
MDAwMDAwICswMzAwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8Y3NzL2Nzc19ydWxlaW1w
bC5oPgogI2luY2x1ZGUgPGNzcy9jc3Nfc3R5bGVzaGVldGltcGwuaD4KICNpbmNsdWRlIDxjc3Mv
Y3NzX3ZhbHVlaW1wbC5oPgorI2luY2x1ZGUgPGNzcy9jc3NfbWVkaWFxdWVyeWltcGwuaD4KICNp
bmNsdWRlICJodG1sbmFtZXMuaCIKICNpbmNsdWRlICJjc3NwYXJzZXIuaCIKICAgIApAQCAtNTMs
NiArNTQsNyBAQCB1c2luZyBuYW1lc3BhY2UgRE9NOwogI2RlZmluZSBfX2lubGluZQogI2luY2x1
ZGUgImNzc3Byb3BlcnRpZXMuYyIKICNpbmNsdWRlICJjc3N2YWx1ZXMuYyIKKyNpbmNsdWRlICJj
c3NtZWRpYWZlYXR1cmVzLmMiCiAjdW5kZWYgX19pbmxpbmUKIAogbmFtZXNwYWNlIERPTSB7CkBA
IC0xMTAsNiArMTEyLDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldFZhbHVlSUQoY29uc3QgY2hh
ciAKICAgICByZXR1cm4gdmFsLT5pZDsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgZ2V0TWVkaWFG
ZWF0dXJlSUQoY29uc3QgY2hhciAqdGFnU3RyLCBpbnQgbGVuKQoreworICAgIGNvbnN0IHN0cnVj
dCBjc3NfbWVkaWFfZmVhdHVyZV9wYWlyICpmZWF0ID0gZmluZE1lZGlhRmVhdHVyZSh0YWdTdHIs
IGxlbik7CisgICAgaWYgKCFmZWF0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBm
ZWF0LT5pZDsKK30KIAogI2RlZmluZSBZWURFQlVHIDAKICNkZWZpbmUgWVlQQVJTRV9QQVJBTSBw
YXJzZXIKQEAgLTEzNCw2ICsxNDQsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0VmFsdWVJRChj
b25zdCBjaGFyIAogICAgIGNoYXIgdG9rOwogICAgIFZhbHVlIHZhbHVlOwogICAgIFZhbHVlTGlz
dCAqdmFsdWVMaXN0OworICAgIAorICAgIGludCBtZWRpYV9mZWF0dXJlX2lkOworICAgIE1lZGlh
UXVlcnlJbXBsICptZWRpYVF1ZXJ5OworICAgIE1lZGlhUXVlcnlFeHBJbXBsICptZWRpYVF1ZXJ5
RXhwOworICAgIE1lZGlhUXVlcnlFeHBMaXN0SW1wbCAqbWVkaWFRdWVyeUV4cExpc3Q7CisgICAg
TWVkaWFRdWVyeUltcGw6OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJlc3RyaWN0b3I7ICAgIAogfQog
CiAlewpAQCAtMTg0LDkgKzIwMCwxNCBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KCBZWVNUWVBFICp5
eWx2YWwgKSB7CiAldG9rZW4gS0hUTUxfUlVMRV9TWU0KICV0b2tlbiBLSFRNTF9ERUNMU19TWU0K
ICV0b2tlbiBLSFRNTF9WQUxVRV9TWU0KKyV0b2tlbiBLSFRNTF9NRURJQVFVRVJZX1NZTQogCiAl
dG9rZW4gSU1QT1JUQU5UX1NZTQogCisldG9rZW4gTUVESUFfT05MWQorJXRva2VuIE1FRElBX05P
VAorJXRva2VuIE1FRElBX0FORAorCiAldG9rZW4gPHZhbD4gUUVNUwogJXRva2VuIDx2YWw+IEVN
UwogJXRva2VuIDx2YWw+IEVYUwpAQCAtMjMzLDkgKzI1NCwxNSBAQCBzdGF0aWMgaW50IGNzc3l5
bGV4KCBZWVNUWVBFICp5eWx2YWwgKSB7CiAldHlwZSA8c3RyaW5nPiBtZWRpdW0KICV0eXBlIDxz
dHJpbmc+IGhleGNvbG9yCiAKKyV0eXBlIDxtZWRpYV9mZWF0dXJlX2lkPiBtZWRpYV9mZWF0dXJl
CiAldHlwZSA8bWVkaWFMaXN0PiBtZWRpYV9saXN0CiAldHlwZSA8bWVkaWFMaXN0PiBtYXliZV9t
ZWRpYV9saXN0Ci0KKyV0eXBlIDxtZWRpYVF1ZXJ5PiBtZWRpYV9xdWVyeQorJXR5cGUgPG1lZGlh
UXVlcnlSZXN0cmljdG9yPiBtYXliZV9tZWRpYV9yZXN0cmljdG9yCisldHlwZSA8dmFsdWVMaXN0
PiBtYXliZV9tZWRpYV92YWx1ZQorJXR5cGUgPG1lZGlhUXVlcnlFeHA+IG1lZGlhX3F1ZXJ5X2V4
cAorJXR5cGUgPG1lZGlhUXVlcnlFeHBMaXN0PiBtZWRpYV9xdWVyeV9leHBfbGlzdAorJXR5cGUg
PG1lZGlhUXVlcnlFeHBMaXN0PiBtYXliZV9tZWRpYV9xdWVyeV9leHBfbGlzdAogJXR5cGUgPHJ1
bGVMaXN0PiBydWxlc2V0X2xpc3QKIAogJXR5cGUgPHByb3BfaWQ+IHByb3BlcnR5CkBAIC0yNzQs
NiArMzAxLDcgQEAgc3R5bGVzaGVldDoKICAgfCBraHRtbF9ydWxlIG1heWJlX3NwYWNlCiAgIHwg
a2h0bWxfZGVjbHMgbWF5YmVfc3BhY2UKICAgfCBraHRtbF92YWx1ZSBtYXliZV9zcGFjZQorICB8
IGtodG1sX21lZGlhcXVlcnkgbWF5YmVfc3BhY2UKICAgOwogCiBraHRtbF9ydWxlOgpAQCAtMzE0
LDYgKzM0MiwxOCBAQCBraHRtbF92YWx1ZToKICAgICB9CiA7CiAKK2todG1sX21lZGlhcXVlcnk6
CisgICAgS0hUTUxfTUVESUFRVUVSWV9TWU0gV0hJVEVTUEFDRSBtYXliZV9zcGFjZSBtZWRpYV9x
dWVyeSAnfScgeworICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIg
Kj4ocGFyc2VyKTsKKyAgICAgICAgcC0+bWVkaWFRdWVyeSA9ICQ0OwkJCQorCX0KKyAgICB8IEtI
VE1MX01FRElBUVVFUllfU1lNIFdISVRFU1BBQ0UgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnkgZXJy
b3IgJ30neworICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4o
cGFyc2VyKTsKKyAgICAgICAgcC0+bWVkaWFRdWVyeSA9ICQ0OworCX0KKworOworCiBtYXliZV9z
cGFjZToKICAgICAvKiBlbXB0eSAqLwogICB8IG1heWJlX3NwYWNlIFdISVRFU1BBQ0UKQEAgLTQx
OSwzNSArNDU5LDExNyBAQCBTVFJJTkcKIHwgVVJJCiA7CiAKK21lZGlhX2ZlYXR1cmU6CisgICAg
SURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgICBRU3RyaW5nIHN0ciA9IHFTdHJpbmcoJDEpOwor
CQkkJCA9IGdldE1lZGlhRmVhdHVyZUlEKCBzdHIubG93ZXIoKS5sYXRpbjEoKSwgc3RyLmxlbmd0
aCgpICk7CisgICAgfQorOworCittYXliZV9tZWRpYV92YWx1ZToKKyAgICAvKmVtcHR5Ki8gewor
ICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgJzonIG1heWJlX3NwYWNlIGV4cHIgbWF5YmVf
c3BhY2UgeworICAgICAgICAkJCA9ICQzOworICAgIH0KKzsKKworbWVkaWFfcXVlcnlfZXhwOgor
ICAgICcoJyBtYXliZV9zcGFjZSBtZWRpYV9mZWF0dXJlIG1heWJlX3NwYWNlIG1heWJlX21lZGlh
X3ZhbHVlICcpJyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gbmV3IE1lZGlhUXVlcnlFeHBJ
bXBsKCQzLCAkNSk7CisgICAgfQorOworCittZWRpYV9xdWVyeV9leHBfbGlzdDoKKyAgICBtZWRp
YV9xdWVyeV9leHAgeworICAgICAgICAkJCA9IG5ldyBNZWRpYVF1ZXJ5RXhwTGlzdEltcGw7Cisg
ICAgICAgICQkLT5hcHBlbmQoJDEpOworICAgIH0KKyAgICB8IG1lZGlhX3F1ZXJ5X2V4cF9saXN0
IE1FRElBX0FORCBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeV9leHAgeworICAgICAgICAkJCA9ICQx
OworICAgICAgICBpZiAoJCQpCisgICAgICAgICAgICAkJC0+YXBwZW5kKCQ0KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZGVsZXRlICgkNCk7CisgICAgfQorICAgIHwgbWVkaWFfcXVlcnlf
ZXhwX2xpc3QgZXJyb3IgeworICAgICAgICAvLyBFcnJvciB3aGlsZSBwYXJzaW5nIG1lZGlhIGZl
YXR1cmUgbGlzdC4gRGVsZXRlIHRoZSBsaXN0IGFuZCByZXR1cm4gMCwgd2hpY2ggbWVhbnMKKyAg
ICAgICAgLy8gdGhhdCB3ZSBzaG91bGQgaGFuZGxlIHRoZSBtZWRpYSBxdWVyeSBhcyBjc3MgMi4x
IG1lZGlhIHR5cGUgKG9yIEhUTUw0IG1lZGlhIGRlc2NyaXB0aW9uKSAKKyAgICAgICAgZGVsZXRl
ICgkMSk7CisgICAgICAgICQkPTA7ICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgIDsKKwor
bWF5YmVfbWVkaWFfcXVlcnlfZXhwX2xpc3Q6CisgICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQg
PSBuZXcgTWVkaWFRdWVyeUV4cExpc3RJbXBsOworICAgIH0KKyAgICB8IE1FRElBX0FORCBtYXli
ZV9zcGFjZSBtZWRpYV9xdWVyeV9leHBfbGlzdCB7CisgICAgICAgICQkID0gJDM7CisgICAgfSAK
KyAgICB8IE1FRElBX0FORCBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9Cis7CisKK21h
eWJlX21lZGlhX3Jlc3RyaWN0b3I6CisgICAgLyplbXB0eSoveworICAgICAgICAkJCA9IE1lZGlh
UXVlcnlJbXBsOjpOb25lOworICAgIH0KKyAgICB8IE1FRElBX09OTFkgeworICAgICAgICAkJCA9
IE1lZGlhUXVlcnlJbXBsOjpPbmx5OworICAgIH0KKyAgICB8IE1FRElBX05PVCB7CisgICAgICAg
ICQkID0gTWVkaWFRdWVyeUltcGw6Ok5vdDsKKyAgICB9Cis7CisKK21lZGlhX3F1ZXJ5OgorICAg
IG1heWJlX21lZGlhX3Jlc3RyaWN0b3IgbWF5YmVfc3BhY2UgbWVkaXVtIG1heWJlX21lZGlhX3F1
ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAgaWYgKCQ0KSB7ICAgICAgICAKKyAgICAgICAgICAgICQk
ID0gbmV3IE1lZGlhUXVlcnlJbXBsKCQxLCBkb21TdHJpbmcoJDMpLCAkNCk7CisgICAgICAgIH0g
ZWxzZSBpZiAoJDEgPT0gTWVkaWFRdWVyeUltcGw6Ok9ubHkpIHsKKyAgICAgICAgICAgICQkID0g
bmV3IE1lZGlhUXVlcnlJbXBsKE1lZGlhUXVlcnlJbXBsOjpOb25lLCAib25seSIsIG5ldyBNZWRp
YVF1ZXJ5RXhwTGlzdEltcGwpOyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgIGlmICgkMSA9
PSBNZWRpYVF1ZXJ5SW1wbDo6Tm90KSB7CisgICAgICAgICAgICAkJCA9IG5ldyBNZWRpYVF1ZXJ5
SW1wbChNZWRpYVF1ZXJ5SW1wbDo6Tm9uZSwgIm5vdCIsIG5ldyBNZWRpYVF1ZXJ5RXhwTGlzdElt
cGwpOyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBuZXcg
TWVkaWFRdWVyeUltcGwoTWVkaWFRdWVyeUltcGw6Ok5vbmUsIGRvbVN0cmluZygkMyksIG5ldyBN
ZWRpYVF1ZXJ5RXhwTGlzdEltcGwpOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorOwor
CiBtYXliZV9tZWRpYV9saXN0OgotICAgICAvKiBlbXB0eSAqLyB7CisgICAgLyogZW1wdHkgKi8g
ewogICAgICAgICAkJCA9IG5ldyBNZWRpYUxpc3RJbXBsKCk7Ci0gICAgIH0KLSAgICAgfCBtZWRp
YV9saXN0CisgICAgfQorICAgIHwgbWVkaWFfbGlzdCAgICAgCiA7CiAKIAogbWVkaWFfbGlzdDoK
ICAgICAvKiBlbXB0eSAqLyB7Ci0JJCQgPSAwOworICAgICAgICAkJCA9IDA7CiAgICAgfQotICAg
IHwgbWVkaXVtIHsKLQkkJCA9IG5ldyBNZWRpYUxpc3RJbXBsKCk7Ci0JJCQtPmFwcGVuZE1lZGl1
bSggZG9tU3RyaW5nKCQxKS5sb3dlcigpICk7CisgICAgfCBtZWRpYV9xdWVyeSB7ICAgIAkKKyAg
ICAgICAgJCQgPSBuZXcgTWVkaWFMaXN0SW1wbCgpOworICAgICAgICAkJC0+YXBwZW5kTWVkaWFR
dWVyeSggJDEgKTsKICAgICB9Ci0gICAgfCBtZWRpYV9saXN0ICcsJyBtYXliZV9zcGFjZSBtZWRp
dW0gewotCSQkID0gJDE7CisgICAgfCBtZWRpYV9saXN0ICcsJyBtYXliZV9zcGFjZSBtZWRpYV9x
dWVyeSB7ICAgIAkKKyAgICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYgKCQkKQotCSAgICAkJC0+
YXBwZW5kTWVkaXVtKCBkb21TdHJpbmcoJDQpICk7CisgICAgICAgICAgICAkJC0+YXBwZW5kTWVk
aWFRdWVyeSgkNCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRlbGV0ZSAkNAogICAgIH0K
ICAgICB8IG1lZGlhX2xpc3QgZXJyb3IgewogICAgICAgICBkZWxldGUgJDE7CiAgICAgICAgICQk
ID0gMDsKICAgICB9Ci0gICAgOworOwogCiBtZWRpYToKLSAgICBNRURJQV9TWU0gbWF5YmVfc3Bh
Y2UgbWVkaWFfbGlzdCAneycgbWF5YmVfc3BhY2UgcnVsZXNldF9saXN0ICd9JyB7CisgICAgTUVE
SUFfU1lNIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgJ3snIG1heWJlX3NwYWNlIHJ1bGVz
ZXRfbGlzdCAnfScgeyAgICAJCiAJQ1NTUGFyc2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2Vy
ICo+KHBhcnNlcik7CiAJaWYgKCAkMyAmJiAkNiAmJgogCSAgICAgcC0+c3R5bGVFbGVtZW50ICYm
IHAtPnN0eWxlRWxlbWVudC0+aXNDU1NTdHlsZVNoZWV0KCkgKSB7CmRpZmYgLU5ydXAgLS1leGNs
dWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9raHRtbC9jc3MvdG9rZW5p
emVyLmZsZXggd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL3Rva2VuaXplci5mbGV4
Ci0tLSB3ZWJraXQvV2ViQ29yZS9raHRtbC9jc3MvdG9rZW5pemVyLmZsZXgJMjAwNC0wNS0yOCAw
MjowNToxNS4wMDAwMDAwMDAgKzAzMDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2todG1s
L2Nzcy90b2tlbml6ZXIuZmxleAkyMDA1LTA3LTIyIDE0OjM1OjEwLjAwMDAwMDAwMCArMDMwMApA
QCAtMSw2ICsxLDggQEAKICVvcHRpb24gY2FzZS1pbnNlbnNpdGl2ZQogJW9wdGlvbiBub3l5d3Jh
cAogJW9wdGlvbiA4Yml0Cislb3B0aW9uIHN0YWNrCislcyBtZWRpYXF1ZXJ5CiAKIGggICAgICAg
ICAgICAgICBbMC05YS1mQS1GXQogbm9uYXNjaWkgICAgICAgIFtcMjAwLVwzNzddCkBAIC0zMyw2
ICszNSw5IEBAIHJhbmdlICAgICAgICAgICBcP3sxLDZ9fHtofShcP3swLDV9fHtofSgKICJePSIg
ICAgICAgICAgICAgICAgICAgIHt5eVRvayA9IEJFR0lOU1dJVEg7IHJldHVybiB5eVRvazt9CiAi
JD0iICAgICAgICAgICAgICAgICAgICB7eXlUb2sgPSBFTkRTV0lUSDsgcmV0dXJuIHl5VG9rO30K
ICIqPSIgICAgICAgICAgICAgICAgICAgIHt5eVRvayA9IENPTlRBSU5TOyByZXR1cm4geXlUb2s7
fQorPG1lZGlhcXVlcnk+Im5vdCIgICAgICAge3l5VG9rID0gTUVESUFfTk9UOyByZXR1cm4geXlU
b2s7fQorPG1lZGlhcXVlcnk+Im9ubHkiICAgICAge3l5VG9rID0gTUVESUFfT05MWTsgcmV0dXJu
IHl5VG9rO30KKzxtZWRpYXF1ZXJ5PiJhbmQiICAgICAgIHt5eVRvayA9IE1FRElBX0FORDsgcmV0
dXJuIHl5VG9rO30KIAoge3N0cmluZ30gICAgICAgICAgICAgICAge3l5VG9rID0gU1RSSU5HOyBy
ZXR1cm4geXlUb2s7fQogCkBAIC00MCwxNSArNDUsMTcgQEAgcmFuZ2UgICAgICAgICAgIFw/ezEs
Nn18e2h9KFw/ezAsNX18e2h9KAogCiAiIyJ7bmFtZX0gICAgICAgICAgICAgICB7eXlUb2sgPSBI
QVNIOyByZXR1cm4geXlUb2s7fQogCi0iQGltcG9ydCIgICAgICAgICAgICAgICB7eXlUb2sgPSBJ
TVBPUlRfU1lNOyByZXR1cm4geXlUb2s7fQorIkBpbXBvcnQiICAgICAgICAgICAgICAge0JFR0lO
KG1lZGlhcXVlcnkpOyB5eVRvayA9IElNUE9SVF9TWU07IHJldHVybiB5eVRvazt9CiAiQHBhZ2Ui
ICAgICAgICAgICAgICAgICB7eXlUb2sgPSBQQUdFX1NZTTsgcmV0dXJuIHl5VG9rO30KLSJAbWVk
aWEiICAgICAgICAgICAgICAgIHt5eVRvayA9IE1FRElBX1NZTTsgcmV0dXJuIHl5VG9rO30KKyJA
bWVkaWEiICAgICAgICAgICAgICAgIHtCRUdJTihtZWRpYXF1ZXJ5KTsgeXlUb2sgPSBNRURJQV9T
WU07IHJldHVybiB5eVRvazt9CiAiQGZvbnQtZmFjZSIgICAgICAgICAgICB7eXlUb2sgPSBGT05U
X0ZBQ0VfU1lNOyByZXR1cm4geXlUb2s7fQogIkBjaGFyc2V0IiAgICAgICAgICAgICAge3l5VG9r
ID0gQ0hBUlNFVF9TWU07IHJldHVybiB5eVRvazt9CiAiQG5hbWVzcGFjZSIgICAgICAgICAgICB7
eXlUb2sgPSBOQU1FU1BBQ0VfU1lNOyByZXR1cm4geXlUb2s7IH0KICJALWtodG1sLXJ1bGUiICAg
IHt5eVRvayA9IEtIVE1MX1JVTEVfU1lNOyByZXR1cm4geXlUb2s7IH0KICJALWtodG1sLWRlY2xz
IiAgIHt5eVRvayA9IEtIVE1MX0RFQ0xTX1NZTTsgcmV0dXJuIHl5VG9rOyB9CiAiQC1raHRtbC12
YWx1ZSIgICB7eXlUb2sgPSBLSFRNTF9WQUxVRV9TWU07IHJldHVybiB5eVRvazsgfQorIkAta2h0
bWwtbWVkaWFxdWVyeSIgICB7QkVHSU4obWVkaWFxdWVyeSk7IHl5VG9rID0gS0hUTUxfTUVESUFR
VUVSWV9TWU07IHJldHVybiB5eVRvazsgfQorCiAKICIhInt3fSJpbXBvcnRhbnQiICAgICAgICAg
e3l5VG9rID0gSU1QT1JUQU5UX1NZTTsgcmV0dXJuIHl5VG9rO30KIApAQCAtNzksNiArODYsOCBA
QCByYW5nZSAgICAgICAgICAgXD97MSw2fXx7aH0oXD97MCw1fXx7aH0oCiBVXCt7cmFuZ2V9ICAg
ICAgICAgICAgICB7eXlUb2sgPSBVTklDT0RFUkFOR0U7IHJldHVybiB5eVRvazt9CiBVXCt7aH17
MSw2fS17aH17MSw2fSAgICB7eXlUb2sgPSBVTklDT0RFUkFOR0U7IHJldHVybiB5eVRvazt9CiAK
KzxtZWRpYXF1ZXJ5PiJ7IiAgICAgICAgIHwKKzxtZWRpYXF1ZXJ5PiI7IiAgICAgICAgIHtCRUdJ
TihJTklUSUFMKTsgeXlUb2sgPSAqeXl0ZXh0OyByZXR1cm4geXlUb2s7IH0KIC4gICAgICAgICAg
ICAgICAgICAgICAgIHt5eVRvayA9ICp5eXRleHQ7IHJldHVybiB5eVRvazt9CiAKICUlCmRpZmYg
LU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9raHRt
bC9odG1sL2h0bWxfaGVhZGltcGwuY3BwIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2todG1sL2h0
bWwvaHRtbF9oZWFkaW1wbC5jcHAKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbF9o
ZWFkaW1wbC5jcHAJMjAwNS0wNy0xOSAwMDo1MjoyNS4wMDAwMDAwMDAgKzAzMDAKKysrIHdlYmtp
dC1tb2RpZmllZC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5jcHAJMjAwNS0wNy0y
NSAxNDoxNDowMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJj
c3MvY3Nzc3R5bGVzZWxlY3Rvci5oIgogI2luY2x1ZGUgImNzcy9jc3Nfc3R5bGVzaGVldGltcGwu
aCIKICNpbmNsdWRlICJjc3MvY3NzaGVscGVyLmgiCisjaW5jbHVkZSAiY3NzL2Nzc19tZWRpYXF1
ZXJ5ZXZhbC5oIgogCiAjaW5jbHVkZSA8a3VybC5oPgogI2luY2x1ZGUgPGtkZWJ1Zy5oPgpAQCAt
MjI5LDcgKzIzMCwxMCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudEltcGw6OnByb2Nlc3MoKQogICAg
ICAgICAvLyBubyBuZWVkIHRvIGxvYWQgc3R5bGUgc2hlZXRzIHdoaWNoIGFyZW4ndCBmb3IgdGhl
IHNjcmVlbiBvdXRwdXQKICAgICAgICAgLy8gIyMjIHRoZXJlIG1heSBiZSBpbiBzb21lIHNpdHVh
dGlvbnMgZS5nLiBmb3IgYW4gZWRpdG9yIG9yIHNjcmlwdCB0byBtYW5pcHVsYXRlCiAJLy8gYWxz
bywgZG9uJ3QgbG9hZCBzdHlsZSBzaGVldHMgZm9yIHN0YW5kYWxvbmUgZG9jdW1lbnRzCi0gICAg
ICAgIGlmIChtX21lZGlhLmlzTnVsbCgpIHx8IG1fbWVkaWEuY29udGFpbnMoInNjcmVlbiIpIHx8
IG1fbWVkaWEuY29udGFpbnMoImFsbCIpIHx8IG1fbWVkaWEuY29udGFpbnMoInByaW50IikpIHsK
KyAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBhbGxFdmFsKHRydWUpLCBzY3JlZW5FdmFsKCJz
Y3JlZW4iLCB0cnVlKSwgcHJpbnRFdmFsKCJwcmludCIsIHRydWUpOworICAgICAgICBNZWRpYUxp
c3RJbXBsKiBtZWRpYSA9IG5ldyBNZWRpYUxpc3RJbXBsKCk7CisgICAgICAgIG1lZGlhLT5zZXRN
ZWRpYVRleHQoIG1fbWVkaWEgKTsKKyAgICAgICAgaWYgKCBhbGxFdmFsLmV2YWwobWVkaWEpfHwg
c2NyZWVuRXZhbC5ldmFsKG1lZGlhKSB8fCBwcmludEV2YWwuZXZhbChtZWRpYSkgKSB7CiAgICAg
ICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwogCiAgICAgICAgICAgICAvLyBBZGQgb3Vyc2VsdmVz
IGFzIGEgcGVuZGluZyBzaGVldCwgYnV0IG9ubHkgaWYgd2UgYXJlbid0IGFuIGFsdGVybmF0ZSAK
QEAgLTI0NCw2ICsyNDgsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudEltcGw6OnByb2Nlc3MoKQog
ICAgICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgICAgICAgICAgbV9jYWNoZWRT
aGVldC0+cmVmKHRoaXMpOwogICAgICAgICB9CisgICAgICAgIG1lZGlhLT5kZXJlZigpOwogICAg
IH0KICAgICBlbHNlIGlmIChtX3NoZWV0KSB7CiAgICAgICAgIC8vIHdlIG5vIGxvbmdlciBjb250
YWluIGEgc3R5bGVzaGVldCwgZS5nLiBwZXJoYXBzIHJlbCBvciB0eXBlIHdhcyBjaGFuZ2VkCkBA
IC03MTIsMTcgKzcxNywyMyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnRJbXBsOjpjaGlsZHJlbkNo
YW5nCiAgICAgICAgIG1fc2hlZXQgPSAwOwogICAgIH0KIAotICAgIG1fbG9hZGluZyA9IGZhbHNl
OwotICAgIGlmICgobV90eXBlLmlzRW1wdHkoKSB8fCBtX3R5cGUgPT0gInRleHQvY3NzIikgLy8g
VHlwZSBtdXN0IGJlIGVtcHR5IG9yIENTUwotICAgICAgICAgJiYgKG1fbWVkaWEuaXNOdWxsKCkg
fHwgbV9tZWRpYS5jb250YWlucygic2NyZWVuIikgfHwgbV9tZWRpYS5jb250YWlucygiYWxsIikg
fHwgbV9tZWRpYS5jb250YWlucygicHJpbnQiKSkpIHsKLSAgICAgICAgZ2V0RG9jdW1lbnQoKS0+
YWRkUGVuZGluZ1NoZWV0KCk7Ci0gICAgICAgIG1fbG9hZGluZyA9IHRydWU7Ci0gICAgICAgIG1f
c2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldEltcGwodGhpcyk7Ci0gICAgICAgIG1fc2hlZXQtPnJl
ZigpOwotICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyggdGV4dCwgIWdldERvY3VtZW50KCkt
PmluQ29tcGF0TW9kZSgpICk7Ci0gICAgICAgIE1lZGlhTGlzdEltcGwgKm1lZGlhID0gbmV3IE1l
ZGlhTGlzdEltcGwoIG1fc2hlZXQsIG1fbWVkaWEgKTsKLSAgICAgICAgbV9zaGVldC0+c2V0TWVk
aWEoIG1lZGlhICk7Ci0gICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOworICAgIG1fbG9hZGluZyA9
IGZhbHNlOyAgICAKKyAgICBpZiAoKG1fdHlwZS5pc0VtcHR5KCkgfHwgbV90eXBlID09ICJ0ZXh0
L2NzcyIpKSB7Ly8gVHlwZSBtdXN0IGJlIGVtcHR5IG9yIENTUworICAgICAgICBNZWRpYUxpc3RJ
bXBsICptZWRpYSA9IG5ldyBNZWRpYUxpc3RJbXBsKCk7CisgICAgICAgIG1lZGlhLT5zZXRNZWRp
YVRleHQoIG1fbWVkaWEgKTsKKyAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBhbGxFdmFsKHRy
dWUpLCBzY3JlZW5FdmFsKCJzY3JlZW4iLCB0cnVlKSwgIHByaW50RXZhbCgicHJpbnQiLCB0cnVl
KTsKKyAgICAgICAgaWYgKGFsbEV2YWwuZXZhbChtZWRpYSkgfHwgc2NyZWVuRXZhbC5ldmFsKG1l
ZGlhKSB8fCBwcmludEV2YWwuZXZhbChtZWRpYSkpIHsKKyAgICAgICAgICAgIGdldERvY3VtZW50
KCktPmFkZFBlbmRpbmdTaGVldCgpOworICAgICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKKyAg
ICAgICAgICAgIG1fc2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldEltcGwodGhpcyk7CisgICAgICAg
ICAgICBtX3NoZWV0LT5yZWYoKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKCB0
ZXh0LCAhZ2V0RG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkgKTsKKyAgICAgICAgICAgIG1lZGlh
LT5zZXRQYXJlbnQoIG1fc2hlZXQgKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnNldE1lZGlhKCBt
ZWRpYSApOworICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBtZWRpYS0+ZGVyZWYoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlm
ICghaXNMb2FkaW5nKCkgJiYgbV9zaGVldCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3081</attachid>
            <date>2005-07-25 08:21:02 -0700</date>
            <delta_ts>2006-02-03 07:43:28 -0800</delta_ts>
            <desc>~20 adhoc layout tests to test CSS3 Media Queries</desc>
            <filename>webcore-layout-tests-mediaquery.patch</filename>
            <type>text/plain</type>
            <size>44928</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">ZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3Jl
L2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwMS1leHBlY3RlZC50eHQgd2Via2l0LW1vZGlmaWVk
L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDAxLWV4cGVjdGVkLnR4dAotLS0gd2Vi
a2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDAxLWV4cGVjdGVkLnR4dAkxOTcw
LTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNv
cmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDAxLWV4cGVjdGVkLnR4dAkyMDA1LTA3LTI1IDE3
OjU1OjI5LjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUg
ODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAg
ICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQor
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4u
IgpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNv
cmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDAxLmh0bWwgd2Via2l0LW1vZGlmaWVkL1dlYkNv
cmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDAxLmh0bWwKLS0tIHdlYmtpdC9XZWJDb3JlL2xh
eW91dC10ZXN0cy9mYXN0L21lZGlhLzAwMS5odG1sCTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAw
MDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9t
ZWRpYS8wMDEuaHRtbAkyMDA1LTA3LTIyIDA5OjAwOjU1LjAwMDAwMDAwMCArMDMwMApAQCAtMCww
ICsxLDE0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBIVE1MNCBtZWRpYSBkZXNjcmlwdGlv
bnMgcGFyc2luZyBzdHlsZSBlbGVtZW50IG1lZGlhPSBjb250ZW50PC90aXRsZT4gIAorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3R5cGVzLmh0
bWwjaC02LjEzIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSIzZC1nbGFzc2Vz
LCBzY3JlZW4gYW5kIHJlc29sdXRpb24gPiA0MGRwaSwgYnJhaWxsZSI+CitwIHsgY29sb3I6IGdy
ZWVuOyB9Cis8L3N0eWxlPgorCis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzxwPiBUaGlzIHRl
eHQgc2hvdWxkIGJlIGdyZWVuLiA8L3A+Cis8L2h0bWw+CmRpZmYgLU5ydXAgLS1leGNsdWRlICdD
VlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRp
YS8wMDItZXhwZWN0ZWQudHh0IHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9m
YXN0L21lZGlhLzAwMi1leHBlY3RlZC50eHQKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0
cy9mYXN0L21lZGlhLzAwMi1leHBlY3RlZC50eHQJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAw
MDAgKzAyMDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21l
ZGlhLzAwMi1leHBlY3RlZC50eHQJMjAwNS0wNy0yNSAxNzo1NToyOS4wMDAwMDAwMDAgKzAzMDAK
QEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2Fu
dmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUg
J0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21l
ZGlhLzAwMi5odG1sIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21l
ZGlhLzAwMi5odG1sCi0tLSB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8w
MDIuaHRtbAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1v
ZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDAyLmh0bWwJMjAwNS0wNy0y
MiAwOTowMTowMS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT4gSFRNTDQgbWVkaWEgZGVzY3JpcHRpb25zIHBhcnNpbmcgc3R5bGUgZWxlbWVu
dCBtZWRpYT0gY29udGVudDwvdGl0bGU+IAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8v
d3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3R5cGVzLmh0bWwjaC02LjEzIiAvPgorPCEtLSBhY3R1
YWwgdGVzdGNhc2UgZnJvbSBodHRwOi8vd3d3LmhpeGllLmNoL3Rlc3RzL2V2aWwvY3NzL2ltcG9y
dC9leHRyYS9zdHlsZWV4b3RpY21lZGlhLmh0bWwgLS0+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
IG1lZGlhPSJzY3JlZW47YnJhaWxsZSI+Citwe2NvbG9yOiBncmVlbjsgfQorPC9zdHlsZT4KKwor
PC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3
ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMDMtZXhwZWN0ZWQudHh0IHdl
YmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwMy1leHBlY3Rl
ZC50eHQKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwMy1leHBl
Y3RlZC50eHQJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtpdC1t
b2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwMy1leHBlY3RlZC50eHQJ
MjAwNS0wNy0yNSAxNzo1NToyOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSw4IEBACitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAw
eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXpl
IDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29s
b3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNjN4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuLiIKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLion
IHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwMy5odG1sIHdlYmtpdC1t
b2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwMy5odG1sCi0tLSB3ZWJr
aXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMDMuaHRtbAkxOTcwLTAxLTAxIDAy
OjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0
LXRlc3RzL2Zhc3QvbWVkaWEvMDAzLmh0bWwJMjAwNS0wNy0yMiAwOTowODo1MS4wMDAwMDAwMDAg
KzAzMDAKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gSFRNTDQgbWVk
aWEgZGVzY3JpcHRpb25zIHBhcnNpbmcgc3R5bGUgZWxlbWVudCBtZWRpYT0gY29udGVudDwvdGl0
bGU+IAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRt
bDQwL3R5cGVzLmh0bWwjaC02LjEzIiAvPgorCis8IS0tIGFjdHVhbCB0ZXN0Y2FzZSBmcm9tIGh0
dHA6Ly93d3cuaGl4aWUuY2gvdGVzdHMvZXZpbC9jc3MvaW1wb3J0L2V4dHJhL3N0eWxlZXhvdGlj
bWVkaWEuaHRtbCAtLT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImJyYWlsbGUsIGFs
bCB3aXRoIHByaW50Ij4KK3B7Y29sb3I6IGdyZWVuO30KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxi
b2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPiAKKzwvYm9keT4KKzwvaHRt
bD4KZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJD
b3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwNC1leHBlY3RlZC50eHQgd2Via2l0LW1vZGlm
aWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA0LWV4cGVjdGVkLnR4dAotLS0g
d2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA0LWV4cGVjdGVkLnR4dAkx
OTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dl
YkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA0LWV4cGVjdGVkLnR4dAkyMDA1LTA3LTI1
IDE3OjU1OjI5LjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3Ngor
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAw
XQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3Jl
ZW4uIgpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dl
YkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA0Lmh0bWwgd2Via2l0LW1vZGlmaWVkL1dl
YkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA0Lmh0bWwKLS0tIHdlYmtpdC9XZWJDb3Jl
L2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwNC5odG1sCTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAw
MDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFz
dC9tZWRpYS8wMDQuaHRtbAkyMDA1LTA3LTIyIDA5OjA4OjQ4LjAwMDAwMDAwMCArMDMwMApAQCAt
MCwwICsxLDE4IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRl
c3Q6ICBtZWRpYSBvbmx5IGFsbDwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4KKworPHN0eWxl
IHR5cGU9InRleHQvY3NzIj4KK0BtZWRpYSBvbmx5IGFsbCB7IAorIHAgeworICBjb2xvcjogZ3Jl
ZW47CisgfQorfQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNo
b3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLU5ydXAgLS1leGNsdWRl
ICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9t
ZWRpYS8wMDUtZXhwZWN0ZWQudHh0IHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0
cy9mYXN0L21lZGlhLzAwNS1leHBlY3RlZC50eHQKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10
ZXN0cy9mYXN0L21lZGlhLzAwNS1leHBlY3RlZC50eHQJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAw
MDAwMDAgKzAyMDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0
L21lZGlhLzAwNS1leHBlY3RlZC50eHQJMjAwNS0wNy0yNSAxNzo1NToyOS4wMDAwMDAwMDAgKzAz
MDAKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVy
Q2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKZGlmZiAtTnJ1cCAtLWV4Y2x1
ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0
L21lZGlhLzAwNS5odG1sIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0
L21lZGlhLzAwNS5odG1sCi0tLSB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRp
YS8wMDUuaHRtbAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0
LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA1Lmh0bWwJMjAwNS0w
Ny0yMiAwOTowNTowMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSwxOCBAQAorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBub3QgYnJhaWxsZSwgc2NyZWVu
PC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9j
c3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgor
QG1lZGlhIG5vdCBicmFpbGxlLCBzY3JlZW4geyAKKyBwIHsKKyAgY29sb3I6IGdyZWVuOworIH0K
K30KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3Jl
L2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwNi1leHBlY3RlZC50eHQgd2Via2l0LW1vZGlmaWVk
L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA2LWV4cGVjdGVkLnR4dAotLS0gd2Vi
a2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA2LWV4cGVjdGVkLnR4dAkxOTcw
LTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNv
cmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA2LWV4cGVjdGVkLnR4dAkyMDA1LTA3LTI1IDE3
OjU1OjI5LjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDExIEBACitsYXllciBhdCAoMCwwKSBz
aXplIDgwOHg1ODUKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDU4NQorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDh4NTg1CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDgwMHg1ODUKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NjkKKyAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0K
KyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAzNzh4MTgKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNzg6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVu
IGlmIHZpZXdwb3J0IGlzIGF0IG1vc3QgODAwcHggd2lkZS4iCisgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVu
ZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxMjF4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxMjE6ICJkaXYgb2Ygd2lkdGggODAwcHgiCmRpZmYgLU5ydXAgLS1leGNs
dWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFz
dC9tZWRpYS8wMDYuaHRtbCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFz
dC9tZWRpYS8wMDYuaHRtbAotLS0gd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVk
aWEvMDA2Lmh0bWwJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtp
dC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwNi5odG1sCTIwMDUt
MDctMjIgMTU6MzA6MjQuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMjEgQEAKKzxodG1sPgor
PGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2NyZWVuIGFuZCAobWF4LXdp
ZHRoOiA4MDBweCk8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cu
dzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKworPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KK3AgeworICBjb2xvcjogcmVkOworfQorQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13
aWR0aDogODAwcHgpIHsKKyAgIHAgeworICAgICBjb2xvcjogZ3JlZW47CisgIH0KK30KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZp
ZXdwb3J0IGlzIGF0IG1vc3QgODAwcHggd2lkZS48L3A+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogODAw
cHg7IGJhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyI+ZGl2IG9mIHdpZHRoIDgwMHB4PC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUg
Jy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMDctZXhwZWN0ZWQu
dHh0IHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwNy1l
eHBlY3RlZC50eHQKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAw
Ny1leHBlY3RlZC50eHQJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdl
YmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwNy1leHBlY3Rl
ZC50eHQJMjAwNS0wNy0yNSAxNzo1NToyOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSw4IEBA
CitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNp
emUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtI
VE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4
KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgx
OCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6
ZSAzOTl4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTk6ICJUaGlzIHRl
eHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIGF0IG1vc3QgODAwcHggeCA2MDBweC4i
CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29y
ZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMDcuaHRtbCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29y
ZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMDcuaHRtbAotLS0gd2Via2l0L1dlYkNvcmUvbGF5
b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA3Lmh0bWwJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAw
MDAgKzAyMDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21l
ZGlhLzAwNy5odG1sCTIwMDUtMDctMjIgMDk6MTI6NDMuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAg
KzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDog
c2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgYW5kIChtYXgtaGVpZ2h0OjYwMHB4KTwvdGl0
bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1t
ZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7Cisg
IGNvbG9yOiByZWQ7Cit9CitAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgYW5k
IChtYXgtaGVpZ2h0OjYwMHB4KXsKKyAgIHAgeworICAgICBjb2xvcjogZ3JlZW47CisgIH0KK30K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVu
IGlmIHZpZXdwb3J0IGlzIGF0IG1vc3QgODAwcHggeCA2MDBweC48L3A+Cis8L2JvZHk+Cis8L2h0
bWw+CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2Vi
Q29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMDgtZXhwZWN0ZWQudHh0IHdlYmtpdC1tb2Rp
ZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwOC1leHBlY3RlZC50eHQKLS0t
IHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwOC1leHBlY3RlZC50eHQJ
MTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtpdC1tb2RpZmllZC9X
ZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwOC1leHBlY3RlZC50eHQJMjAwNS0wNy0y
NSAxNzo1NToyOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYK
KyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAw
MF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAzMDh4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMDg6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdy
ZWVuIGlmIGNvbG9yIGRpc3BsYXkgaXMgdXNlZC4iCmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMq
JyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8w
MDguaHRtbCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8w
MDguaHRtbAotLS0gd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA4Lmh0
bWwJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtpdC1tb2RpZmll
ZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwOC5odG1sCTIwMDUtMDctMjIgMTU6
NTA6MzguMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2NyZWVuIGFuZCAoY29sb3IpPC90aXRsZT4g
IAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlh
cXVlcmllcy8jY29sb3IiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsKKyAgY29s
b3I6IHJlZDsKK30KK0BtZWRpYSBzY3JlZW4gYW5kIChjb2xvcikgeworICAgcCB7CisgICAgIGNv
bG9yOiBncmVlbjsKKyAgfQorfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgY29sb3IgZGlzcGxheSBpcyB1c2VkLjwvcD4KKzwvYm9k
eT4KKzwvaHRtbD4KZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdl
YmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAwOS1leHBlY3RlZC50eHQgd2Vi
a2l0LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA5LWV4cGVjdGVk
LnR4dAotLS0gd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA5LWV4cGVj
dGVkLnR4dAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1v
ZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDA5LWV4cGVjdGVkLnR4dAky
MDA1LTA3LTI1IDE3OjU1OjI5LjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDggQEAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xv
cj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDM4MXgx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM4MTogIlRoaXMgdGV4dCBzaG91
bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgd2lkdGggaXMgYXQgbGVhc3QgNjAwcHguIgpkaWZmIC1O
cnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUvbGF5b3V0
LXRlc3RzL2Zhc3QvbWVkaWEvMDA5Lmh0bWwgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0
LXRlc3RzL2Zhc3QvbWVkaWEvMDA5Lmh0bWwKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0
cy9mYXN0L21lZGlhLzAwOS5odG1sCTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAw
CisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMDku
aHRtbAkyMDA1LTA3LTI0IDEyOjA2OjA0LjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDE3IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IGltcG9ydCB3
aXRoIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIDwvdGl0bGU+ICAKKzxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9jYXNjYWRl
Lmh0bWwjYXQtaW1wb3J0IiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9y
OiByZWQ7IH0gCis8L3N0eWxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BpbXBvcnQgdXJs
KGltcG9ydC1wLWdyZWVuLmNzcykgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCk7Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2
aWV3cG9ydCB3aWR0aCBpcyBhdCBsZWFzdCA2MDBweC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9s
YXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTAtZXhwZWN0ZWQudHh0IHdlYmtpdC1tb2RpZmllZC9X
ZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMC1leHBlY3RlZC50eHQKLS0tIHdlYmtp
dC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMC1leHBlY3RlZC50eHQJMTk3MC0w
MS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3Jl
L2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMC1leHBlY3RlZC50eHQJMjAwNS0wNy0yNSAxNzo1
NToyOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAg
ICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAzNzh4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNzg6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlm
IHZpZXdpbmcgZGV2aWNlIGlzIGJpdG1hcCBkZXZpY2UiCmRpZmYgLU5ydXAgLS1leGNsdWRlICdD
VlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRp
YS8wMTAuaHRtbCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRp
YS8wMTAuaHRtbAotLS0gd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDEw
Lmh0bWwJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtpdC1tb2Rp
ZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMC5odG1sCTIwMDUtMDctMjIg
MDk6NDU6MzUuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogaW1wb3J0IHdpdGggc2NyZWVuIGFuZCAo
Z3JpZDogMCkgPC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+
CitAbWVkaWEgc2NyZWVuIGFuZCAoZ3JpZDogMCkgeworcCB7IGNvbG9yOiBncmVlbjsgfQorfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4g
aWYgdmlld2luZyBkZXZpY2UgaXMgYml0bWFwIGRldmljZTwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAt
LWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTEt
ZXhwZWN0ZWQudHh0IHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21l
ZGlhLzAxMS1leHBlY3RlZC50eHQKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0
L21lZGlhLzAxMS1leHBlY3RlZC50eHQJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAy
MDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAx
MS1leHBlY3RlZC50eHQJMjAwNS0wNy0yNSAxNzo1NToyOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAs
MCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBz
aXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMCkgc2l6ZSAzOTl4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTk6
ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdpbmcgZGV2aWNlIGlzIG5vdCBhIGdy
aWQgZGV2aWNlLiIKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdl
YmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMS5odG1sIHdlYmtpdC1tb2Rp
ZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMS5odG1sCi0tLSB3ZWJraXQv
V2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTEuaHRtbAkxOTcwLTAxLTAxIDAyOjAw
OjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRl
c3RzL2Zhc3QvbWVkaWEvMDExLmh0bWwJMjAwNS0wNy0yMiAxMDowNzo0NS4wMDAwMDAwMDAgKzAz
MDAKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBx
dWVyeSB0ZXN0OiBpbXBvcnQgd2l0aCBub3Qgc2NyZWVuIGFuZCAoZ3JpZCkgPC90aXRsZT4gIAor
PGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVl
cmllcy8jZ3JpZCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRpYSBub3Qgc2Ny
ZWVuIGFuZCAoZ3JpZCkgeworcCB7IGNvbG9yOiBncmVlbjsgfQorfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld2luZyBkZXZp
Y2UgaXMgbm90IGEgZ3JpZCBkZXZpY2UuPC9wPgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAn
LionIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMi1leHBlY3RlZC50
eHQgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDEyLWV4
cGVjdGVkLnR4dAotLS0gd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDEy
LWV4cGVjdGVkLnR4dAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Vi
a2l0LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDEyLWV4cGVjdGVk
LnR4dAkyMDA1LTA3LTI1IDE3OjU1OjI5LjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDE0IEBA
CitsYXllciBhdCAoMCwwKSBzaXplIDk2OHg1ODUKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNp
emUgODAweDU4NQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA5Njh4NTg1CisgIFJlbmRlckJsb2NrIHtI
VE1MfSBhdCAoMCwwKSBzaXplIDgwMHg1ODUKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4
KSBzaXplIDc4NHg1NjkKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgx
OCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6
ZSAzODF4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzODE6ICJUaGlzIHRl
eHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIG5hcnJvd2VyIHRoYW4gNjBlbS4iCisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA5NjB4MTggW2JnY29sb3I9I0FE
RDhFNl0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxMjN4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjM6ICJkaXYgb2YgbGVuZ3RoIDYwIGVt
IgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTIpIHNpemUgODAweDE4IFtiZ2NvbG9y
PSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTI0eDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI0OiAiZGl2IG9mIGxlbmd0aCA4
MDBweCIKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9X
ZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMi5odG1sIHdlYmtpdC1tb2RpZmllZC9X
ZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMi5odG1sCi0tLSB3ZWJraXQvV2ViQ29y
ZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTIuaHRtbAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAw
MDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zh
c3QvbWVkaWEvMDEyLmh0bWwJMjAwNS0wNy0yMiAxMjoxMDozNS4wMDAwMDAwMDAgKzAzMDAKQEAg
LTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0
ZXN0OiByZWxhdGl2ZSBjb25zdHJhaW50cyB0ZXN0IHVzaW5nIHNjcmVlbiBhbmQgKG1heC13aWR0
aDogNjBlbSk8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMu
b3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KK3AgeworICBjb2xvcjogcmVkOworfQorQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0
aDogNjBlbSkgeworICAgcCB7CisgICAgIGNvbG9yOiBncmVlbjsKKyAgfQorfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorCis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3
cG9ydCBpcyBuYXJyb3dlciB0aGFuIDYwZW0uICA8L3A+CisKKzxkaXYgc3R5bGU9IndpZHRoOiA2
MGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCA2MCBlbSA8
L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOiA4MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRi
bHVlOyI+IGRpdiBvZiBsZW5ndGggODAwcHggPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlv
dXQtdGVzdHMvZmFzdC9tZWRpYS8wMTMtZXhwZWN0ZWQudHh0IHdlYmtpdC1tb2RpZmllZC9XZWJD
b3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMy1leHBlY3RlZC50eHQKLS0tIHdlYmtpdC9X
ZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMy1leHBlY3RlZC50eHQJMTk3MC0wMS0w
MSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xh
eW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMy1leHBlY3RlZC50eHQJMjAwNS0wNy0yNSAxNzo1NToy
OS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSwxNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDh4NTg1CisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg1ODUKK2xheWVyIGF0ICgw
LDApIHNpemUgODA4eDU4NQorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4
NTg1CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTY5CisgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAg
ICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMzYweDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMzYwOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2
aWV3cG9ydCBpcyB3aWRlciB0aGFuIDMwZW0uIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsMzQpIHNpemUgNDgweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDApIHNpemUgMTIzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTIzOiAiZGl2IG9mIGxlbmd0aCAzMCBlbSIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDUyKSBzaXplIDgwMHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5kZXJU
ZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDEyNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDEyNDogImRpdiBvZiBsZW5ndGggODAwcHgiCmRpZmYgLU5ydXAgLS1leGNsdWRl
ICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9t
ZWRpYS8wMTMuaHRtbCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9t
ZWRpYS8wMTMuaHRtbAotLS0gd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEv
MDEzLmh0bWwJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtpdC1t
b2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxMy5odG1sCTIwMDUtMDct
MjIgMTI6MTI6MjAuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogcmVsYXRpdmUgY29uc3RyYWludHMg
dGVzdCB1c2luZyBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMwZW0pPC90aXRsZT4gIAorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8j
d2lkdGgiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsKKyAgY29sb3I6IHJlZDsK
K30KK0BtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMwZW0pIHsKKyAgIHAgeworICAgICBj
b2xvcjogZ3JlZW47CisgIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+IFRo
aXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgd2lkZXIgdGhhbiAzMGVtLiAg
PC9wPgorCis8ZGl2IHN0eWxlPSJ3aWR0aDogMzBlbTsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRi
bHVlOyI+IGRpdiBvZiBsZW5ndGggMzAgZW0gPC9kaXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogODAw
cHg7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBkaXYgb2YgbGVuZ3RoIDgwMHB4IDwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNs
dWRlICcuKicgd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDE0LWV4cGVj
dGVkLnR4dCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8w
MTQtZXhwZWN0ZWQudHh0Ci0tLSB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRp
YS8wMTQtZXhwZWN0ZWQudHh0CTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisr
KyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTQtZXhw
ZWN0ZWQudHh0CTIwMDUtMDctMjUgMTc6NTU6MjkuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEs
MTQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgOTY4eDU4NQorICBSZW5kZXJDYW52YXMgYXQgKDAs
MCkgc2l6ZSA4MDB4NTg1CitsYXllciBhdCAoMCwwKSBzaXplIDk2OHg1ODUKKyAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDU4NQorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0
ICg4LDgpIHNpemUgNzg0eDU2OQorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUg
Nzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDcyOHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcyODogIlRo
aXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgbmFycm93ZXIgdGhhbiA2MGVt
LiBUaGlzIHRlc3RzIHRoYXQgKG1pbi13aWR0aDogNjBlbSkgY2FuIGV2YWx1YXRlIHRvIGZhbHNl
LiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDk2MHgxOCBbYmdjb2xv
cj0jQUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDEyM3gx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyMzogImRpdiBvZiBsZW5ndGgg
NjAgZW0iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA4MDB4MTggW2Jn
Y29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAx
MjR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjQ6ICJkaXYgb2YgbGVu
Z3RoIDgwMHB4IgpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Vi
a2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDE0Lmh0bWwgd2Via2l0LW1vZGlm
aWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDE0Lmh0bWwKLS0tIHdlYmtpdC9X
ZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxNC5odG1sCTE5NzAtMDEtMDEgMDI6MDA6
MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVz
dHMvZmFzdC9tZWRpYS8wMTQuaHRtbAkyMDA1LTA3LTIyIDEyOjE2OjM4LjAwMDAwMDAwMCArMDMw
MApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1
ZXJ5IHRlc3Q6IHJlbGF0aXZlIGNvbnN0cmFpbnRzIHRlc3QgdXNpbmcgc2NyZWVuIGFuZCAobWlu
LXdpZHRoOiA2MGVtKTwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3
dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorCis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPgorcCB7CisgIGNvbG9yOiBncmVlbjsKK30KK0BtZWRpYSBzY3JlZW4gYW5kICht
aW4td2lkdGg6IDYwZW0pIHsKKyAgIHAgeworICAgICBjb2xvcjogcmVkOworICB9Cit9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlm
IHZpZXdwb3J0IGlzIG5hcnJvd2VyIHRoYW4gNjBlbS4gVGhpcyB0ZXN0cyB0aGF0IChtaW4td2lk
dGg6IDYwZW0pIGNhbiBldmFsdWF0ZSB0byBmYWxzZS48L3A+CisKKzxkaXYgc3R5bGU9IndpZHRo
OiA2MGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCA2MCBl
bSA8L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOiA4MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbGln
aHRibHVlOyI+IGRpdiBvZiBsZW5ndGggODAwcHggPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9s
YXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTUtZXhwZWN0ZWQudHh0IHdlYmtpdC1tb2RpZmllZC9X
ZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxNS1leHBlY3RlZC50eHQKLS0tIHdlYmtp
dC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxNS1leHBlY3RlZC50eHQJMTk3MC0w
MS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3Jl
L2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxNS1leHBlY3RlZC50eHQJMjAwNS0wNy0yNSAxNzo1
NToyOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSwxNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDh4NTg1CisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg1ODUKK2xheWVyIGF0
ICgwLDApIHNpemUgODA4eDU4NQorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4
MDB4NTg1CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTY5CisgICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisg
ICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzEweDE4CisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzEwOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBp
ZiB2aWV3cG9ydCBpcyB3aWRlciB0aGFuIDMwZW0uIFRoaXMgdGVzdHMgdGhhdCAobWF4LXdpZHRo
OiAzMGVtKSBjYW4gZXZhbHVhdGUgdG8gZmFsc2UuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDAsMzQpIHNpemUgNDgweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTIzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTIzOiAiZGl2IG9mIGxlbmd0aCAzMCBlbSIKKyAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDUyKSBzaXplIDgwMHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDEyNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDEyNDogImRpdiBvZiBsZW5ndGggODAwcHgiCmRpZmYgLU5ydXAgLS1leGNs
dWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFz
dC9tZWRpYS8wMTUuaHRtbCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFz
dC9tZWRpYS8wMTUuaHRtbAotLS0gd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVk
aWEvMDE1Lmh0bWwJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtp
dC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxNS5odG1sCTIwMDUt
MDctMjIgMTI6MTc6MTIuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMjQgQEAKKzxodG1sPgor
PGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogcmVsYXRpdmUgY29uc3RyYWlu
dHMgdGVzdCB1c2luZyBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDMwZW0pPC90aXRsZT4gIAorPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmll
cy8jd2lkdGgiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsKKyAgY29sb3I6IGdy
ZWVuOworfQorQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogMzBlbSkgeworICAgcCB7Cisg
ICAgIGNvbG9yOiByZWQ7CisgIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+
IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgd2lkZXIgdGhhbiAzMGVt
LiBUaGlzIHRlc3RzIHRoYXQgKG1heC13aWR0aDogMzBlbSkgY2FuIGV2YWx1YXRlIHRvIGZhbHNl
LiA8L3A+CisKKzxkaXYgc3R5bGU9IndpZHRoOiAzMGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdo
dGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCAzMCBlbSA8L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOiA4
MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBsZW5ndGggODAwcHgg
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4
Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTYtZXhw
ZWN0ZWQudHh0IHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlh
LzAxNi1leHBlY3RlZC50eHQKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21l
ZGlhLzAxNi1leHBlY3RlZC50eHQJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAK
KysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxNi1l
eHBlY3RlZC50eHQJMjAwNS0wNy0yNSAxNzo1NToyOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCAr
MSwxOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjA4CisgIFJlbmRlckNhbnZhcyBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0g
YXQgKDgsOCkgc2l6ZSA3ODR4NTg0CisgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDAp
IHNpemUgMzE1eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBh
dCAoMjM5LDApIHNpemUgMzE1eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDIzOSwwKSB3aWR0
aCAzMTU6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGhlaWdodCBpcyBhdGxlYXN0IDMw
ZXggLiIKKyAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBS
ZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgwLDApIHNpemUgMTE1eDIyOSBbYmdjb2xv
cj0jQUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDExNXgx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDExNTogImRpdiBvZiBoZWlnaHQg
MzBleCIKKyAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBS
ZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9IGF0ICgxMTUsMCkgc2l6ZSAxMjR4NjAwIFtiZ2Nv
bG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTI0
eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI0OiAiZGl2IG9mIGhlaWdo
dCA2MDBweCIKKyAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMHgwCisgICAg
ICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MApkaWZmIC1OcnVwIC0tZXhjbHVk
ZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3Qv
bWVkaWEvMDE2Lmh0bWwgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3Qv
bWVkaWEvMDE2Lmh0bWwKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlh
LzAxNi5odG1sCTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQt
bW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTYuaHRtbAkyMDA1LTA3
LTIyIDEyOjI1OjA2LjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHJlbGF0aXZlIGNvbnN0cmFpbnRz
IHRlc3QgdXNpbmcgc2NyZWVuIGFuZCAobWluLWhlaWdodDogMzBleCk8L3RpdGxlPiAgCis8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVz
LyN3aWR0aCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3NwYW4geworICBjb2xvcjog
cmVkOworfQorQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1oZWlnaHQ6IDMwZXgpIHsKKyAgIHNwYW4g
eworICAgICBjb2xvcjogZ3JlZW47CisgIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KworPHNwYW4+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgaGVpZ2h0IGlzIGF0bGVhc3Qg
MzBleCAuPC9zcGFuPgorCis8ZGl2IHN0eWxlPSJibG9jazppbmxpbmU7IGZsb2F0OmxlZnQ7IGhl
aWdodDogMzBleDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBoZWlnaHQg
MzBleCA8L2Rpdj4KKzxkaXYgc3R5bGU9ImJsb2NrOmlubGluZTsgZmxvYXQ6bGVmdDsgaGVpZ2h0
OiA2MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBoZWlnaHQgNjAw
cHggPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAt
LWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTct
ZXhwZWN0ZWQudHh0IHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21l
ZGlhLzAxNy1leHBlY3RlZC50eHQKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0
L21lZGlhLzAxNy1leHBlY3RlZC50eHQJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAy
MDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAx
Ny1leHBlY3RlZC50eHQJMjAwNS0wNy0yNSAxNzo1NToyOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAs
MCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBz
aXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMCkgc2l6ZSAzMTd4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMTc6
ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIG9uIGJpdG1hcCBjb2xvciBkZXZpY2VzLiIKZGlm
ZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2xh
eW91dC10ZXN0cy9mYXN0L21lZGlhLzAxNy5odG1sIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xh
eW91dC10ZXN0cy9mYXN0L21lZGlhLzAxNy5odG1sCi0tLSB3ZWJraXQvV2ViQ29yZS9sYXlvdXQt
dGVzdHMvZmFzdC9tZWRpYS8wMTcuaHRtbAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCAr
MDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEv
MDE3Lmh0bWwJMjAwNS0wNy0yNCAxMzo1MDo0NC4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSwx
NiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzY3Jl
ZW4gYW5kIChjb2xvcikgYW5kIChncmlkOjApIHNob3VsZCBldmFsdWF0ZSB0cnVlPC90aXRsZT4g
IAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlh
cXVlcmllcy8jc3ludGF4IiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3Jl
ZW4gYW5kIChjb2xvcikgYW5kIChncmlkOjApIj4KKyBwIHsKKyAgY29sb3I6IGdyZWVuOworIH0K
Kzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3Jl
ZW4gb24gYml0bWFwIGNvbG9yIGRldmljZXMuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC1O
cnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUvbGF5b3V0
LXRlc3RzL2Zhc3QvbWVkaWEvMDE4LWV4cGVjdGVkLnR4dCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29y
ZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTgtZXhwZWN0ZWQudHh0Ci0tLSB3ZWJraXQvV2Vi
Q29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTgtZXhwZWN0ZWQudHh0CTE5NzAtMDEtMDEg
MDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlv
dXQtdGVzdHMvZmFzdC9tZWRpYS8wMTgtZXhwZWN0ZWQudHh0CTIwMDUtMDctMjUgMTc6NTU6Mjku
MDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCmRpZmYg
LU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlv
dXQtdGVzdHMvZmFzdC9tZWRpYS8wMTguaHRtbCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlv
dXQtdGVzdHMvZmFzdC9tZWRpYS8wMTguaHRtbAotLS0gd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRl
c3RzL2Zhc3QvbWVkaWEvMDE4Lmh0bWwJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAy
MDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAx
OC5odG1sCTIwMDUtMDctMjQgMTM6NTI6MTMuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMTgg
QEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogbm90IGJy
YWlsbGU8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
L1RSL2NzczMtbWVkaWFxdWVyaWVzLyIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0Bt
ZWRpYSBub3QgYnJhaWxsZSB7IAorIHAgeworICBjb2xvcjogZ3JlZW47CisgfQorfQorPC9zdHls
ZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+
Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC1OcnVw
IC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRl
c3RzL2Zhc3QvbWVkaWEvMDE5LWV4cGVjdGVkLnR4dCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9s
YXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTktZXhwZWN0ZWQudHh0Ci0tLSB3ZWJraXQvV2ViQ29y
ZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTktZXhwZWN0ZWQudHh0CTE5NzAtMDEtMDEgMDI6
MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQt
dGVzdHMvZmFzdC9tZWRpYS8wMTktZXhwZWN0ZWQudHh0CTIwMDUtMDctMjUgMTc6NTU6MjkuMDAw
MDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAor
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgNjEweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
NjEwOiAiVGhlIHRleHQgYmVsb3cgc2hvdWxkIGJlIGdyZWVuIGFuZCBjb250YWluIFwiYnJhaWxs
ZSwgbWVkaWEsIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6IDApLCB0dHlcIi4iCisgICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQor
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDMxMngxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMxMjogImJyYWlsbGUsIG1lZGlhLCBzY3JlZW4gYW5k
IChjb2xvcikgYW5kIChncmlkOiAwKSwgdHR5IgpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicg
LS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDE5
Lmh0bWwgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDE5
Lmh0bWwKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAxOS5odG1s
CTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQv
V2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMTkuaHRtbAkyMDA1LTA3LTIyIDE3OjI1
OjAwLjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHN0eWxlc2hlZXQgbWVkaWEubWVkaWFUZXh0IHBy
b3BlcnR5IGluc3BlY3Rpb248L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+CisKKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImJyYWlsbGUsIG1lZGlhIHdpdGggZXJyb3IsIHNjcmVlbiBh
bmQgKGNvbG9yKSBhbmQgKGdyaWQ6MCksIHR0eSByZXNvbHV0aW9uID4gNjAwcHgiPgorI3Jlc3Vs
dCB7CisgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+CisKKzxzY3JpcHQgbGFuZ3VhZ2U9Imph
dmFzY3JpcHQiPgorZnVuY3Rpb24gdGVzdCgpIHsKKyAgICByZSA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJyZXN1bHQiKTsKKyAgICByZS5pbm5lckhUTUwgPSAic3RhcnRlZCI7CisgICAgcmUu
aW5uZXJIVE1MID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWEubWVkaWFUZXh0OworfQor
PC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPiBUaGUgdGV4
dCBiZWxvdyBzaG91bGQgYmUgZ3JlZW4gYW5kIGNvbnRhaW4gImJyYWlsbGUsIG1lZGlhLCBzY3Jl
ZW4gYW5kIChjb2xvcikgYW5kIChncmlkOiAwKSwgdHR5Ii4gPC9wPgorPHAgaWQ9InJlc3VsdCI+
dGVzdCBub3QgcnVuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC1OcnVwIC0tZXhjbHVkZSAn
Q1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVk
aWEvMDIwLWV4cGVjdGVkLnR4dCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMv
ZmFzdC9tZWRpYS8wMjAtZXhwZWN0ZWQudHh0Ci0tLSB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVz
dHMvZmFzdC9tZWRpYS8wMjAtZXhwZWN0ZWQudHh0CTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAw
MDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9t
ZWRpYS8wMjAtZXhwZWN0ZWQudHh0CTIwMDUtMDctMjUgMTc6NTU6MjkuMDAwMDAwMDAwICswMzAw
CkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJD
YW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJv
ZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNp
emUgNjEweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNjEwOiAiVGhlIHRl
eHQgYmVsb3cgc2hvdWxkIGJlIGdyZWVuIGFuZCBjb250YWluIFwiYnJhaWxsZSwgbWVkaWEsIHNj
cmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6IDApLCB0dHlcIi4iCisgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDMxMngxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDMxMjogImJyYWlsbGUsIG1lZGlhLCBzY3JlZW4gYW5kIChjb2xvcikgYW5k
IChncmlkOiAwKSwgdHR5IgpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcu
Kicgd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDIwLmh0bWwgd2Via2l0
LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDIwLmh0bWwKLS0tIHdl
YmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAyMC5odG1sCTE5NzAtMDEtMDEg
MDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlv
dXQtdGVzdHMvZmFzdC9tZWRpYS8wMjAuaHRtbAkyMDA1LTA3LTI0IDEyOjI4OjQ2LjAwMDAwMDAw
MCArMDMwMApAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1l
ZGlhIHF1ZXJ5IHRlc3Q6IHN0eWxlc2hlZXQgbWVkaWEubWVkaWFUZXh0IHByb3BlcnR5IGluc3Bl
Y3Rpb24gc2hvdWxkIHdvcms8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+Cis8bGluayByZWw9
ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLVN0eWxlL3N0eWxl
c2hlZXRzLmh0bWwiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImJyYWlsbGUs
IG1lZGlhIHdpdGggZXJyb3IsIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6MCksIHR0eSBy
ZXNvbHV0aW9uID4gNjAwcHgiPgorI3Jlc3VsdCB7CisgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5
bGU+CisKKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorZnVuY3Rpb24gdGVzdCgpIHsK
KyAgICByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICByZS5pbm5l
ckhUTUwgPSAic3RhcnRlZCI7CisgICAgcmUuaW5uZXJIVE1MID0gZG9jdW1lbnQuc3R5bGVTaGVl
dHNbMF0ubWVkaWEuaXRlbSgwKSAKKyAgICAgICAgICAgICAgICAgICAgKyAiLCAiICsgZG9jdW1l
bnQuc3R5bGVTaGVldHNbMF0ubWVkaWEuaXRlbSgxKSAKKyAgICAgICAgICAgICAgICAgICAgKyAi
LCAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWEuaXRlbSgyKSAKKyAgICAgICAgICAg
ICAgICAgICAgKyAiLCAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWEuaXRlbSgzKSA7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorfQorPC9zY3JpcHQ+CisK
KzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPiBUaGUgdGV4dCBiZWxvdyBzaG91
bGQgYmUgZ3JlZW4gYW5kIGNvbnRhaW4gImJyYWlsbGUsIG1lZGlhLCBzY3JlZW4gYW5kIChjb2xv
cikgYW5kIChncmlkOiAwKSwgdHR5Ii4gPC9wPgorPHAgaWQ9InJlc3VsdCI+dGVzdCBub3QgcnVu
PC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNs
dWRlICcuKicgd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDIxLWV4cGVj
dGVkLnR4dCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8w
MjEtZXhwZWN0ZWQudHh0Ci0tLSB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRp
YS8wMjEtZXhwZWN0ZWQudHh0CTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisr
KyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMjEtZXhw
ZWN0ZWQudHh0CTIwMDUtMDctMjUgMTc6NTU6MjkuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEs
MTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0
ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUg
Nzg0eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNTYweDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTYwOiAiVGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbiBhbmQgYmVsb3cgc2hvdWxkIHJlYWQgXCJicmFpbGxlLCBub3Qgc2NyZWVuLCBzY3Jl
ZW4gYW5kIChjb2xvcilcIi4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNpemUg
Nzg0eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMjMyeDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjMyOiAiYnJhaWxsZSwgbm90IHNjcmVl
biwgc2NyZWVuIGFuZCAoY29sb3IpIgpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNs
dWRlICcuKicgd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDIxLmh0bWwg
d2Via2l0LW1vZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDIxLmh0bWwK
LS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAyMS5odG1sCTE5NzAt
MDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29y
ZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMjEuaHRtbAkyMDA1LTA3LTI0IDEyOjI4OjI2LjAw
MDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDM1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBD
U1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHN0eWxlc2hlZXQgbWVkaWEgYXBwZW5kTWVkaXVtIHNob3Vs
ZCB3b3JrPC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9y
Zy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMi1TdHlsZS9zdHlsZXNoZWV0cy5odG1s
IiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYnJhaWxsZSwgbm90IHNjcmVlbiI+
CitwIHsKKyAgY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKworPHNjcmlwdCBsYW5ndWFnZT0i
amF2YXNjcmlwdCI+CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciByZSA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICB2YXIgbWVkaWEgPSBkb2N1bWVudC5zdHlsZVNo
ZWV0c1swXS5tZWRpYTsKKyAgICBtZWRpYS5hcHBlbmRNZWRpdW0oInNjcmVlbiBhbmQgKGNvbG9y
KSIpOworICAgIHZhciBmaXJzdCA9IHRydWU7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZWRp
YS5sZW5ndGg7ICsraSkgeyAgICAgICAgCisgICAgICAgIGlmICghZmlyc3QpICByZS5pbm5lckhU
TUwgKz0gIiwgIiArIG1lZGlhLml0ZW0oaSk7CisgICAgICAgIGVsc2UgcmUuaW5uZXJIVE1MID0g
bWVkaWEuaXRlbShpKTsKKyAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICB9CisKK30KKzwvc2Ny
aXB0PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8IS0tIFhYWDogTk9URSEg
VGhpcyB3aWxsIGZhaWwgdW50aWwgZHluYW1pYyBzZXR0aW5nIG9mIG1lZGlhIHByb3BlcnR5IGNh
dXNlcyBzdHlsZSByZWNhbGN1bGF0aW9uLgorICAgICAgICAgIFRoaXMgaXMgbm90IHRoZSBjYXNl
IGN1cnJlbnRseSAoMjQuMDcuMjAwNSkKKy0tPgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3Jl
ZW4gYW5kIGJlbG93IHNob3VsZCByZWFkICJicmFpbGxlLCBub3Qgc2NyZWVuLCBzY3JlZW4gYW5k
IChjb2xvcikiLiA8L3A+Cis8cCBpZD0icmVzdWx0Ij50ZXN0IG5vdCBydW48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJr
aXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMjItZXhwZWN0ZWQudHh0IHdlYmtp
dC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAyMi1leHBlY3RlZC50
eHQKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAyMi1leHBlY3Rl
ZC50eHQJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtpdC1tb2Rp
ZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAyMi1leHBlY3RlZC50eHQJMjAw
NS0wNy0yNSAxNzo1NToyOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSwxMSBAQAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSA0NDV4MTgKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCA0NDU6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGFuZCBi
ZWxvdyBzaG91bGQgcmVhZCBcIm1lZGlhIGxpc3QgaXMgZW1wdHlcIi4iCisgICAgICBSZW5kZXJC
bG9jayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9
IGF0ICgwLDApIHNpemUgMTE3eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MTE3OiAibWVkaWEgbGlzdCBpcyBlbXB0eSIKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0t
ZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAyMi5o
dG1sIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAyMi5o
dG1sCi0tLSB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMjIuaHRtbAkx
OTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dl
YkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDIyLmh0bWwJMjAwNS0wNy0yNCAxMjoyNzoy
My4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzdHlsZXNoZWV0IG1lZGlhIGRlbGV0ZU1lZGl1bSBz
aG91bGQgd29yazwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53
My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMi1TdHlsZS9zdHlsZXNoZWV0cy5odG1sIiAv
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYnJhaWxsZSwgbm90IHNjcmVlbiI+Citw
IHsKKyAgY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKworPHNjcmlwdCBsYW5ndWFnZT0iamF2
YXNjcmlwdCI+CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciByZSA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICB2YXIgbWVkaWEgPSBkb2N1bWVudC5zdHlsZVNoZWV0
c1swXS5tZWRpYTsKKyAgICBtZWRpYS5hcHBlbmRNZWRpdW0oInNjcmVlbiBhbmQgKGNvbG9yKSIp
OworICAgIHdoaWxlIChtZWRpYS5sZW5ndGgpIHsKKyAgICAgICAgbWVkaWEuZGVsZXRlTWVkaXVt
KG1lZGlhLml0ZW0oMCkpOworICAgIH0KKyAgICByZS5pbm5lckhUTUwgPSAibWVkaWEgbGlzdCBp
cyBlbXB0eSIKKyAgICB2YXIgZmlyc3QgPSB0cnVlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bWVkaWEubGVuZ3RoOyArK2kpIHsgICAgICAgIAorICAgICAgICBpZiAoIWZpcnN0KSAgcmUuaW5u
ZXJIVE1MICs9ICIsICIgKyBtZWRpYS5pdGVtKGkpOworICAgICAgICBlbHNlIHJlLmlubmVySFRN
TCA9IG1lZGlhLml0ZW0oaSk7CisgICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgfQorfQorPC9z
Y3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzwhLS0gWFhYOiBOT1RF
ISBUaGlzIHdpbGwgZmFpbCB1bnRpbCBkeW5hbWljIHNldHRpbmcgb2YgbWVkaWEgcHJvcGVydHkg
Y2F1c2VzIHN0eWxlIHJlY2FsY3VsYXRpb24uCisgICAgICAgICAgVGhpcyBpcyBub3QgdGhlIGNh
c2UgY3VycmVudGx5ICgyNC4wNy4yMDA1KQorLS0+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBn
cmVlbiBhbmQgYmVsb3cgc2hvdWxkIHJlYWQgIm1lZGlhIGxpc3QgaXMgZW1wdHkiLiAgPC9wPgor
PHAgaWQ9InJlc3VsdCI+dGVzdCBub3QgcnVuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC1O
cnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUvbGF5b3V0
LXRlc3RzL2Zhc3QvbWVkaWEvMDIzLWV4cGVjdGVkLnR4dCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29y
ZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMjMtZXhwZWN0ZWQudHh0Ci0tLSB3ZWJraXQvV2Vi
Q29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMjMtZXhwZWN0ZWQudHh0CTE5NzAtMDEtMDEg
MDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlv
dXQtdGVzdHMvZmFzdC9tZWRpYS8wMjMtZXhwZWN0ZWQudHh0CTIwMDUtMDctMjUgMTc6NTU6Mjku
MDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCmRpZmYg
LU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlv
dXQtdGVzdHMvZmFzdC9tZWRpYS8wMjMuaHRtbCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9sYXlv
dXQtdGVzdHMvZmFzdC9tZWRpYS8wMjMuaHRtbAotLS0gd2Via2l0L1dlYkNvcmUvbGF5b3V0LXRl
c3RzL2Zhc3QvbWVkaWEvMDIzLmh0bWwJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAy
MDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAy
My5odG1sCTIwMDUtMDctMjQgMTI6MjU6NTUuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMTYg
QEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogbWVkaWEg
bm90IGJyYWlsbGUgc2hvdWxkIGV2YWwgdHJ1ZTwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorCis8c3R5
bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJub3QgYnJhaWxsZSI+CitwIHsKKyAgY29sb3I6IGdy
ZWVuOworfQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3Vs
ZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLU5ydXAgLS1leGNsdWRlICdD
VlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRp
YS8wMjQtZXhwZWN0ZWQudHh0IHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9m
YXN0L21lZGlhLzAyNC1leHBlY3RlZC50eHQKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0
cy9mYXN0L21lZGlhLzAyNC1leHBlY3RlZC50eHQJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAw
MDAgKzAyMDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21l
ZGlhLzAyNC1leHBlY3RlZC50eHQJMjAwNS0wNy0yNSAxNzo1NToyOS4wMDAwMDAwMDAgKzAzMDAK
QEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2Fu
dmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUg
J0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21l
ZGlhLzAyNC5odG1sIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21l
ZGlhLzAyNC5odG1sCi0tLSB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8w
MjQuaHRtbAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1v
ZGlmaWVkL1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDI0Lmh0bWwJMjAwNS0wNy0y
NCAxMjoyODoyOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSwyMiBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBtZWRpYSBub3Qgc2NyZWVuIHNob3Vs
ZCBldmFsIGZhbHNlIDwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3
dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPgorcCB7CisgICAgY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKworPHN0eWxlIHR5cGU9
InRleHQvY3NzIiBtZWRpYT0ibm90IHNjcmVlbiI+CitwIHsKKyAgICBjb2xvcjogcmVkOworfQor
PC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
bi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4
Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMjUtZXhw
ZWN0ZWQudHh0IHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlh
LzAyNS1leHBlY3RlZC50eHQKLS0tIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21l
ZGlhLzAyNS1leHBlY3RlZC50eHQJMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAK
KysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAyNS1l
eHBlY3RlZC50eHQJMjAwNS0wNy0yNSAxNzo1NTozMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCAr
MSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXpl
IDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAs
MCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJU
aGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0t
ZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAyNS5o
dG1sIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhLzAyNS5o
dG1sCi0tLSB3ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS8wMjUuaHRtbAkx
OTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dl
YkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvMDI1Lmh0bWwJMjAwNS0wNy0yNCAxMzo0Njow
Mi4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSwyMyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBtZWRpYSBhbGwgYW5kIGludmFsaWQgc2hvdWxkIGV2
YWwgZmFsc2UgPC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+
CitwIHsKKyAgICBjb2xvcjogZ3JlZW47Cit9CisKK0BtZWRpYSBhbGwgYW5kIGludmFsaWQgewor
cCB7CisgICAgY29sb3I6IHJlZDsKK30KK30KKzwvc3R5bGU+CisKKworPC9oZWFkPgorPGJvZHk+
Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CmRp
ZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9s
YXlvdXQtdGVzdHMvZmFzdC9tZWRpYS9pbXBvcnQtcC1ncmVlbi5jc3Mgd2Via2l0LW1vZGlmaWVk
L1dlYkNvcmUvbGF5b3V0LXRlc3RzL2Zhc3QvbWVkaWEvaW1wb3J0LXAtZ3JlZW4uY3NzCi0tLSB3
ZWJraXQvV2ViQ29yZS9sYXlvdXQtdGVzdHMvZmFzdC9tZWRpYS9pbXBvcnQtcC1ncmVlbi5jc3MJ
MTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAKKysrIHdlYmtpdC1tb2RpZmllZC9X
ZWJDb3JlL2xheW91dC10ZXN0cy9mYXN0L21lZGlhL2ltcG9ydC1wLWdyZWVuLmNzcwkyMDA1LTA3
LTIyIDA5OjMwOjExLjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDMgQEAKK3AgeworIGNvbG9y
OiBncmVlbjsKK30K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>3082</attachid>
            <date>2005-07-25 08:40:33 -0700</date>
            <delta_ts>2006-02-04 21:38:36 -0800</delta_ts>
            <desc>Initial implementation of CSS Media Queries (contains ForwardingHeaders and xcodeproj also)</desc>
            <filename>webcore-mediaquery.patch</filename>
            <type>text/plain</type>
            <size>70034</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">ZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3Jl
L2todG1sL2Nzcy9jc3NfbWVkaWFxdWVyeWV2YWwuY3BwIHdlYmtpdC1tb2RpZmllZC9XZWJDb3Jl
L2todG1sL2Nzcy9jc3NfbWVkaWFxdWVyeWV2YWwuY3BwCi0tLSB3ZWJraXQvV2ViQ29yZS9raHRt
bC9jc3MvY3NzX21lZGlhcXVlcnlldmFsLmNwcAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAw
MCArMDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc19tZWRpYXF1
ZXJ5ZXZhbC5jcHAJMjAwNS0wNy0yNCAxMjo1MTowNy4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCAr
MSwzMzcgQEAKKyNpbmNsdWRlICJjc3MvY3NzX21lZGlhcXVlcnlldmFsLmgiCisjaW5jbHVkZSAi
Y3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oIgorI2luY2x1ZGUgImNzcy9jc3NtZWRpYWZlYXR1cmVz
LmgiCisjaW5jbHVkZSAiY3NzL2Nzc192YWx1ZWltcGwuaCIKKyNpbmNsdWRlICJyZW5kZXJpbmcv
cmVuZGVyX3N0eWxlLmgiCisKKyNpbmNsdWRlICJraHRtbHZpZXcuaCIKKyNpbmNsdWRlIDxxYXBw
bGljYXRpb24uaD4KKyNpbmNsdWRlIDxxcGFpbnRkZXZpY2VtZXRyaWNzLmg+CisKK3VzaW5nIG5h
bWVzcGFjZSBraHRtbDsKK3VzaW5nIG5hbWVzcGFjZSBET007CisKK01lZGlhUXVlcnlFdmFsdWF0
b3I6OiBNZWRpYVF1ZXJ5RXZhbHVhdG9yKGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0KQorICAgIDpt
X3ZpZXcoMCkKKyAgICAsbV9wYWludE1ldHJpY3MoMCkKKyAgICAsbV9zdHlsZSgwKQorICAgICxt
X2V4cFJlc3VsdChtZWRpYUZlYXR1cmVSZXN1bHQpCit7Cit9CisKK01lZGlhUXVlcnlFdmFsdWF0
b3I6OiBNZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFFTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBl
LCBib29sIG1lZGlhRmVhdHVyZVJlc3VsdCkKKyAgICA6bV9tZWRpYVR5cGUoYWNjZXB0ZWRNZWRp
YVR5cGUpCisgICAgLG1fdmlldygwKQorICAgICxtX3BhaW50TWV0cmljcygwKQorICAgICxtX3N0
eWxlKDApCisgICAgLG1fZXhwUmVzdWx0KG1lZGlhRmVhdHVyZVJlc3VsdCkKK3sKK30KKworTWVk
aWFRdWVyeUV2YWx1YXRvcjo6IE1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgUVN0cmluZyYgYWNj
ZXB0ZWRNZWRpYVR5cGUsIEtIVE1MVmlldyogdmlldywgUVBhaW50RGV2aWNlTWV0cmljcyogbWV0
cmljcywgUmVuZGVyU3R5bGUqIHN0eWxlKQorICAgIDptX21lZGlhVHlwZShhY2NlcHRlZE1lZGlh
VHlwZS5sb3dlcigpKQorICAgICxtX3ZpZXcodmlldykKKyAgICAsbV9wYWludE1ldHJpY3MobWV0
cmljcykKKyAgICAsbV9zdHlsZShzdHlsZSkKKyAgICAsbV9leHBSZXN1bHQoZmFsc2UpIC8vIGRv
ZXNuJ3QgbWF0dGVyCit7Cit9CisKK01lZGlhUXVlcnlFdmFsdWF0b3I6On5NZWRpYVF1ZXJ5RXZh
bHVhdG9yKCkKK3sKK30KKworYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjptZWRpYVR5cGVNYXRj
aChjb25zdCBRU3RyaW5nJiBtZWRpYVR5cGVUb01hdGNoKSBjb25zdAoreworICAgIHJldHVybiBt
ZWRpYVR5cGVUb01hdGNoLmlzTnVsbCgpCisgICAgfHwgbWVkaWFUeXBlVG9NYXRjaC5pc0VtcHR5
KCkKKyAgICB8fCAobWVkaWFUeXBlVG9NYXRjaC5zdGFydHNXaXRoKCJhbGwiLCBmYWxzZSkgJiYg
bWVkaWFUeXBlVG9NYXRjaC5sZW5ndGgoKSA9PSAzKQorICAgIHx8IG1lZGlhVHlwZVRvTWF0Y2gu
bG93ZXIoKSA9PSBtX21lZGlhVHlwZTsKK30KKworc3RhdGljIGJvb2wgYXBwbHlSZXN0cmljdG9y
KE1lZGlhUXVlcnlJbXBsOjpSZXN0cmljdG9yIHIsIGJvb2wgdmFsdWUpCit7CisgICAgcmV0dXJu
IHIgPT0gTWVkaWFRdWVyeUltcGw6Ok5vdCA/ICF2YWx1ZSA6IHZhbHVlOworfQorCitib29sIE1l
ZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWwoY29uc3QgTWVkaWFMaXN0SW1wbCogbWVkaWFMaXN0KSBj
b25zdAoreworICAgIGlmICghbWVkaWFMaXN0KQorCQlyZXR1cm4gdHJ1ZTsKKworICAgIFFQdHJM
aXN0SXRlcmF0b3I8TWVkaWFRdWVyeUltcGw+IGl0KCptZWRpYUxpc3QtPm1lZGlhUXVlcmllcygp
LT5saXN0KCkpOworICAgIGlmICghaXQuY3VycmVudCgpKQorICAgIAlyZXR1cm4gdHJ1ZTsgLy8g
ZW1wdHkgcXVlcnkgbGlzdCBldmFsdWF0ZXMgdG8gdHJ1ZQorCisgICAgLy8gaXRlcmF0ZSBvdmVy
IHF1ZXJpZXMsIHN0b3AgaWYgYW55IG9mIHRoZW0gZXZhbCB0byB0cnVlIChPUiBzZW1hbnRpY3Mp
CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBmb3IgKE1lZGlhUXVlcnlJbXBsKiBxdWVy
eSA9IGl0LmN1cnJlbnQoKTsgcXVlcnkgJiYgKHJlc3VsdD09ZmFsc2UpOyBxdWVyeSA9ICsraXQp
IHsKKworICAgICAgICBpZiAobWVkaWFUeXBlTWF0Y2gocXVlcnktPm1lZGlhVHlwZSgpKSkgewor
ICAgICAgICAgICAgUVB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5RXhwSW1wbD4gZXhwX2l0KCpx
dWVyeS0+ZXhwcmVzc2lvbnMoKS0+bGlzdCgpKTsKKyAgICAgICAgICAgIC8vIGl0ZXJhdGUgdGhy
b3VnaCBleHByZXNzaW9ucywgc3RvcCBpZiBhbnkgb2YgdGhlbSBldmFsIHRvIGZhbHNlIChBTkQg
c2VtYW50aWNzKQorICAgICAgICAgICAgTWVkaWFRdWVyeUV4cEltcGwqIGV4cCA9IDA7CisgICAg
ICAgICAgICBmb3IgKGV4cCA9IGV4cF9pdC5jdXJyZW50KCk7IGV4cCAmJiBldmFsKGV4cCk7IGV4
cCA9ICsrZXhwX2l0KSAvKiBlbXB0eSovOworCisgICAgICAgICAgICAvLyBhc3N1bWUgdHJ1ZSBp
ZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgb3RoZXJ3aXNlIGFzc3VtZSBmYWxzZQor
ICAgICAgICAgICAgcmVzdWx0ID0gYXBwbHlSZXN0cmljdG9yKHF1ZXJ5LT5yZXN0cmljdG9yKCks
ICFleHApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzdWx0ID0gYXBwbHlSZXN0
cmljdG9yKHF1ZXJ5LT5yZXN0cmljdG9yKCksIGZhbHNlKTsKKwkJfQorICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbCBwYXJzZUFzcGVjdFJhdGlvKENTU1ZhbHVlSW1w
bCogdmFsdWUsIGludCogYSwgaW50KiBiKQoreworICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3Qo
KSApeworICAgICAgICBDU1NWYWx1ZUxpc3RJbXBsKiB2YWx1ZUxpc3QgPSBzdGF0aWNfY2FzdDxD
U1NWYWx1ZUxpc3RJbXBsKj4odmFsdWUpOworICAgICAgICBpZiAodmFsdWVMaXN0LT5sZW5ndGgo
KSA9PSAzICkgeworICAgICAgICAgICAgQ1NTVmFsdWVJbXBsKiBpMCA9IHZhbHVlTGlzdC0+aXRl
bSgwKTsKKyAgICAgICAgICAgIENTU1ZhbHVlSW1wbCogaTEgPSB2YWx1ZUxpc3QtPml0ZW0oMSk7
CisgICAgICAgICAgICBDU1NWYWx1ZUltcGwqIGkyID0gdmFsdWVMaXN0LT5pdGVtKDIpOworICAg
ICAgICAgICAgaWYgKGkwLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWVJbXBsKj4oaTApLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19OVU1CRVIKKyAgICAgICAgICAgICAgICAmJiBpMS0+aXNQcmltaXRpdmVWYWx1ZSgp
ICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlSW1wbCo+KGkxKS0+cHJpbWl0aXZlVHlw
ZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HCisgICAgICAgICAgICAgICAgJiYg
aTItPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZUlt
cGwqPihpMiktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UikgeworICAgICAgICAgICAgICAgIERPTVN0cmluZyBzdHIgPSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZUltcGwqPihpMSktPmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICAgICAg
aWYgKCFzdHIuaXNOdWxsKCkgJiYgc3RyLmxlbmd0aCgpID09IDEgJiYgc3RyWzBdID09IFFDaGFy
KCcvJykpIHsKKyAgICAgICAgICAgICAgICAgICAgKmEgPSAoaW50KSBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZUltcGwqPihpMCktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19OVU1CRVIpOworICAgICAgICAgICAgICAgICAgICAqYiA9IChpbnQpIHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlSW1wbCo+KGkyKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1
cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChjb25zdCBNZWRp
YVF1ZXJ5RXhwSW1wbCogZXhwcikgY29uc3QKK3sKKyAgICBpZiAoIW1fdmlldyB8fCAhbV9zdHls
ZSkKKyAgICAgICAgcmV0dXJuIG1fZXhwUmVzdWx0OworICAgIENTU1ZhbHVlSW1wbCogdmFsdWUg
PSBleHByLT52YWx1ZSgpOworICAgIENTU1ByaW1pdGl2ZVZhbHVlSW1wbCogcHJpbWl0aXZlID0g
MDsKKworICAgIGJvb2wgaXNOdW1iZXJWYWx1ZSA9IGZhbHNlOworICAgIGRvdWJsZSBudW1iZXJW
YWx1ZSA9IC0xOworICAgIGludCBwcmltaXRpdmVMZW5ndGggPSAtMTsKKworICAgIGlmICh2YWx1
ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7CisgICAgICAgIHByaW1pdGl2ZSA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlSW1wbCo+KHZhbHVlKTsKKyAgICAgICAgcHJpbWl0
aXZlTGVuZ3RoID0gcHJpbWl0aXZlLT5jb21wdXRlTGVuZ3RoKG1fc3R5bGUsIG1fcGFpbnRNZXRy
aWNzKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CisgICAgICAgICAgICBpc051bWJlclZhbHVlID0gdHJ1
ZTsKKyAgICAgICAgICAgIG51bWJlclZhbHVlID0gcHJpbWl0aXZlLT5nZXRGbG9hdFZhbHVlKENT
U1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN3
aXRjaCAoZXhwci0+bWVkaWFGZWF0dXJlKCkpIHsKKworICAgICAgICBjYXNlIENTU19NRURJQV9G
RUFUX0NPTE9SOiB7CisgICAgICAgICAgICBpbnQgYml0c1BlckNvbXBvbmVudCA9IG1fcGFpbnRN
ZXRyaWNzLT5kZXB0aCgpIC8gM0w7CisgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIChpc051bWJlclZhbHVlICYmIGJpdHNQZXJDb21wb25lbnQgPT0gKGludClu
dW1iZXJWYWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGJp
dHNQZXJDb21wb25lbnQgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElB
X0ZFQVRfTUlOX0NPTE9SOiB7CisgICAgICAgICAgICBpbnQgYml0c1BlckNvbXBvbmVudCA9IG1f
cGFpbnRNZXRyaWNzLT5kZXB0aCgpIC8gM0w7CisgICAgICAgICAgICBpZiAodmFsdWUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIChpc051bWJlclZhbHVlICYmIGJpdHNQZXJDb21wb25lbnQgPj0g
KGludCludW1iZXJWYWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0
dXJuIGJpdHNQZXJDb21wb25lbnQgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NT
X01FRElBX0ZFQVRfTUFYX0NPTE9SOiB7CisgICAgICAgICAgICBpbnQgYml0c1BlckNvbXBvbmVu
dCA9IG1fcGFpbnRNZXRyaWNzLT5kZXB0aCgpIC8gM0w7CisgICAgICAgICAgICBpZiAodmFsdWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIChpc051bWJlclZhbHVlICYmIGJpdHNQZXJDb21wb25l
bnQgPD0gKGludCludW1iZXJWYWx1ZSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgcmV0dXJuIGJpdHNQZXJDb21wb25lbnQgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgQ1NTX01FRElBX0ZFQVRfTU9OT0NIUk9NRToKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVB
VF9NSU5fTU9OT0NIUk9NRToKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NQVhfTU9OT0NI
Uk9NRToKKyAgICAgICAgICAgIC8vLyBYWFg6IGhvdyB0byBnZXQgZGlzcGxheSBtb2RlIGZyb20g
UXQ/CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX0NP
TE9SX0lOREVYOgorICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9DT0xPUl9JTkRFWDoK
KyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NQVhfQ09MT1JfSU5ERVg6CisgICAgICAgICAg
ICAvLy8gWFhYOiBob3cgdG8gZ2V0IGRpc3BsYXkgbW9kZSBmcm9tIFF0PworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9ERVZJQ0VfQVNQRUNUX1JBVElP
OiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBRUmVjdCBzZyA9
IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5HZW9tZXRyeShRQXBwbGljYXRpb246OmRl
c2t0b3AoKS0+c2NyZWVuTnVtYmVyKG1fdmlldykpOworICAgICAgICAgICAgICAgIGludCBhOwor
ICAgICAgICAgICAgICAgIGludCBiOworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFzcGVjdFJh
dGlvKHZhbHVlLCAmYSwgJmIpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGIhPTApICYm
IChhKnNnLmhlaWdodCgpID09IGIqc2cud2lkdGgoKSk7CisgICAgICAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIC8vIChkZXZpY2UtYXNwZWN0LXJhdGlvKSwgYXNzdW1lIGlmIHdlIGhh
dmUgYSBkZXZpY2UsIGl0cyBhc3BlY3QgcmF0aW8gaXMgbm9uLXplcm8KKyAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
Q1NTX01FRElBX0ZFQVRfTUlOX0RFVklDRV9BU1BFQ1RfUkFUSU86IHsKKyAgICAgICAgICAgIGlm
ICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIFFSZWN0IHNnID0gUUFwcGxpY2F0aW9uOjpkZXNr
dG9wKCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5OdW1i
ZXIobV92aWV3KSk7CisgICAgICAgICAgICAgICAgaW50IGE7CisgICAgICAgICAgICAgICAgaW50
IGI7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlQXNwZWN0UmF0aW8odmFsdWUsICZhLCAmYikp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoYiE9MCkgJiYgKCgoZG91YmxlKXNnLndpZHRo
KCkvc2cuaGVpZ2h0KCkpID49ICgoZG91YmxlKWEvYikpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAvLyAobWluLWRldmljZS1hc3BlY3QtcmF0aW8pLCBhc3N1bWUgaWYg
d2UgaGF2ZSBhIGRldmljZSwgaXRzIGFzcGVjdCByYXRpbyBpcyBub24temVybworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBDU1NfTUVESUFfRkVBVF9NQVhfREVWSUNFX0FTUEVDVF9SQVRJTzogeworICAgICAgICAg
ICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgUVJlY3Qgc2cgPSBRQXBwbGljYXRpb246
OmRlc2t0b3AoKS0+c2NyZWVuR2VvbWV0cnkoUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPnNjcmVl
bk51bWJlcihtX3ZpZXcpKTsKKyAgICAgICAgICAgICAgICBpbnQgYTsKKyAgICAgICAgICAgICAg
ICBpbnQgYjsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VBc3BlY3RSYXRpbyh2YWx1ZSwgJmEs
ICZiKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChiIT0wKSAmJiAoKChkb3VibGUpc2cu
d2lkdGgoKS9zZy5oZWlnaHQoKSkgPD0gKChkb3VibGUpYS9iKSk7CisgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIC8vIChtYXgtZGV2aWNlLWFzcGVjdC1yYXRpbyksIGFzc3Vt
ZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBpdHMgYXNwZWN0IHJhdGlvIGlzIG5vbi16ZXJvCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIENTU19NRURJQV9GRUFUX0RFVklDRV9IRUlHSFQ6IHsKKyAgICAgICAgICAgIGlm
ICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIFFSZWN0IHNnID0gUUFwcGxpY2F0aW9uOjpkZXNr
dG9wKCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5OdW1i
ZXIobV92aWV3KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChwcmltaXRpdmUgJiYgc2cuaGVp
Z2h0KCkgPT0gcHJpbWl0aXZlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgLy8gKGRldmljZS1oZWlnaHQpLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwg
YXNzdW1lIG5vbi16ZXJvCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9ERVZJQ0Vf
SEVJR0hUOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBRUmVj
dCBzZyA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5HZW9tZXRyeShRQXBwbGljYXRp
b246OmRlc2t0b3AoKS0+c2NyZWVuTnVtYmVyKG1fdmlldykpOworICAgICAgICAgICAgICAgIHJl
dHVybiAocHJpbWl0aXZlICYmIHNnLmhlaWdodCgpID49IHByaW1pdGl2ZUxlbmd0aCk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIChtaW4tZGV2aWNlLWhlaWdodCks
IGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBhc3N1bWUgbm9uLXplcm8KKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgQ1NTX01FRElBX0ZFQVRfTUFYX0RFVklDRV9IRUlHSFQ6IHsKKyAgICAgICAgICAgIGlmICh2
YWx1ZSkgeworICAgICAgICAgICAgICAgIFFSZWN0IHNnID0gUUFwcGxpY2F0aW9uOjpkZXNrdG9w
KCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5OdW1iZXIo
bV92aWV3KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChwcmltaXRpdmUgJiYgc2cuaGVpZ2h0
KCkgPD0gcHJpbWl0aXZlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICAgICAgLy8gKG1heC1kZXZpY2UtaGVpZ2h0KSwgYXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2Us
IGFzc3VtZSBub24temVybworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9ERVZJQ0VfV0lE
VEg6IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIFFSZWN0IHNn
ID0gUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6
ZGVza3RvcCgpLT5zY3JlZW5OdW1iZXIobV92aWV3KSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IChwcmltaXRpdmUgJiYgc2cud2lkdGgoKSA9PSBwcmltaXRpdmVMZW5ndGgpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyAoZGV2aWNlLXdpZHRoKSwgYXNzdW1lIGlm
IHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybworICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVE
SUFfRkVBVF9NSU5fREVWSUNFX1dJRFRIOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBRUmVjdCBzZyA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5H
ZW9tZXRyeShRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuTnVtYmVyKG1fdmlldykpOwor
ICAgICAgICAgICAgICAgIHJldHVybiAocHJpbWl0aXZlICYmIHNnLndpZHRoKCkgPj0gcHJpbWl0
aXZlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gKG1p
bi1kZXZpY2Utd2lkdGgpLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgYXNzdW1lIG5vbi16
ZXJvCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01BWF9ERVZJQ0VfV0lEVEg6IHsKKyAg
ICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIFFSZWN0IHNnID0gUUFwcGxp
Y2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbkdlb21ldHJ5KFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgp
LT5zY3JlZW5OdW1iZXIobV92aWV3KSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChwcmltaXRp
dmUgJiYgc2cud2lkdGgoKSA8PSBwcmltaXRpdmVMZW5ndGgpOworICAgICAgICAgICAgfSBlbHNl
IHsKKyAgICAgICAgICAgICAgICAvLyAobWF4LWRldmljZS13aWR0aCksIGFzc3VtZSBpZiB3ZSBo
YXZlIGEgZGV2aWNlLCBhc3N1bWUgbm9uLXplcm8KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZF
QVRfR1JJRDogeworICAgICAgICAgICAgLy8gaWYgb3V0cHV0IGRldmljZSBpcyBiaXRtYXAsIGdy
aWQ6IDAgPT0gdHJ1ZQorICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJl
dHVybiAoaXNOdW1iZXJWYWx1ZSAmJiAgKGludCludW1iZXJWYWx1ZSA9PSAwICk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAg
ICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9IRUlHSFQ6IHsKKyAgICAgICAgICAgIGlmICh2YWx1
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlICYmIG1fdmlldy0+dmlzaWJsZUhl
aWdodCgpID09IHByaW1pdGl2ZUxlbmd0aDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbV92aWV3LT52aXNpYmxlSGVpZ2h0KCkgIT0gMDsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUlOX0hFSUdIVDogeworICAgICAgICAgICAgaWYg
KHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmUgJiYgbV92aWV3LT52aXNp
YmxlSGVpZ2h0KCkgPj0gcHJpbWl0aXZlTGVuZ3RoOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIHJldHVybiBtX3ZpZXctPnZpc2libGVIZWlnaHQoKSAhPSAwOworICAgICAgICB9
CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NQVhfSEVJR0hUOiB7CisgICAgICAgICAg
ICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIChwcmltaXRpdmUgJiYgbV92aWV3
LT52aXNpYmxlSGVpZ2h0KCkgPD0gcHJpbWl0aXZlTGVuZ3RoKTsKKyAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICByZXR1cm4gKG1fdmlldy0+dmlzaWJsZUhlaWdodCgpICE9IDApOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9XSURUSDogeworICAgICAg
ICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmUgJiYgbV92
aWV3LT52aXNpYmxlV2lkdGgoKSA9PSBwcmltaXRpdmVMZW5ndGg7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdmlldy0+dmlzaWJsZVdpZHRoKCkgIT0gMDsKKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUlOX1dJRFRIOiB7CisgICAg
ICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZSAmJiBt
X3ZpZXctPnZpc2libGVXaWR0aCgpID49IHByaW1pdGl2ZUxlbmd0aDsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92aWV3LT52aXNpYmxlV2lkdGgoKSAhPSAwOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NQVhfV0lEVEg6eworICAg
ICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmUgJiYg
bV92aWV3LT52aXNpYmxlV2lkdGgoKSA8PSBwcmltaXRpdmVMZW5ndGg7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdmlldy0+dmlzaWJsZVdpZHRoKCkgIT0gMDsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfUkVTT0xVVElPTjoKKyAg
ICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NSU5fUkVTT0xVVElPTjoKKyAgICAgICAgY2FzZSBD
U1NfTUVESUFfRkVBVF9NQVhfUkVTT0xVVElPTjoKKyAgICAgICAgICAgIC8vWFhYOiBDU1NfRElN
RU5TSU9OIGRvZXNuJ3Qgc2VlbSB0byBiZSBzdXBwb3J0ZWQgYnkgS0hUTUwKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfU0NBTjoKKyAgICAgICAgICAg
IC8vIHNjYW4gYXBwbGllcyB0byB0diBtZWRpYSB0eXBlcworICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfSU5WQUxJRDoKKyAgICAgICAgZGVm
YXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30K
ZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3Jl
L2todG1sL2Nzcy9jc3NfbWVkaWFxdWVyeWV2YWwuaCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9r
aHRtbC9jc3MvY3NzX21lZGlhcXVlcnlldmFsLmgKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nz
cy9jc3NfbWVkaWFxdWVyeWV2YWwuaAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIw
MAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc19tZWRpYXF1ZXJ5ZXZh
bC5oCTIwMDUtMDctMjQgMTI6NTE6MDguMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsNzAgQEAK
KyNpZm5kZWYgQ1NTX2Nzc19tZWRpYXF1ZXJ5ZXZhbF9oCisjZGVmaW5lIENTU19jc3NfbWVkaWFx
dWVyeWV2YWxfaAorCisjaW5jbHVkZSA8cXN0cmluZy5oPgorI2luY2x1ZGUgPHF2YWx1ZWxpc3Qu
aD4KKworI2luY2x1ZGUgImNzcy9jc3NfbWVkaWFxdWVyeWltcGwuaCIKKworY2xhc3MgUVBhaW50
RGV2aWNlTWV0cmljczsKK2NsYXNzIEtIVE1MVmlldzsKKworbmFtZXNwYWNlIGtodG1sIHsKK2Ns
YXNzIFJlbmRlclN0eWxlOworfQorCituYW1lc3BhY2UgRE9NeworY2xhc3MgTWVkaWFMaXN0SW1w
bDsKKworLyoqCisgKiBDbGFzcyB0aGF0IGV2YWx1YXRlcyBjc3MgbWVkaWEgcXVlcmllcyBhcyBk
ZWZpbmVkIGluCisgKiBDU1MzIE1vZHVsZSAiTWVkaWEgUXVlcmllcyIgKGh0dHA6Ly93d3cudzMu
b3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLykKKyAqIFNwZWNpYWwgY29uc3RydWN0b3JzIGFyZSBu
ZWVkZWQsIGlmIHNpbXBsZSBtZWRpYSBxdWVyaWVzIGFyZSB0byBiZQorICogZXZhbHVhdGVkIHdp
dGhvdXQga25vd2xlZGdlIG9mIHRoZSBtZWRpdW0gZmVhdHVyZXMuIFRoaXMgY2FuIGhhcHBlbgor
ICogZm9yIGV4YW1wbGUgd2hlbiBwYXJzaW5nIFVBIHN0eWxlc2hlZXRzLCBpZiBldmFsdWF0aW9u
IGlzIGRvbmUKKyAqIHJpZ2h0IGFmdGVyIHBhcnNpbmcuCisgKgorICogdGhlIGJvb2xlYW4gcGFy
YW1ldGVyIGlzIHVzZWQgdG8gYXBwcm94aW1hdGUgcmVzdWx0cyBvZiBldmFsdWF0aW9uLCBpZgor
ICogdGhlIGRldmljZSBjaGFyYWN0ZXJpc3RpY3MgYXJlIG5vdCBrbm93bi4gVGhpcyBjYW4gYmUg
dXNlZCB0byBwcnVuZSB0aGUgbG9hZGluZworICogb2Ygc3R5bGVzaGVldHMgdG8gb25seSB0aG9z
ZSB3aGljaCBhcmUgcHJvYmFibGUgdG8gbWF0Y2guCisgKi8KK2NsYXNzIE1lZGlhUXVlcnlFdmFs
dWF0b3IKK3sKK3B1YmxpYzoKKwkvKiogQ3JlYXRlcyBldmFsdWF0b3Igd2hpY2ggZXZhbHVhdGVz
IG9ubHkgc2ltcGxlIG1lZGlhIHF1ZXJpZXMKKwkgKiAgRXZhbHVhdG9yIHJldHVybnMgdHJ1ZSBm
b3IgImFsbCIsIGFuZCByZXR1cm5zIHZhbHVlIG9mIFxtZWRpYUZlYXR1cmVSZXN1bHQKKyAgICAg
KiAgZm9yIGFueSBtZWRpYSBmZWF0dXJlcworCSAqLworICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Io
Ym9vbCBtZWRpYUZlYXR1cmVSZXN1bHQgPSBmYWxzZSk7CisKKyAgICAvKiogQ3JlYXRlcyBldmFs
dWF0b3Igd2hpY2ggZXZhbHVhdGVzIG9ubHkgc2ltcGxlIG1lZGlhIHF1ZXJpZXMKKyAgICAgKiAg
RXZhbHVhdG9yICByZXR1cm5zIHRydWUgZm9yIGFjY2VwdGVkTWVkaWFUeXBlLCBidXQgbm90IGFu
eSBtZWRpYSBmZWF0dXJlcworICAgICAqLworICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3Qg
UVN0cmluZyYgYWNjZXB0ZWRNZWRpYVR5cGUsIGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0ID0gZmFs
c2UpOworCisgICAgLyoqIENyZWF0ZXMgZXZhbHVhdG9yIHdoaWNoIGV2YWx1YXRlcyBmdWxsIG1l
ZGlhIHF1ZXJpZXMKKyAgICAgKi8KKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFFTdHJp
bmcmIGFjY2VwdGVkTWVkaWFUeXBlLCBLSFRNTFZpZXcqIHZpZXcsCisgICAgCQkJCQlRUGFpbnRE
ZXZpY2VNZXRyaWNzKiBwYWludE1ldHJpY3MsIGtodG1sOjpSZW5kZXJTdHlsZSogc3R5bGUpOwor
CisgICAgdmlydHVhbCB+TWVkaWFRdWVyeUV2YWx1YXRvcigpOworCisgICAgYm9vbCBtZWRpYVR5
cGVNYXRjaChjb25zdCBRU3RyaW5nJiBtZWRpYVR5cGVUb01hdGNoKSBjb25zdDsKKworCS8qKiBF
dmFsdWF0ZXMgYSBsaXN0IG9mIG1lZGlhIHF1ZXJpZXMgKi8KKyAgICB2aXJ0dWFsIGJvb2wgZXZh
bChjb25zdCBET006Ok1lZGlhTGlzdEltcGwqIHF1ZXJ5KSBjb25zdDsKKworICAgIC8qKiBFdmFs
dWF0ZXMgbWVkaWEgcXVlcnkgc3ViZXhwcmVzc2lvbiwgaWUgImFuZCAobWVkaWEtZmVhdHVyZTog
dmFsdWUpIiBwYXJ0ICovCisgICAgdmlydHVhbCBib29sIGV2YWwoY29uc3QgRE9NOjpNZWRpYVF1
ZXJ5RXhwSW1wbCogZXhwcikgY29uc3Q7CisKK3ByaXZhdGU6CisKKyAgICBRU3RyaW5nIG1fbWVk
aWFUeXBlOworICAgIEtIVE1MVmlldyogbV92aWV3OyAvLyBub3Qgb3duZWQKKyAgICBRUGFpbnRE
ZXZpY2VNZXRyaWNzKiBtX3BhaW50TWV0cmljczsgLy8gbm90IG93bmVkCisgICAga2h0bWw6OlJl
bmRlclN0eWxlKiBtX3N0eWxlOyAvLyBub3Qgb3duZWQKKyAgICBib29sIG1fZXhwUmVzdWx0Owor
fTsKKworfSAvLyBuYW1lc3BhY2UKKyNlbmRpZgpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicg
LS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19tZWRpYXF1ZXJ5aW1w
bC5jcHAgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc19tZWRpYXF1ZXJ5aW1w
bC5jcHAKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9jc3NfbWVkaWFxdWVyeWltcGwuY3Bw
CTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQv
V2ViQ29yZS9raHRtbC9jc3MvY3NzX21lZGlhcXVlcnlpbXBsLmNwcAkyMDA1LTA3LTI0IDEyOjUx
OjA4LjAwMDAwMDAwMCArMDMwMApAQCAtMCwwICsxLDExNyBAQAorI2luY2x1ZGUgImNzc19tZWRp
YXF1ZXJ5aW1wbC5oIgorI2luY2x1ZGUgImNzc3BhcnNlci5oIgorI2luY2x1ZGUgImNzc19iYXNl
LmgiCisjaW5jbHVkZSAiY3NzX3ZhbHVlaW1wbC5oIgorCit1c2luZyBuYW1lc3BhY2UgRE9NOwor
dXNpbmcgbmFtZXNwYWNlIGtodG1sOworCitNZWRpYVF1ZXJ5RXhwSW1wbDo6TWVkaWFRdWVyeUV4
cEltcGwoaW50IG1lZGlhRmVhdHVyZUlkLCBET006OlZhbHVlTGlzdCogdmFsdWVMaXN0KQorICAg
IDptX21lZGlhRmVhdHVyZUlkKG1lZGlhRmVhdHVyZUlkKQoreworICAgIG1fdmFsdWUgPSAwOwor
ICAgIGlmICh2YWx1ZUxpc3QpIHsKKworCWlmICggdmFsdWVMaXN0LT5udW1WYWx1ZXMgPT0gMSAp
IHsKKwkgICAgRE9NOjpWYWx1ZSogdmFsdWUgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKTsKKworCSAg
ICBpZiAoIHZhbHVlLT5pZCAhPSAwICkgeworCQkvLyBxRGVidWcoIiBuZXcgdmFsdWU6IGlkPSVk
IiwgaWQgKTsKKwkJbV92YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwoIHZhbHVlLT5p
ZCApOworCSAgICB9IGVsc2UgaWYgKCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORyApCisJCW1fdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKCBkb21T
dHJpbmcoIHZhbHVlLT5zdHJpbmcgKSwKKwkJCQkJCSAgICAgKENTU1ByaW1pdGl2ZVZhbHVlOjpV
bml0VHlwZXMpIHZhbHVlLT51bml0ICk7CisJICAgIGVsc2UgaWYgKCB2YWx1ZS0+dW5pdCA+PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiAmJgorCQkgICAgICB2YWx1ZS0+dW5pdCA8PSBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0tIWiApIHsKKwkJLy8gcURlYnVnKCIgbmV3IHZhbHVlOiB2
YWx1ZT0lLjJmLCB1bml0PSVkIiwgdmFsdWUtPmZWYWx1ZSwgdmFsdWUtPnVuaXQgKTsKKwkJbV92
YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwoIHZhbHVlLT5mVmFsdWUsCisJCQkJCQkg
ICAgIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSB2YWx1ZS0+dW5pdCApOworCSAgICB9
CisJICAgIHZhbHVlTGlzdC0+bmV4dCgpOworCX0gZWxzZSBpZiAoIHZhbHVlTGlzdC0+bnVtVmFs
dWVzID4gMSkgeworCSAgICAvLyBjcmVhdGUgbGlzdCBvZiB2YWx1ZXMKKwkgICAgLy8gY3VycmVu
dGx5IGFjY2VwdHMgb25seSA8aW50ZWdlcj4vPGludGVnZXI+CisKKwkgICAgQ1NTVmFsdWVMaXN0
SW1wbCogbGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3RJbXBsKCk7CisJICAgIFZhbHVlKiB2YWx1ZSA9
IDA7CisJICAgIGJvb2wgaXNWYWxpZCA9IHRydWU7CisKKwkgICAgd2hpbGUgKCh2YWx1ZSA9IHZh
bHVlTGlzdC0+Y3VycmVudCgpKSAmJiBpc1ZhbGlkKSB7CisJCWlmICggdmFsdWUtPnVuaXQgPT0g
VmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5pVmFsdWUgPT0gJy8nICkgeworCQkgICAgbGlzdC0+
YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZUltcGwoIi8iLCBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORykpOworCQl9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfTlVNQkVSKSB7CisJCSAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2ZVZh
bHVlSW1wbCh2YWx1ZS0+ZlZhbHVlLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwor
CQl9IGVsc2UgeworCQkgICAgaXNWYWxpZCA9IGZhbHNlOworCQl9CisJCXZhbHVlID0gdmFsdWVM
aXN0LT5uZXh0KCk7CisJICAgIH0KKwkgICAgaWYgKGlzVmFsaWQpCisJCW1fdmFsdWUgPSBsaXN0
OworCSAgICBlbHNlCisJCWRlbGV0ZShsaXN0KTsKKworCX0KKyAgICB9Cit9CisKK01lZGlhUXVl
cnlFeHBJbXBsOjp+TWVkaWFRdWVyeUV4cEltcGwoKQoreworICAgIGRlbGV0ZSAobV92YWx1ZSk7
Cit9CisKK2ludCBNZWRpYVF1ZXJ5RXhwSW1wbDo6bWVkaWFGZWF0dXJlKCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gbV9tZWRpYUZlYXR1cmVJZDsKK30KKworQ1NTVmFsdWVJbXBsKiBNZWRpYVF1ZXJ5
RXhwSW1wbDo6dmFsdWUoKSBjb25zdAoreworICAgIHJldHVybiBtX3ZhbHVlOworfQorCitNZWRp
YVF1ZXJ5SW1wbDo6TWVkaWFRdWVyeUltcGwoUmVzdHJpY3RvciByLCBjb25zdCBET006OkRPTVN0
cmluZyAmbWVkaWFUeXBlLCBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwqIGV4cHJzKQorICAgIDptX3Jl
c3RyaWN0b3IocikKKyAgICAsbV9tZWRpYVR5cGUobWVkaWFUeXBlKQorICAgICxtX2V4cHJlc3Np
b25zKGV4cHJzKQoreworfQorCitNZWRpYVF1ZXJ5SW1wbDo6fk1lZGlhUXVlcnlJbXBsKCkKK3sK
KyAgICBkZWxldGUobV9leHByZXNzaW9ucyk7Cit9CisKK01lZGlhUXVlcnlJbXBsOjpSZXN0cmlj
dG9yIE1lZGlhUXVlcnlJbXBsOjpyZXN0cmljdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9y
ZXN0cmljdG9yOworfQorCitNZWRpYVF1ZXJ5RXhwTGlzdEltcGwqIE1lZGlhUXVlcnlJbXBsOjpl
eHByZXNzaW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZXhwcmVzc2lvbnM7Cit9CisKK1FT
dHJpbmcgTWVkaWFRdWVyeUltcGw6Om1lZGlhVHlwZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
bWVkaWFUeXBlLnN0cmluZygpOworfQorCitib29sIE1lZGlhUXVlcnlJbXBsOjpvcGVyYXRvcj09
KGNvbnN0IE1lZGlhUXVlcnlJbXBsJiBvdGhlcikgY29uc3QKK3sKKyAgICAvLyBYWFg6IGNhc2Ug
c2Vuc2l0aXZlbmVzcz8KKyAgICBpZiAobV9yZXN0cmljdG9yICE9IG90aGVyLm1fcmVzdHJpY3Rv
ciB8fCBtX21lZGlhVHlwZSAhPSBvdGhlci5tX21lZGlhVHlwZSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgUVB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5RXhwSW1wbD4gZXhwX2l0KCpt
X2V4cHJlc3Npb25zLT5saXN0KCkpOworICAgIFFQdHJMaXN0SXRlcmF0b3I8TWVkaWFRdWVyeUV4
cEltcGw+IG9leHBfaXQoKm90aGVyLm1fZXhwcmVzc2lvbnMtPmxpc3QoKSk7CisgICAgTWVkaWFR
dWVyeUV4cEltcGwqIGV4cCA9IDA7CisgICAgTWVkaWFRdWVyeUV4cEltcGwqIG9leHAgPSAwOwor
ICAgIGZvciAoZXhwID0gZXhwX2l0LmN1cnJlbnQoKSwgb2V4cCA9IG9leHBfaXQuY3VycmVudCgp
OyBleHAgJiYgb2V4cDsgZXhwID0gKytleHBfaXQsIG9leHAgPSArK29leHBfaXQpIHsKKyAgICAg
ICAgaWYgKCEoKmV4cCA9PSAqb2V4cCkgKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiAoIWV4cCAmJiAhb2V4cCk7Cit9CisKZGlmZiAtTnJ1cCAtLWV4Y2x1
ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9jc3NfbWVk
aWFxdWVyeWltcGwuaCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9raHRtbC9jc3MvY3NzX21lZGlh
cXVlcnlpbXBsLmgKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9jc3NfbWVkaWFxdWVyeWlt
cGwuaAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAwMCArMDIwMAorKysgd2Via2l0LW1vZGlm
aWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc19tZWRpYXF1ZXJ5aW1wbC5oCTIwMDUtMDctMjQgMTI6
NTE6MDguMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsODUgQEAKKyNpZm5kZWYgQ1NTX2Nzc19t
ZWRpYXF1ZXJ5aW1wbF9oCisjZGVmaW5lIENTU19jc3NfbWVkaWFxdWVyeWltcGxfaAorCisjaW5j
bHVkZSA8cXZhbHVlbGlzdC5oPgorI2luY2x1ZGUgPHFwdHJsaXN0Lmg+CisKKyNpbmNsdWRlICJk
b20vZG9tX3N0cmluZy5oIgorI2luY2x1ZGUgImNzcy9jc3NfYmFzZS5oIgorI2luY2x1ZGUgImNz
cy9jc3NfdmFsdWVpbXBsLmgiCituYW1lc3BhY2UgRE9NIHsKK2NsYXNzIFZhbHVlTGlzdDsKK2Ns
YXNzIENTU1ByaW1pdGl2ZVZhbHVlOworCitjbGFzcyBNZWRpYVF1ZXJ5RXhwSW1wbCB7CitwdWJs
aWM6CisgICAgTWVkaWFRdWVyeUV4cEltcGwoaW50IG1lZGlhRmVhdHVyZUlkLCBWYWx1ZUxpc3Qq
IHZhbHVlcyk7CisgICAgfk1lZGlhUXVlcnlFeHBJbXBsKCk7CisKKyAgICBpbnQgbWVkaWFGZWF0
dXJlKCkgY29uc3Q7CisgICAgQ1NTVmFsdWVJbXBsKiB2YWx1ZSgpIGNvbnN0OworCisgICAgYm9v
bCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnlFeHBJbXBsJiBvdGhlcikgY29uc3QgIHsKKyAg
ICAgICAgcmV0dXJuIChvdGhlci5tX21lZGlhRmVhdHVyZUlkID09IG1fbWVkaWFGZWF0dXJlSWQp
CisgICAgICAgICAgICAmJiAoKCFvdGhlci5tX3ZhbHVlICYmICFtX3ZhbHVlKQorICAgICAgICAg
ICAgICAgIHx8IChvdGhlci5tX3ZhbHVlICYmIG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+Y3Nz
VGV4dCgpID09IG1fdmFsdWUtPmNzc1RleHQoKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBp
bnQgbV9tZWRpYUZlYXR1cmVJZDsKKyAgICBDU1NWYWx1ZUltcGwqIG1fdmFsdWU7Cit9OworCitj
bGFzcyBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwKK3sKK3B1YmxpYzoKKyAgICBNZWRpYVF1ZXJ5RXhw
TGlzdEltcGwoKQorICAgIHsgZXhwcy5zZXRBdXRvRGVsZXRlKHRydWUpOyB9CisKKyAgICB2b2lk
IGFwcGVuZChNZWRpYVF1ZXJ5RXhwSW1wbCogbmV3RXhwKSB7IGV4cHMuYXBwZW5kKG5ld0V4cCk7
IH0KKyAgICBjb25zdCBRUHRyTGlzdDxNZWRpYVF1ZXJ5RXhwSW1wbD4qIGxpc3QoKSBjb25zdCB7
IHJldHVybiAmZXhwczsgfQorCitwcml2YXRlOgorICAgIFFQdHJMaXN0PE1lZGlhUXVlcnlFeHBJ
bXBsPiBleHBzOworfTsKKworCitjbGFzcyBNZWRpYVF1ZXJ5SW1wbCB7CitwdWJsaWM6CisgICAg
ZW51bSBSZXN0cmljdG9yeworCU9ubHksIE5vdCwgTm9uZQorICAgIH07CisKKyAgICBNZWRpYVF1
ZXJ5SW1wbChSZXN0cmljdG9yIHIsIGNvbnN0IERPTVN0cmluZyAmbWVkaWFUeXBlLCBNZWRpYVF1
ZXJ5RXhwTGlzdEltcGwqIGV4cHJzKTsKKyAgICB+TWVkaWFRdWVyeUltcGwoKTsKKworICAgIFJl
c3RyaWN0b3IgcmVzdHJpY3RvcigpIGNvbnN0OworICAgIE1lZGlhUXVlcnlFeHBMaXN0SW1wbCog
ZXhwcmVzc2lvbnMoKSBjb25zdDsKKyAgICBRU3RyaW5nIG1lZGlhVHlwZSgpIGNvbnN0OworCisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnlJbXBsJiBvdGhlcikgY29uc3Q7CisK
KyBwcml2YXRlOgorICAgIFJlc3RyaWN0b3IgbV9yZXN0cmljdG9yOworICAgIERPTVN0cmluZyBt
X21lZGlhVHlwZTsKKyAgICBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwqIG1fZXhwcmVzc2lvbnM7Cit9
OworCitjbGFzcyBNZWRpYVF1ZXJ5TGlzdEltcGwgeworcHVibGljOgorICAgIE1lZGlhUXVlcnlM
aXN0SW1wbCgpCisgICAgeyBxdWVyaWVzLnNldEF1dG9EZWxldGUodHJ1ZSk7IH0KKyAgICB1bnNp
Z25lZCBpbnQgY291bnQoKSBjb25zdCB7IHJldHVybiBxdWVyaWVzLmNvdW50KCk7IH0KKyAgICB2
b2lkIGNsZWFyKCkgeyBxdWVyaWVzLmNsZWFyKCk7IH0KKyAgICB2b2lkIGFwcGVuZChNZWRpYVF1
ZXJ5SW1wbCogbmV3UXVlcnkpIHsgcXVlcmllcy5hcHBlbmQobmV3UXVlcnkpOyB9CisgICAgY29u
c3QgUVB0ckxpc3Q8TWVkaWFRdWVyeUltcGw+KiBsaXN0KCkgY29uc3QgeyByZXR1cm4gJnF1ZXJp
ZXM7IH0KKyAgICB2b2lkIHJlbW92ZShNZWRpYVF1ZXJ5SW1wbCogcXVlcnkpIHsgcXVlcmllcy5y
ZW1vdmUocXVlcnkpOyB9CisKK3ByaXZhdGU6CisgICAgUVB0ckxpc3Q8TWVkaWFRdWVyeUltcGw+
IHF1ZXJpZXM7Cit9OworCisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpkaWZmIC1OcnVwIC0t
ZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nz
c19zdHlsZXNoZWV0aW1wbC5jcHAgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nz
c19zdHlsZXNoZWV0aW1wbC5jcHAKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9jc3Nfc3R5
bGVzaGVldGltcGwuY3BwCTIwMDUtMDctMTkgMDA6NDQ6MTMuMDAwMDAwMDAwICswMzAwCisrKyB3
ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9raHRtbC9jc3MvY3NzX3N0eWxlc2hlZXRpbXBsLmNwcAky
MDA1LTA3LTI1IDE0OjEzOjM4LjAwMDAwMDAwMCArMDMwMApAQCAtMzMsNiArMzMsOCBAQAogI2lu
Y2x1ZGUgImNzcy9jc3NfdmFsdWVpbXBsLmgiCiAjaW5jbHVkZSAiY3NzL2Nzc3BhcnNlci5oIgog
I2luY2x1ZGUgImNzcy9jc3Nfc3R5bGVzaGVldGltcGwuaCIKKyNpbmNsdWRlICJjc3MvY3NzX21l
ZGlhcXVlcnlldmFsLmgiCisjaW5jbHVkZSAiY3NzL2Nzc21lZGlhZmVhdHVyZXMuaCIKIAogI2lu
Y2x1ZGUgInhtbC9kb21fbm9kZWltcGwuaCIKICNpbmNsdWRlICJodG1sL2h0bWxfZG9jdW1lbnRp
bXBsLmgiCkBAIC0zNTAsMTIgKzM1Miw2IEBAIE1lZGlhTGlzdEltcGw6Ok1lZGlhTGlzdEltcGwo
IENTU1J1bGVJbXAKICAgICBzZXRNZWRpYVRleHQoIG1lZGlhICk7CiB9CiAKLWJvb2wgTWVkaWFM
aXN0SW1wbDo6Y29udGFpbnMoIGNvbnN0IERPTVN0cmluZyAmbWVkaXVtICkgY29uc3QKLXsKLSAg
ICByZXR1cm4gbV9sc3RNZWRpYS5jb3VudCgpID09IDAgfHwgbV9sc3RNZWRpYS5jb250YWlucygg
bWVkaXVtICkgfHwKLSAgICAgICAgICAgIG1fbHN0TWVkaWEuY29udGFpbnMoICJhbGwiICk7Ci19
Ci0KIENTU1N0eWxlU2hlZXRJbXBsICpNZWRpYUxpc3RJbXBsOjpwYXJlbnRTdHlsZVNoZWV0KCkg
Y29uc3QKIHsKICAgICBpZiggbV9wYXJlbnQtPmlzQ1NTU3R5bGVTaGVldCgpICkgcmV0dXJuIHN0
YXRpY19jYXN0PENTU1N0eWxlU2hlZXRJbXBsICo+KG1fcGFyZW50KTsKQEAgLTM2OCwzNSArMzY0
LDExMCBAQCBDU1NSdWxlSW1wbCAqTWVkaWFMaXN0SW1wbDo6cGFyZW50UnVsZSgpCiAgICAgcmV0
dXJuIDA7CiB9CiAKKwogdm9pZCBNZWRpYUxpc3RJbXBsOjpkZWxldGVNZWRpdW0oIGNvbnN0IERP
TVN0cmluZyAmb2xkTWVkaXVtICkKIHsKLSAgICBmb3IgKCBRVmFsdWVMaXN0PERPTVN0cmluZz46
Okl0ZXJhdG9yIGl0ID0gbV9sc3RNZWRpYS5iZWdpbigpOyBpdCAhPSBtX2xzdE1lZGlhLmVuZCgp
OyArK2l0ICkgewotICAgICAgICBpZiggKCppdCkgPT0gb2xkTWVkaXVtICkgewotICAgICAgICAg
ICAgbV9sc3RNZWRpYS5yZW1vdmUoIGl0ICk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgTWVk
aWFMaXN0SW1wbCB0ZW1wTWVkaWFMaXN0OworICAgIENTU1BhcnNlciBwKHRydWUpOyAgICAgCisK
KwlpZiAoIHAucGFyc2VNZWRpYVF1ZXJ5KCAmdGVtcE1lZGlhTGlzdCwgb2xkTWVkaXVtICkgKSB7
CisgICAgICAgIGNvbnN0IE1lZGlhUXVlcnlJbXBsKiBvbGRRdWVyeSA9IFFQdHJMaXN0SXRlcmF0
b3I8TWVkaWFRdWVyeUltcGw+KCp0ZW1wTWVkaWFMaXN0Lm1lZGlhUXVlcmllcygpLT5saXN0KCkp
LmN1cnJlbnQoKTsKKyAgICAgICAgCisgICAgICAgCVFQdHJMaXN0SXRlcmF0b3I8TWVkaWFRdWVy
eUltcGw+IHFfaXQoKm1fbHN0UXVlcmllcy5saXN0KCkpOworICAgICAgICBmb3IoTWVkaWFRdWVy
eUltcGwqIHF1ZXJ5ID0gcV9pdC5jdXJyZW50KCk7IHF1ZXJ5OyBxdWVyeSA9ICsrcV9pdCkgewor
ICAgICAgICAgICAgaWYgKCpxdWVyeSA9PSAqb2xkUXVlcnkpIHsKKyAgICAgICAgICAgICAgICBt
X2xzdFF1ZXJpZXMucmVtb3ZlKHF1ZXJ5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KICAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFhYWDogdGhyb3cg
RE9NIGV4Y2VwdGlvbgogICAgIH0KIH0KK3N0YXRpYyBET006OkRPTVN0cmluZyBtZWRpYVF1ZXJ5
QXNET01TdHJpbmcoY29uc3QgTWVkaWFRdWVyeUltcGwqIHF1ZXJ5KSAKK3sKKyAgICBET006OkRP
TVN0cmluZyB0ZXh0OworICAgIHN3aXRjaCAocXVlcnktPnJlc3RyaWN0b3IoKSkgeworICAgICAg
ICBjYXNlIE1lZGlhUXVlcnlJbXBsOjpPbmx5OgorICAgICAgICAgICAgdGV4dCArPSAib25seSAi
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFRdWVyeUltcGw6Ok5vdDoK
KyAgICAgICAgICAgIHRleHQgKz0gIm5vdCAiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
IGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgdGV4dCArPSBxdWVyeS0+
bWVkaWFUeXBlKCk7CisgICAgUVB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5RXhwSW1wbD4gZXhw
X2l0KCpxdWVyeS0+ZXhwcmVzc2lvbnMoKS0+bGlzdCgpKTsKKyAgICBmb3IgKE1lZGlhUXVlcnlF
eHBJbXBsKiBleHAgPSBleHBfaXQuY3VycmVudCgpOyBleHA7IGV4cCA9ICsrZXhwX2l0KSB7Cisg
ICAgICAgIHRleHQgKz0gIiBhbmQgKCI7CisgICAgICAgIHRleHQgKz0gZ2V0TWVkaWFGZWF0dXJl
TmFtZShleHAtPm1lZGlhRmVhdHVyZSgpKTsKKyAgICAgICAgaWYgKGV4cC0+dmFsdWUoKSkgewor
ICAgICAgICAgICAgdGV4dCArPSAiOiAiOworICAgICAgICAgICAgdGV4dCArPSBleHAtPnZhbHVl
KCktPmNzc1RleHQoKTsKKyAgICAgICAgfQorICAgICAgICB0ZXh0ICs9ICIpIjsKKyAgICB9Cisg
ICAgcmV0dXJuIHRleHQ7Cit9CiAKIERPTTo6RE9NU3RyaW5nIE1lZGlhTGlzdEltcGw6Om1lZGlh
VGV4dCgpIGNvbnN0CiB7CiAgICAgRE9NU3RyaW5nIHRleHQ7Ci0gICAgZm9yICggUVZhbHVlTGlz
dDxET01TdHJpbmc+OjpDb25zdEl0ZXJhdG9yIGl0ID0gbV9sc3RNZWRpYS5iZWdpbigpOyBpdCAh
PSBtX2xzdE1lZGlhLmVuZCgpOyArK2l0ICkgewotICAgICAgICB0ZXh0ICs9ICppdDsKLSAgICAg
ICAgdGV4dCArPSAiLCAiOworICAgIFFQdHJMaXN0SXRlcmF0b3I8TWVkaWFRdWVyeUltcGw+IHFf
aXQoKm1fbHN0UXVlcmllcy5saXN0KCkpOworICAgIGJvb2wgZmlyc3QgPSB0cnVlOworICAgIGZv
cihNZWRpYVF1ZXJ5SW1wbCogcXVlcnkgPSBxX2l0LmN1cnJlbnQoKTsgcXVlcnk7IHF1ZXJ5ID0g
KytxX2l0KSB7ICAgICAgICAKKyAgICAgICAgaWYgKCFmaXJzdCkKKyAgICAgICAgICAgIHRleHQg
Kz0gIiwgIjsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAg
ICAgIHRleHQgKz0gbWVkaWFRdWVyeUFzRE9NU3RyaW5nKHF1ZXJ5KTsKICAgICB9CiAgICAgcmV0
dXJuIHRleHQ7CiB9CiAKIHZvaWQgTWVkaWFMaXN0SW1wbDo6c2V0TWVkaWFUZXh0KGNvbnN0IERP
TTo6RE9NU3RyaW5nICZ2YWx1ZSkKIHsKLSAgICBtX2xzdE1lZGlhLmNsZWFyKCk7Ci0gICAgUVN0
cmluZyB2YWwgPSB2YWx1ZS5zdHJpbmcoKTsKKwlDU1NQYXJzZXIgcCh0cnVlKTsgICAJCisgICAJ
bV9sc3RRdWVyaWVzLmNsZWFyKCk7ICAgCQorCiAgICAgUVN0cmluZ0xpc3QgbGlzdCA9IFFTdHJp
bmdMaXN0OjpzcGxpdCggJywnLCB2YWx1ZS5zdHJpbmcoKSApOwogICAgIGZvciAoIFFTdHJpbmdM
aXN0OjpJdGVyYXRvciBpdCA9IGxpc3QuYmVnaW4oKTsgaXQgIT0gbGlzdC5lbmQoKTsgKytpdCAp
CiAgICAgewogICAgICAgICBET01TdHJpbmcgbWVkaXVtID0gKCppdCkuc3RyaXBXaGl0ZVNwYWNl
KCk7Ci0gICAgICAgIGlmKCBtZWRpdW0gIT0gIiIgKQotICAgICAgICAgICAgbV9sc3RNZWRpYS5h
cHBlbmQoIG1lZGl1bSApOworICAgICAgICBpZiggbWVkaXVtICE9ICIiICkgeyAgICAgICAgICAg
ICAJCSAgIAkJCQorICAgCQkJaWYgKCBwLnBhcnNlTWVkaWFRdWVyeSggdGhpcywgbWVkaXVtICkg
KSB7CisgICAJCQkJLy8gT0sKKwkJICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gRkFJ
TAorICAgICAgICAgICAgICAgIC8vIFhYWDogdGhyb3cgRE9NIGV4Y2VwdGlvbgorCQkgICAgfQor
CQl9CiAgICAgfQogfQorCitET006OkRPTVN0cmluZyBNZWRpYUxpc3RJbXBsOjppdGVtICggdW5z
aWduZWQgbG9uZyBpbmRleCApIGNvbnN0IAoreworICAgIC8vIFhYWDogaW5lZmZpY2llbnQgYW5k
IHVnbHkhIFFQdHJMaXN0IGRvZXNuJ3QgaGF2ZSBhdCgpIGNvbnN0IAorICAgIFFQdHJMaXN0SXRl
cmF0b3I8TWVkaWFRdWVyeUltcGw+IHFfaXQoKm1fbHN0UXVlcmllcy5saXN0KCkpOworICAgIE1l
ZGlhUXVlcnlJbXBsKiBxdWVyeSA9IHFfaXQuY3VycmVudCgpOworICAgIGZvciAoOyBxdWVyeSAm
JiBpbmRleDsgcXVlcnkgPSArK3FfaXQpIC0taW5kZXg7CisgICAgaWYgKHF1ZXJ5KQorICAgICAg
ICByZXR1cm4gbWVkaWFRdWVyeUFzRE9NU3RyaW5nKHF1ZXJ5KTsKKyAgICByZXR1cm4gRE9NOjpE
T01TdHJpbmcoKTsKK30KKwordm9pZCBNZWRpYUxpc3RJbXBsOjphcHBlbmRNZWRpdW0gKCBjb25z
dCBET006OkRPTVN0cmluZyAmbmV3TWVkaXVtICkKK3sKKwlDU1NQYXJzZXIgcCh0cnVlKTsgICAg
IAorCWlmICggcC5wYXJzZU1lZGlhUXVlcnkoIHRoaXMsIG5ld01lZGl1bSApICkgeworCQkvLyBP
SworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFhYWDogdGhyb3cgZG9tIGV4Y2VwdGlvbiAgICAg
ICAgCisgICAgfQkKK30KKwordm9pZCBNZWRpYUxpc3RJbXBsOjphcHBlbmRNZWRpYVF1ZXJ5KCBN
ZWRpYVF1ZXJ5SW1wbCogbWVkaWFRdWVyeSApCit7CisgICAgbV9sc3RRdWVyaWVzLmFwcGVuZCgg
bWVkaWFRdWVyeSApOworfQpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcu
Kicgd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oIHdlYmtpdC1t
b2RpZmllZC9XZWJDb3JlL2todG1sL2Nzcy9jc3Nfc3R5bGVzaGVldGltcGwuaAotLS0gd2Via2l0
L1dlYkNvcmUva2h0bWwvY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oCTIwMDUtMDctMDkgMjM6MTk6
MDAuMDAwMDAwMDAwICswMzAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9raHRtbC9jc3Mv
Y3NzX3N0eWxlc2hlZXRpbXBsLmgJMjAwNS0wNy0yNCAxMTo0MzowNS4wMDAwMDAwMDAgKzAzMDAK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgImRvbS9kb21fc3RyaW5nLmgiCiAjaW5jbHVk
ZSAiY3NzL2Nzc19iYXNlLmgiCisjaW5jbHVkZSAiY3NzL2Nzc19tZWRpYXF1ZXJ5aW1wbC5oIgog
I2luY2x1ZGUgIm1pc2MvbG9hZGVyX2NsaWVudC5oIgogCiBuYW1lc3BhY2Uga2h0bWwgewpAQCAt
MTU3LDI2ICsxNTgsMjIgQEAgcHVibGljOgogCiAgICAgQ1NTU3R5bGVTaGVldEltcGwgKnBhcmVu
dFN0eWxlU2hlZXQoKSBjb25zdDsKICAgICBDU1NSdWxlSW1wbCAqcGFyZW50UnVsZSgpIGNvbnN0
OwotICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sc3RNZWRpYS5j
b3VudCgpOyB9Ci0gICAgRE9NOjpET01TdHJpbmcgaXRlbSAoIHVuc2lnbmVkIGxvbmcgaW5kZXgg
KSBjb25zdCB7IHJldHVybiBtX2xzdE1lZGlhW2luZGV4XTsgfQorICAgIHVuc2lnbmVkIGxvbmcg
bGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sc3RRdWVyaWVzLmNvdW50KCk7IH0KKyAgICBET006
OkRPTVN0cmluZyBpdGVtICggdW5zaWduZWQgbG9uZyBpbmRleCApIGNvbnN0OwogICAgIHZvaWQg
ZGVsZXRlTWVkaXVtICggY29uc3QgRE9NOjpET01TdHJpbmcgJm9sZE1lZGl1bSApOwotICAgIHZv
aWQgYXBwZW5kTWVkaXVtICggY29uc3QgRE9NOjpET01TdHJpbmcgJm5ld01lZGl1bSApIHsgbV9s
c3RNZWRpYS5hcHBlbmQobmV3TWVkaXVtKTsgfQorICAgIHZvaWQgYXBwZW5kTWVkaXVtICggY29u
c3QgRE9NOjpET01TdHJpbmcgJm5ld01lZGl1bSApOwogCiAgICAgRE9NOjpET01TdHJpbmcgbWVk
aWFUZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYVRleHQoY29uc3QgRE9NOjpET01TdHJp
bmcgJnZhbHVlKTsKIAogICAgIC8qKgotICAgICAqIENoZWNrIGlmIHRoZSBsaXN0IGNvbnRhaW5z
IGVpdGhlciB0aGUgcmVxdWVzdGVkIG1lZGl1bSwgb3IgdGhlCi0gICAgICogY2F0Y2gtYWxsICJh
bGwiIG1lZGlhIHR5cGUuIFJldHVybnMgdHJ1ZSB3aGVuIGZvdW5kLCBmYWxzZSBvdGhlcndpc2Uu
Ci0gICAgICogU2luY2Ugbm90IHNwZWNpZnlpbmcgbWVkaWEgdHlwZXMgc2hvdWxkIGJlIHRyZWF0
ZWQgYXMgImFsbCIgYWNjb3JkaW5nCi0gICAgICogdG8gRE9NIHNwZWNzLCBhbiBlbXB0eSBsaXN0
IGFsd2F5cyByZXR1cm5zIHRydWUuCi0gICAgICoKICAgICAgKiBfTk9UXyBwYXJ0IG9mIHRoZSBE
T00hCiAgICAgICovCi0gICAgYm9vbCBjb250YWlucyggY29uc3QgRE9NOjpET01TdHJpbmcgJm1l
ZGl1bSApIGNvbnN0OwotCisgICAJdm9pZCBhcHBlbmRNZWRpYVF1ZXJ5KE1lZGlhUXVlcnlJbXBs
KiBtZWRpYVF1ZXJ5KTsKKwljb25zdCBNZWRpYVF1ZXJ5TGlzdEltcGwqIG1lZGlhUXVlcmllcygp
IGNvbnN0IHsgcmV0dXJuICZtX2xzdFF1ZXJpZXM7IH0KIHByb3RlY3RlZDoKLSAgICBRVmFsdWVM
aXN0PERPTTo6RE9NU3RyaW5nPiBtX2xzdE1lZGlhOworICAgIE1lZGlhUXVlcnlMaXN0SW1wbCBt
X2xzdFF1ZXJpZXM7CisgICAgRE9NOjpET01TdHJpbmcgbV9tZWRpYVRleHQ7ICAgIAogfTsKIAog
CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29y
ZS9raHRtbC9jc3MvY3NzbWVkaWFmZWF0dXJlcy5pbiB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9r
aHRtbC9jc3MvY3NzbWVkaWFmZWF0dXJlcy5pbgotLS0gd2Via2l0L1dlYkNvcmUva2h0bWwvY3Nz
L2Nzc21lZGlhZmVhdHVyZXMuaW4JMTk3MC0wMS0wMSAwMjowMDowMC4wMDAwMDAwMDAgKzAyMDAK
KysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2todG1sL2Nzcy9jc3NtZWRpYWZlYXR1cmVzLmlu
CTIwMDUtMDctMjEgMTE6MjQ6MTMuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEsMjkgQEAKK2Nv
bG9yCitjb2xvci1pbmRleAorZGV2aWNlLWFzcGVjdC1yYXRpbworZGV2aWNlLWhlaWdodAorZGV2
aWNlLXdpZHRoCitncmlkCitoZWlnaHQKK21heC1jb2xvcgorbWF4LWNvbG9yLWluZGV4CittYXgt
ZGV2aWNlLWFzcGVjdC1yYXRpbworbWF4LWRldmljZS1oZWlnaHQKK21heC1kZXZpY2Utd2lkdGgK
K21heC1oZWlnaHQKK21heC1tb25vY2hyb21lCittYXgtcmVzb2x1dGlvbgorbWF4LXdpZHRoCitt
aW4tY29sb3IKK21pbi1jb2xvci1pbmRleAorbWluLWRldmljZS1hc3BlY3QtcmF0aW8KK21pbi1k
ZXZpY2UtaGVpZ2h0CittaW4tZGV2aWNlLXdpZHRoCittaW4taGVpZ2h0CittaW4tbW9ub2Nocm9t
ZQorbWluLXJlc29sdXRpb24KK21pbi13aWR0aAorbW9ub2Nocm9tZQorcmVzb2x1dGlvbgorc2Nh
bgord2lkdGgKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtp
dC9XZWJDb3JlL2todG1sL2Nzcy9jc3NwYXJzZXIuY3BwIHdlYmtpdC1tb2RpZmllZC9XZWJDb3Jl
L2todG1sL2Nzcy9jc3NwYXJzZXIuY3BwCi0tLSB3ZWJraXQvV2ViQ29yZS9raHRtbC9jc3MvY3Nz
cGFyc2VyLmNwcAkyMDA1LTA3LTE5IDAzOjAyOjA3LjAwMDAwMDAwMCArMDMwMAorKysgd2Via2l0
LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc3BhcnNlci5jcHAJMjAwNS0wNy0yNSAxNDox
MzozOS4wMDAwMDAwMDAgKzAzMDAKQEAgLTMxLDYgKzMxLDcgQEAKICNpbmNsdWRlICJjc3NfdmFs
dWVpbXBsLmgiCiAjaW5jbHVkZSAiY3NzX3J1bGVpbXBsLmgiCiAjaW5jbHVkZSAiY3NzX3N0eWxl
c2hlZXRpbXBsLmgiCisjaW5jbHVkZSAiY3NzX21lZGlhcXVlcnlpbXBsLmgiCiAjaW5jbHVkZSAi
Y3NzcHJvcGVydGllcy5oIgogI2luY2x1ZGUgImNzc3ZhbHVlcy5oIgogI2luY2x1ZGUgIm1pc2Mv
aGVscGVyLmgiCkBAIC0zMDksNiArMzEwLDMwIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xh
cmF0aW9uKCBDU1NNdXQKICAgICByZXR1cm4gb2s7CiB9CiAKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJz
ZU1lZGlhUXVlcnkoIERPTTo6TWVkaWFMaXN0SW1wbCAqcXVlcmllcywgY29uc3QgRE9NOjpET01T
dHJpbmcgJnN0cmluZyApCit7ICAgIAorICAgIGlmIChzdHJpbmcuaXNFbXB0eSgpIHx8IHN0cmlu
Zy5pc051bGwoKSkgeworCQlyZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgbWVkaWFRdWVyeSA9IDA7
CisgICAgLy8gY2FuJ3QgdXNlIHsgYmVjYXVzZSB0b2tlbml6ZXIgc3RhdGUgc3dpdGNoZXMgZnJv
bSBtZWRpYXF1ZXJ5IHRvIGluaXRpYWwgc3RhdGUgd2hlbiBpdCBzZWVzIHsgdG9rZW4uCisgICAg
Ly8gaW5zdGVhZCBpbnNlcnQgb25lICIgIiAod2hpY2ggaXMgV0hJVEVTUEFDRSBpbiBwYXJzZXIu
eSkKKyAgICBzZXR1cFBhcnNlciAoIkAta2h0bWwtbWVkaWFxdWVyeSAiLCBzdHJpbmcsICJ9ICIp
OworICAgIAorICAgIENTU1BhcnNlciAqb2xkID0gY3VycmVudFBhcnNlcjsKKyAgICBjdXJyZW50
UGFyc2VyID0gdGhpczsKKyAgICBjc3N5eXBhcnNlKCB0aGlzICk7CisgICAgY3VycmVudFBhcnNl
ciA9IG9sZDsKKyAgICAKKyAgICBib29sIG9rID0gZmFsc2U7CisgICAgaWYgKG1lZGlhUXVlcnkp
IHsKKyAgICAJb2sgPSB0cnVlOworICAgIAlxdWVyaWVzLT5hcHBlbmRNZWRpYVF1ZXJ5KG1lZGlh
UXVlcnkpOworICAgICAgICBtZWRpYVF1ZXJ5ID0gMDsKKyAgICB9CisgICAgCisgICAgcmV0dXJu
IG9rOworfQogCiB2b2lkIENTU1BhcnNlcjo6YWRkUHJvcGVydHkoIGludCBwcm9wSWQsIENTU1Zh
bHVlSW1wbCAqdmFsdWUsIGJvb2wgaW1wb3J0YW50ICkKIHsKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUg
J0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9jc3NwYXJzZXIu
aCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9raHRtbC9jc3MvY3NzcGFyc2VyLmgKLS0tIHdlYmtp
dC9XZWJDb3JlL2todG1sL2Nzcy9jc3NwYXJzZXIuaAkyMDA1LTA3LTA5IDIzOjE5OjAwLjAwMDAw
MDAwMCArMDMwMAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc3BhcnNl
ci5oCTIwMDUtMDctMjEgMTE6MjQ6MTMuMDAwMDAwMDAwICswMzAwCkBAIC00MCw2ICs0MCw4IEBA
IG5hbWVzcGFjZSBET00gewogICAgIGNsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uSW1w
bDsKICAgICBjbGFzcyBDU1NQcm9wZXJ0eTsKICAgICBjbGFzcyBDU1NSdWxlTGlzdEltcGw7Cisg
ICAgY2xhc3MgTWVkaWFMaXN0SW1wbDsKKyAgICBjbGFzcyBNZWRpYVF1ZXJ5SW1wbDsKIAogCiAg
ICAgc3RydWN0IFBhcnNlU3RyaW5nIHsKQEAgLTExMyw3ICsxMTUsOCBAQCBuYW1lc3BhY2UgRE9N
IHsKICAgICAgICAgc3RhdGljIFFSZ2IgQ1NTUGFyc2VyOjpwYXJzZUNvbG9yKCBjb25zdCBET006
OkRPTVN0cmluZyAmc3RyaW5nICk7CiAJYm9vbCBwYXJzZUNvbG9yKCBET006OkNTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uSW1wbCAqZGVjbGFyYXRpb24sIGNvbnN0IERPTTo6RE9NU3RyaW5nICZz
dHJpbmcgKTsKIAlib29sIHBhcnNlRGVjbGFyYXRpb24oIERPTTo6Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb25JbXBsICpkZWNscywgY29uc3QgRE9NOjpET01TdHJpbmcgJnN0cmluZyApOwotCisg
ICAgYm9vbCBwYXJzZU1lZGlhUXVlcnkoIERPTTo6TWVkaWFMaXN0SW1wbCAqcXVlcmllcywgY29u
c3QgRE9NOjpET01TdHJpbmcgJnN0cmluZyApOworICAgIAogCXN0YXRpYyBDU1NQYXJzZXIgKmN1
cnJlbnQoKSB7IHJldHVybiBjdXJyZW50UGFyc2VyOyB9CiAKIApAQCAtMTU4LDYgKzE2MSw3IEBA
IG5hbWVzcGFjZSBET00gewogCWludCBpZDsKIAlET006OlN0eWxlTGlzdEltcGwgKnN0eWxlRWxl
bWVudDsKIAlET006OkNTU1J1bGVJbXBsICpydWxlOworCURPTTo6TWVkaWFRdWVyeUltcGwgKm1l
ZGlhUXVlcnk7CiAJVmFsdWVMaXN0ICp2YWx1ZUxpc3Q7CiAJQ1NTUHJvcGVydHkgKipwYXJzZWRQ
cm9wZXJ0aWVzOwogCWludCBudW1QYXJzZWRQcm9wZXJ0aWVzOwpkaWZmIC1OcnVwIC0tZXhjbHVk
ZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0eWxl
c2VsZWN0b3IuY3BwIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2todG1sL2Nzcy9jc3NzdHlsZXNl
bGVjdG9yLmNwcAotLS0gd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3Iu
Y3BwCTIwMDUtMDctMjAgMDM6NDU6NDguMDAwMDAwMDAwICswMzAwCisrKyB3ZWJraXQtbW9kaWZp
ZWQvV2ViQ29yZS9raHRtbC9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJMjAwNS0wNy0yNSAxNDox
Mzo0MC4wMDAwMDAwMDAgKzAzMDAKQEAgLTM5LDYgKzM5LDcgQEAgdXNpbmcgbmFtZXNwYWNlIERP
TTsKIAogI2luY2x1ZGUgImNzcy9jc3Nwcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiY3NzL2Nzc3Zh
bHVlcy5oIgorI2luY2x1ZGUgImNzcy9jc3NfbWVkaWFxdWVyeWV2YWwuaCIKIAogI2luY2x1ZGUg
Im1pc2Mva2h0bWxsYXlvdXQuaCIKICNpbmNsdWRlICJraHRtbF9zZXR0aW5ncy5oIgpAQCAtMTk2
LDEyICsxOTcsMzIgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvciggRG9jdQog
ICAgIHN0cmljdFBhcnNpbmcgPSBfc3RyaWN0UGFyc2luZzsKICAgICBzZXR0aW5ncyA9IHZpZXcg
PyB2aWV3LT5wYXJ0KCktPnNldHRpbmdzKCkgOiAwOwogICAgIGlmKCFkZWZhdWx0U3R5bGUpIGxv
YWREZWZhdWx0U3R5bGUoc2V0dGluZ3MpOwotICAgIG1fbWVkaXVtID0gdmlldyA/IHZpZXctPm1l
ZGlhVHlwZSgpIDogUVN0cmluZygiYWxsIik7Ci0KKyAgICAKICAgICBtX3VzZXJTdHlsZSA9IDA7
CiAgICAgbV91c2VyU2hlZXQgPSAwOwotICAgIHBhaW50RGV2aWNlTWV0cmljcyA9IGRvYy0+cGFp
bnREZXZpY2VNZXRyaWNzKCk7CisgICAgcGFpbnREZXZpY2VNZXRyaWNzID0gZG9jLT5wYWludERl
dmljZU1ldHJpY3MoKTsgICAgCiAKKyAgICAvLyBjb25zdHJ1Y3QgZG9jdW1lbnQgcm9vdCBlbGVt
ZW50IGRlZmF1bHQgc3R5bGUuIHRoaXMgaXMgbmVlZGVkIAorICAgCS8vIHRvIGV2YWx1YXRlIG1l
ZGlhIHF1ZXJpZXMgdGhhdCBjb250YWluIHJlbGF0aXZlIGNvbnN0cmFpbnRzLCBsaWtlICJzY3Jl
ZW4gYW5kIChtYXgtd2lkdGg6IDEwZW0pIgorICAgCS8vIFRoaXMgaXMgaGVyZSBpbnN0ZWFkIG9m
IGNvbnN0cnVjdG9yLCBiZWNhdXNlIHdoZW4gY29uc3RydWN0b3IgaXMgcnVuLCAKKyAgIAkvLyBk
b2N1bWVudCBkb2Vzbid0IGhhdmUgZG9jdW1lbnRFbGVtZW50CisgICAJLy8gWFhYOiB0aGlzIGFz
c3VtZXMgdGhhdCBlbGVtZW50IHRoYXQgZ2V0cyBwYXNzZWQgdG8gc3R5bGVGb3JFbGVtZW50IC1j
YWxsIAorICAgCS8vIGlzIGZyb20gdGhlIGRvY3VtZW50IHRoYXQgb3ducyB0aGUgc3R5bGUgc2Vs
ZWN0b3IgICAJCQorICAgCWlmICh2aWV3KSB7CisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlh
UXVlcnlFdmFsdWF0b3Iodmlldy0+bWVkaWFUeXBlKCkpOworICAgIH0gZWxzZSB7ICAgIAkKKwkJ
bV9tZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigiYWxsIik7CisgICAgfSAgICAKKyAg
IAlFbGVtZW50SW1wbCAqcm9vdCA9IGRvYy0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAJaWYgKHJv
b3QpIHsgICAJCQorCQltX3Jvb3REZWZhdWx0U3R5bGUgPSBkZWZhdWx0U3R5bGVGb3JSb290KHJv
b3QpOworICAgCQltX3Jvb3REZWZhdWx0U3R5bGUtPnJlZigpOworICAgCX0gICAJCisgICAJaWYg
KG1fcm9vdERlZmF1bHRTdHlsZSAmJiB2aWV3KSB7ICAgCQkKKyAgIAkJZGVsZXRlIG1fbWVkaXVt
OworICAgCQltX21lZGl1bSA9IG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKHZpZXctPm1lZGlhVHlw
ZSgpLCB2aWV3LCBwYWludERldmljZU1ldHJpY3MsIG1fcm9vdERlZmF1bHRTdHlsZSk7CisgICAJ
fSAJCQorICAgIAogICAgIC8vIEZJWE1FOiBUaGlzIHN1Y2tzISBUaGUgdXNlciBzaGVldCBpcyBy
ZXBhcnNlZCBldmVyeSB0aW1lIQogICAgIGlmICghdXNlclN0eWxlU2hlZXQuaXNFbXB0eSgpKSB7
CiAgICAgICAgIG1fdXNlclNoZWV0ID0gbmV3IERPTTo6Q1NTU3R5bGVTaGVldEltcGwoZG9jKTsK
QEAgLTIxMCwxNSArMjMxLDE1IEBAIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3Io
IERvY3UKICAgICAgICAgbV91c2VyU3R5bGUgPSBuZXcgQ1NTUnVsZVNldCgpOwogICAgICAgICBt
X3VzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoIG1fdXNlclNoZWV0LCBtX21lZGl1bSApOwog
ICAgIH0KLQorICAgIAogICAgIC8vIGFkZCBzdHlsZXNoZWV0cyBmcm9tIGRvY3VtZW50Ci0gICAg
bV9hdXRob3JTdHlsZSA9IG5ldyBDU1NSdWxlU2V0KCk7CisgICAgbV9hdXRob3JTdHlsZSA9IG5l
dyBDU1NSdWxlU2V0KCk7ICAgICAgICAKIAogICAgIFFQdHJMaXN0SXRlcmF0b3I8U3R5bGVTaGVl
dEltcGw+IGl0KHN0eWxlU2hlZXRzLT5zdHlsZVNoZWV0cyk7CiAgICAgZm9yICg7IGl0LmN1cnJl
bnQoKTsgKytpdCkKICAgICAgICAgaWYgKGl0LmN1cnJlbnQoKS0+aXNDU1NTdHlsZVNoZWV0KCkp
CiAgICAgICAgICAgICBtX2F1dGhvclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzdGF0aWNfY2Fz
dDxDU1NTdHlsZVNoZWV0SW1wbCo+KGl0LmN1cnJlbnQoKSksIG1fbWVkaXVtKTsKLQorICAgCQog
ICAgIC8va2REZWJ1ZyggNjA4MCApIDw8ICJudW1iZXIgb2Ygc3R5bGUgc2hlZXRzIGluIGRvY3Vt
ZW50ICIgPDwgYXV0aG9yU3R5bGVTaGVldHMuY291bnQoKSA8PCBlbmRsOwogICAgIC8va2REZWJ1
ZyggNjA4MCApIDw8ICJDU1NTdHlsZVNlbGVjdG9yOiBhdXRob3Igc3R5bGUgaGFzICIgPDwgYXV0
aG9yU3R5bGUtPmNvdW50KCkgPDwgIiBlbGVtZW50cyI8PCBlbmRsOwogfQpAQCAtMjI5LDEwICsy
NTAsMjUgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvciggQ1NTUwogCiAgICAg
aWYoIWRlZmF1bHRTdHlsZSkgbG9hZERlZmF1bHRTdHlsZSgpOwogICAgIEtIVE1MVmlldyAqdmll
dyA9IHNoZWV0LT5kb2MoKS0+dmlldygpOwotICAgIG1fbWVkaXVtID0gIHZpZXcgPyB2aWV3LT5t
ZWRpYVR5cGUoKSA6IFFTdHJpbmcoImFsbCIpOworICAgIAorICAgIAorICAgIGlmICh2aWV3KSB7
CisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlhUXVlcnlFdmFsdWF0b3Iodmlldy0+bWVkaWFU
eXBlKCkpOworICAgIH0gZWxzZSB7ICAgIAkKKwkJbV9tZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2
YWx1YXRvcigiYWxsIik7CisgICAgfSAKKyAgICBFbGVtZW50SW1wbCAqcm9vdCA9IHNoZWV0LT5k
b2MoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAJaWYgKHJvb3QpIHsgICAJCQorCQltX3Jvb3RE
ZWZhdWx0U3R5bGUgPSBkZWZhdWx0U3R5bGVGb3JSb290KHJvb3QpOworICAgCQltX3Jvb3REZWZh
dWx0U3R5bGUtPnJlZigpOworICAgCX0gICAJCisgICAJaWYgKG1fcm9vdERlZmF1bHRTdHlsZSAm
JiB2aWV3KSB7ICAgCQkKKyAgIAkJZGVsZXRlIG1fbWVkaXVtOworICAgCQltX21lZGl1bSA9IG5l
dyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKHZpZXctPm1lZGlhVHlwZSgpLCB2aWV3LCBwYWludERldmlj
ZU1ldHJpY3MsIG1fcm9vdERlZmF1bHRTdHlsZSk7CisgICAJfQogCiAgICAgbV9hdXRob3JTdHls
ZSA9IG5ldyBDU1NSdWxlU2V0KCk7Ci0gICAgbV9hdXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hl
ZXQoIHNoZWV0LCBtX21lZGl1bSApOworICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNo
ZWV0KCBzaGVldCwgbV9tZWRpdW0gKTsgICAgCiB9CiAKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
aW5pdCgpCkBAIC0yNDEsNiArMjc3LDggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjppbml0KCkK
ICAgICBzZXR0aW5ncyA9IDA7CiAgICAgcGFpbnREZXZpY2VNZXRyaWNzID0gMDsKICAgICBtX21h
dGNoZWRSdWxlQ291bnQgPSBtX21hdGNoZWREZWNsQ291bnQgPSBtX3RtcFJ1bGVDb3VudCA9IDA7
CisgICAgbV9yb290RGVmYXVsdFN0eWxlID0gMDsKKyAgICBtX3Jlc29sdmluZ0ZvclJvb3REZWZh
dWx0U3R5bGUgPSBmYWxzZTsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzZXRFbmNvZGVk
VVJMKGNvbnN0IEtVUkwmIHVybCkKQEAgLTI2NCw2ICszMDIsOCBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OnNldEVuY29kZWRVUkwoY29uCiAKIENTU1N0eWxlU2VsZWN0b3I6On5DU1NTdHlsZVNl
bGVjdG9yKCkKIHsKKwlkZWxldGUgbV9tZWRpdW07CQorCTo6ZGVsZXRlIG1fcm9vdERlZmF1bHRT
dHlsZTsKICAgICBkZWxldGUgbV9hdXRob3JTdHlsZTsKICAgICBkZWxldGUgbV91c2VyU3R5bGU7
CiAgICAgZGVsZXRlIG1fdXNlclNoZWV0OwpAQCAtMjk2LDE2ICszMzYsMTggQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjpsb2FkRGVmYXVsdFN0eWxlKAogICAgIGRlZmF1bHRTaGVldCA9IHBhcnNl
VUFTaGVldChzLCAia2h0bWwvY3NzL2h0bWw0LmNzcyIpOwogCiAgICAgLy8gQ29sbGVjdCBvbmx5
IHN0cmljdC1tb2RlIHJ1bGVzLgorICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Igc2NyZWVuRXZhbCgi
c2NyZWVuIik7CiAgICAgZGVmYXVsdFN0eWxlID0gbmV3IENTU1J1bGVTZXQoKTsKLSAgICBkZWZh
dWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgInNjcmVlbiIpOworICAg
IGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCAmc2NyZWVuRXZh
bCk7CiAKLSAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IG5ldyBDU1NSdWxlU2V0KCk7Ci0gICAgZGVm
YXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgInByaW50Iik7
CisgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWwoInByaW50Iik7CisgICAgZGVmYXVs
dFByaW50U3R5bGUgPSBuZXcgQ1NTUnVsZVNldCgpOyAgICAKKyAgICBkZWZhdWx0UHJpbnRTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCAmcHJpbnRFdmFsKTsKIAogICAgIC8v
IENvbGxlY3Qgb25seSBxdWlya3MtbW9kZSBydWxlcy4KICAgICBxdWlya3NTaGVldCA9IHBhcnNl
VUFTaGVldCgwLCAia2h0bWwvY3NzL3F1aXJrcy5jc3MiKTsKICAgICBkZWZhdWx0UXVpcmtzU3R5
bGUgPSBuZXcgQ1NTUnVsZVNldCgpOwotICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNG
cm9tU2hlZXQocXVpcmtzU2hlZXQsICJzY3JlZW4iKTsKKyAgICBkZWZhdWx0UXVpcmtzU3R5bGUt
PmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCAmc2NyZWVuRXZhbCk7CiB9CiAKIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6YWRkTWF0Y2hlZFJ1bGUoQ1NTUnVsZURhdGEqIHJ1bGUpCkBAIC00
ODYsOCArNTI4LDggQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjppbml0Rm9yU3R5bGVSZXNvbAog
ICAgIGlzWE1MRG9jID0gIWVsZW1lbnQtPmdldERvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCk7
CiAgICAgcGFydCA9IGVsZW1lbnQtPmdldERvY3VtZW50KCktPnBhcnQoKTsKICAgICBzZXR0aW5n
cyA9IHBhcnQgPyBwYXJ0LT5zZXR0aW5ncygpIDogMDsKLSAgICBwYWludERldmljZU1ldHJpY3Mg
PSBlbGVtZW50LT5nZXREb2N1bWVudCgpLT5wYWludERldmljZU1ldHJpY3MoKTsKLSAgICAKKyAg
ICBwYWludERldmljZU1ldHJpY3MgPSBlbGVtZW50LT5nZXREb2N1bWVudCgpLT5wYWludERldmlj
ZU1ldHJpY3MoKTsgICAJICAgCQorICAgICAgICAgICAgCiAgICAgc3R5bGUgPSAwOwogICAgIAog
ICAgIG1fbWF0Y2hlZFJ1bGVDb3VudCA9IDA7CkBAIC02ODAsNyArNzIyLDcgQEAgUmVuZGVyU3R5
bGUqIENTU1N0eWxlU2VsZWN0b3I6OmxvY2F0ZVNoYQogCiBSZW5kZXJTdHlsZSogQ1NTU3R5bGVT
ZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVsZW1lbnRJbXBsKiBlLCBSZW5kZXJTdHlsZSogZGVm
YXVsdFBhcmVudCwgYm9vbCBhbGxvd1NoYXJpbmcpCiB7Ci0gICAgaWYgKCFlLT5nZXREb2N1bWVu
dCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkgeworICAgIGlmICghbV9yZXNvbHZpbmdGb3JS
b290RGVmYXVsdFN0eWxlICYmICFlLT5nZXREb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2Fk
ZWQoKSkgewogICAgICAgICBpZiAoIXN0eWxlTm90WWV0QXZhaWxhYmxlKSB7CiAgICAgICAgICAg
ICBzdHlsZU5vdFlldEF2YWlsYWJsZSA9IDo6bmV3IFJlbmRlclN0eWxlKCk7CiAgICAgICAgICAg
ICBzdHlsZU5vdFlldEF2YWlsYWJsZS0+c2V0RGlzcGxheShOT05FKTsKQEAgLTcwMiw3ICs3NDQs
MTEgQEAgUmVuZGVyU3R5bGUqIENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRQogICAgIH0KICAg
ICBpbml0Rm9yU3R5bGVSZXNvbHZlKGUsIGRlZmF1bHRQYXJlbnQpOwogCi0gICAgc3R5bGUgPSBu
ZXcgKGUtPmdldERvY3VtZW50KCktPnJlbmRlckFyZW5hKCkpIFJlbmRlclN0eWxlKCk7CisJaWYg
KG1fcmVzb2x2aW5nRm9yUm9vdERlZmF1bHRTdHlsZSkgeworCQlzdHlsZSA9IDo6bmV3IFJlbmRl
clN0eWxlKCk7CQkKKwl9IGVsc2UgewkKKyAgICAJc3R5bGUgPSBuZXcgKGUtPmdldERvY3VtZW50
KCktPnJlbmRlckFyZW5hKCkpIFJlbmRlclN0eWxlKCk7CisJfQogICAgIGlmIChwYXJlbnRTdHls
ZSkKICAgICAgICAgc3R5bGUtPmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKICAgICBlbHNlCkBA
IC03MTcsMTYgKzc2MywxNyBAQCBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVG
b3JFCiAgICAgICAgIG1hdGNoUnVsZXMoZGVmYXVsdFF1aXJrc1N0eWxlLCBmaXJzdFVBUnVsZSwg
bGFzdFVBUnVsZSk7CiAgICAgCiAgICAgLy8gMy4gSWYgb3VyIG1lZGl1bSBpcyBwcmludCwgdGhl
biB3ZSBtYXRjaCBydWxlcyBmcm9tIHRoZSBwcmludCBzaGVldC4KLSAgICBpZiAobV9tZWRpdW0g
PT0gInByaW50IikKKyAgICBpZiAobV9tZWRpdW0tPm1lZGlhVHlwZU1hdGNoKCJwcmludCIpKQog
ICAgICAgICBtYXRjaFJ1bGVzKGRlZmF1bHRQcmludFN0eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVB
UnVsZSk7Ci0gICAgCi0gICAgLy8gNC4gTm93IHdlIGNoZWNrIHVzZXIgc2hlZXQgcnVsZXMuCisK
ICAgICBpbnQgZmlyc3RVc2VyUnVsZSA9IC0xLCBsYXN0VXNlclJ1bGUgPSAtMTsKKyAgICBpbnQg
Zmlyc3RBdXRob3JSdWxlID0gLTEsIGxhc3RBdXRob3JSdWxlID0gLTE7CisgICAgaWYgKCFtX3Jl
c29sdmluZ0ZvclJvb3REZWZhdWx0U3R5bGUpIHsKKyAgICAvLyA0LiBOb3cgd2UgY2hlY2sgdXNl
ciBzaGVldCBydWxlcy4KICAgICBtYXRjaFJ1bGVzKG1fdXNlclN0eWxlLCBmaXJzdFVzZXJSdWxl
LCBsYXN0VXNlclJ1bGUpOwogCiAgICAgLy8gNS4gTm93IGNoZWNrIGF1dGhvciBydWxlcywgYmVn
aW5uaW5nIGZpcnN0IHdpdGggcHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcwogICAgIC8vIG1hcHBl
ZCBmcm9tIEhUTUwuCi0gICAgaW50IGZpcnN0QXV0aG9yUnVsZSA9IC0xLCBsYXN0QXV0aG9yUnVs
ZSA9IC0xOwogICAgIGlmIChzdHlsZWRFbGVtZW50KSB7CiAgICAgICAgIC8vIEFzayBpZiB0aGUg
SFRNTCBlbGVtZW50IGhhcyBtYXBwZWQgYXR0cmlidXRlcy4KICAgICAgICAgaWYgKHN0eWxlZEVs
ZW1lbnQtPmhhc01hcHBlZEF0dHJpYnV0ZXMoKSkgewpAQCAtNzY1LDEzICs4MTIsMTUgQEAgUmVu
ZGVyU3R5bGUqIENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRQogICAgICAgICAgICAgYWRkTWF0
Y2hlZERlY2xhcmF0aW9uKGlubGluZURlY2wpOwogICAgICAgICB9CiAgICAgfQotICAgIAorIH0g
ICAKICAgICAvLyBOb3cgd2UgaGF2ZSBhbGwgb2YgdGhlIG1hdGNoZWQgcnVsZXMgaW4gdGhlIGFw
cHJvcHJpYXRlIG9yZGVyLiAgV2FsayB0aGUgcnVsZXMgYW5kIGFwcGx5CiAgICAgLy8gaGlnaC1w
cmlvcml0eSBwcm9wZXJ0aWVzIGZpcnN0LCBpLmUuLCB0aG9zZSBwcm9wZXJ0aWVzIHRoYXQgb3Ro
ZXIgcHJvcGVydGllcyBkZXBlbmQgb24uCiAgICAgLy8gVGhlIG9yZGVyIGlzICgxKSBoaWdoLXBy
aW9yaXR5IG5vdCBpbXBvcnRhbnQsICgyKSBoaWdoLXByaW9yaXR5IGltcG9ydGFudCwgKDMpIG5v
cm1hbCBub3QgaW1wb3J0YW50CiAgICAgLy8gYW5kICg0KSBub3JtYWwgaW1wb3J0YW50LgotICAg
IGFwcGx5RGVjbGFyYXRpb25zKHRydWUsIGZhbHNlLCAwLCBtX21hdGNoZWREZWNsQ291bnQtMSk7
Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RBdXRob3JSdWxlLCBsYXN0
QXV0aG9yUnVsZSk7CisgICAgaWYgKCFtX3Jlc29sdmluZ0ZvclJvb3REZWZhdWx0U3R5bGUpIHsK
KyAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xD
b3VudC0xKTsKKyAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RBdXRo
b3JSdWxlLCBsYXN0QXV0aG9yUnVsZSk7CisgICAgfQogICAgIGFwcGx5RGVjbGFyYXRpb25zKHRy
dWUsIHRydWUsIGZpcnN0VXNlclJ1bGUsIGxhc3RVc2VyUnVsZSk7CiAgICAgYXBwbHlEZWNsYXJh
dGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogICAgIApAQCAtNzg2
LDkgKzgzNSwxMCBAQCBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFCiAg
ICAgLy8gTm93IGRvIHRoZSBub3JtYWwgcHJpb3JpdHkgcHJvcGVydGllcy4KICAgICBhcHBseURl
Y2xhcmF0aW9ucyhmYWxzZSwgZmFsc2UsIDAsIG1fbWF0Y2hlZERlY2xDb3VudC0xKTsKICAgICBh
cHBseURlY2xhcmF0aW9ucyhmYWxzZSwgdHJ1ZSwgZmlyc3RBdXRob3JSdWxlLCBsYXN0QXV0aG9y
UnVsZSk7Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIHRydWUsIGZpcnN0VXNlclJ1bGUs
IGxhc3RVc2VyUnVsZSk7Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIHRydWUsIGZpcnN0
VUFSdWxlLCBsYXN0VUFSdWxlKTsKLSAgICAKKyAgICBpZiAoIW1fcmVzb2x2aW5nRm9yUm9vdERl
ZmF1bHRTdHlsZSl7CisgICAgICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVlLCBmaXJz
dFVzZXJSdWxlLCBsYXN0VXNlclJ1bGUpOworICAgICAgICBhcHBseURlY2xhcmF0aW9ucyhmYWxz
ZSwgdHJ1ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOworICAgIH0KICAgICAvLyBJZiBvdXIg
Zm9udCBnb3QgZGlydGllZCBieSBvbmUgb2YgdGhlIG5vbi1lc3NlbnRpYWwgZm9udCBwcm9wcywg
CiAgICAgLy8gZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBhIHNlY29uZCB0aW1lLgogICAgIGlmIChm
b250RGlydHkpIHsKQEAgLTE0NDMsMTMgKzE0OTMsMTMgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRS
dWxlKENTU1N0eWxlUnVsZUltcAogICAgICAgICBtX3VuaXZlcnNhbFJ1bGVzLT5hcHBlbmQobV9y
dWxlQ291bnQrKywgcnVsZSwgc2VsKTsKIH0KIAotdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zy
b21TaGVldChDU1NTdHlsZVNoZWV0SW1wbCAqc2hlZXQsIGNvbnN0IERPTVN0cmluZyAmbWVkaXVt
KQordm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdHlsZVNoZWV0SW1wbCAq
c2hlZXQsIE1lZGlhUXVlcnlFdmFsdWF0b3IgKm1lZGl1bSkKIHsKICAgICBpZiAoIXNoZWV0IHx8
ICFzaGVldC0+aXNDU1NTdHlsZVNoZWV0KCkpIHJldHVybjsKIAogICAgIC8vIE5vIG1lZGlhIGlt
cGxpZXMgImFsbCIsIGJ1dCBpZiBhIG1lZGlhIGxpc3QgZXhpc3RzIGl0IG11c3QKICAgICAvLyBj
b250YWluIG91ciBjdXJyZW50IG1lZGl1bQotICAgIGlmIChzaGVldC0+bWVkaWEoKSAmJiAhc2hl
ZXQtPm1lZGlhKCktPmNvbnRhaW5zKG1lZGl1bSkpCisgICAgaWYgKHNoZWV0LT5tZWRpYSgpICYm
ICFtZWRpdW0tPmV2YWwoc2hlZXQtPm1lZGlhKCkpKQogICAgICAgICByZXR1cm47IC8vIHRoZSBz
dHlsZSBzaGVldCBkb2Vzbid0IGFwcGx5CiAKICAgICBpbnQgbGVuID0gc2hlZXQtPmxlbmd0aCgp
OwpAQCAtMTQ2Nyw3ICsxNTE3LDcgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVl
dChDU1NTdAogICAgICAgICAgICAgLy9rZERlYnVnKCA2MDgwICkgPDwgIkBpbXBvcnQ6IE1lZGlh
OiAiCiAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICA8PCBpbXBvcnQtPm1lZGlhKCktPm1l
ZGlhVGV4dCgpLnN0cmluZygpIDw8IGVuZGw7CiAKLSAgICAgICAgICAgIGlmICghaW1wb3J0LT5t
ZWRpYSgpIHx8IGltcG9ydC0+bWVkaWEoKS0+Y29udGFpbnMobWVkaXVtKSkKKyAgICAgICAgICAg
IGlmICghaW1wb3J0LT5tZWRpYSgpIHx8IG1lZGl1bS0+ZXZhbChpbXBvcnQtPm1lZGlhKCkpKQog
ICAgICAgICAgICAgICAgIGFkZFJ1bGVzRnJvbVNoZWV0KGltcG9ydC0+c3R5bGVTaGVldCgpLCBt
ZWRpdW0pOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYoaXRlbS0+aXNNZWRpYVJ1bGUoKSkg
ewpAQCAtMTQ3OCw3ICsxNTI4LDcgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVl
dChDU1NTdAogICAgICAgICAgICAgLy9rZERlYnVnKCA2MDgwICkgPDwgIkBtZWRpYTogTWVkaWE6
ICIKICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgIDw8IHItPm1lZGlhKCktPm1lZGlhVGV4
dCgpLnN0cmluZygpIDw8IGVuZGw7CiAKLSAgICAgICAgICAgIGlmICgoIXItPm1lZGlhKCkgfHwg
ci0+bWVkaWEoKS0+Y29udGFpbnMobWVkaXVtKSkgJiYgcnVsZXMpIHsKKyAgICAgICAgICAgIGlm
ICgoIXItPm1lZGlhKCkgfHwgbWVkaXVtLT5ldmFsKHItPm1lZGlhKCkpKSAmJiBydWxlcykgewog
ICAgICAgICAgICAgICAgIC8vIFRyYXZlcnNlIGNoaWxkIGVsZW1lbnRzIG9mIHRoZSBAbWVkaWEg
cnVsZS4KICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGogPSAwOyBqIDwgcnVsZXMtPmxl
bmd0aCgpOyBqKyspIHsKICAgICAgICAgICAgICAgICAgICAgLy9rZERlYnVnKCA2MDgwICkgPDwg
IioqKiBSdWxlICMiIDw8IGogPDwgZW5kbDsKQEAgLTQxMTgsNSArNDE2OCwxNSBAQCBRQ29sb3Ig
Q1NTU3R5bGVTZWxlY3Rvcjo6Z2V0Q29sb3JGcm9tUHJpCiAgICAgICAgIGNvbC5zZXRSZ2IocHJp
bWl0aXZlVmFsdWUtPmdldFJHQkNvbG9yVmFsdWUoKSk7CiAgICAgcmV0dXJuIGNvbDsgICAgCiB9
CisJCitSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6ZGVmYXVsdFN0eWxlRm9yUm9vdChF
bGVtZW50SW1wbCogZSkKK3sKKyAgICAvLyBYWFg6IE5vdCBhIG5pY2Ugd2F5IHRvIG1ha2UgdGhl
IGFsbG9jYXRpb24gb2YgbmV3IHN0eWxlIGZyb20gZ2xvYmFsIGhlYXAgCisgICAgLy8gKGFuZCBu
b3QgZnJvbSBSZW5kZXJBcmVuYSksIGFuZCB0byBwcmV2ZW50IHNlbGVjdG9yIHRvIG1hdGNoIGF1
dGhvciBzdHlsZXNoZWV0IHJ1bGVzIAorICAgIG1fcmVzb2x2aW5nRm9yUm9vdERlZmF1bHRTdHls
ZSA9IHRydWU7CisgICAgUmVuZGVyU3R5bGUqIHJlc3VsdCA9IHN0eWxlRm9yRWxlbWVudChlLCAw
LCBmYWxzZSk7CisgICAgbV9yZXNvbHZpbmdGb3JSb290RGVmYXVsdFN0eWxlID0gZmFsc2U7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KIAogfSAvLyBuYW1lc3BhY2Uga2h0bWwKZGlmZiAtTnJ1cCAt
LWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9j
c3NzdHlsZXNlbGVjdG9yLmggd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0
eWxlc2VsZWN0b3IuaAotLS0gd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0
b3IuaAkyMDA1LTA3LTA5IDIzOjE5OjAwLjAwMDAwMDAwMCArMDMwMAorKysgd2Via2l0LW1vZGlm
aWVkL1dlYkNvcmUva2h0bWwvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaAkyMDA1LTA3LTI0IDEyOjM2
OjA5LjAwMDAwMDAwMCArMDMwMApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgInJlbmRlcmlu
Zy9yZW5kZXJfc3R5bGUuaCIKICNpbmNsdWRlICJkb20vZG9tX3N0cmluZy5oIgogI2luY2x1ZGUg
ImNzcy9jc3NfcnVsZWltcGwuaCIKKwogI2luY2x1ZGUgIm1pc2MvbWFpbl90aHJlYWRfbWFsbG9j
LmgiCiAKIGNsYXNzIEtIVE1MU2V0dGluZ3M7CkBAIC00Nyw2ICs0OCw3IEBAIG5hbWVzcGFjZSBE
T00gewogICAgIGNsYXNzIENTU1Byb3BlcnR5OwogICAgIGNsYXNzIFN0eWxlU2hlZXRMaXN0SW1w
bDsKICAgICBjbGFzcyBDU1NWYWx1ZUltcGw7CisgICAgY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRv
cjsKIH0KIAogbmFtZXNwYWNlIGtodG1sCkBAIC0xODIsNiArMTg0LDcgQEAgcHVibGljOgogIAog
ICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdCgpOworICAgICAgICBSZW5kZXJTdHlsZSAq
ZGVmYXVsdFN0eWxlRm9yUm9vdChET006OkVsZW1lbnRJbXBsKiBlKTsKICAgICAgICAgCiAgICAg
ICAgIHZvaWQgbWFwQmFja2dyb3VuZEF0dGFjaG1lbnQoQmFja2dyb3VuZExheWVyKiBsYXllciwg
RE9NOjpDU1NWYWx1ZUltcGwqIHZhbHVlKTsKICAgICAgICAgdm9pZCBtYXBCYWNrZ3JvdW5kSW1h
Z2UoQmFja2dyb3VuZExheWVyKiBsYXllciwgRE9NOjpDU1NWYWx1ZUltcGwqIHZhbHVlKTsKQEAg
LTIwNCw4ICsyMDcsMTAgQEAgcHVibGljOgogICAgICAgICBRTWVtQXJyYXk8Q1NTUnVsZURhdGEq
PiBtX3RtcFJ1bGVzOwogICAgICAgICB1bnNpZ25lZCBtX3RtcFJ1bGVDb3VudDsKICAgICAgICAg
Ci0gICAgICAgIFFTdHJpbmcgbV9tZWRpdW07Ci0KKyAgICAgICAgRE9NOjpNZWRpYVF1ZXJ5RXZh
bHVhdG9yKiBtX21lZGl1bTsKKyAgICAgICAgUmVuZGVyU3R5bGUqIG1fcm9vdERlZmF1bHRTdHls
ZTsKKyAgICAgICAgYm9vbCBtX3Jlc29sdmluZ0ZvclJvb3REZWZhdWx0U3R5bGU7CisJCQogCVJl
bmRlclN0eWxlOjpQc2V1ZG9JZCBkeW5hbWljUHNldWRvOwogCQogCVJlbmRlclN0eWxlICpzdHls
ZTsKQEAgLTI3NCw3ICsyNzksNyBAQCBwdWJsaWM6CiAKICAgICAgICAgdHlwZWRlZiBIYXNoTWFw
PERPTTo6RE9NU3RyaW5nSW1wbCAqLCBDU1NSdWxlRGF0YUxpc3QgKiwgUG9pbnRlckhhc2g8RE9N
OjpET01TdHJpbmdJbXBsICo+ID4gQXRvbVJ1bGVNYXA7CiAKLSAgICAgICAgdm9pZCBhZGRSdWxl
c0Zyb21TaGVldChET006OkNTU1N0eWxlU2hlZXRJbXBsKiBzaGVldCwgY29uc3QgRE9NOjpET01T
dHJpbmcgJm1lZGl1bSA9ICJzY3JlZW4iKTsKKyAgICAgICAgdm9pZCBhZGRSdWxlc0Zyb21TaGVl
dChET006OkNTU1N0eWxlU2hlZXRJbXBsKiBzaGVldCwgRE9NOjpNZWRpYVF1ZXJ5RXZhbHVhdG9y
KiBtZWRpdW0pOwogCiAgICAgICAgIHZvaWQgYWRkUnVsZShET006OkNTU1N0eWxlUnVsZUltcGwq
IHJ1bGUsIERPTTo6Q1NTU2VsZWN0b3IqIHNlbCk7CiAgICAgICAgIHZvaWQgYWRkVG9SdWxlU2V0
KERPTTo6RE9NU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVsZU1hcCYgbWFwLApkaWZmIC1OcnVwIC0t
ZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL21h
a2VtZWRpYWZlYXR1cmVzIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2todG1sL2Nzcy9tYWtlbWVk
aWFmZWF0dXJlcwotLS0gd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL21ha2VtZWRpYWZlYXR1cmVz
CTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQv
V2ViQ29yZS9raHRtbC9jc3MvbWFrZW1lZGlhZmVhdHVyZXMJMjAwNS0wNy0yMiAxNjoxMDo0Ny4w
MDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSw1NyBAQAorIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBLREUgbGlicmFyaWVzCisjCisjICAgQ29weXJpZ2h0IChDKSAxOTk5IFdhbGRvIEJhc3Rp
YW4gKGJhc3RpYW5Aa2RlLm9yZykKKyMKKyMgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjICAgbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyMgICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisjCisjICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyAgIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyMgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyMgICBCb3N0b24sIE1B
IDAyMTExLTEzMDcsIFVTQS4KKyMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCisjICBLREUgSFRN
TCBXaWRnZXQgLS0gU2NyaXB0IHRvIGdlbmVyYXRlIGNzc21lZGlhZmVhdHVyZXMuYyBhbmQgY3Nz
bWVkaWFmZWF0dXJlcy5oCisjCitncmVwICJeW15cI10iIGNzc21lZGlhZmVhdHVyZXMuaW4gPiBj
c3NtZWRpYWZlYXR1cmVzLnN0cmlwCisKK2VjaG8gLWUgJyV7XG4vKiBUaGlzIGZpbGUgaXMgYXV0
b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjc3NtZWRpYWZlYXR1cmVzLmluIGJ5IG1ha2Vwcm9w
LCBkbyBub3QgZWRpdCAqL1xuLyogQ29weXJpZ2h0IDE5OTkgVy4gQmFzdGlhbiAqL1xuI2luY2x1
ZGUgImNzc21lZGlhZmVhdHVyZXMuaCJcbiV9XG5zdHJ1Y3QgY3NzX21lZGlhX2ZlYXR1cmVfcGFp
ciB7XG4gICAgY29uc3QgY2hhciAqbmFtZTtcbiAgICBpbnQgaWQ7XG59O1xuJSUnID4gY3NzbWVk
aWFmZWF0dXJlcy5ncGVyZgorY2F0IGNzc21lZGlhZmVhdHVyZXMuc3RyaXAgfCBhd2sgJ3sgZG8g
eyBwcm9wID0gJDA7IGdzdWIoIi0iLCAiXyIpOyBwcmludCBwcm9wICIsIENTU19NRURJQV9GRUFU
XyIgdG91cHBlcigkMCkgfSB3aGlsZSAoZ2V0bGluZSkgfScgPj4gY3NzbWVkaWFmZWF0dXJlcy5n
cGVyZgorZWNobyAnJSUnID4+IGNzc21lZGlhZmVhdHVyZXMuZ3BlcmYKK2VjaG8gLWUgJy8qIFRo
aXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNzc21lZGlhZmVhdHVyZXMu
aW4gYnkgbWFrZXByb3AsIGRvIG5vdCBlZGl0ICovXG4vKiBDb3B5cmlnaHQgMTk5OCBXLiBCYXN0
aWFuICovXG5cbiNpZm5kZWYgQ1NTTUVESUFGRUFUVVJFU19IXG4jZGVmaW5lIENTU01FRElBRkVB
VFVSRVNfSFxuXG5ET006OkRPTVN0cmluZyBnZXRNZWRpYUZlYXR1cmVOYW1lKHVuc2lnbmVkIHNo
b3J0IGlkKTtcbicgPiBjc3NtZWRpYWZlYXR1cmVzLmgKK2NhdCBjc3NtZWRpYWZlYXR1cmVzLnN0
cmlwIHwgYXdrICd7IFwKK2k9MTsgXAorcHJpbnQgIiNkZWZpbmUgQ1NTX01FRElBX0ZFQVRfSU5W
QUxJRCAwIjsgXAorcHJpbnQgIiNkZWZpbmUgQ1NTX01FRElBX0ZFQVRfTUlOIDEiOyBcCitkbyB7
IGdzdWIoIi0iLCAiXyIpOyBwcmludCAiI2RlZmluZSBDU1NfTUVESUFfRkVBVF8iIHRvdXBwZXIo
JDApICIgIiBpOyBpID0gaSArIDEgfSB3aGlsZSAoZ2V0bGluZSk7IFwKK3ByaW50ICIiOyBcCitw
cmludCAiI2RlZmluZSBDU1NfTUVESUFfRkVBVF9NQVggQ1NTX01FRElBX0ZFQVRfV0lEVEgiOyBc
CitwcmludCAiI2RlZmluZSBDU1NfTUVESUFfRkVBVF9UT1RBTCAiIGkgXAorfScgPj4gY3NzbWVk
aWFmZWF0dXJlcy5oCitncGVyZiAtYSAtTCAnQU5TSS1DJyAtRSAtQyAtYyAtbyAtdCAtayAnKicg
LU5maW5kTWVkaWFGZWF0dXJlIC1IaGFzaF9tZWRpYV9mZWF0IC1Xd29yZGxpc3RfbWVkaWFfZmVh
dCAtRCAtcyAyIGNzc21lZGlhZmVhdHVyZXMuZ3BlcmYgPiBjc3NtZWRpYWZlYXR1cmVzLmMgfHwg
ZXhpdCAxCitlY2hvIC1lICcjZW5kaWZcbicgPj4gY3NzbWVkaWFmZWF0dXJlcy5oCisKK2NhdCBj
c3NtZWRpYWZlYXR1cmVzLnN0cmlwIHwgYXdrICd7IFwKK2k9MTsgXAorcHJpbnQgInN0YXRpYyBj
b25zdCBjaGFyICogY29uc3QgbWVkaWFGZWF0dXJlTGlzdFtdID0geyI7IFwKK3ByaW50ICJcIlwi
LCI7IFwKK2RvIHsgcHJpbnQgIlwiIiAkMCAiXCIsICI7IGkgPSBpICsgMSB9IHdoaWxlIChnZXRs
aW5lKTsgXAorcHJpbnQgIiAgICAwIjsgXAorcHJpbnQgIn07IjsgXAorcHJpbnQgIkRPTVN0cmlu
ZyBnZXRNZWRpYUZlYXR1cmVOYW1lKHVuc2lnbmVkIHNob3J0IGlkKSI7IFwKK3ByaW50ICJ7Ijsg
XAorcHJpbnQgIiAgICBpZihpZCA+PSBDU1NfTUVESUFfRkVBVF9UT1RBTCB8fCBpZCA9PSAwKSI7
IFwKK3ByaW50ICIgICAgICByZXR1cm4gRE9NU3RyaW5nKCk7IjtcCitwcmludCAiICAgIGVsc2Ui
O1wKK3ByaW50ICIgICAgICByZXR1cm4gRE9NU3RyaW5nKG1lZGlhRmVhdHVyZUxpc3RbaWRdKTsi
OyBcCitwcmludCAifTsiOyBcCitwcmludCAiIjsgXAorfScgPj4gY3NzbWVkaWFmZWF0dXJlcy5j
CmRpZmYgLU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29y
ZS9raHRtbC9jc3MvbWFrZXRva2VuaXplciB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9raHRtbC9j
c3MvbWFrZXRva2VuaXplcgotLS0gd2Via2l0L1dlYkNvcmUva2h0bWwvY3NzL21ha2V0b2tlbml6
ZXIJMjAwMy0wNC0xMCAxOTo1MjozNC4wMDAwMDAwMDAgKzAzMDAKKysrIHdlYmtpdC1tb2RpZmll
ZC9XZWJDb3JlL2todG1sL2Nzcy9tYWtldG9rZW5pemVyCTIwMDUtMDctMjEgMTE6MjQ6MTMuMDAw
MDAwMDAwICswMzAwCkBAIC01Myw2ICs1MywxNSBAQCB3aGlsZSAoPD4pIHsKICAgICBwcmludDsK
IH0KIAorIyBtZWRpYSBxdWVyeSwgdG9rZW5pemVyIHN0YXRlIHN1cHBvcnQKK3doaWxlICg8Pikg
eworICBsYXN0IGlmIC95eXRleHQvOworfQord2hpbGUgKDw+KSB7CisgIGxhc3QgaWYgbm90ICgv
ZGVmaW5lLyB8fCAvbGluZS8pIDsKKyAgcHJpbnQ7Cit9CisKIHdoaWxlICg8PikgewogICAgIGxh
c3QgaWYgL15ZWV9ERUNMLzsKIH0KZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0tZXhjbHVk
ZSAnLionIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9wYXJzZXIueSB3ZWJraXQtbW9kaWZpZWQv
V2ViQ29yZS9raHRtbC9jc3MvcGFyc2VyLnkKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2Nzcy9w
YXJzZXIueQkyMDA1LTA3LTE5IDAwOjQ0OjEzLjAwMDAwMDAwMCArMDMwMAorKysgd2Via2l0LW1v
ZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL3BhcnNlci55CTIwMDUtMDctMjUgMTU6MzE6MDQuMDAw
MDAwMDAwICswMzAwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSA8Y3NzL2Nzc19ydWxlaW1w
bC5oPgogI2luY2x1ZGUgPGNzcy9jc3Nfc3R5bGVzaGVldGltcGwuaD4KICNpbmNsdWRlIDxjc3Mv
Y3NzX3ZhbHVlaW1wbC5oPgorI2luY2x1ZGUgPGNzcy9jc3NfbWVkaWFxdWVyeWltcGwuaD4KICNp
bmNsdWRlICJodG1sbmFtZXMuaCIKICNpbmNsdWRlICJjc3NwYXJzZXIuaCIKICAgIApAQCAtNTMs
NiArNTQsNyBAQCB1c2luZyBuYW1lc3BhY2UgRE9NOwogI2RlZmluZSBfX2lubGluZQogI2luY2x1
ZGUgImNzc3Byb3BlcnRpZXMuYyIKICNpbmNsdWRlICJjc3N2YWx1ZXMuYyIKKyNpbmNsdWRlICJj
c3NtZWRpYWZlYXR1cmVzLmMiCiAjdW5kZWYgX19pbmxpbmUKIAogbmFtZXNwYWNlIERPTSB7CkBA
IC0xMTAsNiArMTEyLDE0IEBAIHN0YXRpYyBpbmxpbmUgaW50IGdldFZhbHVlSUQoY29uc3QgY2hh
ciAKICAgICByZXR1cm4gdmFsLT5pZDsKIH0KIAorc3RhdGljIGlubGluZSBpbnQgZ2V0TWVkaWFG
ZWF0dXJlSUQoY29uc3QgY2hhciAqdGFnU3RyLCBpbnQgbGVuKQoreworICAgIGNvbnN0IHN0cnVj
dCBjc3NfbWVkaWFfZmVhdHVyZV9wYWlyICpmZWF0ID0gZmluZE1lZGlhRmVhdHVyZSh0YWdTdHIs
IGxlbik7CisgICAgaWYgKCFmZWF0KQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBm
ZWF0LT5pZDsKK30KIAogI2RlZmluZSBZWURFQlVHIDAKICNkZWZpbmUgWVlQQVJTRV9QQVJBTSBw
YXJzZXIKQEAgLTEzNCw2ICsxNDQsMTIgQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0VmFsdWVJRChj
b25zdCBjaGFyIAogICAgIGNoYXIgdG9rOwogICAgIFZhbHVlIHZhbHVlOwogICAgIFZhbHVlTGlz
dCAqdmFsdWVMaXN0OworICAgIAorICAgIGludCBtZWRpYV9mZWF0dXJlX2lkOworICAgIE1lZGlh
UXVlcnlJbXBsICptZWRpYVF1ZXJ5OworICAgIE1lZGlhUXVlcnlFeHBJbXBsICptZWRpYVF1ZXJ5
RXhwOworICAgIE1lZGlhUXVlcnlFeHBMaXN0SW1wbCAqbWVkaWFRdWVyeUV4cExpc3Q7CisgICAg
TWVkaWFRdWVyeUltcGw6OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJlc3RyaWN0b3I7ICAgIAogfQog
CiAlewpAQCAtMTg0LDkgKzIwMCwxNCBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KCBZWVNUWVBFICp5
eWx2YWwgKSB7CiAldG9rZW4gS0hUTUxfUlVMRV9TWU0KICV0b2tlbiBLSFRNTF9ERUNMU19TWU0K
ICV0b2tlbiBLSFRNTF9WQUxVRV9TWU0KKyV0b2tlbiBLSFRNTF9NRURJQVFVRVJZX1NZTQogCiAl
dG9rZW4gSU1QT1JUQU5UX1NZTQogCisldG9rZW4gTUVESUFfT05MWQorJXRva2VuIE1FRElBX05P
VAorJXRva2VuIE1FRElBX0FORAorCiAldG9rZW4gPHZhbD4gUUVNUwogJXRva2VuIDx2YWw+IEVN
UwogJXRva2VuIDx2YWw+IEVYUwpAQCAtMjMzLDkgKzI1NCwxNSBAQCBzdGF0aWMgaW50IGNzc3l5
bGV4KCBZWVNUWVBFICp5eWx2YWwgKSB7CiAldHlwZSA8c3RyaW5nPiBtZWRpdW0KICV0eXBlIDxz
dHJpbmc+IGhleGNvbG9yCiAKKyV0eXBlIDxtZWRpYV9mZWF0dXJlX2lkPiBtZWRpYV9mZWF0dXJl
CiAldHlwZSA8bWVkaWFMaXN0PiBtZWRpYV9saXN0CiAldHlwZSA8bWVkaWFMaXN0PiBtYXliZV9t
ZWRpYV9saXN0Ci0KKyV0eXBlIDxtZWRpYVF1ZXJ5PiBtZWRpYV9xdWVyeQorJXR5cGUgPG1lZGlh
UXVlcnlSZXN0cmljdG9yPiBtYXliZV9tZWRpYV9yZXN0cmljdG9yCisldHlwZSA8dmFsdWVMaXN0
PiBtYXliZV9tZWRpYV92YWx1ZQorJXR5cGUgPG1lZGlhUXVlcnlFeHA+IG1lZGlhX3F1ZXJ5X2V4
cAorJXR5cGUgPG1lZGlhUXVlcnlFeHBMaXN0PiBtZWRpYV9xdWVyeV9leHBfbGlzdAorJXR5cGUg
PG1lZGlhUXVlcnlFeHBMaXN0PiBtYXliZV9tZWRpYV9xdWVyeV9leHBfbGlzdAogJXR5cGUgPHJ1
bGVMaXN0PiBydWxlc2V0X2xpc3QKIAogJXR5cGUgPHByb3BfaWQ+IHByb3BlcnR5CkBAIC0yNzQs
NiArMzAxLDcgQEAgc3R5bGVzaGVldDoKICAgfCBraHRtbF9ydWxlIG1heWJlX3NwYWNlCiAgIHwg
a2h0bWxfZGVjbHMgbWF5YmVfc3BhY2UKICAgfCBraHRtbF92YWx1ZSBtYXliZV9zcGFjZQorICB8
IGtodG1sX21lZGlhcXVlcnkgbWF5YmVfc3BhY2UKICAgOwogCiBraHRtbF9ydWxlOgpAQCAtMzE0
LDYgKzM0MiwxOCBAQCBraHRtbF92YWx1ZToKICAgICB9CiA7CiAKK2todG1sX21lZGlhcXVlcnk6
CisgICAgS0hUTUxfTUVESUFRVUVSWV9TWU0gV0hJVEVTUEFDRSBtYXliZV9zcGFjZSBtZWRpYV9x
dWVyeSAnfScgeworICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIg
Kj4ocGFyc2VyKTsKKyAgICAgICAgcC0+bWVkaWFRdWVyeSA9ICQ0OwkJCQorCX0KKyAgICB8IEtI
VE1MX01FRElBUVVFUllfU1lNIFdISVRFU1BBQ0UgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnkgZXJy
b3IgJ30neworICAgICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4o
cGFyc2VyKTsKKyAgICAgICAgcC0+bWVkaWFRdWVyeSA9ICQ0OworCX0KKworOworCiBtYXliZV9z
cGFjZToKICAgICAvKiBlbXB0eSAqLwogICB8IG1heWJlX3NwYWNlIFdISVRFU1BBQ0UKQEAgLTQx
OSwzNSArNDU5LDExNyBAQCBTVFJJTkcKIHwgVVJJCiA7CiAKK21lZGlhX2ZlYXR1cmU6CisgICAg
SURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgICBRU3RyaW5nIHN0ciA9IHFTdHJpbmcoJDEpOwor
CQkkJCA9IGdldE1lZGlhRmVhdHVyZUlEKCBzdHIubG93ZXIoKS5sYXRpbjEoKSwgc3RyLmxlbmd0
aCgpICk7CisgICAgfQorOworCittYXliZV9tZWRpYV92YWx1ZToKKyAgICAvKmVtcHR5Ki8gewor
ICAgICAgICAkJCA9IDA7CisgICAgfQorICAgIHwgJzonIG1heWJlX3NwYWNlIGV4cHIgbWF5YmVf
c3BhY2UgeworICAgICAgICAkJCA9ICQzOworICAgIH0KKzsKKworbWVkaWFfcXVlcnlfZXhwOgor
ICAgICcoJyBtYXliZV9zcGFjZSBtZWRpYV9mZWF0dXJlIG1heWJlX3NwYWNlIG1heWJlX21lZGlh
X3ZhbHVlICcpJyBtYXliZV9zcGFjZSB7CisgICAgICAgICQkID0gbmV3IE1lZGlhUXVlcnlFeHBJ
bXBsKCQzLCAkNSk7CisgICAgfQorOworCittZWRpYV9xdWVyeV9leHBfbGlzdDoKKyAgICBtZWRp
YV9xdWVyeV9leHAgeworICAgICAgICAkJCA9IG5ldyBNZWRpYVF1ZXJ5RXhwTGlzdEltcGw7Cisg
ICAgICAgICQkLT5hcHBlbmQoJDEpOworICAgIH0KKyAgICB8IG1lZGlhX3F1ZXJ5X2V4cF9saXN0
IE1FRElBX0FORCBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeV9leHAgeworICAgICAgICAkJCA9ICQx
OworICAgICAgICBpZiAoJCQpCisgICAgICAgICAgICAkJC0+YXBwZW5kKCQ0KTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgZGVsZXRlICgkNCk7CisgICAgfQorICAgIHwgbWVkaWFfcXVlcnlf
ZXhwX2xpc3QgZXJyb3IgeworICAgICAgICAvLyBFcnJvciB3aGlsZSBwYXJzaW5nIG1lZGlhIGZl
YXR1cmUgbGlzdC4gRGVsZXRlIHRoZSBsaXN0IGFuZCByZXR1cm4gMCwgd2hpY2ggbWVhbnMKKyAg
ICAgICAgLy8gdGhhdCB3ZSBzaG91bGQgaGFuZGxlIHRoZSBtZWRpYSBxdWVyeSBhcyBjc3MgMi4x
IG1lZGlhIHR5cGUgKG9yIEhUTUw0IG1lZGlhIGRlc2NyaXB0aW9uKSAKKyAgICAgICAgZGVsZXRl
ICgkMSk7CisgICAgICAgICQkPTA7ICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgIDsKKwor
bWF5YmVfbWVkaWFfcXVlcnlfZXhwX2xpc3Q6CisgICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQg
PSBuZXcgTWVkaWFRdWVyeUV4cExpc3RJbXBsOworICAgIH0KKyAgICB8IE1FRElBX0FORCBtYXli
ZV9zcGFjZSBtZWRpYV9xdWVyeV9leHBfbGlzdCB7CisgICAgICAgICQkID0gJDM7CisgICAgfSAK
KyAgICB8IE1FRElBX0FORCBlcnJvciB7CisgICAgICAgICQkID0gMDsKKyAgICB9Cis7CisKK21h
eWJlX21lZGlhX3Jlc3RyaWN0b3I6CisgICAgLyplbXB0eSoveworICAgICAgICAkJCA9IE1lZGlh
UXVlcnlJbXBsOjpOb25lOworICAgIH0KKyAgICB8IE1FRElBX09OTFkgeworICAgICAgICAkJCA9
IE1lZGlhUXVlcnlJbXBsOjpPbmx5OworICAgIH0KKyAgICB8IE1FRElBX05PVCB7CisgICAgICAg
ICQkID0gTWVkaWFRdWVyeUltcGw6Ok5vdDsKKyAgICB9Cis7CisKK21lZGlhX3F1ZXJ5OgorICAg
IG1heWJlX21lZGlhX3Jlc3RyaWN0b3IgbWF5YmVfc3BhY2UgbWVkaXVtIG1heWJlX21lZGlhX3F1
ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAgaWYgKCQ0KSB7ICAgICAgICAKKyAgICAgICAgICAgICQk
ID0gbmV3IE1lZGlhUXVlcnlJbXBsKCQxLCBkb21TdHJpbmcoJDMpLCAkNCk7CisgICAgICAgIH0g
ZWxzZSBpZiAoJDEgPT0gTWVkaWFRdWVyeUltcGw6Ok9ubHkpIHsKKyAgICAgICAgICAgICQkID0g
bmV3IE1lZGlhUXVlcnlJbXBsKE1lZGlhUXVlcnlJbXBsOjpOb25lLCAib25seSIsIG5ldyBNZWRp
YVF1ZXJ5RXhwTGlzdEltcGwpOyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgIGlmICgkMSA9
PSBNZWRpYVF1ZXJ5SW1wbDo6Tm90KSB7CisgICAgICAgICAgICAkJCA9IG5ldyBNZWRpYVF1ZXJ5
SW1wbChNZWRpYVF1ZXJ5SW1wbDo6Tm9uZSwgIm5vdCIsIG5ldyBNZWRpYVF1ZXJ5RXhwTGlzdElt
cGwpOyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBuZXcg
TWVkaWFRdWVyeUltcGwoTWVkaWFRdWVyeUltcGw6Ok5vbmUsIGRvbVN0cmluZygkMyksIG5ldyBN
ZWRpYVF1ZXJ5RXhwTGlzdEltcGwpOyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorOwor
CiBtYXliZV9tZWRpYV9saXN0OgotICAgICAvKiBlbXB0eSAqLyB7CisgICAgLyogZW1wdHkgKi8g
ewogICAgICAgICAkJCA9IG5ldyBNZWRpYUxpc3RJbXBsKCk7Ci0gICAgIH0KLSAgICAgfCBtZWRp
YV9saXN0CisgICAgfQorICAgIHwgbWVkaWFfbGlzdCAgICAgCiA7CiAKIAogbWVkaWFfbGlzdDoK
ICAgICAvKiBlbXB0eSAqLyB7Ci0JJCQgPSAwOworICAgICAgICAkJCA9IDA7CiAgICAgfQotICAg
IHwgbWVkaXVtIHsKLQkkJCA9IG5ldyBNZWRpYUxpc3RJbXBsKCk7Ci0JJCQtPmFwcGVuZE1lZGl1
bSggZG9tU3RyaW5nKCQxKS5sb3dlcigpICk7CisgICAgfCBtZWRpYV9xdWVyeSB7ICAgIAkKKyAg
ICAgICAgJCQgPSBuZXcgTWVkaWFMaXN0SW1wbCgpOworICAgICAgICAkJC0+YXBwZW5kTWVkaWFR
dWVyeSggJDEgKTsKICAgICB9Ci0gICAgfCBtZWRpYV9saXN0ICcsJyBtYXliZV9zcGFjZSBtZWRp
dW0gewotCSQkID0gJDE7CisgICAgfCBtZWRpYV9saXN0ICcsJyBtYXliZV9zcGFjZSBtZWRpYV9x
dWVyeSB7ICAgIAkKKyAgICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYgKCQkKQotCSAgICAkJC0+
YXBwZW5kTWVkaXVtKCBkb21TdHJpbmcoJDQpICk7CisgICAgICAgICAgICAkJC0+YXBwZW5kTWVk
aWFRdWVyeSgkNCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRlbGV0ZSAkNAogICAgIH0K
ICAgICB8IG1lZGlhX2xpc3QgZXJyb3IgewogICAgICAgICBkZWxldGUgJDE7CiAgICAgICAgICQk
ID0gMDsKICAgICB9Ci0gICAgOworOwogCiBtZWRpYToKLSAgICBNRURJQV9TWU0gbWF5YmVfc3Bh
Y2UgbWVkaWFfbGlzdCAneycgbWF5YmVfc3BhY2UgcnVsZXNldF9saXN0ICd9JyB7CisgICAgTUVE
SUFfU1lNIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgJ3snIG1heWJlX3NwYWNlIHJ1bGVz
ZXRfbGlzdCAnfScgeyAgICAJCiAJQ1NTUGFyc2VyICpwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2Vy
ICo+KHBhcnNlcik7CiAJaWYgKCAkMyAmJiAkNiAmJgogCSAgICAgcC0+c3R5bGVFbGVtZW50ICYm
IHAtPnN0eWxlRWxlbWVudC0+aXNDU1NTdHlsZVNoZWV0KCkgKSB7CmRpZmYgLU5ydXAgLS1leGNs
dWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9raHRtbC9jc3MvdG9rZW5p
emVyLmZsZXggd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUva2h0bWwvY3NzL3Rva2VuaXplci5mbGV4
Ci0tLSB3ZWJraXQvV2ViQ29yZS9raHRtbC9jc3MvdG9rZW5pemVyLmZsZXgJMjAwNC0wNS0yOCAw
MjowNToxNS4wMDAwMDAwMDAgKzAzMDAKKysrIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2todG1s
L2Nzcy90b2tlbml6ZXIuZmxleAkyMDA1LTA3LTIyIDE0OjM1OjEwLjAwMDAwMDAwMCArMDMwMApA
QCAtMSw2ICsxLDggQEAKICVvcHRpb24gY2FzZS1pbnNlbnNpdGl2ZQogJW9wdGlvbiBub3l5d3Jh
cAogJW9wdGlvbiA4Yml0Cislb3B0aW9uIHN0YWNrCislcyBtZWRpYXF1ZXJ5CiAKIGggICAgICAg
ICAgICAgICBbMC05YS1mQS1GXQogbm9uYXNjaWkgICAgICAgIFtcMjAwLVwzNzddCkBAIC0zMyw2
ICszNSw5IEBAIHJhbmdlICAgICAgICAgICBcP3sxLDZ9fHtofShcP3swLDV9fHtofSgKICJePSIg
ICAgICAgICAgICAgICAgICAgIHt5eVRvayA9IEJFR0lOU1dJVEg7IHJldHVybiB5eVRvazt9CiAi
JD0iICAgICAgICAgICAgICAgICAgICB7eXlUb2sgPSBFTkRTV0lUSDsgcmV0dXJuIHl5VG9rO30K
ICIqPSIgICAgICAgICAgICAgICAgICAgIHt5eVRvayA9IENPTlRBSU5TOyByZXR1cm4geXlUb2s7
fQorPG1lZGlhcXVlcnk+Im5vdCIgICAgICAge3l5VG9rID0gTUVESUFfTk9UOyByZXR1cm4geXlU
b2s7fQorPG1lZGlhcXVlcnk+Im9ubHkiICAgICAge3l5VG9rID0gTUVESUFfT05MWTsgcmV0dXJu
IHl5VG9rO30KKzxtZWRpYXF1ZXJ5PiJhbmQiICAgICAgIHt5eVRvayA9IE1FRElBX0FORDsgcmV0
dXJuIHl5VG9rO30KIAoge3N0cmluZ30gICAgICAgICAgICAgICAge3l5VG9rID0gU1RSSU5HOyBy
ZXR1cm4geXlUb2s7fQogCkBAIC00MCwxNSArNDUsMTcgQEAgcmFuZ2UgICAgICAgICAgIFw/ezEs
Nn18e2h9KFw/ezAsNX18e2h9KAogCiAiIyJ7bmFtZX0gICAgICAgICAgICAgICB7eXlUb2sgPSBI
QVNIOyByZXR1cm4geXlUb2s7fQogCi0iQGltcG9ydCIgICAgICAgICAgICAgICB7eXlUb2sgPSBJ
TVBPUlRfU1lNOyByZXR1cm4geXlUb2s7fQorIkBpbXBvcnQiICAgICAgICAgICAgICAge0JFR0lO
KG1lZGlhcXVlcnkpOyB5eVRvayA9IElNUE9SVF9TWU07IHJldHVybiB5eVRvazt9CiAiQHBhZ2Ui
ICAgICAgICAgICAgICAgICB7eXlUb2sgPSBQQUdFX1NZTTsgcmV0dXJuIHl5VG9rO30KLSJAbWVk
aWEiICAgICAgICAgICAgICAgIHt5eVRvayA9IE1FRElBX1NZTTsgcmV0dXJuIHl5VG9rO30KKyJA
bWVkaWEiICAgICAgICAgICAgICAgIHtCRUdJTihtZWRpYXF1ZXJ5KTsgeXlUb2sgPSBNRURJQV9T
WU07IHJldHVybiB5eVRvazt9CiAiQGZvbnQtZmFjZSIgICAgICAgICAgICB7eXlUb2sgPSBGT05U
X0ZBQ0VfU1lNOyByZXR1cm4geXlUb2s7fQogIkBjaGFyc2V0IiAgICAgICAgICAgICAge3l5VG9r
ID0gQ0hBUlNFVF9TWU07IHJldHVybiB5eVRvazt9CiAiQG5hbWVzcGFjZSIgICAgICAgICAgICB7
eXlUb2sgPSBOQU1FU1BBQ0VfU1lNOyByZXR1cm4geXlUb2s7IH0KICJALWtodG1sLXJ1bGUiICAg
IHt5eVRvayA9IEtIVE1MX1JVTEVfU1lNOyByZXR1cm4geXlUb2s7IH0KICJALWtodG1sLWRlY2xz
IiAgIHt5eVRvayA9IEtIVE1MX0RFQ0xTX1NZTTsgcmV0dXJuIHl5VG9rOyB9CiAiQC1raHRtbC12
YWx1ZSIgICB7eXlUb2sgPSBLSFRNTF9WQUxVRV9TWU07IHJldHVybiB5eVRvazsgfQorIkAta2h0
bWwtbWVkaWFxdWVyeSIgICB7QkVHSU4obWVkaWFxdWVyeSk7IHl5VG9rID0gS0hUTUxfTUVESUFR
VUVSWV9TWU07IHJldHVybiB5eVRvazsgfQorCiAKICIhInt3fSJpbXBvcnRhbnQiICAgICAgICAg
e3l5VG9rID0gSU1QT1JUQU5UX1NZTTsgcmV0dXJuIHl5VG9rO30KIApAQCAtNzksNiArODYsOCBA
QCByYW5nZSAgICAgICAgICAgXD97MSw2fXx7aH0oXD97MCw1fXx7aH0oCiBVXCt7cmFuZ2V9ICAg
ICAgICAgICAgICB7eXlUb2sgPSBVTklDT0RFUkFOR0U7IHJldHVybiB5eVRvazt9CiBVXCt7aH17
MSw2fS17aH17MSw2fSAgICB7eXlUb2sgPSBVTklDT0RFUkFOR0U7IHJldHVybiB5eVRvazt9CiAK
KzxtZWRpYXF1ZXJ5PiJ7IiAgICAgICAgIHwKKzxtZWRpYXF1ZXJ5PiI7IiAgICAgICAgIHtCRUdJ
TihJTklUSUFMKTsgeXlUb2sgPSAqeXl0ZXh0OyByZXR1cm4geXlUb2s7IH0KIC4gICAgICAgICAg
ICAgICAgICAgICAgIHt5eVRvayA9ICp5eXRleHQ7IHJldHVybiB5eVRvazt9CiAKICUlCmRpZmYg
LU5ydXAgLS1leGNsdWRlICdDVlMqJyAtLWV4Y2x1ZGUgJy4qJyB3ZWJraXQvV2ViQ29yZS9raHRt
bC9odG1sL2h0bWxfaGVhZGltcGwuY3BwIHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL2todG1sL2h0
bWwvaHRtbF9oZWFkaW1wbC5jcHAKLS0tIHdlYmtpdC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbF9o
ZWFkaW1wbC5jcHAJMjAwNS0wNy0xOSAwMDo1MjoyNS4wMDAwMDAwMDAgKzAzMDAKKysrIHdlYmtp
dC1tb2RpZmllZC9XZWJDb3JlL2todG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5jcHAJMjAwNS0wNy0y
NSAxNDoxNDowMC4wMDAwMDAwMDAgKzAzMDAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJj
c3MvY3Nzc3R5bGVzZWxlY3Rvci5oIgogI2luY2x1ZGUgImNzcy9jc3Nfc3R5bGVzaGVldGltcGwu
aCIKICNpbmNsdWRlICJjc3MvY3NzaGVscGVyLmgiCisjaW5jbHVkZSAiY3NzL2Nzc19tZWRpYXF1
ZXJ5ZXZhbC5oIgogCiAjaW5jbHVkZSA8a3VybC5oPgogI2luY2x1ZGUgPGtkZWJ1Zy5oPgpAQCAt
MjI5LDcgKzIzMCwxMCBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudEltcGw6OnByb2Nlc3MoKQogICAg
ICAgICAvLyBubyBuZWVkIHRvIGxvYWQgc3R5bGUgc2hlZXRzIHdoaWNoIGFyZW4ndCBmb3IgdGhl
IHNjcmVlbiBvdXRwdXQKICAgICAgICAgLy8gIyMjIHRoZXJlIG1heSBiZSBpbiBzb21lIHNpdHVh
dGlvbnMgZS5nLiBmb3IgYW4gZWRpdG9yIG9yIHNjcmlwdCB0byBtYW5pcHVsYXRlCiAJLy8gYWxz
bywgZG9uJ3QgbG9hZCBzdHlsZSBzaGVldHMgZm9yIHN0YW5kYWxvbmUgZG9jdW1lbnRzCi0gICAg
ICAgIGlmIChtX21lZGlhLmlzTnVsbCgpIHx8IG1fbWVkaWEuY29udGFpbnMoInNjcmVlbiIpIHx8
IG1fbWVkaWEuY29udGFpbnMoImFsbCIpIHx8IG1fbWVkaWEuY29udGFpbnMoInByaW50IikpIHsK
KyAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBhbGxFdmFsKHRydWUpLCBzY3JlZW5FdmFsKCJz
Y3JlZW4iLCB0cnVlKSwgcHJpbnRFdmFsKCJwcmludCIsIHRydWUpOworICAgICAgICBNZWRpYUxp
c3RJbXBsKiBtZWRpYSA9IG5ldyBNZWRpYUxpc3RJbXBsKCk7CisgICAgICAgIG1lZGlhLT5zZXRN
ZWRpYVRleHQoIG1fbWVkaWEgKTsKKyAgICAgICAgaWYgKCBhbGxFdmFsLmV2YWwobWVkaWEpfHwg
c2NyZWVuRXZhbC5ldmFsKG1lZGlhKSB8fCBwcmludEV2YWwuZXZhbChtZWRpYSkgKSB7CiAgICAg
ICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwogCiAgICAgICAgICAgICAvLyBBZGQgb3Vyc2VsdmVz
IGFzIGEgcGVuZGluZyBzaGVldCwgYnV0IG9ubHkgaWYgd2UgYXJlbid0IGFuIGFsdGVybmF0ZSAK
QEAgLTI0NCw2ICsyNDgsNyBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudEltcGw6OnByb2Nlc3MoKQog
ICAgICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgICAgICAgICAgbV9jYWNoZWRT
aGVldC0+cmVmKHRoaXMpOwogICAgICAgICB9CisgICAgICAgIG1lZGlhLT5kZXJlZigpOwogICAg
IH0KICAgICBlbHNlIGlmIChtX3NoZWV0KSB7CiAgICAgICAgIC8vIHdlIG5vIGxvbmdlciBjb250
YWluIGEgc3R5bGVzaGVldCwgZS5nLiBwZXJoYXBzIHJlbCBvciB0eXBlIHdhcyBjaGFuZ2VkCkBA
IC03MTIsMTcgKzcxNywyMyBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnRJbXBsOjpjaGlsZHJlbkNo
YW5nCiAgICAgICAgIG1fc2hlZXQgPSAwOwogICAgIH0KIAotICAgIG1fbG9hZGluZyA9IGZhbHNl
OwotICAgIGlmICgobV90eXBlLmlzRW1wdHkoKSB8fCBtX3R5cGUgPT0gInRleHQvY3NzIikgLy8g
VHlwZSBtdXN0IGJlIGVtcHR5IG9yIENTUwotICAgICAgICAgJiYgKG1fbWVkaWEuaXNOdWxsKCkg
fHwgbV9tZWRpYS5jb250YWlucygic2NyZWVuIikgfHwgbV9tZWRpYS5jb250YWlucygiYWxsIikg
fHwgbV9tZWRpYS5jb250YWlucygicHJpbnQiKSkpIHsKLSAgICAgICAgZ2V0RG9jdW1lbnQoKS0+
YWRkUGVuZGluZ1NoZWV0KCk7Ci0gICAgICAgIG1fbG9hZGluZyA9IHRydWU7Ci0gICAgICAgIG1f
c2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldEltcGwodGhpcyk7Ci0gICAgICAgIG1fc2hlZXQtPnJl
ZigpOwotICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyggdGV4dCwgIWdldERvY3VtZW50KCkt
PmluQ29tcGF0TW9kZSgpICk7Ci0gICAgICAgIE1lZGlhTGlzdEltcGwgKm1lZGlhID0gbmV3IE1l
ZGlhTGlzdEltcGwoIG1fc2hlZXQsIG1fbWVkaWEgKTsKLSAgICAgICAgbV9zaGVldC0+c2V0TWVk
aWEoIG1lZGlhICk7Ci0gICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOworICAgIG1fbG9hZGluZyA9
IGZhbHNlOyAgICAKKyAgICBpZiAoKG1fdHlwZS5pc0VtcHR5KCkgfHwgbV90eXBlID09ICJ0ZXh0
L2NzcyIpKSB7Ly8gVHlwZSBtdXN0IGJlIGVtcHR5IG9yIENTUworICAgICAgICBNZWRpYUxpc3RJ
bXBsICptZWRpYSA9IG5ldyBNZWRpYUxpc3RJbXBsKCk7CisgICAgICAgIG1lZGlhLT5zZXRNZWRp
YVRleHQoIG1fbWVkaWEgKTsKKyAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBhbGxFdmFsKHRy
dWUpLCBzY3JlZW5FdmFsKCJzY3JlZW4iLCB0cnVlKSwgIHByaW50RXZhbCgicHJpbnQiLCB0cnVl
KTsKKyAgICAgICAgaWYgKGFsbEV2YWwuZXZhbChtZWRpYSkgfHwgc2NyZWVuRXZhbC5ldmFsKG1l
ZGlhKSB8fCBwcmludEV2YWwuZXZhbChtZWRpYSkpIHsKKyAgICAgICAgICAgIGdldERvY3VtZW50
KCktPmFkZFBlbmRpbmdTaGVldCgpOworICAgICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKKyAg
ICAgICAgICAgIG1fc2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldEltcGwodGhpcyk7CisgICAgICAg
ICAgICBtX3NoZWV0LT5yZWYoKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKCB0
ZXh0LCAhZ2V0RG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkgKTsKKyAgICAgICAgICAgIG1lZGlh
LT5zZXRQYXJlbnQoIG1fc2hlZXQgKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnNldE1lZGlhKCBt
ZWRpYSApOworICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBtZWRpYS0+ZGVyZWYoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlm
ICghaXNMb2FkaW5nKCkgJiYgbV9zaGVldCkKZGlmZiAtTnJ1cCAtLWV4Y2x1ZGUgJ0NWUyonIC0t
ZXhjbHVkZSAnLionIHdlYmtpdC9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2Nzcy9jc3NfbWVk
aWFxdWVyeWV2YWwuaCB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9j
c3MvY3NzX21lZGlhcXVlcnlldmFsLmgKLS0tIHdlYmtpdC9XZWJDb3JlL0ZvcndhcmRpbmdIZWFk
ZXJzL2Nzcy9jc3NfbWVkaWFxdWVyeWV2YWwuaAkxOTcwLTAxLTAxIDAyOjAwOjAwLjAwMDAwMDAw
MCArMDIwMAorKysgd2Via2l0LW1vZGlmaWVkL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvY3Nz
L2Nzc19tZWRpYXF1ZXJ5ZXZhbC5oCTIwMDUtMDctMjEgMTE6NTk6MjEuMDAwMDAwMDAwICswMzAw
CkBAIC0wLDAgKzEgQEAKKyNpbXBvcnQgPGNzc19tZWRpYXF1ZXJ5ZXZhbC5oPgpkaWZmIC1OcnVw
IC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicgd2Via2l0L1dlYkNvcmUvRm9yd2FyZGlu
Z0hlYWRlcnMvY3NzL2Nzc19tZWRpYXF1ZXJ5aW1wbC5oIHdlYmtpdC1tb2RpZmllZC9XZWJDb3Jl
L0ZvcndhcmRpbmdIZWFkZXJzL2Nzcy9jc3NfbWVkaWFxdWVyeWltcGwuaAotLS0gd2Via2l0L1dl
YkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvY3NzL2Nzc19tZWRpYXF1ZXJ5aW1wbC5oCTE5NzAtMDEt
MDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9G
b3J3YXJkaW5nSGVhZGVycy9jc3MvY3NzX21lZGlhcXVlcnlpbXBsLmgJMjAwNS0wNy0yMSAxMTo1
MDowMi4wMDAwMDAwMDAgKzAzMDAKQEAgLTAsMCArMSwyIEBACisjaW1wb3J0IDxjc3NfbWVkaWFx
dWVyeWltcGwuaD4KKwpkaWZmIC1OcnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNsdWRlICcuKicg
d2Via2l0L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvY3NzL2Nzc21lZGlhZmVhdHVyZXMuaCB3
ZWJraXQtbW9kaWZpZWQvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9jc3MvY3NzbWVkaWFmZWF0
dXJlcy5oCi0tLSB3ZWJraXQvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9jc3MvY3NzbWVkaWFm
ZWF0dXJlcy5oCTE5NzAtMDEtMDEgMDI6MDA6MDAuMDAwMDAwMDAwICswMjAwCisrKyB3ZWJraXQt
bW9kaWZpZWQvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9jc3MvY3NzbWVkaWFmZWF0dXJlcy5o
CTIwMDUtMDctMjEgMTI6MTg6NDcuMDAwMDAwMDAwICswMzAwCkBAIC0wLDAgKzEgQEAKKyNpbXBv
cnQgPGNzc21lZGlhZmVhdHVyZXMuaD4KZGlmZiAtcnVwIC0tZXhjbHVkZSAnQ1ZTKicgLS1leGNs
dWRlICcuKicgd2Via2l0L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IHdlYmtpdC1tb2RpZmllZC9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agotLS0gd2Via2l0L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCTIw
MDUtMDctMjEgMjM6MjQ6MzQuMDAwMDAwMDAwICswMzAwCisrKyB3ZWJraXQtbW9kaWZpZWQvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJMjAwNS0wNy0yNSAxNzozMTo0
Ny4wMDAwMDAwMDAgKzAzMDAKQEAgLTksNiArOSwxNCBAQAogLyogQmVnaW4gUEJYQnVpbGRGaWxl
IHNlY3Rpb24gKi8KIAkJMUE2OUQzODEwODU2Mjc0MTAwMDk4ODBEIC8qIGRvbXBhcnNlci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2OUQzN0YwODU2
Mjc0MTAwMDk4ODBEIC8qIGRvbXBhcnNlci5oICovOyB9OwogCQkxQTY5RDM4MjA4NTYyNzQxMDAw
OTg4MEQgLyogZG9tcGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFBNjlEMzgwMDg1NjI3NDEwMDA5ODgwRCAvKiBkb21wYXJzZXIuY3BwICov
OyB9OworCQk0N0U5M0ExNjA4OTUyNkE2MDA0RDU1REIgLyogY3NzX21lZGlhcXVlcnlldmFsLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3RTkzQTEy
MDg5NTI2QTYwMDRENTVEQiAvKiBjc3NfbWVkaWFxdWVyeWV2YWwuY3BwICovOyB9OworCQk0N0U5
M0ExNzA4OTUyNkE2MDA0RDU1REIgLyogY3NzX21lZGlhcXVlcnlldmFsLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0N0U5M0ExMzA4OTUyNkE2MDA0RDU1
REIgLyogY3NzX21lZGlhcXVlcnlldmFsLmggKi87IH07CisJCTQ3RTkzQTE4MDg5NTI2QTYwMDRE
NTVEQiAvKiBjc3NfbWVkaWFxdWVyeWltcGwuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDdFOTNBMTQwODk1MjZBNjAwNEQ1NURCIC8qIGNzc19tZWRp
YXF1ZXJ5aW1wbC5jcHAgKi87IH07CisJCTQ3RTkzQTE5MDg5NTI2QTYwMDRENTVEQiAvKiBjc3Nf
bWVkaWFxdWVyeWltcGwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ3RTkzQTE1MDg5NTI2QTYwMDRENTVEQiAvKiBjc3NfbWVkaWFxdWVyeWltcGwuaCAq
LzsgfTsKKwkJNDdFOTNBMUEwODk1MjZBNjAwNEQ1NURCIC8qIGNzc19tZWRpYXF1ZXJ5ZXZhbC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0N0U5M0Ex
MjA4OTUyNkE2MDA0RDU1REIgLyogY3NzX21lZGlhcXVlcnlldmFsLmNwcCAqLzsgfTsKKwkJNDdF
OTNBMUIwODk1MjZBNjAwNEQ1NURCIC8qIGNzc19tZWRpYXF1ZXJ5ZXZhbC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDdFOTNBMTMwODk1MjZBNjAwNEQ1
NURCIC8qIGNzc19tZWRpYXF1ZXJ5ZXZhbC5oICovOyB9OworCQk0N0U5M0ExQzA4OTUyNkE2MDA0
RDU1REIgLyogY3NzX21lZGlhcXVlcnlpbXBsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3RTkzQTE0MDg5NTI2QTYwMDRENTVEQiAvKiBjc3NfbWVk
aWFxdWVyeWltcGwuY3BwICovOyB9OworCQk0N0U5M0ExRDA4OTUyNkE2MDA0RDU1REIgLyogY3Nz
X21lZGlhcXVlcnlpbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0N0U5M0ExNTA4OTUyNkE2MDA0RDU1REIgLyogY3NzX21lZGlhcXVlcnlpbXBsLmgg
Ki87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBkb21fcW5hbWUuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAz
OTAwNzM1M0Q2IC8qIGRvbV9xbmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDcz
NTNENiAvKiBkb21fcW5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBkb21fcW5hbWUuaCAqLzsgfTsK
IAkJNTUwQTBCQ0QwODVGNjA0RDAwNzM1M0Q2IC8qIGh0bWxuYW1lcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDQjA4NUY2MDREMDA3MzUz
RDYgLyogaHRtbG5hbWVzLmNwcCAqLzsgfTsKQEAgLTEzNTIsNiArMTM2MCwxMCBAQAogCQkxQTY5
RDM4MDA4NTYyNzQxMDAwOTg4MEQgLyogZG9tcGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IGRvbXBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTJEOTA2NjBCMDY2NUQ5MzcwMDZCNkYxQSAvKiBLV1FDbGlwYm9hcmQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtXUUNsaXBib2FyZC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkyRDkwNjYwQzA2NjVEOTM3MDA2QjZGMUEgLyogS1dRQ2xpcGJvYXJk
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtXUUNsaXBib2Fy
ZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDdFOTNBMTIwODk1MjZBNjAwNEQ1
NURCIC8qIGNzc19tZWRpYXF1ZXJ5ZXZhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gY3NzX21lZGlhcXVlcnlldmFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNDdFOTNBMTMwODk1MjZBNjAwNEQ1NURCIC8qIGNzc19tZWRpYXF1ZXJ5ZXZhbC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gY3NzX21lZGlhcXVlcnlldmFsLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ3RTkzQTE0MDg5NTI2QTYwMDRENTVEQiAv
KiBjc3NfbWVkaWFxdWVyeWltcGwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IGNzc19tZWRpYXF1ZXJ5aW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTQ3RTkzQTE1MDg5NTI2QTYwMDRENTVEQiAvKiBjc3NfbWVkaWFxdWVyeWltcGwuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNzc19tZWRpYXF1ZXJ5aW1wbC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTExMUFDMDA3QkQ4MTJDMDBCNzE2MkMgLyogRE9N
VXRpbGl0eS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBET01V
dGlsaXR5Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTUwQzJBMTA3MDI2Mjkw
MDBBRjY0MkMgLyogV2ViRGFzaGJvYXJkUmVnaW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJEYXNoYm9hcmRSZWdpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE1MEMyQTUwNzAyNjI5ODAwQUY2NDJDIC8qIFdlYkRhc2hib2FyZFJlZ2lvbi5tICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViRGFzaGJvYXJkUmVnaW9uLm07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMzQ2LDYgKzIzNTgsMTAgQEAKIAkJCWNo
aWxkcmVuID0gKAogCQkJCUJDOEY2MTg1MDQwNTk0OTkwMEE4MDAwNCAvKiBjc3NfYmFzZS5jcHAg
Ki8sCiAJCQkJOTM0RTQzNzgwNDE0Mjk0QTAwODYzNUNFIC8qIHBhcnNlci55ICovLAorCQkJCTQ3
RTkzQTEyMDg5NTI2QTYwMDRENTVEQiAvKiBjc3NfbWVkaWFxdWVyeWV2YWwuY3BwICovLAorCQkJ
CTQ3RTkzQTEzMDg5NTI2QTYwMDRENTVEQiAvKiBjc3NfbWVkaWFxdWVyeWV2YWwuaCAqLywKKwkJ
CQk0N0U5M0ExNDA4OTUyNkE2MDA0RDU1REIgLyogY3NzX21lZGlhcXVlcnlpbXBsLmNwcCAqLywK
KwkJCQk0N0U5M0ExNTA4OTUyNkE2MDA0RDU1REIgLyogY3NzX21lZGlhcXVlcnlpbXBsLmggKi8s
CiAJCQkJQkM4RjYxOEIwNDA1OTRCQTAwQTgwMDA0IC8qIGNzc19iYXNlLmggKi8sCiAJCQkJQkU5
OTcwQzEwNUY3REQxQzAwNjExMTE1IC8qIGNzc19jb21wdXRlZHN0eWxlLmggKi8sCiAJCQkJQkU5
OTcwQzIwNUY3REQxQzAwNjExMTE1IC8qIGNzc19jb21wdXRlZHN0eWxlLmNwcCAqLywKQEAgLTMz
MzAsNiArMzM0Niw4IEBACiAJCQkJQThGRDhCODcwODdDQjQ1NzAwREMzNzA3IC8qIEtXUVdNYXRy
aXguaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc5ODk0MDg4RDk3NUYwMDYwNjhBNSAvKiByZW5k
ZXJfdGhlbWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMTc5OERBMDg4REE0RjgwMDYwNjhBNSAv
KiByZW5kZXJfdGhlbWVfbWFjLmggaW4gSGVhZGVycyAqLywKKwkJCQk0N0U5M0ExNzA4OTUyNkE2
MDA0RDU1REIgLyogY3NzX21lZGlhcXVlcnlldmFsLmggaW4gSGVhZGVycyAqLywKKwkJCQk0N0U5
M0ExOTA4OTUyNkE2MDA0RDU1REIgLyogY3NzX21lZGlhcXVlcnlpbXBsLmggaW4gSGVhZGVycyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKQEAgLTM2ODYsNiArMzcwNCw4IEBACiAJCQkJQTgyMTJCRTIwODc5NEEyMzAwNjc3MzU5IC8q
IGhhc2h0YWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTg1RDdBOEYwODc5RUM2NDAwNkE5MTcy
IC8qIEtXUVdNYXRyaXguaCBpbiBIZWFkZXJzICovLAogCQkJCUE4OThGMTQ3MDg4MTIxRTkwMDc1
RUZCMiAvKiBodG1sZmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDdFOTNBMUIwODk1MjZB
NjAwNEQ1NURCIC8qIGNzc19tZWRpYXF1ZXJ5ZXZhbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDdF
OTNBMUQwODk1MjZBNjAwNEQ1NURCIC8qIGNzc19tZWRpYXF1ZXJ5aW1wbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkBAIC0zNjk4LDYgKzM3MTgsNyBAQAogCQkJYnVpbGRQaGFzZXMgPSAoCiAJCQkJOTMyRkMy
QzcwODI0QjQ4NTAwNUIzQzc1IC8qIGNzc3Byb3BlcnRpZXMuYy9oICovLAogCQkJCTkzMkZDMkJD
MDgyNEI0MjIwMDVCM0M3NSAvKiBjc3N2YWx1ZXMuYy9oICovLAorCQkJCTQ3RTkzQTIwMDg5NTI2
RDUwMDRENTVEQiAvKiBjc3NtZWRpYWZlYXR1cmVzLmMvaCAqLywKIAkJCQk5MzJGQzBCNzA4MjRB
MTc1MDA1QjNDNzUgLyogZG9jdHlwZXMuY3BwICovLAogCQkJCTkzRUE2ODZDMDgyNDlBRjQwMDY4
N0Y1NiAvKiBrZW50aXRpZXMuYyAqLywKIAkJCQk5MzJGQzEwQjA4MjRBNEQ0MDA1QjNDNzUgLyog
a2pzX2Nzcy5sdXQuaCAqLywKQEAgLTM3OTYsNiArMzgxNyw3IEBACiAJCQlidWlsZFBoYXNlcyA9
ICgKIAkJCQlBODIxMkE2RjA4Nzk0QTIzMDA2NzczNTkgLyogY3NzcHJvcGVydGllcy5jL2ggKi8s
CiAJCQkJQTgyMTJBNzAwODc5NEEyMzAwNjc3MzU5IC8qIGNzc3ZhbHVlcy5jL2ggKi8sCisJCQkJ
NDdFOTNBMkEwODk1MjdFRjAwNEQ1NURCIC8qIGNzc21lZGlhZmVhdHVyZXMuYy9oICovLAogCQkJ
CUE4MjEyQTcxMDg3OTRBMjMwMDY3NzM1OSAvKiBkb2N0eXBlcy5jcHAgKi8sCiAJCQkJQTgyMTJB
NzIwODc5NEEyMzAwNjc3MzU5IC8qIGh0bWxhdHRycy5jL2ggKi8sCiAJCQkJQTgyMTJBNzMwODc5
NEEyMzAwNjc3MzU5IC8qIGh0bWx0YWdzLmMvaCAqLywKQEAgLTM5OTYsNiArNDAxOCw0MiBAQAog
CQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlwiJENSRUFURV9IQVNI
X1RBQkxFXCIga2h0bWwvZWNtYS9kb21wYXJzZXIuY3BwID4gXCIkREVSSVZFRF9GSUxFX0RJUi9k
b21wYXJzZXIubHV0LmhcIiI7CiAJCX07CisJCTQ3RTkzQTIwMDg5NTI2RDUwMDRENTVEQiAvKiBj
c3NtZWRpYWZlYXR1cmVzLmMvaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlmaWxlcyA9ICgKKwkJ
CSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCWtodG1sL2Nzcy9tYWtlbWVkaWFmZWF0dXJlcywK
KwkJCQlraHRtbC9jc3MvY3NzbWVkaWFmZWF0dXJlcy5pbiwKKwkJCSk7CisJCQluYW1lID0gY3Nz
bWVkaWFmZWF0dXJlcy5jL2g7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChERVJJVkVEX0ZJ
TEVfRElSKS9jc3NtZWRpYWZlYXR1cmVzLmMiLAorCQkJCSIkKERFUklWRURfRklMRV9ESVIpL2Nz
c21lZGlhZmVhdHVyZXMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAi
Y2F0IGtodG1sL2Nzcy9jc3NtZWRpYWZlYXR1cmVzLmluID4gXCIkREVSSVZFRF9GSUxFX0RJUi9j
c3NtZWRpYWZlYXR1cmVzLmluXCJcbmNkIFwiJERFUklWRURfRklMRV9ESVJcIlxuc2ggXCIkU1JD
Uk9PVC9raHRtbC9jc3MvbWFrZW1lZGlhZmVhdHVyZXNcIiI7CisJCX07CisJCTQ3RTkzQTJBMDg5
NTI3RUYwMDRENTVEQiAvKiBjc3NtZWRpYWZlYXR1cmVzLmMvaCAqLyA9IHsKKwkJCWlzYSA9IFBC
WFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7
CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCWtodG1sL2Nzcy9t
YWtlbWVkaWFmZWF0dXJlcywKKwkJCQlraHRtbC9jc3MvY3NzbWVkaWFmZWF0dXJlcy5pbiwKKwkJ
CSk7CisJCQluYW1lID0gY3NzbWVkaWFmZWF0dXJlcy5jL2g7CisJCQlvdXRwdXRQYXRocyA9ICgK
KwkJCQkiJChERVJJVkVEX0ZJTEVfRElSKS9jc3NtZWRpYWZlYXR1cmVzLmMiLAorCQkJCSIkKERF
UklWRURfRklMRV9ESVIpL2Nzc21lZGlhZmVhdHVyZXMuaCIsCisJCQkpOworCQkJcnVuT25seUZv
ckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOwor
CQkJc2hlbGxTY3JpcHQgPSAiY2F0IGtodG1sL2Nzcy9jc3NtZWRpYWZlYXR1cmVzLmluID4gXCIk
REVSSVZFRF9GSUxFX0RJUi9jc3NtZWRpYWZlYXR1cmVzLmluXCJcbmNkIFwiJERFUklWRURfRklM
RV9ESVJcIlxuc2ggXCIkU1JDUk9PVC9raHRtbC9jc3MvbWFrZW1lZGlhZmVhdHVyZXNcIiI7CisJ
CX07CiAJCTkzMkZDMEI3MDgyNEExNzUwMDVCM0M3NSAvKiBkb2N0eXBlcy5jcHAgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAy
MTQ3NDgzNjQ3OwpAQCAtNTEwNyw2ICs1MTY1LDggQEAKIAkJCQlBOEZEOEI4NjA4N0NCNDRDMDBE
QzM3MDcgLyogS1dRV01hdHJpeC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDMTc5ODkyMDg4RDk3
NUYwMDYwNjhBNSAvKiByZW5kZXJfdGhlbWVfbWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMx
Nzk4OTMwODhEOTc1RjAwNjA2OEE1IC8qIHJlbmRlcl90aGVtZS5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQk0N0U5M0ExNjA4OTUyNkE2MDA0RDU1REIgLyogY3NzX21lZGlhcXVlcnlldmFsLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCTQ3RTkzQTE4MDg5NTI2QTYwMDRENTVEQiAvKiBjc3NfbWVkaWFx
dWVyeWltcGwuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1l
bnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC01Mzc5LDYgKzU0MzksOCBAQAogCQkJCUE4
MjEyQ0ZFMDg3OTRBMjMwMDY3NzM1OSAvKiBoYXNodGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQTg1RDdBOEUwODc5RUM2NDAwNkE5MTcyIC8qIEtXUVdNYXRyaXgubW0gaW4gU291cmNlcyAq
LywKIAkJCQlBODk4RjE0ODA4ODEyMUVEMDA3NUVGQjIgLyogaHRtbGZhY3RvcnkuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJNDdFOTNBMUEwODk1MjZBNjAwNEQ1NURCIC8qIGNzc19tZWRpYXF1ZXJ5
ZXZhbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0N0U5M0ExQzA4OTUyNkE2MDA0RDU1REIgLyog
Y3NzX21lZGlhcXVlcnlpbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9Owo=
</data>
<flag name="review"
          id="272"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6200</attachid>
            <date>2006-02-01 17:21:13 -0800</date>
            <delta_ts>2006-02-03 16:38:57 -0800</delta_ts>
            <desc>Revised patch impelmentiaon (applies clean, needs fixes to build)</desc>
            <filename>webcore-mediaquery-new.patch</filename>
            <type>text/plain</type>
            <size>66593</size>
            <attacher name="Timothy Hatcher">timothy</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX2hlYWRpbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5jcHAJKHJldmlzaW9uIDEyNTEzKQor
KysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfaGVhZGltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaCIKICNpbmNs
dWRlICJjc3MvY3NzX3N0eWxlc2hlZXRpbXBsLmgiCiAjaW5jbHVkZSAiY3NzL2Nzc2hlbHBlci5o
IgorI2luY2x1ZGUgImNzcy9jc3NfbWVkaWFxdWVyeWV2YWwuaCIKICNpbmNsdWRlICJodG1sbmFt
ZXMuaCIKIAogI2luY2x1ZGUgPGt1cmwuaD4KQEAgLTIzNSw3ICsyMzYsMTAgQEAgdm9pZCBIVE1M
TGlua0VsZW1lbnRJbXBsOjpwcm9jZXNzKCkKICAgICAgICAgLy8gbm8gbmVlZCB0byBsb2FkIHN0
eWxlIHNoZWV0cyB3aGljaCBhcmVuJ3QgZm9yIHRoZSBzY3JlZW4gb3V0cHV0CiAgICAgICAgIC8v
ICMjIyB0aGVyZSBtYXkgYmUgaW4gc29tZSBzaXR1YXRpb25zIGUuZy4gZm9yIGFuIGVkaXRvciBv
ciBzY3JpcHQgdG8gbWFuaXB1bGF0ZQogCS8vIGFsc28sIGRvbid0IGxvYWQgc3R5bGUgc2hlZXRz
IGZvciBzdGFuZGFsb25lIGRvY3VtZW50cwotICAgICAgICBpZiAobV9tZWRpYS5pc051bGwoKSB8
fCBtX21lZGlhLmNvbnRhaW5zKCJzY3JlZW4iKSB8fCBtX21lZGlhLmNvbnRhaW5zKCJhbGwiKSB8
fCBtX21lZGlhLmNvbnRhaW5zKCJwcmludCIpKSB7CisgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0
b3IgYWxsRXZhbCh0cnVlKSwgc2NyZWVuRXZhbCgic2NyZWVuIiwgdHJ1ZSksIHByaW50RXZhbCgi
cHJpbnQiLCB0cnVlKTsKKyAgICAgICAgTWVkaWFMaXN0SW1wbCogbWVkaWEgPSBuZXcgTWVkaWFM
aXN0SW1wbCgpOworICAgICAgICBtZWRpYS0+c2V0TWVkaWFUZXh0KCBtX21lZGlhICk7CisgICAg
ICAgIGlmIChhbGxFdmFsLmV2YWwobWVkaWEpIHx8IHNjcmVlbkV2YWwuZXZhbChtZWRpYSkgfHwg
cHJpbnRFdmFsLmV2YWwobWVkaWEpKSB7CiAgICAgICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwog
CiAgICAgICAgICAgICAvLyBBZGQgb3Vyc2VsdmVzIGFzIGEgcGVuZGluZyBzaGVldCwgYnV0IG9u
bHkgaWYgd2UgYXJlbid0IGFuIGFsdGVybmF0ZSAKQEAgLTI1MCw2ICsyNTQsNyBAQCB2b2lkIEhU
TUxMaW5rRWxlbWVudEltcGw6OnByb2Nlc3MoKQogICAgICAgICAgICAgaWYgKG1fY2FjaGVkU2hl
ZXQpCiAgICAgICAgICAgICAgICAgbV9jYWNoZWRTaGVldC0+cmVmKHRoaXMpOwogICAgICAgICB9
CisgICAgICAgIG1lZGlhLT5kZXJlZigpOwogICAgIH0KICAgICBlbHNlIGlmIChtX3NoZWV0KSB7
CiAgICAgICAgIC8vIHdlIG5vIGxvbmdlciBjb250YWluIGEgc3R5bGVzaGVldCwgZS5nLiBwZXJo
YXBzIHJlbCBvciB0eXBlIHdhcyBjaGFuZ2VkCkBAIC03NDksMTYgKzc1NCwyMyBAQCB2b2lkIEhU
TUxTdHlsZUVsZW1lbnRJbXBsOjpjaGlsZHJlbkNoYW5nCiAgICAgICAgIG1fc2hlZXQgPSAwOwog
ICAgIH0KIAotICAgIG1fbG9hZGluZyA9IGZhbHNlOwotICAgIGlmICgobV90eXBlLmlzRW1wdHko
KSB8fCBtX3R5cGUgPT0gInRleHQvY3NzIikgLy8gVHlwZSBtdXN0IGJlIGVtcHR5IG9yIENTUwot
ICAgICAgICAgJiYgKG1fbWVkaWEuaXNOdWxsKCkgfHwgbV9tZWRpYS5jb250YWlucygic2NyZWVu
IikgfHwgbV9tZWRpYS5jb250YWlucygiYWxsIikgfHwgbV9tZWRpYS5jb250YWlucygicHJpbnQi
KSkpIHsKLSAgICAgICAgZ2V0RG9jdW1lbnQoKS0+YWRkUGVuZGluZ1NoZWV0KCk7Ci0gICAgICAg
IG1fbG9hZGluZyA9IHRydWU7Ci0gICAgICAgIG1fc2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldElt
cGwodGhpcyk7Ci0gICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHRleHQsICFnZXREb2N1bWVu
dCgpLT5pbkNvbXBhdE1vZGUoKSk7Ci0gICAgICAgIE1lZGlhTGlzdEltcGwgKm1lZGlhID0gbmV3
IE1lZGlhTGlzdEltcGwobV9zaGVldC5nZXQoKSwgbV9tZWRpYSk7Ci0gICAgICAgIG1fc2hlZXQt
PnNldE1lZGlhKG1lZGlhKTsKLSAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgbV9sb2Fk
aW5nID0gZmFsc2U7ICAgIAorICAgIGlmICgobV90eXBlLmlzRW1wdHkoKSB8fCBtX3R5cGUgPT0g
InRleHQvY3NzIikpIHsvLyBUeXBlIG11c3QgYmUgZW1wdHkgb3IgQ1NTCisgICAgICAgIE1lZGlh
TGlzdEltcGwgKm1lZGlhID0gbmV3IE1lZGlhTGlzdEltcGwoKTsKKyAgICAgICAgbWVkaWEtPnNl
dE1lZGlhVGV4dChtX21lZGlhKTsKKyAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBhbGxFdmFs
KHRydWUpLCBzY3JlZW5FdmFsKCJzY3JlZW4iLCB0cnVlKSwgIHByaW50RXZhbCgicHJpbnQiLCB0
cnVlKTsKKyAgICAgICAgaWYgKGFsbEV2YWwuZXZhbChtZWRpYSkgfHwgc2NyZWVuRXZhbC5ldmFs
KG1lZGlhKSB8fCBwcmludEV2YWwuZXZhbChtZWRpYSkpIHsKKyAgICAgICAgICAgIGdldERvY3Vt
ZW50KCktPmFkZFBlbmRpbmdTaGVldCgpOworICAgICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsK
KyAgICAgICAgICAgIG1fc2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldEltcGwodGhpcyk7CisgICAg
ICAgICAgICBtX3NoZWV0LT5yZWYoKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5n
KHRleHQsICFnZXREb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSk7CisgICAgICAgICAgICBtZWRp
YS0+c2V0UGFyZW50KG1fc2hlZXQuZ2V0KCkpOworICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVk
aWEobWVkaWEpOworICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgICAgIH0gZWxz
ZSB7CisgICAgICAgICAgICBtZWRpYS0+ZGVyZWYoKTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IGlmICghaXNMb2FkaW5nKCkgJiYgbV9zaGVldCkKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMjUxMykKKysrIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMDA3LDYgKzEw
MDcsMTAgQEAKIAkJQkNGQjJGNDIwOTdBMjRCNTAwQkE3MDNEIC8qIFNlZ21lbnRlZFN0cmluZy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkNGQjJGNDAw
OTdBMjRCNTAwQkE3MDNEIC8qIFNlZ21lbnRlZFN0cmluZy5oICovOyB9OwogCQlCQ0ZCMkY3NjA5
N0EyRTFBMDBCQTcwM0QgLyogQXJlbmEuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gQkNGQjJGNzQwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5hLmNwcCAq
LzsgfTsKIAkJQkNGQjJGNzcwOTdBMkUxQTAwQkE3MDNEIC8qIEFyZW5hLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZCMkY3NTA5N0EyRTFBMDBCQTcw
M0QgLyogQXJlbmEuaCAqLzsgfTsKKwkJRERENDIzNzMwOTkxODQyMDAwQkYwRDg2IC8qIGNzc19t
ZWRpYXF1ZXJ5ZXZhbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBEREQ0MjM2RjA5OTE4NDIwMDBCRjBEODYgLyogY3NzX21lZGlhcXVlcnlldmFsLmNw
cCAqLzsgfTsKKwkJRERENDIzNzQwOTkxODQyMDAwQkYwRDg2IC8qIGNzc19tZWRpYXF1ZXJ5ZXZh
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRERENDIz
NzAwOTkxODQyMDAwQkYwRDg2IC8qIGNzc19tZWRpYXF1ZXJ5ZXZhbC5oICovOyB9OworCQlEREQ0
MjM3NTA5OTE4NDIwMDBCRjBEODYgLyogY3NzX21lZGlhcXVlcnlpbXBsLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IERERDQyMzcxMDk5MTg0MjAwMEJG
MEQ4NiAvKiBjc3NfbWVkaWFxdWVyeWltcGwuY3BwICovOyB9OworCQlEREQ0MjM3NjA5OTE4NDIw
MDBCRjBEODYgLyogY3NzX21lZGlhcXVlcnlpbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBEREQ0MjM3MjA5OTE4NDIwMDBCRjBEODYgLyogY3NzX21l
ZGlhcXVlcnlpbXBsLmggKi87IH07CiAJCUUxRUU3NzM3MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJD
b3JlVGV4dERlY29kZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxRUU3NzM1MDhGMTA4NkMwMDE2Njg3MCAvKiBXZWJDb3JlVGV4dERlY29kZXIuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlFMUVFNzcz
ODA4RjEwODZDMDAxNjY4NzAgLyogV2ViQ29yZVRleHREZWNvZGVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFFRTc3MzYwOEYxMDg2QzAwMTY2ODcw
IC8qIFdlYkNvcmVUZXh0RGVjb2Rlci5tbSAqLzsgfTsKIAkJRTFGMDQyNDYwOTgzOTM4OTAwNjY5
NEVBIC8qIHhtbGh0dHByZXF1ZXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEUxRjA0MjQ0MDk4MzkzODkwMDY2OTRFQSAvKiB4bWxodHRwcmVxdWVz
dC5jcHAgKi87IH07CkBAIC0yMDA1LDYgKzIwMDksMTAgQEAKIAkJQkVDRTY3QkQwNzA4N0IyNTAw
MDdDMTRCIC8qIHRleHRfYWZmaW5pdHkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gdGV4dF9hZmZpbml0eS5oOyBwYXRoID0gZWRpdGluZy90ZXh0
X2FmZmluaXR5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1Rh
YnMgPSAwOyB9OwogCQlCRUY3RUVBMDA1RkY4RjBEMDA5NzE3RUUgLyogS1dRRWRpdENvbW1hbmQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50
V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gS1dR
RWRpdENvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCUJFRjdFRUExMDVGRjhGMEQwMDk3MTdFRSAvKiBLV1FFZGl0Q29tbWFu
ZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEtXUUVkaXRDb21tYW5kLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJRERENDIzNkYwOTkxODQyMDAwQkYwRDg2IC8qIGNz
c19tZWRpYXF1ZXJ5ZXZhbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gY3NzX21lZGlhcXVlcnlldmFsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lk
dGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCURERDQyMzcwMDk5MTg0MjAwMEJGMEQ4NiAvKiBj
c3NfbWVkaWFxdWVyeWV2YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNz
c19tZWRpYXF1ZXJ5ZXZhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKKwkJRERENDIzNzEwOTkxODQyMDAwQkYwRDg2IC8qIGNzc19tZWRp
YXF1ZXJ5aW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gY3Nz
X21lZGlhcXVlcnlpbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CisJCURERDQyMzcyMDk5MTg0MjAwMEJGMEQ4NiAvKiBjc3NfbWVk
aWFxdWVyeWltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IGNzc19tZWRp
YXF1ZXJ5aW1wbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKIAkJRTFFRTc3MzUwOEYxMDg2QzAwMTY2ODcwIC8qIFdlYkNvcmVUZXh0RGVj
b2Rlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYkNvcmVUZXh0RGVjb2Rlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRTFFRTc3MzYwOEYxMDg2QzAwMTY2ODcwIC8qIFdlYkNv
cmVUZXh0RGVjb2Rlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZVRleHREZWNvZGVyLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJRTFGMDQyNDQwOTgzOTM4
OTAwNjY5NEVBIC8qIHhtbGh0dHByZXF1ZXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IHhtbGh0dHByZXF1ZXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTMzMjAsNiArMzMyOCwxMCBAQAogCQkJCUJDRUE0NzgyMDk3Q0FBQzgwMDk0QzlFNCAv
KiBjc3Nfc3R5bGVzaGVldGltcGwuaCAqLywKIAkJCQlCQ0VBNDc4MzA5N0NBQUM4MDA5NEM5RTQg
LyogY3NzX3ZhbHVlaW1wbC5jcHAgKi8sCiAJCQkJQkNFQTQ3ODQwOTdDQUFDODAwOTRDOUU0IC8q
IGNzc192YWx1ZWltcGwuaCAqLywKKwkJCQlEREQ0MjM2RjA5OTE4NDIwMDBCRjBEODYgLyogY3Nz
X21lZGlhcXVlcnlldmFsLmNwcCAqLywKKwkJCQlEREQ0MjM3MDA5OTE4NDIwMDBCRjBEODYgLyog
Y3NzX21lZGlhcXVlcnlldmFsLmggKi8sCisJCQkJRERENDIzNzEwOTkxODQyMDAwQkYwRDg2IC8q
IGNzc19tZWRpYXF1ZXJ5aW1wbC5jcHAgKi8sCisJCQkJRERENDIzNzIwOTkxODQyMDAwQkYwRDg2
IC8qIGNzc19tZWRpYXF1ZXJ5aW1wbC5oICovLAogCQkJCUJDRUE0Nzg1MDk3Q0FBQzgwMDk0QzlF
NCAvKiBjc3NoZWxwZXIuY3BwICovLAogCQkJCUJDRUE0Nzg2MDk3Q0FBQzgwMDk0QzlFNCAvKiBj
c3NoZWxwZXIuaCAqLywKIAkJCQlCQ0VBNDc4NzA5N0NBQUM4MDA5NEM5RTQgLyogY3NzcGFyc2Vy
LmNwcCAqLywKQEAgLTQzMjMsNiArNDMzNSw4IEBACiAJCQkJQkNENzVBQkMwOTg5QTQ0NjAwM0Uy
OERGIC8qIEltYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQk5Mzg1Rjc2MjA5OEQ5QzMxMDBEOTBE
MjQgLyogU2NyZWVuLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4
NTUgLyogVGltZXIuaCBpbiBIZWFkZXJzICovLAorCQkJCURERDQyMzc0MDk5MTg0MjAwMEJGMEQ4
NiAvKiBjc3NfbWVkaWFxdWVyeWV2YWwuaCBpbiBIZWFkZXJzICovLAorCQkJCURERDQyMzc2MDk5
MTg0MjAwMEJGMEQ4NiAvKiBjc3NfbWVkaWFxdWVyeWltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAt
NDMzNSw2ICs0MzQ5LDcgQEAKIAkJCWJ1aWxkUGhhc2VzID0gKAogCQkJCTkzMkZDMkM3MDgyNEI0
ODUwMDVCM0M3NSAvKiBjc3Nwcm9wZXJ0aWVzLmMvaCAqLywKIAkJCQk5MzJGQzJCQzA4MjRCNDIy
MDA1QjNDNzUgLyogY3NzdmFsdWVzLmMvaCAqLywKKwkJCQk0N0U5M0EyMDA4OTUyNkQ1MDA0RDU1
REIgLyogY3NzbWVkaWFmZWF0dXJlcy5jL2ggKi8sCiAJCQkJOTMyRkMwQjcwODI0QTE3NTAwNUIz
Qzc1IC8qIGRvY3R5cGVzLmNwcCAqLywKIAkJCQk5M0VBNjg2QzA4MjQ5QUY0MDA2ODdGNTYgLyog
a2VudGl0aWVzLmMgKi8sCiAJCQkJOTMyRkMxMEIwODI0QTRENDAwNUIzQzc1IC8qIGtqc19jc3Mu
bHV0LmggKi8sCkBAIC00NTI2LDYgKzQ1NDEsMjQgQEAKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7
CiAJCQlzaGVsbFNjcmlwdCA9ICIvdXNyL2Jpbi9wZXJsIC1JXCIkU1JDUk9PVC9iaW5kaW5ncy9z
Y3JpcHRzXCIgXCIkU1JDUk9PVC9iaW5kaW5ncy9zY3JpcHRzL2dlbmVyYXRlLWJpbmRpbmdzLnBs
XCIgLS1nZW5lcmF0b3IgSlMgLS1pZGxkaXIgXCIkU1JDUk9PVC9raHRtbC94bWxcIiAtLW91dHB1
dGRpciBcIiRERVJJVkVEX0ZJTEVfRElSXCJcbiI7CiAJCX07CisJCTQ3RTkzQTIwMDg5NTI2RDUw
MDRENTVEQiAvKiBjc3NtZWRpYWZlYXR1cmVzLmMvaCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CisJCQlm
aWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dFBhdGhzID0gKAorCQkJCWNzcy9tYWtlbWVkaWFmZWF0
dXJlcywKKwkJCQljc3MvY3NzbWVkaWFmZWF0dXJlcy5pbiwKKwkJCSk7CisJCQluYW1lID0gY3Nz
bWVkaWFmZWF0dXJlcy5jL2g7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCQkiJChERVJJVkVEX0ZJ
TEVfRElSKS9jc3NtZWRpYWZlYXR1cmVzLmMiLAorCQkJCSIkKERFUklWRURfRklMRV9ESVIpL2Nz
c21lZGlhZmVhdHVyZXMuaCIsCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJv
Y2Vzc2luZyA9IDA7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAi
Y2F0IGNzcy9jc3NtZWRpYWZlYXR1cmVzLmluID4gXCIkREVSSVZFRF9GSUxFX0RJUi9jc3NtZWRp
YWZlYXR1cmVzLmluXCJcbmNkIFwiJERFUklWRURfRklMRV9ESVJcIlxuc2ggXCIkU1JDUk9PVC9j
c3MvbWFrZW1lZGlhZmVhdHVyZXNcIiI7CisJCX07CiAJCTkzMkZDMEI3MDgyNEExNzUwMDVCM0M3
NSAvKiBkb2N0eXBlcy5jcHAgKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwpAQCAtNTQ0MCw2ICs1NDczLDgg
QEAKIAkJCQkxQTM3RjYzQTA5ODhFRTMzMDBEMDVFOTAgLyogSlNDb3JlLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCTkzODVGNzc0MDk4RDlDQjkwMEQ5MEQyNCAvKiBTY3JlZW4ubW0gaW4gU291cmNl
cyAqLywKIAkJCQk5MzA1QjI1MDA5OEYxQjhCMDBDMjg4NTUgLyogVGltZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJRERENDIzNzMwOTkxODQyMDAwQkYwRDg2IC8qIGNzc19tZWRpYXF1ZXJ5ZXZh
bC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlEREQ0MjM3NTA5OTE4NDIwMDBCRjBEODYgLyogY3Nz
X21lZGlhcXVlcnlpbXBsLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9jc3MvY3Nz
X21lZGlhcXVlcnlpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NfbWVkaWFx
dWVyeWltcGwuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvY3NzX21lZGlhcXVlcnlp
bXBsLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTYgQEAKKyNpbmNsdWRlICJjc3NfbWVk
aWFxdWVyeWltcGwuaCIKKyNpbmNsdWRlICJjc3NwYXJzZXIuaCIKKyNpbmNsdWRlICJjc3NfYmFz
ZS5oIgorI2luY2x1ZGUgImNzc192YWx1ZWltcGwuaCIKKwordXNpbmcgbmFtZXNwYWNlIERPTTsK
K3VzaW5nIG5hbWVzcGFjZSBraHRtbDsKKworTWVkaWFRdWVyeUV4cEltcGw6Ok1lZGlhUXVlcnlF
eHBJbXBsKGludCBtZWRpYUZlYXR1cmVJZCwgRE9NOjpWYWx1ZUxpc3QqIHZhbHVlTGlzdCkKKyAg
ICA6bV9tZWRpYUZlYXR1cmVJZChtZWRpYUZlYXR1cmVJZCkKK3sKKyAgICBtX3ZhbHVlID0gMDsK
KyAgICBpZiAodmFsdWVMaXN0KSB7CisKKwlpZiAoIHZhbHVlTGlzdC0+bnVtVmFsdWVzID09IDEg
KSB7CisJICAgIERPTTo6VmFsdWUqIHZhbHVlID0gdmFsdWVMaXN0LT5jdXJyZW50KCk7CisKKwkg
ICAgaWYgKCB2YWx1ZS0+aWQgIT0gMCApIHsKKwkJLy8gcURlYnVnKCIgbmV3IHZhbHVlOiBpZD0l
ZCIsIGlkICk7CisJCW1fdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKCB2YWx1ZS0+
aWQgKTsKKwkgICAgfSBlbHNlIGlmICggdmFsdWUtPnVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TVFJJTkcgKQorCQltX3ZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlSW1wbCggZG9t
U3RyaW5nKCB2YWx1ZS0+c3RyaW5nICksCisJCQkJCQkgICAgIChDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzKSB2YWx1ZS0+dW5pdCApOworCSAgICBlbHNlIGlmICggdmFsdWUtPnVuaXQgPj0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIgJiYKKwkJICAgICAgdmFsdWUtPnVuaXQgPD0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19LSFogKSB7CisJCS8vIHFEZWJ1ZygiIG5ldyB2YWx1ZTog
dmFsdWU9JS4yZiwgdW5pdD0lZCIsIHZhbHVlLT5mVmFsdWUsIHZhbHVlLT51bml0ICk7CisJCW1f
dmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKCB2YWx1ZS0+ZlZhbHVlLAorCQkJCQkJ
ICAgICAoQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgdmFsdWUtPnVuaXQgKTsKKwkgICAg
fQorCSAgICB2YWx1ZUxpc3QtPm5leHQoKTsKKwl9IGVsc2UgaWYgKCB2YWx1ZUxpc3QtPm51bVZh
bHVlcyA+IDEpIHsKKwkgICAgLy8gY3JlYXRlIGxpc3Qgb2YgdmFsdWVzCisJICAgIC8vIGN1cnJl
bnRseSBhY2NlcHRzIG9ubHkgPGludGVnZXI+LzxpbnRlZ2VyPgorCisJICAgIENTU1ZhbHVlTGlz
dEltcGwqIGxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0SW1wbCgpOworCSAgICBWYWx1ZSogdmFsdWUg
PSAwOworCSAgICBib29sIGlzVmFsaWQgPSB0cnVlOworCisJICAgIHdoaWxlICgodmFsdWUgPSB2
YWx1ZUxpc3QtPmN1cnJlbnQoKSkgJiYgaXNWYWxpZCkgeworCQlpZiAoIHZhbHVlLT51bml0ID09
IFZhbHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcvJyApIHsKKwkJICAgIGxpc3Qt
PmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKCIvIiwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19TVFJJTkcpKTsKKwkJfSBlbHNlIGlmICh2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX05VTUJFUikgeworCQkgICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVW
YWx1ZUltcGwodmFsdWUtPmZWYWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsK
KwkJfSBlbHNlIHsKKwkJICAgIGlzVmFsaWQgPSBmYWxzZTsKKwkJfQorCQl2YWx1ZSA9IHZhbHVl
TGlzdC0+bmV4dCgpOworCSAgICB9CisJICAgIGlmIChpc1ZhbGlkKQorCQltX3ZhbHVlID0gbGlz
dDsKKwkgICAgZWxzZQorCQlkZWxldGUobGlzdCk7CisKKwl9CisgICAgfQorfQorCitNZWRpYVF1
ZXJ5RXhwSW1wbDo6fk1lZGlhUXVlcnlFeHBJbXBsKCkKK3sKKyAgICBkZWxldGUgKG1fdmFsdWUp
OworfQorCitpbnQgTWVkaWFRdWVyeUV4cEltcGw6Om1lZGlhRmVhdHVyZSgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1fbWVkaWFGZWF0dXJlSWQ7Cit9CisKK0NTU1ZhbHVlSW1wbCogTWVkaWFRdWVy
eUV4cEltcGw6OnZhbHVlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV92YWx1ZTsKK30KKworTWVk
aWFRdWVyeUltcGw6Ok1lZGlhUXVlcnlJbXBsKFJlc3RyaWN0b3IgciwgY29uc3QgRE9NOjpET01T
dHJpbmcgJm1lZGlhVHlwZSwgTWVkaWFRdWVyeUV4cExpc3RJbXBsKiBleHBycykKKyAgICA6bV9y
ZXN0cmljdG9yKHIpCisgICAgLG1fbWVkaWFUeXBlKG1lZGlhVHlwZSkKKyAgICAsbV9leHByZXNz
aW9ucyhleHBycykKK3sKK30KKworTWVkaWFRdWVyeUltcGw6On5NZWRpYVF1ZXJ5SW1wbCgpCit7
CisgICAgZGVsZXRlKG1fZXhwcmVzc2lvbnMpOworfQorCitNZWRpYVF1ZXJ5SW1wbDo6UmVzdHJp
Y3RvciBNZWRpYVF1ZXJ5SW1wbDo6cmVzdHJpY3RvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1f
cmVzdHJpY3RvcjsKK30KKworTWVkaWFRdWVyeUV4cExpc3RJbXBsKiBNZWRpYVF1ZXJ5SW1wbDo6
ZXhwcmVzc2lvbnMoKSBjb25zdAoreworICAgIHJldHVybiBtX2V4cHJlc3Npb25zOworfQorCitR
U3RyaW5nIE1lZGlhUXVlcnlJbXBsOjptZWRpYVR5cGUoKSBjb25zdAoreworICAgIHJldHVybiBt
X21lZGlhVHlwZS5zdHJpbmcoKTsKK30KKworYm9vbCBNZWRpYVF1ZXJ5SW1wbDo6b3BlcmF0b3I9
PShjb25zdCBNZWRpYVF1ZXJ5SW1wbCYgb3RoZXIpIGNvbnN0Cit7CisgICAgLy8gWFhYOiBjYXNl
IHNlbnNpdGl2ZW5lc3M/CisgICAgaWYgKG1fcmVzdHJpY3RvciAhPSBvdGhlci5tX3Jlc3RyaWN0
b3IgfHwgbV9tZWRpYVR5cGUgIT0gb3RoZXIubV9tZWRpYVR5cGUpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFFQdHJMaXN0SXRlcmF0b3I8TWVkaWFRdWVyeUV4cEltcGw+IGV4cF9pdCgq
bV9leHByZXNzaW9ucy0+bGlzdCgpKTsKKyAgICBRUHRyTGlzdEl0ZXJhdG9yPE1lZGlhUXVlcnlF
eHBJbXBsPiBvZXhwX2l0KCpvdGhlci5tX2V4cHJlc3Npb25zLT5saXN0KCkpOworICAgIE1lZGlh
UXVlcnlFeHBJbXBsKiBleHAgPSAwOworICAgIE1lZGlhUXVlcnlFeHBJbXBsKiBvZXhwID0gMDsK
KyAgICBmb3IgKGV4cCA9IGV4cF9pdC5jdXJyZW50KCksIG9leHAgPSBvZXhwX2l0LmN1cnJlbnQo
KTsgZXhwICYmIG9leHA7IGV4cCA9ICsrZXhwX2l0LCBvZXhwID0gKytvZXhwX2l0KSB7CisgICAg
ICAgIGlmICghKCpleHAgPT0gKm9leHApICkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gKCFleHAgJiYgIW9leHApOworfQpJbmRleDogV2ViQ29yZS9jc3Mv
Y3NzcGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCShy
ZXZpc2lvbiAxMjUxMykKKysrIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJjc3NfdmFsdWVpbXBsLmgiCiAjaW5jbHVk
ZSAiY3NzX3J1bGVpbXBsLmgiCiAjaW5jbHVkZSAiY3NzX3N0eWxlc2hlZXRpbXBsLmgiCisjaW5j
bHVkZSAiY3NzX21lZGlhcXVlcnlpbXBsLmgiCiAjaW5jbHVkZSAiY3NzcHJvcGVydGllcy5oIgog
I2luY2x1ZGUgImNzc3ZhbHVlcy5oIgogI2luY2x1ZGUgImhlbHBlci5oIgpAQCAtMjk4LDYgKzI5
OSwzMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbiggQ1NTTXV0CiAgICAgcmV0
dXJuIG9rOwogfQogCitib29sIENTU1BhcnNlcjo6cGFyc2VNZWRpYVF1ZXJ5KCBET006Ok1lZGlh
TGlzdEltcGwgKnF1ZXJpZXMsIGNvbnN0IERPTTo6RE9NU3RyaW5nICZzdHJpbmcgKQoreyAgICAK
KyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSB8fCBzdHJpbmcuaXNOdWxsKCkpIHsKKwkJcmV0dXJu
IHRydWU7CisgICAgfQorICAgIG1lZGlhUXVlcnkgPSAwOworICAgIC8vIGNhbid0IHVzZSB7IGJl
Y2F1c2UgdG9rZW5pemVyIHN0YXRlIHN3aXRjaGVzIGZyb20gbWVkaWFxdWVyeSB0byBpbml0aWFs
IHN0YXRlIHdoZW4gaXQgc2VlcyB7IHRva2VuLgorICAgIC8vIGluc3RlYWQgaW5zZXJ0IG9uZSAi
ICIgKHdoaWNoIGlzIFdISVRFU1BBQ0UgaW4gcGFyc2VyLnkpCisgICAgc2V0dXBQYXJzZXIgKCJA
LWtodG1sLW1lZGlhcXVlcnkgIiwgc3RyaW5nLCAifSAiKTsKKyAgICAKKyAgICBDU1NQYXJzZXIg
Km9sZCA9IGN1cnJlbnRQYXJzZXI7CisgICAgY3VycmVudFBhcnNlciA9IHRoaXM7CisgICAgY3Nz
eXlwYXJzZSggdGhpcyApOworICAgIGN1cnJlbnRQYXJzZXIgPSBvbGQ7CisgICAgCisgICAgYm9v
bCBvayA9IGZhbHNlOworICAgIGlmIChtZWRpYVF1ZXJ5KSB7CisgICAgCW9rID0gdHJ1ZTsKKyAg
ICAJcXVlcmllcy0+YXBwZW5kTWVkaWFRdWVyeShtZWRpYVF1ZXJ5KTsKKyAgICAgICAgbWVkaWFR
dWVyeSA9IDA7CisgICAgfQorICAgIAorICAgIHJldHVybiBvazsKK30KIAogdm9pZCBDU1NQYXJz
ZXI6OmFkZFByb3BlcnR5KGludCBwcm9wSWQsIENTU1ZhbHVlSW1wbCAqdmFsdWUsIGJvb2wgaW1w
b3J0YW50KQogewpJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaAkocmV2aXNpb24gMTI1MTMpCisr
KyBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYg
KzQwLDcgQEAgY2xhc3MgQ1NTUnVsZVNldDsKIGNsYXNzIENTU1NlbGVjdG9yOwogY2xhc3MgQ1NT
U3R5bGVTaGVldEltcGw7CiBjbGFzcyBDU1NWYWx1ZUltcGw7CitjbGFzcyBNZWRpYVF1ZXJ5RXZh
bHVhdG9yOwogY2xhc3MgRG9jdW1lbnRJbXBsOwogY2xhc3MgRWxlbWVudEltcGw7CiBjbGFzcyBG
cmFtZTsKQEAgLTE3NCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgCiAgICAgcHJpdmF0ZToKICAgICAg
ICAgdm9pZCBpbml0KCk7CisgICAgICAgIFJlbmRlclN0eWxlICpkZWZhdWx0U3R5bGVGb3JSb290
KERPTTo6RWxlbWVudEltcGwqIGUpOwogICAgICAgICAKICAgICAgICAgdm9pZCBtYXBCYWNrZ3Jv
dW5kQXR0YWNobWVudChCYWNrZ3JvdW5kTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZUltcGwqIHZhbHVl
KTsKICAgICAgICAgdm9pZCBtYXBCYWNrZ3JvdW5kQ2xpcChCYWNrZ3JvdW5kTGF5ZXIqIGxheWVy
LCBDU1NWYWx1ZUltcGwqIHZhbHVlKTsKQEAgLTE5OSw4ICsyMDEsMTAgQEAgcHVibGljOgogICAg
ICAgICBDU1NSdWxlTGlzdEltcGwqIG1fcnVsZUxpc3Q7CiAgICAgICAgIGJvb2wgbV9jb2xsZWN0
UnVsZXNPbmx5OwogCi0gICAgICAgIFFTdHJpbmcgbV9tZWRpdW07Ci0KKyAgICAgICAgRE9NOjpN
ZWRpYVF1ZXJ5RXZhbHVhdG9yKiBtX21lZGl1bTsKKyAgICAgICAgUmVuZGVyU3R5bGUqIG1fcm9v
dERlZmF1bHRTdHlsZTsKKyAgICAgICAgYm9vbCBtX3Jlc29sdmluZ0ZvclJvb3REZWZhdWx0U3R5
bGU7CisJCQogICAgICAgICBSZW5kZXJTdHlsZTo6UHNldWRvSWQgZHluYW1pY1BzZXVkbzsKICAg
ICAgICAgCiAgICAgICAgIFJlbmRlclN0eWxlICpzdHlsZTsKSW5kZXg6IFdlYkNvcmUvY3NzL2Nz
c19tZWRpYXF1ZXJ5ZXZhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3NzX21lZGlh
cXVlcnlldmFsLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL2Nzc19tZWRpYXF1ZXJ5
ZXZhbC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzM3IEBACisjaW5jbHVkZSAiY3NzL2Nz
c19tZWRpYXF1ZXJ5ZXZhbC5oIgorI2luY2x1ZGUgImNzcy9jc3Nfc3R5bGVzaGVldGltcGwuaCIK
KyNpbmNsdWRlICJjc3MvY3NzbWVkaWFmZWF0dXJlcy5oIgorI2luY2x1ZGUgImNzcy9jc3NfdmFs
dWVpbXBsLmgiCisjaW5jbHVkZSAicmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5oIgorCisjaW5jbHVk
ZSAia2h0bWx2aWV3LmgiCisjaW5jbHVkZSA8cWFwcGxpY2F0aW9uLmg+CisjaW5jbHVkZSA8cXBh
aW50ZGV2aWNlbWV0cmljcy5oPgorCit1c2luZyBuYW1lc3BhY2Uga2h0bWw7Cit1c2luZyBuYW1l
c3BhY2UgRE9NOworCitNZWRpYVF1ZXJ5RXZhbHVhdG9yOjogTWVkaWFRdWVyeUV2YWx1YXRvcihi
b29sIG1lZGlhRmVhdHVyZVJlc3VsdCkKKyAgICA6bV92aWV3KDApCisgICAgLG1fcGFpbnRNZXRy
aWNzKDApCisgICAgLG1fc3R5bGUoMCkKKyAgICAsbV9leHBSZXN1bHQobWVkaWFGZWF0dXJlUmVz
dWx0KQoreworfQorCitNZWRpYVF1ZXJ5RXZhbHVhdG9yOjogTWVkaWFRdWVyeUV2YWx1YXRvcihj
b25zdCBRU3RyaW5nJiBhY2NlcHRlZE1lZGlhVHlwZSwgYm9vbCBtZWRpYUZlYXR1cmVSZXN1bHQp
CisgICAgOm1fbWVkaWFUeXBlKGFjY2VwdGVkTWVkaWFUeXBlKQorICAgICxtX3ZpZXcoMCkKKyAg
ICAsbV9wYWludE1ldHJpY3MoMCkKKyAgICAsbV9zdHlsZSgwKQorICAgICxtX2V4cFJlc3VsdCht
ZWRpYUZlYXR1cmVSZXN1bHQpCit7Cit9CisKK01lZGlhUXVlcnlFdmFsdWF0b3I6OiBNZWRpYVF1
ZXJ5RXZhbHVhdG9yKGNvbnN0IFFTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBlLCBLSFRNTFZpZXcq
IHZpZXcsIFFQYWludERldmljZU1ldHJpY3MqIG1ldHJpY3MsIFJlbmRlclN0eWxlKiBzdHlsZSkK
KyAgICA6bV9tZWRpYVR5cGUoYWNjZXB0ZWRNZWRpYVR5cGUubG93ZXIoKSkKKyAgICAsbV92aWV3
KHZpZXcpCisgICAgLG1fcGFpbnRNZXRyaWNzKG1ldHJpY3MpCisgICAgLG1fc3R5bGUoc3R5bGUp
CisgICAgLG1fZXhwUmVzdWx0KGZhbHNlKSAvLyBkb2Vzbid0IG1hdHRlcgoreworfQorCitNZWRp
YVF1ZXJ5RXZhbHVhdG9yOjp+TWVkaWFRdWVyeUV2YWx1YXRvcigpCit7Cit9CisKK2Jvb2wgTWVk
aWFRdWVyeUV2YWx1YXRvcjo6bWVkaWFUeXBlTWF0Y2goY29uc3QgUVN0cmluZyYgbWVkaWFUeXBl
VG9NYXRjaCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWVkaWFUeXBlVG9NYXRjaC5pc051bGwoKQor
ICAgIHx8IG1lZGlhVHlwZVRvTWF0Y2guaXNFbXB0eSgpCisgICAgfHwgKG1lZGlhVHlwZVRvTWF0
Y2guc3RhcnRzV2l0aCgiYWxsIiwgZmFsc2UpICYmIG1lZGlhVHlwZVRvTWF0Y2gubGVuZ3RoKCkg
PT0gMykKKyAgICB8fCBtZWRpYVR5cGVUb01hdGNoLmxvd2VyKCkgPT0gbV9tZWRpYVR5cGU7Cit9
CisKK3N0YXRpYyBib29sIGFwcGx5UmVzdHJpY3RvcihNZWRpYVF1ZXJ5SW1wbDo6UmVzdHJpY3Rv
ciByLCBib29sIHZhbHVlKQoreworICAgIHJldHVybiByID09IE1lZGlhUXVlcnlJbXBsOjpOb3Qg
PyAhdmFsdWUgOiB2YWx1ZTsKK30KKworYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFsKGNv
bnN0IE1lZGlhTGlzdEltcGwqIG1lZGlhTGlzdCkgY29uc3QKK3sKKyAgICBpZiAoIW1lZGlhTGlz
dCkKKwkJcmV0dXJuIHRydWU7CisKKyAgICBRUHRyTGlzdEl0ZXJhdG9yPE1lZGlhUXVlcnlJbXBs
PiBpdCgqbWVkaWFMaXN0LT5tZWRpYVF1ZXJpZXMoKS0+bGlzdCgpKTsKKyAgICBpZiAoIWl0LmN1
cnJlbnQoKSkKKyAgICAJcmV0dXJuIHRydWU7IC8vIGVtcHR5IHF1ZXJ5IGxpc3QgZXZhbHVhdGVz
IHRvIHRydWUKKworICAgIC8vIGl0ZXJhdGUgb3ZlciBxdWVyaWVzLCBzdG9wIGlmIGFueSBvZiB0
aGVtIGV2YWwgdG8gdHJ1ZSAoT1Igc2VtYW50aWNzKQorICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7
CisgICAgZm9yIChNZWRpYVF1ZXJ5SW1wbCogcXVlcnkgPSBpdC5jdXJyZW50KCk7IHF1ZXJ5ICYm
IChyZXN1bHQ9PWZhbHNlKTsgcXVlcnkgPSArK2l0KSB7CisKKyAgICAgICAgaWYgKG1lZGlhVHlw
ZU1hdGNoKHF1ZXJ5LT5tZWRpYVR5cGUoKSkpIHsKKyAgICAgICAgICAgIFFQdHJMaXN0SXRlcmF0
b3I8TWVkaWFRdWVyeUV4cEltcGw+IGV4cF9pdCgqcXVlcnktPmV4cHJlc3Npb25zKCktPmxpc3Qo
KSk7CisgICAgICAgICAgICAvLyBpdGVyYXRlIHRocm91Z2ggZXhwcmVzc2lvbnMsIHN0b3AgaWYg
YW55IG9mIHRoZW0gZXZhbCB0byBmYWxzZSAoQU5EIHNlbWFudGljcykKKyAgICAgICAgICAgIE1l
ZGlhUXVlcnlFeHBJbXBsKiBleHAgPSAwOworICAgICAgICAgICAgZm9yIChleHAgPSBleHBfaXQu
Y3VycmVudCgpOyBleHAgJiYgZXZhbChleHApOyBleHAgPSArK2V4cF9pdCkgLyogZW1wdHkqLzsK
KworICAgICAgICAgICAgLy8gYXNzdW1lIHRydWUgaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhl
IGxpc3QsIG90aGVyd2lzZSBhc3N1bWUgZmFsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IGFwcGx5
UmVzdHJpY3RvcihxdWVyeS0+cmVzdHJpY3RvcigpLCAhZXhwKTsKKyAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgIHJlc3VsdCA9IGFwcGx5UmVzdHJpY3RvcihxdWVyeS0+cmVzdHJpY3Rvcigp
LCBmYWxzZSk7CisJCX0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGJv
b2wgcGFyc2VBc3BlY3RSYXRpbyhDU1NWYWx1ZUltcGwqIHZhbHVlLCBpbnQqIGEsIGludCogYikK
K3sKKyAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkgKXsKKyAgICAgICAgQ1NTVmFsdWVMaXN0
SW1wbCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0SW1wbCo+KHZhbHVlKTsK
KyAgICAgICAgaWYgKHZhbHVlTGlzdC0+bGVuZ3RoKCkgPT0gMyApIHsKKyAgICAgICAgICAgIENT
U1ZhbHVlSW1wbCogaTAgPSB2YWx1ZUxpc3QtPml0ZW0oMCk7CisgICAgICAgICAgICBDU1NWYWx1
ZUltcGwqIGkxID0gdmFsdWVMaXN0LT5pdGVtKDEpOworICAgICAgICAgICAgQ1NTVmFsdWVJbXBs
KiBpMiA9IHZhbHVlTGlzdC0+aXRlbSgyKTsKKyAgICAgICAgICAgIGlmIChpMC0+aXNQcmltaXRp
dmVWYWx1ZSgpICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlSW1wbCo+KGkwKS0+cHJp
bWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSCisgICAgICAgICAg
ICAgICAgJiYgaTEtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZUltcGwqPihpMSktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX1NUUklORworICAgICAgICAgICAgICAgICYmIGkyLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYg
c3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWVJbXBsKj4oaTIpLT5wcmltaXRpdmVUeXBlKCkg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKKyAgICAgICAgICAgICAgICBET01T
dHJpbmcgc3RyID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWVJbXBsKj4oaTEpLT5nZXRT
dHJpbmdWYWx1ZSgpOworICAgICAgICAgICAgICAgIGlmICghc3RyLmlzTnVsbCgpICYmIHN0ci5s
ZW5ndGgoKSA9PSAxICYmIHN0clswXSA9PSBRQ2hhcignLycpKSB7CisgICAgICAgICAgICAgICAg
ICAgICphID0gKGludCkgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWVJbXBsKj4oaTApLT5n
ZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgICAg
ICAgICAgICAgKmIgPSAoaW50KSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZUltcGwqPihp
MiktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIE1lZGlh
UXVlcnlFdmFsdWF0b3I6OmV2YWwoY29uc3QgTWVkaWFRdWVyeUV4cEltcGwqIGV4cHIpIGNvbnN0
Cit7CisgICAgaWYgKCFtX3ZpZXcgfHwgIW1fc3R5bGUpCisgICAgICAgIHJldHVybiBtX2V4cFJl
c3VsdDsKKyAgICBDU1NWYWx1ZUltcGwqIHZhbHVlID0gZXhwci0+dmFsdWUoKTsKKyAgICBDU1NQ
cmltaXRpdmVWYWx1ZUltcGwqIHByaW1pdGl2ZSA9IDA7CisKKyAgICBib29sIGlzTnVtYmVyVmFs
dWUgPSBmYWxzZTsKKyAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSAtMTsKKyAgICBpbnQgcHJpbWl0
aXZlTGVuZ3RoID0gLTE7CisKKyAgICBpZiAodmFsdWUgJiYgdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSkgeworICAgICAgICBwcmltaXRpdmUgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1
ZUltcGwqPih2YWx1ZSk7CisgICAgICAgIHByaW1pdGl2ZUxlbmd0aCA9IHByaW1pdGl2ZS0+Y29t
cHV0ZUxlbmd0aChtX3N0eWxlLCBtX3BhaW50TWV0cmljcyk7CisgICAgICAgIGlmIChwcmltaXRp
dmUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgewor
ICAgICAgICAgICAgaXNOdW1iZXJWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICBudW1iZXJWYWx1
ZSA9IHByaW1pdGl2ZS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
Uik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzd2l0Y2ggKGV4cHItPm1lZGlhRmVhdHVyZSgp
KSB7CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9DT0xPUjogeworICAgICAgICAgICAg
aW50IGJpdHNQZXJDb21wb25lbnQgPSBtX3BhaW50TWV0cmljcy0+ZGVwdGgoKSAvIDNMOworICAg
ICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiAoaXNOdW1iZXJWYWx1
ZSAmJiBiaXRzUGVyQ29tcG9uZW50ID09IChpbnQpbnVtYmVyVmFsdWUpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBiaXRzUGVyQ29tcG9uZW50ICE9IDA7CisgICAg
ICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9DT0xPUjogeworICAgICAg
ICAgICAgaW50IGJpdHNQZXJDb21wb25lbnQgPSBtX3BhaW50TWV0cmljcy0+ZGVwdGgoKSAvIDNM
OworICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiAoaXNOdW1i
ZXJWYWx1ZSAmJiBiaXRzUGVyQ29tcG9uZW50ID49IChpbnQpbnVtYmVyVmFsdWUpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBiaXRzUGVyQ29tcG9uZW50ICE9IDA7
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01BWF9DT0xPUjogewor
ICAgICAgICAgICAgaW50IGJpdHNQZXJDb21wb25lbnQgPSBtX3BhaW50TWV0cmljcy0+ZGVwdGgo
KSAvIDNMOworICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiAo
aXNOdW1iZXJWYWx1ZSAmJiBiaXRzUGVyQ29tcG9uZW50IDw9IChpbnQpbnVtYmVyVmFsdWUpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBiaXRzUGVyQ29tcG9uZW50
ICE9IDA7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01PTk9DSFJP
TUU6CisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUlOX01PTk9DSFJPTUU6CisgICAgICAg
IGNhc2UgQ1NTX01FRElBX0ZFQVRfTUFYX01PTk9DSFJPTUU6CisgICAgICAgICAgICAvLy8gWFhY
OiBob3cgdG8gZ2V0IGRpc3BsYXkgbW9kZSBmcm9tIFF0PworICAgICAgICAgICAgYnJlYWs7CisK
KyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9DT0xPUl9JTkRFWDoKKyAgICAgICAgY2FzZSBD
U1NfTUVESUFfRkVBVF9NSU5fQ09MT1JfSU5ERVg6CisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZF
QVRfTUFYX0NPTE9SX0lOREVYOgorICAgICAgICAgICAgLy8vIFhYWDogaG93IHRvIGdldCBkaXNw
bGF5IG1vZGUgZnJvbSBRdD8KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQ1NT
X01FRElBX0ZFQVRfREVWSUNFX0FTUEVDVF9SQVRJTzogeworICAgICAgICAgICAgaWYgKHZhbHVl
KSB7CisgICAgICAgICAgICAgICAgUVJlY3Qgc2cgPSBRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+
c2NyZWVuR2VvbWV0cnkoUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbk51bWJlcihtX3Zp
ZXcpKTsKKyAgICAgICAgICAgICAgICBpbnQgYTsKKyAgICAgICAgICAgICAgICBpbnQgYjsKKyAg
ICAgICAgICAgICAgICBpZiAocGFyc2VBc3BlY3RSYXRpbyh2YWx1ZSwgJmEsICZiKSkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIChiIT0wKSAmJiAoYSpzZy5oZWlnaHQoKSA9PSBiKnNnLndp
ZHRoKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyAoZGV2aWNl
LWFzcGVjdC1yYXRpbyksIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBpdHMgYXNwZWN0IHJh
dGlvIGlzIG5vbi16ZXJvCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9ERVZJQ0Vf
QVNQRUNUX1JBVElPOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICBRUmVjdCBzZyA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5HZW9tZXRyeShRQXBw
bGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuTnVtYmVyKG1fdmlldykpOworICAgICAgICAgICAg
ICAgIGludCBhOworICAgICAgICAgICAgICAgIGludCBiOworICAgICAgICAgICAgICAgIGlmIChw
YXJzZUFzcGVjdFJhdGlvKHZhbHVlLCAmYSwgJmIpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gKGIhPTApICYmICgoKGRvdWJsZSlzZy53aWR0aCgpL3NnLmhlaWdodCgpKSA+PSAoKGRvdWJs
ZSlhL2IpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gKG1pbi1k
ZXZpY2UtYXNwZWN0LXJhdGlvKSwgYXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGl0cyBhc3Bl
Y3QgcmF0aW8gaXMgbm9uLXplcm8KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUFYX0RF
VklDRV9BU1BFQ1RfUkFUSU86IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAg
ICAgICAgIFFSZWN0IHNnID0gUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbkdlb21ldHJ5
KFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5OdW1iZXIobV92aWV3KSk7CisgICAgICAg
ICAgICAgICAgaW50IGE7CisgICAgICAgICAgICAgICAgaW50IGI7CisgICAgICAgICAgICAgICAg
aWYgKHBhcnNlQXNwZWN0UmF0aW8odmFsdWUsICZhLCAmYikpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiAoYiE9MCkgJiYgKCgoZG91YmxlKXNnLndpZHRoKCkvc2cuaGVpZ2h0KCkpIDw9ICgo
ZG91YmxlKWEvYikpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyAo
bWF4LWRldmljZS1hc3BlY3QtcmF0aW8pLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgaXRz
IGFzcGVjdCByYXRpbyBpcyBub24temVybworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9E
RVZJQ0VfSEVJR0hUOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAg
ICBRUmVjdCBzZyA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5HZW9tZXRyeShRQXBw
bGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuTnVtYmVyKG1fdmlldykpOworICAgICAgICAgICAg
ICAgIHJldHVybiAocHJpbWl0aXZlICYmIHNnLmhlaWdodCgpID09IHByaW1pdGl2ZUxlbmd0aCk7
CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIChkZXZpY2UtaGVpZ2h0
KSwgYXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybworICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
Y2FzZSBDU1NfTUVESUFfRkVBVF9NSU5fREVWSUNFX0hFSUdIVDogeworICAgICAgICAgICAgaWYg
KHZhbHVlKSB7CisgICAgICAgICAgICAgICAgUVJlY3Qgc2cgPSBRQXBwbGljYXRpb246OmRlc2t0
b3AoKS0+c2NyZWVuR2VvbWV0cnkoUUFwcGxpY2F0aW9uOjpkZXNrdG9wKCktPnNjcmVlbk51bWJl
cihtX3ZpZXcpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHByaW1pdGl2ZSAmJiBzZy5oZWln
aHQoKSA+PSBwcmltaXRpdmVMZW5ndGgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAvLyAobWluLWRldmljZS1oZWlnaHQpLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmlj
ZSwgYXNzdW1lIG5vbi16ZXJvCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01BWF9ERVZJ
Q0VfSEVJR0hUOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBR
UmVjdCBzZyA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5HZW9tZXRyeShRQXBwbGlj
YXRpb246OmRlc2t0b3AoKS0+c2NyZWVuTnVtYmVyKG1fdmlldykpOworICAgICAgICAgICAgICAg
IHJldHVybiAocHJpbWl0aXZlICYmIHNnLmhlaWdodCgpIDw9IHByaW1pdGl2ZUxlbmd0aCk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIChtYXgtZGV2aWNlLWhlaWdo
dCksIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBhc3N1bWUgbm9uLXplcm8KKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IGNhc2UgQ1NTX01FRElBX0ZFQVRfREVWSUNFX1dJRFRIOiB7CisgICAgICAgICAgICBpZiAodmFs
dWUpIHsKKyAgICAgICAgICAgICAgICBRUmVjdCBzZyA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgp
LT5zY3JlZW5HZW9tZXRyeShRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuTnVtYmVyKG1f
dmlldykpOworICAgICAgICAgICAgICAgIHJldHVybiAocHJpbWl0aXZlICYmIHNnLndpZHRoKCkg
PT0gcHJpbWl0aXZlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgLy8gKGRldmljZS13aWR0aCksIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBhc3N1bWUg
bm9uLXplcm8KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUlOX0RFVklDRV9XSURUSDog
eworICAgICAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgUVJlY3Qgc2cgPSBR
QXBwbGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuR2VvbWV0cnkoUUFwcGxpY2F0aW9uOjpkZXNr
dG9wKCktPnNjcmVlbk51bWJlcihtX3ZpZXcpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHBy
aW1pdGl2ZSAmJiBzZy53aWR0aCgpID49IHByaW1pdGl2ZUxlbmd0aCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIChtaW4tZGV2aWNlLXdpZHRoKSwgYXNzdW1lIGlm
IHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybworICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVE
SUFfRkVBVF9NQVhfREVWSUNFX1dJRFRIOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBRUmVjdCBzZyA9IFFBcHBsaWNhdGlvbjo6ZGVza3RvcCgpLT5zY3JlZW5H
ZW9tZXRyeShRQXBwbGljYXRpb246OmRlc2t0b3AoKS0+c2NyZWVuTnVtYmVyKG1fdmlldykpOwor
ICAgICAgICAgICAgICAgIHJldHVybiAocHJpbWl0aXZlICYmIHNnLndpZHRoKCkgPD0gcHJpbWl0
aXZlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gKG1h
eC1kZXZpY2Utd2lkdGgpLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgYXNzdW1lIG5vbi16
ZXJvCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX0dSSUQ6IHsKKyAgICAgICAgICAgIC8v
IGlmIG91dHB1dCBkZXZpY2UgaXMgYml0bWFwLCBncmlkOiAwID09IHRydWUKKyAgICAgICAgICAg
IGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gKGlzTnVtYmVyVmFsdWUgJiYgIChp
bnQpbnVtYmVyVmFsdWUgPT0gMCApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRf
SEVJR0hUOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHByaW1pdGl2ZSAmJiBtX3ZpZXctPnZpc2libGVIZWlnaHQoKSA9PSBwcmltaXRpdmVMZW5ndGg7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdmlldy0+dmlzaWJs
ZUhlaWdodCgpICE9IDA7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFU
X01JTl9IRUlHSFQ6IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcHJpbWl0aXZlICYmIG1fdmlldy0+dmlzaWJsZUhlaWdodCgpID49IHByaW1pdGl2ZUxl
bmd0aDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92aWV3LT52
aXNpYmxlSGVpZ2h0KCkgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElB
X0ZFQVRfTUFYX0hFSUdIVDogeworICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAg
ICAgIHJldHVybiAocHJpbWl0aXZlICYmIG1fdmlldy0+dmlzaWJsZUhlaWdodCgpIDw9IHByaW1p
dGl2ZUxlbmd0aCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuICht
X3ZpZXctPnZpc2libGVIZWlnaHQoKSAhPSAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
Q1NTX01FRElBX0ZFQVRfV0lEVEg6IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gcHJpbWl0aXZlICYmIG1fdmlldy0+dmlzaWJsZVdpZHRoKCkgPT0gcHJp
bWl0aXZlTGVuZ3RoOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBt
X3ZpZXctPnZpc2libGVXaWR0aCgpICE9IDA7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENT
U19NRURJQV9GRUFUX01JTl9XSURUSDogeworICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAg
ICAgICAgICAgIHJldHVybiBwcmltaXRpdmUgJiYgbV92aWV3LT52aXNpYmxlV2lkdGgoKSA+PSBw
cmltaXRpdmVMZW5ndGg7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJu
IG1fdmlldy0+dmlzaWJsZVdpZHRoKCkgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Ug
Q1NTX01FRElBX0ZFQVRfTUFYX1dJRFRIOnsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAg
ICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlICYmIG1fdmlldy0+dmlzaWJsZVdpZHRoKCkgPD0g
cHJpbWl0aXZlTGVuZ3RoOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVy
biBtX3ZpZXctPnZpc2libGVXaWR0aCgpICE9IDA7CisgICAgICAgIH0KKworICAgICAgICBjYXNl
IENTU19NRURJQV9GRUFUX1JFU09MVVRJT046CisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRf
TUlOX1JFU09MVVRJT046CisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUFYX1JFU09MVVRJ
T046CisgICAgICAgICAgICAvL1hYWDogQ1NTX0RJTUVOU0lPTiBkb2Vzbid0IHNlZW0gdG8gYmUg
c3VwcG9ydGVkIGJ5IEtIVE1MCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENT
U19NRURJQV9GRUFUX1NDQU46CisgICAgICAgICAgICAvLyBzY2FuIGFwcGxpZXMgdG8gdHYgbWVk
aWEgdHlwZXMKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjYXNlIENTU19N
RURJQV9GRUFUX0lOVkFMSUQ6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsK
KyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3Nfc3R5
bGVzaGVldGltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3Nfc3R5bGVzaGVldGlt
cGwuaAkocmV2aXNpb24gMTI1MTMpCisrKyBXZWJDb3JlL2Nzcy9jc3Nfc3R5bGVzaGVldGltcGwu
aAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiZG9tL2RvbV9z
dHJpbmcuaCIKICNpbmNsdWRlICJjc3MvY3NzX2Jhc2UuaCIKKyNpbmNsdWRlICJjc3MvY3NzX21l
ZGlhcXVlcnlpbXBsLmgiCiAKIG5hbWVzcGFjZSBraHRtbCB7CiAgICAgY2xhc3MgQ2FjaGVkQ1NT
U3R5bGVTaGVldDsKQEAgLTE2MSwyNiArMTYyLDIzIEBAIHB1YmxpYzoKIAogICAgIENTU1N0eWxl
U2hlZXRJbXBsICpwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3Q7CiAgICAgQ1NTUnVsZUltcGwgKnBh
cmVudFJ1bGUoKSBjb25zdDsKLSAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBt
X2xzdE1lZGlhLmNvdW50KCk7IH0KLSAgICBET006OkRPTVN0cmluZyBpdGVtICggdW5zaWduZWQg
aW5kZXggKSBjb25zdCB7IHJldHVybiBtX2xzdE1lZGlhW2luZGV4XTsgfQorICAgIHVuc2lnbmVk
IGxvbmcgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sc3RRdWVyaWVzLmNvdW50KCk7IH0KKyAg
ICBET006OkRPTVN0cmluZyBpdGVtICggdW5zaWduZWQgbG9uZyBpbmRleCApIGNvbnN0OwogICAg
IHZvaWQgZGVsZXRlTWVkaXVtICggY29uc3QgRE9NOjpET01TdHJpbmcgJm9sZE1lZGl1bSApOwot
ICAgIHZvaWQgYXBwZW5kTWVkaXVtICggY29uc3QgRE9NOjpET01TdHJpbmcgJm5ld01lZGl1bSAp
IHsgbV9sc3RNZWRpYS5hcHBlbmQobmV3TWVkaXVtKTsgfQorICAgIHZvaWQgYXBwZW5kTWVkaXVt
ICggY29uc3QgRE9NOjpET01TdHJpbmcgJm5ld01lZGl1bSApOwogCiAgICAgRE9NOjpET01TdHJp
bmcgbWVkaWFUZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYVRleHQoY29uc3QgRE9NOjpE
T01TdHJpbmcgJnZhbHVlKTsKIAogICAgIC8qKgotICAgICAqIENoZWNrIGlmIHRoZSBsaXN0IGNv
bnRhaW5zIGVpdGhlciB0aGUgcmVxdWVzdGVkIG1lZGl1bSwgb3IgdGhlCi0gICAgICogY2F0Y2gt
YWxsICJhbGwiIG1lZGlhIHR5cGUuIFJldHVybnMgdHJ1ZSB3aGVuIGZvdW5kLCBmYWxzZSBvdGhl
cndpc2UuCi0gICAgICogU2luY2Ugbm90IHNwZWNpZnlpbmcgbWVkaWEgdHlwZXMgc2hvdWxkIGJl
IHRyZWF0ZWQgYXMgImFsbCIgYWNjb3JkaW5nCi0gICAgICogdG8gRE9NIHNwZWNzLCBhbiBlbXB0
eSBsaXN0IGFsd2F5cyByZXR1cm5zIHRydWUuCi0gICAgICoKICAgICAgKiBfTk9UXyBwYXJ0IG9m
IHRoZSBET00hCiAgICAgICovCi0gICAgYm9vbCBjb250YWlucyggY29uc3QgRE9NOjpET01TdHJp
bmcgJm1lZGl1bSApIGNvbnN0OworICAgIHZvaWQgYXBwZW5kTWVkaWFRdWVyeShNZWRpYVF1ZXJ5
SW1wbCogbWVkaWFRdWVyeSk7CisgICAgY29uc3QgTWVkaWFRdWVyeUxpc3RJbXBsKiBtZWRpYVF1
ZXJpZXMoKSBjb25zdCB7IHJldHVybiAmbV9sc3RRdWVyaWVzOyB9CiAKIHByb3RlY3RlZDoKLSAg
ICBRVmFsdWVMaXN0PERPTTo6RE9NU3RyaW5nPiBtX2xzdE1lZGlhOworICAgIE1lZGlhUXVlcnlM
aXN0SW1wbCBtX2xzdFF1ZXJpZXM7CisgICAgRE9NOjpET01TdHJpbmcgbV9tZWRpYVRleHQ7ICAg
IAogfTsKIAogCkluZGV4OiBXZWJDb3JlL2Nzcy9tYWtlbWVkaWFmZWF0dXJlcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy9tYWtlbWVkaWFmZWF0dXJlcwkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvY3NzL21ha2VtZWRpYWZlYXR1cmVzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisj
ICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEtERSBsaWJyYXJpZXMKKyMKKyMgICBDb3B5cmln
aHQgKEMpIDE5OTkgV2FsZG8gQmFzdGlhbiAoYmFzdGlhbkBrZGUub3JnKQorIworIyAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyMgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworIyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorIyAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyMKKyMgICBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgICBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
IyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisjICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCisjCisjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisjICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3Vp
dGUgMzMwLAorIyAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorIworIy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KKyMKKyMgIEtERSBIVE1MIFdpZGdldCAtLSBTY3JpcHQgdG8gZ2VuZXJhdGUgY3Nz
bWVkaWFmZWF0dXJlcy5jIGFuZCBjc3NtZWRpYWZlYXR1cmVzLmgKKyMKK2dyZXAgIl5bXlwjXSIg
Y3NzbWVkaWFmZWF0dXJlcy5pbiA+IGNzc21lZGlhZmVhdHVyZXMuc3RyaXAKKworZWNobyAtZSAn
JXtcbi8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9tIGNzc21lZGlh
ZmVhdHVyZXMuaW4gYnkgbWFrZXByb3AsIGRvIG5vdCBlZGl0ICovXG4vKiBDb3B5cmlnaHQgMTk5
OSBXLiBCYXN0aWFuICovXG4jaW5jbHVkZSAiY3NzbWVkaWFmZWF0dXJlcy5oIlxuJX1cbnN0cnVj
dCBjc3NfbWVkaWFfZmVhdHVyZV9wYWlyIHtcbiAgICBjb25zdCBjaGFyICpuYW1lO1xuICAgIGlu
dCBpZDtcbn07XG4lJScgPiBjc3NtZWRpYWZlYXR1cmVzLmdwZXJmCitjYXQgY3NzbWVkaWFmZWF0
dXJlcy5zdHJpcCB8IGF3ayAneyBkbyB7IHByb3AgPSAkMDsgZ3N1YigiLSIsICJfIik7IHByaW50
IHByb3AgIiwgQ1NTX01FRElBX0ZFQVRfIiB0b3VwcGVyKCQwKSB9IHdoaWxlIChnZXRsaW5lKSB9
JyA+PiBjc3NtZWRpYWZlYXR1cmVzLmdwZXJmCitlY2hvICclJScgPj4gY3NzbWVkaWFmZWF0dXJl
cy5ncGVyZgorZWNobyAtZSAnLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVk
IGZyb20gY3NzbWVkaWFmZWF0dXJlcy5pbiBieSBtYWtlcHJvcCwgZG8gbm90IGVkaXQgKi9cbi8q
IENvcHlyaWdodCAxOTk4IFcuIEJhc3RpYW4gKi9cblxuI2lmbmRlZiBDU1NNRURJQUZFQVRVUkVT
X0hcbiNkZWZpbmUgQ1NTTUVESUFGRUFUVVJFU19IXG5cbkRPTTo6RE9NU3RyaW5nIGdldE1lZGlh
RmVhdHVyZU5hbWUodW5zaWduZWQgc2hvcnQgaWQpO1xuJyA+IGNzc21lZGlhZmVhdHVyZXMuaAor
Y2F0IGNzc21lZGlhZmVhdHVyZXMuc3RyaXAgfCBhd2sgJ3sgXAoraT0xOyBcCitwcmludCAiI2Rl
ZmluZSBDU1NfTUVESUFfRkVBVF9JTlZBTElEIDAiOyBcCitwcmludCAiI2RlZmluZSBDU1NfTUVE
SUFfRkVBVF9NSU4gMSI7IFwKK2RvIHsgZ3N1YigiLSIsICJfIik7IHByaW50ICIjZGVmaW5lIENT
U19NRURJQV9GRUFUXyIgdG91cHBlcigkMCkgIiAiIGk7IGkgPSBpICsgMSB9IHdoaWxlIChnZXRs
aW5lKTsgXAorcHJpbnQgIiI7IFwKK3ByaW50ICIjZGVmaW5lIENTU19NRURJQV9GRUFUX01BWCBD
U1NfTUVESUFfRkVBVF9XSURUSCI7IFwKK3ByaW50ICIjZGVmaW5lIENTU19NRURJQV9GRUFUX1RP
VEFMICIgaSBcCit9JyA+PiBjc3NtZWRpYWZlYXR1cmVzLmgKK2dwZXJmIC1hIC1MICdBTlNJLUMn
IC1FIC1DIC1jIC1vIC10IC1rICcqJyAtTmZpbmRNZWRpYUZlYXR1cmUgLUhoYXNoX21lZGlhX2Zl
YXQgLVd3b3JkbGlzdF9tZWRpYV9mZWF0IC1EIC1zIDIgY3NzbWVkaWFmZWF0dXJlcy5ncGVyZiA+
IGNzc21lZGlhZmVhdHVyZXMuYyB8fCBleGl0IDEKK2VjaG8gLWUgJyNlbmRpZlxuJyA+PiBjc3Nt
ZWRpYWZlYXR1cmVzLmgKKworY2F0IGNzc21lZGlhZmVhdHVyZXMuc3RyaXAgfCBhd2sgJ3sgXAor
aT0xOyBcCitwcmludCAic3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtZWRpYUZlYXR1cmVMaXN0
W10gPSB7IjsgXAorcHJpbnQgIlwiXCIsIjsgXAorZG8geyBwcmludCAiXCIiICQwICJcIiwgIjsg
aSA9IGkgKyAxIH0gd2hpbGUgKGdldGxpbmUpOyBcCitwcmludCAiICAgIDAiOyBcCitwcmludCAi
fTsiOyBcCitwcmludCAiRE9NU3RyaW5nIGdldE1lZGlhRmVhdHVyZU5hbWUodW5zaWduZWQgc2hv
cnQgaWQpIjsgXAorcHJpbnQgInsiOyBcCitwcmludCAiICAgIGlmKGlkID49IENTU19NRURJQV9G
RUFUX1RPVEFMIHx8IGlkID09IDApIjsgXAorcHJpbnQgIiAgICAgIHJldHVybiBET01TdHJpbmco
KTsiO1wKK3ByaW50ICIgICAgZWxzZSI7XAorcHJpbnQgIiAgICAgIHJldHVybiBET01TdHJpbmco
bWVkaWFGZWF0dXJlTGlzdFtpZF0pOyI7IFwKK3ByaW50ICJ9OyI7IFwKK3ByaW50ICIiOyBcCit9
JyA+PiBjc3NtZWRpYWZlYXR1cmVzLmMKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc19tZWRpYXF1ZXJ5
aW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc19tZWRpYXF1ZXJ5aW1wbC5oCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvY3NzX21lZGlhcXVlcnlpbXBsLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODUgQEAKKyNpZm5kZWYgQ1NTX2Nzc19tZWRpYXF1ZXJ5aW1wbF9oCisj
ZGVmaW5lIENTU19jc3NfbWVkaWFxdWVyeWltcGxfaAorCisjaW5jbHVkZSA8cXZhbHVlbGlzdC5o
PgorI2luY2x1ZGUgPHFwdHJsaXN0Lmg+CisKKyNpbmNsdWRlICJkb20vZG9tX3N0cmluZy5oIgor
I2luY2x1ZGUgImNzcy9jc3NfYmFzZS5oIgorI2luY2x1ZGUgImNzcy9jc3NfdmFsdWVpbXBsLmgi
CituYW1lc3BhY2UgRE9NIHsKK2NsYXNzIFZhbHVlTGlzdDsKK2NsYXNzIENTU1ByaW1pdGl2ZVZh
bHVlOworCitjbGFzcyBNZWRpYVF1ZXJ5RXhwSW1wbCB7CitwdWJsaWM6CisgICAgTWVkaWFRdWVy
eUV4cEltcGwoaW50IG1lZGlhRmVhdHVyZUlkLCBWYWx1ZUxpc3QqIHZhbHVlcyk7CisgICAgfk1l
ZGlhUXVlcnlFeHBJbXBsKCk7CisKKyAgICBpbnQgbWVkaWFGZWF0dXJlKCkgY29uc3Q7CisgICAg
Q1NTVmFsdWVJbXBsKiB2YWx1ZSgpIGNvbnN0OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IE1lZGlhUXVlcnlFeHBJbXBsJiBvdGhlcikgY29uc3QgIHsKKyAgICAgICAgcmV0dXJuIChvdGhl
ci5tX21lZGlhRmVhdHVyZUlkID09IG1fbWVkaWFGZWF0dXJlSWQpCisgICAgICAgICAgICAmJiAo
KCFvdGhlci5tX3ZhbHVlICYmICFtX3ZhbHVlKQorICAgICAgICAgICAgICAgIHx8IChvdGhlci5t
X3ZhbHVlICYmIG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+Y3NzVGV4dCgpID09IG1fdmFsdWUt
PmNzc1RleHQoKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9tZWRpYUZlYXR1cmVJ
ZDsKKyAgICBDU1NWYWx1ZUltcGwqIG1fdmFsdWU7Cit9OworCitjbGFzcyBNZWRpYVF1ZXJ5RXhw
TGlzdEltcGwKK3sKK3B1YmxpYzoKKyAgICBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwoKQorICAgIHsg
ZXhwcy5zZXRBdXRvRGVsZXRlKHRydWUpOyB9CisKKyAgICB2b2lkIGFwcGVuZChNZWRpYVF1ZXJ5
RXhwSW1wbCogbmV3RXhwKSB7IGV4cHMuYXBwZW5kKG5ld0V4cCk7IH0KKyAgICBjb25zdCBRUHRy
TGlzdDxNZWRpYVF1ZXJ5RXhwSW1wbD4qIGxpc3QoKSBjb25zdCB7IHJldHVybiAmZXhwczsgfQor
Citwcml2YXRlOgorICAgIFFQdHJMaXN0PE1lZGlhUXVlcnlFeHBJbXBsPiBleHBzOworfTsKKwor
CitjbGFzcyBNZWRpYVF1ZXJ5SW1wbCB7CitwdWJsaWM6CisgICAgZW51bSBSZXN0cmljdG9yewor
CU9ubHksIE5vdCwgTm9uZQorICAgIH07CisKKyAgICBNZWRpYVF1ZXJ5SW1wbChSZXN0cmljdG9y
IHIsIGNvbnN0IERPTVN0cmluZyAmbWVkaWFUeXBlLCBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwqIGV4
cHJzKTsKKyAgICB+TWVkaWFRdWVyeUltcGwoKTsKKworICAgIFJlc3RyaWN0b3IgcmVzdHJpY3Rv
cigpIGNvbnN0OworICAgIE1lZGlhUXVlcnlFeHBMaXN0SW1wbCogZXhwcmVzc2lvbnMoKSBjb25z
dDsKKyAgICBRU3RyaW5nIG1lZGlhVHlwZSgpIGNvbnN0OworCisgICAgYm9vbCBvcGVyYXRvcj09
KGNvbnN0IE1lZGlhUXVlcnlJbXBsJiBvdGhlcikgY29uc3Q7CisKKyBwcml2YXRlOgorICAgIFJl
c3RyaWN0b3IgbV9yZXN0cmljdG9yOworICAgIERPTVN0cmluZyBtX21lZGlhVHlwZTsKKyAgICBN
ZWRpYVF1ZXJ5RXhwTGlzdEltcGwqIG1fZXhwcmVzc2lvbnM7Cit9OworCitjbGFzcyBNZWRpYVF1
ZXJ5TGlzdEltcGwgeworcHVibGljOgorICAgIE1lZGlhUXVlcnlMaXN0SW1wbCgpCisgICAgeyBx
dWVyaWVzLnNldEF1dG9EZWxldGUodHJ1ZSk7IH0KKyAgICB1bnNpZ25lZCBpbnQgY291bnQoKSBj
b25zdCB7IHJldHVybiBxdWVyaWVzLmNvdW50KCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBxdWVy
aWVzLmNsZWFyKCk7IH0KKyAgICB2b2lkIGFwcGVuZChNZWRpYVF1ZXJ5SW1wbCogbmV3UXVlcnkp
IHsgcXVlcmllcy5hcHBlbmQobmV3UXVlcnkpOyB9CisgICAgY29uc3QgUVB0ckxpc3Q8TWVkaWFR
dWVyeUltcGw+KiBsaXN0KCkgY29uc3QgeyByZXR1cm4gJnF1ZXJpZXM7IH0KKyAgICB2b2lkIHJl
bW92ZShNZWRpYVF1ZXJ5SW1wbCogcXVlcnkpIHsgcXVlcmllcy5yZW1vdmUocXVlcnkpOyB9CisK
K3ByaXZhdGU6CisgICAgUVB0ckxpc3Q8TWVkaWFRdWVyeUltcGw+IHF1ZXJpZXM7Cit9OworCisK
K30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxl
Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJ
KHJldmlzaW9uIDEyNTEzKQorKysgV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJjc3NoZWxwZXIuaCIKICNp
bmNsdWRlICJjc3Nwcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiY3NzdmFsdWVzLmgiCisjaW5jbHVk
ZSAiY3NzX21lZGlhcXVlcnlldmFsLmgiCiAjaW5jbHVkZSAiZm9udC5oIgogI2luY2x1ZGUgImhl
bHBlci5oIgogI2luY2x1ZGUgImh0bWxfZG9jdW1lbnRpbXBsLmgiCkBAIC0xNjksNyArMTcwLDcg
QEAgcHVibGljOgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwg
Q1NTUnVsZURhdGFMaXN0Kj4gQXRvbVJ1bGVNYXA7CiAgICAgCi0gICAgdm9pZCBhZGRSdWxlc0Zy
b21TaGVldChDU1NTdHlsZVNoZWV0SW1wbCogc2hlZXQsIGNvbnN0IERPTVN0cmluZyAmbWVkaXVt
ID0gInNjcmVlbiIpOworICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoRE9NOjpDU1NTdHlsZVNo
ZWV0SW1wbCogc2hlZXQsIERPTTo6TWVkaWFRdWVyeUV2YWx1YXRvciogbWVkaXVtKTsKICAgICAK
ICAgICB2b2lkIGFkZFJ1bGUoQ1NTU3R5bGVSdWxlSW1wbCogcnVsZSwgQ1NTU2VsZWN0b3IqIHNl
bCk7CiAgICAgdm9pZCBhZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBBdG9tUnVs
ZU1hcCYgbWFwLApAQCAtMjEyLDExICsyMTMsMzEgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5
bGVTZWxlY3RvciggRG9jdQogICAgIHNldHRpbmdzID0gdmlldyA/IHZpZXctPmZyYW1lKCktPnNl
dHRpbmdzKCkgOiAwOwogICAgIGlmICghZGVmYXVsdFN0eWxlKQogICAgICAgICBsb2FkRGVmYXVs
dFN0eWxlKCk7Ci0gICAgbV9tZWRpdW0gPSB2aWV3ID8gdmlldy0+bWVkaWFUeXBlKCkgOiBRU3Ry
aW5nKCJhbGwiKTsKIAogICAgIG1fdXNlclN0eWxlID0gMDsKICAgICBtX3VzZXJTaGVldCA9IDA7
CiAKKyAgICAvLyBjb25zdHJ1Y3QgZG9jdW1lbnQgcm9vdCBlbGVtZW50IGRlZmF1bHQgc3R5bGUu
IHRoaXMgaXMgbmVlZGVkIAorICAgIC8vIHRvIGV2YWx1YXRlIG1lZGlhIHF1ZXJpZXMgdGhhdCBj
b250YWluIHJlbGF0aXZlIGNvbnN0cmFpbnRzLCBsaWtlICJzY3JlZW4gYW5kIChtYXgtd2lkdGg6
IDEwZW0pIgorICAgIC8vIFRoaXMgaXMgaGVyZSBpbnN0ZWFkIG9mIGNvbnN0cnVjdG9yLCBiZWNh
dXNlIHdoZW4gY29uc3RydWN0b3IgaXMgcnVuLCAKKyAgICAvLyBkb2N1bWVudCBkb2Vzbid0IGhh
dmUgZG9jdW1lbnRFbGVtZW50CisgICAgLy8gWFhYOiB0aGlzIGFzc3VtZXMgdGhhdCBlbGVtZW50
IHRoYXQgZ2V0cyBwYXNzZWQgdG8gc3R5bGVGb3JFbGVtZW50IC1jYWxsIAorICAgIC8vIGlzIGZy
b20gdGhlIGRvY3VtZW50IHRoYXQgb3ducyB0aGUgc3R5bGUgc2VsZWN0b3IgICAgICAgIAorICAg
IGlmICh2aWV3KSB7CisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlhUXVlcnlFdmFsdWF0b3Io
dmlldy0+bWVkaWFUeXBlKCkpOworICAgIH0gZWxzZSB7ICAgICAgICAKKyAgICAgICAgbV9tZWRp
dW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigiYWxsIik7CisgICAgfQorICAgIEVsZW1lbnRJ
bXBsICpyb290ID0gZG9jLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBpZiAocm9vdCkgeyAgICAg
ICAgIAorICAgICAgICBtX3Jvb3REZWZhdWx0U3R5bGUgPSBkZWZhdWx0U3R5bGVGb3JSb290KHJv
b3QpOworICAgICAgICBtX3Jvb3REZWZhdWx0U3R5bGUtPnJlZigpOworICAgIH0KKyAgICBpZiAo
bV9yb290RGVmYXVsdFN0eWxlICYmIHZpZXcpIHsgICAgICAgICAgIAorICAgICAgICBkZWxldGUg
bV9tZWRpdW07CisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlhUXVlcnlFdmFsdWF0b3Iodmll
dy0+bWVkaWFUeXBlKCksIHZpZXcsIHBhaW50RGV2aWNlTWV0cmljcywgbV9yb290RGVmYXVsdFN0
eWxlKTsKKyAgICB9CisKICAgICAvLyBGSVhNRTogVGhpcyBzdWNrcyEgVGhlIHVzZXIgc2hlZXQg
aXMgcmVwYXJzZWQgZXZlcnkgdGltZSEKICAgICBpZiAoIXVzZXJTdHlsZVNoZWV0LmlzRW1wdHko
KSkgewogICAgICAgICBtX3VzZXJTaGVldCA9IG5ldyBDU1NTdHlsZVNoZWV0SW1wbChkb2MpOwpA
QCAtMjQ0LDcgKzI2NSwyMSBAQCBDU1NTdHlsZVNlbGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKCBD
U1NTCiAKICAgICBpZighZGVmYXVsdFN0eWxlKSBsb2FkRGVmYXVsdFN0eWxlKCk7CiAgICAgRnJh
bWVWaWV3ICp2aWV3ID0gc2hlZXQtPmRvYygpLT52aWV3KCk7Ci0gICAgbV9tZWRpdW0gPSAgdmll
dyA/IHZpZXctPm1lZGlhVHlwZSgpIDogUVN0cmluZygiYWxsIik7CisKKyAgICBpZiAodmlldykg
eworICAgICAgICBtX21lZGl1bSA9IG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKHZpZXctPm1lZGlh
VHlwZSgpKTsKKyAgICB9IGVsc2UgeyAgICAgICAgCisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1l
ZGlhUXVlcnlFdmFsdWF0b3IoImFsbCIpOworICAgIH0KKyAgICBFbGVtZW50SW1wbCAqcm9vdCA9
IHNoZWV0LT5kb2MoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgaWYgKHJvb3QpIHsgICAgICAg
ICAKKyAgICAgICAgbV9yb290RGVmYXVsdFN0eWxlID0gZGVmYXVsdFN0eWxlRm9yUm9vdChyb290
KTsKKyAgICAgICAgbV9yb290RGVmYXVsdFN0eWxlLT5yZWYoKTsKKyAgICB9CisgICAgaWYgKG1f
cm9vdERlZmF1bHRTdHlsZSAmJiB2aWV3KSB7ICAgICAgICAgICAKKyAgICAgICAgZGVsZXRlIG1f
bWVkaXVtOworICAgICAgICBtX21lZGl1bSA9IG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKHZpZXct
Pm1lZGlhVHlwZSgpLCB2aWV3LCBwYWludERldmljZU1ldHJpY3MsIG1fcm9vdERlZmF1bHRTdHls
ZSk7CisgICAgfQogCiAgICAgbV9hdXRob3JTdHlsZSA9IG5ldyBDU1NSdWxlU2V0KCk7CiAgICAg
bV9hdXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoIHNoZWV0LCBtX21lZGl1bSApOwpAQCAt
MjU1LDYgKzI5MCw4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdCgpCiAgICAgZWxlbWVu
dCA9IDA7CiAgICAgc2V0dGluZ3MgPSAwOwogICAgIG1fbWF0Y2hlZFJ1bGVDb3VudCA9IG1fbWF0
Y2hlZERlY2xDb3VudCA9IG1fdG1wUnVsZUNvdW50ID0gMDsKKyAgICBtX3Jvb3REZWZhdWx0U3R5
bGUgPSAwOworICAgIG1fcmVzb2x2aW5nRm9yUm9vdERlZmF1bHRTdHlsZSA9IGZhbHNlOwogfQog
CiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnNldEVuY29kZWRVUkwoY29uc3QgS1VSTCYgdXJsKQpA
QCAtMjc2LDYgKzMxMyw4IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6c2V0RW5jb2RlZFVSTChj
b24KIAogQ1NTU3R5bGVTZWxlY3Rvcjo6fkNTU1N0eWxlU2VsZWN0b3IoKQogeworICAgIGRlbGV0
ZSBtX21lZGl1bTsJCisgICAgOjpkZWxldGUgbV9yb290RGVmYXVsdFN0eWxlOwogICAgIGRlbGV0
ZSBtX2F1dGhvclN0eWxlOwogICAgIGRlbGV0ZSBtX3VzZXJTdHlsZTsKICAgICBkZWxldGUgbV91
c2VyU2hlZXQ7CkBAIC0zMTYsOCArMzU1LDEyIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bG9h
ZERlZmF1bHRTdHlsZSgKIAogICAgIC8vIFN0cmljdC1tb2RlIHJ1bGVzLgogICAgIGRlZmF1bHRT
aGVldCA9IHBhcnNlVUFTaGVldChodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQpOwotICAgIGRlZmF1
bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCAic2NyZWVuIik7Ci0gICAg
ZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgInByaW50
Iik7CisKKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIpOworICAg
IGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCAmc2NyZWVuRXZh
bCk7CisKKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZhbCgicHJpbnQiKTsKKyAgICBk
ZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCAmcHJpbnRF
dmFsKTsKIAogI2lmIFNWR19TVVBQT1JUCiAgICAgLy8gU1ZHIHJ1bGVzLgpAQCAtNzEwLDcgKzc1
Myw3IEBAIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpsb2NhdGVTaGEKIAogUmVuZGVy
U3R5bGUqIENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50SW1wbCogZSwg
UmVuZGVyU3R5bGUqIGRlZmF1bHRQYXJlbnQsIGJvb2wgYWxsb3dTaGFyaW5nKQogewotICAgIGlm
ICghZS0+Z2V0RG9jdW1lbnQoKS0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpIHsKKyAgICBpZiAo
IW1fcmVzb2x2aW5nRm9yUm9vdERlZmF1bHRTdHlsZSAmJiAhZS0+Z2V0RG9jdW1lbnQoKS0+aGF2
ZVN0eWxlc2hlZXRzTG9hZGVkKCkpIHsKICAgICAgICAgaWYgKCFzdHlsZU5vdFlldEF2YWlsYWJs
ZSkgewogICAgICAgICAgICAgc3R5bGVOb3RZZXRBdmFpbGFibGUgPSA6Om5ldyBSZW5kZXJTdHls
ZSgpOwogICAgICAgICAgICAgc3R5bGVOb3RZZXRBdmFpbGFibGUtPnNldERpc3BsYXkoTk9ORSk7
CkBAIC03MzIsNyArNzc1LDExIEBAIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpzdHls
ZUZvckUKICAgICB9CiAgICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlLCBkZWZhdWx0UGFyZW50KTsK
IAotICAgIHN0eWxlID0gbmV3IChlLT5nZXREb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKSBSZW5k
ZXJTdHlsZSgpOworICAgIGlmIChtX3Jlc29sdmluZ0ZvclJvb3REZWZhdWx0U3R5bGUpIHsKKyAg
ICAgICAgc3R5bGUgPSA6Om5ldyBSZW5kZXJTdHlsZSgpOworICAgIH0gZWxzZSB7CisgICAgICAg
IHN0eWxlID0gbmV3IChlLT5nZXREb2N1bWVudCgpLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJTdHls
ZSgpOworICAgIH0KICAgICBpZiAocGFyZW50U3R5bGUpCiAgICAgICAgIHN0eWxlLT5pbmhlcml0
RnJvbShwYXJlbnRTdHlsZSk7CiAgICAgZWxzZQpAQCAtNzQ3LDYxICs3OTQsNjUgQEAgUmVuZGVy
U3R5bGUqIENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRQogICAgICAgICBtYXRjaFJ1bGVzKGRl
ZmF1bHRRdWlya3NTdHlsZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogICAgIAogICAgIC8v
IDMuIElmIG91ciBtZWRpdW0gaXMgcHJpbnQsIHRoZW4gd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUg
cHJpbnQgc2hlZXQuCi0gICAgaWYgKG1fbWVkaXVtID09ICJwcmludCIpCisgICAgaWYgKG1fbWVk
aXVtLT5tZWRpYVR5cGVNYXRjaCgicHJpbnQiKSkKICAgICAgICAgbWF0Y2hSdWxlcyhkZWZhdWx0
UHJpbnRTdHlsZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogCi0gICAgLy8gNC4gTm93IHdl
IGNoZWNrIHVzZXIgc2hlZXQgcnVsZXMuCiAgICAgaW50IGZpcnN0VXNlclJ1bGUgPSAtMSwgbGFz
dFVzZXJSdWxlID0gLTE7Ci0gICAgbWF0Y2hSdWxlcyhtX3VzZXJTdHlsZSwgZmlyc3RVc2VyUnVs
ZSwgbGFzdFVzZXJSdWxlKTsKLQotICAgIC8vIDUuIE5vdyBjaGVjayBhdXRob3IgcnVsZXMsIGJl
Z2lubmluZyBmaXJzdCB3aXRoIHByZXNlbnRhdGlvbmFsIGF0dHJpYnV0ZXMKLSAgICAvLyBtYXBw
ZWQgZnJvbSBIVE1MLgogICAgIGludCBmaXJzdEF1dGhvclJ1bGUgPSAtMSwgbGFzdEF1dGhvclJ1
bGUgPSAtMTsKLSAgICBpZiAoc3R5bGVkRWxlbWVudCkgewotICAgICAgICAvLyBBc2sgaWYgdGhl
IEhUTUwgZWxlbWVudCBoYXMgbWFwcGVkIGF0dHJpYnV0ZXMuCi0gICAgICAgIGlmIChzdHlsZWRF
bGVtZW50LT5oYXNNYXBwZWRBdHRyaWJ1dGVzKCkpIHsKLSAgICAgICAgICAgIC8vIFdhbGsgb3Vy
IGF0dHJpYnV0ZSBsaXN0IGFuZCBhZGQgaW4gZWFjaCBkZWNsLgotICAgICAgICAgICAgY29uc3Qg
TmFtZWRNYXBwZWRBdHRyTWFwSW1wbCogbWFwID0gc3R5bGVkRWxlbWVudC0+bWFwcGVkQXR0cmli
dXRlcygpOwotICAgICAgICAgICAgZm9yICh1aW50IGkgPSAwOyBpIDwgbWFwLT5sZW5ndGgoKTsg
aSsrKSB7Ci0gICAgICAgICAgICAgICAgTWFwcGVkQXR0cmlidXRlSW1wbCogYXR0ciA9IG1hcC0+
YXR0cmlidXRlSXRlbShpKTsKLSAgICAgICAgICAgICAgICBpZiAoYXR0ci0+ZGVjbCgpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdEF1dGhvclJ1bGUgPT0gLTEpIGZpcnN0QXV0aG9y
UnVsZSA9IG1fbWF0Y2hlZERlY2xDb3VudDsKLSAgICAgICAgICAgICAgICAgICAgbGFzdEF1dGhv
clJ1bGUgPSBtX21hdGNoZWREZWNsQ291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIGFkZE1hdGNo
ZWREZWNsYXJhdGlvbihhdHRyLT5kZWNsKCkpOworICAgIGlmICghbV9yZXNvbHZpbmdGb3JSb290
RGVmYXVsdFN0eWxlKSB7CisgICAgICAgIC8vIDQuIE5vdyB3ZSBjaGVjayB1c2VyIHNoZWV0IHJ1
bGVzLgorICAgICAgICBtYXRjaFJ1bGVzKG1fdXNlclN0eWxlLCBmaXJzdFVzZXJSdWxlLCBsYXN0
VXNlclJ1bGUpOworCisgICAgICAgIC8vIDUuIE5vdyBjaGVjayBhdXRob3IgcnVsZXMsIGJlZ2lu
bmluZyBmaXJzdCB3aXRoIHByZXNlbnRhdGlvbmFsIGF0dHJpYnV0ZXMKKyAgICAgICAgLy8gbWFw
cGVkIGZyb20gSFRNTC4KKyAgICAgICAgaWYgKHN0eWxlZEVsZW1lbnQpIHsKKyAgICAgICAgICAg
IC8vIEFzayBpZiB0aGUgSFRNTCBlbGVtZW50IGhhcyBtYXBwZWQgYXR0cmlidXRlcy4KKyAgICAg
ICAgICAgIGlmIChzdHlsZWRFbGVtZW50LT5oYXNNYXBwZWRBdHRyaWJ1dGVzKCkpIHsKKyAgICAg
ICAgICAgICAgICAvLyBXYWxrIG91ciBhdHRyaWJ1dGUgbGlzdCBhbmQgYWRkIGluIGVhY2ggZGVj
bC4KKyAgICAgICAgICAgICAgICBjb25zdCBOYW1lZE1hcHBlZEF0dHJNYXBJbXBsKiBtYXAgPSBz
dHlsZWRFbGVtZW50LT5tYXBwZWRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgZm9yICh1
aW50IGkgPSAwOyBpIDwgbWFwLT5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAg
IE1hcHBlZEF0dHJpYnV0ZUltcGwqIGF0dHIgPSBtYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7CisgICAg
ICAgICAgICAgICAgICAgIGlmIChhdHRyLT5kZWNsKCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChmaXJzdEF1dGhvclJ1bGUgPT0gLTEpIGZpcnN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hl
ZERlY2xDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RBdXRob3JSdWxlID0gbV9t
YXRjaGVkRGVjbENvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgYWRkTWF0Y2hlZERlY2xh
cmF0aW9uKGF0dHItPmRlY2woKSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KIAotICAgICAgICAvLyBOb3cgd2UgY2hl
Y2sgYWRkaXRpb25hbCBtYXBwZWQgZGVjbGFyYXRpb25zLgotICAgICAgICAvLyBUYWJsZXMgYW5k
IHRhYmxlIGNlbGxzIHNoYXJlIGFuIGFkZGl0aW9uYWwgbWFwcGVkIHJ1bGUgdGhhdCBtdXN0IGJl
IGFwcGxpZWQKLSAgICAgICAgLy8gYWZ0ZXIgYWxsIGF0dHJpYnV0ZXMsIHNpbmNlIHRoZWlyIG1h
cHBlZCBzdHlsZSBkZXBlbmRzIG9uIHRoZSB2YWx1ZXMgb2YgbXVsdGlwbGUgYXR0cmlidXRlcy4K
LSAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsKiBhdHRyaWJ1dGVEZWNsID0g
c3R5bGVkRWxlbWVudC0+YWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbCgpOwotICAgICAgICBp
ZiAoYXR0cmlidXRlRGVjbCkgewotICAgICAgICAgICAgaWYgKGZpcnN0QXV0aG9yUnVsZSA9PSAt
MSkgZmlyc3RBdXRob3JSdWxlID0gbV9tYXRjaGVkRGVjbENvdW50OwotICAgICAgICAgICAgbGFz
dEF1dGhvclJ1bGUgPSBtX21hdGNoZWREZWNsQ291bnQ7Ci0gICAgICAgICAgICBhZGRNYXRjaGVk
RGVjbGFyYXRpb24oYXR0cmlidXRlRGVjbCk7CisgICAgICAgICAgICAvLyBOb3cgd2UgY2hlY2sg
YWRkaXRpb25hbCBtYXBwZWQgZGVjbGFyYXRpb25zLgorICAgICAgICAgICAgLy8gVGFibGVzIGFu
ZCB0YWJsZSBjZWxscyBzaGFyZSBhbiBhZGRpdGlvbmFsIG1hcHBlZCBydWxlIHRoYXQgbXVzdCBi
ZSBhcHBsaWVkCisgICAgICAgICAgICAvLyBhZnRlciBhbGwgYXR0cmlidXRlcywgc2luY2UgdGhl
aXIgbWFwcGVkIHN0eWxlIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBtdWx0aXBsZSBhdHRyaWJ1
dGVzLgorICAgICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsKiBhdHRyaWJ1
dGVEZWNsID0gc3R5bGVkRWxlbWVudC0+YWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbCgpOwor
ICAgICAgICAgICAgaWYgKGF0dHJpYnV0ZURlY2wpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmly
c3RBdXRob3JSdWxlID09IC0xKSBmaXJzdEF1dGhvclJ1bGUgPSBtX21hdGNoZWREZWNsQ291bnQ7
CisgICAgICAgICAgICAgICAgbGFzdEF1dGhvclJ1bGUgPSBtX21hdGNoZWREZWNsQ291bnQ7Cisg
ICAgICAgICAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKGF0dHJpYnV0ZURlY2wpOworICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8vIDYuIENoZWNrIHRoZSBy
dWxlcyBpbiBhdXRob3Igc2hlZXRzIG5leHQuCi0gICAgbWF0Y2hSdWxlcyhtX2F1dGhvclN0eWxl
LCBmaXJzdEF1dGhvclJ1bGUsIGxhc3RBdXRob3JSdWxlKTsKLSAgICAKLSAgICAvLyA3LiBOb3cg
Y2hlY2sgb3VyIGlubGluZSBzdHlsZSBhdHRyaWJ1dGUuCi0gICAgaWYgKHN0eWxlZEVsZW1lbnQp
IHsKLSAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsKiBpbmxpbmVEZWNsID0g
c3R5bGVkRWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCk7Ci0gICAgICAgIGlmIChpbmxpbmVEZWNs
KSB7Ci0gICAgICAgICAgICBpZiAoZmlyc3RBdXRob3JSdWxlID09IC0xKSBmaXJzdEF1dGhvclJ1
bGUgPSBtX21hdGNoZWREZWNsQ291bnQ7Ci0gICAgICAgICAgICBsYXN0QXV0aG9yUnVsZSA9IG1f
bWF0Y2hlZERlY2xDb3VudDsKLSAgICAgICAgICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihpbmxp
bmVEZWNsKTsKKworICAgICAgICAvLyA2LiBDaGVjayB0aGUgcnVsZXMgaW4gYXV0aG9yIHNoZWV0
cyBuZXh0LgorICAgICAgICBtYXRjaFJ1bGVzKG1fYXV0aG9yU3R5bGUsIGZpcnN0QXV0aG9yUnVs
ZSwgbGFzdEF1dGhvclJ1bGUpOworCisgICAgICAgIC8vIDcuIE5vdyBjaGVjayBvdXIgaW5saW5l
IHN0eWxlIGF0dHJpYnV0ZS4KKyAgICAgICAgaWYgKHN0eWxlZEVsZW1lbnQpIHsKKyAgICAgICAg
ICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uSW1wbCogaW5saW5lRGVjbCA9IHN0eWxlZEVs
ZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpOworICAgICAgICAgICAgaWYgKGlubGluZURlY2wpIHsK
KyAgICAgICAgICAgICAgICBpZiAoZmlyc3RBdXRob3JSdWxlID09IC0xKSBmaXJzdEF1dGhvclJ1
bGUgPSBtX21hdGNoZWREZWNsQ291bnQ7CisgICAgICAgICAgICAgICAgbGFzdEF1dGhvclJ1bGUg
PSBtX21hdGNoZWREZWNsQ291bnQ7CisgICAgICAgICAgICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0
aW9uKGlubGluZURlY2wpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIAor
CiAgICAgLy8gTm93IHdlIGhhdmUgYWxsIG9mIHRoZSBtYXRjaGVkIHJ1bGVzIGluIHRoZSBhcHBy
b3ByaWF0ZSBvcmRlci4gIFdhbGsgdGhlIHJ1bGVzIGFuZCBhcHBseQogICAgIC8vIGhpZ2gtcHJp
b3JpdHkgcHJvcGVydGllcyBmaXJzdCwgaS5lLiwgdGhvc2UgcHJvcGVydGllcyB0aGF0IG90aGVy
IHByb3BlcnRpZXMgZGVwZW5kIG9uLgogICAgIC8vIFRoZSBvcmRlciBpcyAoMSkgaGlnaC1wcmlv
cml0eSBub3QgaW1wb3J0YW50LCAoMikgaGlnaC1wcmlvcml0eSBpbXBvcnRhbnQsICgzKSBub3Jt
YWwgbm90IGltcG9ydGFudAogICAgIC8vIGFuZCAoNCkgbm9ybWFsIGltcG9ydGFudC4KLSAgICBh
cHBseURlY2xhcmF0aW9ucyh0cnVlLCBmYWxzZSwgMCwgbV9tYXRjaGVkRGVjbENvdW50LTEpOwot
ICAgIGFwcGx5RGVjbGFyYXRpb25zKHRydWUsIHRydWUsIGZpcnN0QXV0aG9yUnVsZSwgbGFzdEF1
dGhvclJ1bGUpOworICAgIGlmICghbV9yZXNvbHZpbmdGb3JSb290RGVmYXVsdFN0eWxlKSB7Cisg
ICAgICAgIGFwcGx5RGVjbGFyYXRpb25zKHRydWUsIGZhbHNlLCAwLCBtX21hdGNoZWREZWNsQ291
bnQtMSk7CisgICAgICAgIGFwcGx5RGVjbGFyYXRpb25zKHRydWUsIHRydWUsIGZpcnN0QXV0aG9y
UnVsZSwgbGFzdEF1dGhvclJ1bGUpOworICAgIH0KICAgICBhcHBseURlY2xhcmF0aW9ucyh0cnVl
LCB0cnVlLCBmaXJzdFVzZXJSdWxlLCBsYXN0VXNlclJ1bGUpOwogICAgIGFwcGx5RGVjbGFyYXRp
b25zKHRydWUsIHRydWUsIGZpcnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKICAgICAKQEAgLTgyNyw4
ICs4NzgsMTAgQEAgUmVuZGVyU3R5bGUqIENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRQogICAg
IC8vIE5vdyBkbyB0aGUgYXV0aG9yIGFuZCB1c2VyIG5vcm1hbCBwcmlvcml0eSBwcm9wZXJ0aWVz
IGFuZCBhbGwgdGhlICFpbXBvcnRhbnQgcHJvcGVydGllcy4KICAgICBhcHBseURlY2xhcmF0aW9u
cyhmYWxzZSwgZmFsc2UsIGxhc3RVQVJ1bGUrMSwgbV9tYXRjaGVkRGVjbENvdW50LTEpOwogICAg
IGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVlLCBmaXJzdEF1dGhvclJ1bGUsIGxhc3RBdXRo
b3JSdWxlKTsKLSAgICBhcHBseURlY2xhcmF0aW9ucyhmYWxzZSwgdHJ1ZSwgZmlyc3RVc2VyUnVs
ZSwgbGFzdFVzZXJSdWxlKTsKLSAgICBhcHBseURlY2xhcmF0aW9ucyhmYWxzZSwgdHJ1ZSwgZmly
c3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOworICAgIGlmICghbV9yZXNvbHZpbmdGb3JSb290RGVmYXVs
dFN0eWxlKSB7CisgICAgICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVlLCBmaXJzdFVz
ZXJSdWxlLCBsYXN0VXNlclJ1bGUpOworICAgICAgICBhcHBseURlY2xhcmF0aW9ucyhmYWxzZSwg
dHJ1ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOworICAgIH0KICAgICAKICAgICAvLyBJZiBv
dXIgZm9udCBnb3QgZGlydGllZCBieSBvbmUgb2YgdGhlIG5vbi1lc3NlbnRpYWwgZm9udCBwcm9w
cywgCiAgICAgLy8gZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBhIHNlY29uZCB0aW1lLgpAQCAtMTU3
OCwxNCArMTYzMSwxNCBAQCB2b2lkIENTU1J1bGVTZXQ6OmFkZFJ1bGUoQ1NTU3R5bGVSdWxlSW1w
CiAgICAgICAgIG1fdW5pdmVyc2FsUnVsZXMtPmFwcGVuZChtX3J1bGVDb3VudCsrLCBydWxlLCBz
ZWwpOwogfQogCi12b2lkIENTU1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hl
ZXRJbXBsICpzaGVldCwgY29uc3QgRE9NU3RyaW5nICZtZWRpdW0pCit2b2lkIENTU1J1bGVTZXQ6
OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hlZXRJbXBsICpzaGVldCwgTWVkaWFRdWVyeUV2
YWx1YXRvciAqbWVkaXVtKQogewogICAgIGlmICghc2hlZXQgfHwgIXNoZWV0LT5pc0NTU1N0eWxl
U2hlZXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm8gbWVkaWEgaW1wbGllcyAiYWxs
IiwgYnV0IGlmIGEgbWVkaWEgbGlzdCBleGlzdHMgaXQgbXVzdAogICAgIC8vIGNvbnRhaW4gb3Vy
IGN1cnJlbnQgbWVkaXVtCi0gICAgaWYgKHNoZWV0LT5tZWRpYSgpICYmICFzaGVldC0+bWVkaWEo
KS0+Y29udGFpbnMobWVkaXVtKSkKKyAgICBpZiAoc2hlZXQtPm1lZGlhKCkgJiYgIW1lZGl1bS0+
ZXZhbChzaGVldC0+bWVkaWEoKSkpCiAgICAgICAgIHJldHVybjsgLy8gdGhlIHN0eWxlIHNoZWV0
IGRvZXNuJ3QgYXBwbHkKIAogICAgIGludCBsZW4gPSBzaGVldC0+bGVuZ3RoKCk7CkBAIC0xNTk5
LDE0ICsxNjUyLDE0IEBAIHZvaWQgQ1NTUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3QK
ICAgICAgICAgfQogICAgICAgICBlbHNlIGlmKGl0ZW0tPmlzSW1wb3J0UnVsZSgpKSB7CiAgICAg
ICAgICAgICBDU1NJbXBvcnRSdWxlSW1wbCAqaW1wb3J0ID0gc3RhdGljX2Nhc3Q8Q1NTSW1wb3J0
UnVsZUltcGwgKj4oaXRlbSk7Ci0gICAgICAgICAgICBpZiAoIWltcG9ydC0+bWVkaWEoKSB8fCBp
bXBvcnQtPm1lZGlhKCktPmNvbnRhaW5zKG1lZGl1bSkpCisgICAgICAgICAgICBpZiAoIWltcG9y
dC0+bWVkaWEoKSB8fCBtZWRpdW0tPmV2YWwoaW1wb3J0LT5tZWRpYSgpKSkKICAgICAgICAgICAg
ICAgICBhZGRSdWxlc0Zyb21TaGVldChpbXBvcnQtPnN0eWxlU2hlZXQoKSwgbWVkaXVtKTsKICAg
ICAgICAgfQogICAgICAgICBlbHNlIGlmKGl0ZW0tPmlzTWVkaWFSdWxlKCkpIHsKICAgICAgICAg
ICAgIENTU01lZGlhUnVsZUltcGwgKnIgPSBzdGF0aWNfY2FzdDxDU1NNZWRpYVJ1bGVJbXBsKj4o
aXRlbSk7CiAgICAgICAgICAgICBDU1NSdWxlTGlzdEltcGwgKnJ1bGVzID0gci0+Y3NzUnVsZXMo
KTsKIAotICAgICAgICAgICAgaWYgKCghci0+bWVkaWEoKSB8fCByLT5tZWRpYSgpLT5jb250YWlu
cyhtZWRpdW0pKSAmJiBydWxlcykgeworICAgICAgICAgICAgaWYgKCghci0+bWVkaWEoKSB8fCBt
ZWRpdW0tPmV2YWwoci0+bWVkaWEoKSkpICYmIHJ1bGVzKSB7CiAgICAgICAgICAgICAgICAgLy8g
VHJhdmVyc2UgY2hpbGQgZWxlbWVudHMgb2YgdGhlIEBtZWRpYSBydWxlLgogICAgICAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBydWxlcy0+bGVuZ3RoKCk7IGorKykgewogICAg
ICAgICAgICAgICAgICAgICBDU1NSdWxlSW1wbCAqY2hpbGRJdGVtID0gcnVsZXMtPml0ZW0oaik7
CkBAIC00Mjg2LDUgKzQzMzksMTUgQEAgQ29sb3IgQ1NTU3R5bGVTZWxlY3Rvcjo6Z2V0Q29sb3JG
cm9tUHJpbQogICAgICAgICBjb2wuc2V0UmdiKHByaW1pdGl2ZVZhbHVlLT5nZXRSR0JDb2xvclZh
bHVlKCkpOwogICAgIHJldHVybiBjb2w7ICAgIAogfQorCQorUmVuZGVyU3R5bGUqIENTU1N0eWxl
U2VsZWN0b3I6OmRlZmF1bHRTdHlsZUZvclJvb3QoRWxlbWVudEltcGwqIGUpCit7CisgICAgLy8g
WFhYOiBOb3QgYSBuaWNlIHdheSB0byBtYWtlIHRoZSBhbGxvY2F0aW9uIG9mIG5ldyBzdHlsZSBm
cm9tIGdsb2JhbCBoZWFwIAorICAgIC8vIChhbmQgbm90IGZyb20gUmVuZGVyQXJlbmEpLCBhbmQg
dG8gcHJldmVudCBzZWxlY3RvciB0byBtYXRjaCBhdXRob3Igc3R5bGVzaGVldCBydWxlcyAKKyAg
ICBtX3Jlc29sdmluZ0ZvclJvb3REZWZhdWx0U3R5bGUgPSB0cnVlOworICAgIFJlbmRlclN0eWxl
KiByZXN1bHQgPSBzdHlsZUZvckVsZW1lbnQoZSwgMCwgZmFsc2UpOworICAgIG1fcmVzb2x2aW5n
Rm9yUm9vdERlZmF1bHRTdHlsZSA9IGZhbHNlOworICAgIHJldHVybiByZXN1bHQ7Cit9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5oCShyZXZpc2lvbiAxMjUxMykKKysrIFdl
YkNvcmUvY3NzL2Nzc3BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC00MCw2ICs0MCw4IEBAIG5h
bWVzcGFjZSBET00gewogICAgIGNsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uSW1wbDsK
ICAgICBjbGFzcyBDU1NQcm9wZXJ0eTsKICAgICBjbGFzcyBDU1NSdWxlTGlzdEltcGw7CisgICAg
Y2xhc3MgTWVkaWFMaXN0SW1wbDsKKyAgICBjbGFzcyBNZWRpYVF1ZXJ5SW1wbDsKIAogCiAgICAg
c3RydWN0IFBhcnNlU3RyaW5nIHsKQEAgLTExMyw2ICsxMTUsNyBAQCBuYW1lc3BhY2UgRE9NIHsK
ICAgICAgICAgc3RhdGljIFJHQkEzMiBDU1NQYXJzZXI6OnBhcnNlQ29sb3IoIGNvbnN0IERPTTo6
RE9NU3RyaW5nICZzdHJpbmcgKTsKIAlib29sIHBhcnNlQ29sb3IoIERPTTo6Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb25JbXBsICpkZWNsYXJhdGlvbiwgY29uc3QgRE9NOjpET01TdHJpbmcgJnN0
cmluZyApOwogCWJvb2wgcGFyc2VEZWNsYXJhdGlvbiggRE9NOjpDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbkltcGwgKmRlY2xzLCBjb25zdCBET006OkRPTVN0cmluZyAmc3RyaW5nICk7CisgICAg
Ym9vbCBwYXJzZU1lZGlhUXVlcnkoIERPTTo6TWVkaWFMaXN0SW1wbCAqcXVlcmllcywgY29uc3Qg
RE9NOjpET01TdHJpbmcgJnN0cmluZyApOwogCiAJc3RhdGljIENTU1BhcnNlciAqY3VycmVudCgp
IHsgcmV0dXJuIGN1cnJlbnRQYXJzZXI7IH0KIApAQCAtMTY5LDYgKzE3Miw3IEBAIG5hbWVzcGFj
ZSBET00gewogCWludCBpZDsKIAlET006OlN0eWxlTGlzdEltcGwgKnN0eWxlRWxlbWVudDsKIAlE
T006OkNTU1J1bGVJbXBsICpydWxlOworICAgIERPTTo6TWVkaWFRdWVyeUltcGwgKm1lZGlhUXVl
cnk7CiAJVmFsdWVMaXN0ICp2YWx1ZUxpc3Q7CiAJQ1NTUHJvcGVydHkgKipwYXJzZWRQcm9wZXJ0
aWVzOwogCWludCBudW1QYXJzZWRQcm9wZXJ0aWVzOwpJbmRleDogV2ViQ29yZS9jc3MvY3NzbWVk
aWFmZWF0dXJlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NtZWRpYWZlYXR1cmVz
LmluCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvY3NzbWVkaWFmZWF0dXJlcy5pbgkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwyOSBAQAorY29sb3IKK2NvbG9yLWluZGV4CitkZXZpY2UtYXNw
ZWN0LXJhdGlvCitkZXZpY2UtaGVpZ2h0CitkZXZpY2Utd2lkdGgKK2dyaWQKK2hlaWdodAorbWF4
LWNvbG9yCittYXgtY29sb3ItaW5kZXgKK21heC1kZXZpY2UtYXNwZWN0LXJhdGlvCittYXgtZGV2
aWNlLWhlaWdodAorbWF4LWRldmljZS13aWR0aAorbWF4LWhlaWdodAorbWF4LW1vbm9jaHJvbWUK
K21heC1yZXNvbHV0aW9uCittYXgtd2lkdGgKK21pbi1jb2xvcgorbWluLWNvbG9yLWluZGV4Citt
aW4tZGV2aWNlLWFzcGVjdC1yYXRpbworbWluLWRldmljZS1oZWlnaHQKK21pbi1kZXZpY2Utd2lk
dGgKK21pbi1oZWlnaHQKK21pbi1tb25vY2hyb21lCittaW4tcmVzb2x1dGlvbgorbWluLXdpZHRo
Cittb25vY2hyb21lCityZXNvbHV0aW9uCitzY2FuCit3aWR0aApJbmRleDogV2ViQ29yZS9jc3Mv
Y3NzX3N0eWxlc2hlZXRpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3Nfc3R5
bGVzaGVldGltcGwuY3BwCShyZXZpc2lvbiAxMjUxMykKKysrIFdlYkNvcmUvY3NzL2Nzc19zdHls
ZXNoZWV0aW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDggQEAKICNpbmNsdWRl
ICJjc3MvY3NzX3ZhbHVlaW1wbC5oIgogI2luY2x1ZGUgImNzcy9jc3NwYXJzZXIuaCIKICNpbmNs
dWRlICJjc3MvY3NzX3N0eWxlc2hlZXRpbXBsLmgiCisjaW5jbHVkZSAiY3NzL2Nzc19tZWRpYXF1
ZXJ5ZXZhbC5oIgorI2luY2x1ZGUgImNzcy9jc3NtZWRpYWZlYXR1cmVzLmgiCiAKICNpbmNsdWRl
ICJodG1sL2h0bWxfZG9jdW1lbnRpbXBsLmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCkBAIC0zNDEs
MTIgKzM0Myw2IEBAIE1lZGlhTGlzdEltcGw6Ok1lZGlhTGlzdEltcGwoIENTU1J1bGVJbXAKICAg
ICBzZXRNZWRpYVRleHQoIG1lZGlhICk7CiB9CiAKLWJvb2wgTWVkaWFMaXN0SW1wbDo6Y29udGFp
bnMoIGNvbnN0IERPTVN0cmluZyAmbWVkaXVtICkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sc3RN
ZWRpYS5jb3VudCgpID09IDAgfHwgbV9sc3RNZWRpYS5jb250YWlucyggbWVkaXVtICkgfHwKLSAg
ICAgICAgICAgIG1fbHN0TWVkaWEuY29udGFpbnMoICJhbGwiICk7Ci19Ci0KIENTU1N0eWxlU2hl
ZXRJbXBsICpNZWRpYUxpc3RJbXBsOjpwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gcGFyZW50KCktPmlzQ1NTU3R5bGVTaGVldCgpID8gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVT
aGVldEltcGwgKj4ocGFyZW50KCkpIDogMDsKQEAgLTM1OSwzMyArMzU1LDEwNyBAQCBDU1NSdWxl
SW1wbCAqTWVkaWFMaXN0SW1wbDo6cGFyZW50UnVsZSgpCiAKIHZvaWQgTWVkaWFMaXN0SW1wbDo6
ZGVsZXRlTWVkaXVtKCBjb25zdCBET01TdHJpbmcgJm9sZE1lZGl1bSApCiB7Ci0gICAgZm9yICgg
UVZhbHVlTGlzdDxET01TdHJpbmc+OjpJdGVyYXRvciBpdCA9IG1fbHN0TWVkaWEuYmVnaW4oKTsg
aXQgIT0gbV9sc3RNZWRpYS5lbmQoKTsgKytpdCApIHsKLSAgICAgICAgaWYgKCgqaXQpID09IG9s
ZE1lZGl1bSkgewotICAgICAgICAgICAgbV9sc3RNZWRpYS5yZW1vdmUoIGl0ICk7Ci0gICAgICAg
ICAgICByZXR1cm47CisgICAgTWVkaWFMaXN0SW1wbCB0ZW1wTWVkaWFMaXN0OworICAgIENTU1Bh
cnNlciBwKHRydWUpOyAgICAgCisKKyAgICBpZiAocC5wYXJzZU1lZGlhUXVlcnkoJnRlbXBNZWRp
YUxpc3QsIG9sZE1lZGl1bSkpIHsKKyAgICAgICAgY29uc3QgTWVkaWFRdWVyeUltcGwqIG9sZFF1
ZXJ5ID0gUVB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5SW1wbD4oKnRlbXBNZWRpYUxpc3QubWVk
aWFRdWVyaWVzKCktPmxpc3QoKSkuY3VycmVudCgpOworICAgICAgICAKKyAgICAgICAgUVB0ckxp
c3RJdGVyYXRvcjxNZWRpYVF1ZXJ5SW1wbD4gcV9pdCgqbV9sc3RRdWVyaWVzLmxpc3QoKSk7Cisg
ICAgICAgIGZvcihNZWRpYVF1ZXJ5SW1wbCogcXVlcnkgPSBxX2l0LmN1cnJlbnQoKTsgcXVlcnk7
IHF1ZXJ5ID0gKytxX2l0KSB7CisgICAgICAgICAgICBpZiAoKnF1ZXJ5ID09ICpvbGRRdWVyeSkg
eworICAgICAgICAgICAgICAgIG1fbHN0UXVlcmllcy5yZW1vdmUocXVlcnkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAg
ICAgICAgLy8gWFhYOiB0aHJvdyBET00gZXhjZXB0aW9uCisgICAgfQorfQorCitzdGF0aWMgRE9N
OjpET01TdHJpbmcgbWVkaWFRdWVyeUFzRE9NU3RyaW5nKGNvbnN0IE1lZGlhUXVlcnlJbXBsKiBx
dWVyeSkgCit7CisgICAgRE9NOjpET01TdHJpbmcgdGV4dDsKKyAgICBzd2l0Y2ggKHF1ZXJ5LT5y
ZXN0cmljdG9yKCkpIHsKKyAgICAgICAgY2FzZSBNZWRpYVF1ZXJ5SW1wbDo6T25seToKKyAgICAg
ICAgICAgIHRleHQgKz0gIm9ubHkgIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IE1lZGlhUXVlcnlJbXBsOjpOb3Q6CisgICAgICAgICAgICB0ZXh0ICs9ICJub3QgIjsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAg
fQorICAgIHRleHQgKz0gcXVlcnktPm1lZGlhVHlwZSgpOworICAgIFFQdHJMaXN0SXRlcmF0b3I8
TWVkaWFRdWVyeUV4cEltcGw+IGV4cF9pdCgqcXVlcnktPmV4cHJlc3Npb25zKCktPmxpc3QoKSk7
CisgICAgZm9yIChNZWRpYVF1ZXJ5RXhwSW1wbCogZXhwID0gZXhwX2l0LmN1cnJlbnQoKTsgZXhw
OyBleHAgPSArK2V4cF9pdCkgeworICAgICAgICB0ZXh0ICs9ICIgYW5kICgiOworICAgICAgICB0
ZXh0ICs9IGdldE1lZGlhRmVhdHVyZU5hbWUoZXhwLT5tZWRpYUZlYXR1cmUoKSk7CisgICAgICAg
IGlmIChleHAtPnZhbHVlKCkpIHsKKyAgICAgICAgICAgIHRleHQgKz0gIjogIjsKKyAgICAgICAg
ICAgIHRleHQgKz0gZXhwLT52YWx1ZSgpLT5jc3NUZXh0KCk7CiAgICAgICAgIH0KKyAgICAgICAg
dGV4dCArPSAiKSI7CiAgICAgfQorICAgIHJldHVybiB0ZXh0OwogfQogCiBET006OkRPTVN0cmlu
ZyBNZWRpYUxpc3RJbXBsOjptZWRpYVRleHQoKSBjb25zdAogewotICAgIERPTVN0cmluZyB0ZXh0
ID0gIiI7Ci0gICAgZm9yIChRVmFsdWVMaXN0PERPTVN0cmluZz46OkNvbnN0SXRlcmF0b3IgaXQg
PSBtX2xzdE1lZGlhLmJlZ2luKCk7IGl0ICE9IG1fbHN0TWVkaWEuZW5kKCk7ICsraXQpIHsKLSAg
ICAgICAgaWYgKHRleHQubGVuZ3RoKCkgPiAwKQorICAgIERPTVN0cmluZyB0ZXh0OworICAgIFFQ
dHJMaXN0SXRlcmF0b3I8TWVkaWFRdWVyeUltcGw+IHFfaXQoKm1fbHN0UXVlcmllcy5saXN0KCkp
OworICAgIGJvb2wgZmlyc3QgPSB0cnVlOworICAgIGZvciAoTWVkaWFRdWVyeUltcGwqIHF1ZXJ5
ID0gcV9pdC5jdXJyZW50KCk7IHF1ZXJ5OyBxdWVyeSA9ICsrcV9pdCkgeyAgICAgICAgCisgICAg
ICAgIGlmICghZmlyc3QpCiAgICAgICAgICAgICB0ZXh0ICs9ICIsICI7Ci0gICAgICAgIHRleHQg
Kz0gKml0OworICAgICAgICBlbHNlIAorICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAg
ICAgdGV4dCArPSBtZWRpYVF1ZXJ5QXNET01TdHJpbmcocXVlcnkpOwogICAgIH0KICAgICByZXR1
cm4gdGV4dDsKIH0KIAogdm9pZCBNZWRpYUxpc3RJbXBsOjpzZXRNZWRpYVRleHQoY29uc3QgRE9N
OjpET01TdHJpbmcgJnZhbHVlKQogewotICAgIG1fbHN0TWVkaWEuY2xlYXIoKTsKLSAgICBRU3Ry
aW5nTGlzdCBsaXN0ID0gUVN0cmluZ0xpc3Q6OnNwbGl0KCAnLCcsIHZhbHVlLnFzdHJpbmcoKSAp
OwotICAgIGZvciAoIFFTdHJpbmdMaXN0OjpJdGVyYXRvciBpdCA9IGxpc3QuYmVnaW4oKTsgaXQg
IT0gbGlzdC5lbmQoKTsgKytpdCApCi0gICAgeworICAgIENTU1BhcnNlciBwKHRydWUpOyAgICAg
IAorICAgIG1fbHN0UXVlcmllcy5jbGVhcigpOyAgICAgICAKKworICAgIFFTdHJpbmdMaXN0IGxp
c3QgPSBRU3RyaW5nTGlzdDo6c3BsaXQoJywnLCB2YWx1ZS5xc3RyaW5nKCkpOworICAgIGZvciAo
UVN0cmluZ0xpc3Q6Okl0ZXJhdG9yIGl0ID0gbGlzdC5iZWdpbigpOyBpdCAhPSBsaXN0LmVuZCgp
OyArK2l0KSB7CiAgICAgICAgIERPTVN0cmluZyBtZWRpdW0gPSAoKml0KS5zdHJpcFdoaXRlU3Bh
Y2UoKTsKLSAgICAgICAgaWYgKCFtZWRpdW0uaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9sc3RN
ZWRpYS5hcHBlbmQoIG1lZGl1bSApOworICAgICAgICBpZiAobWVkaXVtICE9ICIiKSB7ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwLnBhcnNlTWVkaWFR
dWVyeSggdGhpcywgbWVkaXVtICkpIHsKKyAgICAgICAgICAgICAgICAvLyBPSworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBGQUlMCisgICAgICAgICAgICAgICAgLy8g
WFhYOiB0aHJvdyBET00gZXhjZXB0aW9uCisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9
CiB9CisKK0RPTTo6RE9NU3RyaW5nIE1lZGlhTGlzdEltcGw6Oml0ZW0odW5zaWduZWQgbG9uZyBp
bmRleCkgY29uc3QgCit7CisgICAgLy8gWFhYOiBpbmVmZmljaWVudCBhbmQgdWdseSEgUVB0ckxp
c3QgZG9lc24ndCBoYXZlIGF0KCkgY29uc3QgCisgICAgUVB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1
ZXJ5SW1wbD4gcV9pdCgqbV9sc3RRdWVyaWVzLmxpc3QoKSk7CisgICAgTWVkaWFRdWVyeUltcGwq
IHF1ZXJ5ID0gcV9pdC5jdXJyZW50KCk7CisgICAgZm9yICg7IHF1ZXJ5ICYmIGluZGV4OyBxdWVy
eSA9ICsrcV9pdCkgLS1pbmRleDsKKyAgICBpZiAocXVlcnkpCisgICAgICAgIHJldHVybiBtZWRp
YVF1ZXJ5QXNET01TdHJpbmcocXVlcnkpOworICAgIHJldHVybiBET006OkRPTVN0cmluZygpOwor
fQorCit2b2lkIE1lZGlhTGlzdEltcGw6OmFwcGVuZE1lZGl1bShjb25zdCBET006OkRPTVN0cmlu
ZyAmbmV3TWVkaXVtKQoreworICAgIENTU1BhcnNlciBwKHRydWUpOyAgICAgCisgICAgaWYgKHAu
cGFyc2VNZWRpYVF1ZXJ5KHRoaXMsIG5ld01lZGl1bSkpIHsKKyAgICAgICAgLy8gT0sKKyAgICB9
IGVsc2UgeworICAgICAgICAvLyBYWFg6IHRocm93IGRvbSBleGNlcHRpb24gICAgICAgIAorICAg
IH0gICAKK30KKwordm9pZCBNZWRpYUxpc3RJbXBsOjphcHBlbmRNZWRpYVF1ZXJ5KE1lZGlhUXVl
cnlJbXBsKiBtZWRpYVF1ZXJ5KQoreworICAgIG1fbHN0UXVlcmllcy5hcHBlbmQobWVkaWFRdWVy
eSk7Cit9CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NfZ3JhbW1hci55Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL2Nzc19ncmFtbWFyLnkJKHJldmlzaW9uIDEyNTEzKQorKysgV2ViQ29yZS9jc3Mv
Y3NzX2dyYW1tYXIueQkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
ImNzc19ydWxlaW1wbC5oIgogI2luY2x1ZGUgImNzc19zdHlsZXNoZWV0aW1wbC5oIgogI2luY2x1
ZGUgImNzc192YWx1ZWltcGwuaCIKKyNpbmNsdWRlICJjc3NfbWVkaWFxdWVyeWltcGwuaCIKICNp
bmNsdWRlICJjc3NwYXJzZXIuaCIKICNpbmNsdWRlICJkb21fc3RyaW5nLmgiCiAjaW5jbHVkZSAi
aHRtbG5hbWVzLmgiCkBAIC01NCw2ICs1NSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7
CiAjZGVmaW5lIF9faW5saW5lCiAjaW5jbHVkZSAiY3NzcHJvcGVydGllcy5jIgogI2luY2x1ZGUg
ImNzc3ZhbHVlcy5jIgorI2luY2x1ZGUgImNzc21lZGlhZmVhdHVyZXMuYyIKICN1bmRlZiBfX2lu
bGluZQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMTIsNiArMTE0LDE0IEBAIHN0YXRpYyBp
bmxpbmUgaW50IGdldFZhbHVlSUQoY29uc3QgY2hhciAKICAgICByZXR1cm4gdmFsLT5pZDsKIH0K
IAorc3RhdGljIGlubGluZSBpbnQgZ2V0TWVkaWFGZWF0dXJlSUQoY29uc3QgY2hhciAqdGFnU3Ry
LCBpbnQgbGVuKQoreworICAgIGNvbnN0IHN0cnVjdCBjc3NfbWVkaWFfZmVhdHVyZV9wYWlyICpm
ZWF0ID0gZmluZE1lZGlhRmVhdHVyZSh0YWdTdHIsIGxlbik7CisgICAgaWYgKCFmZWF0KQorICAg
ICAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBmZWF0LT5pZDsKK30KIAogI2RlZmluZSBZWURF
QlVHIDAKICNkZWZpbmUgWVlQQVJTRV9QQVJBTSBwYXJzZXIKQEAgLTEzNiw2ICsxNDYsMTIgQEAg
c3RhdGljIGlubGluZSBpbnQgZ2V0VmFsdWVJRChjb25zdCBjaGFyIAogICAgIGNoYXIgdG9rOwog
ICAgIFZhbHVlIHZhbHVlOwogICAgIFZhbHVlTGlzdCAqdmFsdWVMaXN0OworCisgICAgaW50IG1l
ZGlhX2ZlYXR1cmVfaWQ7CisgICAgTWVkaWFRdWVyeUltcGwgKm1lZGlhUXVlcnk7CisgICAgTWVk
aWFRdWVyeUV4cEltcGwgKm1lZGlhUXVlcnlFeHA7CisgICAgTWVkaWFRdWVyeUV4cExpc3RJbXBs
ICptZWRpYVF1ZXJ5RXhwTGlzdDsKKyAgICBNZWRpYVF1ZXJ5SW1wbDo6UmVzdHJpY3RvciBtZWRp
YVF1ZXJ5UmVzdHJpY3RvcjsgICAgCiB9CiAKICV7CkBAIC0xNzUsOSArMTkxLDE0IEBAIHN0YXRp
YyBpbnQgY3NzeXlsZXgoWVlTVFlQRSAqeXlsdmFsKSB7IHIKICV0b2tlbiBLSFRNTF9SVUxFX1NZ
TQogJXRva2VuIEtIVE1MX0RFQ0xTX1NZTQogJXRva2VuIEtIVE1MX1ZBTFVFX1NZTQorJXRva2Vu
IEtIVE1MX01FRElBUVVFUllfU1lNCiAKICV0b2tlbiBJTVBPUlRBTlRfU1lNCiAKKyV0b2tlbiBN
RURJQV9PTkxZCisldG9rZW4gTUVESUFfTk9UCisldG9rZW4gTUVESUFfQU5ECisKICV0b2tlbiA8
dmFsPiBRRU1TCiAldG9rZW4gPHZhbD4gRU1TCiAldG9rZW4gPHZhbD4gRVhTCkBAIC0yMjQsOSAr
MjQ1LDE1IEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQRSAqeXlsdmFsKSB7IHIKICV0eXBl
IDxzdHJpbmc+IG1lZGl1bQogJXR5cGUgPHN0cmluZz4gaGV4Y29sb3IKIAorJXR5cGUgPG1lZGlh
X2ZlYXR1cmVfaWQ+IG1lZGlhX2ZlYXR1cmUKICV0eXBlIDxtZWRpYUxpc3Q+IG1lZGlhX2xpc3QK
ICV0eXBlIDxtZWRpYUxpc3Q+IG1heWJlX21lZGlhX2xpc3QKLQorJXR5cGUgPG1lZGlhUXVlcnk+
IG1lZGlhX3F1ZXJ5CisldHlwZSA8bWVkaWFRdWVyeVJlc3RyaWN0b3I+IG1heWJlX21lZGlhX3Jl
c3RyaWN0b3IKKyV0eXBlIDx2YWx1ZUxpc3Q+IG1heWJlX21lZGlhX3ZhbHVlCisldHlwZSA8bWVk
aWFRdWVyeUV4cD4gbWVkaWFfcXVlcnlfZXhwCisldHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+IG1l
ZGlhX3F1ZXJ5X2V4cF9saXN0CisldHlwZSA8bWVkaWFRdWVyeUV4cExpc3Q+IG1heWJlX21lZGlh
X3F1ZXJ5X2V4cF9saXN0CiAldHlwZSA8cnVsZUxpc3Q+IHJ1bGVzZXRfbGlzdAogCiAldHlwZSA8
cHJvcF9pZD4gcHJvcGVydHkKQEAgLTI2NSw2ICsyOTIsNyBAQCBzdHlsZXNoZWV0OgogICB8IGto
dG1sX3J1bGUgbWF5YmVfc3BhY2UKICAgfCBraHRtbF9kZWNscyBtYXliZV9zcGFjZQogICB8IGto
dG1sX3ZhbHVlIG1heWJlX3NwYWNlCisgIHwga2h0bWxfbWVkaWFxdWVyeSBtYXliZV9zcGFjZQog
ICA7CiAKIGtodG1sX3J1bGU6CkBAIC0yOTIsNiArMzIwLDE4IEBAIGtodG1sX3ZhbHVlOgogICAg
IH0KIDsKIAora2h0bWxfbWVkaWFxdWVyeToKKyAgICBLSFRNTF9NRURJQVFVRVJZX1NZTSBXSElU
RVNQQUNFIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5ICd9JyB7CisgICAgICAgIENTU1BhcnNlciAq
cCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJzZXIpOworICAgICAgICBwLT5tZWRpYVF1
ZXJ5ID0gJDQ7ICAgICAgICAgCisgICAgfQorICAgIHwgS0hUTUxfTUVESUFRVUVSWV9TWU0gV0hJ
VEVTUEFDRSBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeSBlcnJvciAnfSd7CisgICAgICAgIENTU1Bh
cnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJzZXIpOworICAgICAgICBwLT5t
ZWRpYVF1ZXJ5ID0gJDQ7CisgICAgfQorCis7CisKIG1heWJlX3NwYWNlOgogICAgIC8qIGVtcHR5
ICovCiAgIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQpAQCAtMzg3LDYgKzQyNyw4NiBAQCBTVFJJ
TkcKIHwgVVJJCiA7CiAKK21lZGlhX2ZlYXR1cmU6CisgICAgSURFTlQgbWF5YmVfc3BhY2Ugewor
ICAgICAgICBRU3RyaW5nIHN0ciA9IHFTdHJpbmcoJDEpOworCQkkJCA9IGdldE1lZGlhRmVhdHVy
ZUlEKCBzdHIubG93ZXIoKS5sYXRpbjEoKSwgc3RyLmxlbmd0aCgpICk7CisgICAgfQorOworCitt
YXliZV9tZWRpYV92YWx1ZToKKyAgICAvKmVtcHR5Ki8geworICAgICAgICAkJCA9IDA7CisgICAg
fQorICAgIHwgJzonIG1heWJlX3NwYWNlIGV4cHIgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9
ICQzOworICAgIH0KKzsKKworbWVkaWFfcXVlcnlfZXhwOgorICAgICcoJyBtYXliZV9zcGFjZSBt
ZWRpYV9mZWF0dXJlIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX3ZhbHVlICcpJyBtYXliZV9zcGFj
ZSB7CisgICAgICAgICQkID0gbmV3IE1lZGlhUXVlcnlFeHBJbXBsKCQzLCAkNSk7CisgICAgfQor
OworCittZWRpYV9xdWVyeV9leHBfbGlzdDoKKyAgICBtZWRpYV9xdWVyeV9leHAgeworICAgICAg
ICAkJCA9IG5ldyBNZWRpYVF1ZXJ5RXhwTGlzdEltcGw7CisgICAgICAgICQkLT5hcHBlbmQoJDEp
OworICAgIH0KKyAgICB8IG1lZGlhX3F1ZXJ5X2V4cF9saXN0IE1FRElBX0FORCBtYXliZV9zcGFj
ZSBtZWRpYV9xdWVyeV9leHAgeworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAoJCQpCisg
ICAgICAgICAgICAkJC0+YXBwZW5kKCQ0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZGVs
ZXRlICgkNCk7CisgICAgfQorICAgIHwgbWVkaWFfcXVlcnlfZXhwX2xpc3QgZXJyb3IgeworICAg
ICAgICAvLyBFcnJvciB3aGlsZSBwYXJzaW5nIG1lZGlhIGZlYXR1cmUgbGlzdC4gRGVsZXRlIHRo
ZSBsaXN0IGFuZCByZXR1cm4gMCwgd2hpY2ggbWVhbnMKKyAgICAgICAgLy8gdGhhdCB3ZSBzaG91
bGQgaGFuZGxlIHRoZSBtZWRpYSBxdWVyeSBhcyBjc3MgMi4xIG1lZGlhIHR5cGUgKG9yIEhUTUw0
IG1lZGlhIGRlc2NyaXB0aW9uKSAKKyAgICAgICAgZGVsZXRlICgkMSk7CisgICAgICAgICQkPTA7
ICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgIDsKKworbWF5YmVfbWVkaWFfcXVlcnlfZXhw
X2xpc3Q6CisgICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQgPSBuZXcgTWVkaWFRdWVyeUV4cExp
c3RJbXBsOworICAgIH0KKyAgICB8IE1FRElBX0FORCBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeV9l
eHBfbGlzdCB7CisgICAgICAgICQkID0gJDM7CisgICAgfSAKKyAgICB8IE1FRElBX0FORCBlcnJv
ciB7CisgICAgICAgICQkID0gMDsKKyAgICB9Cis7CisKK21heWJlX21lZGlhX3Jlc3RyaWN0b3I6
CisgICAgLyplbXB0eSoveworICAgICAgICAkJCA9IE1lZGlhUXVlcnlJbXBsOjpOb25lOworICAg
IH0KKyAgICB8IE1FRElBX09OTFkgeworICAgICAgICAkJCA9IE1lZGlhUXVlcnlJbXBsOjpPbmx5
OworICAgIH0KKyAgICB8IE1FRElBX05PVCB7CisgICAgICAgICQkID0gTWVkaWFRdWVyeUltcGw6
Ok5vdDsKKyAgICB9Cis7CisKK21lZGlhX3F1ZXJ5OgorICAgIG1heWJlX21lZGlhX3Jlc3RyaWN0
b3IgbWF5YmVfc3BhY2UgbWVkaXVtIG1heWJlX21lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAg
ICAgaWYgKCQ0KSB7ICAgICAgICAKKyAgICAgICAgICAgICQkID0gbmV3IE1lZGlhUXVlcnlJbXBs
KCQxLCBkb21TdHJpbmcoJDMpLCAkNCk7CisgICAgICAgIH0gZWxzZSBpZiAoJDEgPT0gTWVkaWFR
dWVyeUltcGw6Ok9ubHkpIHsKKyAgICAgICAgICAgICQkID0gbmV3IE1lZGlhUXVlcnlJbXBsKE1l
ZGlhUXVlcnlJbXBsOjpOb25lLCAib25seSIsIG5ldyBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwpOyAg
ICAgICAgICAgIAorICAgICAgICB9IGVsc2UgIGlmICgkMSA9PSBNZWRpYVF1ZXJ5SW1wbDo6Tm90
KSB7CisgICAgICAgICAgICAkJCA9IG5ldyBNZWRpYVF1ZXJ5SW1wbChNZWRpYVF1ZXJ5SW1wbDo6
Tm9uZSwgIm5vdCIsIG5ldyBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwpOyAgICAgICAgICAgIAorICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBuZXcgTWVkaWFRdWVyeUltcGwoTWVkaWFR
dWVyeUltcGw6Ok5vbmUsIGRvbVN0cmluZygkMyksIG5ldyBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwp
OyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgfQorOworCiBtYXliZV9tZWRpYV9saXN0Ogog
ICAgICAvKiBlbXB0eSAqLyB7CiAgICAgICAgICQkID0gbmV3IE1lZGlhTGlzdEltcGwoKTsKQEAg
LTM5OSwyMyArNTE5LDI0IEBAIG1lZGlhX2xpc3Q6CiAgICAgLyogZW1wdHkgKi8gewogICAgICAg
ICAkJCA9IDA7CiAgICAgfQotICAgIHwgbWVkaXVtIHsKKyAgICB8IG1lZGlhX3F1ZXJ5IHsgICAg
CQogICAgICAgICAkJCA9IG5ldyBNZWRpYUxpc3RJbXBsKCk7Ci0gICAgICAgICQkLT5hcHBlbmRN
ZWRpdW0oIGRvbVN0cmluZygkMSkubG93ZXIoKSApOwotICAgIH0KLSAgICB8IG1lZGlhX2xpc3Qg
JywnIG1heWJlX3NwYWNlIG1lZGl1bSB7CisgICAgICAgICQkLT5hcHBlbmRNZWRpYVF1ZXJ5KCQx
KTsKKyAgICB8IG1lZGlhX2xpc3QgJywnIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5IHsgICAgCQog
ICAgICAgICAkJCA9ICQxOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICAkJC0+YXBwZW5k
TWVkaXVtKCBkb21TdHJpbmcoJDQpICk7CisgICAgICAgICAgICAkJC0+YXBwZW5kTWVkaWFRdWVy
eSgkNCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRlbGV0ZSAkNAogICAgIH0KICAgICB8
IG1lZGlhX2xpc3QgZXJyb3IgewogICAgICAgICBkZWxldGUgJDE7CiAgICAgICAgICQkID0gMDsK
ICAgICB9Ci0gICAgOworOwogCiBtZWRpYToKLSAgICBNRURJQV9TWU0gbWF5YmVfc3BhY2UgbWVk
aWFfbGlzdCAneycgbWF5YmVfc3BhY2UgcnVsZXNldF9saXN0ICd9JyB7CisgICAgTUVESUFfU1lN
IG1heWJlX3NwYWNlIG1heWJlX21lZGlhX2xpc3QgJ3snIG1heWJlX3NwYWNlIHJ1bGVzZXRfbGlz
dCAnfScgeyAgICAJCiAgICAgICAgIENTU1BhcnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNl
ciAqPihwYXJzZXIpOwogICAgICAgICBpZiAoICQzICYmICQ2ICYmCiAgICAgICAgICAgICAgcC0+
c3R5bGVFbGVtZW50ICYmIHAtPnN0eWxlRWxlbWVudC0+aXNDU1NTdHlsZVNoZWV0KCkgKSB7Cklu
ZGV4OiBXZWJDb3JlL2Nzcy90b2tlbml6ZXIuZmxleAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nz
cy90b2tlbml6ZXIuZmxleAkocmV2aXNpb24gMTI1MTMpCisrKyBXZWJDb3JlL2Nzcy90b2tlbml6
ZXIuZmxleAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDggQEAKICVvcHRpb24gY2FzZS1pbnNl
bnNpdGl2ZQogJW9wdGlvbiBub3l5d3JhcAogJW9wdGlvbiA4Yml0Cislb3B0aW9uIHN0YWNrCisl
cyBtZWRpYXF1ZXJ5CiAKIGggICAgICAgICAgICAgICBbMC05YS1mQS1GXQogbm9uYXNjaWkgICAg
ICAgIFtcMjAwLVwzNzddCkBAIC0zMyw2ICszNSw5IEBAIHJhbmdlICAgICAgICAgICBcP3sxLDZ9
fHtofShcP3swLDV9fHtofSgKICJePSIgICAgICAgICAgICAgICAgICAgIHt5eVRvayA9IEJFR0lO
U1dJVEg7IHJldHVybiB5eVRvazt9CiAiJD0iICAgICAgICAgICAgICAgICAgICB7eXlUb2sgPSBF
TkRTV0lUSDsgcmV0dXJuIHl5VG9rO30KICIqPSIgICAgICAgICAgICAgICAgICAgIHt5eVRvayA9
IENPTlRBSU5TOyByZXR1cm4geXlUb2s7fQorPG1lZGlhcXVlcnk+Im5vdCIgICAgICAge3l5VG9r
ID0gTUVESUFfTk9UOyByZXR1cm4geXlUb2s7fQorPG1lZGlhcXVlcnk+Im9ubHkiICAgICAge3l5
VG9rID0gTUVESUFfT05MWTsgcmV0dXJuIHl5VG9rO30KKzxtZWRpYXF1ZXJ5PiJhbmQiICAgICAg
IHt5eVRvayA9IE1FRElBX0FORDsgcmV0dXJuIHl5VG9rO30KIAoge3N0cmluZ30gICAgICAgICAg
ICAgICAge3l5VG9rID0gU1RSSU5HOyByZXR1cm4geXlUb2s7fQogCkBAIC00MCwxNSArNDUsMTYg
QEAgcmFuZ2UgICAgICAgICAgIFw/ezEsNn18e2h9KFw/ezAsNX18e2h9KAogCiAiIyJ7bmFtZX0g
ICAgICAgICAgICAgICB7eXlUb2sgPSBIQVNIOyByZXR1cm4geXlUb2s7fQogCi0iQGltcG9ydCIg
ICAgICAgICAgICAgICB7eXlUb2sgPSBJTVBPUlRfU1lNOyByZXR1cm4geXlUb2s7fQorIkBpbXBv
cnQiICAgICAgICAgICAgICAge0JFR0lOKG1lZGlhcXVlcnkpOyB5eVRvayA9IElNUE9SVF9TWU07
IHJldHVybiB5eVRvazt9CiAiQHBhZ2UiICAgICAgICAgICAgICAgICB7eXlUb2sgPSBQQUdFX1NZ
TTsgcmV0dXJuIHl5VG9rO30KLSJAbWVkaWEiICAgICAgICAgICAgICAgIHt5eVRvayA9IE1FRElB
X1NZTTsgcmV0dXJuIHl5VG9rO30KKyJAbWVkaWEiICAgICAgICAgICAgICAgIHtCRUdJTihtZWRp
YXF1ZXJ5KTsgeXlUb2sgPSBNRURJQV9TWU07IHJldHVybiB5eVRvazt9CiAiQGZvbnQtZmFjZSIg
ICAgICAgICAgICB7eXlUb2sgPSBGT05UX0ZBQ0VfU1lNOyByZXR1cm4geXlUb2s7fQogIkBjaGFy
c2V0IiAgICAgICAgICAgICAge3l5VG9rID0gQ0hBUlNFVF9TWU07IHJldHVybiB5eVRvazt9CiAi
QG5hbWVzcGFjZSIgICAgICAgICAgICB7eXlUb2sgPSBOQU1FU1BBQ0VfU1lNOyByZXR1cm4geXlU
b2s7IH0KICJALWtodG1sLXJ1bGUiICAgIHt5eVRvayA9IEtIVE1MX1JVTEVfU1lNOyByZXR1cm4g
eXlUb2s7IH0KICJALWtodG1sLWRlY2xzIiAgIHt5eVRvayA9IEtIVE1MX0RFQ0xTX1NZTTsgcmV0
dXJuIHl5VG9rOyB9CiAiQC1raHRtbC12YWx1ZSIgICB7eXlUb2sgPSBLSFRNTF9WQUxVRV9TWU07
IHJldHVybiB5eVRvazsgfQorIkAta2h0bWwtbWVkaWFxdWVyeSIgICB7QkVHSU4obWVkaWFxdWVy
eSk7IHl5VG9rID0gS0hUTUxfTUVESUFRVUVSWV9TWU07IHJldHVybiB5eVRvazsgfQogCiAiISJ7
d30iaW1wb3J0YW50IiAgICAgICAgIHt5eVRvayA9IElNUE9SVEFOVF9TWU07IHJldHVybiB5eVRv
azt9CiAKQEAgLTc5LDYgKzg1LDggQEAgcmFuZ2UgICAgICAgICAgIFw/ezEsNn18e2h9KFw/ezAs
NX18e2h9KAogVVwre3JhbmdlfSAgICAgICAgICAgICAge3l5VG9rID0gVU5JQ09ERVJBTkdFOyBy
ZXR1cm4geXlUb2s7fQogVVwre2h9ezEsNn0te2h9ezEsNn0gICAge3l5VG9rID0gVU5JQ09ERVJB
TkdFOyByZXR1cm4geXlUb2s7fQogCis8bWVkaWFxdWVyeT4ieyIgICAgICAgICB8Cis8bWVkaWFx
dWVyeT4iOyIgICAgICAgICB7QkVHSU4oSU5JVElBTCk7IHl5VG9rID0gKnl5dGV4dDsgcmV0dXJu
IHl5VG9rOyB9CiAuICAgICAgICAgICAgICAgICAgICAgICB7eXlUb2sgPSAqeXl0ZXh0OyByZXR1
cm4geXlUb2s7fQogCiAlJQpJbmRleDogV2ViQ29yZS9jc3MvbWFrZXRva2VuaXplcgo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9tYWtldG9rZW5pemVyCShyZXZpc2lvbiAxMjUxMykKKysrIFdl
YkNvcmUvY3NzL21ha2V0b2tlbml6ZXIJKHdvcmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDE1IEBA
IHdoaWxlICg8PikgewogICAgIHByaW50OwogfQogCisjIG1lZGlhIHF1ZXJ5LCB0b2tlbml6ZXIg
c3RhdGUgc3VwcG9ydAord2hpbGUgKDw+KSB7CisgIGxhc3QgaWYgL3l5dGV4dC87Cit9Cit3aGls
ZSAoPD4pIHsKKyAgbGFzdCBpZiBub3QgKC9kZWZpbmUvIHx8IC9saW5lLykgOworICBwcmludDsK
K30KKwogd2hpbGUgKDw+KSB7CiAgICAgbGFzdCBpZiAvXllZX0RFQ0wvOwogfQpJbmRleDogV2Vi
Q29yZS9jc3MvY3NzX21lZGlhcXVlcnlldmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Y3NzX21lZGlhcXVlcnlldmFsLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9jc3NfbWVk
aWFxdWVyeWV2YWwuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MCBAQAorI2lmbmRlZiBDU1Nf
Y3NzX21lZGlhcXVlcnlldmFsX2gKKyNkZWZpbmUgQ1NTX2Nzc19tZWRpYXF1ZXJ5ZXZhbF9oCisK
KyNpbmNsdWRlIDxxc3RyaW5nLmg+CisjaW5jbHVkZSA8cXZhbHVlbGlzdC5oPgorCisjaW5jbHVk
ZSAiY3NzL2Nzc19tZWRpYXF1ZXJ5aW1wbC5oIgorCitjbGFzcyBRUGFpbnREZXZpY2VNZXRyaWNz
OworY2xhc3MgS0hUTUxWaWV3OworCituYW1lc3BhY2Uga2h0bWwgeworY2xhc3MgUmVuZGVyU3R5
bGU7Cit9CisKK25hbWVzcGFjZSBET00geworY2xhc3MgTWVkaWFMaXN0SW1wbDsKKworLyoqCisg
KiBDbGFzcyB0aGF0IGV2YWx1YXRlcyBjc3MgbWVkaWEgcXVlcmllcyBhcyBkZWZpbmVkIGluCisg
KiBDU1MzIE1vZHVsZSAiTWVkaWEgUXVlcmllcyIgKGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMt
bWVkaWFxdWVyaWVzLykKKyAqIFNwZWNpYWwgY29uc3RydWN0b3JzIGFyZSBuZWVkZWQsIGlmIHNp
bXBsZSBtZWRpYSBxdWVyaWVzIGFyZSB0byBiZQorICogZXZhbHVhdGVkIHdpdGhvdXQga25vd2xl
ZGdlIG9mIHRoZSBtZWRpdW0gZmVhdHVyZXMuIFRoaXMgY2FuIGhhcHBlbgorICogZm9yIGV4YW1w
bGUgd2hlbiBwYXJzaW5nIFVBIHN0eWxlc2hlZXRzLCBpZiBldmFsdWF0aW9uIGlzIGRvbmUKKyAq
IHJpZ2h0IGFmdGVyIHBhcnNpbmcuCisgKgorICogdGhlIGJvb2xlYW4gcGFyYW1ldGVyIGlzIHVz
ZWQgdG8gYXBwcm94aW1hdGUgcmVzdWx0cyBvZiBldmFsdWF0aW9uLCBpZgorICogdGhlIGRldmlj
ZSBjaGFyYWN0ZXJpc3RpY3MgYXJlIG5vdCBrbm93bi4gVGhpcyBjYW4gYmUgdXNlZCB0byBwcnVu
ZSB0aGUgbG9hZGluZworICogb2Ygc3R5bGVzaGVldHMgdG8gb25seSB0aG9zZSB3aGljaCBhcmUg
cHJvYmFibGUgdG8gbWF0Y2guCisgKi8KK2NsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3IKK3sKK3B1
YmxpYzoKKwkvKiogQ3JlYXRlcyBldmFsdWF0b3Igd2hpY2ggZXZhbHVhdGVzIG9ubHkgc2ltcGxl
IG1lZGlhIHF1ZXJpZXMKKwkgKiAgRXZhbHVhdG9yIHJldHVybnMgdHJ1ZSBmb3IgImFsbCIsIGFu
ZCByZXR1cm5zIHZhbHVlIG9mIFxtZWRpYUZlYXR1cmVSZXN1bHQKKyAgICAgKiAgZm9yIGFueSBt
ZWRpYSBmZWF0dXJlcworCSAqLworICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IoYm9vbCBtZWRpYUZl
YXR1cmVSZXN1bHQgPSBmYWxzZSk7CisKKyAgICAvKiogQ3JlYXRlcyBldmFsdWF0b3Igd2hpY2gg
ZXZhbHVhdGVzIG9ubHkgc2ltcGxlIG1lZGlhIHF1ZXJpZXMKKyAgICAgKiAgRXZhbHVhdG9yICBy
ZXR1cm5zIHRydWUgZm9yIGFjY2VwdGVkTWVkaWFUeXBlLCBidXQgbm90IGFueSBtZWRpYSBmZWF0
dXJlcworICAgICAqLworICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgUVN0cmluZyYgYWNj
ZXB0ZWRNZWRpYVR5cGUsIGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0ID0gZmFsc2UpOworCisgICAg
LyoqIENyZWF0ZXMgZXZhbHVhdG9yIHdoaWNoIGV2YWx1YXRlcyBmdWxsIG1lZGlhIHF1ZXJpZXMK
KyAgICAgKi8KKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFFTdHJpbmcmIGFjY2VwdGVk
TWVkaWFUeXBlLCBLSFRNTFZpZXcqIHZpZXcsCisgICAgCQkJCQlRUGFpbnREZXZpY2VNZXRyaWNz
KiBwYWludE1ldHJpY3MsIGtodG1sOjpSZW5kZXJTdHlsZSogc3R5bGUpOworCisgICAgdmlydHVh
bCB+TWVkaWFRdWVyeUV2YWx1YXRvcigpOworCisgICAgYm9vbCBtZWRpYVR5cGVNYXRjaChjb25z
dCBRU3RyaW5nJiBtZWRpYVR5cGVUb01hdGNoKSBjb25zdDsKKworCS8qKiBFdmFsdWF0ZXMgYSBs
aXN0IG9mIG1lZGlhIHF1ZXJpZXMgKi8KKyAgICB2aXJ0dWFsIGJvb2wgZXZhbChjb25zdCBET006
Ok1lZGlhTGlzdEltcGwqIHF1ZXJ5KSBjb25zdDsKKworICAgIC8qKiBFdmFsdWF0ZXMgbWVkaWEg
cXVlcnkgc3ViZXhwcmVzc2lvbiwgaWUgImFuZCAobWVkaWEtZmVhdHVyZTogdmFsdWUpIiBwYXJ0
ICovCisgICAgdmlydHVhbCBib29sIGV2YWwoY29uc3QgRE9NOjpNZWRpYVF1ZXJ5RXhwSW1wbCog
ZXhwcikgY29uc3Q7CisKK3ByaXZhdGU6CisKKyAgICBRU3RyaW5nIG1fbWVkaWFUeXBlOworICAg
IEtIVE1MVmlldyogbV92aWV3OyAvLyBub3Qgb3duZWQKKyAgICBRUGFpbnREZXZpY2VNZXRyaWNz
KiBtX3BhaW50TWV0cmljczsgLy8gbm90IG93bmVkCisgICAga2h0bWw6OlJlbmRlclN0eWxlKiBt
X3N0eWxlOyAvLyBub3Qgb3duZWQKKyAgICBib29sIG1fZXhwUmVzdWx0OworfTsKKworfSAvLyBu
YW1lc3BhY2UKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6220</attachid>
            <date>2006-02-03 07:43:28 -0800</date>
            <delta_ts>2006-04-28 04:50:50 -0700</delta_ts>
            <desc>Ad-hoc layout tests in the new directory layout</desc>
            <filename>mediaqueries-new-LayoutTests.patch</filename>
            <type>text/plain</type>
            <size>39069</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDEyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgOTY4eDYwMAorICBSZW5kZXJD
YW52YXMgYXQgKDAsMCkgc2l6ZSA3ODV4NTg1CitsYXllciBhdCAoMCwwKSBzaXplIDk2OHg2MDAK
KyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1eDYwMAorICAgIFJlbmRlckJv
ZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDApIHNpemUgNzY5eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwwKSBzaXplIDM4MXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDM4MTogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgbmFycm93
ZXIgdGhhbiA2MGVtLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDk2
MHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCww
KSBzaXplIDEyM3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyMzogImRp
diBvZiBsZW5ndGggNjAgZW0iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6
ZSA4MDB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQg
KDAsMCkgc2l6ZSAxMjR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjQ6
ICJkaXYgb2YgbGVuZ3RoIDgwMHB4IgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDQt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0K
KyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVu
LiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9
IGF0ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDAp
IHNpemUgNDQ1eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDQ1OiAiVGhp
cyB0ZXh0IHNob3VsZCBiZSBncmVlbiBhbmQgYmVsb3cgc2hvdWxkIHJlYWQgXCJtZWRpYSBsaXN0
IGlzIGVtcHR5XCIuIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgx
OAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDExN3gxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDExNzogIm1lZGlhIGxpc3QgaXMgZW1wdHkiCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE0IEBACitsYXllciBhdCAoMCwwKSBzaXplIDk2OHg2MDAKKyAgUmVuZGVyQ2Fu
dmFzIGF0ICgwLDApIHNpemUgNzg1eDU4NQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA5Njh4NjAwCisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2MDAKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCwwKSBzaXplIDc2OXgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSA3Mjh4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA3Mjg6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIG5hcnJvd2Vy
IHRoYW4gNjBlbS4gVGhpcyB0ZXN0cyB0aGF0IChtaW4td2lkdGg6IDYwZW0pIGNhbiBldmFsdWF0
ZSB0byBmYWxzZS4iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA5NjB4
MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkg
c2l6ZSAxMjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjM6ICJkaXYg
b2YgbGVuZ3RoIDYwIGVtIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTIpIHNpemUg
ODAweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgw
LDApIHNpemUgMTI0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI0OiAi
ZGl2IG9mIGxlbmd0aCA4MDBweCIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA2LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwNi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwNi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNp
emUgODA4eDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA3ODV4NTg1CitsYXllciBh
dCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUg
Nzg1eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDU4NAorICAg
ICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4IFtjb2xvcj0jMDA4MDAwXQor
ICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDM3OHgxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM3ODogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4g
aWYgdmlld3BvcnQgaXMgYXQgbW9zdCA4MDBweCB3aWRlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDM0KSBzaXplIDgwMHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5k
ZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDEyMXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDEyMTogImRpdiBvZiB3aWR0aCA4MDBweCIKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvMDI0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhLzAyNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhLzAyNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRN
TH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkg
c2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgg
W2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUg
MTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxNi1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTYtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTYtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACitsYXllciBhdCAoMCwwKSBzaXpl
IDc4NXg2MDgKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA3ODV4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4
NXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg1ODQKKyAgICAg
IFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAzMTV4MTggW2NvbG9yPSMwMDgwMDBd
CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgyMzksMCkgc2l6ZSAzMTV4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMjM5LDApIHdpZHRoIDMxNTogIlRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4gaWYgaGVpZ2h0IGlzIGF0bGVhc3QgMzBleCAuIgorICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0g
YXQgKDAsMCkgc2l6ZSAxMTV4MjI5IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTE1eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTE1OiAiZGl2IG9mIGhlaWdodCAzMGV4IgorICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0g
YXQgKDExNSwwKSBzaXplIDEyNHg2MDAgW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVuZGVy
VGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxMjR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAxMjQ6ICJkaXYgb2YgaGVpZ2h0IDYwMHB4IgorICAgICAgUmVuZGVyVGV4dCB7
VEVYVH0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDAp
IHNpemUgMHgwCisgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDB4MApJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA4LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA4LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFz
IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtC
T0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCww
KSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0g
YXQgKDAsMCkgc2l6ZSAzMDh4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAz
MDg6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGNvbG9yIGRpc3BsYXkgaXMgdXNlZC4i
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxOC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJD
YW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJv
ZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtU
RVhUfSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9pbXBvcnQtcC1ncmVlbi5jc3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9pbXBvcnQtcC1ncmVlbi5jc3MJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL2ltcG9ydC1wLWdyZWVuLmNzcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
IEBACitwIHsKKyBjb2xvcjogZ3JlZW47Cit9CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
LzAxMC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDEwLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlh
IHF1ZXJ5IHRlc3Q6IGltcG9ydCB3aXRoIHNjcmVlbiBhbmQgKGdyaWQ6IDApIDwvdGl0bGU+ICAK
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1
ZXJpZXMvIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQG1lZGlhIHNjcmVlbiBhbmQg
KGdyaWQ6IDApIHsKK3AgeyBjb2xvcjogZ3JlZW47IH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdpbmcgZGV2aWNlIGlz
IGJpdG1hcCBkZXZpY2U8L3A+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDIuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBA
QAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gSFRNTDQgbWVkaWEgZGVzY3JpcHRpb25zIHBhcnNp
bmcgc3R5bGUgZWxlbWVudCBtZWRpYT0gY29udGVudDwvdGl0bGU+IAorPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3R5cGVzLmh0bWwjaC02LjEz
IiAvPgorPCEtLSBhY3R1YWwgdGVzdGNhc2UgZnJvbSBodHRwOi8vd3d3LmhpeGllLmNoL3Rlc3Rz
L2V2aWwvY3NzL2ltcG9ydC9leHRyYS9zdHlsZWV4b3RpY21lZGlhLmh0bWwgLS0+Cis8c3R5bGUg
dHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW47YnJhaWxsZSI+Citwe2NvbG9yOiBncmVlbjsg
fQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBn
cmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
LzAyMC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIwLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMC5odG1sCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDI5IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlh
IHF1ZXJ5IHRlc3Q6IHN0eWxlc2hlZXQgbWVkaWEubWVkaWFUZXh0IHByb3BlcnR5IGluc3BlY3Rp
b24gc2hvdWxkIHdvcms8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93
d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLVN0eWxlL3N0eWxlc2hl
ZXRzLmh0bWwiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImJyYWlsbGUsIG1l
ZGlhIHdpdGggZXJyb3IsIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6MCksIHR0eSByZXNv
bHV0aW9uID4gNjAwcHgiPgorI3Jlc3VsdCB7CisgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+
CisKKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorZnVuY3Rpb24gdGVzdCgpIHsKKyAg
ICByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICByZS5pbm5lckhU
TUwgPSAic3RhcnRlZCI7CisgICAgcmUuaW5uZXJIVE1MID0gZG9jdW1lbnQuc3R5bGVTaGVldHNb
MF0ubWVkaWEuaXRlbSgwKSAKKyAgICAgICAgICAgICAgICAgICAgKyAiLCAiICsgZG9jdW1lbnQu
c3R5bGVTaGVldHNbMF0ubWVkaWEuaXRlbSgxKSAKKyAgICAgICAgICAgICAgICAgICAgKyAiLCAi
ICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWEuaXRlbSgyKSAKKyAgICAgICAgICAgICAg
ICAgICAgKyAiLCAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWEuaXRlbSgzKSA7ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorfQorPC9zY3JpcHQ+CisKKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwPiBUaGUgdGV4dCBiZWxvdyBzaG91bGQg
YmUgZ3JlZW4gYW5kIGNvbnRhaW4gImJyYWlsbGUsIG1lZGlhLCBzY3JlZW4gYW5kIChjb2xvcikg
YW5kIChncmlkOiAwKSwgdHR5Ii4gPC9wPgorPHAgaWQ9InJlc3VsdCI+dGVzdCBub3QgcnVuPC9w
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTIuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMi5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTIuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0
ZXN0OiByZWxhdGl2ZSBjb25zdHJhaW50cyB0ZXN0IHVzaW5nIHNjcmVlbiBhbmQgKG1heC13aWR0
aDogNjBlbSk8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMu
b3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KK3AgeworICBjb2xvcjogcmVkOworfQorQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0
aDogNjBlbSkgeworICAgcCB7CisgICAgIGNvbG9yOiBncmVlbjsKKyAgfQorfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorCis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3
cG9ydCBpcyBuYXJyb3dlciB0aGFuIDYwZW0uICA8L3A+CisKKzxkaXYgc3R5bGU9IndpZHRoOiA2
MGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCA2MCBlbSA8
L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOiA4MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRi
bHVlOyI+IGRpdiBvZiBsZW5ndGggODAwcHggPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvMDA0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhLzAwNC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6ICBtZWRpYSBvbmx5IGFsbDwvdGl0
bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1t
ZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRp
YSBvbmx5IGFsbCB7IAorIHAgeworICBjb2xvcjogZ3JlZW47CisgfQorfQorPC9zdHlsZT4KKwor
PC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIyLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM4IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHN0
eWxlc2hlZXQgbWVkaWEgZGVsZXRlTWVkaXVtIHNob3VsZCB3b3JrPC90aXRsZT4gIAorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8i
IC8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZl
bC0yLVN0eWxlL3N0eWxlc2hlZXRzLmh0bWwiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1l
ZGlhPSJicmFpbGxlLCBub3Qgc2NyZWVuIj4KK3AgeworICBjb2xvcjogZ3JlZW47Cit9Cis8L3N0
eWxlPgorCis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIHRlc3QoKSB7
CisgICAgdmFyIHJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgIHZh
ciBtZWRpYSA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlhOworICAgIG1lZGlhLmFwcGVu
ZE1lZGl1bSgic2NyZWVuIGFuZCAoY29sb3IpIik7CisgICAgd2hpbGUgKG1lZGlhLmxlbmd0aCkg
eworICAgICAgICBtZWRpYS5kZWxldGVNZWRpdW0obWVkaWEuaXRlbSgwKSk7CisgICAgfQorICAg
IHJlLmlubmVySFRNTCA9ICJtZWRpYSBsaXN0IGlzIGVtcHR5IgorICAgIHZhciBmaXJzdCA9IHRy
dWU7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtZWRpYS5sZW5ndGg7ICsraSkgeyAgICAgICAg
CisgICAgICAgIGlmICghZmlyc3QpICByZS5pbm5lckhUTUwgKz0gIiwgIiArIG1lZGlhLml0ZW0o
aSk7CisgICAgICAgIGVsc2UgcmUuaW5uZXJIVE1MID0gbWVkaWEuaXRlbShpKTsKKyAgICAgICAg
Zmlyc3QgPSBmYWxzZTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJ0ZXN0KCkiPgorPCEtLSBYWFg6IE5PVEUhIFRoaXMgd2lsbCBmYWlsIHVudGlsIGR5bmFt
aWMgc2V0dGluZyBvZiBtZWRpYSBwcm9wZXJ0eSBjYXVzZXMgc3R5bGUgcmVjYWxjdWxhdGlvbi4K
KyAgICAgICAgICBUaGlzIGlzIG5vdCB0aGUgY2FzZSBjdXJyZW50bHkgKDI0LjA3LjIwMDUpCist
LT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGFuZCBiZWxvdyBzaG91bGQgcmVhZCAi
bWVkaWEgbGlzdCBpcyBlbXB0eSIuICA8L3A+Cis8cCBpZD0icmVzdWx0Ij50ZXN0IG5vdCBydW48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxNC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxNC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5
IHRlc3Q6IHJlbGF0aXZlIGNvbnN0cmFpbnRzIHRlc3QgdXNpbmcgc2NyZWVuIGFuZCAobWluLXdp
ZHRoOiA2MGVtKTwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53
My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorCis8c3R5bGUgdHlwZT0idGV4
dC9jc3MiPgorcCB7CisgIGNvbG9yOiBncmVlbjsKK30KK0BtZWRpYSBzY3JlZW4gYW5kIChtaW4t
d2lkdGg6IDYwZW0pIHsKKyAgIHAgeworICAgICBjb2xvcjogcmVkOworICB9Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisKKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZp
ZXdwb3J0IGlzIG5hcnJvd2VyIHRoYW4gNjBlbS4gVGhpcyB0ZXN0cyB0aGF0IChtaW4td2lkdGg6
IDYwZW0pIGNhbiBldmFsdWF0ZSB0byBmYWxzZS48L3A+CisKKzxkaXYgc3R5bGU9IndpZHRoOiA2
MGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCA2MCBlbSA8
L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOiA4MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRi
bHVlOyI+IGRpdiBvZiBsZW5ndGggODAwcHggPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwNi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvMDA2Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhLzAwNi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHNjcmVlbiBhbmQgKG1heC13aWR0
aDogODAwcHgpPC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jd2lkdGgiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CitwIHsKKyAgY29sb3I6IHJlZDsKK30KK0BtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lk
dGg6IDgwMHB4KSB7CisgICBwIHsKKyAgICAgY29sb3I6IGdyZWVuOworICB9Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3
cG9ydCBpcyBhdCBtb3N0IDgwMHB4IHdpZGUuPC9wPgorPGRpdiBzdHlsZT0id2lkdGg6IDgwMHB4
OyBiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsiPmRpdiBvZiB3aWR0aCA4MDBweDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyMiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0
OiBtZWRpYSBub3Qgc2NyZWVuIHNob3VsZCBldmFsIGZhbHNlIDwvdGl0bGU+ICAKKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAv
PgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7CisgICAgY29sb3I6IGdyZWVuOworfQor
PC9zdHlsZT4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ibm90IHNjcmVlbiI+Citw
IHsKKyAgICBjb2xvcjogcmVkOworfQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4g
VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxNi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvMDE2Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhLzAxNi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI0IEBACis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHJlbGF0aXZlIGNvbnN0cmFpbnRzIHRl
c3QgdXNpbmcgc2NyZWVuIGFuZCAobWluLWhlaWdodDogMzBleCk8L3RpdGxlPiAgCis8bGluayBy
ZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3
aWR0aCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3NwYW4geworICBjb2xvcjogcmVk
OworfQorQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi1oZWlnaHQ6IDMwZXgpIHsKKyAgIHNwYW4gewor
ICAgICBjb2xvcjogZ3JlZW47CisgIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKwor
PHNwYW4+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgaGVpZ2h0IGlzIGF0bGVhc3QgMzBl
eCAuPC9zcGFuPgorCis8ZGl2IHN0eWxlPSJibG9jazppbmxpbmU7IGZsb2F0OmxlZnQ7IGhlaWdo
dDogMzBleDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBoZWlnaHQgMzBl
eCA8L2Rpdj4KKzxkaXYgc3R5bGU9ImJsb2NrOmlubGluZTsgZmxvYXQ6bGVmdDsgaGVpZ2h0OiA2
MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBoZWlnaHQgNjAwcHgg
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAy
Ni5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI2Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNi5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDI3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1
ZXJ5IHRlc3Q6IG1hdGNoZXMgY29sb3Igb3IgbW9ub2Nocm9tZSBzY3JlZW5zIDwvdGl0bGU+ICAK
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1
ZXJpZXMvIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCitwIHsKKyAgICBjb2xvcjog
cmVkOworfQorCitAbWVkaWEgYWxsIGFuZCAoY29sb3IpIHsKK3AgeyBjb2xvcjogZ3JlZW47fQor
fQorCitAbWVkaWEgYWxsIGFuZCAobW9ub2Nocm9tZSl7CitwIHsgY29sb3I6IGdyZWVuO30KK30K
KworPC9zdHlsZT4KKworCis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJl
IGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvMDA4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDguaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA4Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVk
aWEgcXVlcnkgdGVzdDogc2NyZWVuIGFuZCAoY29sb3IpPC90aXRsZT4gIAorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jY29sb3Ii
IC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsKKyAgY29sb3I6IHJlZDsKK30KK0Bt
ZWRpYSBzY3JlZW4gYW5kIChjb2xvcikgeworICAgcCB7CisgICAgIGNvbG9yOiBncmVlbjsKKyAg
fQorfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4gaWYgY29sb3IgZGlzcGxheSBpcyB1c2VkLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYS8wMTguaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvMDE4Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgor
PGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogbm90IGJyYWlsbGU8L3RpdGxl
PiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVk
aWFxdWVyaWVzLyIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRpYSBub3QgYnJh
aWxsZSB7IAorIHAgeworICBjb2xvcjogZ3JlZW47CisgfQorfQorPC9zdHlsZT4KKworPC9oZWFk
PgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8
L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS8wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAw
eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXpl
IDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29s
b3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxNjN4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDExLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAg
IFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMzk5eDE4CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMzk5OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3
aW5nIGRldmljZSBpcyBub3QgYSBncmlkIGRldmljZS4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhLzAwMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS8wMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS8wMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xv
cj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDE2M3gx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91
bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjEtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIxLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIxLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSA1NjB4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCA1NjA6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGFuZCBiZWxvdyBzaG91bGQgcmVhZCBc
ImJyYWlsbGUsIG5vdCBzY3JlZW4sIHNjcmVlbiBhbmQgKGNvbG9yKVwiLiIKKyAgICAgIFJlbmRl
ckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7VEVY
VH0gYXQgKDAsMCkgc2l6ZSAyMzJ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAyMzI6ICJicmFpbGxlLCBub3Qgc2NyZWVuLCBzY3JlZW4gYW5kIChjb2xvcikiCisgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDApIHNpemUgMTgyeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTgyOiAiZXhwZWN0ZWQgdG8gZmFpbCAoMjQuMDcuMjAwNSkiCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhLzAxMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0
IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDAp
IHNpemUgNzg1eDU4NQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc2OXg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2
OXgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkg
c2l6ZSAzNjB4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNjA6ICJUaGlz
IHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIHdpZGVyIHRoYW4gMzBlbS4iCisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA0ODB4MTggW2JnY29sb3I9I0FE
RDhFNl0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAxMjN4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjM6ICJkaXYgb2YgbGVuZ3RoIDMwIGVt
IgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTIpIHNpemUgODAweDE4IFtiZ2NvbG9y
PSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTI0eDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI0OiAiZGl2IG9mIGxlbmd0aCA4
MDBweCIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA1LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwNS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwNS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVu
ZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7
UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRl
eHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhLzAyMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMjMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMjMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sg
e0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0
eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE1LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE1LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDh4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDc4NXg1ODUKK2xheWVy
IGF0ICgwLDApIHNpemUgODA4eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA3ODV4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4NTg0Cisg
ICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTggW2NvbG9yPSMwMDgwMDBd
CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgNzEweDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNzEwOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
biBpZiB2aWV3cG9ydCBpcyB3aWRlciB0aGFuIDMwZW0uIFRoaXMgdGVzdHMgdGhhdCAobWF4LXdp
ZHRoOiAzMGVtKSBjYW4gZXZhbHVhdGUgdG8gZmFsc2UuIgorICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDAsMzQpIHNpemUgNDgweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRl
clRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTIzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMTIzOiAiZGl2IG9mIGxlbmd0aCAzMCBlbSIKKyAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDUyKSBzaXplIDgwMHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDEyNHgxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDEyNDogImRpdiBvZiBsZW5ndGggODAwcHgiCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhLzAwNy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMDctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMDctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sg
e0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0
eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBz
aXplIDM5OXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM5OTogIlRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgYXQgbW9zdCA4MDBweCB4IDYwMHB4
LiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI1LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
ckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVy
Qm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0g
YXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQg
e1RFWFR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhLzAxNy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS8wMTctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS8wMTctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgp
IHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4
IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXpl
IDMxN3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMxNzogIlRoaXMgdGV4
dCBzaG91bGQgYmUgZ3JlZW4gb24gYml0bWFwIGNvbG9yIGRldmljZXMuIgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYS8wMDktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvMDA5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvMDA5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDAp
IHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4
NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkg
c2l6ZSAzODF4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzODE6ICJUaGlz
IHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IHdpZHRoIGlzIGF0IGxlYXN0IDYwMHB4
LiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE5LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxOS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxOS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9
IGF0ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDAp
IHNpemUgNjEweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNjEwOiAiVGhl
IHRleHQgYmVsb3cgc2hvdWxkIGJlIGdyZWVuIGFuZCBjb250YWluIFwiYnJhaWxsZSwgbWVkaWEs
IHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6IDApLCB0dHlcIi4iCisgICAgICBSZW5kZXJC
bG9jayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDMxMngxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDMxMjogImJyYWlsbGUsIG1lZGlhLCBzY3JlZW4gYW5kIChjb2xvcikg
YW5kIChncmlkOiAwKSwgdHR5IgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDEuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwMS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDEuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gSFRNTDQgbWVkaWEgZGVzY3Jp
cHRpb25zIHBhcnNpbmcgc3R5bGUgZWxlbWVudCBtZWRpYT0gY29udGVudDwvdGl0bGU+ICAKKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC90eXBl
cy5odG1sI2gtNi4xMyIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iM2QtZ2xh
c3Nlcywgc2NyZWVuIGFuZCByZXNvbHV0aW9uID4gNDBkcGksIGJyYWlsbGUiPgorcCB7IGNvbG9y
OiBncmVlbjsgfQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8cD4gVGhp
cyB0ZXh0IHNob3VsZCBiZSBncmVlbi4gPC9wPgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS8wMTEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
LzAxMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTEuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4g
Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBpbXBvcnQgd2l0aCBub3Qgc2NyZWVuIGFuZCAoZ3JpZCkg
PC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9j
c3MzLW1lZGlhcXVlcmllcy8jZ3JpZCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0Bt
ZWRpYSBub3Qgc2NyZWVuIGFuZCAoZ3JpZCkgeworcCB7IGNvbG9yOiBncmVlbjsgfQorfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYg
dmlld2luZyBkZXZpY2UgaXMgbm90IGEgZ3JpZCBkZXZpY2UuPC9wPgorPC9ib2R5PgorPC9odG1s
PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvMDAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDMuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDAzLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IEhUTUw0IG1l
ZGlhIGRlc2NyaXB0aW9ucyBwYXJzaW5nIHN0eWxlIGVsZW1lbnQgbWVkaWE9IGNvbnRlbnQ8L3Rp
dGxlPiAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0
bWw0MC90eXBlcy5odG1sI2gtNi4xMyIgLz4KKworPCEtLSBhY3R1YWwgdGVzdGNhc2UgZnJvbSBo
dHRwOi8vd3d3LmhpeGllLmNoL3Rlc3RzL2V2aWwvY3NzL2ltcG9ydC9leHRyYS9zdHlsZWV4b3Rp
Y21lZGlhLmh0bWwgLS0+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJicmFpbGxlLCBh
bGwgd2l0aCBwcmludCI+Citwe2NvbG9yOiBncmVlbjt9Cis8L3N0eWxlPgorCis8L2hlYWQ+Cis8
Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4gCis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIxLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhLzAyMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2IEBACis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHN0eWxlc2hlZXQg
bWVkaWEgYXBwZW5kTWVkaXVtIHNob3VsZCB3b3JrPC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAv
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwt
Mi1TdHlsZS9zdHlsZXNoZWV0cy5odG1sIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRp
YT0iYnJhaWxsZSwgbm90IHNjcmVlbiI+CitwIHsKKyAgY29sb3I6IGdyZWVuOworfQorPC9zdHls
ZT4KKworPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CitmdW5jdGlvbiB0ZXN0KCkgewor
ICAgIHZhciByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICB2YXIg
bWVkaWEgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYTsKKyAgICBtZWRpYS5hcHBlbmRN
ZWRpdW0oInNjcmVlbiBhbmQgKGNvbG9yKSIpOworICAgIHZhciBmaXJzdCA9IHRydWU7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBtZWRpYS5sZW5ndGg7ICsraSkgeyAgICAgICAgCisgICAgICAg
IGlmICghZmlyc3QpICByZS5pbm5lckhUTUwgKz0gIiwgIiArIG1lZGlhLml0ZW0oaSk7CisgICAg
ICAgIGVsc2UgcmUuaW5uZXJIVE1MID0gbWVkaWEuaXRlbShpKTsKKyAgICAgICAgZmlyc3QgPSBm
YWxzZTsKKyAgICB9CisKK30KKzwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRl
c3QoKSI+Cis8IS0tIFhYWDogTk9URSEgVGhpcyB3aWxsIGZhaWwgdW50aWwgZHluYW1pYyBzZXR0
aW5nIG9mIG1lZGlhIHByb3BlcnR5IGNhdXNlcyBzdHlsZSByZWNhbGN1bGF0aW9uLgorICAgICAg
ICAgIFRoaXMgaXMgbm90IHRoZSBjYXNlIGN1cnJlbnRseSAoMjQuMDcuMjAwNSkKKy0tPgorPHA+
IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gYW5kIGJlbG93IHNob3VsZCByZWFkICJicmFpbGxl
LCBub3Qgc2NyZWVuLCBzY3JlZW4gYW5kIChjb2xvcikiLiA8L3A+Cis8cCBpZD0icmVzdWx0Ij50
ZXN0IG5vdCBydW48L3A+Cis8cD4gZXhwZWN0ZWQgdG8gZmFpbCAoMjQuMDcuMjAwNSk8L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMy5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDEzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDI0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6
IHJlbGF0aXZlIGNvbnN0cmFpbnRzIHRlc3QgdXNpbmcgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAz
MGVtKTwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv
VFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorcCB7CisgIGNvbG9yOiByZWQ7Cit9CitAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAz
MGVtKSB7CisgICBwIHsKKyAgICAgY29sb3I6IGdyZWVuOworICB9Cit9Cis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+CisKKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0
IGlzIHdpZGVyIHRoYW4gMzBlbS4gIDwvcD4KKworPGRpdiBzdHlsZT0id2lkdGg6IDMwZW07IGJh
Y2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBkaXYgb2YgbGVuZ3RoIDMwIGVtIDwvZGl2Pgor
PGRpdiBzdHlsZT0id2lkdGg6IDgwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4g
ZGl2IG9mIGxlbmd0aCA4MDBweCA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvMDA1Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS8wMDUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
MDA1Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogbm90IGJyYWlsbGUsIHNjcmVlbjwvdGl0bGU+
ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRp
YXF1ZXJpZXMvI3N5bnRheCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRpYSBu
b3QgYnJhaWxsZSwgc2NyZWVuIHsgCisgcCB7CisgIGNvbG9yOiBncmVlbjsKKyB9Cit9Cis8L3N0
eWxlPgorCis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvMDIzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhLzAyMy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IG1lZGlhIG5vdCBicmFpbGxlIHNob3Vs
ZCBldmFsIHRydWU8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cu
dzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3Nz
IiBtZWRpYT0ibm90IGJyYWlsbGUiPgorcCB7CisgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+
CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTUuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxNS5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwyNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0
OiByZWxhdGl2ZSBjb25zdHJhaW50cyB0ZXN0IHVzaW5nIHNjcmVlbiBhbmQgKG1heC13aWR0aDog
MzBlbSk8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
L1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KK3AgeworICBjb2xvcjogZ3JlZW47Cit9CitAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRo
OiAzMGVtKSB7CisgICBwIHsKKyAgICAgY29sb3I6IHJlZDsKKyAgfQorfQorPC9zdHlsZT4KKzwv
aGVhZD4KKzxib2R5PgorCis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9y
dCBpcyB3aWRlciB0aGFuIDMwZW0uIFRoaXMgdGVzdHMgdGhhdCAobWF4LXdpZHRoOiAzMGVtKSBj
YW4gZXZhbHVhdGUgdG8gZmFsc2UuIDwvcD4KKworPGRpdiBzdHlsZT0id2lkdGg6IDMwZW07IGJh
Y2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBkaXYgb2YgbGVuZ3RoIDMwIGVtIDwvZGl2Pgor
PGRpdiBzdHlsZT0id2lkdGg6IDgwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4g
ZGl2IG9mIGxlbmd0aCA4MDBweCA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvMDA3Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS8wMDcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
MDA3Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBw
eCkgYW5kIChtYXgtaGVpZ2h0OjYwMHB4KTwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorCis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7CisgIGNvbG9yOiByZWQ7Cit9CitAbWVkaWEgc2Ny
ZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgYW5kIChtYXgtaGVpZ2h0OjYwMHB4KXsKKyAgIHAg
eworICAgICBjb2xvcjogZ3JlZW47CisgIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIGF0IG1vc3QgODAw
cHggeCA2MDBweC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhLzAyNS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI1
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNS5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1Mz
IG1lZGlhIHF1ZXJ5IHRlc3Q6IG1lZGlhIGFsbCBhbmQgaW52YWxpZCBzaG91bGQgZXZhbCBmYWxz
ZSA8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RS
L2NzczMtbWVkaWFxdWVyaWVzLyIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3Agewor
ICAgIGNvbG9yOiBncmVlbjsKK30KKworQG1lZGlhIGFsbCBhbmQgaW52YWxpZCB7CitwIHsKKyAg
ICBjb2xvcjogcmVkOworfQorfQorPC9zdHlsZT4KKworCis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBU
aGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE3Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS8wMTcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvMDE3Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAo
Z3JpZDowKSBzaG91bGQgZXZhbHVhdGUgdHJ1ZTwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4K
KworPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIGFuZCAoY29sb3IpIGFuZCAo
Z3JpZDowKSI+CisgcCB7CisgIGNvbG9yOiBncmVlbjsKKyB9Cis8L3N0eWxlPgorCis8L2hlYWQ+
Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIG9uIGJpdG1hcCBjb2xvciBk
ZXZpY2VzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvMDA5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDkuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA5Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVk
aWEgcXVlcnkgdGVzdDogaW1wb3J0IHdpdGggc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MDBweCkg
PC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9j
c3MzLW1lZGlhcXVlcmllcy8iIC8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cu
dzMub3JnL1RSL0NTUzIxL2Nhc2NhZGUuaHRtbCNhdC1pbXBvcnQiIC8+CisKKzxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IHJlZDsgfSAKKzwvc3R5bGU+Cis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPgorQGltcG9ydCB1cmwoaW1wb3J0LXAtZ3JlZW4uY3NzKSBzY3JlZW4gYW5kICht
aW4td2lkdGg6IDYwMHB4KTsKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRl
eHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IHdpZHRoIGlzIGF0IGxlYXN0IDYwMHB4Ljwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE5Lmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTkuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE5Lmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkg
dGVzdDogc3R5bGVzaGVldCBtZWRpYS5tZWRpYVRleHQgcHJvcGVydHkgaW5zcGVjdGlvbjwvdGl0
bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1t
ZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0i
YnJhaWxsZSwgbWVkaWEgd2l0aCBlcnJvciwgc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDow
KSwgdHR5IHJlc29sdXRpb24gPiA2MDBweCI+CisjcmVzdWx0IHsKKyAgY29sb3I6IGdyZWVuOwor
fQorPC9zdHlsZT4KKworPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CitmdW5jdGlvbiB0
ZXN0KCkgeworICAgIHJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAg
IHJlLmlubmVySFRNTCA9ICJzdGFydGVkIjsKKyAgICByZS5pbm5lckhUTUwgPSBkb2N1bWVudC5z
dHlsZVNoZWV0c1swXS5tZWRpYS5tZWRpYVRleHQ7Cit9Cis8L3NjcmlwdD4KKworPC9oZWFkPgor
PGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRoZSB0ZXh0IGJlbG93IHNob3VsZCBiZSBncmVl
biBhbmQgY29udGFpbiAiYnJhaWxsZSwgbWVkaWEsIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdy
aWQ6IDApLCB0dHkiLiA8L3A+Cis8cCBpZD0icmVzdWx0Ij50ZXN0IG5vdCBydW48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTAtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTAtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAor
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBS
ZW5kZXJUZXh0IHtURVhUfSBhdCAoMCwwKSBzaXplIDM3OHgxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDM3ODogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld2lu
ZyBkZXZpY2UgaXMgYml0bWFwIGRldmljZSIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
MDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAw
Mi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAw
Mi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgw
MDBdCisgICAgICAgIFJlbmRlclRleHQge1RFWFR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBn
cmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMC1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjAtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjAtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBS
ZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2Nr
IHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHtURVhUfSBhdCAo
MCwwKSBzaXplIDYxMHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDYxMDog
IlRoZSB0ZXh0IGJlbG93IHNob3VsZCBiZSBncmVlbiBhbmQgY29udGFpbiBcImJyYWlsbGUsIG1l
ZGlhLCBzY3JlZW4gYW5kIChjb2xvcikgYW5kIChncmlkOiAwKSwgdHR5XCIuIgorICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAg
ICAgUmVuZGVyVGV4dCB7VEVYVH0gYXQgKDAsMCkgc2l6ZSAzMTJ4MTgKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCAzMTI6ICJicmFpbGxlLCBtZWRpYSwgc2NyZWVuIGFuZCAoY29s
b3IpIGFuZCAoZ3JpZDogMCksIHR0eSIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>6221</attachid>
            <date>2006-02-03 07:47:24 -0800</date>
            <delta_ts>2006-04-28 04:57:41 -0700</delta_ts>
            <desc>Revised media queries patch</desc>
            <filename>mediaqueries-new.patch</filename>
            <type>text/plain</type>
            <size>69643</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUva2h0bWwvaHRtbC9odG1sX2hlYWRpbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2todG1sL2h0bWwvaHRtbF9oZWFkaW1wbC5jcHAJKHJldmlzaW9uIDEyNTQ0KQor
KysgV2ViQ29yZS9raHRtbC9odG1sL2h0bWxfaGVhZGltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAiY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaCIKICNpbmNs
dWRlICJjc3MvY3NzX3N0eWxlc2hlZXRpbXBsLmgiCiAjaW5jbHVkZSAiY3NzL2Nzc2hlbHBlci5o
IgorI2luY2x1ZGUgImNzcy9jc3NfbWVkaWFxdWVyeWV2YWwuaCIKICNpbmNsdWRlICJodG1sbmFt
ZXMuaCIKIAogI2luY2x1ZGUgPGt1cmwuaD4KQEAgLTIzNiw3ICsyMzcsMTAgQEAgdm9pZCBIVE1M
TGlua0VsZW1lbnRJbXBsOjpwcm9jZXNzKCkKICAgICAgICAgLy8gbm8gbmVlZCB0byBsb2FkIHN0
eWxlIHNoZWV0cyB3aGljaCBhcmVuJ3QgZm9yIHRoZSBzY3JlZW4gb3V0cHV0CiAgICAgICAgIC8v
ICMjIyB0aGVyZSBtYXkgYmUgaW4gc29tZSBzaXR1YXRpb25zIGUuZy4gZm9yIGFuIGVkaXRvciBv
ciBzY3JpcHQgdG8gbWFuaXB1bGF0ZQogCS8vIGFsc28sIGRvbid0IGxvYWQgc3R5bGUgc2hlZXRz
IGZvciBzdGFuZGFsb25lIGRvY3VtZW50cwotICAgICAgICBpZiAobV9tZWRpYS5pc051bGwoKSB8
fCBtX21lZGlhLmNvbnRhaW5zKCJzY3JlZW4iKSB8fCBtX21lZGlhLmNvbnRhaW5zKCJhbGwiKSB8
fCBtX21lZGlhLmNvbnRhaW5zKCJwcmludCIpKSB7CisgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0
b3IgYWxsRXZhbCh0cnVlKSwgc2NyZWVuRXZhbCgic2NyZWVuIiwgdHJ1ZSksIHByaW50RXZhbCgi
cHJpbnQiLCB0cnVlKTsKKyAgICAgICAgTWVkaWFMaXN0SW1wbCogbWVkaWEgPSBuZXcgTWVkaWFM
aXN0SW1wbCgpOworICAgICAgICBtZWRpYS0+c2V0TWVkaWFUZXh0KCBtX21lZGlhICk7CisgICAg
ICAgIGlmIChhbGxFdmFsLmV2YWwobWVkaWEpIHx8IHNjcmVlbkV2YWwuZXZhbChtZWRpYSkgfHwg
cHJpbnRFdmFsLmV2YWwobWVkaWEpKSB7CiAgICAgICAgICAgICBtX2xvYWRpbmcgPSB0cnVlOwog
CiAgICAgICAgICAgICAvLyBBZGQgb3Vyc2VsdmVzIGFzIGEgcGVuZGluZyBzaGVldCwgYnV0IG9u
bHkgaWYgd2UgYXJlbid0IGFuIGFsdGVybmF0ZSAKQEAgLTI1MCw2ICsyNTQsOCBAQCB2b2lkIEhU
TUxMaW5rRWxlbWVudEltcGw6OnByb2Nlc3MoKQogICAgICAgICAgICAgbV9jYWNoZWRTaGVldCA9
IGdldERvY3VtZW50KCktPmRvY0xvYWRlcigpLT5yZXF1ZXN0U3R5bGVTaGVldChtX3VybCwgY2hz
ZXQpOwogICAgICAgICAgICAgaWYgKG1fY2FjaGVkU2hlZXQpCiAgICAgICAgICAgICAgICAgbV9j
YWNoZWRTaGVldC0+cmVmKHRoaXMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGVs
ZXRlIG1lZGlhOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgaWYgKG1fc2hlZXQpIHsKQEAg
LTI3Niw5ICsyODIsOSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudEltcGw6OnNldFN0eWxlU2hlZXQo
CiAgICAgbV9zaGVldCA9IG5ldyBDU1NTdHlsZVNoZWV0SW1wbCh0aGlzLCB1cmwpOwogICAgIG1f
c2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0U3RyLCAhZ2V0RG9jdW1lbnQoKS0+aW5Db21wYXRNb2Rl
KCkpOwogCi0gICAgTWVkaWFMaXN0SW1wbCAqbWVkaWEgPSBuZXcgTWVkaWFMaXN0SW1wbChtX3No
ZWV0LmdldCgpLCBtX21lZGlhKTsKKyAgICBNZWRpYUxpc3RJbXBsKiBtZWRpYSA9IG5ldyBNZWRp
YUxpc3RJbXBsKG1fc2hlZXQuZ2V0KCksIG1fbWVkaWEpOwogICAgIG1fc2hlZXQtPnNldE1lZGlh
KCBtZWRpYSApOwotCisgICAgCiAgICAgbV9sb2FkaW5nID0gZmFsc2U7CiAKICAgICAvLyBUZWxs
IHRoZSBkb2MgYWJvdXQgdGhlIHNoZWV0LgpAQCAtNzUwLDE2ICs3NTYsMjMgQEAgdm9pZCBIVE1M
U3R5bGVFbGVtZW50SW1wbDo6Y2hpbGRyZW5DaGFuZwogICAgICAgICBtX3NoZWV0ID0gMDsKICAg
ICB9CiAKLSAgICBtX2xvYWRpbmcgPSBmYWxzZTsKLSAgICBpZiAoKG1fdHlwZS5pc0VtcHR5KCkg
fHwgbV90eXBlID09ICJ0ZXh0L2NzcyIpIC8vIFR5cGUgbXVzdCBiZSBlbXB0eSBvciBDU1MKLSAg
ICAgICAgICYmIChtX21lZGlhLmlzTnVsbCgpIHx8IG1fbWVkaWEuY29udGFpbnMoInNjcmVlbiIp
IHx8IG1fbWVkaWEuY29udGFpbnMoImFsbCIpIHx8IG1fbWVkaWEuY29udGFpbnMoInByaW50Iikp
KSB7Ci0gICAgICAgIGdldERvY3VtZW50KCktPmFkZFBlbmRpbmdTaGVldCgpOwotICAgICAgICBt
X2xvYWRpbmcgPSB0cnVlOwotICAgICAgICBtX3NoZWV0ID0gbmV3IENTU1N0eWxlU2hlZXRJbXBs
KHRoaXMpOwotICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyh0ZXh0LCAhZ2V0RG9jdW1lbnQo
KS0+aW5Db21wYXRNb2RlKCkpOwotICAgICAgICBNZWRpYUxpc3RJbXBsICptZWRpYSA9IG5ldyBN
ZWRpYUxpc3RJbXBsKG1fc2hlZXQuZ2V0KCksIG1fbWVkaWEpOwotICAgICAgICBtX3NoZWV0LT5z
ZXRNZWRpYShtZWRpYSk7Ci0gICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOworICAgIG1fbG9hZGlu
ZyA9IGZhbHNlOyAgICAKKyAgICBpZiAoKG1fdHlwZS5pc0VtcHR5KCkgfHwgbV90eXBlID09ICJ0
ZXh0L2NzcyIpKSB7Ly8gVHlwZSBtdXN0IGJlIGVtcHR5IG9yIENTUworICAgICAgICBNZWRpYUxp
c3RJbXBsKiBtZWRpYSA9IG5ldyBNZWRpYUxpc3RJbXBsKCk7CisgICAgICAgIG1lZGlhLT5zZXRN
ZWRpYVRleHQobV9tZWRpYSk7CisgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgYWxsRXZhbCh0
cnVlKSwgc2NyZWVuRXZhbCgic2NyZWVuIiwgdHJ1ZSksICBwcmludEV2YWwoInByaW50IiwgdHJ1
ZSk7CisgICAgICAgIGlmIChhbGxFdmFsLmV2YWwobWVkaWEpIHx8IHNjcmVlbkV2YWwuZXZhbCht
ZWRpYSkgfHwgcHJpbnRFdmFsLmV2YWwobWVkaWEpKSB7CisgICAgICAgICAgICBnZXREb2N1bWVu
dCgpLT5hZGRQZW5kaW5nU2hlZXQoKTsKKyAgICAgICAgICAgIG1fbG9hZGluZyA9IHRydWU7Cisg
ICAgICAgICAgICBtX3NoZWV0ID0gbmV3IENTU1N0eWxlU2hlZXRJbXBsKHRoaXMpOworICAgICAg
ICAgICAgbV9zaGVldC0+cmVmKCk7CisgICAgICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyh0
ZXh0LCAhZ2V0RG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkpOworICAgICAgICAgICAgbWVkaWEt
PnNldFBhcmVudChtX3NoZWV0LmdldCgpKTsKKyAgICAgICAgICAgIG1fc2hlZXQtPnNldE1lZGlh
KG1lZGlhKTsKKyAgICAgICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOworICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgZGVsZXRlIG1lZGlhOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYg
KCFpc0xvYWRpbmcoKSAmJiBtX3NoZWV0KQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Ny
ZWVuLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbWFjL1NjcmVlbi5tbQkocmV2
aXNpb24gMTI1NDQpCisrKyBXZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JlZW4ubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTUwLDYgKzUwLDIyIEBAIGludCBzY3JlZW5EZXB0aChRV2lkZ2V0KiB3aWRnZXQp
CiAgICAgcmV0dXJuIFtzY3JlZW4od2lkZ2V0KSBkZXB0aF07CiB9CiAKK2ludCBzY3JlZW5EZXB0
aFBlckNvbXBvbmVudChRV2lkZ2V0KiB3aWRnZXQpCit7CisgICByZXR1cm4gTlNCaXRzUGVyU2Ft
cGxlRnJvbURlcHRoKFtzY3JlZW4od2lkZ2V0KSBkZXB0aF0pOworfQorCitib29sIHNjcmVlbklz
TW9ub2Nocm9tZShRV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgTlNTY3JlZW4qIHMgPSBzY3JlZW4o
d2lkZ2V0KTsKKyAgICBOU0RpY3Rpb25hcnkqIGRkID0gW3MgZGV2aWNlRGVzY3JpcHRpb25dOwor
ICAgIE5TU3RyaW5nKiBjb2xvclNwYWNlTmFtZSA9IFtkZCBvYmplY3RGb3JLZXk6TlNEZXZpY2VD
b2xvclNwYWNlTmFtZV07CisgICAgLy8gWFhYOiBjYW4gbmFtZWQgY29sb3JzcGFjZSBvciBjdXN0
b20gY29sb3JzcGFjZSBiZSBtb25vY2hyb21lPworICAgIC8vIFhYWDogd2lsbCBOUypCbGFja0Nv
bG9yU3BhY2Ugb3IgTlMqV2hpdGVDb2xvclNwYWNlIGJlIGFsd2F5cyBtb25vY2hyb21lPworICAg
IHJldHVybiBjb2xvclNwYWNlTmFtZSA9PSBOU0NhbGlicmF0ZWRXaGl0ZUNvbG9yU3BhY2UgfHwg
Y29sb3JTcGFjZU5hbWUgPT0gTlNDYWxpYnJhdGVkQmxhY2tDb2xvclNwYWNlIHx8IAorICAgICAg
ICBjb2xvclNwYWNlTmFtZSA9PSBOU0RldmljZVdoaXRlQ29sb3JTcGFjZSB8fCBjb2xvclNwYWNl
TmFtZSA9PSBOU0RldmljZUJsYWNrQ29sb3JTcGFjZTsKK30KKwogSW50UmVjdCBzY3JlZW5SZWN0
KFFXaWRnZXQqIHdpZGdldCkKIHsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChmbGlwR2xv
YmFsUmVjdChbc2NyZWVuKHdpZGdldCkgZnJhbWVdKSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L1NjcmVlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2NyZWVuLmgJKHJldmlz
aW9uIDEyNTQ0KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW4uaAkod29ya2luZyBjb3B5KQpA
QCAtMzMsNiArMzMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgSW50UmVjdDsK
IAogICAgIGludCBzY3JlZW5EZXB0aChRV2lkZ2V0Kik7CisgICAgaW50IHNjcmVlbkRlcHRoUGVy
Q29tcG9uZW50KFFXaWRnZXQqKTsKKyAgICBib29sIHNjcmVlbklzTW9ub2Nocm9tZShRV2lkZ2V0
Kik7CiAgICAgSW50UmVjdCBzY3JlZW5SZWN0KFFXaWRnZXQqKTsKICAgICBJbnRSZWN0IHVzYWJs
ZVNjcmVlblJlY3QoUVdpZGdldCopOwogCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTI1NDQpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTIsNiArMTIsMTAgQEAK
IAkJMUE2OUQzODEwODU2Mjc0MTAwMDk4ODBEIC8qIGRvbXBhcnNlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE2OUQzN0YwODU2Mjc0MTAwMDk4ODBE
IC8qIGRvbXBhcnNlci5oICovOyB9OwogCQkxQTY5RDM4MjA4NTYyNzQxMDAwOTg4MEQgLyogZG9t
cGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDFBNjlEMzgwMDg1NjI3NDEwMDA5ODgwRCAvKiBkb21wYXJzZXIuY3BwICovOyB9OwogCQkxQURC
NTY5OTA5ODgyN0FEMDAzMkVFRTIgLyogSlNFdmVudHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFEQjU2OTgwOTg4MjdBRDAwMzJFRUUyIC8qIEpT
RXZlbnRzLmNwcCAqLzsgfTsKKwkJNDdFNEQ5OUUwOTkzNzA0NzAwNkE5NkM3IC8qIGNzc19tZWRp
YXF1ZXJ5ZXZhbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0N0U0RDk5QTA5OTM3MDQ3MDA2QTk2QzcgLyogY3NzX21lZGlhcXVlcnlldmFsLmNwcCAq
LzsgfTsKKwkJNDdFNEQ5OUYwOTkzNzA0NzAwNkE5NkM3IC8qIGNzc19tZWRpYXF1ZXJ5ZXZhbC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDdFNEQ5OUIw
OTkzNzA0NzAwNkE5NkM3IC8qIGNzc19tZWRpYXF1ZXJ5ZXZhbC5oICovOyB9OworCQk0N0U0RDlB
MDA5OTM3MDQ3MDA2QTk2QzcgLyogY3NzX21lZGlhcXVlcnlpbXBsLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3RTREOTlDMDk5MzcwNDcwMDZBOTZD
NyAvKiBjc3NfbWVkaWFxdWVyeWltcGwuY3BwICovOyB9OworCQk0N0U0RDlBMTA5OTM3MDQ3MDA2
QTk2QzcgLyogY3NzX21lZGlhcXVlcnlpbXBsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0N0U0RDk5RDA5OTM3MDQ3MDA2QTk2QzcgLyogY3NzX21lZGlh
cXVlcnlpbXBsLmggKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBkb21fcW5h
bWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUw
QTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIGRvbV9xbmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNB
MDg1RjYwMzkwMDczNTNENiAvKiBkb21fcW5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBkb21fcW5h
bWUuaCAqLzsgfTsKIAkJNTUwQTBCQ0QwODVGNjA0RDAwNzM1M0Q2IC8qIGh0bWxuYW1lcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDQjA4
NUY2MDREMDA3MzUzRDYgLyogaHRtbG5hbWVzLmNwcCAqLzsgfTsKQEAgLTEwODcsNiArMTA5MSwx
MCBAQAogCQkyRDkwNjYwQjA2NjVEOTM3MDA2QjZGMUEgLyogS1dRQ2xpcGJvYXJkLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEtXUUNsaXBib2Fy
ZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsg
fTsKIAkJMkQ5MDY2MEMwNjY1RDkzNzAwNkI2RjFBIC8qIEtXUUNsaXBib2FyZC5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEtXUUNs
aXBib2FyZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAJCTQ3NThDNDQzMDhDNUYyMTcwMDlCQUYwNSAvKiBLQ2FudmFzUGF0aC5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgaW5kZW50V2lk
dGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEtD
YW52YXNQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CisJCTQ3RTREOTlBMDk5MzcwNDcwMDZBOTZDNyAvKiBjc3NfbWVkaWFxdWVy
eWV2YWwuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IGNzc19tZWRp
YXF1ZXJ5ZXZhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ3RTREOTlCMDk5
MzcwNDcwMDZBOTZDNyAvKiBjc3NfbWVkaWFxdWVyeWV2YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IGNzc19tZWRpYXF1ZXJ5ZXZhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQk0N0U0RDk5QzA5OTM3MDQ3MDA2QTk2QzcgLyogY3NzX21lZGlhcXVlcnlpbXBs
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBjc3NfbWVkaWFxdWVy
eWltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0N0U0RDk5RDA5OTM3MDQ3
MDA2QTk2QzcgLyogY3NzX21lZGlhcXVlcnlpbXBsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBjc3NfbWVkaWFxdWVyeWltcGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE1MEMyQTEwNzAyNjI5MDAwQUY2NDJDIC8qIFdlYkRhc2hib2FyZFJlZ2lvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXNo
Ym9hcmRSZWdpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2Vz
VGFicyA9IDA7IH07CiAJCTUxNTBDMkE1MDcwMjYyOTgwMEFGNjQyQyAvKiBXZWJEYXNoYm9hcmRS
ZWdpb24ubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
aW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBw
YXRoID0gV2ViRGFzaGJvYXJkUmVnaW9uLm07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldp
ZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MUY2QTNENTA2NjNCRjA0MDA0RDI5MTkgLyog
aHRtbF9jYW52YXNpbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IGh0bWxfY2FudmFzaW1wbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwpAQCAtMzMxNyw2ICszMzI1LDEw
IEBACiAJCUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ3RTREOTlBMDk5MzcwNDcwMDZBOTZDNyAv
KiBjc3NfbWVkaWFxdWVyeWV2YWwuY3BwICovLAorCQkJCTQ3RTREOTlCMDk5MzcwNDcwMDZBOTZD
NyAvKiBjc3NfbWVkaWFxdWVyeWV2YWwuaCAqLywKKwkJCQk0N0U0RDk5QzA5OTM3MDQ3MDA2QTk2
QzcgLyogY3NzX21lZGlhcXVlcnlpbXBsLmNwcCAqLywKKwkJCQk0N0U0RDk5RDA5OTM3MDQ3MDA2
QTk2QzcgLyogY3NzX21lZGlhcXVlcnlpbXBsLmggKi8sCiAJCQkJQkNFQTQ3N0EwOTdDQUFDODAw
OTRDOUU0IC8qIGNzc19iYXNlLmNwcCAqLywKIAkJCQlCQ0VBNDc3QjA5N0NBQUM4MDA5NEM5RTQg
LyogY3NzX2Jhc2UuaCAqLywKIAkJCQlCQ0VBNDc3QzA5N0NBQUM4MDA5NEM5RTQgLyogY3NzX2Nv
bXB1dGVkc3R5bGUuY3BwICovLApAQCAtNDMzMSw2ICs0MzQzLDggQEAKIAkJCQlCQzlDMzI4QjA5
OTMzQTZFMDAxRDY5MjQgLyogSW1hZ2VBbmltYXRpb25PYnNlcnZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNjVEMUMxQ0EwOTkzMkIyMjAwMENCMzI0IC8qIFBsdWdpbi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM2QjdBOTgwOTkzM0YyRTAwNTI4NjdCIC8qIEltYWdlRGVjb2Rlci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJNDdFNEQ5OUYwOTkzNzA0NzAwNkE5NkM3IC8qIGNzc19tZWRpYXF1ZXJ5ZXZh
bC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDdFNEQ5QTEwOTkzNzA0NzAwNkE5NkM3IC8qIGNzc19t
ZWRpYXF1ZXJ5aW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00MzQyLDYgKzQzNTYsNyBAQAogCQkJ
YnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODM5MDg5MDJCMTEwMDhBOUVGQyAvKiBCdWls
ZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWE5hdGl2ZVRhcmdldCAiV2ViQ29yZSIgKi87CiAJ
CQlidWlsZFBoYXNlcyA9ICgKIAkJCQk5MzJGQzJDNzA4MjRCNDg1MDA1QjNDNzUgLyogY3NzcHJv
cGVydGllcy5jL2ggKi8sCisJCQkJNDdFNEQ5OTgwOTkzNkYxQjAwNkE5NkM3IC8qIGNzc21lZGlh
ZmVhdHVyZXMuYy9oICovLAogCQkJCTkzMkZDMkJDMDgyNEI0MjIwMDVCM0M3NSAvKiBjc3N2YWx1
ZXMuYy9oICovLAogCQkJCTkzMkZDMEI3MDgyNEExNzUwMDVCM0M3NSAvKiBkb2N0eXBlcy5jcHAg
Ki8sCiAJCQkJOTNFQTY4NkMwODI0OUFGNDAwNjg3RjU2IC8qIGtlbnRpdGllcy5jICovLApAQCAt
NDUzNCw2ICs0NTQ5LDI0IEBACiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwogCQkJc2hlbGxTY3Jp
cHQgPSAiL3Vzci9iaW4vcGVybCAtSVwiJFNSQ1JPT1QvYmluZGluZ3Mvc2NyaXB0c1wiIFwiJFNS
Q1JPT1QvYmluZGluZ3Mvc2NyaXB0cy9nZW5lcmF0ZS1iaW5kaW5ncy5wbFwiIC0tZ2VuZXJhdG9y
IEpTIC0taWRsZGlyIFwiJFNSQ1JPT1Qva2h0bWwveG1sXCIgLS1vdXRwdXRkaXIgXCIkREVSSVZF
RF9GSUxFX0RJUlwiXG4iOwogCQl9OworCQk0N0U0RDk5ODA5OTM2RjFCMDA2QTk2QzcgLyogY3Nz
bWVkaWFmZWF0dXJlcy5jL2ggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OworCQkJZmlsZXMgPSAoCisJCQkp
OworCQkJaW5wdXRQYXRocyA9ICgKKwkJCQljc3MvY3NzbWVkaWFmZWF0dXJlcy5pbiwKKwkJCQlj
c3MvbWFrZW1lZGlhZmVhdHVyZXMsCisJCQkpOworCQkJbmFtZSA9IGNzc21lZGlhZmVhdHVyZXMu
Yy9oOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkJIiQoREVSSVZFRF9GSUxFX0RJUikvY3NzbWVk
aWFmZWF0dXJlcy5oIiwKKwkJCQkiJChERVJJVkVEX0ZJTEVfRElSKS9jc3NtZWRpYWZlYXR1cmVz
LmMiLAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwor
CQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImNhdCBjc3MvY3NzbWVk
aWFmZWF0dXJlcy5pbiA+IFwiJERFUklWRURfRklMRV9ESVIvY3NzbWVkaWFmZWF0dXJlcy5pblwi
XG5jZCBcIiRERVJJVkVEX0ZJTEVfRElSXCJcbnNoIFwiJFNSQ1JPT1QvY3NzL21ha2VtZWRpYWZl
YXR1cmVzXCIiOworCQl9OwogCQk5MzJGQzBCNzA4MjRBMTc1MDA1QjNDNzUgLyogZG9jdHlwZXMu
Y3BwICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOwogCQkJYnVpbGRB
Y3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTU0NDgsNiArNTQ4MSw4IEBACiAJCQkJOTM4NUY3
NzQwOThEOUNCOTAwRDkwRDI0IC8qIFNjcmVlbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTkzMDVC
MjUwMDk4RjFCOEIwMEMyODg1NSAvKiBUaW1lci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzZC
N0FBMTA5OTM0MDQwMDA1Mjg2N0IgLyogSW1hZ2VEZWNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCTQ3RTREOTlFMDk5MzcwNDcwMDZBOTZDNyAvKiBjc3NfbWVkaWFxdWVyeWV2YWwuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNDdFNEQ5QTAwOTkzNzA0NzAwNkE5NkM3IC8qIGNzc19tZWRpYXF1
ZXJ5aW1wbC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc19tZWRpYXF1
ZXJ5aW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3NzX21lZGlhcXVlcnlpbXBs
LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL2Nzc19tZWRpYXF1ZXJ5aW1wbC5jcHAJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE1IEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5j
bHVkZSAiY3NzX21lZGlhcXVlcnlpbXBsLmgiCisjaW5jbHVkZSAiY3NzcGFyc2VyLmgiCisjaW5j
bHVkZSAiY3NzX2Jhc2UuaCIKKyNpbmNsdWRlICJjc3NfdmFsdWVpbXBsLmgiCisKK3VzaW5nIG5h
bWVzcGFjZSBET007Cit1c2luZyBuYW1lc3BhY2Uga2h0bWw7CisKK01lZGlhUXVlcnlFeHBJbXBs
OjpNZWRpYVF1ZXJ5RXhwSW1wbChpbnQgbWVkaWFGZWF0dXJlSWQsIERPTTo6VmFsdWVMaXN0KiB2
YWx1ZUxpc3QpCisgICAgOiBtX21lZGlhRmVhdHVyZUlkKG1lZGlhRmVhdHVyZUlkKQorICAgICwg
bV92YWx1ZSgwKQoreyAgIAorICAgIGlmICh2YWx1ZUxpc3QpIHsKKworICAgICAgICBpZiAoIHZh
bHVlTGlzdC0+bnVtVmFsdWVzID09IDEgKSB7CisgICAgICAgICAgICBET006OlZhbHVlKiB2YWx1
ZSA9IHZhbHVlTGlzdC0+Y3VycmVudCgpOworCisgICAgICAgICAgICBpZiAoIHZhbHVlLT5pZCAh
PSAwICkgeworICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJ
bXBsKCB2YWx1ZS0+aWQgKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoIHZhbHVlLT51bml0ID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HICkKKyAgICAgICAgICAgICAgICBtX3ZhbHVl
ID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlSW1wbCggZG9tU3RyaW5nKCB2YWx1ZS0+c3RyaW5nICks
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSB2YWx1ZS0+dW5pdCApOworICAgICAgICAgICAg
ZWxzZSBpZiAoIHZhbHVlLT51bml0ID49IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSICYm
CisgICAgICAgICAgICAgICAgICAgICAgdmFsdWUtPnVuaXQgPD0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19LSFogKSB7CisgICAgICAgICAgICAgICAgbV92YWx1ZSA9IG5ldyBDU1NQcmltaXRpdmVW
YWx1ZUltcGwoIHZhbHVlLT5mVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSB2YWx1
ZS0+dW5pdCApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsdWVMaXN0LT5uZXh0KCk7
CisgICAgICAgIH0gZWxzZSBpZiAoIHZhbHVlTGlzdC0+bnVtVmFsdWVzID4gMSkgeworICAgICAg
ICAgICAgLy8gY3JlYXRlIGxpc3Qgb2YgdmFsdWVzCisgICAgICAgICAgICAvLyBjdXJyZW50bHkg
YWNjZXB0cyBvbmx5IDxpbnRlZ2VyPi88aW50ZWdlcj4KKworICAgICAgICAgICAgQ1NTVmFsdWVM
aXN0SW1wbCogbGlzdCA9IG5ldyBDU1NWYWx1ZUxpc3RJbXBsKCk7CisgICAgICAgICAgICBWYWx1
ZSogdmFsdWUgPSAwOworICAgICAgICAgICAgYm9vbCBpc1ZhbGlkID0gdHJ1ZTsKKworICAgICAg
ICAgICAgd2hpbGUgKCh2YWx1ZSA9IHZhbHVlTGlzdC0+Y3VycmVudCgpKSAmJiBpc1ZhbGlkKSB7
CisgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZS0+dW5pdCA9PSBWYWx1ZTo6T3BlcmF0b3IgJiYg
dmFsdWUtPmlWYWx1ZSA9PSAnLycgKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVu
ZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKCIvIiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19T
VFJJTkcpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWVJbXBsKHZhbHVlLT5mVmFsdWUsIENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfTlVNQkVSKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgaXNWYWxpZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGlzVmFsaWQpCisgICAgICAgICAgICAgICAgbV92YWx1ZSA9IGxpc3Q7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZGVsZXRlKGxpc3QpOworCisgICAgICAgIH0K
KyAgICB9Cit9CisKK01lZGlhUXVlcnlFeHBJbXBsOjp+TWVkaWFRdWVyeUV4cEltcGwoKQorewor
ICAgIGRlbGV0ZSAobV92YWx1ZSk7Cit9CisKK2ludCBNZWRpYVF1ZXJ5RXhwSW1wbDo6bWVkaWFG
ZWF0dXJlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYUZlYXR1cmVJZDsKK30KKworQ1NT
VmFsdWVJbXBsKiBNZWRpYVF1ZXJ5RXhwSW1wbDo6dmFsdWUoKSBjb25zdAoreworICAgIHJldHVy
biBtX3ZhbHVlOworfQorCitNZWRpYVF1ZXJ5SW1wbDo6TWVkaWFRdWVyeUltcGwoUmVzdHJpY3Rv
ciByLCBjb25zdCBET006OkRPTVN0cmluZyAmbWVkaWFUeXBlLCBNZWRpYVF1ZXJ5RXhwTGlzdElt
cGwqIGV4cHJzKQorICAgIDogbV9yZXN0cmljdG9yKHIpCisgICAgLCBtX21lZGlhVHlwZShtZWRp
YVR5cGUpCisgICAgLCBtX2V4cHJlc3Npb25zKGV4cHJzKQoreworfQorCitNZWRpYVF1ZXJ5SW1w
bDo6fk1lZGlhUXVlcnlJbXBsKCkKK3sKKyAgICBkZWxldGUobV9leHByZXNzaW9ucyk7Cit9CisK
K01lZGlhUXVlcnlJbXBsOjpSZXN0cmljdG9yIE1lZGlhUXVlcnlJbXBsOjpyZXN0cmljdG9yKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXN0cmljdG9yOworfQorCitNZWRpYVF1ZXJ5RXhwTGlz
dEltcGwqIE1lZGlhUXVlcnlJbXBsOjpleHByZXNzaW9ucygpIGNvbnN0Cit7CisgICAgcmV0dXJu
IG1fZXhwcmVzc2lvbnM7Cit9CisKK1FTdHJpbmcgTWVkaWFRdWVyeUltcGw6Om1lZGlhVHlwZSgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbWVkaWFUeXBlLnFzdHJpbmcoKTsKK30KKworYm9vbCBN
ZWRpYVF1ZXJ5SW1wbDo6b3BlcmF0b3I9PShjb25zdCBNZWRpYVF1ZXJ5SW1wbCYgb3RoZXIpIGNv
bnN0Cit7CisgICAgLy8gWFhYOiBjYXNlIHNlbnNpdGl2ZW5lc3M/CisgICAgaWYgKG1fcmVzdHJp
Y3RvciAhPSBvdGhlci5tX3Jlc3RyaWN0b3IgfHwgbV9tZWRpYVR5cGUgIT0gb3RoZXIubV9tZWRp
YVR5cGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFFQdHJMaXN0SXRlcmF0b3I8TWVk
aWFRdWVyeUV4cEltcGw+IGV4cF9pdCgqbV9leHByZXNzaW9ucy0+bGlzdCgpKTsKKyAgICBRUHRy
TGlzdEl0ZXJhdG9yPE1lZGlhUXVlcnlFeHBJbXBsPiBvZXhwX2l0KCpvdGhlci5tX2V4cHJlc3Np
b25zLT5saXN0KCkpOworICAgIE1lZGlhUXVlcnlFeHBJbXBsKiBleHAgPSAwOworICAgIE1lZGlh
UXVlcnlFeHBJbXBsKiBvZXhwID0gMDsKKyAgICBmb3IgKGV4cCA9IGV4cF9pdC5jdXJyZW50KCks
IG9leHAgPSBvZXhwX2l0LmN1cnJlbnQoKTsgZXhwICYmIG9leHA7IGV4cCA9ICsrZXhwX2l0LCBv
ZXhwID0gKytvZXhwX2l0KSB7CisgICAgICAgIGlmICghKCpleHAgPT0gKm9leHApICkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gKCFleHAgJiYgIW9leHAp
OworfQpJbmRleDogV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9jc3NwYXJzZXIuY3BwCShyZXZpc2lvbiAxMjU0NCkKKysrIFdlYkNvcmUvY3NzL2Nz
c3BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJj
c3NfdmFsdWVpbXBsLmgiCiAjaW5jbHVkZSAiY3NzX3J1bGVpbXBsLmgiCiAjaW5jbHVkZSAiY3Nz
X3N0eWxlc2hlZXRpbXBsLmgiCisjaW5jbHVkZSAiY3NzX21lZGlhcXVlcnlpbXBsLmgiCiAjaW5j
bHVkZSAiY3NzcHJvcGVydGllcy5oIgogI2luY2x1ZGUgImNzc3ZhbHVlcy5oIgogI2luY2x1ZGUg
ImhlbHBlci5oIgpAQCAtMjk4LDYgKzI5OSwzMCBAQCBib29sIENTU1BhcnNlcjo6cGFyc2VEZWNs
YXJhdGlvbiggQ1NTTXV0CiAgICAgcmV0dXJuIG9rOwogfQogCitib29sIENTU1BhcnNlcjo6cGFy
c2VNZWRpYVF1ZXJ5KCBET006Ok1lZGlhTGlzdEltcGwgKnF1ZXJpZXMsIGNvbnN0IERPTTo6RE9N
U3RyaW5nICZzdHJpbmcgKQoreyAgICAKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSB8fCBzdHJp
bmcuaXNOdWxsKCkpIHsKKwkJcmV0dXJuIHRydWU7CisgICAgfQorICAgIG1lZGlhUXVlcnkgPSAw
OworICAgIC8vIGNhbid0IHVzZSB7IGJlY2F1c2UgdG9rZW5pemVyIHN0YXRlIHN3aXRjaGVzIGZy
b20gbWVkaWFxdWVyeSB0byBpbml0aWFsIHN0YXRlIHdoZW4gaXQgc2VlcyB7IHRva2VuLgorICAg
IC8vIGluc3RlYWQgaW5zZXJ0IG9uZSAiICIgKHdoaWNoIGlzIFdISVRFU1BBQ0UgaW4gcGFyc2Vy
LnkpCisgICAgc2V0dXBQYXJzZXIgKCJALWtodG1sLW1lZGlhcXVlcnkgIiwgc3RyaW5nLCAifSAi
KTsKKyAgICAKKyAgICBDU1NQYXJzZXIgKm9sZCA9IGN1cnJlbnRQYXJzZXI7CisgICAgY3VycmVu
dFBhcnNlciA9IHRoaXM7CisgICAgY3NzeXlwYXJzZSggdGhpcyApOworICAgIGN1cnJlbnRQYXJz
ZXIgPSBvbGQ7CisgICAgCisgICAgYm9vbCBvayA9IGZhbHNlOworICAgIGlmIChtZWRpYVF1ZXJ5
KSB7CisgICAgCW9rID0gdHJ1ZTsKKyAgICAJcXVlcmllcy0+YXBwZW5kTWVkaWFRdWVyeShtZWRp
YVF1ZXJ5KTsKKyAgICAgICAgbWVkaWFRdWVyeSA9IDA7CisgICAgfQorICAgIAorICAgIHJldHVy
biBvazsKK30KIAogdm9pZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5KGludCBwcm9wSWQsIENTU1Zh
bHVlSW1wbCAqdmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewpAQCAtMjgzNyw2ICsyODYyLDcgQEAg
dHlwZWRlZiB1bnNpZ25lZCBpbnQgWVlfQ0hBUjsKICNkZWZpbmUgWVlfU1RBVEVfRU9GKHN0YXRl
KSAoWVlfRU5EX09GX0JVRkZFUiArIHN0YXRlICsgMSkKICNkZWZpbmUgeXl0ZXJtaW5hdGUoKSB5
eVRvayA9IEVORF9UT0tFTjsgcmV0dXJuIHl5VG9rCiAjZGVmaW5lIFlZX0ZBVEFMX0VSUk9SKGEp
CisjZGVmaW5lIEJFR0lOIHl5X3N0YXJ0ID0gMSArIDIgKgogCiAjaW5jbHVkZSAidG9rZW5pemVy
LmNwcCIKIApJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaAkocmV2aXNpb24gMTI1NDQpCisrKyBX
ZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTQwLDYgKzQw
LDcgQEAgY2xhc3MgQ1NTUnVsZVNldDsKIGNsYXNzIENTU1NlbGVjdG9yOwogY2xhc3MgQ1NTU3R5
bGVTaGVldEltcGw7CiBjbGFzcyBDU1NWYWx1ZUltcGw7CitjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVh
dG9yOwogY2xhc3MgRG9jdW1lbnRJbXBsOwogY2xhc3MgRWxlbWVudEltcGw7CiBjbGFzcyBGcmFt
ZTsKQEAgLTE3NCw2ICsxNzUsNyBAQCBwdWJsaWM6CiAgCiAgICAgcHJpdmF0ZToKICAgICAgICAg
dm9pZCBpbml0KCk7CisgICAgICAgIFJlbmRlclN0eWxlICpkZWZhdWx0U3R5bGVGb3JSb290KERP
TTo6RWxlbWVudEltcGwqIGUpOwogICAgICAgICAKICAgICAgICAgdm9pZCBtYXBCYWNrZ3JvdW5k
QXR0YWNobWVudChCYWNrZ3JvdW5kTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZUltcGwqIHZhbHVlKTsK
ICAgICAgICAgdm9pZCBtYXBCYWNrZ3JvdW5kQ2xpcChCYWNrZ3JvdW5kTGF5ZXIqIGxheWVyLCBD
U1NWYWx1ZUltcGwqIHZhbHVlKTsKQEAgLTE5OSw4ICsyMDEsMTAgQEAgcHVibGljOgogICAgICAg
ICBDU1NSdWxlTGlzdEltcGwqIG1fcnVsZUxpc3Q7CiAgICAgICAgIGJvb2wgbV9jb2xsZWN0UnVs
ZXNPbmx5OwogCi0gICAgICAgIFFTdHJpbmcgbV9tZWRpdW07Ci0KKyAgICAgICAgRE9NOjpNZWRp
YVF1ZXJ5RXZhbHVhdG9yKiBtX21lZGl1bTsKKyAgICAgICAgUmVuZGVyU3R5bGUqIG1fcm9vdERl
ZmF1bHRTdHlsZTsKKyAgICAgICAgYm9vbCBtX3Jlc29sdmluZ0ZvclJvb3REZWZhdWx0U3R5bGU7
CisJCQogICAgICAgICBSZW5kZXJTdHlsZTo6UHNldWRvSWQgZHluYW1pY1BzZXVkbzsKICAgICAg
ICAgCiAgICAgICAgIFJlbmRlclN0eWxlICpzdHlsZTsKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc19t
ZWRpYXF1ZXJ5ZXZhbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3NzX21lZGlhcXVl
cnlldmFsLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL2Nzc19tZWRpYXF1ZXJ5ZXZh
bC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQwIEBACisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiY3NzX21lZGlhcXVlcnlldmFsLmgiCisjaW5jbHVkZSAiY3NzX3N0eWxlc2hl
ZXRpbXBsLmgiCisjaW5jbHVkZSAiY3NzbWVkaWFmZWF0dXJlcy5oIgorI2luY2x1ZGUgImNzc192
YWx1ZWltcGwuaCIKKyNpbmNsdWRlICJyZW5kZXJpbmcvcmVuZGVyX3N0eWxlLmgiCisjaW5jbHVk
ZSAicGFnZS9GcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJTY3JlZW4uaCIKKworCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBET007CisKK01lZGlhUXVlcnlFdmFsdWF0
b3I6OiBNZWRpYVF1ZXJ5RXZhbHVhdG9yKGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0KQorICAgIDog
bV92aWV3KDApCisgICAgLCBtX3N0eWxlKDApCisgICAgLCBtX2V4cFJlc3VsdChtZWRpYUZlYXR1
cmVSZXN1bHQpCit7Cit9CisKK01lZGlhUXVlcnlFdmFsdWF0b3I6OiBNZWRpYVF1ZXJ5RXZhbHVh
dG9yKGNvbnN0IFFTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBlLCBib29sIG1lZGlhRmVhdHVyZVJl
c3VsdCkKKyAgICA6IG1fbWVkaWFUeXBlKGFjY2VwdGVkTWVkaWFUeXBlKQorICAgICwgbV92aWV3
KDApCisgICAgLCBtX3N0eWxlKDApCisgICAgLCBtX2V4cFJlc3VsdChtZWRpYUZlYXR1cmVSZXN1
bHQpCit7Cit9CisKK01lZGlhUXVlcnlFdmFsdWF0b3I6OiBNZWRpYVF1ZXJ5RXZhbHVhdG9yKGNv
bnN0IFFTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBlLCBGcmFtZVZpZXcqIHZpZXcsIFJlbmRlclN0
eWxlKiBzdHlsZSkKKyAgICA6IG1fbWVkaWFUeXBlKGFjY2VwdGVkTWVkaWFUeXBlLmxvd2VyKCkp
CisgICAgLCBtX3ZpZXcodmlldykKKyAgICAsIG1fc3R5bGUoc3R5bGUpCisgICAgLCBtX2V4cFJl
c3VsdChmYWxzZSkgLy8gZG9lc24ndCBtYXR0ZXIKK3sKK30KKworTWVkaWFRdWVyeUV2YWx1YXRv
cjo6fk1lZGlhUXVlcnlFdmFsdWF0b3IoKQoreworfQorCitib29sIE1lZGlhUXVlcnlFdmFsdWF0
b3I6Om1lZGlhVHlwZU1hdGNoKGNvbnN0IFFTdHJpbmcmIG1lZGlhVHlwZVRvTWF0Y2gpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1lZGlhVHlwZVRvTWF0Y2guaXNOdWxsKCkKKyAgICAgICAgfHwgbWVk
aWFUeXBlVG9NYXRjaC5pc0VtcHR5KCkKKyAgICAgICAgfHwgKG1lZGlhVHlwZVRvTWF0Y2guc3Rh
cnRzV2l0aCgiYWxsIiwgZmFsc2UpICYmIG1lZGlhVHlwZVRvTWF0Y2gubGVuZ3RoKCkgPT0gMykK
KyAgICAgICAgfHwgbWVkaWFUeXBlVG9NYXRjaC5sb3dlcigpID09IG1fbWVkaWFUeXBlOworfQor
CitzdGF0aWMgYm9vbCBhcHBseVJlc3RyaWN0b3IoTWVkaWFRdWVyeUltcGw6OlJlc3RyaWN0b3Ig
ciwgYm9vbCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gciA9PSBNZWRpYVF1ZXJ5SW1wbDo6Tm90ID8g
IXZhbHVlIDogdmFsdWU7Cit9CisKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChjb25z
dCBNZWRpYUxpc3RJbXBsKiBtZWRpYUxpc3QpIGNvbnN0Cit7CisgICAgaWYgKCFtZWRpYUxpc3Qp
CisJCXJldHVybiB0cnVlOworCisgICAgUVB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5SW1wbD4g
aXQoKm1lZGlhTGlzdC0+bWVkaWFRdWVyaWVzKCkpOworICAgIGlmICghaXQuY3VycmVudCgpKQor
ICAgIAlyZXR1cm4gdHJ1ZTsgLy8gZW1wdHkgcXVlcnkgbGlzdCBldmFsdWF0ZXMgdG8gdHJ1ZQor
CisgICAgLy8gaXRlcmF0ZSBvdmVyIHF1ZXJpZXMsIHN0b3AgaWYgYW55IG9mIHRoZW0gZXZhbCB0
byB0cnVlIChPUiBzZW1hbnRpY3MpCisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBmb3Ig
KE1lZGlhUXVlcnlJbXBsKiBxdWVyeSA9IGl0LmN1cnJlbnQoKTsgcXVlcnkgJiYgKHJlc3VsdD09
ZmFsc2UpOyBxdWVyeSA9ICsraXQpIHsKKworICAgICAgICBpZiAobWVkaWFUeXBlTWF0Y2gocXVl
cnktPm1lZGlhVHlwZSgpKSkgeworICAgICAgICAgICAgUVB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1
ZXJ5RXhwSW1wbD4gZXhwX2l0KCpxdWVyeS0+ZXhwcmVzc2lvbnMoKS0+bGlzdCgpKTsKKyAgICAg
ICAgICAgIC8vIGl0ZXJhdGUgdGhyb3VnaCBleHByZXNzaW9ucywgc3RvcCBpZiBhbnkgb2YgdGhl
bSBldmFsIHRvIGZhbHNlIChBTkQgc2VtYW50aWNzKQorICAgICAgICAgICAgTWVkaWFRdWVyeUV4
cEltcGwqIGV4cCA9IDA7CisgICAgICAgICAgICBmb3IgKGV4cCA9IGV4cF9pdC5jdXJyZW50KCk7
IGV4cCAmJiBldmFsKGV4cCk7IGV4cCA9ICsrZXhwX2l0KSAvKiBlbXB0eSovOworCisgICAgICAg
ICAgICAvLyBhc3N1bWUgdHJ1ZSBpZiB3ZSBhcmUgYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCwgb3Ro
ZXJ3aXNlIGFzc3VtZSBmYWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gYXBwbHlSZXN0cmljdG9y
KHF1ZXJ5LT5yZXN0cmljdG9yKCksICFleHApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgcmVzdWx0ID0gYXBwbHlSZXN0cmljdG9yKHF1ZXJ5LT5yZXN0cmljdG9yKCksIGZhbHNlKTsK
KwkJfQorICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgYm9vbCBwYXJzZUFz
cGVjdFJhdGlvKENTU1ZhbHVlSW1wbCogdmFsdWUsIGludCogYSwgaW50KiBiKQoreworICAgIGlm
ICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSApeworICAgICAgICBDU1NWYWx1ZUxpc3RJbXBsKiB2YWx1
ZUxpc3QgPSBzdGF0aWNfY2FzdDxDU1NWYWx1ZUxpc3RJbXBsKj4odmFsdWUpOworICAgICAgICBp
ZiAodmFsdWVMaXN0LT5sZW5ndGgoKSA9PSAzICkgeworICAgICAgICAgICAgQ1NTVmFsdWVJbXBs
KiBpMCA9IHZhbHVlTGlzdC0+aXRlbSgwKTsKKyAgICAgICAgICAgIENTU1ZhbHVlSW1wbCogaTEg
PSB2YWx1ZUxpc3QtPml0ZW0oMSk7CisgICAgICAgICAgICBDU1NWYWx1ZUltcGwqIGkyID0gdmFs
dWVMaXN0LT5pdGVtKDIpOworICAgICAgICAgICAgaWYgKGkwLT5pc1ByaW1pdGl2ZVZhbHVlKCkg
JiYgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWVJbXBsKj4oaTApLT5wcmltaXRpdmVUeXBl
KCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIKKyAgICAgICAgICAgICAgICAmJiBp
MS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlSW1w
bCo+KGkxKS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5H
CisgICAgICAgICAgICAgICAgJiYgaTItPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2Fz
dDxDU1NQcmltaXRpdmVWYWx1ZUltcGwqPihpMiktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgeworICAgICAgICAgICAgICAgIERPTVN0cmluZyBzdHIg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZUltcGwqPihpMSktPmdldFN0cmluZ1ZhbHVl
KCk7CisgICAgICAgICAgICAgICAgaWYgKCFzdHIuaXNOdWxsKCkgJiYgc3RyLmxlbmd0aCgpID09
IDEgJiYgc3RyWzBdID09IFFDaGFyKCcvJykpIHsKKyAgICAgICAgICAgICAgICAgICAgKmEgPSAo
aW50KSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZUltcGwqPihpMCktPmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICAgICAgICAgICAgICAq
YiA9IChpbnQpIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlSW1wbCo+KGkyKS0+Z2V0Rmxv
YXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1
YXRvcjo6ZXZhbChjb25zdCBNZWRpYVF1ZXJ5RXhwSW1wbCogZXhwcikgY29uc3QKK3sKKyAgICBp
ZiAoIW1fdmlldyB8fCAhbV9zdHlsZSkKKyAgICAgICAgcmV0dXJuIG1fZXhwUmVzdWx0OworICAg
IENTU1ZhbHVlSW1wbCogdmFsdWUgPSBleHByLT52YWx1ZSgpOworICAgIENTU1ByaW1pdGl2ZVZh
bHVlSW1wbCogcHJpbWl0aXZlID0gMDsKKworICAgIGJvb2wgaXNOdW1iZXJWYWx1ZSA9IGZhbHNl
OworICAgIGRvdWJsZSBudW1iZXJWYWx1ZSA9IC0xOworICAgIGludCBwcmltaXRpdmVMZW5ndGgg
PSAtMTsKKworICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKSB7Cisg
ICAgICAgIHByaW1pdGl2ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlSW1wbCo+KHZh
bHVlKTsKKyAgICAgICAgcHJpbWl0aXZlTGVuZ3RoID0gcHJpbWl0aXZlLT5jb21wdXRlTGVuZ3Ro
KG1fc3R5bGUpOworICAgICAgICBpZiAocHJpbWl0aXZlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKKyAgICAgICAgICAgIGlzTnVtYmVyVmFsdWUg
PSB0cnVlOworICAgICAgICAgICAgbnVtYmVyVmFsdWUgPSBwcmltaXRpdmUtPmdldEZsb2F0VmFs
dWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOworICAgICAgICB9CisgICAgfQorCisg
ICAgc3dpdGNoIChleHByLT5tZWRpYUZlYXR1cmUoKSkgeworCisgICAgICAgIGNhc2UgQ1NTX01F
RElBX0ZFQVRfTU9OT0NIUk9NRToKKyAgICAgICAgICAgIGlmICghc2NyZWVuSXNNb25vY2hyb21l
KG1fdmlldykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgLyog
ZmFsbCB0aHJvdWdoKi8KKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9DT0xPUjogeworICAg
ICAgICAgICAgaW50IGJpdHNQZXJDb21wb25lbnQgPSBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCht
X3ZpZXcpOworICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiAo
aXNOdW1iZXJWYWx1ZSAmJiBiaXRzUGVyQ29tcG9uZW50ID09IChpbnQpbnVtYmVyVmFsdWUpOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBiaXRzUGVyQ29tcG9uZW50
ICE9IDA7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9NT05P
Q0hST01FOiAKKyAgICAgICAgICAgIGlmICghc2NyZWVuSXNNb25vY2hyb21lKG1fdmlldykpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgLyogZmFsbCB0aHJvdWdo
ICovCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUlOX0NPTE9SOiB7CisgICAgICAgICAg
ICBpbnQgYml0c1BlckNvbXBvbmVudCA9IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KG1fdmlldyk7
CisgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIChpc051bWJl
clZhbHVlICYmIGJpdHNQZXJDb21wb25lbnQgPj0gKGludCludW1iZXJWYWx1ZSk7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGJpdHNQZXJDb21wb25lbnQgIT0gMDsK
KyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUFYX01PTk9DSFJPTUU6
IAorICAgICAgICAgICAgaWYgKCFzY3JlZW5Jc01vbm9jaHJvbWUobV92aWV3KSkKKyAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggKi8KKyAg
ICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NQVhfQ09MT1I6IHsKKyAgICAgICAgICAgIGludCBi
aXRzUGVyQ29tcG9uZW50ID0gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQobV92aWV3KTsKKyAgICAg
ICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gKGlzTnVtYmVyVmFsdWUg
JiYgYml0c1BlckNvbXBvbmVudCA8PSAoaW50KW51bWJlclZhbHVlKTsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICByZXR1cm4gYml0c1BlckNvbXBvbmVudCAhPSAwOworICAgICAg
ICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9DT0xPUl9JTkRFWDoKKyAgICAgICAg
Y2FzZSBDU1NfTUVESUFfRkVBVF9NSU5fQ09MT1JfSU5ERVg6CisgICAgICAgIGNhc2UgQ1NTX01F
RElBX0ZFQVRfTUFYX0NPTE9SX0lOREVYOgorICAgICAgICAgICAgLy8vIFhYWDogaG93IHRvIGdl
dCBkaXNwbGF5IG1vZGUgZnJvbSBLV1E/CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIENTU19NRURJQV9GRUFUX0RFVklDRV9BU1BFQ1RfUkFUSU86IHsKKyAgICAgICAgICAgIGlm
ICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIEludFJlY3Qgc2cgPSBzY3JlZW5SZWN0KG1fdmll
dyk7CisgICAgICAgICAgICAgICAgaW50IGE7CisgICAgICAgICAgICAgICAgaW50IGI7CisgICAg
ICAgICAgICAgICAgaWYgKHBhcnNlQXNwZWN0UmF0aW8odmFsdWUsICZhLCAmYikpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoYiE9MCkgJiYgKGEqc2cuaGVpZ2h0KCkgPT0gYipzZy53aWR0
aCgpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gKGRldmljZS1h
c3BlY3QtcmF0aW8pLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgaXRzIGFzcGVjdCByYXRp
byBpcyBub24temVybworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NSU5fREVWSUNFX0FT
UEVDVF9SQVRJTzogeworICAgICAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAg
SW50UmVjdCBzZyA9IHNjcmVlblJlY3QobV92aWV3KTsKKyAgICAgICAgICAgICAgICBpbnQgYTsK
KyAgICAgICAgICAgICAgICBpbnQgYjsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VBc3BlY3RS
YXRpbyh2YWx1ZSwgJmEsICZiKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChiIT0wKSAm
JiAoKChkb3VibGUpc2cud2lkdGgoKS9zZy5oZWlnaHQoKSkgPj0gKChkb3VibGUpYS9iKSk7Cisg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIChtaW4tZGV2aWNlLWFzcGVj
dC1yYXRpbyksIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBpdHMgYXNwZWN0IHJhdGlvIGlz
IG5vbi16ZXJvCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01BWF9ERVZJQ0VfQVNQRUNU
X1JBVElPOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBJbnRS
ZWN0IHNnID0gc2NyZWVuUmVjdChtX3ZpZXcpOworICAgICAgICAgICAgICAgIGludCBhOworICAg
ICAgICAgICAgICAgIGludCBiOworICAgICAgICAgICAgICAgIGlmIChwYXJzZUFzcGVjdFJhdGlv
KHZhbHVlLCAmYSwgJmIpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKGIhPTApICYmICgo
KGRvdWJsZSlzZy53aWR0aCgpL3NnLmhlaWdodCgpKSA8PSAoKGRvdWJsZSlhL2IpKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gKG1heC1kZXZpY2UtYXNwZWN0LXJh
dGlvKSwgYXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGl0cyBhc3BlY3QgcmF0aW8gaXMgbm9u
LXplcm8KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfREVWSUNFX0hFSUdIVDogeworICAg
ICAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCBzZyA9IHNjcmVl
blJlY3QobV92aWV3KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHByaW1pdGl2ZSAmJiBzZy5o
ZWlnaHQoKSA9PSBwcmltaXRpdmVMZW5ndGgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAg
ICAgICAgICAgICAvLyAoZGV2aWNlLWhlaWdodCksIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNl
LCBhc3N1bWUgbm9uLXplcm8KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUlOX0RFVklD
RV9IRUlHSFQ6IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIElu
dFJlY3Qgc2cgPSBzY3JlZW5SZWN0KG1fdmlldyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChw
cmltaXRpdmUgJiYgc2cuaGVpZ2h0KCkgPj0gcHJpbWl0aXZlTGVuZ3RoKTsKKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gKG1pbi1kZXZpY2UtaGVpZ2h0KSwgYXNzdW1l
IGlmIHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybworICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1Nf
TUVESUFfRkVBVF9NQVhfREVWSUNFX0hFSUdIVDogeworICAgICAgICAgICAgaWYgKHZhbHVlKSB7
CisgICAgICAgICAgICAgICAgSW50UmVjdCBzZyA9IHNjcmVlblJlY3QobV92aWV3KTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gKHByaW1pdGl2ZSAmJiBzZy5oZWlnaHQoKSA8PSBwcmltaXRpdmVM
ZW5ndGgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyAobWF4LWRl
dmljZS1oZWlnaHQpLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgYXNzdW1lIG5vbi16ZXJv
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX0RFVklDRV9XSURUSDogeworICAgICAgICAg
ICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCBzZyA9IHNjcmVlblJlY3Qo
bV92aWV3KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHByaW1pdGl2ZSAmJiBzZy53aWR0aCgp
ID09IHByaW1pdGl2ZUxlbmd0aCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIC8vIChkZXZpY2Utd2lkdGgpLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgYXNzdW1l
IG5vbi16ZXJvCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9ERVZJQ0VfV0lEVEg6
IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIEludFJlY3Qgc2cg
PSBzY3JlZW5SZWN0KG1fdmlldyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIChwcmltaXRpdmUg
JiYgc2cud2lkdGgoKSA+PSBwcmltaXRpdmVMZW5ndGgpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICAvLyAobWluLWRldmljZS13aWR0aCksIGFzc3VtZSBpZiB3ZSBoYXZl
IGEgZGV2aWNlLCBhc3N1bWUgbm9uLXplcm8KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRf
TUFYX0RFVklDRV9XSURUSDogeworICAgICAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgSW50UmVjdCBzZyA9IHNjcmVlblJlY3QobV92aWV3KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gKHByaW1pdGl2ZSAmJiBzZy53aWR0aCgpIDw9IHByaW1pdGl2ZUxlbmd0aCk7CisgICAg
ICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIChtYXgtZGV2aWNlLXdpZHRoKSwg
YXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybworICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2Fz
ZSBDU1NfTUVESUFfRkVBVF9HUklEOiB7CisgICAgICAgICAgICAvLyBpZiBvdXRwdXQgZGV2aWNl
IGlzIGJpdG1hcCwgZ3JpZDogMCA9PSB0cnVlCisgICAgICAgICAgICBpZiAodmFsdWUpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIChpc051bWJlclZhbHVlICYmICAoaW50KW51bWJlclZhbHVlID09
IDAgKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX0hFSUdIVDogeworICAgICAg
ICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBwcmltaXRpdmUgJiYgbV92
aWV3LT52aXNpYmxlSGVpZ2h0KCkgPT0gcHJpbWl0aXZlTGVuZ3RoOworICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgIHJldHVybiBtX3ZpZXctPnZpc2libGVIZWlnaHQoKSAhPSAwOwor
ICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NSU5fSEVJR0hUOiB7Cisg
ICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZSAm
JiBtX3ZpZXctPnZpc2libGVIZWlnaHQoKSA+PSBwcmltaXRpdmVMZW5ndGg7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdmlldy0+dmlzaWJsZUhlaWdodCgpICE9
IDA7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01BWF9IRUlHSFQ6
IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gKHByaW1p
dGl2ZSAmJiBtX3ZpZXctPnZpc2libGVIZWlnaHQoKSA8PSBwcmltaXRpdmVMZW5ndGgpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiAobV92aWV3LT52aXNpYmxlSGVp
Z2h0KCkgIT0gMCk7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX1dJ
RFRIOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHBy
aW1pdGl2ZSAmJiBtX3ZpZXctPnZpc2libGVXaWR0aCgpID09IHByaW1pdGl2ZUxlbmd0aDsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92aWV3LT52aXNpYmxlV2lk
dGgoKSAhPSAwOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9NSU5f
V0lEVEg6IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
cHJpbWl0aXZlICYmIG1fdmlldy0+dmlzaWJsZVdpZHRoKCkgPj0gcHJpbWl0aXZlTGVuZ3RoOwor
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBtX3ZpZXctPnZpc2libGVX
aWR0aCgpICE9IDA7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01B
WF9XSURUSDp7CisgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHByaW1pdGl2ZSAmJiBtX3ZpZXctPnZpc2libGVXaWR0aCgpIDw9IHByaW1pdGl2ZUxlbmd0aDsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92aWV3LT52aXNpYmxl
V2lkdGgoKSAhPSAwOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9S
RVNPTFVUSU9OOgorICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9SRVNPTFVUSU9OOgor
ICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01BWF9SRVNPTFVUSU9OOgorICAgICAgICAgICAg
Ly9YWFg6IENTU19ESU1FTlNJT04gZG9lc24ndCBzZWVtIHRvIGJlIHN1cHBvcnRlZCBieSBLSFRN
TAorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9TQ0FO
OgorICAgICAgICAgICAgLy8gc2NhbiBhcHBsaWVzIHRvIHR2IG1lZGlhIHR5cGVzCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9JTlZBTElE
OgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQpJbmRleDogV2ViQ29yZS9jc3MvY3NzX3N0eWxlc2hlZXRpbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3NzX3N0eWxlc2hlZXRpbXBsLmgJKHJldmlzaW9uIDEy
NTQ0KQorKysgV2ViQ29yZS9jc3MvY3NzX3N0eWxlc2hlZXRpbXBsLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI5LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgImRvbS9kb21fc3RyaW5nLmgiCiAjaW5jbHVk
ZSAiY3NzL2Nzc19iYXNlLmgiCisjaW5jbHVkZSAiY3NzL2Nzc19tZWRpYXF1ZXJ5aW1wbC5oIgog
CiBuYW1lc3BhY2Uga2h0bWwgewogICAgIGNsYXNzIENhY2hlZENTU1N0eWxlU2hlZXQ7CkBAIC0x
NjEsMjYgKzE2MiwyMyBAQCBwdWJsaWM6CiAKICAgICBDU1NTdHlsZVNoZWV0SW1wbCAqcGFyZW50
U3R5bGVTaGVldCgpIGNvbnN0OwogICAgIENTU1J1bGVJbXBsICpwYXJlbnRSdWxlKCkgY29uc3Q7
Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sc3RNZWRpYS5jb3VudCgp
OyB9Ci0gICAgRE9NOjpET01TdHJpbmcgaXRlbSAoIHVuc2lnbmVkIGluZGV4ICkgY29uc3QgeyBy
ZXR1cm4gbV9sc3RNZWRpYVtpbmRleF07IH0KKyAgICB1bnNpZ25lZCBsb25nIGxlbmd0aCgpIGNv
bnN0IHsgcmV0dXJuIG1fbHN0UXVlcmllcy5jb3VudCgpOyB9CisgICAgRE9NOjpET01TdHJpbmcg
aXRlbSAoIHVuc2lnbmVkIGxvbmcgaW5kZXggKSBjb25zdDsKICAgICB2b2lkIGRlbGV0ZU1lZGl1
bSAoIGNvbnN0IERPTTo6RE9NU3RyaW5nICZvbGRNZWRpdW0gKTsKLSAgICB2b2lkIGFwcGVuZE1l
ZGl1bSAoIGNvbnN0IERPTTo6RE9NU3RyaW5nICZuZXdNZWRpdW0gKSB7IG1fbHN0TWVkaWEuYXBw
ZW5kKG5ld01lZGl1bSk7IH0KKyAgICB2b2lkIGFwcGVuZE1lZGl1bSAoIGNvbnN0IERPTTo6RE9N
U3RyaW5nICZuZXdNZWRpdW0gKTsKIAogICAgIERPTTo6RE9NU3RyaW5nIG1lZGlhVGV4dCgpIGNv
bnN0OwogICAgIHZvaWQgc2V0TWVkaWFUZXh0KGNvbnN0IERPTTo6RE9NU3RyaW5nICZ2YWx1ZSk7
CiAKICAgICAvKioKLSAgICAgKiBDaGVjayBpZiB0aGUgbGlzdCBjb250YWlucyBlaXRoZXIgdGhl
IHJlcXVlc3RlZCBtZWRpdW0sIG9yIHRoZQotICAgICAqIGNhdGNoLWFsbCAiYWxsIiBtZWRpYSB0
eXBlLiBSZXR1cm5zIHRydWUgd2hlbiBmb3VuZCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgICAqIFNp
bmNlIG5vdCBzcGVjaWZ5aW5nIG1lZGlhIHR5cGVzIHNob3VsZCBiZSB0cmVhdGVkIGFzICJhbGwi
IGFjY29yZGluZwotICAgICAqIHRvIERPTSBzcGVjcywgYW4gZW1wdHkgbGlzdCBhbHdheXMgcmV0
dXJucyB0cnVlLgotICAgICAqCiAgICAgICogX05PVF8gcGFydCBvZiB0aGUgRE9NIQogICAgICAq
LwotICAgIGJvb2wgY29udGFpbnMoIGNvbnN0IERPTTo6RE9NU3RyaW5nICZtZWRpdW0gKSBjb25z
dDsKKyAgICB2b2lkIGFwcGVuZE1lZGlhUXVlcnkoTWVkaWFRdWVyeUltcGwqIG1lZGlhUXVlcnkp
OworICAgIGNvbnN0IFFQdHJMaXN0PE1lZGlhUXVlcnlJbXBsPiogbWVkaWFRdWVyaWVzKCkgY29u
c3QgeyByZXR1cm4gJm1fbHN0UXVlcmllczsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgUVZhbHVlTGlz
dDxET006OkRPTVN0cmluZz4gbV9sc3RNZWRpYTsKKyAgICBRUHRyTGlzdDxNZWRpYVF1ZXJ5SW1w
bD4gbV9sc3RRdWVyaWVzOworICAgIERPTTo6RE9NU3RyaW5nIG1fbWVkaWFUZXh0OyAgICAKIH07
CiAKIApJbmRleDogV2ViQ29yZS9jc3MvbWFrZW1lZGlhZmVhdHVyZXMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvbWFrZW1lZGlhZmVhdHVyZXMJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nz
cy9tYWtlbWVkaWFmZWF0dXJlcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorIyAgIFRo
aXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBLREUgbGlicmFyaWVzCisjCisjICAgQ29weXJpZ2h0IChD
KSAxOTk5IFdhbGRvIEJhc3RpYW4gKGJhc3RpYW5Aa2RlLm9yZykKKyMKKyMgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyMgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyMgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1
dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjICAgYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgICBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorIyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRh
aWxzLgorIworIyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworIyAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz
MCwKKyMgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyMKKyMtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCisjCisjICBLREUgSFRNTCBXaWRnZXQgLS0gU2NyaXB0IHRvIGdlbmVyYXRlIGNzc21lZGlh
ZmVhdHVyZXMuYyBhbmQgY3NzbWVkaWFmZWF0dXJlcy5oCisjCitncmVwICJeW15cI10iIGNzc21l
ZGlhZmVhdHVyZXMuaW4gPiBjc3NtZWRpYWZlYXR1cmVzLnN0cmlwCisKK2VjaG8gLWUgJyV7XG4v
KiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgZnJvbSBjc3NtZWRpYWZlYXR1
cmVzLmluIGJ5IG1ha2Vwcm9wLCBkbyBub3QgZWRpdCAqL1xuLyogQ29weXJpZ2h0IDE5OTkgVy4g
QmFzdGlhbiAqL1xuI2luY2x1ZGUgImNzc21lZGlhZmVhdHVyZXMuaCJcbiV9XG5zdHJ1Y3QgY3Nz
X21lZGlhX2ZlYXR1cmVfcGFpciB7XG4gICAgY29uc3QgY2hhciAqbmFtZTtcbiAgICBpbnQgaWQ7
XG59O1xuJSUnID4gY3NzbWVkaWFmZWF0dXJlcy5ncGVyZgorY2F0IGNzc21lZGlhZmVhdHVyZXMu
c3RyaXAgfCBhd2sgJ3sgZG8geyBwcm9wID0gJDA7IGdzdWIoIi0iLCAiXyIpOyBwcmludCBwcm9w
ICIsIENTU19NRURJQV9GRUFUXyIgdG91cHBlcigkMCkgfSB3aGlsZSAoZ2V0bGluZSkgfScgPj4g
Y3NzbWVkaWFmZWF0dXJlcy5ncGVyZgorZWNobyAnJSUnID4+IGNzc21lZGlhZmVhdHVyZXMuZ3Bl
cmYKK2VjaG8gLWUgJy8qIFRoaXMgZmlsZSBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBmcm9t
IGNzc21lZGlhZmVhdHVyZXMuaW4gYnkgbWFrZXByb3AsIGRvIG5vdCBlZGl0ICovXG4vKiBDb3B5
cmlnaHQgMTk5OCBXLiBCYXN0aWFuICovXG5cbiNpZm5kZWYgQ1NTTUVESUFGRUFUVVJFU19IXG4j
ZGVmaW5lIENTU01FRElBRkVBVFVSRVNfSFxuXG5ET006OkRPTVN0cmluZyBnZXRNZWRpYUZlYXR1
cmVOYW1lKHVuc2lnbmVkIHNob3J0IGlkKTtcbicgPiBjc3NtZWRpYWZlYXR1cmVzLmgKK2NhdCBj
c3NtZWRpYWZlYXR1cmVzLnN0cmlwIHwgYXdrICd7IFwKK2k9MTsgXAorcHJpbnQgIiNkZWZpbmUg
Q1NTX01FRElBX0ZFQVRfSU5WQUxJRCAwIjsgXAorcHJpbnQgIiNkZWZpbmUgQ1NTX01FRElBX0ZF
QVRfTUlOIDEiOyBcCitkbyB7IGdzdWIoIi0iLCAiXyIpOyBwcmludCAiI2RlZmluZSBDU1NfTUVE
SUFfRkVBVF8iIHRvdXBwZXIoJDApICIgIiBpOyBpID0gaSArIDEgfSB3aGlsZSAoZ2V0bGluZSk7
IFwKK3ByaW50ICIiOyBcCitwcmludCAiI2RlZmluZSBDU1NfTUVESUFfRkVBVF9NQVggQ1NTX01F
RElBX0ZFQVRfV0lEVEgiOyBcCitwcmludCAiI2RlZmluZSBDU1NfTUVESUFfRkVBVF9UT1RBTCAi
IGkgXAorfScgPj4gY3NzbWVkaWFmZWF0dXJlcy5oCitncGVyZiAtYSAtTCAnQU5TSS1DJyAtRSAt
QyAtYyAtbyAtdCAtayAnKicgLU5maW5kTWVkaWFGZWF0dXJlIC1IaGFzaF9tZWRpYV9mZWF0IC1X
d29yZGxpc3RfbWVkaWFfZmVhdCAtRCAtcyAyIGNzc21lZGlhZmVhdHVyZXMuZ3BlcmYgPiBjc3Nt
ZWRpYWZlYXR1cmVzLmMgfHwgZXhpdCAxCitlY2hvIC1lICcjZW5kaWZcbicgPj4gY3NzbWVkaWFm
ZWF0dXJlcy5oCisKK2NhdCBjc3NtZWRpYWZlYXR1cmVzLnN0cmlwIHwgYXdrICd7IFwKK2k9MTsg
XAorcHJpbnQgInN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgbWVkaWFGZWF0dXJlTGlzdFtdID0g
eyI7IFwKK3ByaW50ICJcIlwiLCI7IFwKK2RvIHsgcHJpbnQgIlwiIiAkMCAiXCIsICI7IGkgPSBp
ICsgMSB9IHdoaWxlIChnZXRsaW5lKTsgXAorcHJpbnQgIiAgICAwIjsgXAorcHJpbnQgIn07Ijsg
XAorcHJpbnQgIkRPTVN0cmluZyBnZXRNZWRpYUZlYXR1cmVOYW1lKHVuc2lnbmVkIHNob3J0IGlk
KSI7IFwKK3ByaW50ICJ7IjsgXAorcHJpbnQgIiAgICBpZihpZCA+PSBDU1NfTUVESUFfRkVBVF9U
T1RBTCB8fCBpZCA9PSAwKSI7IFwKK3ByaW50ICIgICAgICByZXR1cm4gRE9NU3RyaW5nKCk7Ijtc
CitwcmludCAiICAgIGVsc2UiO1wKK3ByaW50ICIgICAgICByZXR1cm4gRE9NU3RyaW5nKG1lZGlh
RmVhdHVyZUxpc3RbaWRdKTsiOyBcCitwcmludCAifTsiOyBcCitwcmludCAiIjsgXAorfScgPj4g
Y3NzbWVkaWFmZWF0dXJlcy5jCkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NoZWxwZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NoZWxwZXIuaAkocmV2aXNpb24gMTI1NDQpCisrKyBXZWJD
b3JlL2Nzcy9jc3NoZWxwZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNyArMjcsNiBAQAogCiAj
aW5jbHVkZSAiZG9tL2RvbV9zdHJpbmcuaCIKIAotY2xhc3MgUVBhaW50RGV2aWNlTWV0cmljczsK
IGNsYXNzIEtIVE1MU2V0dGluZ3M7CiAKIG5hbWVzcGFjZSBET00KSW5kZXg6IFdlYkNvcmUvY3Nz
L2Nzc19tZWRpYXF1ZXJ5aW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc19tZWRp
YXF1ZXJ5aW1wbC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvY3NzX21lZGlhcXVlcnlp
bXBsLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjkgQEAKKyNpZm5kZWYgQ1NTX2Nzc19tZWRp
YXF1ZXJ5aW1wbF9oCisjZGVmaW5lIENTU19jc3NfbWVkaWFxdWVyeWltcGxfaAorCisjaW5jbHVk
ZSA8cXZhbHVlbGlzdC5oPgorI2luY2x1ZGUgPHFwdHJsaXN0Lmg+CisKKyNpbmNsdWRlICJkb20v
ZG9tX3N0cmluZy5oIgorI2luY2x1ZGUgImNzcy9jc3NfYmFzZS5oIgorI2luY2x1ZGUgImNzcy9j
c3NfdmFsdWVpbXBsLmgiCituYW1lc3BhY2UgRE9NIHsKK2NsYXNzIFZhbHVlTGlzdDsKK2NsYXNz
IENTU1ByaW1pdGl2ZVZhbHVlOworCitjbGFzcyBNZWRpYVF1ZXJ5RXhwSW1wbCB7CitwdWJsaWM6
CisgICAgTWVkaWFRdWVyeUV4cEltcGwoaW50IG1lZGlhRmVhdHVyZUlkLCBWYWx1ZUxpc3QqIHZh
bHVlcyk7CisgICAgfk1lZGlhUXVlcnlFeHBJbXBsKCk7CisKKyAgICBpbnQgbWVkaWFGZWF0dXJl
KCkgY29uc3Q7CisgICAgQ1NTVmFsdWVJbXBsKiB2YWx1ZSgpIGNvbnN0OworCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnlFeHBJbXBsJiBvdGhlcikgY29uc3QgIHsKKyAgICAg
ICAgcmV0dXJuIChvdGhlci5tX21lZGlhRmVhdHVyZUlkID09IG1fbWVkaWFGZWF0dXJlSWQpCisg
ICAgICAgICAgICAmJiAoKCFvdGhlci5tX3ZhbHVlICYmICFtX3ZhbHVlKQorICAgICAgICAgICAg
ICAgIHx8IChvdGhlci5tX3ZhbHVlICYmIG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+Y3NzVGV4
dCgpID09IG1fdmFsdWUtPmNzc1RleHQoKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQg
bV9tZWRpYUZlYXR1cmVJZDsKKyAgICBDU1NWYWx1ZUltcGwqIG1fdmFsdWU7Cit9OworCitjbGFz
cyBNZWRpYVF1ZXJ5RXhwTGlzdEltcGwKK3sKK3B1YmxpYzoKKyAgICBNZWRpYVF1ZXJ5RXhwTGlz
dEltcGwoKSB7IGV4cHMuc2V0QXV0b0RlbGV0ZSh0cnVlKTsgfQorCisgICAgdm9pZCBhcHBlbmQo
TWVkaWFRdWVyeUV4cEltcGwqIG5ld0V4cCkgeyBleHBzLmFwcGVuZChuZXdFeHApOyB9CisgICAg
Y29uc3QgUVB0ckxpc3Q8TWVkaWFRdWVyeUV4cEltcGw+KiBsaXN0KCkgY29uc3QgeyByZXR1cm4g
JmV4cHM7IH0KKworcHJpdmF0ZToKKyAgICBRUHRyTGlzdDxNZWRpYVF1ZXJ5RXhwSW1wbD4gZXhw
czsKK307CisKKworY2xhc3MgTWVkaWFRdWVyeUltcGwgeworcHVibGljOgorICAgIGVudW0gUmVz
dHJpY3RvcnsKKyAgICAgICAgT25seSwgTm90LCBOb25lCisgICAgfTsKKworICAgIE1lZGlhUXVl
cnlJbXBsKFJlc3RyaWN0b3IgciwgY29uc3QgRE9NU3RyaW5nICZtZWRpYVR5cGUsIE1lZGlhUXVl
cnlFeHBMaXN0SW1wbCogZXhwcnMpOworICAgIH5NZWRpYVF1ZXJ5SW1wbCgpOworCisgICAgUmVz
dHJpY3RvciByZXN0cmljdG9yKCkgY29uc3Q7CisgICAgTWVkaWFRdWVyeUV4cExpc3RJbXBsKiBl
eHByZXNzaW9ucygpIGNvbnN0OworICAgIFFTdHJpbmcgbWVkaWFUeXBlKCkgY29uc3Q7CisKKyAg
ICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFRdWVyeUltcGwmIG90aGVyKSBjb25zdDsKKwor
IHByaXZhdGU6CisgICAgUmVzdHJpY3RvciBtX3Jlc3RyaWN0b3I7CisgICAgRE9NU3RyaW5nIG1f
bWVkaWFUeXBlOworICAgIE1lZGlhUXVlcnlFeHBMaXN0SW1wbCogbV9leHByZXNzaW9uczsKK307
CisKK30gLy8gbmFtZXNwYWNlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVz
ZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5j
cHAJKHJldmlzaW9uIDEyNTQ0KQorKysgV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJjc3NoZWxwZXIuaCIK
ICNpbmNsdWRlICJjc3Nwcm9wZXJ0aWVzLmgiCiAjaW5jbHVkZSAiY3NzdmFsdWVzLmgiCisjaW5j
bHVkZSAiY3NzX21lZGlhcXVlcnlldmFsLmgiCiAjaW5jbHVkZSAiZm9udC5oIgogI2luY2x1ZGUg
ImhlbHBlci5oIgogI2luY2x1ZGUgImh0bWxfZG9jdW1lbnRpbXBsLmgiCkBAIC0xNjksNyArMTcw
LDcgQEAgcHVibGljOgogICAgIAogICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBs
KiwgQ1NTUnVsZURhdGFMaXN0Kj4gQXRvbVJ1bGVNYXA7CiAgICAgCi0gICAgdm9pZCBhZGRSdWxl
c0Zyb21TaGVldChDU1NTdHlsZVNoZWV0SW1wbCogc2hlZXQsIGNvbnN0IERPTVN0cmluZyAmbWVk
aXVtID0gInNjcmVlbiIpOworICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoRE9NOjpDU1NTdHls
ZVNoZWV0SW1wbCogc2hlZXQsIERPTTo6TWVkaWFRdWVyeUV2YWx1YXRvciogbWVkaXVtKTsKICAg
ICAKICAgICB2b2lkIGFkZFJ1bGUoQ1NTU3R5bGVSdWxlSW1wbCogcnVsZSwgQ1NTU2VsZWN0b3Iq
IHNlbCk7CiAgICAgdm9pZCBhZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5nSW1wbCoga2V5LCBBdG9t
UnVsZU1hcCYgbWFwLApAQCAtMjEyLDExICsyMTMsMzEgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NT
U3R5bGVTZWxlY3RvciggRG9jdQogICAgIHNldHRpbmdzID0gdmlldyA/IHZpZXctPmZyYW1lKCkt
PnNldHRpbmdzKCkgOiAwOwogICAgIGlmICghZGVmYXVsdFN0eWxlKQogICAgICAgICBsb2FkRGVm
YXVsdFN0eWxlKCk7Ci0gICAgbV9tZWRpdW0gPSB2aWV3ID8gdmlldy0+bWVkaWFUeXBlKCkgOiBR
U3RyaW5nKCJhbGwiKTsKIAogICAgIG1fdXNlclN0eWxlID0gMDsKICAgICBtX3VzZXJTaGVldCA9
IDA7CiAKKyAgICAvLyBjb25zdHJ1Y3QgZG9jdW1lbnQgcm9vdCBlbGVtZW50IGRlZmF1bHQgc3R5
bGUuIHRoaXMgaXMgbmVlZGVkIAorICAgIC8vIHRvIGV2YWx1YXRlIG1lZGlhIHF1ZXJpZXMgdGhh
dCBjb250YWluIHJlbGF0aXZlIGNvbnN0cmFpbnRzLCBsaWtlICJzY3JlZW4gYW5kIChtYXgtd2lk
dGg6IDEwZW0pIgorICAgIC8vIFRoaXMgaXMgaGVyZSBpbnN0ZWFkIG9mIGNvbnN0cnVjdG9yLCBi
ZWNhdXNlIHdoZW4gY29uc3RydWN0b3IgaXMgcnVuLCAKKyAgICAvLyBkb2N1bWVudCBkb2Vzbid0
IGhhdmUgZG9jdW1lbnRFbGVtZW50CisgICAgLy8gWFhYOiB0aGlzIGFzc3VtZXMgdGhhdCBlbGVt
ZW50IHRoYXQgZ2V0cyBwYXNzZWQgdG8gc3R5bGVGb3JFbGVtZW50IC1jYWxsIAorICAgIC8vIGlz
IGZyb20gdGhlIGRvY3VtZW50IHRoYXQgb3ducyB0aGUgc3R5bGUgc2VsZWN0b3IgICAgICAgIAor
ICAgIGlmICh2aWV3KSB7CisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlhUXVlcnlFdmFsdWF0
b3Iodmlldy0+bWVkaWFUeXBlKCkpOworICAgIH0gZWxzZSB7ICAgICAgICAKKyAgICAgICAgbV9t
ZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigiYWxsIik7CisgICAgfQorICAgIEVsZW1l
bnRJbXBsICpyb290ID0gZG9jLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBpZiAocm9vdCkgeyAg
ICAgICAgIAorICAgICAgICBtX3Jvb3REZWZhdWx0U3R5bGUgPSBkZWZhdWx0U3R5bGVGb3JSb290
KHJvb3QpOworICAgICAgICAvLyBkb250IHJlZiwgYmVjYXVzZSB0aGUgUmVuZGVyU3R5bGUgaXMg
YWxsb2NhdGVkIGZyb20gZ2xvYmFsIGhlYXAKKyAgICB9CisgICAgaWYgKG1fcm9vdERlZmF1bHRT
dHlsZSAmJiB2aWV3KSB7ICAgICAgICAgICAKKyAgICAgICAgZGVsZXRlIG1fbWVkaXVtOworICAg
ICAgICBtX21lZGl1bSA9IG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKHZpZXctPm1lZGlhVHlwZSgp
LCB2aWV3LCBtX3Jvb3REZWZhdWx0U3R5bGUpOworICAgIH0KKwogICAgIC8vIEZJWE1FOiBUaGlz
IHN1Y2tzISBUaGUgdXNlciBzaGVldCBpcyByZXBhcnNlZCBldmVyeSB0aW1lIQogICAgIGlmICgh
dXNlclN0eWxlU2hlZXQuaXNFbXB0eSgpKSB7CiAgICAgICAgIG1fdXNlclNoZWV0ID0gbmV3IENT
U1N0eWxlU2hlZXRJbXBsKGRvYyk7CkBAIC0yNDQsNyArMjY1LDIwIEBAIENTU1N0eWxlU2VsZWN0
b3I6OkNTU1N0eWxlU2VsZWN0b3IoIENTU1MKIAogICAgIGlmKCFkZWZhdWx0U3R5bGUpIGxvYWRE
ZWZhdWx0U3R5bGUoKTsKICAgICBGcmFtZVZpZXcgKnZpZXcgPSBzaGVldC0+ZG9jKCktPnZpZXco
KTsKLSAgICBtX21lZGl1bSA9ICB2aWV3ID8gdmlldy0+bWVkaWFUeXBlKCkgOiBRU3RyaW5nKCJh
bGwiKTsKKworICAgIGlmICh2aWV3KSB7CisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlhUXVl
cnlFdmFsdWF0b3Iodmlldy0+bWVkaWFUeXBlKCkpOworICAgIH0gZWxzZSB7ICAgICAgICAKKyAg
ICAgICAgbV9tZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigiYWxsIik7CisgICAgfQor
ICAgIEVsZW1lbnRJbXBsICpyb290ID0gc2hlZXQtPmRvYygpLT5kb2N1bWVudEVsZW1lbnQoKTsK
KyAgICBpZiAocm9vdCkgeyAgICAgICAgIAorICAgICAgICBtX3Jvb3REZWZhdWx0U3R5bGUgPSBk
ZWZhdWx0U3R5bGVGb3JSb290KHJvb3QpOworICAgIH0KKyAgICBpZiAobV9yb290RGVmYXVsdFN0
eWxlICYmIHZpZXcpIHsgICAgICAgICAgIAorICAgICAgICBkZWxldGUgbV9tZWRpdW07CisgICAg
ICAgIG1fbWVkaXVtID0gbmV3IE1lZGlhUXVlcnlFdmFsdWF0b3Iodmlldy0+bWVkaWFUeXBlKCks
IHZpZXcsIG1fcm9vdERlZmF1bHRTdHlsZSk7CisgICAgfQogCiAgICAgbV9hdXRob3JTdHlsZSA9
IG5ldyBDU1NSdWxlU2V0KCk7CiAgICAgbV9hdXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
IHNoZWV0LCBtX21lZGl1bSApOwpAQCAtMjU1LDYgKzI4OSw5IEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6aW5pdCgpCiAgICAgZWxlbWVudCA9IDA7CiAgICAgc2V0dGluZ3MgPSAwOwogICAgIG1f
bWF0Y2hlZFJ1bGVDb3VudCA9IG1fbWF0Y2hlZERlY2xDb3VudCA9IG1fdG1wUnVsZUNvdW50ID0g
MDsKKyAgICBtX3Jvb3REZWZhdWx0U3R5bGUgPSAwOworICAgIG1fbWVkaXVtID0gMDsKKyAgICBt
X3Jlc29sdmluZ0ZvclJvb3REZWZhdWx0U3R5bGUgPSBmYWxzZTsKIH0KIAogdm9pZCBDU1NTdHls
ZVNlbGVjdG9yOjpzZXRFbmNvZGVkVVJMKGNvbnN0IEtVUkwmIHVybCkKQEAgLTI3Niw2ICszMTMs
OCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnNldEVuY29kZWRVUkwoY29uCiAKIENTU1N0eWxl
U2VsZWN0b3I6On5DU1NTdHlsZVNlbGVjdG9yKCkKIHsKKyAgICBkZWxldGUgbV9tZWRpdW07CQor
ICAgIDo6ZGVsZXRlIG1fcm9vdERlZmF1bHRTdHlsZTsKICAgICBkZWxldGUgbV9hdXRob3JTdHls
ZTsKICAgICBkZWxldGUgbV91c2VyU3R5bGU7CiAgICAgZGVsZXRlIG1fdXNlclNoZWV0OwpAQCAt
MzE2LDE5ICszNTUsMjMgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpsb2FkRGVmYXVsdFN0eWxl
KAogCiAgICAgLy8gU3RyaWN0LW1vZGUgcnVsZXMuCiAgICAgZGVmYXVsdFNoZWV0ID0gcGFyc2VV
QVNoZWV0KGh0bWw0VXNlckFnZW50U3R5bGVTaGVldCk7Ci0gICAgZGVmYXVsdFN0eWxlLT5hZGRS
dWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsICJzY3JlZW4iKTsKLSAgICBkZWZhdWx0UHJpbnRT
dHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCAicHJpbnQiKTsKKworICAgIE1l
ZGlhUXVlcnlFdmFsdWF0b3Igc2NyZWVuRXZhbCgic2NyZWVuIik7CisgICAgZGVmYXVsdFN0eWxl
LT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsICZzY3JlZW5FdmFsKTsKKworICAgIE1l
ZGlhUXVlcnlFdmFsdWF0b3IgcHJpbnRFdmFsKCJwcmludCIpOworICAgIGRlZmF1bHRQcmludFN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsICZwcmludEV2YWwpOwogCiAjaWYg
U1ZHX1NVUFBPUlQKICAgICAvLyBTVkcgcnVsZXMuCiAgICAgc3ZnU2hlZXQgPSBwYXJzZVVBU2hl
ZXQoc3ZnVXNlckFnZW50U3R5bGVTaGVldCk7Ci0gICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zy
b21TaGVldChzdmdTaGVldCwgInNjcmVlbiIpOwotICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRS
dWxlc0Zyb21TaGVldChzdmdTaGVldCwgInByaW50Iik7CisgICAgZGVmYXVsdFN0eWxlLT5hZGRS
dWxlc0Zyb21TaGVldChzdmdTaGVldCwgJnNjcmVlbkV2YWwpOworICAgIGRlZmF1bHRQcmludFN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzdmdTaGVldCwgJnByaW50RXZhbCk7CiAjZW5kaWYKIAog
ICAgIC8vIFF1aXJrcy1tb2RlIHJ1bGVzLgogICAgIHF1aXJrc1NoZWV0ID0gcGFyc2VVQVNoZWV0
KHF1aXJrc1VzZXJBZ2VudFN0eWxlU2hlZXQpOwotICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRk
UnVsZXNGcm9tU2hlZXQocXVpcmtzU2hlZXQsICJzY3JlZW4iKTsKKyAgICBkZWZhdWx0UXVpcmtz
U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCAmc2NyZWVuRXZhbCk7CiB9CiAK
IHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRkTWF0Y2hlZFJ1bGUoQ1NTUnVsZURhdGEqIHJ1bGUp
CkBAIC03MTAsNyArNzUzLDcgQEAgUmVuZGVyU3R5bGUqIENTU1N0eWxlU2VsZWN0b3I6OmxvY2F0
ZVNoYQogCiBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFbGVtZW50KEVs
ZW1lbnRJbXBsKiBlLCBSZW5kZXJTdHlsZSogZGVmYXVsdFBhcmVudCwgYm9vbCBhbGxvd1NoYXJp
bmcpCiB7Ci0gICAgaWYgKCFlLT5nZXREb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQo
KSkgeworICAgIGlmICghbV9yZXNvbHZpbmdGb3JSb290RGVmYXVsdFN0eWxlICYmICFlLT5nZXRE
b2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkgewogICAgICAgICBpZiAoIXN0eWxl
Tm90WWV0QXZhaWxhYmxlKSB7CiAgICAgICAgICAgICBzdHlsZU5vdFlldEF2YWlsYWJsZSA9IDo6
bmV3IFJlbmRlclN0eWxlKCk7CiAgICAgICAgICAgICBzdHlsZU5vdFlldEF2YWlsYWJsZS0+c2V0
RGlzcGxheShOT05FKTsKQEAgLTczMiw3ICs3NzUsMTEgQEAgUmVuZGVyU3R5bGUqIENTU1N0eWxl
U2VsZWN0b3I6OnN0eWxlRm9yRQogICAgIH0KICAgICBpbml0Rm9yU3R5bGVSZXNvbHZlKGUsIGRl
ZmF1bHRQYXJlbnQpOwogCi0gICAgc3R5bGUgPSBuZXcgKGUtPmdldERvY3VtZW50KCktPnJlbmRl
ckFyZW5hKCkpIFJlbmRlclN0eWxlKCk7CisgICAgaWYgKG1fcmVzb2x2aW5nRm9yUm9vdERlZmF1
bHRTdHlsZSkgeworICAgICAgICBzdHlsZSA9IDo6bmV3IFJlbmRlclN0eWxlKCk7CisgICAgfSBl
bHNlIHsKKyAgICAgICAgc3R5bGUgPSBuZXcgKGUtPmdldERvY3VtZW50KCktPnJlbmRlckFyZW5h
KCkpIFJlbmRlclN0eWxlKCk7CisgICAgfQogICAgIGlmIChwYXJlbnRTdHlsZSkKICAgICAgICAg
c3R5bGUtPmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKICAgICBlbHNlCkBAIC03NDcsNjEgKzc5
NCw2NSBAQCBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JFCiAgICAgICAg
IG1hdGNoUnVsZXMoZGVmYXVsdFF1aXJrc1N0eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7
CiAgICAgCiAgICAgLy8gMy4gSWYgb3VyIG1lZGl1bSBpcyBwcmludCwgdGhlbiB3ZSBtYXRjaCBy
dWxlcyBmcm9tIHRoZSBwcmludCBzaGVldC4KLSAgICBpZiAobV9tZWRpdW0gPT0gInByaW50IikK
KyAgICBpZiAobV9tZWRpdW0tPm1lZGlhVHlwZU1hdGNoKCJwcmludCIpKQogICAgICAgICBtYXRj
aFJ1bGVzKGRlZmF1bHRQcmludFN0eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CiAKLSAg
ICAvLyA0LiBOb3cgd2UgY2hlY2sgdXNlciBzaGVldCBydWxlcy4KICAgICBpbnQgZmlyc3RVc2Vy
UnVsZSA9IC0xLCBsYXN0VXNlclJ1bGUgPSAtMTsKLSAgICBtYXRjaFJ1bGVzKG1fdXNlclN0eWxl
LCBmaXJzdFVzZXJSdWxlLCBsYXN0VXNlclJ1bGUpOwotCi0gICAgLy8gNS4gTm93IGNoZWNrIGF1
dGhvciBydWxlcywgYmVnaW5uaW5nIGZpcnN0IHdpdGggcHJlc2VudGF0aW9uYWwgYXR0cmlidXRl
cwotICAgIC8vIG1hcHBlZCBmcm9tIEhUTUwuCiAgICAgaW50IGZpcnN0QXV0aG9yUnVsZSA9IC0x
LCBsYXN0QXV0aG9yUnVsZSA9IC0xOwotICAgIGlmIChzdHlsZWRFbGVtZW50KSB7Ci0gICAgICAg
IC8vIEFzayBpZiB0aGUgSFRNTCBlbGVtZW50IGhhcyBtYXBwZWQgYXR0cmlidXRlcy4KLSAgICAg
ICAgaWYgKHN0eWxlZEVsZW1lbnQtPmhhc01hcHBlZEF0dHJpYnV0ZXMoKSkgewotICAgICAgICAg
ICAgLy8gV2FsayBvdXIgYXR0cmlidXRlIGxpc3QgYW5kIGFkZCBpbiBlYWNoIGRlY2wuCi0gICAg
ICAgICAgICBjb25zdCBOYW1lZE1hcHBlZEF0dHJNYXBJbXBsKiBtYXAgPSBzdHlsZWRFbGVtZW50
LT5tYXBwZWRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBt
YXAtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBNYXBwZWRBdHRyaWJ1dGVJbXBs
KiBhdHRyID0gbWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwotICAgICAgICAgICAgICAgIGlmIChhdHRy
LT5kZWNsKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0QXV0aG9yUnVsZSA9PSAt
MSkgZmlyc3RBdXRob3JSdWxlID0gbV9tYXRjaGVkRGVjbENvdW50OwotICAgICAgICAgICAgICAg
ICAgICBsYXN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hlZERlY2xDb3VudDsKLSAgICAgICAgICAgICAg
ICAgICAgYWRkTWF0Y2hlZERlY2xhcmF0aW9uKGF0dHItPmRlY2woKSk7CisgICAgaWYgKCFtX3Jl
c29sdmluZ0ZvclJvb3REZWZhdWx0U3R5bGUpIHsKKyAgICAgICAgLy8gNC4gTm93IHdlIGNoZWNr
IHVzZXIgc2hlZXQgcnVsZXMuCisgICAgICAgIG1hdGNoUnVsZXMobV91c2VyU3R5bGUsIGZpcnN0
VXNlclJ1bGUsIGxhc3RVc2VyUnVsZSk7CisKKyAgICAgICAgLy8gNS4gTm93IGNoZWNrIGF1dGhv
ciBydWxlcywgYmVnaW5uaW5nIGZpcnN0IHdpdGggcHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcwor
ICAgICAgICAvLyBtYXBwZWQgZnJvbSBIVE1MLgorICAgICAgICBpZiAoc3R5bGVkRWxlbWVudCkg
eworICAgICAgICAgICAgLy8gQXNrIGlmIHRoZSBIVE1MIGVsZW1lbnQgaGFzIG1hcHBlZCBhdHRy
aWJ1dGVzLgorICAgICAgICAgICAgaWYgKHN0eWxlZEVsZW1lbnQtPmhhc01hcHBlZEF0dHJpYnV0
ZXMoKSkgeworICAgICAgICAgICAgICAgIC8vIFdhbGsgb3VyIGF0dHJpYnV0ZSBsaXN0IGFuZCBh
ZGQgaW4gZWFjaCBkZWNsLgorICAgICAgICAgICAgICAgIGNvbnN0IE5hbWVkTWFwcGVkQXR0ck1h
cEltcGwqIG1hcCA9IHN0eWxlZEVsZW1lbnQtPm1hcHBlZEF0dHJpYnV0ZXMoKTsKKyAgICAgICAg
ICAgICAgICBmb3IgKHVpbnQgaSA9IDA7IGkgPCBtYXAtPmxlbmd0aCgpOyBpKyspIHsKKyAgICAg
ICAgICAgICAgICAgICAgTWFwcGVkQXR0cmlidXRlSW1wbCogYXR0ciA9IG1hcC0+YXR0cmlidXRl
SXRlbShpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHItPmRlY2woKSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0QXV0aG9yUnVsZSA9PSAtMSkgZmlyc3RBdXRob3JS
dWxlID0gbV9tYXRjaGVkRGVjbENvdW50OworICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEF1
dGhvclJ1bGUgPSBtX21hdGNoZWREZWNsQ291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBh
ZGRNYXRjaGVkRGVjbGFyYXRpb24oYXR0ci0+ZGVjbCgpKTsKKyAgICAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfQogCi0gICAgICAg
IC8vIE5vdyB3ZSBjaGVjayBhZGRpdGlvbmFsIG1hcHBlZCBkZWNsYXJhdGlvbnMuCi0gICAgICAg
IC8vIFRhYmxlcyBhbmQgdGFibGUgY2VsbHMgc2hhcmUgYW4gYWRkaXRpb25hbCBtYXBwZWQgcnVs
ZSB0aGF0IG11c3QgYmUgYXBwbGllZAotICAgICAgICAvLyBhZnRlciBhbGwgYXR0cmlidXRlcywg
c2luY2UgdGhlaXIgbWFwcGVkIHN0eWxlIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBtdWx0aXBs
ZSBhdHRyaWJ1dGVzLgotICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkltcGwqIGF0
dHJpYnV0ZURlY2wgPSBzdHlsZWRFbGVtZW50LT5hZGRpdGlvbmFsQXR0cmlidXRlU3R5bGVEZWNs
KCk7Ci0gICAgICAgIGlmIChhdHRyaWJ1dGVEZWNsKSB7Ci0gICAgICAgICAgICBpZiAoZmlyc3RB
dXRob3JSdWxlID09IC0xKSBmaXJzdEF1dGhvclJ1bGUgPSBtX21hdGNoZWREZWNsQ291bnQ7Ci0g
ICAgICAgICAgICBsYXN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hlZERlY2xDb3VudDsKLSAgICAgICAg
ICAgIGFkZE1hdGNoZWREZWNsYXJhdGlvbihhdHRyaWJ1dGVEZWNsKTsKKyAgICAgICAgICAgIC8v
IE5vdyB3ZSBjaGVjayBhZGRpdGlvbmFsIG1hcHBlZCBkZWNsYXJhdGlvbnMuCisgICAgICAgICAg
ICAvLyBUYWJsZXMgYW5kIHRhYmxlIGNlbGxzIHNoYXJlIGFuIGFkZGl0aW9uYWwgbWFwcGVkIHJ1
bGUgdGhhdCBtdXN0IGJlIGFwcGxpZWQKKyAgICAgICAgICAgIC8vIGFmdGVyIGFsbCBhdHRyaWJ1
dGVzLCBzaW5jZSB0aGVpciBtYXBwZWQgc3R5bGUgZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG11
bHRpcGxlIGF0dHJpYnV0ZXMuCisgICAgICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bkltcGwqIGF0dHJpYnV0ZURlY2wgPSBzdHlsZWRFbGVtZW50LT5hZGRpdGlvbmFsQXR0cmlidXRl
U3R5bGVEZWNsKCk7CisgICAgICAgICAgICBpZiAoYXR0cmlidXRlRGVjbCkgeworICAgICAgICAg
ICAgICAgIGlmIChmaXJzdEF1dGhvclJ1bGUgPT0gLTEpIGZpcnN0QXV0aG9yUnVsZSA9IG1fbWF0
Y2hlZERlY2xDb3VudDsKKyAgICAgICAgICAgICAgICBsYXN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hl
ZERlY2xDb3VudDsKKyAgICAgICAgICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24oYXR0cmli
dXRlRGVjbCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLy8g
Ni4gQ2hlY2sgdGhlIHJ1bGVzIGluIGF1dGhvciBzaGVldHMgbmV4dC4KLSAgICBtYXRjaFJ1bGVz
KG1fYXV0aG9yU3R5bGUsIGZpcnN0QXV0aG9yUnVsZSwgbGFzdEF1dGhvclJ1bGUpOwotICAgIAot
ICAgIC8vIDcuIE5vdyBjaGVjayBvdXIgaW5saW5lIHN0eWxlIGF0dHJpYnV0ZS4KLSAgICBpZiAo
c3R5bGVkRWxlbWVudCkgewotICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkltcGwq
IGlubGluZURlY2wgPSBzdHlsZWRFbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKTsKLSAgICAgICAg
aWYgKGlubGluZURlY2wpIHsKLSAgICAgICAgICAgIGlmIChmaXJzdEF1dGhvclJ1bGUgPT0gLTEp
IGZpcnN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hlZERlY2xDb3VudDsKLSAgICAgICAgICAgIGxhc3RB
dXRob3JSdWxlID0gbV9tYXRjaGVkRGVjbENvdW50OwotICAgICAgICAgICAgYWRkTWF0Y2hlZERl
Y2xhcmF0aW9uKGlubGluZURlY2wpOworCisgICAgICAgIC8vIDYuIENoZWNrIHRoZSBydWxlcyBp
biBhdXRob3Igc2hlZXRzIG5leHQuCisgICAgICAgIG1hdGNoUnVsZXMobV9hdXRob3JTdHlsZSwg
Zmlyc3RBdXRob3JSdWxlLCBsYXN0QXV0aG9yUnVsZSk7CisKKyAgICAgICAgLy8gNy4gTm93IGNo
ZWNrIG91ciBpbmxpbmUgc3R5bGUgYXR0cmlidXRlLgorICAgICAgICBpZiAoc3R5bGVkRWxlbWVu
dCkgeworICAgICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsKiBpbmxpbmVE
ZWNsID0gc3R5bGVkRWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCk7CisgICAgICAgICAgICBpZiAo
aW5saW5lRGVjbCkgeworICAgICAgICAgICAgICAgIGlmIChmaXJzdEF1dGhvclJ1bGUgPT0gLTEp
IGZpcnN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hlZERlY2xDb3VudDsKKyAgICAgICAgICAgICAgICBs
YXN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hlZERlY2xDb3VudDsKKyAgICAgICAgICAgICAgICBhZGRN
YXRjaGVkRGVjbGFyYXRpb24oaW5saW5lRGVjbCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
ICAgICB9Ci0gICAgCisKICAgICAvLyBOb3cgd2UgaGF2ZSBhbGwgb2YgdGhlIG1hdGNoZWQgcnVs
ZXMgaW4gdGhlIGFwcHJvcHJpYXRlIG9yZGVyLiAgV2FsayB0aGUgcnVsZXMgYW5kIGFwcGx5CiAg
ICAgLy8gaGlnaC1wcmlvcml0eSBwcm9wZXJ0aWVzIGZpcnN0LCBpLmUuLCB0aG9zZSBwcm9wZXJ0
aWVzIHRoYXQgb3RoZXIgcHJvcGVydGllcyBkZXBlbmQgb24uCiAgICAgLy8gVGhlIG9yZGVyIGlz
ICgxKSBoaWdoLXByaW9yaXR5IG5vdCBpbXBvcnRhbnQsICgyKSBoaWdoLXByaW9yaXR5IGltcG9y
dGFudCwgKDMpIG5vcm1hbCBub3QgaW1wb3J0YW50CiAgICAgLy8gYW5kICg0KSBub3JtYWwgaW1w
b3J0YW50LgotICAgIGFwcGx5RGVjbGFyYXRpb25zKHRydWUsIGZhbHNlLCAwLCBtX21hdGNoZWRE
ZWNsQ291bnQtMSk7Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RBdXRo
b3JSdWxlLCBsYXN0QXV0aG9yUnVsZSk7CisgICAgaWYgKCFtX3Jlc29sdmluZ0ZvclJvb3REZWZh
dWx0U3R5bGUpIHsKKyAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgZmFsc2UsIDAsIG1f
bWF0Y2hlZERlY2xDb3VudC0xKTsKKyAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgdHJ1
ZSwgZmlyc3RBdXRob3JSdWxlLCBsYXN0QXV0aG9yUnVsZSk7CisgICAgfQogICAgIGFwcGx5RGVj
bGFyYXRpb25zKHRydWUsIHRydWUsIGZpcnN0VXNlclJ1bGUsIGxhc3RVc2VyUnVsZSk7CiAgICAg
YXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwog
ICAgIApAQCAtODI3LDggKzg3OCwxMCBAQCBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6
c3R5bGVGb3JFCiAgICAgLy8gTm93IGRvIHRoZSBhdXRob3IgYW5kIHVzZXIgbm9ybWFsIHByaW9y
aXR5IHByb3BlcnRpZXMgYW5kIGFsbCB0aGUgIWltcG9ydGFudCBwcm9wZXJ0aWVzLgogICAgIGFw
cGx5RGVjbGFyYXRpb25zKGZhbHNlLCBmYWxzZSwgbGFzdFVBUnVsZSsxLCBtX21hdGNoZWREZWNs
Q291bnQtMSk7CiAgICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIHRydWUsIGZpcnN0QXV0aG9y
UnVsZSwgbGFzdEF1dGhvclJ1bGUpOwotICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVl
LCBmaXJzdFVzZXJSdWxlLCBsYXN0VXNlclJ1bGUpOwotICAgIGFwcGx5RGVjbGFyYXRpb25zKGZh
bHNlLCB0cnVlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CisgICAgaWYgKCFtX3Jlc29sdmlu
Z0ZvclJvb3REZWZhdWx0U3R5bGUpIHsKKyAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2Us
IHRydWUsIGZpcnN0VXNlclJ1bGUsIGxhc3RVc2VyUnVsZSk7CisgICAgICAgIGFwcGx5RGVjbGFy
YXRpb25zKGZhbHNlLCB0cnVlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CisgICAgfQogICAg
IAogICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkIGJ5IG9uZSBvZiB0aGUgbm9uLWVzc2Vu
dGlhbCBmb250IHByb3BzLCAKICAgICAvLyBnbyBhaGVhZCBhbmQgdXBkYXRlIGl0IGEgc2Vjb25k
IHRpbWUuCkBAIC0xMDU0LDcgKzExMDcsNyBAQCBSZWZQdHI8Q1NTUnVsZUxpc3RJbXBsPiBDU1NT
dHlsZVNlbGVjdG9yCiAgICAgICAgICAgICBtYXRjaFJ1bGVzKGRlZmF1bHRRdWlya3NTdHlsZSwg
Zmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogICAgICAgICAKICAgICAgICAgLy8gSWYgb3VyIG1l
ZGl1bSBpcyBwcmludCwgdGhlbiB3ZSBtYXRjaCBydWxlcyBmcm9tIHRoZSBwcmludCBzaGVldC4K
LSAgICAgICAgaWYgKG1fbWVkaXVtID09ICJwcmludCIpCisgICAgICAgIGlmIChtX21lZGl1bS0+
bWVkaWFUeXBlTWF0Y2goInByaW50IikpCiAgICAgICAgICAgICBtYXRjaFJ1bGVzKGRlZmF1bHRQ
cmludFN0eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CiAKICAgICAgICAgLy8gTm93IHdl
IGNoZWNrIHVzZXIgc2hlZXQgcnVsZXMuCkBAIC0xNTc4LDE0ICsxNjMxLDE0IEBAIHZvaWQgQ1NT
UnVsZVNldDo6YWRkUnVsZShDU1NTdHlsZVJ1bGVJbXAKICAgICAgICAgbV91bml2ZXJzYWxSdWxl
cy0+YXBwZW5kKG1fcnVsZUNvdW50KyssIHJ1bGUsIHNlbCk7CiB9CiAKLXZvaWQgQ1NTUnVsZVNl
dDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldEltcGwgKnNoZWV0LCBjb25zdCBET01T
dHJpbmcgJm1lZGl1bSkKK3ZvaWQgQ1NTUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5
bGVTaGVldEltcGwgKnNoZWV0LCBNZWRpYVF1ZXJ5RXZhbHVhdG9yICptZWRpdW0pCiB7CiAgICAg
aWYgKCFzaGVldCB8fCAhc2hlZXQtPmlzQ1NTU3R5bGVTaGVldCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICAvLyBObyBtZWRpYSBpbXBsaWVzICJhbGwiLCBidXQgaWYgYSBtZWRpYSBsaXN0IGV4
aXN0cyBpdCBtdXN0CiAgICAgLy8gY29udGFpbiBvdXIgY3VycmVudCBtZWRpdW0KLSAgICBpZiAo
c2hlZXQtPm1lZGlhKCkgJiYgIXNoZWV0LT5tZWRpYSgpLT5jb250YWlucyhtZWRpdW0pKQorICAg
IGlmIChzaGVldC0+bWVkaWEoKSAmJiAhbWVkaXVtLT5ldmFsKHNoZWV0LT5tZWRpYSgpKSkKICAg
ICAgICAgcmV0dXJuOyAvLyB0aGUgc3R5bGUgc2hlZXQgZG9lc24ndCBhcHBseQogCiAgICAgaW50
IGxlbiA9IHNoZWV0LT5sZW5ndGgoKTsKQEAgLTE1OTksMTQgKzE2NTIsMTQgQEAgdm9pZCBDU1NS
dWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdAogICAgICAgICB9CiAgICAgICAgIGVsc2Ug
aWYoaXRlbS0+aXNJbXBvcnRSdWxlKCkpIHsKICAgICAgICAgICAgIENTU0ltcG9ydFJ1bGVJbXBs
ICppbXBvcnQgPSBzdGF0aWNfY2FzdDxDU1NJbXBvcnRSdWxlSW1wbCAqPihpdGVtKTsKLSAgICAg
ICAgICAgIGlmICghaW1wb3J0LT5tZWRpYSgpIHx8IGltcG9ydC0+bWVkaWEoKS0+Y29udGFpbnMo
bWVkaXVtKSkKKyAgICAgICAgICAgIGlmICghaW1wb3J0LT5tZWRpYSgpIHx8IG1lZGl1bS0+ZXZh
bChpbXBvcnQtPm1lZGlhKCkpKQogICAgICAgICAgICAgICAgIGFkZFJ1bGVzRnJvbVNoZWV0KGlt
cG9ydC0+c3R5bGVTaGVldCgpLCBtZWRpdW0pOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYo
aXRlbS0+aXNNZWRpYVJ1bGUoKSkgewogICAgICAgICAgICAgQ1NTTWVkaWFSdWxlSW1wbCAqciA9
IHN0YXRpY19jYXN0PENTU01lZGlhUnVsZUltcGwqPihpdGVtKTsKICAgICAgICAgICAgIENTU1J1
bGVMaXN0SW1wbCAqcnVsZXMgPSByLT5jc3NSdWxlcygpOwogCi0gICAgICAgICAgICBpZiAoKCFy
LT5tZWRpYSgpIHx8IHItPm1lZGlhKCktPmNvbnRhaW5zKG1lZGl1bSkpICYmIHJ1bGVzKSB7Cisg
ICAgICAgICAgICBpZiAoKCFyLT5tZWRpYSgpIHx8IG1lZGl1bS0+ZXZhbChyLT5tZWRpYSgpKSkg
JiYgcnVsZXMpIHsKICAgICAgICAgICAgICAgICAvLyBUcmF2ZXJzZSBjaGlsZCBlbGVtZW50cyBv
ZiB0aGUgQG1lZGlhIHJ1bGUuCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IHJ1bGVzLT5sZW5ndGgoKTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgIENTU1J1bGVJ
bXBsICpjaGlsZEl0ZW0gPSBydWxlcy0+aXRlbShqKTsKQEAgLTQyODYsNSArNDMzOSwxNSBAQCBD
b2xvciBDU1NTdHlsZVNlbGVjdG9yOjpnZXRDb2xvckZyb21QcmltCiAgICAgICAgIGNvbC5zZXRS
Z2IocHJpbWl0aXZlVmFsdWUtPmdldFJHQkNvbG9yVmFsdWUoKSk7CiAgICAgcmV0dXJuIGNvbDsg
ICAgCiB9CisJCitSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6ZGVmYXVsdFN0eWxlRm9y
Um9vdChFbGVtZW50SW1wbCogZSkKK3sKKyAgICAvLyBYWFg6IE5vdCBhIG5pY2Ugd2F5IHRvIG1h
a2UgdGhlIGFsbG9jYXRpb24gb2YgbmV3IHN0eWxlIGZyb20gZ2xvYmFsIGhlYXAgCisgICAgLy8g
KGFuZCBub3QgZnJvbSBSZW5kZXJBcmVuYSksIGFuZCB0byBwcmV2ZW50IHNlbGVjdG9yIHRvIG1h
dGNoIGF1dGhvciBzdHlsZXNoZWV0IHJ1bGVzIAorICAgIG1fcmVzb2x2aW5nRm9yUm9vdERlZmF1
bHRTdHlsZSA9IHRydWU7CisgICAgUmVuZGVyU3R5bGUqIHJlc3VsdCA9IHN0eWxlRm9yRWxlbWVu
dChlLCAwLCBmYWxzZSk7CisgICAgbV9yZXNvbHZpbmdGb3JSb290RGVmYXVsdFN0eWxlID0gZmFs
c2U7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3Nz
cGFyc2VyLmgJKHJldmlzaW9uIDEyNTQ0KQorKysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQwLDYgKzQwLDggQEAgbmFtZXNwYWNlIERPTSB7CiAgICAgY2xhc3Mg
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb25JbXBsOwogICAgIGNsYXNzIENTU1Byb3BlcnR5Owog
ICAgIGNsYXNzIENTU1J1bGVMaXN0SW1wbDsKKyAgICBjbGFzcyBNZWRpYUxpc3RJbXBsOworICAg
IGNsYXNzIE1lZGlhUXVlcnlJbXBsOwogCiAKICAgICBzdHJ1Y3QgUGFyc2VTdHJpbmcgewpAQCAt
MTEzLDYgKzExNSw3IEBAIG5hbWVzcGFjZSBET00gewogICAgICAgICBzdGF0aWMgUkdCQTMyIENT
U1BhcnNlcjo6cGFyc2VDb2xvciggY29uc3QgRE9NOjpET01TdHJpbmcgJnN0cmluZyApOwogCWJv
b2wgcGFyc2VDb2xvciggRE9NOjpDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbkltcGwgKmRlY2xh
cmF0aW9uLCBjb25zdCBET006OkRPTVN0cmluZyAmc3RyaW5nICk7CiAJYm9vbCBwYXJzZURlY2xh
cmF0aW9uKCBET006OkNTU011dGFibGVTdHlsZURlY2xhcmF0aW9uSW1wbCAqZGVjbHMsIGNvbnN0
IERPTTo6RE9NU3RyaW5nICZzdHJpbmcgKTsKKyAgICBib29sIHBhcnNlTWVkaWFRdWVyeSggRE9N
OjpNZWRpYUxpc3RJbXBsICpxdWVyaWVzLCBjb25zdCBET006OkRPTVN0cmluZyAmc3RyaW5nICk7
CiAKIAlzdGF0aWMgQ1NTUGFyc2VyICpjdXJyZW50KCkgeyByZXR1cm4gY3VycmVudFBhcnNlcjsg
fQogCkBAIC0xNjksNiArMTcyLDcgQEAgbmFtZXNwYWNlIERPTSB7CiAJaW50IGlkOwogCURPTTo6
U3R5bGVMaXN0SW1wbCAqc3R5bGVFbGVtZW50OwogCURPTTo6Q1NTUnVsZUltcGwgKnJ1bGU7Cisg
ICAgRE9NOjpNZWRpYVF1ZXJ5SW1wbCAqbWVkaWFRdWVyeTsKIAlWYWx1ZUxpc3QgKnZhbHVlTGlz
dDsKIAlDU1NQcm9wZXJ0eSAqKnBhcnNlZFByb3BlcnRpZXM7CiAJaW50IG51bVBhcnNlZFByb3Bl
cnRpZXM7CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NtZWRpYWZlYXR1cmVzLmluCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL2Nzc21lZGlhZmVhdHVyZXMuaW4JKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2Nzcy9jc3NtZWRpYWZlYXR1cmVzLmluCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI5IEBA
Citjb2xvcgorY29sb3ItaW5kZXgKK2RldmljZS1hc3BlY3QtcmF0aW8KK2RldmljZS1oZWlnaHQK
K2RldmljZS13aWR0aAorZ3JpZAoraGVpZ2h0CittYXgtY29sb3IKK21heC1jb2xvci1pbmRleAor
bWF4LWRldmljZS1hc3BlY3QtcmF0aW8KK21heC1kZXZpY2UtaGVpZ2h0CittYXgtZGV2aWNlLXdp
ZHRoCittYXgtaGVpZ2h0CittYXgtbW9ub2Nocm9tZQorbWF4LXJlc29sdXRpb24KK21heC13aWR0
aAorbWluLWNvbG9yCittaW4tY29sb3ItaW5kZXgKK21pbi1kZXZpY2UtYXNwZWN0LXJhdGlvCitt
aW4tZGV2aWNlLWhlaWdodAorbWluLWRldmljZS13aWR0aAorbWluLWhlaWdodAorbWluLW1vbm9j
aHJvbWUKK21pbi1yZXNvbHV0aW9uCittaW4td2lkdGgKK21vbm9jaHJvbWUKK3Jlc29sdXRpb24K
K3NjYW4KK3dpZHRoCkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NfdmFsdWVpbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvY3NzX3ZhbHVlaW1wbC5oCShyZXZpc2lvbiAxMjU0NCkKKysrIFdl
YkNvcmUvY3NzL2Nzc192YWx1ZWltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsNiBA
QAogI2luY2x1ZGUgIkNhY2hlZE9iamVjdENsaWVudC5oIgogI2luY2x1ZGUgPHF2YWx1ZWxpc3Qu
aD4KIAotY2xhc3MgUVBhaW50RGV2aWNlTWV0cmljczsKLQogbmFtZXNwYWNlIGtodG1sIHsKICAg
ICBjbGFzcyBSZW5kZXJTdHlsZTsKICAgICBjbGFzcyBDYWNoZWRJbWFnZTsKSW5kZXg6IFdlYkNv
cmUvY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3Mv
Y3NzX3N0eWxlc2hlZXRpbXBsLmNwcAkocmV2aXNpb24gMTI1NDQpCisrKyBXZWJDb3JlL2Nzcy9j
c3Nfc3R5bGVzaGVldGltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw4IEBACiAj
aW5jbHVkZSAiY3NzL2Nzc192YWx1ZWltcGwuaCIKICNpbmNsdWRlICJjc3MvY3NzcGFyc2VyLmgi
CiAjaW5jbHVkZSAiY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oIgorI2luY2x1ZGUgImNzcy9jc3Nf
bWVkaWFxdWVyeWV2YWwuaCIKKyNpbmNsdWRlICJjc3NtZWRpYWZlYXR1cmVzLmgiCiAKICNpbmNs
dWRlICJodG1sL2h0bWxfZG9jdW1lbnRpbXBsLmgiCiAjaW5jbHVkZSAibG9hZGVyLmgiCkBAIC0z
MzIsMjEgKzMzNCwxNyBAQCBNZWRpYUxpc3RJbXBsOjpNZWRpYUxpc3RJbXBsKCBDU1NTdHlsZVNo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBET01TdHJpbmcgJm1lZGlhICkK
ICAgICA6IFN0eWxlQmFzZUltcGwoIHBhcmVudFNoZWV0ICkKIHsKKyAgICBtX2xzdFF1ZXJpZXMu
c2V0QXV0b0RlbGV0ZSh0cnVlKTsKICAgICBzZXRNZWRpYVRleHQoIG1lZGlhICk7CiB9CiAKIE1l
ZGlhTGlzdEltcGw6Ok1lZGlhTGlzdEltcGwoIENTU1J1bGVJbXBsICpwYXJlbnRSdWxlLCBjb25z
dCBET01TdHJpbmcgJm1lZGlhICkKICAgICA6IFN0eWxlQmFzZUltcGwocGFyZW50UnVsZSkKIHsK
KyAgICBtX2xzdFF1ZXJpZXMuc2V0QXV0b0RlbGV0ZSh0cnVlKTsKICAgICBzZXRNZWRpYVRleHQo
IG1lZGlhICk7CiB9CiAKLWJvb2wgTWVkaWFMaXN0SW1wbDo6Y29udGFpbnMoIGNvbnN0IERPTVN0
cmluZyAmbWVkaXVtICkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sc3RNZWRpYS5jb3VudCgpID09
IDAgfHwgbV9sc3RNZWRpYS5jb250YWlucyggbWVkaXVtICkgfHwKLSAgICAgICAgICAgIG1fbHN0
TWVkaWEuY29udGFpbnMoICJhbGwiICk7Ci19Ci0KIENTU1N0eWxlU2hlZXRJbXBsICpNZWRpYUxp
c3RJbXBsOjpwYXJlbnRTdHlsZVNoZWV0KCkgY29uc3QKIHsKICAgICByZXR1cm4gcGFyZW50KCkt
PmlzQ1NTU3R5bGVTaGVldCgpID8gc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldEltcGwgKj4ocGFy
ZW50KCkpIDogMDsKQEAgLTM1OSwzMyArMzU3LDEwMyBAQCBDU1NSdWxlSW1wbCAqTWVkaWFMaXN0
SW1wbDo6cGFyZW50UnVsZSgpCiAKIHZvaWQgTWVkaWFMaXN0SW1wbDo6ZGVsZXRlTWVkaXVtKCBj
b25zdCBET01TdHJpbmcgJm9sZE1lZGl1bSApCiB7Ci0gICAgZm9yICggUVZhbHVlTGlzdDxET01T
dHJpbmc+OjpJdGVyYXRvciBpdCA9IG1fbHN0TWVkaWEuYmVnaW4oKTsgaXQgIT0gbV9sc3RNZWRp
YS5lbmQoKTsgKytpdCApIHsKLSAgICAgICAgaWYgKCgqaXQpID09IG9sZE1lZGl1bSkgewotICAg
ICAgICAgICAgbV9sc3RNZWRpYS5yZW1vdmUoIGl0ICk7Ci0gICAgICAgICAgICByZXR1cm47Cisg
ICAgTWVkaWFMaXN0SW1wbCB0ZW1wTWVkaWFMaXN0OworICAgIENTU1BhcnNlciBwKHRydWUpOwor
CisgICAgaWYgKHAucGFyc2VNZWRpYVF1ZXJ5KCZ0ZW1wTWVkaWFMaXN0LCBvbGRNZWRpdW0pKSB7
CisgICAgICAgIGNvbnN0IE1lZGlhUXVlcnlJbXBsKiBvbGRRdWVyeSA9IFFQdHJMaXN0SXRlcmF0
b3I8TWVkaWFRdWVyeUltcGw+KCp0ZW1wTWVkaWFMaXN0Lm1lZGlhUXVlcmllcygpKS5jdXJyZW50
KCk7CisKKyAgICAgICAgUVB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5SW1wbD4gcV9pdChtX2xz
dFF1ZXJpZXMpOworICAgICAgICBmb3IoTWVkaWFRdWVyeUltcGwqIHF1ZXJ5ID0gcV9pdC5jdXJy
ZW50KCk7IHF1ZXJ5OyBxdWVyeSA9ICsrcV9pdCkgeworICAgICAgICAgICAgaWYgKCpxdWVyeSA9
PSAqb2xkUXVlcnkpIHsKKyAgICAgICAgICAgICAgICBtX2xzdFF1ZXJpZXMucmVtb3ZlKHF1ZXJ5
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAg
IH0gZWxzZSB7CisgICAgICAgIC8vIFhYWDogdGhyb3cgRE9NIGV4Y2VwdGlvbgogICAgIH0KIH0K
IAorc3RhdGljIERPTTo6RE9NU3RyaW5nIG1lZGlhUXVlcnlBc0RPTVN0cmluZyhjb25zdCBNZWRp
YVF1ZXJ5SW1wbCogcXVlcnkpCit7CisgICAgRE9NOjpET01TdHJpbmcgdGV4dDsKKyAgICBzd2l0
Y2ggKHF1ZXJ5LT5yZXN0cmljdG9yKCkpIHsKKyAgICAgICAgY2FzZSBNZWRpYVF1ZXJ5SW1wbDo6
T25seToKKyAgICAgICAgICAgIHRleHQgKz0gIm9ubHkgIjsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIE1lZGlhUXVlcnlJbXBsOjpOb3Q6CisgICAgICAgICAgICB0ZXh0ICs9ICJu
b3QgIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
YnJlYWs7CisgICAgfQorICAgIHRleHQgKz0gcXVlcnktPm1lZGlhVHlwZSgpOworICAgIFFQdHJM
aXN0SXRlcmF0b3I8TWVkaWFRdWVyeUV4cEltcGw+IGV4cF9pdCgqcXVlcnktPmV4cHJlc3Npb25z
KCktPmxpc3QoKSk7CisgICAgZm9yIChNZWRpYVF1ZXJ5RXhwSW1wbCogZXhwID0gZXhwX2l0LmN1
cnJlbnQoKTsgZXhwOyBleHAgPSArK2V4cF9pdCkgeworICAgICAgICB0ZXh0ICs9ICIgYW5kICgi
OworICAgICAgICB0ZXh0ICs9IGdldE1lZGlhRmVhdHVyZU5hbWUoZXhwLT5tZWRpYUZlYXR1cmUo
KSk7CisgICAgICAgIGlmIChleHAtPnZhbHVlKCkpIHsKKyAgICAgICAgICAgIHRleHQgKz0gIjog
IjsKKyAgICAgICAgICAgIHRleHQgKz0gZXhwLT52YWx1ZSgpLT5jc3NUZXh0KCk7CisgICAgICAg
IH0KKyAgICAgICAgdGV4dCArPSAiKSI7CisgICAgfQorICAgIHJldHVybiB0ZXh0OworfQorCiBE
T006OkRPTVN0cmluZyBNZWRpYUxpc3RJbXBsOjptZWRpYVRleHQoKSBjb25zdAogewotICAgIERP
TVN0cmluZyB0ZXh0ID0gIiI7Ci0gICAgZm9yIChRVmFsdWVMaXN0PERPTVN0cmluZz46OkNvbnN0
SXRlcmF0b3IgaXQgPSBtX2xzdE1lZGlhLmJlZ2luKCk7IGl0ICE9IG1fbHN0TWVkaWEuZW5kKCk7
ICsraXQpIHsKLSAgICAgICAgaWYgKHRleHQubGVuZ3RoKCkgPiAwKQorICAgIERPTVN0cmluZyB0
ZXh0OworICAgIFFQdHJMaXN0SXRlcmF0b3I8TWVkaWFRdWVyeUltcGw+IHFfaXQobV9sc3RRdWVy
aWVzKTsKKyAgICBib29sIGZpcnN0ID0gdHJ1ZTsKKyAgICBmb3IgKE1lZGlhUXVlcnlJbXBsKiBx
dWVyeSA9IHFfaXQuY3VycmVudCgpOyBxdWVyeTsgcXVlcnkgPSArK3FfaXQpIHsKKyAgICAgICAg
aWYgKCFmaXJzdCkKICAgICAgICAgICAgIHRleHQgKz0gIiwgIjsKLSAgICAgICAgdGV4dCArPSAq
aXQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgICAgIHRl
eHQgKz0gbWVkaWFRdWVyeUFzRE9NU3RyaW5nKHF1ZXJ5KTsKICAgICB9CiAgICAgcmV0dXJuIHRl
eHQ7CiB9CiAKIHZvaWQgTWVkaWFMaXN0SW1wbDo6c2V0TWVkaWFUZXh0KGNvbnN0IERPTTo6RE9N
U3RyaW5nICZ2YWx1ZSkKIHsKLSAgICBtX2xzdE1lZGlhLmNsZWFyKCk7Ci0gICAgUVN0cmluZ0xp
c3QgbGlzdCA9IFFTdHJpbmdMaXN0OjpzcGxpdCggJywnLCB2YWx1ZS5xc3RyaW5nKCkgKTsKLSAg
ICBmb3IgKCBRU3RyaW5nTGlzdDo6SXRlcmF0b3IgaXQgPSBsaXN0LmJlZ2luKCk7IGl0ICE9IGxp
c3QuZW5kKCk7ICsraXQgKQotICAgIHsKKyAgICBDU1NQYXJzZXIgcCh0cnVlKTsKKyAgICBtX2xz
dFF1ZXJpZXMuY2xlYXIoKTsKKworICAgIFFTdHJpbmdMaXN0IGxpc3QgPSBRU3RyaW5nTGlzdDo6
c3BsaXQoJywnLCB2YWx1ZS5xc3RyaW5nKCkpOworICAgIGZvciAoUVN0cmluZ0xpc3Q6Okl0ZXJh
dG9yIGl0ID0gbGlzdC5iZWdpbigpOyBpdCAhPSBsaXN0LmVuZCgpOyArK2l0KSB7CiAgICAgICAg
IERPTVN0cmluZyBtZWRpdW0gPSAoKml0KS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgaWYg
KCFtZWRpdW0uaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9sc3RNZWRpYS5hcHBlbmQoIG1lZGl1
bSApOworICAgICAgICBpZiAobWVkaXVtICE9ICIiKSB7CisgICAgICAgICAgICBpZiAoIXAucGFy
c2VNZWRpYVF1ZXJ5KCB0aGlzLCBtZWRpdW0gKSkgeworICAgICAgICAgICAgICAgIC8vIEZBSUwK
KyAgICAgICAgICAgICAgICAvLyBYWFg6IHRocm93IERPTSBleGNlcHRpb24KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQogICAgIH0KIH0KKworRE9NOjpET01TdHJpbmcgTWVkaWFMaXN0SW1wbDo6
aXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KSBjb25zdAoreworICAgIC8vIFhYWDogaW5lZmZpY2ll
bnQgYW5kIHVnbHkhIFFQdHJMaXN0IGRvZXNuJ3QgaGF2ZSBhdCgpIGNvbnN0CisgICAgUVB0ckxp
c3RJdGVyYXRvcjxNZWRpYVF1ZXJ5SW1wbD4gcV9pdChtX2xzdFF1ZXJpZXMpOworICAgIE1lZGlh
UXVlcnlJbXBsKiBxdWVyeSA9IHFfaXQuY3VycmVudCgpOworICAgIGZvciAoOyBxdWVyeSAmJiBp
bmRleDsgcXVlcnkgPSArK3FfaXQpIC0taW5kZXg7CisgICAgaWYgKHF1ZXJ5KQorICAgICAgICBy
ZXR1cm4gbWVkaWFRdWVyeUFzRE9NU3RyaW5nKHF1ZXJ5KTsKKyAgICByZXR1cm4gRE9NOjpET01T
dHJpbmcoKTsKK30KKwordm9pZCBNZWRpYUxpc3RJbXBsOjphcHBlbmRNZWRpdW0oY29uc3QgRE9N
OjpET01TdHJpbmcgJm5ld01lZGl1bSkKK3sKKyAgICBDU1NQYXJzZXIgcCh0cnVlKTsKKyAgICBp
ZiAoIXAucGFyc2VNZWRpYVF1ZXJ5KHRoaXMsIG5ld01lZGl1bSkpIHsKKyAgICAgICAgLy8gWFhY
OiB0aHJvdyBkb20gZXhjZXB0aW9uCisgICAgfQorfQorCit2b2lkIE1lZGlhTGlzdEltcGw6OmFw
cGVuZE1lZGlhUXVlcnkoTWVkaWFRdWVyeUltcGwqIG1lZGlhUXVlcnkpCit7CisgICAgbV9sc3RR
dWVyaWVzLmFwcGVuZChtZWRpYVF1ZXJ5KTsKK30KSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc19ncmFt
bWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3NzX2dyYW1tYXIueQkocmV2aXNpb24g
MTI1NDQpCisrKyBXZWJDb3JlL2Nzcy9jc3NfZ3JhbW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY3NzX3J1bGVpbXBsLmgiCiAjaW5jbHVkZSAiY3NzX3N0
eWxlc2hlZXRpbXBsLmgiCiAjaW5jbHVkZSAiY3NzX3ZhbHVlaW1wbC5oIgorI2luY2x1ZGUgImNz
c19tZWRpYXF1ZXJ5aW1wbC5oIgogI2luY2x1ZGUgImNzc3BhcnNlci5oIgogI2luY2x1ZGUgImRv
bV9zdHJpbmcuaCIKICNpbmNsdWRlICJodG1sbmFtZXMuaCIKQEAgLTU0LDYgKzU1LDcgQEAgdXNp
bmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKICNkZWZpbmUgX19pbmxpbmUKICNpbmNsdWRlICJjc3Nw
cm9wZXJ0aWVzLmMiCiAjaW5jbHVkZSAiY3NzdmFsdWVzLmMiCisjaW5jbHVkZSAiY3NzbWVkaWFm
ZWF0dXJlcy5jIgogI3VuZGVmIF9faW5saW5lCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEx
Miw2ICsxMTQsMTQgQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0VmFsdWVJRChjb25zdCBjaGFyIAog
ICAgIHJldHVybiB2YWwtPmlkOwogfQogCitzdGF0aWMgaW5saW5lIGludCBnZXRNZWRpYUZlYXR1
cmVJRChjb25zdCBjaGFyICp0YWdTdHIsIGludCBsZW4pCit7CisgICAgY29uc3Qgc3RydWN0IGNz
c19tZWRpYV9mZWF0dXJlX3BhaXIgKmZlYXQgPSBmaW5kTWVkaWFGZWF0dXJlKHRhZ1N0ciwgbGVu
KTsKKyAgICBpZiAoIWZlYXQpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGZlYXQt
PmlkOworfQogCiAjZGVmaW5lIFlZREVCVUcgMAogI2RlZmluZSBZWVBBUlNFX1BBUkFNIHBhcnNl
cgpAQCAtMTM2LDYgKzE0NiwxMiBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRWYWx1ZUlEKGNvbnN0
IGNoYXIgCiAgICAgY2hhciB0b2s7CiAgICAgVmFsdWUgdmFsdWU7CiAgICAgVmFsdWVMaXN0ICp2
YWx1ZUxpc3Q7CisKKyAgICBpbnQgbWVkaWFGZWF0dXJlSWQ7CisgICAgTWVkaWFRdWVyeUltcGwg
Km1lZGlhUXVlcnk7CisgICAgTWVkaWFRdWVyeUV4cEltcGwgKm1lZGlhUXVlcnlFeHA7CisgICAg
TWVkaWFRdWVyeUV4cExpc3RJbXBsICptZWRpYVF1ZXJ5RXhwTGlzdDsKKyAgICBNZWRpYVF1ZXJ5
SW1wbDo6UmVzdHJpY3RvciBtZWRpYVF1ZXJ5UmVzdHJpY3RvcjsKIH0KIAogJXsKQEAgLTE3NSw5
ICsxOTEsMTQgQEAgc3RhdGljIGludCBjc3N5eWxleChZWVNUWVBFICp5eWx2YWwpIHsgcgogJXRv
a2VuIEtIVE1MX1JVTEVfU1lNCiAldG9rZW4gS0hUTUxfREVDTFNfU1lNCiAldG9rZW4gS0hUTUxf
VkFMVUVfU1lNCisldG9rZW4gS0hUTUxfTUVESUFRVUVSWV9TWU0KIAogJXRva2VuIElNUE9SVEFO
VF9TWU0KIAorJXRva2VuIE1FRElBX09OTFkKKyV0b2tlbiBNRURJQV9OT1QKKyV0b2tlbiBNRURJ
QV9BTkQKKwogJXRva2VuIDx2YWw+IFFFTVMKICV0b2tlbiA8dmFsPiBFTVMKICV0b2tlbiA8dmFs
PiBFWFMKQEAgLTIyNCw5ICsyNDUsMTUgQEAgc3RhdGljIGludCBjc3N5eWxleChZWVNUWVBFICp5
eWx2YWwpIHsgcgogJXR5cGUgPHN0cmluZz4gbWVkaXVtCiAldHlwZSA8c3RyaW5nPiBoZXhjb2xv
cgogCisldHlwZSA8bWVkaWFGZWF0dXJlSWQ+IG1lZGlhX2ZlYXR1cmUKICV0eXBlIDxtZWRpYUxp
c3Q+IG1lZGlhX2xpc3QKICV0eXBlIDxtZWRpYUxpc3Q+IG1heWJlX21lZGlhX2xpc3QKLQorJXR5
cGUgPG1lZGlhUXVlcnk+IG1lZGlhX3F1ZXJ5CisldHlwZSA8bWVkaWFRdWVyeVJlc3RyaWN0b3I+
IG1heWJlX21lZGlhX3Jlc3RyaWN0b3IKKyV0eXBlIDx2YWx1ZUxpc3Q+IG1heWJlX21lZGlhX3Zh
bHVlCisldHlwZSA8bWVkaWFRdWVyeUV4cD4gbWVkaWFfcXVlcnlfZXhwCisldHlwZSA8bWVkaWFR
dWVyeUV4cExpc3Q+IG1lZGlhX3F1ZXJ5X2V4cF9saXN0CisldHlwZSA8bWVkaWFRdWVyeUV4cExp
c3Q+IG1heWJlX21lZGlhX3F1ZXJ5X2V4cF9saXN0CiAldHlwZSA8cnVsZUxpc3Q+IHJ1bGVzZXRf
bGlzdAogCiAldHlwZSA8cHJvcF9pZD4gcHJvcGVydHkKQEAgLTI2NSw2ICsyOTIsNyBAQCBzdHls
ZXNoZWV0OgogICB8IGtodG1sX3J1bGUgbWF5YmVfc3BhY2UKICAgfCBraHRtbF9kZWNscyBtYXli
ZV9zcGFjZQogICB8IGtodG1sX3ZhbHVlIG1heWJlX3NwYWNlCisgIHwga2h0bWxfbWVkaWFxdWVy
eSBtYXliZV9zcGFjZQogICA7CiAKIGtodG1sX3J1bGU6CkBAIC0yOTIsNiArMzIwLDE4IEBAIGto
dG1sX3ZhbHVlOgogICAgIH0KIDsKIAora2h0bWxfbWVkaWFxdWVyeToKKyAgICBLSFRNTF9NRURJ
QVFVRVJZX1NZTSBXSElURVNQQUNFIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5ICd9JyB7CisgICAg
ICAgIENTU1BhcnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJzZXIpOworICAg
ICAgICBwLT5tZWRpYVF1ZXJ5ID0gJDQ7CisgICAgfQorICAgIHwgS0hUTUxfTUVESUFRVUVSWV9T
WU0gV0hJVEVTUEFDRSBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeSBlcnJvciAnfSd7CisgICAgICAg
IENTU1BhcnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJzZXIpOworICAgICAg
ICBwLT5tZWRpYVF1ZXJ5ID0gJDQ7CisgICAgfQorCis7CisKIG1heWJlX3NwYWNlOgogICAgIC8q
IGVtcHR5ICovCiAgIHwgbWF5YmVfc3BhY2UgV0hJVEVTUEFDRQpAQCAtMzg3LDYgKzQyNyw4NiBA
QCBTVFJJTkcKIHwgVVJJCiA7CiAKK21lZGlhX2ZlYXR1cmU6CisgICAgSURFTlQgbWF5YmVfc3Bh
Y2UgeworICAgICAgICBRU3RyaW5nIHN0ciA9IHFTdHJpbmcoJDEpOworCQkkJCA9IGdldE1lZGlh
RmVhdHVyZUlEKCBzdHIubG93ZXIoKS5sYXRpbjEoKSwgc3RyLmxlbmd0aCgpICk7CisgICAgfQor
OworCittYXliZV9tZWRpYV92YWx1ZToKKyAgICAvKmVtcHR5Ki8geworICAgICAgICAkJCA9IDA7
CisgICAgfQorICAgIHwgJzonIG1heWJlX3NwYWNlIGV4cHIgbWF5YmVfc3BhY2UgeworICAgICAg
ICAkJCA9ICQzOworICAgIH0KKzsKKworbWVkaWFfcXVlcnlfZXhwOgorICAgICcoJyBtYXliZV9z
cGFjZSBtZWRpYV9mZWF0dXJlIG1heWJlX3NwYWNlIG1heWJlX21lZGlhX3ZhbHVlICcpJyBtYXli
ZV9zcGFjZSB7CisgICAgICAgICQkID0gbmV3IE1lZGlhUXVlcnlFeHBJbXBsKCQzLCAkNSk7Cisg
ICAgfQorOworCittZWRpYV9xdWVyeV9leHBfbGlzdDoKKyAgICBtZWRpYV9xdWVyeV9leHAgewor
ICAgICAgICAkJCA9IG5ldyBNZWRpYVF1ZXJ5RXhwTGlzdEltcGw7CisgICAgICAgICQkLT5hcHBl
bmQoJDEpOworICAgIH0KKyAgICB8IG1lZGlhX3F1ZXJ5X2V4cF9saXN0IE1FRElBX0FORCBtYXli
ZV9zcGFjZSBtZWRpYV9xdWVyeV9leHAgeworICAgICAgICAkJCA9ICQxOworICAgICAgICBpZiAo
JCQpCisgICAgICAgICAgICAkJC0+YXBwZW5kKCQ0KTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgZGVsZXRlICgkNCk7CisgICAgfQorICAgIHwgbWVkaWFfcXVlcnlfZXhwX2xpc3QgZXJyb3Ig
eworICAgICAgICAvLyBFcnJvciB3aGlsZSBwYXJzaW5nIG1lZGlhIGZlYXR1cmUgbGlzdC4gRGVs
ZXRlIHRoZSBsaXN0IGFuZCByZXR1cm4gMCwgd2hpY2ggbWVhbnMKKyAgICAgICAgLy8gdGhhdCB3
ZSBzaG91bGQgaGFuZGxlIHRoZSBtZWRpYSBxdWVyeSBhcyBjc3MgMi4xIG1lZGlhIHR5cGUgKG9y
IEhUTUw0IG1lZGlhIGRlc2NyaXB0aW9uKQorICAgICAgICBkZWxldGUgKCQxKTsKKyAgICAgICAg
JCQ9MDsKKyAgICB9CisgICA7CisKK21heWJlX21lZGlhX3F1ZXJ5X2V4cF9saXN0OgorICAgIC8q
ZW1wdHkqLyB7CisgICAgICAgICQkID0gbmV3IE1lZGlhUXVlcnlFeHBMaXN0SW1wbDsKKyAgICB9
CisgICAgfCBNRURJQV9BTkQgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnlfZXhwX2xpc3QgeworICAg
ICAgICAkJCA9ICQzOworICAgIH0KKyAgICB8IE1FRElBX0FORCBlcnJvciB7CisgICAgICAgICQk
ID0gMDsKKyAgICB9Cis7CisKK21heWJlX21lZGlhX3Jlc3RyaWN0b3I6CisgICAgLyplbXB0eSov
eworICAgICAgICAkJCA9IE1lZGlhUXVlcnlJbXBsOjpOb25lOworICAgIH0KKyAgICB8IE1FRElB
X09OTFkgeworICAgICAgICAkJCA9IE1lZGlhUXVlcnlJbXBsOjpPbmx5OworICAgIH0KKyAgICB8
IE1FRElBX05PVCB7CisgICAgICAgICQkID0gTWVkaWFRdWVyeUltcGw6Ok5vdDsKKyAgICB9Cis7
CisKK21lZGlhX3F1ZXJ5OgorICAgIG1heWJlX21lZGlhX3Jlc3RyaWN0b3IgbWF5YmVfc3BhY2Ug
bWVkaXVtIG1heWJlX21lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAgaWYgKCQ0KSB7Cisg
ICAgICAgICAgICAkJCA9IG5ldyBNZWRpYVF1ZXJ5SW1wbCgkMSwgZG9tU3RyaW5nKCQzKSwgJDQp
OworICAgICAgICB9IGVsc2UgaWYgKCQxID09IE1lZGlhUXVlcnlJbXBsOjpPbmx5KSB7CisgICAg
ICAgICAgICAkJCA9IG5ldyBNZWRpYVF1ZXJ5SW1wbChNZWRpYVF1ZXJ5SW1wbDo6Tm9uZSwgIm9u
bHkiLCBuZXcgTWVkaWFRdWVyeUV4cExpc3RJbXBsKTsKKyAgICAgICAgfSBlbHNlICBpZiAoJDEg
PT0gTWVkaWFRdWVyeUltcGw6Ok5vdCkgeworICAgICAgICAgICAgJCQgPSBuZXcgTWVkaWFRdWVy
eUltcGwoTWVkaWFRdWVyeUltcGw6Ok5vbmUsICJub3QiLCBuZXcgTWVkaWFRdWVyeUV4cExpc3RJ
bXBsKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICQkID0gbmV3IE1lZGlhUXVlcnlJ
bXBsKE1lZGlhUXVlcnlJbXBsOjpOb25lLCBkb21TdHJpbmcoJDMpLCBuZXcgTWVkaWFRdWVyeUV4
cExpc3RJbXBsKTsKKyAgICAgICAgfQorICAgIH0KKzsKKwogbWF5YmVfbWVkaWFfbGlzdDoKICAg
ICAgLyogZW1wdHkgKi8gewogICAgICAgICAkJCA9IG5ldyBNZWRpYUxpc3RJbXBsKCk7CkBAIC0z
OTksMjMgKzUxOSwyNSBAQCBtZWRpYV9saXN0OgogICAgIC8qIGVtcHR5ICovIHsKICAgICAgICAg
JCQgPSAwOwogICAgIH0KLSAgICB8IG1lZGl1bSB7CisgICAgfCBtZWRpYV9xdWVyeSB7CiAgICAg
ICAgICQkID0gbmV3IE1lZGlhTGlzdEltcGwoKTsKLSAgICAgICAgJCQtPmFwcGVuZE1lZGl1bSgg
ZG9tU3RyaW5nKCQxKS5sb3dlcigpICk7CisgICAgICAgICQkLT5hcHBlbmRNZWRpYVF1ZXJ5KCQx
KTsKICAgICB9Ci0gICAgfCBtZWRpYV9saXN0ICcsJyBtYXliZV9zcGFjZSBtZWRpdW0geworICAg
IHwgbWVkaWFfbGlzdCAnLCcgbWF5YmVfc3BhY2UgbWVkaWFfcXVlcnkgewogICAgICAgICAkJCA9
ICQxOwogICAgICAgICBpZiAoJCQpCi0gICAgICAgICAgICAkJC0+YXBwZW5kTWVkaXVtKCBkb21T
dHJpbmcoJDQpICk7CisgICAgICAgICAgICAkJC0+YXBwZW5kTWVkaWFRdWVyeSgkNCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIGRlbGV0ZSAkNAogICAgIH0KICAgICB8IG1lZGlhX2xpc3Qg
ZXJyb3IgewogICAgICAgICBkZWxldGUgJDE7CiAgICAgICAgICQkID0gMDsKICAgICB9Ci0gICAg
OworOwogCiBtZWRpYToKLSAgICBNRURJQV9TWU0gbWF5YmVfc3BhY2UgbWVkaWFfbGlzdCAneycg
bWF5YmVfc3BhY2UgcnVsZXNldF9saXN0ICd9JyB7CisgICAgTUVESUFfU1lNIG1heWJlX3NwYWNl
IG1heWJlX21lZGlhX2xpc3QgJ3snIG1heWJlX3NwYWNlIHJ1bGVzZXRfbGlzdCAnfScgewogICAg
ICAgICBDU1NQYXJzZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKTsKICAg
ICAgICAgaWYgKCAkMyAmJiAkNiAmJgogICAgICAgICAgICAgIHAtPnN0eWxlRWxlbWVudCAmJiBw
LT5zdHlsZUVsZW1lbnQtPmlzQ1NTU3R5bGVTaGVldCgpICkgewpJbmRleDogV2ViQ29yZS9jc3Mv
dG9rZW5pemVyLmZsZXgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvdG9rZW5pemVyLmZsZXgJ
KHJldmlzaW9uIDEyNTQ0KQorKysgV2ViQ29yZS9jc3MvdG9rZW5pemVyLmZsZXgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNiArMSw4IEBACiAlb3B0aW9uIGNhc2UtaW5zZW5zaXRpdmUKICVvcHRpb24g
bm95eXdyYXAKICVvcHRpb24gOGJpdAorJW9wdGlvbiBzdGFjaworJXMgbWVkaWFxdWVyeQogCiBo
ICAgICAgICAgICAgICAgWzAtOWEtZkEtRl0KIG5vbmFzY2lpICAgICAgICBbXDIwMC1cMzc3XQpA
QCAtMzMsNiArMzUsOSBAQCByYW5nZSAgICAgICAgICAgXD97MSw2fXx7aH0oXD97MCw1fXx7aH0o
CiAiXj0iICAgICAgICAgICAgICAgICAgICB7eXlUb2sgPSBCRUdJTlNXSVRIOyByZXR1cm4geXlU
b2s7fQogIiQ9IiAgICAgICAgICAgICAgICAgICAge3l5VG9rID0gRU5EU1dJVEg7IHJldHVybiB5
eVRvazt9CiAiKj0iICAgICAgICAgICAgICAgICAgICB7eXlUb2sgPSBDT05UQUlOUzsgcmV0dXJu
IHl5VG9rO30KKzxtZWRpYXF1ZXJ5PiJub3QiICAgICAgIHt5eVRvayA9IE1FRElBX05PVDsgcmV0
dXJuIHl5VG9rO30KKzxtZWRpYXF1ZXJ5PiJvbmx5IiAgICAgIHt5eVRvayA9IE1FRElBX09OTFk7
IHJldHVybiB5eVRvazt9Cis8bWVkaWFxdWVyeT4iYW5kIiAgICAgICB7eXlUb2sgPSBNRURJQV9B
TkQ7IHJldHVybiB5eVRvazt9CiAKIHtzdHJpbmd9ICAgICAgICAgICAgICAgIHt5eVRvayA9IFNU
UklORzsgcmV0dXJuIHl5VG9rO30KIApAQCAtNDAsMTUgKzQ1LDE2IEBAIHJhbmdlICAgICAgICAg
ICBcP3sxLDZ9fHtofShcP3swLDV9fHtofSgKIAogIiMie25hbWV9ICAgICAgICAgICAgICAge3l5
VG9rID0gSEFTSDsgcmV0dXJuIHl5VG9rO30KIAotIkBpbXBvcnQiICAgICAgICAgICAgICAge3l5
VG9rID0gSU1QT1JUX1NZTTsgcmV0dXJuIHl5VG9rO30KKyJAaW1wb3J0IiAgICAgICAgICAgICAg
IHtCRUdJTihtZWRpYXF1ZXJ5KTsgeXlUb2sgPSBJTVBPUlRfU1lNOyByZXR1cm4geXlUb2s7fQog
IkBwYWdlIiAgICAgICAgICAgICAgICAge3l5VG9rID0gUEFHRV9TWU07IHJldHVybiB5eVRvazt9
Ci0iQG1lZGlhIiAgICAgICAgICAgICAgICB7eXlUb2sgPSBNRURJQV9TWU07IHJldHVybiB5eVRv
azt9CisiQG1lZGlhIiAgICAgICAgICAgICAgICB7QkVHSU4obWVkaWFxdWVyeSk7IHl5VG9rID0g
TUVESUFfU1lNOyByZXR1cm4geXlUb2s7fQogIkBmb250LWZhY2UiICAgICAgICAgICAge3l5VG9r
ID0gRk9OVF9GQUNFX1NZTTsgcmV0dXJuIHl5VG9rO30KICJAY2hhcnNldCIgICAgICAgICAgICAg
IHt5eVRvayA9IENIQVJTRVRfU1lNOyByZXR1cm4geXlUb2s7fQogIkBuYW1lc3BhY2UiICAgICAg
ICAgICAge3l5VG9rID0gTkFNRVNQQUNFX1NZTTsgcmV0dXJuIHl5VG9rOyB9CiAiQC1raHRtbC1y
dWxlIiAgICB7eXlUb2sgPSBLSFRNTF9SVUxFX1NZTTsgcmV0dXJuIHl5VG9rOyB9CiAiQC1raHRt
bC1kZWNscyIgICB7eXlUb2sgPSBLSFRNTF9ERUNMU19TWU07IHJldHVybiB5eVRvazsgfQogIkAt
a2h0bWwtdmFsdWUiICAge3l5VG9rID0gS0hUTUxfVkFMVUVfU1lNOyByZXR1cm4geXlUb2s7IH0K
KyJALWtodG1sLW1lZGlhcXVlcnkiICAge0JFR0lOKG1lZGlhcXVlcnkpOyB5eVRvayA9IEtIVE1M
X01FRElBUVVFUllfU1lNOyByZXR1cm4geXlUb2s7IH0KIAogIiEie3d9ImltcG9ydGFudCIgICAg
ICAgICB7eXlUb2sgPSBJTVBPUlRBTlRfU1lNOyByZXR1cm4geXlUb2s7fQogCkBAIC03OSw2ICs4
NSw4IEBAIHJhbmdlICAgICAgICAgICBcP3sxLDZ9fHtofShcP3swLDV9fHtofSgKIFVcK3tyYW5n
ZX0gICAgICAgICAgICAgIHt5eVRvayA9IFVOSUNPREVSQU5HRTsgcmV0dXJuIHl5VG9rO30KIFVc
K3tofXsxLDZ9LXtofXsxLDZ9ICAgIHt5eVRvayA9IFVOSUNPREVSQU5HRTsgcmV0dXJuIHl5VG9r
O30KIAorPG1lZGlhcXVlcnk+InsiICAgICAgICAgfAorPG1lZGlhcXVlcnk+IjsiICAgICAgICAg
e0JFR0lOKElOSVRJQUwpOyB5eVRvayA9ICp5eXRleHQ7IHJldHVybiB5eVRvazsgfQogLiAgICAg
ICAgICAgICAgICAgICAgICAge3l5VG9rID0gKnl5dGV4dDsgcmV0dXJuIHl5VG9rO30KIAogJSUK
SW5kZXg6IFdlYkNvcmUvY3NzL21ha2V0b2tlbml6ZXIKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9j
c3MvbWFrZXRva2VuaXplcgkocmV2aXNpb24gMTI1NDQpCisrKyBXZWJDb3JlL2Nzcy9tYWtldG9r
ZW5pemVyCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1MywxNSBAQCB3aGlsZSAoPD4pIHsKICAg
ICBwcmludDsKIH0KIAorIyBtZWRpYSBxdWVyeSwgdG9rZW5pemVyIHN0YXRlIHN1cHBvcnQKK3do
aWxlICg8PikgeworICBsYXN0IGlmIC95eXRleHQvOworfQord2hpbGUgKDw+KSB7CisgIGxhc3Qg
aWYgbm90ICgvZGVmaW5lLyB8fCAvbGluZS8pIDsKKyAgcHJpbnQ7Cit9CisKIHdoaWxlICg8Pikg
ewogICAgIGxhc3QgaWYgL15ZWV9ERUNMLzsKIH0KSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc19tZWRp
YXF1ZXJ5ZXZhbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc19tZWRpYXF1ZXJ5ZXZh
bC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvY3NzX21lZGlhcXVlcnlldmFsLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNjcgQEAKKyNpZm5kZWYgQ1NTX2Nzc19tZWRpYXF1ZXJ5ZXZh
bF9oCisjZGVmaW5lIENTU19jc3NfbWVkaWFxdWVyeWV2YWxfaAorCisjaW5jbHVkZSA8cXN0cmlu
Zy5oPgorI2luY2x1ZGUgPHF2YWx1ZWxpc3QuaD4KKworI2luY2x1ZGUgImNzcy9jc3NfbWVkaWFx
dWVyeWltcGwuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICBjbGFzcyBGcmFtZVZpZXc7Cisg
IGNsYXNzIFJlbmRlclN0eWxlOworfQorCituYW1lc3BhY2UgRE9NIHsKKyAgY2xhc3MgTWVkaWFM
aXN0SW1wbDsKKworLyoqCisgKiBDbGFzcyB0aGF0IGV2YWx1YXRlcyBjc3MgbWVkaWEgcXVlcmll
cyBhcyBkZWZpbmVkIGluCisgKiBDU1MzIE1vZHVsZSAiTWVkaWEgUXVlcmllcyIgKGh0dHA6Ly93
d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLykKKyAqIFNwZWNpYWwgY29uc3RydWN0b3Jz
IGFyZSBuZWVkZWQsIGlmIHNpbXBsZSBtZWRpYSBxdWVyaWVzIGFyZSB0byBiZQorICogZXZhbHVh
dGVkIHdpdGhvdXQga25vd2xlZGdlIG9mIHRoZSBtZWRpdW0gZmVhdHVyZXMuIFRoaXMgY2FuIGhh
cHBlbgorICogZm9yIGV4YW1wbGUgd2hlbiBwYXJzaW5nIFVBIHN0eWxlc2hlZXRzLCBpZiBldmFs
dWF0aW9uIGlzIGRvbmUKKyAqIHJpZ2h0IGFmdGVyIHBhcnNpbmcuCisgKgorICogdGhlIGJvb2xl
YW4gcGFyYW1ldGVyIGlzIHVzZWQgdG8gYXBwcm94aW1hdGUgcmVzdWx0cyBvZiBldmFsdWF0aW9u
LCBpZgorICogdGhlIGRldmljZSBjaGFyYWN0ZXJpc3RpY3MgYXJlIG5vdCBrbm93bi4gVGhpcyBj
YW4gYmUgdXNlZCB0byBwcnVuZSB0aGUgbG9hZGluZworICogb2Ygc3R5bGVzaGVldHMgdG8gb25s
eSB0aG9zZSB3aGljaCBhcmUgcHJvYmFibGUgdG8gbWF0Y2guCisgKi8KK2NsYXNzIE1lZGlhUXVl
cnlFdmFsdWF0b3IKK3sKK3B1YmxpYzoKKwkvKiogQ3JlYXRlcyBldmFsdWF0b3Igd2hpY2ggZXZh
bHVhdGVzIG9ubHkgc2ltcGxlIG1lZGlhIHF1ZXJpZXMKKwkgKiAgRXZhbHVhdG9yIHJldHVybnMg
dHJ1ZSBmb3IgImFsbCIsIGFuZCByZXR1cm5zIHZhbHVlIG9mIFxtZWRpYUZlYXR1cmVSZXN1bHQK
KyAgICAgKiAgZm9yIGFueSBtZWRpYSBmZWF0dXJlcworCSAqLworICAgIE1lZGlhUXVlcnlFdmFs
dWF0b3IoYm9vbCBtZWRpYUZlYXR1cmVSZXN1bHQgPSBmYWxzZSk7CisKKyAgICAvKiogQ3JlYXRl
cyBldmFsdWF0b3Igd2hpY2ggZXZhbHVhdGVzIG9ubHkgc2ltcGxlIG1lZGlhIHF1ZXJpZXMKKyAg
ICAgKiAgRXZhbHVhdG9yICByZXR1cm5zIHRydWUgZm9yIGFjY2VwdGVkTWVkaWFUeXBlLCBidXQg
bm90IGFueSBtZWRpYSBmZWF0dXJlcworICAgICAqLworICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Io
Y29uc3QgUVN0cmluZyYgYWNjZXB0ZWRNZWRpYVR5cGUsIGJvb2wgbWVkaWFGZWF0dXJlUmVzdWx0
ID0gZmFsc2UpOworCisgICAgLyoqIENyZWF0ZXMgZXZhbHVhdG9yIHdoaWNoIGV2YWx1YXRlcyBm
dWxsIG1lZGlhIHF1ZXJpZXMKKyAgICAgKi8KKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0
IFFTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBlLCBGcmFtZVZpZXcqIHZpZXcsCisgICAgCQkJCQlr
aHRtbDo6UmVuZGVyU3R5bGUqIHN0eWxlKTsKKworICAgIH5NZWRpYVF1ZXJ5RXZhbHVhdG9yKCk7
CisKKyAgICBib29sIG1lZGlhVHlwZU1hdGNoKGNvbnN0IFFTdHJpbmcmIG1lZGlhVHlwZVRvTWF0
Y2gpIGNvbnN0OworCisJLyoqIEV2YWx1YXRlcyBhIGxpc3Qgb2YgbWVkaWEgcXVlcmllcyAqLwor
ICAgIGJvb2wgZXZhbChjb25zdCBET006Ok1lZGlhTGlzdEltcGwqIHF1ZXJ5KSBjb25zdDsKKwor
ICAgIC8qKiBFdmFsdWF0ZXMgbWVkaWEgcXVlcnkgc3ViZXhwcmVzc2lvbiwgaWUgImFuZCAobWVk
aWEtZmVhdHVyZTogdmFsdWUpIiBwYXJ0ICovCisgICAgYm9vbCBldmFsKGNvbnN0IERPTTo6TWVk
aWFRdWVyeUV4cEltcGwqIGV4cHIpIGNvbnN0OworCitwcml2YXRlOgorCisgICAgUVN0cmluZyBt
X21lZGlhVHlwZTsKKyAgICBXZWJDb3JlOjpGcmFtZVZpZXcqIG1fdmlldzsgLy8gbm90IG93bmVk
CisgICAgV2ViQ29yZTo6UmVuZGVyU3R5bGUqIG1fc3R5bGU7IC8vIG5vdCBvd25lZAorICAgIGJv
b2wgbV9leHBSZXN1bHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZQorI2VuZGlmCg==
</data>
<flag name="review"
          id="1498"
          type_id="1"
          status="-"
          setter="mjs"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8019</attachid>
            <date>2006-04-28 04:50:50 -0700</date>
            <delta_ts>2006-05-24 00:42:40 -0700</delta_ts>
            <desc>Revised test cases for CSS Media Queries</desc>
            <filename>mediaqueries-2006-28-4-LayoutTests.patch</filename>
            <type>text/plain</type>
            <size>67181</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0MDk2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsOTkgQEAKKzIwMDYtMDQtMjggIEtpbW1vIEtpbm51bmVuICA8
a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+CisKKyAgIDxodHRwOi8vYnVnemlsbGEub3BlbmRh
cndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTQxMjc+CisJVGVzdCBjYXNlcyBmb3IgQ1NTIE1lZGlh
IFF1ZXJpZXMgaW1wbGVtZW50YXRpb24KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGZhc3QvbWVkaWEvMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9tZWRpYS8wMDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRp
YS8wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAwMi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAwMy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvbWVkaWEvMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVk
aWEvMDA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMDQuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMDVhLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9tZWRpYS8wMDVhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bWVkaWEvMDA1Yi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDA1
Yi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAwNWMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAwNWMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9tZWRpYS8wMDVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRp
YS8wMDVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDA2LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMDYuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9tZWRpYS8wMDctZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhLzAwNy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAwOC1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDA4Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvbWVkaWEvMDA5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9t
ZWRpYS8wMDkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMTAtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAxMC5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L21lZGlhLzAxMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bWVkaWEvMDExLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDEyLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMTIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYS8wMTNhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYS8wMTNhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDEzYi1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDEzYi5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L21lZGlhLzAxM2MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L21lZGlhLzAxM2MuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMTNk
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMTNkLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDE0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYS8wMTQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8w
MTUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAxNS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAxNi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbWVkaWEvMDE2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEv
MDE3YS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDE3YS5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAxN2ItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L21lZGlhLzAxN2IuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9t
ZWRpYS8wMTdjLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMTdj
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDE3ZC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDE3ZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L21lZGlhLzAxOC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEv
MDE4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDE5LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMTkuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9tZWRpYS8wMjAtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlh
LzAyMC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAyMS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDIxLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbWVkaWEvMDIyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRp
YS8wMjIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMjMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAyMy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L21lZGlhLzAyNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVk
aWEvMDI0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDI1LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMjUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9tZWRpYS8wMjVhLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9t
ZWRpYS8wMjVhLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDI1Yi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDI1Yi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L21lZGlhLzAyNWMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L21lZGlhLzAyNWMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMjVkLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMjVkLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbWVkaWEvMDI2LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9tZWRpYS8wMjYuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMjdh
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMjdhLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvMDI3Yi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbWVkaWEvMDI3Yi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlh
LzAyN2MtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhLzAyN2MuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS8wMjdkLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9tZWRpYS8wMjdkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bWVkaWEvaW1wb3J0LXAtZ3JlZW4uY3NzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL2lt
cG9ydC1wLXJlZC5jc3M6IEFkZGVkLgorCiAyMDA2LTA0LTI4ICBFcmljIFNlaWRlbCAgPGVzZWlk
ZWxAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IGFuZGVyc2NhLgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjdkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS8wMjdkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhLzAyN2QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzeW50YWN0aWNhbGx5IGNvcnJlY3Qg
cXVlcnkgd2l0aCBpbnZhbGlkIG1lZGlhIGZlYXR1cmUgc2hvdWxkIGV2YWwgZmFsc2UuIFVzaW5n
IHN0eWxlIGVsZW1lbnQsIGNzcyBtZWRpYSBydWxlLjwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVs
cCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorCis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9yOiBncmVlbiB9CisKK0BtZWRpYSBhbGwg
YW5kIChpbnZhbGlkKSB7CitwIHsgY29sb3I6IHJlZCB9Cit9Cis8L3N0eWxlPgorCisKKzwvaGVh
ZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTItZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDEyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDEyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA5Njh4NjAwCisg
IFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDc4NXg1ODUKK2xheWVyIGF0ICgwLDApIHNpemUg
OTY4eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4NTg0CisgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM4MXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDM4MTogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQg
aXMgbmFycm93ZXIgdGhhbiA2MGVtLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0
KSBzaXplIDk2MHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxMjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAxMjM6ICJkaXYgb2YgbGVuZ3RoIDYwIGVtIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsNTIpIHNpemUgODAweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDEyNDogImRpdiBvZiBsZW5ndGggODAwcHgiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhLzAwNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS8wMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS8wMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xv
cj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI0LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTYtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4NjQyCisgIFJlbmRlckNhbnZh
cyBhdCAoMCwwKSBzaXplIDc4NXg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDYwMAorICBS
ZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCisgICAgUmVuZGVyQm9keSB7
Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAs
MCkgc2l6ZSA3Njl4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDMxOXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDMxOTogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgaGVpZ2h0IGlzIGF0IGxlYXN0IDMw
ZXggLiIKKyAgICAgIFJlbmRlckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDAsMzQpIHNpemUg
MTE1eDIyOSBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAxMTV4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMTU6
ICJkaXYgb2YgaGVpZ2h0IDMwZXgiCisgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtESVZ9
IGF0ICgxMTUsMzQpIHNpemUgMTI0eDYwMCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxMjQ6ICJkaXYgb2YgaGVpZ2h0IDYwMHB4IgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMTNkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhLzAxM2QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMTNkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCww
KSBzaXplIDc4NXg1ODUKK2xheWVyIGF0ICgwLDApIHNpemUgODA4eDYwMAorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3Njl4NTg0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3
Njl4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDM2MHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM2MDogIlRo
aXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgd2lkZXIgdGhhbiAzMGVtLiIK
KyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDQ4MHgxOCBbYmdjb2xvcj0j
QUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjN4MTgK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjM6ICJkaXYgb2YgbGVuZ3RoIDMw
IGVtIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTIpIHNpemUgODAweDE4IFtiZ2Nv
bG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEy
NHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyNDogImRpdiBvZiBsZW5n
dGggODAwcHgiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwNWMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA1Yy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwNWMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAor
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwOC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwOC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9E
WX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkg
c2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDMwOHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMw
ODogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgY29sb3IgZGlzcGxheSBpcyB1c2VkLiIK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI1YS1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjVhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI1YS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
ckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVy
Qm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0g
YXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMjdhLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhLzAyN2EtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMjdhLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4
IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDAp
IHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4
NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhp
cyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAx
N2QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE3
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAx
N2QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3
NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4
MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMTd4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMTc6ICJUaGlzIHRleHQgc2hvdWxkIGJl
IGdyZWVuIG9uIGJpdG1hcCBjb2xvciBkZXZpY2VzLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvaW1wb3J0LXAtZ3JlZW4uY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvaW1wb3J0LXAtZ3JlZW4uY3NzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9pbXBvcnQtcC1ncmVlbi5jc3MJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK3Ag
eyAgY29sb3I6IGdyZWVuIH0KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIwLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjAuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIwLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVz
dDogc3R5bGVzaGVldCBtZWRpYS5tZWRpYVRleHQgcHJvcGVydHkgaW5zcGVjdGlvbiBzaG91bGQg
d29yazwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RS
L2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLVN0eWxlL3N0eWxlc2hlZXRzLmh0bWwiIC8+
CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImJyYWlsbGUsIG1lZGlhIHdpdGggZXJy
b3IsIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6MCksIHR0eSByZXNvbHV0aW9uID4gNjAw
cHgiPgorI3Jlc3VsdCB7IGNvbG9yOiBncmVlbjsgfQorPC9zdHlsZT4KKworPHNjcmlwdCBsYW5n
dWFnZT0iamF2YXNjcmlwdCI+CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHJlID0gZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgIHJlLmlubmVySFRNTCA9ICJzdGFydGVkIjsK
KyAgICByZS5pbm5lckhUTUwgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYS5pdGVtKDAp
CisgICAgICAgICAgICAgICAgICAgICsgIiwgIiArIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLm1l
ZGlhLml0ZW0oMSkKKyAgICAgICAgICAgICAgICAgICAgKyAiLCAiICsgZG9jdW1lbnQuc3R5bGVT
aGVldHNbMF0ubWVkaWEuaXRlbSgyKQorICAgICAgICAgICAgICAgICAgICArICIsICIgKyBkb2N1
bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYS5pdGVtKDMpIDsKK30KKzwvc2NyaXB0PgorCis8L2hl
YWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD4gVGhlIHRleHQgYmVsb3cgc2hvdWxkIGJl
IGdyZWVuIGFuZCBjb250YWluICJicmFpbGxlLCBtZWRpYSwgc2NyZWVuIGFuZCAoY29sb3IpIGFu
ZCAoZ3JpZDogMCksIHR0eSIuIDwvcD4KKzxwIGlkPSJyZXN1bHQiPnRlc3Qgbm90IHJ1bjwvcD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDEyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTIuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDEyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVz
dDogcmVsYXRpdmUgY29uc3RyYWludHMgdGVzdCB1c2luZyBzY3JlZW4gYW5kIChtYXgtd2lkdGg6
IDYwZW0pPC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9y
Zy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jd2lkdGgiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyI+CitwIHsgY29sb3I6IHJlZCB9CitAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2MGVt
KSB7CitwIHsgY29sb3I6IGdyZWVuIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKwor
PHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgbmFycm93ZXIgdGhh
biA2MGVtLiAgPC9wPgorCis8ZGl2IHN0eWxlPSJ3aWR0aDogNjBlbTsgYmFja2dyb3VuZC1jb2xv
cjogbGlnaHRibHVlOyI+IGRpdiBvZiBsZW5ndGggNjAgZW0gPC9kaXY+Cis8ZGl2IHN0eWxlPSJ3
aWR0aDogODAwcHg7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBkaXYgb2YgbGVuZ3Ro
IDgwMHB4IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS8wMDQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwNC5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDQuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1l
ZGlhIHF1ZXJ5IHRlc3Q6IG1lZGlhIG9ubHkgYWxsPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4K
KworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRpYSBvbmx5IGFsbCB7CitwIHsgY29sb3I6
IGdyZWVuIH0KK30KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBz
aG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS8wMjQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
LzAyNC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjQuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5D
U1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IG1lZGlhIG5vdCBzY3JlZW4gc2hvdWxkIGV2YWwgZmFsc2U8
L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2Nz
czMtbWVkaWFxdWVyaWVzLyIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6
IGdyZWVuIH0KKzwvc3R5bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJub3Qgc2Ny
ZWVuIj4KK3AgeyBjb2xvcjogcmVkIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBU
aGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE2Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS8wMTYuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvMDE2Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogcmVsYXRpdmUgY29uc3RyYWludHMgdGVz
dCB1c2luZyBzY3JlZW4gYW5kIChtaW4taGVpZ2h0OiAzMGV4KTwvdGl0bGU+ICAKKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dp
ZHRoIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9yOiByZWQgfQorQG1l
ZGlhIHNjcmVlbiBhbmQgKG1pbi1oZWlnaHQ6IDMwZXgpIHsKK3AgeyBjb2xvcjogZ3JlZW4gfQor
fQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBn
cmVlbiBpZiBoZWlnaHQgaXMgYXQgbGVhc3QgMzBleCAuPC9wPgorCis8ZGl2IHN0eWxlPSJkaXNw
bGF5OmlubGluZTsgZmxvYXQ6bGVmdDsgaGVpZ2h0OiAzMGV4OyBiYWNrZ3JvdW5kLWNvbG9yOiBs
aWdodGJsdWU7Ij4gZGl2IG9mIGhlaWdodCAzMGV4IDwvZGl2PgorPGRpdiBzdHlsZT0iZGlzcGxh
eTppbmxpbmU7IGZsb2F0OmxlZnQ7IGhlaWdodDogNjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGxp
Z2h0Ymx1ZTsiPiBkaXYgb2YgaGVpZ2h0IDYwMHB4IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDVjLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDVjLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhLzAwNWMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPGh0
bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IG5vdCBicmFpbGxlLCBz
Y3JlZW4uIFVzaW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBAaW1wb3J0IHJ1bGU8L3RpdGxlPiAgCis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVy
aWVzLyNzeW50YXgiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQGltcG9ydCB1cmwoaW1w
b3J0LXAtZ3JlZW4uY3NzKSBub3QgYnJhaWxsZSwgc2NyZWVuOworPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTNkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTNkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhLzAxM2QuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyNCBA
QAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHJlbGF0aXZl
IGNvbnN0cmFpbnRzIHRlc3QgdXNpbmcgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzMGVtKS4gVXNp
bmcgc3R5bGUgZWxlbWVudCwgY3NzIEBtZWRpYSBydWxlIDwvdGl0bGU+ICAKKzxsaW5rIHJlbD0i
aGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRo
IiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7CisgIGNvbG9yOiByZWQ7Cit9CitA
bWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzMGVtKSB7CisgICBwIHsKKyAgICAgY29sb3I6
IGdyZWVuOworICB9Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxwPiBUaGlzIHRl
eHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIHdpZGVyIHRoYW4gMzBlbS4gIDwvcD4K
KworPGRpdiBzdHlsZT0id2lkdGg6IDMwZW07IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsi
PiBkaXYgb2YgbGVuZ3RoIDMwIGVtIDwvZGl2PgorPGRpdiBzdHlsZT0id2lkdGg6IDgwMHB4OyBi
YWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCA4MDBweCA8L2Rpdj4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA4Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDguaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA4Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVz
dDogc2NyZWVuIGFuZCAoY29sb3IpPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0
cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI2NvbG9yIiAvPgorCis8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgorQG1lZGlhIHNjcmVlbiBhbmQgKGNvbG9yKSB7CitwIHsgY29sb3I6
IGdyZWVuIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuIGlmIGNvbG9yIGRpc3BsYXkgaXMgdXNlZC48L3A+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNWEuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNWEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvMDI1YS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBA
Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3ludGFjdGlj
YWxseSBpbnZhbGlkIG1lZGlhIHF1ZXJ5IGluc2lkZSBodG1sIGVsZW1lbnQgc2hvdWxkIGJlIHRy
ZWF0ZWQgYXMgaHRtbCBtZWRpYSBkZXNjcmlwdG9yLiBVc2luZyBzdHlsZSBlbGVtZW50LCBtZWRp
YSBhdHRyaWJ1dGUuPC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3
LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyIgbWVkaWE9ImFsbCBhbmQgaW52YWxpZCI+CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+
CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjdhLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjdhLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyN2EuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRl
c3Q6IHN5bnRhY3RpY2FsbHkgY29ycmVjdCBxdWVyeSB3aXRoIGludmFsaWQgbWVkaWEgZmVhdHVy
ZSBzaG91bGQgZXZhbCBmYWxzZS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgbWVkaWEgYXR0cmlidXRl
LjwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv
Y3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3AgeyBjb2xv
cjogZ3JlZW4gfQorPC9zdHlsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCBh
bmQgKGludmFsaWQpIj4KK3AgeyBjb2xvcjogcmVkIH0KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNh
bnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9k
eSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQg
KDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS8wMTdkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS8wMTdkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxN2Qu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6MCkg
c2hvdWxkIGV2YWx1YXRlIHRydWUuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBAbWVkaWEgcnVs
ZTwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv
Y3NzMy1tZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitA
bWVkaWEgc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDowKSB7CisgICAgcCB7CisgICAgICAg
IGNvbG9yOiBncmVlbjsKKyAgICB9Cit9Cis8L3N0eWxlPgorCis8L2hlYWQ+Cis8Ym9keT4KKzxw
PiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIG9uIGJpdG1hcCBjb2xvciBkZXZpY2VzLjwvcD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIxLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAw
eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDU2MHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDU2MDogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gYW5kIGJlbG93IHNob3VsZCBy
ZWFkIFwiYnJhaWxsZSwgbm90IHNjcmVlbiwgc2NyZWVuIGFuZCAoY29sb3IpXCIuIgorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMDR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCAzMDQ6ICJicmFpbGxlLCBub3Qgc2NyZWVuLCBzY3JlZW4gYW5kIChjb2xvciksIG5v
dCBzY3JlZW4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgpIHNpemUgNzg0eDE4Cisg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4MngxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE4MjogImV4cGVjdGVkIHRvIGZhaWwgKDI0LjA3LjIw
MDUpIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTNhLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxM2EtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTNhLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisg
IFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDc4NXg1ODUKK2xheWVyIGF0ICgwLDApIHNpemUg
ODA4eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4NTg0CisgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM2MHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDM2MDogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQg
aXMgd2lkZXIgdGhhbiAzMGVtLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBz
aXplIDQ4MHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAxMjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAx
MjM6ICJkaXYgb2YgbGVuZ3RoIDMwIGVtIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
NTIpIHNpemUgODAweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDEyNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDEyNDogImRpdiBvZiBsZW5ndGggODAwcHgiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhLzAyNS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS8wMjUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS8wMjUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgw
LDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0
eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0j
MDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxk
IGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE3YS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTdhLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE3YS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMxN3gxOAorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDMxNzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gb24gYml0
bWFwIGNvbG9yIGRldmljZXMuIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDktZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA5LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA5LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzgxeDE4CisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzgxOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBp
ZiB2aWV3cG9ydCB3aWR0aCBpcyBhdCBsZWFzdCA2MDBweC4iCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhLzAwNWQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvMDA1ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhLzAwNWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgp
IHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4
IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRl
eHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI1Yi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjViLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI1Yi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2Cisg
ICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBd
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3Jl
ZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjdiLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyN2ItZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjdiLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBS
ZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2Nr
IHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhLzAwMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvMDAxLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
LzAwMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPkhUTUw0IG1lZGlhIGRlc2NyaXB0aW9ucyB0ZXN0OiBwYXJzaW5nIHN0eWxlIGVsZW1l
bnQgbWVkaWE9IGNvbnRlbnQ8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8v
d3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3R5cGVzLmh0bWwjaC02LjEzIiAvPgorCis8c3R5bGUg
dHlwZT0idGV4dC9jc3MiIG1lZGlhPSIzZC1nbGFzc2VzLCBzY3JlZW4gYW5kIHJlc29sdXRpb24g
PiA0MGRwaSwgYnJhaWxsZSI+CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+CisKKzwvaGVh
ZD4KKzxib2R5PgorPC9ib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIDwvcD4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIxLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjEuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIxLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUg
QEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3R5bGVz
aGVldCBtZWRpYSBhcHBlbmRNZWRpdW0gc2hvdWxkIHdvcms8L3RpdGxlPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4
IiAvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2
ZWwtMi1TdHlsZS9zdHlsZXNoZWV0cy5odG1sIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBt
ZWRpYT0iYnJhaWxsZSwgbm90IHNjcmVlbiI+CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+
CisKKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorZnVuY3Rpb24gdGVzdCgpIHsKKyAg
ICB2YXIgcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgdmFyIG1l
ZGlhID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWE7CisgICAgbWVkaWEuYXBwZW5kTWVk
aXVtKCJzY3JlZW4gYW5kIChjb2xvcikiKTsKKyAgICBtZWRpYS5hcHBlbmRNZWRpdW0oIm5vdCBz
Y3JlZW4iKTsKKyAgICB2YXIgZmlyc3QgPSB0cnVlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
bWVkaWEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFmaXJzdCkgIHJlLmlubmVySFRNTCAr
PSAiLCAiICsgbWVkaWEuaXRlbShpKTsKKyAgICAgICAgZWxzZSByZS5pbm5lckhUTUwgPSBtZWRp
YS5pdGVtKGkpOworICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgIH0KKworfQorPC9zY3JpcHQ+
CisKKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzwhLS0gWFhYOiBOT1RFISBUaGlz
IHdpbGwgZmFpbCB1bnRpbCBkeW5hbWljIHNldHRpbmcgb2YgbWVkaWEgcHJvcGVydHkgY2F1c2Vz
IHN0eWxlIHJlY2FsY3VsYXRpb24uCisgICAgICAgICAgVGhpcyBpcyBub3QgdGhlIGNhc2UgY3Vy
cmVudGx5ICgyNC4wNy4yMDA1KQorLS0+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBh
bmQgYmVsb3cgc2hvdWxkIHJlYWQgImJyYWlsbGUsIG5vdCBzY3JlZW4sIHNjcmVlbiBhbmQgKGNv
bG9yKSIuIDwvcD4KKzxwIGlkPSJyZXN1bHQiPnRlc3Qgbm90IHJ1bjwvcD4KKzxwPiBleHBlY3Rl
ZCB0byBmYWlsICgyNC4wNy4yMDA1KTwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvMDEzYS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvMDEzYS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS8wMTNhLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTggQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiByZWxhdGl2ZSBjb25zdHJhaW50cyB0ZXN0
IHVzaW5nIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzBlbSkuIFVzaW5nIHN0eWxlIGVsZW1lbnQs
IG1lZGlhIGF0dHJpYnV0ZSA8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKzxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzBlbSkiPgorcCB7Cisg
ICAgY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCis8cD4gVGhp
cyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyB3aWRlciB0aGFuIDMwZW0uICA8
L3A+CisKKzxkaXYgc3R5bGU9IndpZHRoOiAzMGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJs
dWU7Ij4gZGl2IG9mIGxlbmd0aCAzMCBlbSA8L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOiA4MDBw
eDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBsZW5ndGggODAwcHggPC9k
aXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI1Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDIzIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5
IHRlc3Q6IG1lZGlhIGFsbCBhbmQgaW52YWxpZCBzaG91bGQgZXZhbCBmYWxzZSA8L3RpdGxlPiAg
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFx
dWVyaWVzLyIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3AgeworICAgIGNvbG9yOiBn
cmVlbjsKK30KKworQG1lZGlhIGFsbCBhbmQgaW52YWxpZCB7CitwIHsKKyAgICBjb2xvcjogcmVk
OworfQorfQorPC9zdHlsZT4KKworCis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvMDI1Yi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
MDI1Yi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjViLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3ludGFjdGljYWxseSBpbnZhbGlkIG1lZGlhIHF1ZXJ5
IGluc2lkZSBodG1sIGVsZW1lbnQgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgbWVkaWEgZGVzY3JpcHRv
ci4gVXNpbmcgbGluayBlbGVtZW50LCBtZWRpYSBhdHRyaWJ1dGUuPC90aXRsZT4gIAorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8i
IC8+CisKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJhbGwg
YW5kIGludmFsaWQiIGhyZWY9ImltcG9ydC1wLWdyZWVuLmNzcyIgLz4KKworPC9oZWFkPgorPGJv
ZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwOS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhLzAwOS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IGltcG9ydCB3aXRoIHNj
cmVlbiBhbmQgKG1pbi13aWR0aDogNjAwcHgpIDwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyIgLz4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvY2FzY2FkZS5odG1sI2F0
LWltcG9ydCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3AgeyBjb2xvcjogcmVkIH0K
Kzwvc3R5bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQGltcG9ydCB1cmwoaW1wb3J0LXAt
Z3JlZW4uY3NzKSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KTsKKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IHdp
ZHRoIGlzIGF0IGxlYXN0IDYwMHB4LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvMDE3YS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvMDE3YS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS8wMTdhLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAo
Z3JpZDowKSBzaG91bGQgZXZhbHVhdGUgdHJ1ZS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgbWVkaWEg
YXR0cmlidXRlPC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAvPgorCis8c3R5bGUgdHlwZT0idGV4
dC9jc3MiIG1lZGlhPSJzY3JlZW4gYW5kIChjb2xvcikgYW5kIChncmlkOjApIj4KK3AgeworICAg
IGNvbG9yOiBncmVlbjsKK30KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4gb24gYml0bWFwIGNvbG9yIGRldmljZXMuPC9wPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDVkLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDVkLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwNWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxOCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBu
b3QgYnJhaWxsZSwgc2NyZWVuLiBVc2luZyBzdHlsZSBlbGVtZW50LCBjc3MgQG1lZGlhIHJ1bGU8
L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2Nz
czMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitA
bWVkaWEgbm90IGJyYWlsbGUsIHNjcmVlbiB7IAorICAgIHAgeworICAgICAgICBjb2xvcjogZ3Jl
ZW47CisgICAgfQorfQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhLzAyN2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhLzAyN2IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI3
Yi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3ludGFjdGljYWxseSBjb3JyZWN0IHF1ZXJ5IHdp
dGggaW52YWxpZCBtZWRpYSBmZWF0dXJlIHNob3VsZCBldmFsIGZhbHNlLiBVc2luZyBsaW5rIGVs
ZW1lbnQsIG1lZGlhIGF0dHJpYnV0ZS48L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9
Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyIgLz4KKworPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KK3AgeyBjb2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKzxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJhbGwgYW5kIChpbnZhbGlkKSIgaHJl
Zj0iaW1wb3J0LXAtcmVkLmNzcyIgLz4KKworCis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRl
eHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvMDEwLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhLzAxMC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhLzAxMC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBA
QAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7
SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4
MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDM3OHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM3ODogIlRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld2luZyBkZXZpY2UgaXMgYml0bWFwIGRldmljZSIK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNh
bnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9k
eSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQg
KDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS8wMjItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvMDIyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvMDIyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRN
TH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkg
c2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgK
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDQ1eDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDQ1OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
biBhbmQgYmVsb3cgc2hvdWxkIHJlYWQgXCJtZWRpYSBsaXN0IGlzIGVtcHR5XCIuIgorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMTd4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCAxMTc6ICJtZWRpYSBsaXN0IGlzIGVtcHR5IgorICAgICAgUmVuZGVyQmxvY2sge1B9
IGF0ICgwLDY4KSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAxNzd4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNzc6ICJF
eHBlY3RlZCB0byBmYWlsICgyNC43LjIwMDUpIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS8wMTQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
MDE0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
MDE0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA5Njh4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDc4NXg1ODUK
K2xheWVyIGF0ICgwLDApIHNpemUgOTY4eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAs
MCkgc2l6ZSA3ODV4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4
NTg0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTggW2NvbG9yPSMw
MDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDcyOHgxOAor
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcyODogIlRoaXMgdGV4dCBzaG91bGQg
YmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgbmFycm93ZXIgdGhhbiA2MGVtLiBUaGlzIHRlc3RzIHRo
YXQgKG1pbi13aWR0aDogNjBlbSkgY2FuIGV2YWx1YXRlIHRvIGZhbHNlLiIKKyAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDk2MHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjN4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjM6ICJkaXYgb2YgbGVuZ3RoIDYwIGVtIgorICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTIpIHNpemUgODAweDE4IFtiZ2NvbG9yPSNBREQ4RTZd
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyNHgxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyNDogImRpdiBvZiBsZW5ndGggODAwcHgiCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxM2ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDEzYi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxM2ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE0IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVy
Q2FudmFzIGF0ICgwLDApIHNpemUgNzg1eDU4NQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAw
CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2MDAKKyAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMCwwKSBzaXplIDc2OXgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMzYweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMzYwOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyB3aWRl
ciB0aGFuIDMwZW0uIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzQpIHNpemUgNDgw
eDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDEyM3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyMzogImRp
diBvZiBsZW5ndGggMzAgZW0iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6
ZSA4MDB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMTI0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI0
OiAiZGl2IG9mIGxlbmd0aCA4MDBweCIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA1
YS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDVh
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA1
YS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgw
MDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDYtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA2LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA2LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisg
IFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDc4NXg1ODUKK2xheWVyIGF0ICgwLDApIHNpemUg
ODA4eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4NTg0CisgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM3OHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDM3ODogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQg
aXMgYXQgbW9zdCA4MDBweCB3aWRlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0
KSBzaXplIDgwMHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxMjF4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAxMjE6ICJkaXYgb2Ygd2lkdGggODAwcHgiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
LzAyNi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8w
MjYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8w
MjYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3
NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4
MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJl
IGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE4LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxOC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxOC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTdiLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhLzAxN2ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTdiLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBz
aXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMzE3eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzE3
OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBvbiBiaXRtYXAgY29sb3IgZGV2aWNlcy4iCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNWMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI1Yy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNWMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJD
YW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJv
ZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0
ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvMDI3Yy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS8wMjdjLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvMDI3Yy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBA
QAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7
SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4
MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTAu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMC5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTAuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVy
eSB0ZXN0OiBpbXBvcnQgd2l0aCBzY3JlZW4gYW5kIChncmlkOiAwKSA8L3RpdGxlPiAgCis8bGlu
ayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVz
LyIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRpYSBzY3JlZW4gYW5kIChncmlk
OiAwKSB7CitwIHsgY29sb3I6IGdyZWVuIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdpbmcgZGV2aWNlIGlzIGJpdG1h
cCBkZXZpY2U8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvMDAyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDIu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDAyLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+SFRNTDQg
bWVkaWEgZGVzY3JpcHRpb25zIHRlc3Q6IHBhcnNpbmcgc3R5bGUgZWxlbWVudCBtZWRpYT0gY29u
dGVudDwvdGl0bGU+IAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9U
Ui9SRUMtaHRtbDQwL3R5cGVzLmh0bWwjaC02LjEzIiAvPgorPCEtLSBhY3R1YWwgdGVzdGNhc2Ug
ZnJvbSBodHRwOi8vd3d3LmhpeGllLmNoL3Rlc3RzL2V2aWwvY3NzL2ltcG9ydC9leHRyYS9zdHls
ZWV4b3RpY21lZGlhLmh0bWwgLS0+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNj
cmVlbjticmFpbGxlIj4KK3AgeyBjb2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKworPC9oZWFkPgor
PGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMi5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhLzAyMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHN0eWxlc2hlZXQg
bWVkaWEgZGVsZXRlTWVkaXVtIHNob3VsZCB3b3JrPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMi1TdHlsZS9z
dHlsZXNoZWV0cy5odG1sIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYnJhaWxs
ZSwgbm90IHNjcmVlbiI+CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+CisKKzxzY3JpcHQg
bGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2YXIgcmUgPSBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgdmFyIG1lZGlhID0gZG9jdW1l
bnQuc3R5bGVTaGVldHNbMF0ubWVkaWE7CisgICAgbWVkaWEuYXBwZW5kTWVkaXVtKCJzY3JlZW4g
YW5kIChjb2xvcikiKTsKKyAgICB3aGlsZSAobWVkaWEubGVuZ3RoKSB7CisgICAgICAgIG1lZGlh
LmRlbGV0ZU1lZGl1bShtZWRpYS5pdGVtKDApKTsKKyAgICB9CisgICAgcmUuaW5uZXJIVE1MID0g
Im1lZGlhIGxpc3QgaXMgZW1wdHkiCisgICAgdmFyIGZpcnN0ID0gdHJ1ZTsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IG1lZGlhLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICghZmlyc3QpICBy
ZS5pbm5lckhUTUwgKz0gIiwgIiArIG1lZGlhLml0ZW0oaSk7CisgICAgICAgIGVsc2UgcmUuaW5u
ZXJIVE1MID0gbWVkaWEuaXRlbShpKTsKKyAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICB9Cit9
Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPCEtLSBYWFg6
IE5PVEUhIFRoaXMgd2lsbCBmYWlsIHVudGlsIGR5bmFtaWMgc2V0dGluZyBvZiBtZWRpYSBwcm9w
ZXJ0eSBjYXVzZXMgc3R5bGUgcmVjYWxjdWxhdGlvbi4KKyAgICAgICAgICBUaGlzIGlzIG5vdCB0
aGUgY2FzZSBjdXJyZW50bHkgKDI0LjA3LjIwMDUpCistLT4KKzxwPiBUaGlzIHRleHQgc2hvdWxk
IGJlIGdyZWVuIGFuZCBiZWxvdyBzaG91bGQgcmVhZCAibWVkaWEgbGlzdCBpcyBlbXB0eSIuICA8
L3A+Cis8cCBpZD0icmVzdWx0Ij50ZXN0IG5vdCBydW48L3A+Cis8cD4gRXhwZWN0ZWQgdG8gZmFp
bCAoMjQuNy4yMDA1KSA8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhLzAxNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
MDE0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxNC5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBD
U1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHJlbGF0aXZlIGNvbnN0cmFpbnRzIHRlc3QgdXNpbmcgc2Ny
ZWVuIGFuZCAobWluLXdpZHRoOiA2MGVtKTwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorCis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9yOiBncmVlbiB9CitAbWVkaWEgc2NyZWVu
IGFuZCAobWluLXdpZHRoOiA2MGVtKSB7CitwIHsgY29sb3I6IHJlZCB9Cit9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+CisKKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdw
b3J0IGlzIG5hcnJvd2VyIHRoYW4gNjBlbS4gVGhpcyB0ZXN0cyB0aGF0IChtaW4td2lkdGg6IDYw
ZW0pIGNhbiBldmFsdWF0ZSB0byBmYWxzZS48L3A+CisKKzxkaXYgc3R5bGU9IndpZHRoOiA2MGVt
OyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCA2MCBlbSA8L2Rp
dj4KKzxkaXYgc3R5bGU9IndpZHRoOiA4MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVl
OyI+IGRpdiBvZiBsZW5ndGggODAwcHggPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxM2IuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhLzAxM2IuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvMDEzYi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogcmVsYXRpdmUgY29uc3RyYWludHMg
dGVzdCB1c2luZyBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMwZW0pLiBVc2luZyBsaW5rIGVsZW1l
bnQsIG1lZGlhIGF0dHJpYnV0ZSA8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKzxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4gYW5kIChtaW4td2lk
dGg6IDMwZW0pIiBocmVmPSJpbXBvcnQtcC1ncmVlbi5jc3MiIC8+Cis8L2hlYWQ+Cis8Ym9keT4K
KworPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgd2lkZXIgdGhh
biAzMGVtLiAgPC9wPgorCis8ZGl2IHN0eWxlPSJ3aWR0aDogMzBlbTsgYmFja2dyb3VuZC1jb2xv
cjogbGlnaHRibHVlOyI+IGRpdiBvZiBsZW5ndGggMzAgZW0gPC9kaXY+Cis8ZGl2IHN0eWxlPSJ3
aWR0aDogODAwcHg7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBkaXYgb2YgbGVuZ3Ro
IDgwMHB4IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS8wMDVhLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDVh
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwNWEuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1Mz
IG1lZGlhIHF1ZXJ5IHRlc3Q6IG5vdCBicmFpbGxlLCBzY3JlZW4uIFVzaW5nIHN0eWxlIGVsZW1l
bnQsIG1lZGlhIGF0dHJpYnV0ZS48L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+CisKKzxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9Im5vdCBicmFpbGxlLCBzY3JlZW4iPgorcCB7CisgICAg
Y29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4
dCBzaG91bGQgYmUgZ3JlZW4uIDwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvMDA2Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS8wMDYuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA2
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCk8
L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3Mz
LW1lZGlhcXVlcmllcy8jd2lkdGgiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitAbWVk
aWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgeworcCB7IGNvbG9yOiBncmVlbiB9Cit9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
biBpZiB2aWV3cG9ydCBpcyBhdCBtb3N0IDgwMHB4IHdpZGUuPC9wPgorPGRpdiBzdHlsZT0id2lk
dGg6IDgwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsiPmRpdiBvZiB3aWR0aCA4MDBw
eDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8w
MjYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNi5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjYuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBx
dWVyeSB0ZXN0OiBtYXRjaGVzIGNvbG9yIG9yIG1vbm9jaHJvbWUgc2NyZWVucyA8L3RpdGxlPiAg
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFx
dWVyaWVzLyIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKworcCB7CisgICAgY29sb3I6
IHJlZDsKK30KKworQG1lZGlhIGFsbCBhbmQgKGNvbG9yKSB7CitwIHsgY29sb3I6IGdyZWVuO30K
K30KKworQG1lZGlhIGFsbCBhbmQgKG1vbm9jaHJvbWUpeworcCB7IGNvbG9yOiBncmVlbjt9Cit9
CisKKzwvc3R5bGU+CisKKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhLzAxOC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE4Lmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxOC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPiBDU1MzIG1l
ZGlhIHF1ZXJ5IHRlc3Q6IG5vdCBicmFpbGxlPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorCis8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgorQG1lZGlhIG5vdCBicmFpbGxlIHsKK3AgeyBjb2xvcjogZ3JlZW4g
fQorfQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvMDI1Yy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDI1
Yy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjVjLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTkgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NT
MyBtZWRpYSBxdWVyeSB0ZXN0OiBzeW50YWN0aWNhbGx5IGludmFsaWQgbWVkaWEgcXVlcnkgaW5z
aWRlIGNzcyBydWxlIHNob3VsZCBldmFsIHRvIGZhbHNlLiBVc2luZyBzdHlsZSBlbGVtZW50LCBj
c3MgaW1wb3J0IHJ1bGUuPC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8v
d3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CitwIHsKKyAgICBjb2xvcjogZ3JlZW47Cit9Cis8L3N0eWxlPgorPHN0eWxlIHR5cGU9
InRleHQvY3NzIj4KK0BpbXBvcnQgdXJsKGltcG9ydC1wLXJlZC5jc3MpIGFsbCBhbmQgaW52YWxp
ZDsKKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS8wMTdiLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTdiLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxN2IuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT4gQ1NTMyBt
ZWRpYSBxdWVyeSB0ZXN0OiBzY3JlZW4gYW5kIChjb2xvcikgYW5kIChncmlkOjApIHNob3VsZCBl
dmFsdWF0ZSB0cnVlLiBVc2luZyBsaW5rIGVsZW1lbnQsIG1lZGlhIGF0dHJpYnV0ZTwvdGl0bGU+
ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRp
YXF1ZXJpZXMvI3N5bnRheCIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9j
c3MiIG1lZGlhPSJzY3JlZW4gYW5kIChjb2xvcikgIGFuZCAoZ3JpZDowKSIgaHJlZj0iaW1wb3J0
LXAtZ3JlZW4uY3NzIiAvPgorCis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxk
IGJlIGdyZWVuIG9uIGJpdG1hcCBjb2xvciBkZXZpY2VzLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDExLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNh
bnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9k
eSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQg
KDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDM5OXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDM5OTogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld2luZyBkZXZpY2UgaXMg
bm90IGEgZ3JpZCBkZXZpY2UuIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjdjLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjdjLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyN2MuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwxNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5
IHRlc3Q6IHN5bnRhY3RpY2FsbHkgY29ycmVjdCBxdWVyeSB3aXRoIGludmFsaWQgbWVkaWEgZmVh
dHVyZSBzaG91bGQgZXZhbCBmYWxzZS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgY3NzIGltcG9ydCBy
dWxlLjwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv
VFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3AgeyBj
b2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitAaW1wb3J0
IHVybChpbXBvcnQtcC1yZWQuY3NzKSBhbGwgYW5kIChpbnZhbGlkKTsKKzwvc3R5bGU+CisKKwor
PC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAwMy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAor
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9E
WX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkg
c2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2
MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS8wMTUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvMDE1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvMDE1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDc4NXg1
ODUKK2xheWVyIGF0ICgwLDApIHNpemUgODA4eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA3ODV4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
Njl4NTg0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTggW2NvbG9y
PSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDcxMHgx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcxMDogIlRoaXMgdGV4dCBzaG91
bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgd2lkZXIgdGhhbiAzMGVtLiBUaGlzIHRlc3RzIHRo
YXQgKG1heC13aWR0aDogMzBlbSkgY2FuIGV2YWx1YXRlIHRvIGZhbHNlLiIKKyAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDQ4MHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjN4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjM6ICJkaXYgb2YgbGVuZ3RoIDMwIGVtIgorICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTIpIHNpemUgODAweDE4IFtiZ2NvbG9yPSNBREQ4RTZd
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyNHgxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyNDogImRpdiBvZiBsZW5ndGggODAwcHgiCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxM2MtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDEzYy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxM2MtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE0IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVy
Q2FudmFzIGF0ICgwLDApIHNpemUgNzg1eDU4NQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAw
CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2MDAKKyAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMCwwKSBzaXplIDc2OXgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMzYweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMzYwOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyB3aWRl
ciB0aGFuIDMwZW0uIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzQpIHNpemUgNDgw
eDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDEyM3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyMzogImRp
diBvZiBsZW5ndGggMzAgZW0iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6
ZSA4MDB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMTI0eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI0
OiAiZGl2IG9mIGxlbmd0aCA4MDBweCIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA1
Yi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDVi
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA1
Yi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgw
MDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDctZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA3LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDA3LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBS
ZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2Nr
IHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzk5eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMzk5OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBp
cyBhdCBtb3N0IDgwMHB4IHggNjAwcHguIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8w
MTktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE5
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE5
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjEweDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggNjEwOiAiVGhlIHRleHQgYmVsb3cgc2hvdWxkIGJlIGdyZWVuIGFuZCBj
b250YWluIFwiYnJhaWxsZSwgbWVkaWEsIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6IDAp
LCB0dHlcIi4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDE4IFtj
b2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAz
MTJ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMTI6ICJicmFpbGxlLCBt
ZWRpYSwgc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDogMCksIHR0eSIKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvMDE3Yy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYS8wMTdjLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvMDE3Yy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0g
YXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6
ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDMxN3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMxNzog
IlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gb24gYml0bWFwIGNvbG9yIGRldmljZXMuIgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyNWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2Fu
dmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5
IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAo
MCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhLzAyN2QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvMDI3ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhLzAyN2QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgp
IHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4
IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRl
eHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDExLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTEuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDExLmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkg
dGVzdDogaW1wb3J0IHdpdGggbm90IHNjcmVlbiBhbmQgKGdyaWQpIDwvdGl0bGU+ICAKKzxsaW5r
IHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMv
I2dyaWQiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitAbWVkaWEgbm90IHNjcmVlbiBh
bmQgKGdyaWQpIHsKK3AgeyBjb2xvcjogZ3JlZW4gfQorfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld2luZyBkZXZpY2UgaXMg
bm90IGEgZ3JpZCBkZXZpY2UuPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMDMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhLzAwMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDMu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5IVE1MNCBtZWRpYSBkZXNjcmlwdGlvbnMgdGVzdDogcGFyc2luZyBzdHlsZSBlbGVtZW50IG1l
ZGlhPSBjb250ZW50PC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53
My5vcmcvVFIvUkVDLWh0bWw0MC90eXBlcy5odG1sI2gtNi4xMyIgLz4KKworPCEtLSBhY3R1YWwg
dGVzdGNhc2UgZnJvbSBodHRwOi8vd3d3LmhpeGllLmNoL3Rlc3RzL2V2aWwvY3NzL2ltcG9ydC9l
eHRyYS9zdHlsZWV4b3RpY21lZGlhLmh0bWwgLS0+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1l
ZGlhPSJicmFpbGxlLCBhbGwgd2l0aCBwcmludCI+CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5
bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9w
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9pbXBvcnQt
cC1yZWQuY3NzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvaW1wb3J0LXAt
cmVkLmNzcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvaW1wb3J0LXAt
cmVkLmNzcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorcCB7IGNvbG9yOiByZWQgfQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjMuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDIzLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVl
cnkgdGVzdDogbWVkaWEgbm90IGJyYWlsbGUgc2hvdWxkIGV2YWwgdHJ1ZTwvdGl0bGU+ICAKKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJp
ZXMvIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ibm90IGJyYWlsbGUiPgorcCB7
IGNvbG9yOiBncmVlbiB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhLzAxNS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvMDE1Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAxNS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHJlbGF0aXZlIGNvbnN0cmFpbnRzIHRlc3QgdXNpbmcg
c2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzMGVtKTwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgor
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9yOiBncmVlbiB9CitAbWVkaWEgc2Ny
ZWVuIGFuZCAobWF4LXdpZHRoOiAzMGVtKSB7CitwIHsgY29sb3I6IHJlZCB9Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisKKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZp
ZXdwb3J0IGlzIHdpZGVyIHRoYW4gMzBlbS4gVGhpcyB0ZXN0cyB0aGF0IChtYXgtd2lkdGg6IDMw
ZW0pIGNhbiBldmFsdWF0ZSB0byBmYWxzZS4gPC9wPgorCis8ZGl2IHN0eWxlPSJ3aWR0aDogMzBl
bTsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBsZW5ndGggMzAgZW0gPC9k
aXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogODAwcHg7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1
ZTsiPiBkaXYgb2YgbGVuZ3RoIDgwMHB4IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMDViLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS8wMDViLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhLzAwNWIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBub3QgYnJhaWxsZSwgc2NyZWVu
LiBVc2luZyBsaW5rIGVsZW1lbnQsIG1lZGlhIGF0dHJpYnV0ZS48L3RpdGxlPiAgCis8bGluayBy
ZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNz
eW50YXgiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBtZWRpYT0i
bm90IGJyYWlsbGUsIHNjcmVlbiIgaHJlZj0iaW1wb3J0LXAtZ3JlZW4uY3NzIiAvPgorPC9oZWFk
PgorCis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDEzYy5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDEzYy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTNjLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiByZWxh
dGl2ZSBjb25zdHJhaW50cyB0ZXN0IHVzaW5nIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzBlbSku
IFVzaW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBAaW1wb3J0IHJ1bGUgPC90aXRsZT4gIAorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8j
d2lkdGgiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitAaW1wb3J0IHVybChpbXBvcnQt
cC1ncmVlbi5jc3MpIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzBlbSk7Cis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+CisKKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0
IGlzIHdpZGVyIHRoYW4gMzBlbS4gIDwvcD4KKworPGRpdiBzdHlsZT0id2lkdGg6IDMwZW07IGJh
Y2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBkaXYgb2YgbGVuZ3RoIDMwIGVtIDwvZGl2Pgor
PGRpdiBzdHlsZT0id2lkdGg6IDgwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4g
ZGl2IG9mIGxlbmd0aCA4MDBweCA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvMDA3Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS8wMDcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
MDA3Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBw
eCkgYW5kIChtYXgtaGVpZ2h0OjYwMHB4KTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9
Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKworPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDgwMHB4
KSBhbmQgKG1heC1oZWlnaHQ6NjAwcHgpeworcCB7IGNvbG9yOiBncmVlbiB9Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3
cG9ydCBpcyBhdCBtb3N0IDgwMHB4IHggNjAwcHguPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMTkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhLzAxOS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS8wMTkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMyBAQAorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzdHlsZXNoZWV0IG1lZGlhLm1l
ZGlhVGV4dCBwcm9wZXJ0eSBpbnNwZWN0aW9uPC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAvPgor
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJicmFpbGxlLCBtZWRpYSB3aXRoIGVycm9y
LCBzY3JlZW4gYW5kIChjb2xvcikgYW5kIChncmlkOjApLCB0dHkgcmVzb2x1dGlvbiA+IDYwMHB4
Ij4KKyNyZXN1bHQgeyBjb2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKworPHNjcmlwdCBsYW5ndWFn
ZT0iamF2YXNjcmlwdCI+CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHJlID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgIHJlLmlubmVySFRNTCA9ICJzdGFydGVkIjsKKyAg
ICByZS5pbm5lckhUTUwgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYS5tZWRpYVRleHQ7
Cit9Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRo
ZSB0ZXh0IGJlbG93IHNob3VsZCBiZSBncmVlbiBhbmQgY29udGFpbiAiYnJhaWxsZSwgbWVkaWEs
IHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6IDApLCB0dHkiLiA8L3A+Cis8cCBpZD0icmVz
dWx0Ij50ZXN0IG5vdCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhLzAxN2MuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhLzAxN2MuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvMDE3
Yy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6
MCkgc2hvdWxkIGV2YWx1YXRlIHRydWUuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBAaW1wb3J0
IHJ1bGU8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
L1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
ID4KK0BpbXBvcnQgdXJsKGltcG9ydC1wLWdyZWVuLmNzcykgc2NyZWVuIGFuZCAoY29sb3IpIGFu
ZCAoZ3JpZDowKTsKKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBz
aG91bGQgYmUgZ3JlZW4gb24gYml0bWFwIGNvbG9yIGRldmljZXMuPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjVkLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhLzAyNWQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBA
QAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHN5bnRhY3Rp
Y2FsbHkgaW52YWxpZCBtZWRpYSBxdWVyeSBpbnNpZGUgY3NzIHJ1bGUgc2hvdWxkIGV2YWwgdG8g
ZmFsc2UuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBtZWRpYSBydWxlLjwvdGl0bGU+ICAKKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJp
ZXMvIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9yOiBncmVlbiB9CitA
bWVkaWEgYWxsIGFuZCBpbnZhbGlkIHsKK3AgeyBjb2xvcjogcmVkIH0KK30KKzwvc3R5bGU+CisK
KworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhLzAyMC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjAtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS8wMjAtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA2MTB4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCA2MTA6ICJUaGUgdGV4dCBiZWxvdyBzaG91bGQgYmUgZ3JlZW4gYW5kIGNvbnRhaW4gXCJi
cmFpbGxlLCBtZWRpYSwgc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDogMCksIHR0eVwiLiIK
KyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgw
MDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMxMngxOAorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMxMjogImJyYWlsbGUsIG1lZGlhLCBzY3Jl
ZW4gYW5kIChjb2xvcikgYW5kIChncmlkOiAwKSwgdHR5Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8020</attachid>
            <date>2006-04-28 04:57:41 -0700</date>
            <delta_ts>2006-05-24 00:42:40 -0700</delta_ts>
            <desc>Revised CSS Media Queries patch</desc>
            <filename>mediaqueries-2006-28-4-WebCore.patch</filename>
            <type>text/plain</type>
            <size>74191</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbWFjL1NjcmVlbk1hYy5tbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL21hYy9TY3JlZW5NYWMubW0JKHJldmlzaW9uIDE0MDk2KQorKysgV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1
MCwyMiBAQCBpbnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIFtzY3Jl
ZW4od2lkZ2V0KSBkZXB0aF07CiB9CiAKK2ludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRn
ZXQqIHdpZGdldCkKK3sKKyAgIHJldHVybiBOU0JpdHNQZXJTYW1wbGVGcm9tRGVwdGgoW3NjcmVl
bih3aWRnZXQpIGRlcHRoXSk7Cit9CisKK2Jvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCog
d2lkZ2V0KQoreworICAgIE5TU2NyZWVuKiBzID0gc2NyZWVuKHdpZGdldCk7CisgICAgTlNEaWN0
aW9uYXJ5KiBkZCA9IFtzIGRldmljZURlc2NyaXB0aW9uXTsKKyAgICBOU1N0cmluZyogY29sb3JT
cGFjZU5hbWUgPSBbZGQgb2JqZWN0Rm9yS2V5Ok5TRGV2aWNlQ29sb3JTcGFjZU5hbWVdOworICAg
IC8vIFhYWDogY2FuIG5hbWVkIGNvbG9yc3BhY2Ugb3IgY3VzdG9tIGNvbG9yc3BhY2UgYmUgbW9u
b2Nocm9tZT8KKyAgICAvLyBYWFg6IHdpbGwgTlMqQmxhY2tDb2xvclNwYWNlIG9yIE5TKldoaXRl
Q29sb3JTcGFjZSBiZSBhbHdheXMgbW9ub2Nocm9tZT8KKyAgICByZXR1cm4gY29sb3JTcGFjZU5h
bWUgPT0gTlNDYWxpYnJhdGVkV2hpdGVDb2xvclNwYWNlIHx8IGNvbG9yU3BhY2VOYW1lID09IE5T
Q2FsaWJyYXRlZEJsYWNrQ29sb3JTcGFjZSB8fCAKKyAgICAgICAgY29sb3JTcGFjZU5hbWUgPT0g
TlNEZXZpY2VXaGl0ZUNvbG9yU3BhY2UgfHwgY29sb3JTcGFjZU5hbWUgPT0gTlNEZXZpY2VCbGFj
a0NvbG9yU3BhY2U7Cit9CisKIEludFJlY3Qgc2NyZWVuUmVjdChXaWRnZXQqIHdpZGdldCkKIHsK
ICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChmbGlwR2xvYmFsUmVjdChbc2NyZWVuKHdpZGdl
dCkgZnJhbWVdKSk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1NjcmVlbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGxhdGZvcm0vU2NyZWVuLmgJKHJldmlzaW9uIDE0MDk2KQorKysgV2ViQ29y
ZS9wbGF0Zm9ybS9TY3JlZW4uaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgV2lkZ2V0OwogCiAgICAgaW50IHNjcmVlbkRlcHRo
KFdpZGdldCopOworICAgIGludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqKTsKKyAg
ICBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQqKTsKICAgICBJbnRSZWN0IHNjcmVlblJl
Y3QoV2lkZ2V0Kik7CiAgICAgSW50UmVjdCB1c2FibGVTY3JlZW5SZWN0KFdpZGdldCopOwogCklu
ZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAxNDA5NikKKysrIFdlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtMzgsNiArMzgsNyBAQCBhbGwgOiBcCiAgICAg
Q1NTR3JhbW1hci5jcHAgXAogICAgIENTU1Byb3BlcnR5TmFtZXMuaCBcCiAgICAgQ1NTVmFsdWVL
ZXl3b3Jkcy5oIFwKKyAgICBDU1NNZWRpYUZlYXR1cmVzLmggXAogICAgIENoYXJzZXREYXRhLmNw
cCBcCiAgICAgQ29sb3JEYXRhLmMgXAogICAgIERvY1R5cGVTdHJpbmdzLmNwcCBcCkBAIC0xMDEs
NiArMTAyLDEwIEBAIENTU1ZhbHVlS2V5d29yZHMuaCA6IGNzcy9DU1NWYWx1ZUtleXdvcmQKIAlj
YXQgJDwgPiBDU1NWYWx1ZUtleXdvcmRzLmluCiAJc2ggIiQoV2ViQ29yZSkvY3NzL21ha2V2YWx1
ZXMiCiAKK0NTU01lZGlhRmVhdHVyZXMuaCA6IGNzcy9DU1NNZWRpYUZlYXR1cmVzLmluIGNzcy9t
YWtlbWVkaWFmZWF0dXJlcworCWNhdCAkPCA+IENTU01lZGlhRmVhdHVyZXMuaW4KKwlzaCAiJChX
ZWJDb3JlKS9jc3MvbWFrZW1lZGlhZmVhdHVyZXMiCisKICMgRE9DVFlQRSBzdHJpbmdzCiAKIERv
Y1R5cGVTdHJpbmdzLmNwcCA6IGh0bWwvRG9jVHlwZVN0cmluZ3MuZ3BlcmYKSW5kZXg6IFdlYkNv
cmUvaHRtbC9odG1sX2hlYWRpbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0bWwvaHRt
bF9oZWFkaW1wbC5jcHAJKHJldmlzaW9uIDE0MDk2KQorKysgV2ViQ29yZS9odG1sL2h0bWxfaGVh
ZGltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiVGV4
dC5oIgogI2luY2x1ZGUgImNzc19zdHlsZXNoZWV0aW1wbC5oIgogI2luY2x1ZGUgImNzc2hlbHBl
ci5oIgorI2luY2x1ZGUgIkNTU01lZGlhUXVlcnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJjc3Nz
dHlsZXNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiSFRNTERvY3VtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TE5hbWVzLmgiCkBAIC0yMzAsOCArMjMxLDEwIEBAIHZvaWQgSFRNTExpbmtFbGVtZW50Ojpwcm9j
ZXNzKCkKICAgICAgICAgLy8gbm8gbmVlZCB0byBsb2FkIHN0eWxlIHNoZWV0cyB3aGljaCBhcmVu
J3QgZm9yIHRoZSBzY3JlZW4gb3V0cHV0CiAgICAgICAgIC8vICMjIyB0aGVyZSBtYXkgYmUgaW4g
c29tZSBzaXR1YXRpb25zIGUuZy4gZm9yIGFuIGVkaXRvciBvciBzY3JpcHQgdG8gbWFuaXB1bGF0
ZQogICAgICAgICAvLyBhbHNvLCBkb24ndCBsb2FkIHN0eWxlIHNoZWV0cyBmb3Igc3RhbmRhbG9u
ZSBkb2N1bWVudHMKLSAgICAgICAgaWYgKG1fbWVkaWEuaXNOdWxsKCkgfHwgbV9tZWRpYS5jb250
YWlucygic2NyZWVuIikgfHwgbV9tZWRpYS5jb250YWlucygiYWxsIikgfHwgbV9tZWRpYS5jb250
YWlucygicHJpbnQiKSkgewotCisgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgYWxsRXZhbCh0
cnVlKSwgc2NyZWVuRXZhbCgic2NyZWVuIiwgdHJ1ZSksIHByaW50RXZhbCgicHJpbnQiLCB0cnVl
KTsKKyAgICAgICAgUmVmUHRyPE1lZGlhTGlzdD4gbWVkaWEgPSBuZXcgTWVkaWFMaXN0KCk7Cisg
ICAgICAgIG1lZGlhLT5zZXRNZWRpYVRleHQobV9tZWRpYSk7CisgICAgICAgIGlmIChhbGxFdmFs
LmV2YWwobWVkaWEuZ2V0KCkpIHx8IHNjcmVlbkV2YWwuZXZhbChtZWRpYS5nZXQoKSkgfHwgcHJp
bnRFdmFsLmV2YWwobWVkaWEuZ2V0KCkpKSB7CiAgICAgICAgICAgICAvLyBBZGQgb3Vyc2VsdmVz
IGFzIGEgcGVuZGluZyBzaGVldCwgYnV0IG9ubHkgaWYgd2UgYXJlbid0IGFuIGFsdGVybmF0ZSAK
ICAgICAgICAgICAgIC8vIHN0eWxlc2hlZXQuICBBbHRlcm5hdGUgc3R5bGVzaGVldHMgZG9uJ3Qg
aG9sZCB1cCByZW5kZXIgdHJlZSBjb25zdHJ1Y3Rpb24uCiAgICAgICAgICAgICBpZiAoIWlzQWx0
ZXJuYXRlKCkpCkBAIC0yNzQsOCArMjc3LDggQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnNldFN0
eWxlU2hlZXQoY29ucwogICAgIG1fc2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldCh0aGlzLCB1cmwp
OwogICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHNoZWV0U3RyLCAhZG9jdW1lbnQoKS0+aW5Db21w
YXRNb2RlKCkpOwogCi0gICAgTWVkaWFMaXN0ICptZWRpYSA9IG5ldyBNZWRpYUxpc3QobV9zaGVl
dC5nZXQoKSwgbV9tZWRpYSk7Ci0gICAgbV9zaGVldC0+c2V0TWVkaWEobWVkaWEpOworICAgIFJl
ZlB0cjxNZWRpYUxpc3Q+IG1lZGlhID0gbmV3IE1lZGlhTGlzdChtX3NoZWV0LmdldCgpLCBtX21l
ZGlhKTsKKyAgICBtX3NoZWV0LT5zZXRNZWRpYShtZWRpYS5nZXQoKSk7CiAKICAgICBtX2xvYWRp
bmcgPSBmYWxzZTsKIApAQCAtNzQ0LDE1ICs3NDcsMTkgQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoKQogICAgIH0KIAogICAgIG1fbG9hZGluZyA9IGZhbHNlOwotICAg
IGlmICgobV90eXBlLmlzRW1wdHkoKSB8fCBtX3R5cGUgPT0gInRleHQvY3NzIikgLy8gVHlwZSBt
dXN0IGJlIGVtcHR5IG9yIENTUwotICAgICAgICAgJiYgKG1fbWVkaWEuaXNOdWxsKCkgfHwgbV9t
ZWRpYS5jb250YWlucygic2NyZWVuIikgfHwgbV9tZWRpYS5jb250YWlucygiYWxsIikgfHwgbV9t
ZWRpYS5jb250YWlucygicHJpbnQiKSkpIHsKLSAgICAgICAgZG9jdW1lbnQoKS0+YWRkUGVuZGlu
Z1NoZWV0KCk7Ci0gICAgICAgIG1fbG9hZGluZyA9IHRydWU7Ci0gICAgICAgIG1fc2hlZXQgPSBu
ZXcgQ1NTU3R5bGVTaGVldCh0aGlzKTsKLSAgICAgICAgbV9zaGVldC0+cGFyc2VTdHJpbmcodGV4
dCwgIWRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpKTsKLSAgICAgICAgTWVkaWFMaXN0ICptZWRp
YSA9IG5ldyBNZWRpYUxpc3QobV9zaGVldC5nZXQoKSwgbV9tZWRpYSk7Ci0gICAgICAgIG1fc2hl
ZXQtPnNldE1lZGlhKG1lZGlhKTsKLSAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgaWYg
KG1fdHlwZS5pc0VtcHR5KCkgfHwgbV90eXBlID09ICJ0ZXh0L2NzcyIpIHsgLy8gVHlwZSBtdXN0
IGJlIGVtcHR5IG9yIENTUworICAgICAgICBSZWZQdHI8TWVkaWFMaXN0PiBtZWRpYSA9IG5ldyBN
ZWRpYUxpc3QoKTsKKyAgICAgICAgbWVkaWEtPnNldE1lZGlhVGV4dChtX21lZGlhKTsKKyAgICAg
ICAgTWVkaWFRdWVyeUV2YWx1YXRvciBhbGxFdmFsKHRydWUpLCBzY3JlZW5FdmFsKCJzY3JlZW4i
LCB0cnVlKSwgIHByaW50RXZhbCgicHJpbnQiLCB0cnVlKTsKKyAgICAgICAgaWYgKGFsbEV2YWwu
ZXZhbChtZWRpYS5nZXQoKSkgfHwgc2NyZWVuRXZhbC5ldmFsKG1lZGlhLmdldCgpKSB8fCBwcmlu
dEV2YWwuZXZhbChtZWRpYS5nZXQoKSkpIHsKKyAgICAgICAgICAgIGRvY3VtZW50KCktPmFkZFBl
bmRpbmdTaGVldCgpOworICAgICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKKyAgICAgICAgICAg
IG1fc2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldCh0aGlzKTsKKyAgICAgICAgICAgIG1fc2hlZXQt
PnBhcnNlU3RyaW5nKHRleHQsICFkb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSk7CisgICAgICAg
ICAgICBtZWRpYS0+c2V0UGFyZW50KG1fc2hlZXQuZ2V0KCkpOworICAgICAgICAgICAgbV9zaGVl
dC0+c2V0TWVkaWEobWVkaWEuZ2V0KCkpOworICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7
CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoIWlzTG9hZGluZygpICYmIG1fc2hlZXQpCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
MTQwOTYpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNTEsNiArNTEsMTMgQEAKIAkJMTRFODM3OEUwOUY4NUQ0RjAwQjg1QUU0
IC8qIEpTRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDE0RTgzNzhEMDlGODVENEYwMEI4NUFFNCAvKiBKU0V2ZW50LmggKi87IH07CiAJCTE0RUMy
NjdGMDlDQTA3RTAwMEUxRUVFQyAvKiBFdmVudFRhcmdldE5vZGUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0RUMyNjdEMDlDQTA3RTAwMEUxRUVFQyAv
KiBFdmVudFRhcmdldE5vZGUuaCAqLzsgfTsKIAkJMTRFQzI2ODAwOUNBMDdFMDAwRTFFRUVDIC8q
IEV2ZW50VGFyZ2V0Tm9kZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxNEVDMjY3RTA5Q0EwN0UwMDBFMUVFRUMgLyogRXZlbnRUYXJnZXROb2RlLmNw
cCAqLzsgfTsKKwkJNDdEMTU1OEMwQTAyMjMyMzAwREQzRTI0IC8qIENTU01lZGlhRmVhdHVyZXMu
aW4gaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3RDE1
NTg2MEEwMjIzMjMwMEREM0UyNCAvKiBDU1NNZWRpYUZlYXR1cmVzLmluICovOyB9OworCQk0N0Qx
NTU4RDBBMDIyMzIzMDBERDNFMjQgLyogQ1NTTWVkaWFRdWVyeS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0N0QxNTU4NzBBMDIyMzIzMDBERDNFMjQg
LyogQ1NTTWVkaWFRdWVyeS5jcHAgKi87IH07CisJCTQ3RDE1NThFMEEwMjIzMjMwMEREM0UyNCAv
KiBDU1NNZWRpYVF1ZXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0N0QxNTU4ODBBMDIyMzIzMDBERDNFMjQgLyogQ1NTTWVkaWFRdWVyeS5oICovOyB9
OworCQk0N0QxNTU4RjBBMDIyMzIzMDBERDNFMjQgLyogQ1NTTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0N0QxNTU4
OTBBMDIyMzIzMDBERDNFMjQgLyogQ1NTTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgKi87IH07CisJ
CTQ3RDE1NTkwMEEwMjIzMjMwMEREM0UyNCAvKiBDU1NNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0N0QxNTU4QTBBMDIy
MzIzMDBERDNFMjQgLyogQ1NTTWVkaWFRdWVyeUV2YWx1YXRvci5oICovOyB9OworCQk0N0QxNTU5
MTBBMDIyMzIzMDBERDNFMjQgLyogbWFrZW1lZGlhZmVhdHVyZXMgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3RDE1NThCMEEwMjIzMjMwMEREM0UyNCAv
KiBtYWtlbWVkaWFmZWF0dXJlcyAqLzsgfTsKKwkJNDdEMTU1OUUwQTAyMjQ4MDAwREQzRTI0IC8q
IENTU01lZGlhRmVhdHVyZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ3RDE1NTlBMEEwMjI0ODAwMEREM0UyNCAvKiBDU1NNZWRpYUZlYXR1cmVzLmgg
Ki87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVG
NjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmggKi87IH07CiAJCTU1MEEwQkNEMDg1RjYwNEQwMDczNTNENiAvKiBIVE1MTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBC
Q0IwODVGNjA0RDAwNzM1M0Q2IC8qIEhUTUxOYW1lcy5jcHAgKi87IH07CkBAIC0xMjU1LDYgKzEy
NjIsMTYgQEAKIAkJMkQ5MDY2MEIwNjY1RDkzNzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0
aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9h
cmRNYWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9
IDA7IH07CiAJCTJEOTA2NjBDMDY2NUQ5MzcwMDZCNkYxQSAvKiBDbGlwYm9hcmRNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBD
bGlwYm9hcmRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNl
c1RhYnMgPSAwOyB9OwogCQk0NzU4QzQ0MzA4QzVGMjE3MDA5QkFGMDUgLyogS0NhbnZhc1BhdGgu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBLQ2FudmFzUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OworCQk0N0QxNTU4NjBBMDIyMzIzMDBERDNFMjQgLyogQ1NTTWVkaWFG
ZWF0dXJlcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTTWVkaWFGZWF0dXJlcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDdEMTU1ODcwQTAyMjMyMzAwREQzRTI0IC8q
IENTU01lZGlhUXVlcnkuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IENTU01lZGlhUXVlcnkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0N0QxNTU4
ODBBMDIyMzIzMDBERDNFMjQgLyogQ1NTTWVkaWFRdWVyeS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ1NTTWVkaWFRdWVyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk0N0QxNTU4OTBBMDIyMzIzMDBERDNFMjQgLyogQ1NTTWVkaWFRdWVyeUV2YWx1YXRvci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ1NTTWVkaWFRdWVyeUV2
YWx1YXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ3RDE1NThBMEEwMjIz
MjMwMEREM0UyNCAvKiBDU1NNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDU1NNZWRpYVF1ZXJ5RXZhbHVhdG9yLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ3RDE1NThCMEEwMjIzMjMwMEREM0UyNCAvKiBtYWtlbWVkaWFmZWF0
dXJlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gbWFrZW1lZGlhZmVhdHVyZXM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ3RDE1NTk4MEEwMjI0ODAwMEREM0UyNCAvKiBDU1NNZWRp
YUZlYXR1cmVzLmMgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmM7IHBhdGggPSBDU1NNZWRpYUZl
YXR1cmVzLmM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ3RDE1NTk5MEEwMjI0ODAw
MEREM0UyNCAvKiBDU1NNZWRpYUZlYXR1cmVzLmdwZXJmICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBDU1NNZWRpYUZlYXR1cmVzLmdwZXJmOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0
N0QxNTU5QTBBMDIyNDgwMDBERDNFMjQgLyogQ1NTTWVkaWFGZWF0dXJlcy5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTTWVkaWFGZWF0dXJlcy5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk0N0QxNTU5QjBBMDIyNDgwMDBERDNFMjQgLyogQ1NTTWVkaWFGZWF0
dXJlcy5zdHJpcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQ1NTTWVkaWFGZWF0dXJlcy5zdHJp
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE1MEMyQTEwNzAyNjI5MDAwQUY2NDJD
IC8qIFdlYkRhc2hib2FyZFJlZ2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJEYXNoYm9hcmRSZWdpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxNTBDMkE1MDcwMjYy
OTgwMEFGNjQyQyAvKiBXZWJEYXNoYm9hcmRSZWdpb24ubSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5vYmpjOyBwYXRoID0gV2ViRGFzaGJvYXJkUmVnaW9uLm07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1
MUY2QTNENTA2NjNCRjA0MDA0RDI5MTkgLyogSFRNTENhbnZhc0VsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSFRNTENhbnZh
c0VsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNU
YWJzID0gMDsgfTsKQEAgLTI2ODAsNiArMjY5NywxMCBAQAogCQkJCTY1NjU4MTQ3MDlEMTMwNDMw
MDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmdwZXJmICovLAogCQkJCTY1NjU4MTQ4MDlEMTMw
NDMwMDBFNjFENyAvKiBDU1NWYWx1ZUtleXdvcmRzLmggKi8sCiAJCQkJNjU2NTgxNEEwOUQxMzA0
MzAwMEU2MUQ3IC8qIENTU1ZhbHVlS2V5d29yZHMuc3RyaXAgKi8sCisJCQkJNDdEMTU1OTgwQTAy
MjQ4MDAwREQzRTI0IC8qIENTU01lZGlhRmVhdHVyZXMuYyAqLywKKwkJCQk0N0QxNTU5OTBBMDIy
NDgwMDBERDNFMjQgLyogQ1NTTWVkaWFGZWF0dXJlcy5ncGVyZiAqLywKKwkJCQk0N0QxNTU5QTBB
MDIyNDgwMDBERDNFMjQgLyogQ1NTTWVkaWFGZWF0dXJlcy5oICovLAorCQkJCTQ3RDE1NTlCMEEw
MjI0ODAwMEREM0UyNCAvKiBDU1NNZWRpYUZlYXR1cmVzLnN0cmlwICovLAogCQkJCTY1NjU4MTFD
MDlEMTJEQjIwMDBFNjFENyAvKiBEb2NUeXBlU3RyaW5ncy5jcHAgKi8sCiAJCQkJNjU2NTgxNEIw
OUQxMzA0MzAwMEU2MUQ3IC8qIEhUTUxFbnRpdHlOYW1lcy5jICovLAogCQkJCTY1REYzMUQ4MDlE
MUMxMjIwMDBCRTMyNSAvKiBKU0F0dHIuY3BwICovLApAQCAtMzk3Nyw2ICszOTk4LDEyIEBACiAJ
CUY1MjNEMTg0MDJERTQyRTgwMTg2MzVDQSAvKiBjc3MgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTQ3RDE1NTg2MEEwMjIzMjMwMEREM0UyNCAvKiBDU1NN
ZWRpYUZlYXR1cmVzLmluICovLAorCQkJCTQ3RDE1NTg3MEEwMjIzMjMwMEREM0UyNCAvKiBDU1NN
ZWRpYVF1ZXJ5LmNwcCAqLywKKwkJCQk0N0QxNTU4ODBBMDIyMzIzMDBERDNFMjQgLyogQ1NTTWVk
aWFRdWVyeS5oICovLAorCQkJCTQ3RDE1NTg5MEEwMjIzMjMwMEREM0UyNCAvKiBDU1NNZWRpYVF1
ZXJ5RXZhbHVhdG9yLmNwcCAqLywKKwkJCQk0N0QxNTU4QTBBMDIyMzIzMDBERDNFMjQgLyogQ1NT
TWVkaWFRdWVyeUV2YWx1YXRvci5oICovLAorCQkJCTQ3RDE1NThCMEEwMjIzMjMwMEREM0UyNCAv
KiBtYWtlbWVkaWFmZWF0dXJlcyAqLywKIAkJCQkxNDIwMTFBRTBBMDAzMTE3MDA4MzAzRjkgLyog
Q1NTU3R5bGVEZWNsYXJhdGlvbi5pZGwgKi8sCiAJCQkJOTMwNzA1QzcwOUUwQzk1RjAwQjE3RkU0
IC8qIENvdW50ZXIuaWRsICovLAogCQkJCUJDRUE0NzdBMDk3Q0FBQzgwMDk0QzlFNCAvKiBjc3Nf
YmFzZS5jcHAgKi8sCkBAIC00ODM1LDYgKzQ4NjIsOSBAQAogCQkJCTE0REMwRDM4MDlGRUQwNzMw
MDdCMDIzNSAvKiBKU05vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0RDBDODI1MDlGRjBFRjUw
MDZCMzZEOSAvKiBranNfZG9tbm9kZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyMDExQjcwQTAw
MzEzMzAwODMwM0Y5IC8qIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNDdEMTU1OEUwQTAyMjMyMzAwREQzRTI0IC8qIENTU01lZGlhUXVlcnkuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTQ3RDE1NTkwMEEwMjIzMjMwMEREM0UyNCAvKiBDU1NNZWRpYVF1ZXJ5RXZhbHVh
dG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQk0N0QxNTU5RTBBMDIyNDgwMDBERDNFMjQgLyogQ1NT
TWVkaWFGZWF0dXJlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxv
eW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC00OTg1LDYgKzUwMTUsOCBAQAogCQkJ
CTE0RTgzNkQzMDlGODUxMjAwMEI4NUFFNCAvKiBFdmVudC5pZGwgaW4gUmVzb3VyY2VzICovLAog
CQkJCTE0REMwRDBDMDlGRUNGQTQwMDdCMDIzNSAvKiBOb2RlLmlkbCBpbiBSZXNvdXJjZXMgKi8s
CiAJCQkJMTQyMDExQUYwQTAwMzExNzAwODMwM0Y5IC8qIENTU1N0eWxlRGVjbGFyYXRpb24uaWRs
IGluIFJlc291cmNlcyAqLywKKwkJCQk0N0QxNTU4QzBBMDIyMzIzMDBERDNFMjQgLyogQ1NTTWVk
aWFGZWF0dXJlcy5pbiBpbiBSZXNvdXJjZXMgKi8sCisJCQkJNDdEMTU1OTEwQTAyMjMyMzAwREQz
RTI0IC8qIG1ha2VtZWRpYWZlYXR1cmVzIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTU1NTAsNiArNTU4
Miw4IEBACiAJCQkJNjU5MDFBNDUwOUZDNjAzOTAwNUJENzUyIC8qIFdlYkNvcmVTdHJpbmdUcnVu
Y2F0b3IubW0gaW4gU291cmNlcyAqLywKIAkJCQkxNERDMEQzNzA5RkVEMDczMDA3QjAyMzUgLyog
SlNOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTE0MjAxMUI2MEEwMDMxMzMwMDgzMDNGOSAv
KiBKU0NTU1N0eWxlRGVjbGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDdEMTU1OEQw
QTAyMjMyMzAwREQzRTI0IC8qIENTU01lZGlhUXVlcnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
NDdEMTU1OEYwQTAyMjMyMzAwREQzRTI0IC8qIENTU01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2lu
ZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAJKHJldmlzaW9uIDE0MDk2KQorKysgV2ViQ29y
ZS9jc3MvY3NzcGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIzLDYgKzEyMyw5IEBAIHZv
aWQgUGFyc2VTdHJpbmc6Omxvd2VyKCkKIHZvaWQgQ1NTUGFyc2VyOjpzZXR1cFBhcnNlcihjb25z
dCBjaGFyKiBwcmVmaXgsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBjb25zdCBjaGFyKiBzdWZmaXgp
CiB7CiAgICAgaW50IGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKSArIHN0cmxlbihwcmVmaXgpICsg
c3RybGVuKHN1ZmZpeCkgKyAyOworCisgICAgaWYgKGRhdGEpCisgICAgICAgIGZhc3RGcmVlKGRh
dGEpOwogICAgIAogICAgIGRhdGEgPSAodW5zaWduZWQgc2hvcnQqKWZhc3RNYWxsb2MobGVuZ3Ro
ICogc2l6ZW9mKHVuc2lnbmVkIHNob3J0KSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IHN0cmxlbihwcmVmaXgpOyBpKyspCkBAIC0yNjUsNiArMjY4LDMyIEBAIGJvb2wgQ1NTUGFyc2Vy
OjpwYXJzZURlY2xhcmF0aW9uKENTU011dGEKICAgICByZXR1cm4gb2s7CiB9CiAKK2Jvb2wgQ1NT
UGFyc2VyOjpwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0ICpxdWVyaWVzLCBjb25zdCBTdHJpbmcg
JnN0cmluZykKK3sKKyAgICBpZiAoc3RyaW5nLmlzRW1wdHkoKSB8fCBzdHJpbmcuaXNOdWxsKCkp
IHsKKwkJcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgbWVkaWFRdWVyeSA9IDA7CisgICAgLy8g
Y2FuJ3QgdXNlIHsgYmVjYXVzZSB0b2tlbml6ZXIgc3RhdGUgc3dpdGNoZXMgZnJvbSBtZWRpYXF1
ZXJ5IHRvIGluaXRpYWwgc3RhdGUgd2hlbiBpdCBzZWVzIHsgdG9rZW4uCisgICAgLy8gaW5zdGVh
ZCBpbnNlcnQgb25lICIgIiAod2hpY2ggaXMgV0hJVEVTUEFDRSBpbiBDU1NHcmFtbWFyLnkpCisg
ICAgc2V0dXBQYXJzZXIgKCJALXdlYmtpdC1tZWRpYXF1ZXJ5ICIsIHN0cmluZywgIn0gIik7CisK
KyAgICBDU1NQYXJzZXIgKm9sZCA9IGN1cnJlbnRQYXJzZXI7CisgICAgY3VycmVudFBhcnNlciA9
IHRoaXM7CisgICAgY3NzeXlwYXJzZSggdGhpcyApOworICAgIGN1cnJlbnRQYXJzZXIgPSBvbGQ7
CisKKyAgICBib29sIG9rID0gZmFsc2U7CisgICAgaWYgKG1lZGlhUXVlcnkpIHsKKyAgICAJb2sg
PSB0cnVlOworICAgIAlxdWVyaWVzLT5hcHBlbmRNZWRpYVF1ZXJ5KG1lZGlhUXVlcnkpOworICAg
ICAgICBtZWRpYVF1ZXJ5ID0gMDsKKyAgICB9CisKKyAgICByZXR1cm4gb2s7Cit9CisKIAogdm9p
ZCBDU1NQYXJzZXI6OmFkZFByb3BlcnR5KGludCBwcm9wSWQsIENTU1ZhbHVlICp2YWx1ZSwgYm9v
bCBpbXBvcnRhbnQpCiB7CkBAIC0yOTAyLDYgKzI5MzEsNyBAQCB0eXBlZGVmIHVuc2lnbmVkIFlZ
X0NIQVI7CiAjZGVmaW5lIFlZX1NUQVRFX0VPRihzdGF0ZSkgKFlZX0VORF9PRl9CVUZGRVIgKyBz
dGF0ZSArIDEpCiAjZGVmaW5lIHl5dGVybWluYXRlKCkgeXlUb2sgPSBFTkRfVE9LRU47IHJldHVy
biB5eVRvawogI2RlZmluZSBZWV9GQVRBTF9FUlJPUihhKQorI2RlZmluZSBCRUdJTiB5eV9zdGFy
dCA9IDEgKyAyICoKIAogI2luY2x1ZGUgInRva2VuaXplci5jcHAiCiAKSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU01lZGlhUXVlcnlFdmFsdWF0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9D
U1NNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9DU1NN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisg
KiBDU1MgTWVkaWEgUXVlcnkgRXZhbHVhdG9yCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA1LCAy
MDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uICBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIENTU19DU1NNZWRpYVF1ZXJ5RXZhbHVhdG9y
X2gKKyNkZWZpbmUgQ1NTX0NTU01lZGlhUXVlcnlFdmFsdWF0b3JfaAorCisjaW5jbHVkZSAiRGVw
cmVjYXRlZFZhbHVlTGlzdC5oIgorCisjaW5jbHVkZSAiQ1NTTWVkaWFRdWVyeS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgIGNsYXNzIEZyYW1lVmlldzsKKyAgY2xhc3MgUmVuZGVyU3R5bGU7
CisKKyAgY2xhc3MgTWVkaWFMaXN0OworCisvKioKKyAqIENsYXNzIHRoYXQgZXZhbHVhdGVzIGNz
cyBtZWRpYSBxdWVyaWVzIGFzIGRlZmluZWQgaW4KKyAqIENTUzMgTW9kdWxlICJNZWRpYSBRdWVy
aWVzIiAoaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvKQorICogU3BlY2lh
bCBjb25zdHJ1Y3RvcnMgYXJlIG5lZWRlZCwgaWYgc2ltcGxlIG1lZGlhIHF1ZXJpZXMgYXJlIHRv
IGJlCisgKiBldmFsdWF0ZWQgd2l0aG91dCBrbm93bGVkZ2Ugb2YgdGhlIG1lZGl1bSBmZWF0dXJl
cy4gVGhpcyBjYW4gaGFwcGVuCisgKiBmb3IgZXhhbXBsZSB3aGVuIHBhcnNpbmcgVUEgc3R5bGVz
aGVldHMsIGlmIGV2YWx1YXRpb24gaXMgZG9uZQorICogcmlnaHQgYWZ0ZXIgcGFyc2luZy4KKyAq
CisgKiB0aGUgYm9vbGVhbiBwYXJhbWV0ZXIgaXMgdXNlZCB0byBhcHByb3hpbWF0ZSByZXN1bHRz
IG9mIGV2YWx1YXRpb24sIGlmCisgKiB0aGUgZGV2aWNlIGNoYXJhY3RlcmlzdGljcyBhcmUgbm90
IGtub3duLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHBydW5lIHRoZSBsb2FkaW5nCisgKiBvZiBzdHls
ZXNoZWV0cyB0byBvbmx5IHRob3NlIHdoaWNoIGFyZSBwcm9iYWJsZSB0byBtYXRjaC4KKyAqLwor
Y2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcgoreworcHVibGljOgorCS8qKiBDcmVhdGVzIGV2YWx1
YXRvciB3aGljaCBldmFsdWF0ZXMgb25seSBzaW1wbGUgbWVkaWEgcXVlcmllcworCSAqICBFdmFs
dWF0b3IgcmV0dXJucyB0cnVlIGZvciAiYWxsIiwgYW5kIHJldHVybnMgdmFsdWUgb2YgXG1lZGlh
RmVhdHVyZVJlc3VsdAorICAgICAqICBmb3IgYW55IG1lZGlhIGZlYXR1cmVzCisJICovCisgICAg
TWVkaWFRdWVyeUV2YWx1YXRvcihib29sIG1lZGlhRmVhdHVyZVJlc3VsdCA9IGZhbHNlKTsKKwor
ICAgIC8qKiBDcmVhdGVzIGV2YWx1YXRvciB3aGljaCBldmFsdWF0ZXMgb25seSBzaW1wbGUgbWVk
aWEgcXVlcmllcworICAgICAqICBFdmFsdWF0b3IgIHJldHVybnMgdHJ1ZSBmb3IgYWNjZXB0ZWRN
ZWRpYVR5cGUsIGJ1dCBub3QgYW55IG1lZGlhIGZlYXR1cmVzCisgICAgICovCisgICAgTWVkaWFR
dWVyeUV2YWx1YXRvcihjb25zdCBTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBlLCBib29sIG1lZGlh
RmVhdHVyZVJlc3VsdCA9IGZhbHNlKTsKKworICAgIC8qKiBDcmVhdGVzIGV2YWx1YXRvciB3aGlj
aCBldmFsdWF0ZXMgZnVsbCBtZWRpYSBxdWVyaWVzCisgICAgICovCisgICAgTWVkaWFRdWVyeUV2
YWx1YXRvcihjb25zdCBTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBlLCBGcmFtZVZpZXcqIHZpZXcs
CisgICAgCQkJCQlSZW5kZXJTdHlsZSogc3R5bGUpOworCisgICAgfk1lZGlhUXVlcnlFdmFsdWF0
b3IoKTsKKworICAgIGJvb2wgbWVkaWFUeXBlTWF0Y2goY29uc3QgU3RyaW5nJiBtZWRpYVR5cGVU
b01hdGNoKSBjb25zdDsKKworCS8qKiBFdmFsdWF0ZXMgYSBsaXN0IG9mIG1lZGlhIHF1ZXJpZXMg
Ki8KKyAgICBib29sIGV2YWwoY29uc3QgTWVkaWFMaXN0KiBxdWVyeSkgY29uc3Q7CisKKyAgICAv
KiogRXZhbHVhdGVzIG1lZGlhIHF1ZXJ5IHN1YmV4cHJlc3Npb24sIGllICJhbmQgKG1lZGlhLWZl
YXR1cmU6IHZhbHVlKSIgcGFydCAqLworICAgIGJvb2wgZXZhbChjb25zdCBNZWRpYVF1ZXJ5RXhw
KiBleHByKSBjb25zdDsKKworcHJpdmF0ZToKKworICAgIFN0cmluZyBtX21lZGlhVHlwZTsKKyAg
ICBGcmFtZVZpZXcqIG1fdmlldzsgLy8gbm90IG93bmVkCisgICAgUmVuZGVyU3R5bGUqIG1fc3R5
bGU7IC8vIG5vdCBvd25lZAorICAgIGJvb2wgbV9leHBSZXN1bHQ7Cit9OworCit9IC8vIG5hbWVz
cGFjZQorI2VuZGlmCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NNZWRpYUZlYXR1cmVzLmluCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU01lZGlhRmVhdHVyZXMuaW4JKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL2Nzcy9DU1NNZWRpYUZlYXR1cmVzLmluCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI5IEBACitjb2xvcgorY29sb3ItaW5kZXgKK2RldmljZS1hc3BlY3QtcmF0aW8KK2RldmljZS1o
ZWlnaHQKK2RldmljZS13aWR0aAorZ3JpZAoraGVpZ2h0CittYXgtY29sb3IKK21heC1jb2xvci1p
bmRleAorbWF4LWRldmljZS1hc3BlY3QtcmF0aW8KK21heC1kZXZpY2UtaGVpZ2h0CittYXgtZGV2
aWNlLXdpZHRoCittYXgtaGVpZ2h0CittYXgtbW9ub2Nocm9tZQorbWF4LXJlc29sdXRpb24KK21h
eC13aWR0aAorbWluLWNvbG9yCittaW4tY29sb3ItaW5kZXgKK21pbi1kZXZpY2UtYXNwZWN0LXJh
dGlvCittaW4tZGV2aWNlLWhlaWdodAorbWluLWRldmljZS13aWR0aAorbWluLWhlaWdodAorbWlu
LW1vbm9jaHJvbWUKK21pbi1yZXNvbHV0aW9uCittaW4td2lkdGgKK21vbm9jaHJvbWUKK3Jlc29s
dXRpb24KK3NjYW4KK3dpZHRoCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NNZWRpYVF1ZXJ5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NNZWRpYVF1ZXJ5LmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvY3NzL0NTU01lZGlhUXVlcnkuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE0MSBAQAorLyoKKyAqIENTUyBNZWRpYSBRdWVyeQorICoKKyAqIENvcHlyaWdodCAoQykgMjAw
NSwgMjAwNiBLaW1tbyBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
IkNTU01lZGlhUXVlcnkuaCIKKyNpbmNsdWRlICJjc3NwYXJzZXIuaCIKKyNpbmNsdWRlICJjc3Nf
YmFzZS5oIgorI2luY2x1ZGUgImNzc192YWx1ZWltcGwuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CisKK01lZGlhUXVlcnlFeHA6Ok1lZGlhUXVlcnlFeHAoaW50IG1lZGlhRmVhdHVyZUlk
LCBWYWx1ZUxpc3QqIHZhbHVlTGlzdCkKKyAgICA6IG1fbWVkaWFGZWF0dXJlSWQobWVkaWFGZWF0
dXJlSWQpCisgICAgLCBtX3ZhbHVlKDApCit7ICAgCisgICAgaWYgKHZhbHVlTGlzdCkgeworCisg
ICAgICAgIGlmICggdmFsdWVMaXN0LT5zaXplKCkgPT0gMSApIHsKKyAgICAgICAgICAgIFZhbHVl
KiB2YWx1ZSA9IHZhbHVlTGlzdC0+Y3VycmVudCgpOworCisgICAgICAgICAgICBpZiAoIHZhbHVl
LT5pZCAhPSAwICkgeworICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUoIHZhbHVlLT5pZCApOworICAgICAgICAgICAgfSBlbHNlIGlmICggdmFsdWUtPnVuaXQg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcgKQorICAgICAgICAgICAgICAgIG1fdmFs
dWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoIGRvbVN0cmluZyggdmFsdWUtPnN0cmluZyApLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ1NT
UHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcykgdmFsdWUtPnVuaXQgKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKCB2YWx1ZS0+dW5pdCA+PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiAmJgor
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlLT51bml0IDw9IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfS0haICkgeworICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFs
dWUoIHZhbHVlLT5mVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSB2YWx1ZS0+dW5p
dCApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFsdWVMaXN0LT5uZXh0KCk7CisgICAg
ICAgIH0gZWxzZSBpZiAoIHZhbHVlTGlzdC0+c2l6ZSgpID4gMSkgeworICAgICAgICAgICAgLy8g
Y3JlYXRlIGxpc3Qgb2YgdmFsdWVzCisgICAgICAgICAgICAvLyBjdXJyZW50bHkgYWNjZXB0cyBv
bmx5IDxpbnRlZ2VyPi88aW50ZWdlcj4KKworICAgICAgICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0
ID0gbmV3IENTU1ZhbHVlTGlzdCgpOworICAgICAgICAgICAgVmFsdWUqIHZhbHVlID0gMDsKKyAg
ICAgICAgICAgIGJvb2wgaXNWYWxpZCA9IHRydWU7CisKKyAgICAgICAgICAgIHdoaWxlICgodmFs
dWUgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKSkgJiYgaXNWYWxpZCkgeworICAgICAgICAgICAgICAg
IGlmICggdmFsdWUtPnVuaXQgPT0gVmFsdWU6Ok9wZXJhdG9yICYmIHZhbHVlLT5pVmFsdWUgPT0g
Jy8nICkgeworICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQobmV3IENTU1ByaW1pdGl2
ZVZhbHVlKCIvIiwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVN
QkVSKSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZl
VmFsdWUodmFsdWUtPmZWYWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWVMaXN0
LT5uZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaXNWYWxpZCkKKyAgICAg
ICAgICAgICAgICBtX3ZhbHVlID0gbGlzdDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICBkZWxldGUobGlzdCk7CisKKyAgICAgICAgfQorICAgIH0KK30KKworTWVkaWFRdWVyeUV4
cDo6fk1lZGlhUXVlcnlFeHAoKQoreworICAgIGRlbGV0ZSAobV92YWx1ZSk7Cit9CisKK2ludCBN
ZWRpYVF1ZXJ5RXhwOjptZWRpYUZlYXR1cmUoKSBjb25zdAoreworICAgIHJldHVybiBtX21lZGlh
RmVhdHVyZUlkOworfQorCitDU1NWYWx1ZSogTWVkaWFRdWVyeUV4cDo6dmFsdWUoKSBjb25zdAor
eworICAgIHJldHVybiBtX3ZhbHVlOworfQorCitNZWRpYVF1ZXJ5OjpNZWRpYVF1ZXJ5KFJlc3Ry
aWN0b3IgciwgY29uc3QgU3RyaW5nICZtZWRpYVR5cGUsIE1lZGlhUXVlcnlFeHBMaXN0KiBleHBy
cykKKyAgICA6IG1fcmVzdHJpY3RvcihyKQorICAgICwgbV9tZWRpYVR5cGUobWVkaWFUeXBlKQor
ICAgICwgbV9leHByZXNzaW9ucyhleHBycykKK3sKK30KKworTWVkaWFRdWVyeTo6fk1lZGlhUXVl
cnkoKQoreworICAgIGRlbGV0ZShtX2V4cHJlc3Npb25zKTsKK30KKworTWVkaWFRdWVyeTo6UmVz
dHJpY3RvciBNZWRpYVF1ZXJ5OjpyZXN0cmljdG9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9y
ZXN0cmljdG9yOworfQorCitNZWRpYVF1ZXJ5RXhwTGlzdCogTWVkaWFRdWVyeTo6ZXhwcmVzc2lv
bnMoKSBjb25zdAoreworICAgIHJldHVybiBtX2V4cHJlc3Npb25zOworfQorCitTdHJpbmcgTWVk
aWFRdWVyeTo6bWVkaWFUeXBlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9tZWRpYVR5cGU7Cit9
CisKK2Jvb2wgTWVkaWFRdWVyeTo6b3BlcmF0b3I9PShjb25zdCBNZWRpYVF1ZXJ5JiBvdGhlcikg
Y29uc3QKK3sKKyAgICAvLyBYWFg6IGNhc2Ugc2Vuc2l0aXZlbmVzcz8KKyAgICBpZiAobV9yZXN0
cmljdG9yICE9IG90aGVyLm1fcmVzdHJpY3RvciB8fCBtX21lZGlhVHlwZSAhPSBvdGhlci5tX21l
ZGlhVHlwZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgRGVwcmVjYXRlZFB0ckxpc3RJ
dGVyYXRvcjxNZWRpYVF1ZXJ5RXhwPiBleHBfaXQoKm1fZXhwcmVzc2lvbnMtPmxpc3QoKSk7Cisg
ICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5RXhwPiBvZXhwX2l0KCpvdGhl
ci5tX2V4cHJlc3Npb25zLT5saXN0KCkpOworICAgIE1lZGlhUXVlcnlFeHAqIGV4cCA9IDA7Cisg
ICAgTWVkaWFRdWVyeUV4cCogb2V4cCA9IDA7CisgICAgZm9yIChleHAgPSBleHBfaXQuY3VycmVu
dCgpLCBvZXhwID0gb2V4cF9pdC5jdXJyZW50KCk7IGV4cCAmJiBvZXhwOyBleHAgPSArK2V4cF9p
dCwgb2V4cCA9ICsrb2V4cF9pdCkgeworICAgICAgICBpZiAoISgqZXhwID09ICpvZXhwKSApCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuICghZXhwICYmICFv
ZXhwKTsKK30KSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmgJKHJldmlzaW9uIDE0MDk2KQorKysg
V2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw2ICsz
OSw3IEBAIGNsYXNzIENTU1J1bGVTZXQ7CiBjbGFzcyBDU1NTZWxlY3RvcjsKIGNsYXNzIENTU1N0
eWxlU2hlZXQ7CiBjbGFzcyBDU1NWYWx1ZTsKK2NsYXNzIE1lZGlhUXVlcnlFdmFsdWF0b3I7CiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBGcmFtZTsKQEAgLTE3MCw3ICsx
NzEsMTIgQEAgcHVibGljOgogIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5pdCgpOwot
ICAgICAgICAKKworICAgICAgICB2b2lkIG1hdGNoVUFBbmRQcmludFJ1bGVzKGludCYgZmlyc3RV
QVJ1bGUsIGludCYgbGFzdFVBUnVsZSk7CisgICAgICAgIHZvaWQgYWRqdXN0Rm9udCgpOworICAg
ICAgICB2b2lkIGNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOworICAgICAgICBSZW5kZXJTdHls
ZSAqZGVmYXVsdFN0eWxlRm9yUm9vdChFbGVtZW50KiBlKTsKKyAgICAgICAgIAogICAgICAgICB2
b2lkIG1hcEJhY2tncm91bmRBdHRhY2htZW50KEJhY2tncm91bmRMYXllciogbGF5ZXIsIENTU1Zh
bHVlKiB2YWx1ZSk7CiAgICAgICAgIHZvaWQgbWFwQmFja2dyb3VuZENsaXAoQmFja2dyb3VuZExh
eWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKTsKICAgICAgICAgdm9pZCBtYXBCYWNrZ3JvdW5k
T3JpZ2luKEJhY2tncm91bmRMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSk7CkBAIC0xOTYs
NyArMjAyLDggQEAgcHVibGljOgogICAgICAgICBDU1NSdWxlTGlzdCogbV9ydWxlTGlzdDsKICAg
ICAgICAgYm9vbCBtX2NvbGxlY3RSdWxlc09ubHk7CiAKLSAgICAgICAgU3RyaW5nIG1fbWVkaWFU
eXBlOworICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yKiBtX21lZGl1bTsKKyAgICAgICAgUmVu
ZGVyU3R5bGUqIG1fcm9vdERlZmF1bHRTdHlsZTsKIAogICAgICAgICBSZW5kZXJTdHlsZTo6UHNl
dWRvSWQgZHluYW1pY1BzZXVkbzsKICAgICAgICAgCkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CShyZXZpc2lvbiAx
NDA5NikKKysrIFdlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQkod29ya2luZyBjb3B5KQpAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgImNzc19ydWxlaW1wbC5oIgogI2luY2x1ZGUgImNzc19zdHls
ZXNoZWV0aW1wbC5oIgogI2luY2x1ZGUgImNzc192YWx1ZWltcGwuaCIKKyNpbmNsdWRlICJDU1NN
ZWRpYVF1ZXJ5LmgiCiAjaW5jbHVkZSAiY3NzcGFyc2VyLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKQEAgLTUyLDYgKzUzLDcgQEAgdXNpbmcg
bmFtZXNwYWNlIEhUTUxOYW1lczsKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuYyIKICNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmMiCisjaW5jbHVkZSAiQ1NTTWVkaWFGZWF0dXJlcy5j
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTExMSw2ICsxMTMsMTUgQEAgc3RhdGljIGlu
bGluZSBpbnQgZ2V0VmFsdWVJRChjb25zdCBjaGFyIAogICAgIHJldHVybiB2YWwtPmlkOwogfQog
CitzdGF0aWMgaW5saW5lIGludCBnZXRNZWRpYUZlYXR1cmVJRChjb25zdCBjaGFyICp0YWdTdHIs
IGludCBsZW4pCit7CisgICAgY29uc3Qgc3RydWN0IGNzc19tZWRpYV9mZWF0dXJlX3BhaXIgKmZl
YXQgPSBmaW5kTWVkaWFGZWF0dXJlKHRhZ1N0ciwgbGVuKTsKKyAgICBpZiAoIWZlYXQpCisgICAg
ICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIGZlYXQtPmlkOworfQorCiAjZGVmaW5lIFlZREVC
VUcgMAogI2RlZmluZSBZWVBBUlNFX1BBUkFNIHBhcnNlcgogCkBAIC0xMzUsNiArMTQ2LDEyIEBA
IHN0YXRpYyBpbmxpbmUgaW50IGdldFZhbHVlSUQoY29uc3QgY2hhciAKICAgICBjaGFyIHRvazsK
ICAgICBWYWx1ZSB2YWx1ZTsKICAgICBWYWx1ZUxpc3QgKnZhbHVlTGlzdDsKKworICAgIGludCBt
ZWRpYUZlYXR1cmVJZDsKKyAgICBNZWRpYVF1ZXJ5ICptZWRpYVF1ZXJ5OworICAgIE1lZGlhUXVl
cnlFeHAgKm1lZGlhUXVlcnlFeHA7CisgICAgTWVkaWFRdWVyeUV4cExpc3QgKm1lZGlhUXVlcnlF
eHBMaXN0OworICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJlc3RyaWN0b3I7
CiB9CiAKICV7CkBAIC0xNzcsOCArMTk0LDEyIEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQ
RSAqeXlsdmFsKSB7IHIKICV0b2tlbiBXRUJLSVRfUlVMRV9TWU0KICV0b2tlbiBXRUJLSVRfREVD
TFNfU1lNCiAldG9rZW4gV0VCS0lUX1ZBTFVFX1NZTQorJXRva2VuIFdFQktJVF9NRURJQVFVRVJZ
X1NZTQogCiAldG9rZW4gSU1QT1JUQU5UX1NZTQorJXRva2VuIE1FRElBX09OTFkKKyV0b2tlbiBN
RURJQV9OT1QKKyV0b2tlbiBNRURJQV9BTkQKIAogJXRva2VuIDx2YWw+IFFFTVMKICV0b2tlbiA8
dmFsPiBFTVMKQEAgLTIyNiw4ICsyNDcsMTYgQEAgc3RhdGljIGludCBjc3N5eWxleChZWVNUWVBF
ICp5eWx2YWwpIHsgcgogJXR5cGUgPHN0cmluZz4gbWVkaXVtCiAldHlwZSA8c3RyaW5nPiBoZXhj
b2xvcgogCisldHlwZSA8bWVkaWFGZWF0dXJlSWQ+IG1lZGlhX2ZlYXR1cmUKICV0eXBlIDxtZWRp
YUxpc3Q+IG1lZGlhX2xpc3QKICV0eXBlIDxtZWRpYUxpc3Q+IG1heWJlX21lZGlhX2xpc3QKKyV0
eXBlIDxtZWRpYVF1ZXJ5PiBtZWRpYV9xdWVyeQorJXR5cGUgPG1lZGlhUXVlcnlSZXN0cmljdG9y
PiBtYXliZV9tZWRpYV9yZXN0cmljdG9yCisldHlwZSA8dmFsdWVMaXN0PiBtYXliZV9tZWRpYV92
YWx1ZQorJXR5cGUgPG1lZGlhUXVlcnlFeHA+IG1lZGlhX3F1ZXJ5X2V4cAorJXR5cGUgPG1lZGlh
UXVlcnlFeHBMaXN0PiBtZWRpYV9xdWVyeV9leHBfbGlzdAorJXR5cGUgPG1lZGlhUXVlcnlFeHBM
aXN0PiBtYXliZV9tZWRpYV9xdWVyeV9leHBfbGlzdAorCiAKICV0eXBlIDxydWxlTGlzdD4gcnVs
ZXNldF9saXN0CiAKQEAgLTI2Nyw2ICsyOTYsNyBAQCBzdHlsZXNoZWV0OgogICB8IHdlYmtpdF9y
dWxlIG1heWJlX3NwYWNlCiAgIHwgd2Via2l0X2RlY2xzIG1heWJlX3NwYWNlCiAgIHwgd2Via2l0
X3ZhbHVlIG1heWJlX3NwYWNlCisgIHwgd2Via2l0X21lZGlhcXVlcnkgbWF5YmVfc3BhY2UKICAg
OwogCiB3ZWJraXRfcnVsZToKQEAgLTI5NSw2ICszMjUsMTcgQEAgd2Via2l0X3ZhbHVlOgogICAg
IH0KIDsKIAord2Via2l0X21lZGlhcXVlcnk6CisgICAgIFdFQktJVF9NRURJQVFVRVJZX1NZTSBX
SElURVNQQUNFIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5ICd9JyB7CisgICAgICAgICBDU1NQYXJz
ZXIgKnAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIgKj4ocGFyc2VyKTsKKyAgICAgICAgIHAtPm1l
ZGlhUXVlcnkgPSAkNDsKKyAgICAgfQorICAgICB8IFdFQktJVF9NRURJQVFVRVJZX1NZTSBXSElU
RVNQQUNFIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5IGVycm9yICd9J3sKKyAgICAgICAgIENTU1Bh
cnNlciAqcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlciAqPihwYXJzZXIpOworICAgICAgICAgcC0+
bWVkaWFRdWVyeSA9ICQ0OworICAgICB9Cis7CisKIG1heWJlX3NwYWNlOgogICAgIC8qIGVtcHR5
ICovICVwcmVjIFVOSU1QT1JUQU5UX1RPSwogICB8IG1heWJlX3NwYWNlIFdISVRFU1BBQ0UKQEAg
LTM3OCw2ICs0MTksODIgQEAgU1RSSU5HCiB8IFVSSQogOwogCittZWRpYV9mZWF0dXJlOgorICAg
IElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICAgRGVwcmVjYXRlZFN0cmluZyBzdHIgPSBkZXBy
ZWNhdGVkU3RyaW5nKCQxKTsKKwkJJCQgPSBnZXRNZWRpYUZlYXR1cmVJRCggc3RyLmxvd2VyKCku
bGF0aW4xKCksIHN0ci5sZW5ndGgoKSApOworICAgIH0KKzsKKworbWF5YmVfbWVkaWFfdmFsdWU6
CisgICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQgPSAwOworICAgIH0KKyAgICB8ICc6JyBtYXli
ZV9zcGFjZSBleHByIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAkMzsKKyAgICB9Cis7CisK
K21lZGlhX3F1ZXJ5X2V4cDoKKyAgICAnKCcgbWF5YmVfc3BhY2UgbWVkaWFfZmVhdHVyZSBtYXli
ZV9zcGFjZSBtYXliZV9tZWRpYV92YWx1ZSAnKScgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9
IG5ldyBNZWRpYVF1ZXJ5RXhwKCQzLCAkNSk7CisgICAgfQorOworCittZWRpYV9xdWVyeV9leHBf
bGlzdDoKKyAgICBtZWRpYV9xdWVyeV9leHAgeworICAgICAgICAkJCA9IG5ldyBNZWRpYVF1ZXJ5
RXhwTGlzdDsKKyAgICAgICAgJCQtPmFwcGVuZCgkMSk7CisgICAgfQorICAgIHwgbWVkaWFfcXVl
cnlfZXhwX2xpc3QgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5X2V4cCB7CisgICAg
ICAgICQkID0gJDE7CisgICAgICAgIGlmICgkJCkKKyAgICAgICAgICAgICQkLT5hcHBlbmQoJDQp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBkZWxldGUgKCQ0KTsKKyAgICB9CisgICAgfCBt
ZWRpYV9xdWVyeV9leHBfbGlzdCBlcnJvciB7CisgICAgICAgIC8vIEVycm9yIHdoaWxlIHBhcnNp
bmcgbWVkaWEgZmVhdHVyZSBsaXN0LiBEZWxldGUgdGhlIGxpc3QgYW5kIHJldHVybiAwLCB3aGlj
aCBtZWFucworICAgICAgICAvLyB0aGF0IHdlIHNob3VsZCBoYW5kbGUgdGhlIG1lZGlhIHF1ZXJ5
IGFzIGNzcyAyLjEgbWVkaWEgdHlwZSAob3IgSFRNTDQgbWVkaWEgZGVzY3JpcHRpb24pCisgICAg
ICAgIGRlbGV0ZSAoJDEpOworICAgICAgICAkJD0wOworICAgIH0KKzsKKworbWF5YmVfbWVkaWFf
cXVlcnlfZXhwX2xpc3Q6CisgICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQgPSBuZXcgTWVkaWFR
dWVyeUV4cExpc3Q7CisgICAgfQorICAgIHwgTUVESUFfQU5EIG1heWJlX3NwYWNlIG1lZGlhX3F1
ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAgJCQgPSAkMzsKKyAgICB9CisgICAgfCBNRURJQV9BTkQg
ZXJyb3IgeworICAgICAgICAkJCA9IDA7CisgICAgfQorOworCittYXliZV9tZWRpYV9yZXN0cmlj
dG9yOgorICAgIC8qZW1wdHkqL3sKKyAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpOb25lOworICAg
IH0KKyAgICB8IE1FRElBX09OTFkgeworICAgICAgICAkJCA9IE1lZGlhUXVlcnk6Ok9ubHk7Cisg
ICAgfQorICAgIHwgTUVESUFfTk9UIHsKKyAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpOb3Q7Cisg
ICAgfQorOworCittZWRpYV9xdWVyeToKKyAgICBtYXliZV9tZWRpYV9yZXN0cmljdG9yIG1heWJl
X3NwYWNlIG1lZGl1bSBtYXliZV9tZWRpYV9xdWVyeV9leHBfbGlzdCB7CisgICAgICAgIGlmICgk
NCkgeworICAgICAgICAgICAgJCQgPSBuZXcgTWVkaWFRdWVyeSgkMSwgZG9tU3RyaW5nKCQzKSwg
JDQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgJCQgPSBuZXcgTWVkaWFRdWVyeSgk
MSwgZG9tU3RyaW5nKCQzKSwgbmV3IE1lZGlhUXVlcnlFeHBMaXN0KTsKKyAgICAgICAgfQorICAg
IH0KKzsKKwogbWF5YmVfbWVkaWFfbGlzdDoKICAgICAgLyogZW1wdHkgKi8gewogICAgICAgICAk
JCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZU1lZGlhTGlzdCgpOwpA
QCAtMzg1LDE2ICs1MDIsMTUgQEAgbWF5YmVfbWVkaWFfbGlzdDoKICAgICAgfCBtZWRpYV9saXN0
CiA7CiAKLQogbWVkaWFfbGlzdDoKLSAgICBtZWRpdW0geworICAgIG1lZGlhX3F1ZXJ5IHsKICAg
ICAgICAgJCQgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVNZWRpYUxp
c3QoKTsKLSAgICAgICAgJCQtPmFwcGVuZE1lZGl1bSggZG9tU3RyaW5nKCQxKS5sb3dlcigpICk7
CisgICAgICAgICQkLT5hcHBlbmRNZWRpYVF1ZXJ5KCQxKTsgLy9GSVhNRTogZG9tU3RyaW5nKCQx
KS5sb3dlcigpICk7CiAgICAgfQotICAgIHwgbWVkaWFfbGlzdCAnLCcgbWF5YmVfc3BhY2UgbWVk
aXVtIHsKKyAgICB8IG1lZGlhX2xpc3QgJywnIG1heWJlX3NwYWNlIG1lZGlhX3F1ZXJ5IHsKICAg
ICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgJCQtPmFwcGVuZE1l
ZGl1bSggZG9tU3RyaW5nKCQ0KSApOworICAgICAgICAgICAgJCQtPmFwcGVuZE1lZGlhUXVlcnko
JDQpOyAvL0ZJWE1FOiBkb21TdHJpbmcoJDQpICk7CiAgICAgfQogICAgIHwgbWVkaWFfbGlzdCBl
cnJvciB7CiAgICAgICAgICQkID0gMDsKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc19zdHlsZXNoZWV0
aW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oCShy
ZXZpc2lvbiAxNDA5NikKKysrIFdlYkNvcmUvY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAjZGVmaW5lIENTU19jc3Nfc3R5bGVzaGVldGlt
cGxfaF8KIAogI2luY2x1ZGUgImNzc19iYXNlLmgiCisjaW5jbHVkZSAiQ1NTTWVkaWFRdWVyeS5o
IgogI2luY2x1ZGUgIkRlcHJlY2F0ZWRQdHJMaXN0LmgiCiAjaW5jbHVkZSAiRGVwcmVjYXRlZFZh
bHVlTGlzdC5oIgogCkBAIC0xNDAsOCArMTQxLDggQEAgcHVibGljOgogY2xhc3MgTWVkaWFMaXN0
IDogcHVibGljIFN0eWxlQmFzZQogewogcHVibGljOgotICAgIE1lZGlhTGlzdCgpIDogU3R5bGVC
YXNlKDApIHt9Ci0gICAgTWVkaWFMaXN0KENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0KSA6IFN0
eWxlQmFzZShwYXJlbnRTaGVldCkge30KKyAgICBNZWRpYUxpc3QoKSA6IFN0eWxlQmFzZSgwKSB7
bV9sc3RRdWVyaWVzLnNldEF1dG9EZWxldGUodHJ1ZSk7fQorICAgIE1lZGlhTGlzdChDU1NTdHls
ZVNoZWV0KiBwYXJlbnRTaGVldCkgOiBTdHlsZUJhc2UocGFyZW50U2hlZXQpIHttX2xzdFF1ZXJp
ZXMuc2V0QXV0b0RlbGV0ZSh0cnVlKTt9CiAgICAgTWVkaWFMaXN0KENTU1N0eWxlU2hlZXQqIHBh
cmVudFNoZWV0LCBjb25zdCBTdHJpbmcmIG1lZGlhKTsKICAgICBNZWRpYUxpc3QoQ1NTUnVsZSog
cGFyZW50UnVsZSwgY29uc3QgU3RyaW5nJiBtZWRpYSk7CiAKQEAgLTE0OSwyNiArMTUwLDI0IEBA
IHB1YmxpYzoKIAogICAgIENTU1N0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQoKSBjb25zdDsK
ICAgICBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3Q7Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkg
Y29uc3QgeyByZXR1cm4gbV9sc3RNZWRpYS5jb3VudCgpOyB9Ci0gICAgU3RyaW5nIGl0ZW0odW5z
aWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fbHN0TWVkaWFbaW5kZXhdOyB9CisgICAgdW5z
aWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sc3RRdWVyaWVzLmNvdW50KCk7IH0KKyAg
ICBTdHJpbmcgaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgdm9pZCBkZWxldGVNZWRp
dW0oY29uc3QgU3RyaW5nJiBvbGRNZWRpdW0pOwotICAgIHZvaWQgYXBwZW5kTWVkaXVtKGNvbnN0
IFN0cmluZyYgbmV3TWVkaXVtKSB7IG1fbHN0TWVkaWEuYXBwZW5kKG5ld01lZGl1bSk7IH0KKyAg
ICB2b2lkIGFwcGVuZE1lZGl1bShjb25zdCBTdHJpbmcmIG5ld01lZGl1bSk7CiAKICAgICBTdHJp
bmcgbWVkaWFUZXh0KCkgY29uc3Q7CiAgICAgdm9pZCBzZXRNZWRpYVRleHQoY29uc3QgU3RyaW5n
Jik7CiAKICAgICAvKioKLSAgICAgKiBDaGVjayBpZiB0aGUgbGlzdCBjb250YWlucyBlaXRoZXIg
dGhlIHJlcXVlc3RlZCBtZWRpdW0sIG9yIHRoZQotICAgICAqIGNhdGNoLWFsbCAiYWxsIiBtZWRp
YSB0eXBlLiBSZXR1cm5zIHRydWUgd2hlbiBmb3VuZCwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgICAq
IFNpbmNlIG5vdCBzcGVjaWZ5aW5nIG1lZGlhIHR5cGVzIHNob3VsZCBiZSB0cmVhdGVkIGFzICJh
bGwiIGFjY29yZGluZwotICAgICAqIHRvIERPTSBzcGVjcywgYW4gZW1wdHkgbGlzdCBhbHdheXMg
cmV0dXJucyB0cnVlLgotICAgICAqCiAgICAgICogX05PVF8gcGFydCBvZiB0aGUgRE9NIQogICAg
ICAqLwotICAgIGJvb2wgY29udGFpbnMoY29uc3QgU3RyaW5nJiBtZWRpdW0pIGNvbnN0OworICAg
IHZvaWQgYXBwZW5kTWVkaWFRdWVyeShNZWRpYVF1ZXJ5KiBtZWRpYVF1ZXJ5KTsKKyAgICBjb25z
dCBEZXByZWNhdGVkUHRyTGlzdDxNZWRpYVF1ZXJ5PiogbWVkaWFRdWVyaWVzKCkgY29uc3QgeyBy
ZXR1cm4gJm1fbHN0UXVlcmllczsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgRGVwcmVjYXRlZFZhbHVl
TGlzdDxTdHJpbmc+IG1fbHN0TWVkaWE7CisgICAgRGVwcmVjYXRlZFB0ckxpc3Q8TWVkaWFRdWVy
eT4gbV9sc3RRdWVyaWVzOworICAgIFN0cmluZyBtX21lZGlhVGV4dDsKKwogfTsKIAogfSAvLyBu
YW1lc3BhY2UKSW5kZXg6IFdlYkNvcmUvY3NzL21ha2VtZWRpYWZlYXR1cmVzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvY3NzL21ha2VtZWRpYWZlYXR1cmVzCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9jc3MvbWFrZW1lZGlhZmVhdHVyZXMJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKyMg
ICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgS0RFIGxpYnJhcmllcworIworIyAgIENvcHlyaWdo
dCAoQykgMTk5OSBXYWxkbyBCYXN0aWFuIChiYXN0aWFuQGtkZS5vcmcpCisjCisjICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
IyAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisjICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCisjICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisj
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyMgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyMKKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjICAgYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyMgICB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0
ZSAzMzAsCisjICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisjCisjLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQorIworIyAgS0RFIEhUTUwgV2lkZ2V0IC0tIFNjcmlwdCB0byBnZW5lcmF0ZSBDU1NN
ZWRpYUZlYXR1cmVzLmMgYW5kIENTU01lZGlhRmVhdHVyZXMuaAorIworZ3JlcCAiXlteXCNdIiBD
U1NNZWRpYUZlYXR1cmVzLmluID4gQ1NTTWVkaWFGZWF0dXJlcy5zdHJpcAorCitlY2hvIC1lICcl
e1xuLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gQ1NTTWVkaWFG
ZWF0dXJlcy5pbiBieSBtYWtlcHJvcCwgZG8gbm90IGVkaXQgKi9cbi8qIENvcHlyaWdodCAxOTk5
IFcuIEJhc3RpYW4gKi9cbiNpbmNsdWRlICJDU1NNZWRpYUZlYXR1cmVzLmgiXG4lfVxuc3RydWN0
IGNzc19tZWRpYV9mZWF0dXJlX3BhaXIge1xuICAgIGNvbnN0IGNoYXIgKm5hbWU7XG4gICAgaW50
IGlkO1xufTtcbiUlJyA+IENTU01lZGlhRmVhdHVyZXMuZ3BlcmYKK2NhdCBDU1NNZWRpYUZlYXR1
cmVzLnN0cmlwIHwgYXdrICd7IGRvIHsgcHJvcCA9ICQwOyBnc3ViKCItIiwgIl8iKTsgcHJpbnQg
cHJvcCAiLCBDU1NfTUVESUFfRkVBVF8iIHRvdXBwZXIoJDApIH0gd2hpbGUgKGdldGxpbmUpIH0n
ID4+IENTU01lZGlhRmVhdHVyZXMuZ3BlcmYKK2VjaG8gJyUlJyA+PiBDU1NNZWRpYUZlYXR1cmVz
LmdwZXJmCitlY2hvIC1lICcvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQg
ZnJvbSBDU1NNZWRpYUZlYXR1cmVzLmluIGJ5IG1ha2Vwcm9wLCBkbyBub3QgZWRpdCAqL1xuLyog
Q29weXJpZ2h0IDE5OTggVy4gQmFzdGlhbiAqL1xuXG4jaWZuZGVmIENTU01FRElBRkVBVFVSRVNf
SFxuI2RlZmluZSBDU1NNRURJQUZFQVRVUkVTX0hcblxuV2ViQ29yZTo6U3RyaW5nIGdldE1lZGlh
RmVhdHVyZU5hbWUodW5zaWduZWQgc2hvcnQgaWQpO1xuJyA+IENTU01lZGlhRmVhdHVyZXMuaAor
Y2F0IENTU01lZGlhRmVhdHVyZXMuc3RyaXAgfCBhd2sgJ3sgXAoraT0xOyBcCitwcmludCAiI2Rl
ZmluZSBDU1NfTUVESUFfRkVBVF9JTlZBTElEIDAiOyBcCitwcmludCAiI2RlZmluZSBDU1NfTUVE
SUFfRkVBVF9NSU4gMSI7IFwKK2RvIHsgZ3N1YigiLSIsICJfIik7IHByaW50ICIjZGVmaW5lIENT
U19NRURJQV9GRUFUXyIgdG91cHBlcigkMCkgIiAiIGk7IGkgPSBpICsgMSB9IHdoaWxlIChnZXRs
aW5lKTsgXAorcHJpbnQgIiI7IFwKK3ByaW50ICIjZGVmaW5lIENTU19NRURJQV9GRUFUX01BWCBD
U1NfTUVESUFfRkVBVF9XSURUSCI7IFwKK3ByaW50ICIjZGVmaW5lIENTU19NRURJQV9GRUFUX1RP
VEFMICIgaSBcCit9JyA+PiBDU1NNZWRpYUZlYXR1cmVzLmgKK2dwZXJmIC1hIC1MICdBTlNJLUMn
IC1FIC1DIC1jIC1vIC10IC1rICcqJyAtTmZpbmRNZWRpYUZlYXR1cmUgLUhoYXNoX21lZGlhX2Zl
YXQgLVd3b3JkbGlzdF9tZWRpYV9mZWF0IC1EIC1zIDIgQ1NTTWVkaWFGZWF0dXJlcy5ncGVyZiA+
IENTU01lZGlhRmVhdHVyZXMuYyB8fCBleGl0IDEKK2VjaG8gLWUgJyNlbmRpZlxuJyA+PiBDU1NN
ZWRpYUZlYXR1cmVzLmgKKworY2F0IENTU01lZGlhRmVhdHVyZXMuc3RyaXAgfCBhd2sgJ3sgXAor
aT0xOyBcCitwcmludCAic3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBtZWRpYUZlYXR1cmVMaXN0
W10gPSB7IjsgXAorcHJpbnQgIlwiXCIsIjsgXAorZG8geyBwcmludCAiXCIiICQwICJcIiwgIjsg
aSA9IGkgKyAxIH0gd2hpbGUgKGdldGxpbmUpOyBcCitwcmludCAiICAgIDAiOyBcCitwcmludCAi
fTsiOyBcCitwcmludCAiV2ViQ29yZTo6U3RyaW5nIGdldE1lZGlhRmVhdHVyZU5hbWUodW5zaWdu
ZWQgc2hvcnQgaWQpIjsgXAorcHJpbnQgInsiOyBcCitwcmludCAiICAgIGlmKGlkID49IENTU19N
RURJQV9GRUFUX1RPVEFMIHx8IGlkID09IDApIjsgXAorcHJpbnQgIiAgICAgIHJldHVybiBXZWJD
b3JlOjpTdHJpbmcoKTsiO1wKK3ByaW50ICIgICAgZWxzZSI7XAorcHJpbnQgIiAgICAgIHJldHVy
biBXZWJDb3JlOjpTdHJpbmcobWVkaWFGZWF0dXJlTGlzdFtpZF0pOyI7IFwKK3ByaW50ICJ9OyI7
IFwKK3ByaW50ICIiOyBcCit9JyA+PiBDU1NNZWRpYUZlYXR1cmVzLmMKSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3Nz
L0NTU01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3Mv
Q1NTTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzY0IEBA
CisvKgorICogQ1NTIE1lZGlhIFF1ZXJ5IEV2YWx1YXRvcgorICoKKyAqIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiBLaW1tbyBLaW5udW5lbiA8a2ltbW8udC5raW5udW5lbkBub2tpYS5jb20+LiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkNTU01lZGlhUXVlcnlFdmFsdWF0b3IuaCIKKyNpbmNsdWRlICJDU1NNZWRpYUZlYXR1cmVz
LmgiCisjaW5jbHVkZSAiY3NzX3N0eWxlc2hlZXRpbXBsLmgiCisjaW5jbHVkZSAiY3NzX3ZhbHVl
aW1wbC5oIgorI2luY2x1ZGUgInJlbmRlcmluZy9yZW5kZXJfc3R5bGUuaCIKKyNpbmNsdWRlICJw
YWdlL0ZyYW1lVmlldy5oIgorI2luY2x1ZGUgIlNjcmVlbi5oIgorCit1c2luZyBuYW1lc3BhY2Ug
V2ViQ29yZTsKKworTWVkaWFRdWVyeUV2YWx1YXRvcjo6IE1lZGlhUXVlcnlFdmFsdWF0b3IoYm9v
bCBtZWRpYUZlYXR1cmVSZXN1bHQpCisgICAgOiBtX3ZpZXcoMCkKKyAgICAsIG1fc3R5bGUoMCkK
KyAgICAsIG1fZXhwUmVzdWx0KG1lZGlhRmVhdHVyZVJlc3VsdCkKK3sKK30KKworTWVkaWFRdWVy
eUV2YWx1YXRvcjo6IE1lZGlhUXVlcnlFdmFsdWF0b3IoY29uc3QgU3RyaW5nJiBhY2NlcHRlZE1l
ZGlhVHlwZSwgYm9vbCBtZWRpYUZlYXR1cmVSZXN1bHQpCisgICAgOiBtX21lZGlhVHlwZShhY2Nl
cHRlZE1lZGlhVHlwZSkKKyAgICAsIG1fdmlldygwKQorICAgICwgbV9zdHlsZSgwKQorICAgICwg
bV9leHBSZXN1bHQobWVkaWFGZWF0dXJlUmVzdWx0KQoreworfQorCitNZWRpYVF1ZXJ5RXZhbHVh
dG9yOjogTWVkaWFRdWVyeUV2YWx1YXRvcihjb25zdCBTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBl
LCBGcmFtZVZpZXcqIHZpZXcsIFJlbmRlclN0eWxlKiBzdHlsZSkKKyAgICA6IG1fbWVkaWFUeXBl
KGFjY2VwdGVkTWVkaWFUeXBlLmxvd2VyKCkpCisgICAgLCBtX3ZpZXcodmlldykKKyAgICAsIG1f
c3R5bGUoc3R5bGUpCisgICAgLCBtX2V4cFJlc3VsdChmYWxzZSkgLy8gZG9lc24ndCBtYXR0ZXIK
K3sKK30KKworTWVkaWFRdWVyeUV2YWx1YXRvcjo6fk1lZGlhUXVlcnlFdmFsdWF0b3IoKQorewor
fQorCitib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6Om1lZGlhVHlwZU1hdGNoKGNvbnN0IFN0cmlu
ZyYgbWVkaWFUeXBlVG9NYXRjaCkgY29uc3QKK3sKKyAgICByZXR1cm4gbWVkaWFUeXBlVG9NYXRj
aC5pc051bGwoKQorICAgICAgICB8fCBtZWRpYVR5cGVUb01hdGNoLmlzRW1wdHkoKQorICAgICAg
ICB8fCAobWVkaWFUeXBlVG9NYXRjaC5zdGFydHNXaXRoKCJhbGwiLCBmYWxzZSkgJiYgbWVkaWFU
eXBlVG9NYXRjaC5sZW5ndGgoKSA9PSAzKQorICAgICAgICB8fCBtZWRpYVR5cGVUb01hdGNoLmxv
d2VyKCkgPT0gbV9tZWRpYVR5cGU7Cit9CisKK3N0YXRpYyBib29sIGFwcGx5UmVzdHJpY3RvcihN
ZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHIsIGJvb2wgdmFsdWUpCit7CisgICAgcmV0dXJuIHIgPT0g
TWVkaWFRdWVyeTo6Tm90ID8gIXZhbHVlIDogdmFsdWU7Cit9CisKK2Jvb2wgTWVkaWFRdWVyeUV2
YWx1YXRvcjo6ZXZhbChjb25zdCBNZWRpYUxpc3QqIG1lZGlhTGlzdCkgY29uc3QKK3sKKyAgICBp
ZiAoIW1lZGlhTGlzdCkKKwkJcmV0dXJuIHRydWU7CisKKyAgICBEZXByZWNhdGVkUHRyTGlzdEl0
ZXJhdG9yPE1lZGlhUXVlcnk+IGl0KCptZWRpYUxpc3QtPm1lZGlhUXVlcmllcygpKTsKKyAgICBp
ZiAoIWl0LmN1cnJlbnQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7IC8vIGVtcHR5IHF1ZXJ5IGxp
c3QgZXZhbHVhdGVzIHRvIHRydWUKKworICAgIC8vIGl0ZXJhdGUgb3ZlciBxdWVyaWVzLCBzdG9w
IGlmIGFueSBvZiB0aGVtIGV2YWwgdG8gdHJ1ZSAoT1Igc2VtYW50aWNzKQorICAgIGJvb2wgcmVz
dWx0ID0gZmFsc2U7CisgICAgZm9yIChNZWRpYVF1ZXJ5KiBxdWVyeSA9IGl0LmN1cnJlbnQoKTsg
cXVlcnkgJiYgKHJlc3VsdD09ZmFsc2UpOyBxdWVyeSA9ICsraXQpIHsKKworICAgICAgICBpZiAo
bWVkaWFUeXBlTWF0Y2gocXVlcnktPm1lZGlhVHlwZSgpKSkgeworICAgICAgICAgICAgRGVwcmVj
YXRlZFB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5RXhwPiBleHBfaXQoKnF1ZXJ5LT5leHByZXNz
aW9ucygpLT5saXN0KCkpOworICAgICAgICAgICAgLy8gaXRlcmF0ZSB0aHJvdWdoIGV4cHJlc3Np
b25zLCBzdG9wIGlmIGFueSBvZiB0aGVtIGV2YWwgdG8gZmFsc2UgKEFORCBzZW1hbnRpY3MpCisg
ICAgICAgICAgICBNZWRpYVF1ZXJ5RXhwKiBleHAgPSAwOworICAgICAgICAgICAgZm9yIChleHAg
PSBleHBfaXQuY3VycmVudCgpOyBleHAgJiYgZXZhbChleHApOyBleHAgPSArK2V4cF9pdCkgLyog
ZW1wdHkqLzsKKworICAgICAgICAgICAgLy8gYXNzdW1lIHRydWUgaWYgd2UgYXJlIGF0IHRoZSBl
bmQgb2YgdGhlIGxpc3QsIG90aGVyd2lzZSBhc3N1bWUgZmFsc2UKKyAgICAgICAgICAgIHJlc3Vs
dCA9IGFwcGx5UmVzdHJpY3RvcihxdWVyeS0+cmVzdHJpY3RvcigpLCAhZXhwKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGFwcGx5UmVzdHJpY3RvcihxdWVyeS0+cmVz
dHJpY3RvcigpLCBmYWxzZSk7CisJCX0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwor
c3RhdGljIGJvb2wgcGFyc2VBc3BlY3RSYXRpbyhDU1NWYWx1ZSogdmFsdWUsIGludCogYSwgaW50
KiBiKQoreworICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSApeworICAgICAgICBDU1NWYWx1
ZUxpc3QqIHZhbHVlTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKKyAg
ICAgICAgaWYgKHZhbHVlTGlzdC0+bGVuZ3RoKCkgPT0gMyApIHsKKyAgICAgICAgICAgIENTU1Zh
bHVlKiBpMCA9IHZhbHVlTGlzdC0+aXRlbSgwKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiBpMSA9
IHZhbHVlTGlzdC0+aXRlbSgxKTsKKyAgICAgICAgICAgIENTU1ZhbHVlKiBpMiA9IHZhbHVlTGlz
dC0+aXRlbSgyKTsKKyAgICAgICAgICAgIGlmIChpMC0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaTApLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIKKyAgICAgICAgICAgICAgICAmJiBpMS0+aXNQcmlt
aXRpdmVWYWx1ZSgpICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oaTEpLT5wcmlt
aXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcKKyAgICAgICAgICAg
ICAgICAmJiBpMi0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4oaTIpLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyID0gc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihpMSktPmdldFN0cmluZ1ZhbHVlKCk7CisgICAgICAgICAgICAgICAgaWYg
KCFzdHIuaXNOdWxsKCkgJiYgc3RyLmxlbmd0aCgpID09IDEgJiYgc3RyWzBdID09IFFDaGFyKCcv
JykpIHsKKyAgICAgICAgICAgICAgICAgICAgKmEgPSAoaW50KSBzdGF0aWNfY2FzdDxDU1NQcmlt
aXRpdmVWYWx1ZSo+KGkwKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05V
TUJFUik7CisgICAgICAgICAgICAgICAgICAgICpiID0gKGludCkgc3RhdGljX2Nhc3Q8Q1NTUHJp
bWl0aXZlVmFsdWUqPihpMiktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19O
VU1CRVIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOwor
fQorCitib29sIE1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWwoY29uc3QgTWVkaWFRdWVyeUV4cCog
ZXhwcikgY29uc3QKK3sKKyAgICBpZiAoIW1fdmlldyB8fCAhbV9zdHlsZSkKKyAgICAgICAgcmV0
dXJuIG1fZXhwUmVzdWx0OworICAgIENTU1ZhbHVlKiB2YWx1ZSA9IGV4cHItPnZhbHVlKCk7Cisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZSA9IDA7CisKKyAgICBib29sIGlzTnVtYmVy
VmFsdWUgPSBmYWxzZTsKKyAgICBkb3VibGUgbnVtYmVyVmFsdWUgPSAtMTsKKyAgICBpbnQgcHJp
bWl0aXZlTGVuZ3RoID0gLTE7CisgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5pc1ByaW1pdGl2ZVZh
bHVlKCkpIHsKKyAgICAgICAgcHJpbWl0aXZlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPih2YWx1ZSk7CisgICAgICAgIHByaW1pdGl2ZUxlbmd0aCA9IHByaW1pdGl2ZS0+Y29tcHV0
ZUxlbmd0aEludChtX3N0eWxlKTsKKyAgICAgICAgaWYgKHByaW1pdGl2ZS0+cHJpbWl0aXZlVHlw
ZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7CisgICAgICAgICAgICBpc051
bWJlclZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIG51bWJlclZhbHVlID0gcHJpbWl0aXZlLT5n
ZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIHN3aXRjaCAoZXhwci0+bWVkaWFGZWF0dXJlKCkpIHsKKworICAgICAgICBj
YXNlIENTU19NRURJQV9GRUFUX01PTk9DSFJPTUU6CisgICAgICAgICAgICBpZiAoIXNjcmVlbklz
TW9ub2Nocm9tZShtX3ZpZXcpKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAg
ICAgICAgIC8qIGZhbGwgdGhyb3VnaCovCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfQ09M
T1I6IHsKKyAgICAgICAgICAgIGludCBiaXRzUGVyQ29tcG9uZW50ID0gc2NyZWVuRGVwdGhQZXJD
b21wb25lbnQobV92aWV3KTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gKGlzTnVtYmVyVmFsdWUgJiYgYml0c1BlckNvbXBvbmVudCA9PSAoaW50KW51bWJl
clZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gYml0c1Bl
ckNvbXBvbmVudCAhPSAwOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVB
VF9NSU5fTU9OT0NIUk9NRToKKyAgICAgICAgICAgIGlmICghc2NyZWVuSXNNb25vY2hyb21lKG1f
dmlldykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgLyogZmFs
bCB0aHJvdWdoICovCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUlOX0NPTE9SOiB7Cisg
ICAgICAgICAgICBpbnQgYml0c1BlckNvbXBvbmVudCA9IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50
KG1fdmlldyk7CisgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJu
IChpc051bWJlclZhbHVlICYmIGJpdHNQZXJDb21wb25lbnQgPj0gKGludCludW1iZXJWYWx1ZSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGJpdHNQZXJDb21wb25l
bnQgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUFYX01P
Tk9DSFJPTUU6CisgICAgICAgICAgICBpZiAoIXNjcmVlbklzTW9ub2Nocm9tZShtX3ZpZXcpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIC8qIGZhbGwgdGhyb3Vn
aCAqLworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01BWF9DT0xPUjogeworICAgICAgICAg
ICAgaW50IGJpdHNQZXJDb21wb25lbnQgPSBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChtX3ZpZXcp
OworICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiAoaXNOdW1i
ZXJWYWx1ZSAmJiBiaXRzUGVyQ29tcG9uZW50IDw9IChpbnQpbnVtYmVyVmFsdWUpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBiaXRzUGVyQ29tcG9uZW50ICE9IDA7
CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX0NPTE9SX0lOREVYOgor
ICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9DT0xPUl9JTkRFWDoKKyAgICAgICAgY2Fz
ZSBDU1NfTUVESUFfRkVBVF9NQVhfQ09MT1JfSU5ERVg6CisgICAgICAgICAgICAvLy8gWFhYOiBo
b3cgdG8gZ2V0IGRpc3BsYXkgbW9kZSBmcm9tIEtXUT8KKyAgICAgICAgICAgIGJyZWFrOworCisg
ICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfREVWSUNFX0FTUEVDVF9SQVRJTzogeworICAgICAg
ICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgSW50UmVjdCBzZyA9IHNjcmVlblJl
Y3QobV92aWV3KTsKKyAgICAgICAgICAgICAgICBpbnQgYTsKKyAgICAgICAgICAgICAgICBpbnQg
YjsKKyAgICAgICAgICAgICAgICBpZiAocGFyc2VBc3BlY3RSYXRpbyh2YWx1ZSwgJmEsICZiKSkK
KyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChiIT0wKSAmJiAoYSpzZy5oZWlnaHQoKSA9PSBi
KnNnLndpZHRoKCkpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyAo
ZGV2aWNlLWFzcGVjdC1yYXRpbyksIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBpdHMgYXNw
ZWN0IHJhdGlvIGlzIG5vbi16ZXJvCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9E
RVZJQ0VfQVNQRUNUX1JBVElPOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAg
ICAgICAgICBJbnRSZWN0IHNnID0gc2NyZWVuUmVjdChtX3ZpZXcpOworICAgICAgICAgICAgICAg
IGludCBhOworICAgICAgICAgICAgICAgIGludCBiOworICAgICAgICAgICAgICAgIGlmIChwYXJz
ZUFzcGVjdFJhdGlvKHZhbHVlLCAmYSwgJmIpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KGIhPTApICYmICgoKGRvdWJsZSlzZy53aWR0aCgpL3NnLmhlaWdodCgpKSA+PSAoKGRvdWJsZSlh
L2IpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gKG1pbi1kZXZp
Y2UtYXNwZWN0LXJhdGlvKSwgYXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGl0cyBhc3BlY3Qg
cmF0aW8gaXMgbm9uLXplcm8KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUFYX0RFVklD
RV9BU1BFQ1RfUkFUSU86IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAg
ICAgIEludFJlY3Qgc2cgPSBzY3JlZW5SZWN0KG1fdmlldyk7CisgICAgICAgICAgICAgICAgaW50
IGE7CisgICAgICAgICAgICAgICAgaW50IGI7CisgICAgICAgICAgICAgICAgaWYgKHBhcnNlQXNw
ZWN0UmF0aW8odmFsdWUsICZhLCAmYikpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoYiE9
MCkgJiYgKCgoZG91YmxlKXNnLndpZHRoKCkvc2cuaGVpZ2h0KCkpIDw9ICgoZG91YmxlKWEvYikp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyAobWF4LWRldmljZS1h
c3BlY3QtcmF0aW8pLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgaXRzIGFzcGVjdCByYXRp
byBpcyBub24temVybworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9ERVZJQ0VfSEVJR0hU
OiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHNn
ID0gc2NyZWVuUmVjdChtX3ZpZXcpOworICAgICAgICAgICAgICAgIHJldHVybiAocHJpbWl0aXZl
ICYmIHNnLmhlaWdodCgpID09IHByaW1pdGl2ZUxlbmd0aCk7CisgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgIC8vIChkZXZpY2UtaGVpZ2h0KSwgYXNzdW1lIGlmIHdlIGhhdmUg
YSBkZXZpY2UsIGFzc3VtZSBub24temVybworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVESUFfRkVBVF9N
SU5fREVWSUNFX0hFSUdIVDogeworICAgICAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAg
ICAgICAgSW50UmVjdCBzZyA9IHNjcmVlblJlY3QobV92aWV3KTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gKHByaW1pdGl2ZSAmJiBzZy5oZWlnaHQoKSA+PSBwcmltaXRpdmVMZW5ndGgpOworICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyAobWluLWRldmljZS1oZWlnaHQp
LCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgYXNzdW1lIG5vbi16ZXJvCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBj
YXNlIENTU19NRURJQV9GRUFUX01BWF9ERVZJQ0VfSEVJR0hUOiB7CisgICAgICAgICAgICBpZiAo
dmFsdWUpIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHNnID0gc2NyZWVuUmVjdChtX3ZpZXcp
OworICAgICAgICAgICAgICAgIHJldHVybiAocHJpbWl0aXZlICYmIHNnLmhlaWdodCgpIDw9IHBy
aW1pdGl2ZUxlbmd0aCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8v
IChtYXgtZGV2aWNlLWhlaWdodCksIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBhc3N1bWUg
bm9uLXplcm8KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfREVWSUNFX1dJRFRIOiB7Cisg
ICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICBJbnRSZWN0IHNnID0gc2Ny
ZWVuUmVjdChtX3ZpZXcpOworICAgICAgICAgICAgICAgIHJldHVybiAocHJpbWl0aXZlICYmIHNn
LndpZHRoKCkgPT0gcHJpbWl0aXZlTGVuZ3RoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgLy8gKGRldmljZS13aWR0aCksIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNl
LCBhc3N1bWUgbm9uLXplcm8KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUlOX0RFVklD
RV9XSURUSDogeworICAgICAgICAgICAgaWYgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgSW50
UmVjdCBzZyA9IHNjcmVlblJlY3QobV92aWV3KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKHBy
aW1pdGl2ZSAmJiBzZy53aWR0aCgpID49IHByaW1pdGl2ZUxlbmd0aCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIChtaW4tZGV2aWNlLXdpZHRoKSwgYXNzdW1lIGlm
IHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybworICAgICAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDU1NfTUVE
SUFfRkVBVF9NQVhfREVWSUNFX1dJRFRIOiB7CisgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAg
ICAgICAgICAgICAgICBJbnRSZWN0IHNnID0gc2NyZWVuUmVjdChtX3ZpZXcpOworICAgICAgICAg
ICAgICAgIHJldHVybiAocHJpbWl0aXZlICYmIHNnLndpZHRoKCkgPD0gcHJpbWl0aXZlTGVuZ3Ro
KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gKG1heC1kZXZpY2Ut
d2lkdGgpLCBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgYXNzdW1lIG5vbi16ZXJvCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIENTU19NRURJQV9GRUFUX0dSSUQ6IHsKKyAgICAgICAgICAgIC8vIGlmIG91dHB1
dCBkZXZpY2UgaXMgYml0bWFwLCBncmlkOiAwID09IHRydWUKKyAgICAgICAgICAgIGlmICh2YWx1
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gKGlzTnVtYmVyVmFsdWUgJiYgIChpbnQpbnVtYmVy
VmFsdWUgPT0gMCApOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfSEVJR0hUOiB7
CisgICAgICAgICAgICBpZiAodmFsdWUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHByaW1pdGl2
ZSAmJiBtX3ZpZXctPnZpc2libGVIZWlnaHQoKSA9PSBwcmltaXRpdmVMZW5ndGg7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdmlldy0+dmlzaWJsZUhlaWdodCgp
ICE9IDA7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFUX01JTl9IRUlH
SFQ6IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJp
bWl0aXZlICYmIG1fdmlldy0+dmlzaWJsZUhlaWdodCgpID49IHByaW1pdGl2ZUxlbmd0aDsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1cm4gbV92aWV3LT52aXNpYmxlSGVp
Z2h0KCkgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUFY
X0hFSUdIVDogeworICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVy
biAocHJpbWl0aXZlICYmIG1fdmlldy0+dmlzaWJsZUhlaWdodCgpIDw9IHByaW1pdGl2ZUxlbmd0
aCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIChtX3ZpZXctPnZp
c2libGVIZWlnaHQoKSAhPSAwKTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElB
X0ZFQVRfV0lEVEg6IHsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcHJpbWl0aXZlICYmIG1fdmlldy0+dmlzaWJsZVdpZHRoKCkgPT0gcHJpbWl0aXZlTGVu
Z3RoOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBtX3ZpZXctPnZp
c2libGVXaWR0aCgpICE9IDA7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJQV9G
RUFUX01JTl9XSURUSDogeworICAgICAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgICAg
IHJldHVybiBwcmltaXRpdmUgJiYgbV92aWV3LT52aXNpYmxlV2lkdGgoKSA+PSBwcmltaXRpdmVM
ZW5ndGg7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIG1fdmlldy0+
dmlzaWJsZVdpZHRoKCkgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQ1NTX01FRElB
X0ZFQVRfTUFYX1dJRFRIOnsKKyAgICAgICAgICAgIGlmICh2YWx1ZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gcHJpbWl0aXZlICYmIG1fdmlldy0+dmlzaWJsZVdpZHRoKCkgPD0gcHJpbWl0aXZl
TGVuZ3RoOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJldHVybiBtX3ZpZXct
PnZpc2libGVXaWR0aCgpICE9IDA7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIENTU19NRURJ
QV9GRUFUX1JFU09MVVRJT046CisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUlOX1JFU09M
VVRJT046CisgICAgICAgIGNhc2UgQ1NTX01FRElBX0ZFQVRfTUFYX1JFU09MVVRJT046CisgICAg
ICAgICAgICAvL1hYWDogQ1NTX0RJTUVOU0lPTiBkb2Vzbid0IHNlZW0gdG8gYmUgc3VwcG9ydGVk
IGJ5IEtIVE1MCisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIENTU19NRURJQV9G
RUFUX1NDQU46CisgICAgICAgICAgICAvLyBzY2FuIGFwcGxpZXMgdG8gdHYgbWVkaWEgdHlwZXMK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjYXNlIENTU19NRURJQV9GRUFU
X0lOVkFMSUQ6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkocmV2
aXNpb24gMTQwOTYpCisrKyBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjYsNiArMjYsNyBAQAogCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5o
IgogI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJDU1NNZWRpYVF1ZXJ5
RXZhbHVhdG9yLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgpAQCAtMTU1LDcgKzE1Niw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1J1bGVEYXRh
TGlzdCo+IEF0b21SdWxlTWFwOwogICAgIAotICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoQ1NT
U3R5bGVTaGVldCogc2hlZXQsIGNvbnN0IFN0cmluZyAmbWVkaXVtID0gInNjcmVlbiIpOworICAg
IHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldCogc2hlZXQsIE1lZGlhUXVlcnlF
dmFsdWF0b3IqIG1lZGl1bSk7CiAgICAgCiAgICAgdm9pZCBhZGRSdWxlKENTU1N0eWxlUnVsZSog
cnVsZSwgQ1NTU2VsZWN0b3IqIHNlbCk7CiAgICAgdm9pZCBhZGRUb1J1bGVTZXQoQXRvbWljU3Ry
aW5nSW1wbCoga2V5LCBBdG9tUnVsZU1hcCYgbWFwLApAQCAtMTk3LDE4ICsxOTgsMzkgQEAgQ1NT
U3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihEb2N1bQogICAgIHNldHRpbmdzID0gdmll
dyA/IHZpZXctPmZyYW1lKCktPnNldHRpbmdzKCkgOiAwOwogICAgIGlmICghZGVmYXVsdFN0eWxl
KQogICAgICAgICBsb2FkRGVmYXVsdFN0eWxlKCk7Ci0gICAgbV9tZWRpYVR5cGUgPSB2aWV3ID8g
dmlldy0+bWVkaWFUeXBlKCkgOiBTdHJpbmcoImFsbCIpOwogCiAgICAgbV91c2VyU3R5bGUgPSAw
OwogICAgIG1fdXNlclNoZWV0ID0gMDsKIAorICAgIC8vIGNvbnN0cnVjdCBkb2N1bWVudCByb290
IGVsZW1lbnQgZGVmYXVsdCBzdHlsZS4gdGhpcyBpcyBuZWVkZWQKKyAgICAvLyB0byBldmFsdWF0
ZSBtZWRpYSBxdWVyaWVzIHRoYXQgY29udGFpbiByZWxhdGl2ZSBjb25zdHJhaW50cywgbGlrZSAi
c2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxMGVtKSIKKyAgICAvLyBUaGlzIGlzIGhlcmUgaW5zdGVh
ZCBvZiBjb25zdHJ1Y3RvciwgYmVjYXVzZSB3aGVuIGNvbnN0cnVjdG9yIGlzIHJ1biwKKyAgICAv
LyBkb2N1bWVudCBkb2Vzbid0IGhhdmUgZG9jdW1lbnRFbGVtZW50CisgICAgLy8gWFhYOiB0aGlz
IGFzc3VtZXMgdGhhdCBlbGVtZW50IHRoYXQgZ2V0cyBwYXNzZWQgdG8gc3R5bGVGb3JFbGVtZW50
IC1jYWxsCisgICAgLy8gaXMgZnJvbSB0aGUgZG9jdW1lbnQgdGhhdCBvd25zIHRoZSBzdHlsZSBz
ZWxlY3RvcgorICAgIGlmICh2aWV3KQorICAgICAgICBtX21lZGl1bSA9IG5ldyBNZWRpYVF1ZXJ5
RXZhbHVhdG9yKHZpZXctPm1lZGlhVHlwZSgpKTsKKyAgICBlbHNlCisgICAgICAgIG1fbWVkaXVt
ID0gbmV3IE1lZGlhUXVlcnlFdmFsdWF0b3IoImFsbCIpOworCisgICAgRWxlbWVudCAqcm9vdCA9
IGRvYy0+ZG9jdW1lbnRFbGVtZW50KCk7CisKKyAgICBpZiAocm9vdCkKKyAgICAgICAgbV9yb290
RGVmYXVsdFN0eWxlID0gZGVmYXVsdFN0eWxlRm9yUm9vdChyb290KTsgLy8gZG9udCByZWYsIGJl
Y2F1c2UgdGhlIFJlbmRlclN0eWxlIGlzIGFsbG9jYXRlZCBmcm9tIGdsb2JhbCBoZWFwCisKKyAg
ICBpZiAobV9yb290RGVmYXVsdFN0eWxlICYmIHZpZXcpIHsKKyAgICAgICAgZGVsZXRlIG1fbWVk
aXVtOworICAgICAgICBtX21lZGl1bSA9IG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKHZpZXctPm1l
ZGlhVHlwZSgpLCB2aWV3LCBtX3Jvb3REZWZhdWx0U3R5bGUpOworICAgIH0KKworCiAgICAgLy8g
RklYTUU6IFRoaXMgc3Vja3MhIFRoZSB1c2VyIHNoZWV0IGlzIHJlcGFyc2VkIGV2ZXJ5IHRpbWUh
CiAgICAgaWYgKCF1c2VyU3R5bGVTaGVldC5pc0VtcHR5KCkpIHsKICAgICAgICAgbV91c2VyU2hl
ZXQgPSBuZXcgQ1NTU3R5bGVTaGVldChkb2MpOwogICAgICAgICBtX3VzZXJTaGVldC0+cGFyc2VT
dHJpbmcodXNlclN0eWxlU2hlZXQsIHN0cmljdFBhcnNpbmcpOwogCiAgICAgICAgIG1fdXNlclN0
eWxlID0gbmV3IENTU1J1bGVTZXQoKTsKLSAgICAgICAgbV91c2VyU3R5bGUtPmFkZFJ1bGVzRnJv
bVNoZWV0KG1fdXNlclNoZWV0LCBtX21lZGlhVHlwZSk7CisgICAgICAgIG1fdXNlclN0eWxlLT5h
ZGRSdWxlc0Zyb21TaGVldChtX3VzZXJTaGVldCwgbV9tZWRpdW0pOwogICAgIH0KIAogICAgIC8v
IGFkZCBzdHlsZXNoZWV0cyBmcm9tIGRvY3VtZW50CkBAIC0yMTcsMTAgKzIzOSw4IEBAIENTU1N0
eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW0KICAgICBEZXByZWNhdGVkUHRyTGlz
dEl0ZXJhdG9yPFN0eWxlU2hlZXQ+IGl0KHN0eWxlU2hlZXRzLT5zdHlsZVNoZWV0cyk7CiAgICAg
Zm9yICg7IGl0LmN1cnJlbnQoKTsgKytpdCkKICAgICAgICAgaWYgKGl0LmN1cnJlbnQoKS0+aXND
U1NTdHlsZVNoZWV0KCkgJiYgIWl0LmN1cnJlbnQoKS0+ZGlzYWJsZWQoKSkKLSAgICAgICAgICAg
IG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN0YXRpY19jYXN0PENTU1N0eWxlU2hl
ZXQqPihpdC5jdXJyZW50KCkpLCBtX21lZGlhVHlwZSk7CisgICAgICAgICAgICBtX2F1dGhvclN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzdGF0aWNfY2FzdDxDU1NTdHlsZVNoZWV0Kj4oaXQuY3Vy
cmVudCgpKSwgbV9tZWRpdW0pOwogCi0gICAgbV9ydWxlTGlzdCA9IDA7Ci0gICAgbV9jb2xsZWN0
UnVsZXNPbmx5ID0gZmFsc2U7CiB9CiAKIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0
b3IoQ1NTU3R5bGVTaGVldCAqc2hlZXQpCkBAIC0yMzAsMTAgKzI1MCwyMyBAQCBDU1NTdHlsZVNl
bGVjdG9yOjpDU1NTdHlsZVNlbGVjdG9yKENTU1N0CiAgICAgaWYgKCFkZWZhdWx0U3R5bGUpCiAg
ICAgICAgIGxvYWREZWZhdWx0U3R5bGUoKTsKICAgICBGcmFtZVZpZXcgKnZpZXcgPSBzaGVldC0+
ZG9jKCktPnZpZXcoKTsKLSAgICBtX21lZGlhVHlwZSA9ICB2aWV3ID8gdmlldy0+bWVkaWFUeXBl
KCkgOiBTdHJpbmcoImFsbCIpOworCisgICAgaWYgKHZpZXcpCisgICAgICAgIG1fbWVkaXVtID0g
bmV3IE1lZGlhUXVlcnlFdmFsdWF0b3Iodmlldy0+bWVkaWFUeXBlKCkpOworICAgIGVsc2UKKyAg
ICAgICAgbV9tZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigiYWxsIik7CisKKyAgICBF
bGVtZW50ICpyb290ID0gc2hlZXQtPmRvYygpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBpZiAo
cm9vdCkKKyAgICAgICAgbV9yb290RGVmYXVsdFN0eWxlID0gZGVmYXVsdFN0eWxlRm9yUm9vdChy
b290KTsKKworICAgIGlmIChtX3Jvb3REZWZhdWx0U3R5bGUgJiYgdmlldykgeworICAgICAgICBk
ZWxldGUgbV9tZWRpdW07CisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlhUXVlcnlFdmFsdWF0
b3Iodmlldy0+bWVkaWFUeXBlKCksIHZpZXcsIG1fcm9vdERlZmF1bHRTdHlsZSk7CisgICAgfQog
CiAgICAgbV9hdXRob3JTdHlsZSA9IG5ldyBDU1NSdWxlU2V0KCk7Ci0gICAgbV9hdXRob3JTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQoc2hlZXQsIG1fbWVkaWFUeXBlKTsKKyAgICBtX2F1dGhvclN0
eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzaGVldCwgbV9tZWRpdW0pOwogfQogCiB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmluaXQoKQpAQCAtMjQxLDYgKzI3NCwxMCBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmluaXQoKQogICAgIGVsZW1lbnQgPSAwOwogICAgIHNldHRpbmdzID0gMDsKICAgICBt
X21hdGNoZWRSdWxlQ291bnQgPSBtX21hdGNoZWREZWNsQ291bnQgPSBtX3RtcFJ1bGVDb3VudCA9
IDA7CisgICAgbV9ydWxlTGlzdCA9IDA7CisgICAgbV9jb2xsZWN0UnVsZXNPbmx5ID0gZmFsc2U7
CisgICAgbV9yb290RGVmYXVsdFN0eWxlID0gMDsKKyAgICBtX21lZGl1bSA9IDA7CiB9CiAKIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6c2V0RW5jb2RlZFVSTChjb25zdCBLVVJMJiB1cmwpCkBAIC0y
NjIsNiArMjk5LDkgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzZXRFbmNvZGVkVVJMKGNvbgog
CiBDU1NTdHlsZVNlbGVjdG9yOjp+Q1NTU3R5bGVTZWxlY3RvcigpCiB7CisgICAgZGVsZXRlIG1f
bWVkaXVtOworICAgIDo6ZGVsZXRlIG1fcm9vdERlZmF1bHRTdHlsZTsKKwogICAgIGRlbGV0ZSBt
X2F1dGhvclN0eWxlOwogICAgIGRlbGV0ZSBtX3VzZXJTdHlsZTsKICAgICBkZWxldGUgbV91c2Vy
U2hlZXQ7CkBAIC0yOTAsMjEgKzMzMCwyNCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmxvYWRE
ZWZhdWx0U3R5bGUoCiAgICAgZGVmYXVsdFByaW50U3R5bGUgPSBuZXcgQ1NTUnVsZVNldDsKICAg
ICBkZWZhdWx0UXVpcmtzU3R5bGUgPSBuZXcgQ1NTUnVsZVNldDsKIAorICAgIE1lZGlhUXVlcnlF
dmFsdWF0b3Igc2NyZWVuRXZhbCgic2NyZWVuIik7CisgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBw
cmludEV2YWwoInByaW50Iik7CisKICAgICAvLyBTdHJpY3QtbW9kZSBydWxlcy4KICAgICBkZWZh
dWx0U2hlZXQgPSBwYXJzZVVBU2hlZXQoaHRtbDRVc2VyQWdlbnRTdHlsZVNoZWV0KTsKLSAgICBk
ZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgInNjcmVlbiIpOwot
ICAgIGRlZmF1bHRQcmludFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsICJw
cmludCIpOworICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0
LCAmc2NyZWVuRXZhbCk7CisgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0
KGRlZmF1bHRTaGVldCwgJnByaW50RXZhbCk7CiAKICNpZiBTVkdfU1VQUE9SVAogICAgIC8vIFNW
RyBydWxlcy4KICAgICBzdmdTaGVldCA9IHBhcnNlVUFTaGVldChzdmdVc2VyQWdlbnRTdHlsZVNo
ZWV0KTsKLSAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN2Z1NoZWV0LCAic2Ny
ZWVuIik7Ci0gICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN2Z1NoZWV0
LCAicHJpbnQiKTsKKyAgICBkZWZhdWx0U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN2Z1NoZWV0
LCAmc2NyZWVuRXZhbCk7CisgICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0
KHN2Z1NoZWV0LCAmcHJpbnRFdmFsKTsKICNlbmRpZgogCiAgICAgLy8gUXVpcmtzLW1vZGUgcnVs
ZXMuCiAgICAgcXVpcmtzU2hlZXQgPSBwYXJzZVVBU2hlZXQocXVpcmtzVXNlckFnZW50U3R5bGVT
aGVldCk7Ci0gICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChxdWlya3NT
aGVldCwgInNjcmVlbiIpOworICAgIGRlZmF1bHRRdWlya3NTdHlsZS0+YWRkUnVsZXNGcm9tU2hl
ZXQocXVpcmtzU2hlZXQsICZzY3JlZW5FdmFsKTsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphZGRNYXRjaGVkUnVsZShDU1NSdWxlRGF0YSogcnVsZSkKQEAgLTY4Myw2ICs3MjYsMTkgQEAg
UmVuZGVyU3R5bGUqIENTU1N0eWxlU2VsZWN0b3I6OmxvY2F0ZVNoYQogICAgIHJldHVybiAwOwog
fQogCit2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoVUFBbmRQcmludFJ1bGVzKGludCYgZmly
c3RVQVJ1bGUsIGludCYgbGFzdFVBUnVsZSkKK3sKKyAgICAvLyAxLiBGaXJzdCB3ZSBtYXRjaCBy
dWxlcyBmcm9tIHRoZSB1c2VyIGFnZW50IHNoZWV0LgorICAgIG1hdGNoUnVsZXMoZGVmYXVsdFN0
eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CisKKyAgICAvLyAyLiBJbiBxdWlya3MgbW9k
ZSwgd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgcXVpcmtzIHVzZXIgYWdlbnQgc2hlZXQuCisgICAg
aWYgKCFzdHJpY3RQYXJzaW5nKQorICAgICAgICBtYXRjaFJ1bGVzKGRlZmF1bHRRdWlya3NTdHls
ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOworCisgICAgLy8gMy4gSWYgb3VyIG1lZGl1bSBp
cyBwcmludCwgdGhlbiB3ZSBtYXRjaCBydWxlcyBmcm9tIHRoZSBwcmludCBzaGVldC4KKyAgICBp
ZiAobV9tZWRpdW0tPm1lZGlhVHlwZU1hdGNoKCJwcmludCIpKQorICAgICAgICBtYXRjaFJ1bGVz
KGRlZmF1bHRQcmludFN0eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7Cit9CiAKIFJlbmRl
clN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpjcmVhdGVTdHlsZUZvckVsZW1lbnQoRWxlbWVudCog
ZSwgUmVuZGVyU3R5bGUqIGRlZmF1bHRQYXJlbnQsIGJvb2wgYWxsb3dTaGFyaW5nKQogewpAQCAt
NzE3LDE4ICs3NzMsOSBAQCBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlU3R5
CiAgICAgICAgIHN0eWxlLT5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7CiAgICAgZWxzZQogICAg
ICAgICBwYXJlbnRTdHlsZSA9IHN0eWxlOwotICAgIAotICAgIC8vIDEuIEZpcnN0IHdlIG1hdGNo
IHJ1bGVzIGZyb20gdGhlIHVzZXIgYWdlbnQgc2hlZXQuCisKICAgICBpbnQgZmlyc3RVQVJ1bGUg
PSAtMSwgbGFzdFVBUnVsZSA9IC0xOwotICAgIG1hdGNoUnVsZXMoZGVmYXVsdFN0eWxlLCBmaXJz
dFVBUnVsZSwgbGFzdFVBUnVsZSk7Ci0gICAgCi0gICAgLy8gMi4gSW4gcXVpcmtzIG1vZGUsIHdl
IG1hdGNoIHJ1bGVzIGZyb20gdGhlIHF1aXJrcyB1c2VyIGFnZW50IHNoZWV0LgotICAgIGlmICgh
c3RyaWN0UGFyc2luZykKLSAgICAgICAgbWF0Y2hSdWxlcyhkZWZhdWx0UXVpcmtzU3R5bGUsIGZp
cnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKLSAgICAKLSAgICAvLyAzLiBJZiBvdXIgbWVkaXVtIGlz
IHByaW50LCB0aGVuIHdlIG1hdGNoIHJ1bGVzIGZyb20gdGhlIHByaW50IHNoZWV0LgotICAgIGlm
IChtX21lZGlhVHlwZSA9PSAicHJpbnQiKQotICAgICAgICBtYXRjaFJ1bGVzKGRlZmF1bHRQcmlu
dFN0eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CisgICAgbWF0Y2hVQUFuZFByaW50UnVs
ZXMoZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogCiAgICAgLy8gNC4gTm93IHdlIGNoZWNrIHVz
ZXIgc2hlZXQgcnVsZXMuCiAgICAgaW50IGZpcnN0VXNlclJ1bGUgPSAtMSwgbGFzdFVzZXJSdWxl
ID0gLTE7CkBAIC03ODYsMTIgKzgzMyw4IEBAIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjdG9y
OjpjcmVhdGVTdHkKICAgICBhcHBseURlY2xhcmF0aW9ucyh0cnVlLCB0cnVlLCBmaXJzdFVBUnVs
ZSwgbGFzdFVBUnVsZSk7CiAgICAgCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIGdv
IGFoZWFkIGFuZCB1cGRhdGUgaXQgbm93LgotICAgIGlmIChmb250RGlydHkpIHsKLSAgICAgICAg
Y2hlY2tGb3JUZXh0U2l6ZUFkanVzdCgpOwotICAgICAgICBjaGVja0ZvckdlbmVyaWNGYW1pbHlD
aGFuZ2Uoc3R5bGUsIHBhcmVudFN0eWxlKTsKLSAgICAgICAgc3R5bGUtPmZvbnQoKS51cGRhdGUo
KTsKLSAgICAgICAgZm9udERpcnR5ID0gZmFsc2U7Ci0gICAgfQorICAgIGlmIChmb250RGlydHkp
CisgICAgICAgIGFkanVzdEZvbnQoKTsKICAgICAKICAgICAvLyBOb3cgZG8gdGhlIG5vcm1hbCBw
cmlvcml0eSBVQSBwcm9wZXJ0aWVzLgogICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCBmYWxz
ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwpAQCAtOTA1LDYgKzk0OCw1MCBAQCBSZW5kZXJT
dHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6Y3JlYXRlUHNlCiAgICAgcmV0dXJuIHN0eWxlOwogfQog
CisvLyBDcmVhdGVzIHN0eWxlIGJhc2VkIG9uIHVzZXIgYWdlbnQgc3R5bGUgc2hlZXQgb25seS4g
VGhpcyBpcyB1c2VkIGluIG1lZGlhIHF1ZXJpZXMsIHdoZXJlIAorLy8gcmVsYXRpdmUgdW5pdHMg
YXJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBkb2N1bWVudCByb290IGVsZW1lbnQgc3R5bGUs
IHN0eWxlZCBvbmx5IHdpdGgKKy8vIFVBIHN0eWxlc2hlZXQKK1JlbmRlclN0eWxlKiBDU1NTdHls
ZVNlbGVjdG9yOjpkZWZhdWx0U3R5bGVGb3JSb290KEVsZW1lbnQqIGUpCit7CisKKyAgICBpbml0
RWxlbWVudEFuZFBzZXVkb1N0YXRlKGUpOworICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSwgMCk7
CisKKyAgICBzdHlsZSA9IDo6bmV3IFJlbmRlclN0eWxlKCk7CisgICAgLy8gZG9uJ3QgcmVmLCBi
ZWNhdXNlIHdlIHdhbnQgdG8gZGVsZXRlIHRoaXMsIGJ1dCB3ZSBjYW5ub3QgdW5yZWYgaXQKKwor
ICAgIGlmIChwYXJlbnRTdHlsZSkKKyAgICAgICAgc3R5bGUtPmluaGVyaXRGcm9tKHBhcmVudFN0
eWxlKTsKKyAgICBlbHNlCisgICAgICAgIHBhcmVudFN0eWxlID0gc3R5bGU7CisKKyAgICBpbnQg
Zmlyc3RVQVJ1bGUgPSAtMSwgbGFzdFVBUnVsZSA9IC0xOworICAgIG1hdGNoVUFBbmRQcmludFJ1
bGVzKGZpcnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKKworICAgIGFwcGx5RGVjbGFyYXRpb25zKHRy
dWUsIGZhbHNlLCAwLCBtX21hdGNoZWREZWNsQ291bnQtMSk7CisgICAgYXBwbHlEZWNsYXJhdGlv
bnModHJ1ZSwgdHJ1ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOworCisgICAgaWYgKGZvbnRE
aXJ0eSkKKyAgICAgICAgYWRqdXN0Rm9udCgpOworCisgICAgLy8gTm93IGRvIHRoZSBub3JtYWwg
cHJpb3JpdHkgVUEgcHJvcGVydGllcy4KKyAgICBhcHBseURlY2xhcmF0aW9ucyhmYWxzZSwgZmFs
c2UsIGZpcnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKKworICAgIC8vIENhY2hlIG91ciBib3JkZXIg
YW5kIGJhY2tncm91bmQgc28gdGhhdCB3ZSBjYW4gZXhhbWluZSB0aGVtIGxhdGVyLgorICAgIGNh
Y2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOworCisgICAgLy8gTm93IGRvIHRoZSBhdXRob3IgYW5k
IHVzZXIgbm9ybWFsIHByaW9yaXR5IHByb3BlcnRpZXMgYW5kIGFsbCB0aGUgIWltcG9ydGFudCBw
cm9wZXJ0aWVzLgorICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVlLCBmaXJzdFVBUnVs
ZSwgbGFzdFVBUnVsZSk7CisKKyAgICBpZiAoZm9udERpcnR5KQorICAgICAgICBhZGp1c3RGb250
KCk7CisKKyAgICAvLyBDbGVhbiB1cCBvdXIgc3R5bGUgb2JqZWN0J3MgZGlzcGxheSBhbmQgdGV4
dCBkZWNvcmF0aW9ucyAoYW1vbmcgb3RoZXIgZml4dXBzKS4KKyAgICBhZGp1c3RSZW5kZXJTdHls
ZShzdHlsZSwgZSk7CisKKyAgICByZXR1cm4gc3R5bGU7Cit9CisKIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBFbGVtZW50ICplKQog
ewogICAgIC8vIENhY2hlIG91ciBvcmlnaW5hbCBkaXNwbGF5LgpAQCAtMTAxNyw2ICsxMTA0LDI0
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0UmVuZGVyU3R5bGUKICAgICAgICAgdmll
dy0+dXNlU2xvd1JlcGFpbnRzKCk7CiB9CiAKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0
Rm9udCgpCit7CisgICAgY2hlY2tGb3JUZXh0U2l6ZUFkanVzdCgpOworICAgIGNoZWNrRm9yR2Vu
ZXJpY0ZhbWlseUNoYW5nZShzdHlsZSwgcGFyZW50U3R5bGUpOworICAgIHN0eWxlLT5mb250KCku
dXBkYXRlKCk7CisgICAgZm9udERpcnR5ID0gZmFsc2U7Cit9CisKK3ZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6Y2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCkKK3sKKyAgICBtX2hhc1VBQXBwZWFyYW5j
ZSA9IHN0eWxlLT5oYXNBcHBlYXJhbmNlKCk7CisgICAgaWYgKG1faGFzVUFBcHBlYXJhbmNlKSB7
CisgICAgICAgIG1fYm9yZGVyRGF0YSA9IHN0eWxlLT5ib3JkZXIoKTsKKyAgICAgICAgbV9iYWNr
Z3JvdW5kRGF0YSA9ICpzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAgICAgICBtX2JhY2tn
cm91bmRDb2xvciA9IHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICB9Cit9CisKIFJlZlB0
cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxl
bWVudCogZSwgYm9vbCBhdXRob3JPbmx5KQogewogICAgIGlmICghZS0+ZG9jdW1lbnQoKS0+aGF2
ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCkBAIC0xMDI4LDE3ICsxMTMzLDkgQEAgUmVmUHRyPENTU1J1
bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpzdAogICAgIGluaXRGb3JTdHlsZVJlc29sdmUoZSwg
MCk7CiAgICAgCiAgICAgaWYgKCFhdXRob3JPbmx5KSB7Ci0gICAgICAgIC8vIEZpcnN0IHdlIG1h
dGNoIHJ1bGVzIGZyb20gdGhlIHVzZXIgYWdlbnQgc2hlZXQuCiAgICAgICAgIGludCBmaXJzdFVB
UnVsZSA9IC0xLCBsYXN0VUFSdWxlID0gLTE7Ci0gICAgICAgIG1hdGNoUnVsZXMoZGVmYXVsdFN0
eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7Ci0gICAgICAgIAotICAgICAgICAvLyBJbiBx
dWlya3MgbW9kZSwgd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgcXVpcmtzIHVzZXIgYWdlbnQgc2hl
ZXQuCi0gICAgICAgIGlmICghc3RyaWN0UGFyc2luZykKLSAgICAgICAgICAgIG1hdGNoUnVsZXMo
ZGVmYXVsdFF1aXJrc1N0eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7Ci0gICAgICAgIAot
ICAgICAgICAvLyBJZiBvdXIgbWVkaXVtIGlzIHByaW50LCB0aGVuIHdlIG1hdGNoIHJ1bGVzIGZy
b20gdGhlIHByaW50IHNoZWV0LgotICAgICAgICBpZiAobV9tZWRpYVR5cGUgPT0gInByaW50IikK
LSAgICAgICAgICAgIG1hdGNoUnVsZXMoZGVmYXVsdFByaW50U3R5bGUsIGZpcnN0VUFSdWxlLCBs
YXN0VUFSdWxlKTsKKyAgICAgICAgLy8gRmlyc3Qgd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgdXNl
ciBhZ2VudCBzaGVldC4KKyAgICAgICAgbWF0Y2hVQUFuZFByaW50UnVsZXMoZmlyc3RVQVJ1bGUs
IGxhc3RVQVJ1bGUpOwogCiAgICAgICAgIC8vIE5vdyB3ZSBjaGVjayB1c2VyIHNoZWV0IHJ1bGVz
LgogICAgICAgICBpbnQgZmlyc3RVc2VyUnVsZSA9IC0xLCBsYXN0VXNlclJ1bGUgPSAtMTsKQEAg
LTE1NjUsMTQgKzE2NjIsMTQgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlKENTU1N0eWxlUnVs
ZSogcgogICAgICAgICBtX3VuaXZlcnNhbFJ1bGVzLT5hcHBlbmQobV9ydWxlQ291bnQrKywgcnVs
ZSwgc2VsKTsKIH0KIAotdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21TaGVldChDU1NTdHls
ZVNoZWV0ICpzaGVldCwgY29uc3QgU3RyaW5nICZtZWRpdW0pCit2b2lkIENTU1J1bGVTZXQ6OmFk
ZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hlZXQgKnNoZWV0LCAgTWVkaWFRdWVyeUV2YWx1YXRv
ciAqbWVkaXVtKQogewogICAgIGlmICghc2hlZXQgfHwgIXNoZWV0LT5pc0NTU1N0eWxlU2hlZXQo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm8gbWVkaWEgaW1wbGllcyAiYWxsIiwgYnV0
IGlmIGEgbWVkaWEgbGlzdCBleGlzdHMgaXQgbXVzdAogICAgIC8vIGNvbnRhaW4gb3VyIGN1cnJl
bnQgbWVkaXVtCi0gICAgaWYgKHNoZWV0LT5tZWRpYSgpICYmICFzaGVldC0+bWVkaWEoKS0+Y29u
dGFpbnMobWVkaXVtKSkKKyAgICBpZiAoc2hlZXQtPm1lZGlhKCkgJiYgIW1lZGl1bS0+ZXZhbChz
aGVldC0+bWVkaWEoKSkpCiAgICAgICAgIHJldHVybjsgLy8gdGhlIHN0eWxlIHNoZWV0IGRvZXNu
J3QgYXBwbHkKIAogICAgIGludCBsZW4gPSBzaGVldC0+bGVuZ3RoKCk7CkBAIC0xNTg2LDE0ICsx
NjgzLDE0IEBAIHZvaWQgQ1NTUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3QKICAgICAg
ICAgfQogICAgICAgICBlbHNlIGlmKGl0ZW0tPmlzSW1wb3J0UnVsZSgpKSB7CiAgICAgICAgICAg
ICBDU1NJbXBvcnRSdWxlICppbXBvcnQgPSBzdGF0aWNfY2FzdDxDU1NJbXBvcnRSdWxlICo+KGl0
ZW0pOwotICAgICAgICAgICAgaWYgKCFpbXBvcnQtPm1lZGlhKCkgfHwgaW1wb3J0LT5tZWRpYSgp
LT5jb250YWlucyhtZWRpdW0pKQorICAgICAgICAgICAgaWYgKCFpbXBvcnQtPm1lZGlhKCkgfHwg
IG1lZGl1bS0+ZXZhbChpbXBvcnQtPm1lZGlhKCkpKQogICAgICAgICAgICAgICAgIGFkZFJ1bGVz
RnJvbVNoZWV0KGltcG9ydC0+c3R5bGVTaGVldCgpLCBtZWRpdW0pOwogICAgICAgICB9CiAgICAg
ICAgIGVsc2UgaWYoaXRlbS0+aXNNZWRpYVJ1bGUoKSkgewogICAgICAgICAgICAgQ1NTTWVkaWFS
dWxlICpyID0gc3RhdGljX2Nhc3Q8Q1NTTWVkaWFSdWxlKj4oaXRlbSk7CiAgICAgICAgICAgICBD
U1NSdWxlTGlzdCAqcnVsZXMgPSByLT5jc3NSdWxlcygpOwogCi0gICAgICAgICAgICBpZiAoKCFy
LT5tZWRpYSgpIHx8IHItPm1lZGlhKCktPmNvbnRhaW5zKG1lZGl1bSkpICYmIHJ1bGVzKSB7Cisg
ICAgICAgICAgICBpZiAoKCFyLT5tZWRpYSgpIHx8IG1lZGl1bS0+ZXZhbChyLT5tZWRpYSgpKSkg
JiYgcnVsZXMpIHsKICAgICAgICAgICAgICAgICAvLyBUcmF2ZXJzZSBjaGlsZCBlbGVtZW50cyBv
ZiB0aGUgQG1lZGlhIHJ1bGUuCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IHJ1bGVzLT5sZW5ndGgoKTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgIENTU1J1bGUg
KmNoaWxkSXRlbSA9IHJ1bGVzLT5pdGVtKGopOwpJbmRleDogV2ViQ29yZS9jc3MvY3NzcGFyc2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgJKHJldmlzaW9uIDE0MDk2
KQorKysgV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQzLDYgKzQz
LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIE1lZGlhTGlzdDsKICAgICBjbGFz
cyBTdHlsZUJhc2U7CiAgICAgY2xhc3MgU3R5bGVMaXN0OworICAgIGNsYXNzIE1lZGlhTGlzdDsK
KyAgICBjbGFzcyBNZWRpYVF1ZXJ5OworCiAKICAgICBzdHJ1Y3QgUGFyc2VTdHJpbmcgewogICAg
ICAgICB1bnNpZ25lZCBzaG9ydCogc3RyaW5nOwpAQCAtMTExLDYgKzExNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgc3RhdGljIFJHQkEzMiBwYXJzZUNvbG9yKGNvbnN0IFN0cmlu
ZyYpOwogICAgICAgICBib29sIHBhcnNlQ29sb3IoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24q
LCBjb25zdCBTdHJpbmcmKTsKICAgICAgICAgYm9vbCBwYXJzZURlY2xhcmF0aW9uKENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5nJik7CisgICAgICAgIGJvb2wgcGFyc2VN
ZWRpYVF1ZXJ5KE1lZGlhTGlzdCosIGNvbnN0IFN0cmluZyAmKTsKIAogICAgICAgICBzdGF0aWMg
Q1NTUGFyc2VyKiBjdXJyZW50KCkgeyByZXR1cm4gY3VycmVudFBhcnNlcjsgfQogCkBAIC0xODQs
NiArMTg4LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBpbnQgaWQ7CiAgICAgICAg
IFN0eWxlTGlzdCogc3R5bGVFbGVtZW50OwogICAgICAgICBSZWZQdHI8Q1NTUnVsZT4gcnVsZTsK
KyAgICAgICAgTWVkaWFRdWVyeSogbWVkaWFRdWVyeTsKICAgICAgICAgVmFsdWVMaXN0KiB2YWx1
ZUxpc3Q7CiAgICAgICAgIENTU1Byb3BlcnR5KiogcGFyc2VkUHJvcGVydGllczsKICAgICAgICAg
aW50IG51bVBhcnNlZFByb3BlcnRpZXM7CkluZGV4OiBXZWJDb3JlL2Nzcy9jc3Nfc3R5bGVzaGVl
dGltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc19zdHlsZXNoZWV0aW1wbC5j
cHAJKHJldmlzaW9uIDE0MDk2KQorKysgV2ViQ29yZS9jc3MvY3NzX3N0eWxlc2hlZXRpbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOCBAQAogI2luY2x1ZGUgImNzc19ydWxlaW1w
bC5oIgogI2luY2x1ZGUgImNzc192YWx1ZWltcGwuaCIKICNpbmNsdWRlICJjc3NwYXJzZXIuaCIK
KyNpbmNsdWRlICJDU1NNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiQ1NTTWVkaWFG
ZWF0dXJlcy5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgImxvYWRlci5o
IgogCkBAIC03Myw2ICs3NSw5IEBAIFN0eWxlU2hlZXQgKlN0eWxlU2hlZXQ6OnBhcmVudFN0eWxl
U2hlZXQKIAogdm9pZCBTdHlsZVNoZWV0OjpzZXRNZWRpYShNZWRpYUxpc3QgKm1lZGlhKQogewor
ICAgIGlmIChtX21lZGlhKSB7CisgICAgICAgIG1fbWVkaWEtPnNldFBhcmVudCgwKTsKKyAgICB9
CiAgICAgbV9tZWRpYSA9IG1lZGlhOwogfQogCkBAIC0yODcsMjEgKzI5MiwxNyBAQCBNZWRpYUxp
c3Q6Ok1lZGlhTGlzdCggQ1NTU3R5bGVTaGVldCAqcGFyCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcgJm1lZGlhICkKICAgICA6IFN0eWxlQmFzZSggcGFyZW50U2hl
ZXQgKQogeworICAgIG1fbHN0UXVlcmllcy5zZXRBdXRvRGVsZXRlKHRydWUpOwogICAgIHNldE1l
ZGlhVGV4dCggbWVkaWEgKTsKIH0KIAogTWVkaWFMaXN0OjpNZWRpYUxpc3QoIENTU1J1bGUgKnBh
cmVudFJ1bGUsIGNvbnN0IFN0cmluZyAmbWVkaWEgKQogICAgIDogU3R5bGVCYXNlKHBhcmVudFJ1
bGUpCiB7CisgICAgbV9sc3RRdWVyaWVzLnNldEF1dG9EZWxldGUodHJ1ZSk7CiAgICAgc2V0TWVk
aWFUZXh0KCBtZWRpYSApOwogfQogCi1ib29sIE1lZGlhTGlzdDo6Y29udGFpbnMoIGNvbnN0IFN0
cmluZyAmbWVkaXVtICkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9sc3RNZWRpYS5jb3VudCgpID09
IDAgfHwgbV9sc3RNZWRpYS5jb250YWlucyggbWVkaXVtICkgfHwKLSAgICAgICAgICAgIG1fbHN0
TWVkaWEuY29udGFpbnMoICJhbGwiICk7Ci19Ci0KIENTU1N0eWxlU2hlZXQgKk1lZGlhTGlzdDo6
cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHBhcmVudCgpLT5pc0NTU1N0
eWxlU2hlZXQoKSA/IHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQgKj4ocGFyZW50KCkpIDogMDsK
QEAgLTMxNCwzNCArMzE1LDEwNSBAQCBDU1NSdWxlICpNZWRpYUxpc3Q6OnBhcmVudFJ1bGUoKSBj
b25zdAogCiB2b2lkIE1lZGlhTGlzdDo6ZGVsZXRlTWVkaXVtKCBjb25zdCBTdHJpbmcgJm9sZE1l
ZGl1bSApCiB7Ci0gICAgZm9yICggRGVwcmVjYXRlZFZhbHVlTGlzdDxTdHJpbmc+OjpJdGVyYXRv
ciBpdCA9IG1fbHN0TWVkaWEuYmVnaW4oKTsgaXQgIT0gbV9sc3RNZWRpYS5lbmQoKTsgKytpdCAp
IHsKLSAgICAgICAgaWYgKCgqaXQpID09IG9sZE1lZGl1bSkgewotICAgICAgICAgICAgbV9sc3RN
ZWRpYS5yZW1vdmUoIGl0ICk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgTWVkaWFMaXN0IHRl
bXBNZWRpYUxpc3Q7CisgICAgQ1NTUGFyc2VyIHAodHJ1ZSk7CisKKyAgICBpZiAocC5wYXJzZU1l
ZGlhUXVlcnkoJnRlbXBNZWRpYUxpc3QsIG9sZE1lZGl1bSkpIHsKKyAgICAgICAgY29uc3QgTWVk
aWFRdWVyeSogb2xkUXVlcnkgPSBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPE1lZGlhUXVlcnk+
KCp0ZW1wTWVkaWFMaXN0Lm1lZGlhUXVlcmllcygpKS5jdXJyZW50KCk7CisKKyAgICAgICAgRGVw
cmVjYXRlZFB0ckxpc3RJdGVyYXRvcjxNZWRpYVF1ZXJ5PiBxX2l0KG1fbHN0UXVlcmllcyk7Cisg
ICAgICAgIGZvcihNZWRpYVF1ZXJ5KiBxdWVyeSA9IHFfaXQuY3VycmVudCgpOyBxdWVyeTsgcXVl
cnkgPSArK3FfaXQpIHsKKyAgICAgICAgICAgIGlmICgqcXVlcnkgPT0gKm9sZFF1ZXJ5KSB7Cisg
ICAgICAgICAgICAgICAgbV9sc3RRdWVyaWVzLnJlbW92ZShxdWVyeSk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAg
ICAvLyBYWFg6IHRocm93IERPTSBleGNlcHRpb24KICAgICB9CiB9CiAKK3N0YXRpYyBTdHJpbmcg
bWVkaWFRdWVyeUFzU3RyaW5nKGNvbnN0IE1lZGlhUXVlcnkqIHF1ZXJ5KQoreworICAgIFN0cmlu
ZyB0ZXh0OworICAgIHN3aXRjaCAocXVlcnktPnJlc3RyaWN0b3IoKSkgeworICAgICAgICBjYXNl
IE1lZGlhUXVlcnk6Ok9ubHk6CisgICAgICAgICAgICB0ZXh0ICs9ICJvbmx5ICI7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYVF1ZXJ5OjpOb3Q6CisgICAgICAgICAgICB0
ZXh0ICs9ICJub3QgIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHRleHQgKz0gcXVlcnktPm1lZGlhVHlwZSgpOwor
ICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8TWVkaWFRdWVyeUV4cD4gZXhwX2l0KCpxdWVy
eS0+ZXhwcmVzc2lvbnMoKS0+bGlzdCgpKTsKKyAgICBmb3IgKE1lZGlhUXVlcnlFeHAqIGV4cCA9
IGV4cF9pdC5jdXJyZW50KCk7IGV4cDsgZXhwID0gKytleHBfaXQpIHsKKyAgICAgICAgdGV4dCAr
PSAiIGFuZCAoIjsKKyAgICAgICAgdGV4dCArPSBnZXRNZWRpYUZlYXR1cmVOYW1lKGV4cC0+bWVk
aWFGZWF0dXJlKCkpOworICAgICAgICBpZiAoZXhwLT52YWx1ZSgpKSB7CisgICAgICAgICAgICB0
ZXh0ICs9ICI6ICI7CisgICAgICAgICAgICB0ZXh0ICs9IGV4cC0+dmFsdWUoKS0+Y3NzVGV4dCgp
OworICAgICAgICB9CisgICAgICAgIHRleHQgKz0gIikiOworICAgIH0KKyAgICByZXR1cm4gdGV4
dDsKK30KKwogV2ViQ29yZTo6U3RyaW5nIE1lZGlhTGlzdDo6bWVkaWFUZXh0KCkgY29uc3QKIHsK
LSAgICBTdHJpbmcgdGV4dCA9ICIiOwotICAgIGZvciAoRGVwcmVjYXRlZFZhbHVlTGlzdDxTdHJp
bmc+OjpDb25zdEl0ZXJhdG9yIGl0ID0gbV9sc3RNZWRpYS5iZWdpbigpOyBpdCAhPSBtX2xzdE1l
ZGlhLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICh0ZXh0Lmxlbmd0aCgpID4gMCkKKyAgICBT
dHJpbmcgdGV4dDsKKyAgICBEZXByZWNhdGVkUHRyTGlzdEl0ZXJhdG9yPE1lZGlhUXVlcnk+IHFf
aXQobV9sc3RRdWVyaWVzKTsKKyAgICBib29sIGZpcnN0ID0gdHJ1ZTsKKyAgICBmb3IgKE1lZGlh
UXVlcnkqIHF1ZXJ5ID0gcV9pdC5jdXJyZW50KCk7IHF1ZXJ5OyBxdWVyeSA9ICsrcV9pdCkgewor
ICAgICAgICBpZiAoIWZpcnN0KQogICAgICAgICAgICAgdGV4dCArPSAiLCAiOwotICAgICAgICB0
ZXh0ICs9ICppdDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAg
ICAgICAgdGV4dCArPSBtZWRpYVF1ZXJ5QXNTdHJpbmcocXVlcnkpOwogICAgIH0KICAgICByZXR1
cm4gdGV4dDsKIH0KIAogdm9pZCBNZWRpYUxpc3Q6OnNldE1lZGlhVGV4dChjb25zdCBXZWJDb3Jl
OjpTdHJpbmcgJnZhbHVlKQogewotICAgIG1fbHN0TWVkaWEuY2xlYXIoKTsKKyAgICBDU1NQYXJz
ZXIgcCh0cnVlKTsKKyAgICBtX2xzdFF1ZXJpZXMuY2xlYXIoKTsKKwogICAgIERlcHJlY2F0ZWRT
dHJpbmdMaXN0IGxpc3QgPSBEZXByZWNhdGVkU3RyaW5nTGlzdDo6c3BsaXQoJywnLCB2YWx1ZS5k
ZXByZWNhdGVkU3RyaW5nKCkpOwogICAgIGZvciAoRGVwcmVjYXRlZFN0cmluZ0xpc3Q6Okl0ZXJh
dG9yIGl0ID0gbGlzdC5iZWdpbigpOyBpdCAhPSBsaXN0LmVuZCgpOyArK2l0KSB7Ci0gICAgICAg
IFN0cmluZyBtZWRpdW0gPSAoKml0KS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgaWYgKCFt
ZWRpdW0uaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9sc3RNZWRpYS5hcHBlbmQobWVkaXVtKTsK
KyAgICAgICAgIFN0cmluZyBtZWRpdW0gPSAoKml0KS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAg
ICAgIGlmIChtZWRpdW0gIT0gIiIpIHsKKyAgICAgICAgICAgIGlmICghcC5wYXJzZU1lZGlhUXVl
cnkoIHRoaXMsIG1lZGl1bSApKSB7CisgICAgICAgICAgICAgICAgLy8gRkFJTAorICAgICAgICAg
ICAgICAgIC8vIFhYWDogdGhyb3cgRE9NIGV4Y2VwdGlvbgorICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorfQorCitTdHJpbmcgTWVkaWFMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBj
b25zdAoreworICAgIC8vIFhYWDogaW5lZmZpY2llbnQgYW5kIHVnbHkhIERlcHJlY2F0ZWRQdHJM
aXN0IGRvZXNuJ3QgaGF2ZSBhdCgpIGNvbnN0CisgICAgRGVwcmVjYXRlZFB0ckxpc3RJdGVyYXRv
cjxNZWRpYVF1ZXJ5PiBxX2l0KG1fbHN0UXVlcmllcyk7CisgICAgTWVkaWFRdWVyeSogcXVlcnkg
PSBxX2l0LmN1cnJlbnQoKTsKKyAgICBmb3IgKDsgcXVlcnkgJiYgaW5kZXg7IHF1ZXJ5ID0gKytx
X2l0KSAtLWluZGV4OworICAgIGlmIChxdWVyeSkKKyAgICAgICAgcmV0dXJuIG1lZGlhUXVlcnlB
c1N0cmluZyhxdWVyeSk7CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCit2b2lkIE1lZGlhTGlz
dDo6YXBwZW5kTWVkaXVtKGNvbnN0IFN0cmluZyAmbmV3TWVkaXVtKQoreworICAgIENTU1BhcnNl
ciBwKHRydWUpOworICAgIGlmICghcC5wYXJzZU1lZGlhUXVlcnkodGhpcywgbmV3TWVkaXVtKSkg
eworICAgICAgICAvLyBYWFg6IHRocm93IGRvbSBleGNlcHRpb24KICAgICB9CiB9CiAKK3ZvaWQg
TWVkaWFMaXN0OjphcHBlbmRNZWRpYVF1ZXJ5KE1lZGlhUXVlcnkqIG1lZGlhUXVlcnkpCit7Cisg
ICAgbV9sc3RRdWVyaWVzLmFwcGVuZChtZWRpYVF1ZXJ5KTsKK30KKwogfQpJbmRleDogV2ViQ29y
ZS9jc3MvQ1NTTWVkaWFRdWVyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU01lZGlh
UXVlcnkuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL0NTU01lZGlhUXVlcnkuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENTUyBNZWRpYSBRdWVyeQorICoKKyAq
IENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiBLaW1tbyBLaW5udW5lbiA8a2ltbW8udC5raW5udW5l
bkBub2tpYS5jb20+LiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBDU1Nf
Q1NTTWVkaWFRdWVyeV9oCisjZGVmaW5lIENTU19DU1NNZWRpYVF1ZXJ5X2gKKworI2luY2x1ZGUg
IkRlcHJlY2F0ZWRWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJEZXByZWNhdGVkUHRybGlzdC5oIgor
CisjaW5jbHVkZSAiU3RyaW5nLmgiCisjaW5jbHVkZSAiY3NzX2Jhc2UuaCIKKyNpbmNsdWRlICJj
c3NfdmFsdWVpbXBsLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVmFsdWVMaXN0
OworY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CisKK2NsYXNzIE1lZGlhUXVlcnlFeHAgeworcHVi
bGljOgorICAgIE1lZGlhUXVlcnlFeHAoaW50IG1lZGlhRmVhdHVyZUlkLCBWYWx1ZUxpc3QqIHZh
bHVlcyk7CisgICAgfk1lZGlhUXVlcnlFeHAoKTsKKworICAgIGludCBtZWRpYUZlYXR1cmUoKSBj
b25zdDsKKyAgICBDU1NWYWx1ZSogdmFsdWUoKSBjb25zdDsKKworICAgIGJvb2wgb3BlcmF0b3I9
PShjb25zdCBNZWRpYVF1ZXJ5RXhwJiBvdGhlcikgY29uc3QgIHsKKyAgICAgICAgcmV0dXJuIChv
dGhlci5tX21lZGlhRmVhdHVyZUlkID09IG1fbWVkaWFGZWF0dXJlSWQpCisgICAgICAgICAgICAm
JiAoKCFvdGhlci5tX3ZhbHVlICYmICFtX3ZhbHVlKQorICAgICAgICAgICAgICAgIHx8IChvdGhl
ci5tX3ZhbHVlICYmIG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+Y3NzVGV4dCgpID09IG1fdmFs
dWUtPmNzc1RleHQoKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9tZWRpYUZlYXR1
cmVJZDsKKyAgICBDU1NWYWx1ZSogbV92YWx1ZTsKK307CisKK2NsYXNzIE1lZGlhUXVlcnlFeHBM
aXN0Cit7CitwdWJsaWM6CisgICAgTWVkaWFRdWVyeUV4cExpc3QoKSB7IGV4cHMuc2V0QXV0b0Rl
bGV0ZSh0cnVlKTsgfQorCisgICAgdm9pZCBhcHBlbmQoTWVkaWFRdWVyeUV4cCogbmV3RXhwKSB7
IGV4cHMuYXBwZW5kKG5ld0V4cCk7IH0KKyAgICBjb25zdCBEZXByZWNhdGVkUHRyTGlzdDxNZWRp
YVF1ZXJ5RXhwPiogbGlzdCgpIGNvbnN0IHsgcmV0dXJuICZleHBzOyB9CisKK3ByaXZhdGU6Cisg
ICAgRGVwcmVjYXRlZFB0ckxpc3Q8TWVkaWFRdWVyeUV4cD4gZXhwczsKK307CisKKworY2xhc3Mg
TWVkaWFRdWVyeSB7CitwdWJsaWM6CisgICAgZW51bSBSZXN0cmljdG9yIHsKKyAgICAgICAgT25s
eSwgTm90LCBOb25lCisgICAgfTsKKworICAgIE1lZGlhUXVlcnkoUmVzdHJpY3RvciByLCBjb25z
dCBTdHJpbmcgJm1lZGlhVHlwZSwgTWVkaWFRdWVyeUV4cExpc3QqIGV4cHJzKTsKKyAgICB+TWVk
aWFRdWVyeSgpOworCisgICAgUmVzdHJpY3RvciByZXN0cmljdG9yKCkgY29uc3Q7CisgICAgTWVk
aWFRdWVyeUV4cExpc3QqIGV4cHJlc3Npb25zKCkgY29uc3Q7CisgICAgU3RyaW5nIG1lZGlhVHlw
ZSgpIGNvbnN0OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnkmIG90aGVy
KSBjb25zdDsKKworIHByaXZhdGU6CisgICAgUmVzdHJpY3RvciBtX3Jlc3RyaWN0b3I7CisgICAg
U3RyaW5nIG1fbWVkaWFUeXBlOworICAgIE1lZGlhUXVlcnlFeHBMaXN0KiBtX2V4cHJlc3Npb25z
OworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL2Nzcy90b2tl
bml6ZXIuZmxleAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy90b2tlbml6ZXIuZmxleAkocmV2
aXNpb24gMTQwOTYpCisrKyBXZWJDb3JlL2Nzcy90b2tlbml6ZXIuZmxleAkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDggQEAKICVvcHRpb24gY2FzZS1pbnNlbnNpdGl2ZQogJW9wdGlvbiBub3l5
d3JhcAogJW9wdGlvbiA4Yml0Cislb3B0aW9uIHN0YWNrCislcyBtZWRpYXF1ZXJ5CiAKIGggICAg
ICAgICAgICAgICBbMC05YS1mQS1GXQogbm9uYXNjaWkgICAgICAgIFtcMjAwLVwzNzddCkBAIC0z
Myw2ICszNSw5IEBAIHJhbmdlICAgICAgICAgICBcP3sxLDZ9fHtofShcP3swLDV9fHtofSgKICJe
PSIgICAgICAgICAgICAgICAgICAgIHt5eVRvayA9IEJFR0lOU1dJVEg7IHJldHVybiB5eVRvazt9
CiAiJD0iICAgICAgICAgICAgICAgICAgICB7eXlUb2sgPSBFTkRTV0lUSDsgcmV0dXJuIHl5VG9r
O30KICIqPSIgICAgICAgICAgICAgICAgICAgIHt5eVRvayA9IENPTlRBSU5TOyByZXR1cm4geXlU
b2s7fQorPG1lZGlhcXVlcnk+Im5vdCIgICAgICAge3l5VG9rID0gTUVESUFfTk9UOyByZXR1cm4g
eXlUb2s7fQorPG1lZGlhcXVlcnk+Im9ubHkiICAgICAge3l5VG9rID0gTUVESUFfT05MWTsgcmV0
dXJuIHl5VG9rO30KKzxtZWRpYXF1ZXJ5PiJhbmQiICAgICAgIHt5eVRvayA9IE1FRElBX0FORDsg
cmV0dXJuIHl5VG9rO30KIAoge3N0cmluZ30gICAgICAgICAgICAgICAge3l5VG9rID0gU1RSSU5H
OyByZXR1cm4geXlUb2s7fQogCkBAIC00MCwxNSArNDUsMTYgQEAgcmFuZ2UgICAgICAgICAgIFw/
ezEsNn18e2h9KFw/ezAsNX18e2h9KAogCiAiIyJ7bmFtZX0gICAgICAgICAgICAgICB7eXlUb2sg
PSBIQVNIOyByZXR1cm4geXlUb2s7fQogCi0iQGltcG9ydCIgICAgICAgICAgICAgICB7eXlUb2sg
PSBJTVBPUlRfU1lNOyByZXR1cm4geXlUb2s7fQorIkBpbXBvcnQiICAgICAgICAgICAgICAge0JF
R0lOKG1lZGlhcXVlcnkpOyB5eVRvayA9IElNUE9SVF9TWU07IHJldHVybiB5eVRvazt9CiAiQHBh
Z2UiICAgICAgICAgICAgICAgICB7eXlUb2sgPSBQQUdFX1NZTTsgcmV0dXJuIHl5VG9rO30KLSJA
bWVkaWEiICAgICAgICAgICAgICAgIHt5eVRvayA9IE1FRElBX1NZTTsgcmV0dXJuIHl5VG9rO30K
KyJAbWVkaWEiICAgICAgICAgICAgICAgIHtCRUdJTihtZWRpYXF1ZXJ5KTsgeXlUb2sgPSBNRURJ
QV9TWU07IHJldHVybiB5eVRvazt9CiAiQGZvbnQtZmFjZSIgICAgICAgICAgICB7eXlUb2sgPSBG
T05UX0ZBQ0VfU1lNOyByZXR1cm4geXlUb2s7fQogIkBjaGFyc2V0IiAgICAgICAgICAgICAge3l5
VG9rID0gQ0hBUlNFVF9TWU07IHJldHVybiB5eVRvazt9CiAiQG5hbWVzcGFjZSIgICAgICAgICAg
ICB7eXlUb2sgPSBOQU1FU1BBQ0VfU1lNOyByZXR1cm4geXlUb2s7IH0KICJALXdlYmtpdC1ydWxl
IiAgICB7eXlUb2sgPSBXRUJLSVRfUlVMRV9TWU07IHJldHVybiB5eVRvazsgfQogIkAtd2Via2l0
LWRlY2xzIiAgIHt5eVRvayA9IFdFQktJVF9ERUNMU19TWU07IHJldHVybiB5eVRvazsgfQogIkAt
d2Via2l0LXZhbHVlIiAgIHt5eVRvayA9IFdFQktJVF9WQUxVRV9TWU07IHJldHVybiB5eVRvazsg
fQorIkAtd2Via2l0LW1lZGlhcXVlcnkiICAge0JFR0lOKG1lZGlhcXVlcnkpOyB5eVRvayA9IFdF
QktJVF9NRURJQVFVRVJZX1NZTTsgcmV0dXJuIHl5VG9rOyB9CiAKICIhInt3fSJpbXBvcnRhbnQi
ICAgICAgICAge3l5VG9rID0gSU1QT1JUQU5UX1NZTTsgcmV0dXJuIHl5VG9rO30KIApAQCAtNzks
NiArODUsOCBAQCByYW5nZSAgICAgICAgICAgXD97MSw2fXx7aH0oXD97MCw1fXx7aH0oCiBVXCt7
cmFuZ2V9ICAgICAgICAgICAgICB7eXlUb2sgPSBVTklDT0RFUkFOR0U7IHJldHVybiB5eVRvazt9
CiBVXCt7aH17MSw2fS17aH17MSw2fSAgICB7eXlUb2sgPSBVTklDT0RFUkFOR0U7IHJldHVybiB5
eVRvazt9CiAKKzxtZWRpYXF1ZXJ5PiJ7IiAgICAgICAgIHwKKzxtZWRpYXF1ZXJ5PiI7IiAgICAg
ICAgIHtCRUdJTihJTklUSUFMKTsgeXlUb2sgPSAqeXl0ZXh0OyByZXR1cm4geXlUb2s7IH0KIC4g
ICAgICAgICAgICAgICAgICAgICAgIHt5eVRvayA9ICp5eXRleHQ7IHJldHVybiB5eVRvazt9CiAK
ICUlCkluZGV4OiBXZWJDb3JlL2Nzcy9tYWtldG9rZW5pemVyCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvY3NzL21ha2V0b2tlbml6ZXIJKHJldmlzaW9uIDE0MDk2KQorKysgV2ViQ29yZS9jc3MvbWFr
ZXRva2VuaXplcgkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsMTUgQEAgd2hpbGUgKDw+KSB7
CiAgICAgcHJpbnQ7CiB9CiAKKyMgbWVkaWEgcXVlcnksIHRva2VuaXplciBzdGF0ZSBzdXBwb3J0
Cit3aGlsZSAoPD4pIHsKKyAgbGFzdCBpZiAveXl0ZXh0LzsKK30KK3doaWxlICg8PikgeworICBs
YXN0IGlmIG5vdCAoL2RlZmluZS8gfHwgL2xpbmUvKSA7CisgIHByaW50OworfQorCiB3aGlsZSAo
PD4pIHsKICAgICBsYXN0IGlmIC9eWVlfREVDTC87CiB9Cg==
</data>
<flag name="review"
          id="2220"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8508</attachid>
            <date>2006-05-24 00:42:40 -0700</date>
            <delta_ts>2006-05-26 00:42:28 -0700</delta_ts>
            <desc>Revised CSS Media Queries patch including testcases</desc>
            <filename>mediaqueries-2006-05-24-WebKit.patch</filename>
            <type>text/plain</type>
            <size>196854</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0NTU1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTE2IEBACisyMDA2LTA1LTI0ICBLaW1tbyBLaW5udW5lbiAg
PGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFRlc3RzIGZvciBDU1MzIE1lZGlhIFF1ZXJpZXMgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgIDxodHRwOi8vYnVnemlsbGEub3BlbmRhcndpbi5vcmcvc2hvd19i
dWcuY2dpP2lkPTQxMjc+CisKKyAgICAgICAgKiBmYXN0L21lZGlhL2ltcG9ydC1wLWdyZWVuLmNz
czogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9pbXBvcnQtcC1yZWQuY3NzOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTAxLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRh
eC0wMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3It
c3ludGF4LTAyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tZWRp
YS1kZXNjcmlwdG9yLXN5bnRheC0wMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlh
L21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTAzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wMy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L21lZGlhL21lZGlhLXR5cGUtc3ludGF4LTAxLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbWVkaWEvbWVkaWEtdHlwZS1zeW50YXgtMDEtZXhwZWN0ZWQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvbWVkaWEvbWVkaWEtdHlwZS1zeW50YXgtMDEuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9tZWRpYS9tZWRpYS10eXBlLXN5bnRheC0wMi1leHBlY3RlZDogQWRkZWQu
CisgICAgICAgICogZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wMi1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDEuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wMi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDIu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wMy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVl
cnktMDMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVy
eS0wNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtY29tcG91
bmQtcXVlcnktMDQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1jb21wb3Vu
ZC1xdWVyeS0wNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEt
Y29tcG91bmQtcXVlcnktMDUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1n
cmlkLTAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1ncmlk
LTAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtZ3JpZC0wMi1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtZ3JpZC0wMi5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMS1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRpYS1m
ZWF0dXJlLTAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxpZC1t
ZWRpYS1mZWF0dXJlLTAyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRp
YS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wNC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRp
YS1mZWF0dXJlLTA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxp
ZC1zeW50YXgtMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21x
LWludmFsaWQtc3ludGF4LTAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEt
aW52YWxpZC1zeW50YXgtMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhL21xLWludmFsaWQtc3ludGF4LTAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVk
aWEvbXEtaW52YWxpZC1zeW50YXgtMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L21lZGlhL21xLWludmFsaWQtc3ludGF4LTAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L21lZGlhL21xLWludmFsaWQtc3ludGF4LTA0Lmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvbWVkaWEvbXEtanMtbWVkaWEtZXhjZXB0LTAxLWV4cGVjdGVkLnR4dDogQWRkZWQu
CisgICAgICAgICogZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1leGNlcHQtMDEuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1leGNlcHQtMDItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLWpzLW1lZGlhLWV4Y2VwdC0wMi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLWpzLW1lZGlhLWZvcndhcmQtc3ludGF4
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1m
b3J3YXJkLXN5bnRheC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLWpzLW1l
ZGlhLWZvcndhcmQtc3ludGF4Lmh0bWx+OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21x
LWpzLXN0eWxlc2hlZXQtbWVkaWEtMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L21lZGlhL21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTAyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTAyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0wMy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVl
dC1tZWRpYS0wMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLWpzLXN0eWxl
c2hlZXQtbWVkaWEtMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlh
L21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9t
ZWRpYS9tcS1taW4tY29uc3RyYWludC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvbWVkaWEvbXEtbWluLWNvbnN0cmFpbnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9t
ZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDIuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wMy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWlu
dHMtMDMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25z
dHJhaW50cy0wNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEt
cmVsYXRpdmUtY29uc3RyYWludHMtMDQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRp
YS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDUuaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNi1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMt
MDYuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJh
aW50cy0wNy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcmVs
YXRpdmUtY29uc3RyYWludHMtMDcuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9t
cS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wOC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDguaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wOS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDku
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTAx
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVn
LXF1ZXJ5LTAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtc2ltcGxlLW5l
Zy1xdWVyeS0wMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEt
c2ltcGxlLW5lZy1xdWVyeS0wMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21x
LXNpbXBsZS1uZWctcXVlcnktMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTA0Lmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wNS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wNS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wMS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAxLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAyLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDIuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDMtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wMy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wNC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTA0
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTA1LWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnkt
MDUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS12YWx1ZWxlc3MtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXZhbHVlbGVzcy5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTAxLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wMS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTAyLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0
ZS0wMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRl
LTAzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS13aWR0aC1h
YnNvbHV0ZS0wMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXdpZHRoLWFi
c29sdXRlLTA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS13
aWR0aC1hYnNvbHV0ZS0wNC5odG1sOiBBZGRlZC4KKwogMjAwNi0wNS0yMyAgQW5kZXJzIENhcmxz
c29uICA8YWNhcmxzc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWou
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA1
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1j
b25zdHJhaW50cy0wNS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDI0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogcmVs
YXRpdmUgY29uc3RyYWludHMgdGVzdCB1c2luZyBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMwZW0p
LiBVc2luZyBzdHlsZSBlbGVtZW50LCBjc3MgQG1lZGlhIHJ1bGUgPC90aXRsZT4gIAorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8j
d2lkdGgiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsKKyAgY29sb3I6IHJlZDsK
K30KK0BtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMwZW0pIHsKKyAgIHAgeworICAgICBj
b2xvcjogZ3JlZW47CisgIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+IFRo
aXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgd2lkZXIgdGhhbiAzMGVtLiAg
PC9wPgorCis8ZGl2IHN0eWxlPSJ3aWR0aDogMzBlbTsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRi
bHVlOyI+IGRpdiBvZiBsZW5ndGggMzAgZW0gPC9kaXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogODAw
cHg7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBkaXYgb2YgbGVuZ3RoIDgwMHB4IDwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1p
bnZhbGlkLXN5bnRheC0wMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtc3ludGF4LTAxLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWdyaWQtMDIuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWdyaWQtMDIuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtZ3JpZC0wMi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE0IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVz
dDogbWVkaWEgcXVlcnkgdGVzdGluZyBub3QgYW5kIHBhcmFtZXRlcmxlc3MgZmVhdHVyZSAobm90
IHNjcmVlbiBhbmQgKGdyaWQpKS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgQG1lZGlhIGNzcyBydWxl
LjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2Nz
czMtbWVkaWFxdWVyaWVzLyNncmlkIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRp
YSBub3Qgc2NyZWVuIGFuZCAoZ3JpZCkgeworcCB7IGNvbG9yOiBncmVlbiB9Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3
aW5nIGRldmljZSBpcyBub3QgYSBncmlkIGRldmljZS48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtc3ludGF4LTA1LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtc3lu
dGF4LTA1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvbXEtaW52YWxpZC1zeW50YXgtMDUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVy
QmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9
IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNp
emUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6
ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvbXEtY29tcG91bmQtcXVlcnktMDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTAyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTAyLmh0bWwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVy
eSB0ZXN0OiBtZWRpYSBxdWVyeSB0ZXN0aW5nIGNvbXBvdW5kIHF1ZXJpZXMgKHNjcmVlbiBhbmQg
KGNvbG9yKSBhbmQgKGdyaWQ6MCkpLiBVc2luZyBsaW5rIGVsZW1lbnQsIG1lZGlhIGF0dHJpYnV0
ZTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2Nz
czMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9
InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIGFuZCAoY29sb3IpICBhbmQgKGdyaWQ6MCkiIGhyZWY9
ImltcG9ydC1wLWdyZWVuLmNzcyIgLz4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBz
aG91bGQgYmUgZ3JlZW4gb24gYml0bWFwIGNvbG9yIGRldmljZXMuPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50
cy0wOS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRp
dmUtY29uc3RyYWludHMtMDkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSwxNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6
IG1lZGlhIHF1ZXJ5IHRlc3RpbmcgY29uc3RyYWludHMgd2l0aCByZWxhdGl2ZSB2YWx1ZXMgKHNj
cmVlbiBhbmQgKG1heC13aWR0aDogNjBlbSkpLiBVc2luZyBzdHlsZSBlbGVtZW50LCBAbWVkaWEg
Y3NzIHJ1bGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KK3AgeyBjb2xvcjogcmVkIH0KK0BtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDYwZW0p
IHsKK3AgeyBjb2xvcjogZ3JlZW4gfQorfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+
IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgbmFycm93ZXIgdGhhbiA2
MGVtLiAgPC9wPgorPGRpdiBzdHlsZT0id2lkdGg6IDYwZW07IGJhY2tncm91bmQtY29sb3I6IGxp
Z2h0Ymx1ZTsiPiBkaXYgb2YgbGVuZ3RoIDYwIGVtIDwvZGl2PgorPGRpdiBzdHlsZT0id2lkdGg6
IDgwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCA4MDBw
eCA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtanMtbWVkaWEtZXhjZXB0LTAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhL21xLWpzLW1lZGlhLWV4Y2VwdC0wMi1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLW1lZGlhLWV4Y2VwdC0wMi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3Ngor
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAw
XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdy
ZWVuLiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA3ODR4MTgKKyAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDAxeDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggNDAxOiAiQ2F1Z2h0IGV4Y2VwdGlvbjogRXJyb3I6IFNZTlRB
WF9FUlI6IERPTSBFeGNlcHRpb24gMTIiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LXJlbGF0aXZlLWNvbnN0cmFpbnRzLTAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTAyLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29u
c3RyYWludHMtMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACits
YXllciBhdCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUg
Nzg1eDU4NQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDc4NXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc2OXg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgxOCBb
Y29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MzYweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzYwOiAiVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyB3aWRlciB0aGFuIDMwZW0uIgorICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzQpIHNpemUgNDgweDE4IFtiZ2NvbG9yPSNBREQ4RTZd
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyM3gxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyMzogImRpdiBvZiBsZW5ndGggMzAgZW0iCisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA4MDB4MTggW2JnY29sb3I9I0FE
RDhFNl0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTI0eDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI0OiAiZGl2IG9mIGxlbmd0aCA4MDBw
eCIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0w
My1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1q
cy1zdHlsZXNoZWV0LW1lZGlhLTAzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0wMy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAor
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDU2MHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDU2MDogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gYW5kIGJlbG93IHNob3VsZCByZWFkIFwi
YnJhaWxsZSwgbm90IHNjcmVlbiwgc2NyZWVuIGFuZCAoY29sb3IpXCIuIgorICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAzMDR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAzMDQ6ICJicmFpbGxlLCBub3Qgc2NyZWVuLCBzY3JlZW4gYW5kIChjb2xvciksIG5vdCBzY3Jl
ZW4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgpIHNpemUgNzg0eDE4CisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE4MngxOAorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDE4MjogImV4cGVjdGVkIHRvIGZhaWwgKDI0LjA3LjIwMDUpIgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtbWVk
aWEtZmVhdHVyZS0wMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHN5
bnRhY3RpY2FsbHkgY29ycmVjdCBxdWVyeSB3aXRoIGludmFsaWQgbWVkaWEgZmVhdHVyZSBzaG91
bGQgZXZhbCBmYWxzZSAgKGFsbCBhbmQgKGludmFsaWQpKS4gVXNpbmcgbGluayBlbGVtZW50LCBt
ZWRpYSBhdHRyaWJ1dGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3
dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KK3AgeyBjb2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIg
dHlwZT0idGV4dC9jc3MiIG1lZGlhPSJhbGwgYW5kIChpbnZhbGlkKSIgaHJlZj0iaW1wb3J0LXAt
cmVkLmNzcyIgLz4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3Jl
ZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
cS13aWR0aC1hYnNvbHV0ZS0wMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDMuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRl
c3Q6IEFic29sdXRlIHdpZHRoIHF1ZXJ5IChzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDgwMHB4KSku
IFVzaW5nIHN0eWxlIGVsZW1lbnQsIEBpbXBvcnQgY3NzIHJ1bGUuPC90aXRsZT4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dp
ZHRoIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BpbXBvcnQgdXJsKGltcG9ydC1wLWdy
ZWVuLmNzcykgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCk7Cis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyBh
dCBtb3N0IDgwMHB4IHdpZGUuPC9wPgorPGRpdiBzdHlsZT0id2lkdGg6IDgwMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOmxpZ2h0Ymx1ZTsiPmRpdiBvZiB3aWR0aCA4MDBweDwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS12YWx1ZWxlc3MtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtdmFsdWVsZXNz
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
dmFsdWVsZXNzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAw
eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXpl
IDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29s
b3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzA4
eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzA4OiAiVGhpcyB0ZXh0IHNo
b3VsZCBiZSBncmVlbiBpZiBjb2xvciBkaXNwbGF5IGlzIHVzZWQuIgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50
cy0wNi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA5Njh4NjAwCisgIFJlbmRlckNhbnZh
cyBhdCAoMCwwKSBzaXplIDc4NXg1ODUKK2xheWVyIGF0ICgwLDApIHNpemUgOTY4eDYwMAorICBS
ZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCisgICAgUmVuZGVyQm9keSB7
Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4NTg0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAs
MCkgc2l6ZSA3Njl4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoMCwwKSBzaXplIDcyOHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDcyODogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgbmFycm93ZXIg
dGhhbiA2MGVtLiBUaGlzIHRlc3RzIHRoYXQgKG1pbi13aWR0aDogNjBlbSkgY2FuIGV2YWx1YXRl
IHRvIGZhbHNlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDk2MHgx
OCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAxMjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjM6ICJkaXYg
b2YgbGVuZ3RoIDYwIGVtIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTIpIHNpemUg
ODAweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDEyNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyNDog
ImRpdiBvZiBsZW5ndGggODAwcHgiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNp
bXBsZS1xdWVyeS0wNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtc2ltcGxlLXF1ZXJ5LTA0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wNC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0
IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2ltcGxl
IG1lZGlhIHF1ZXJ5LiBVc2luZyBzdHlsZSBlbGVtZW50LCBjc3MgQG1lZGlhIHJ1bGU8L3RpdGxl
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlh
cXVlcmllcy8jc3ludGF4IiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRpYSBvbmx5
IGFsbCB7CitwIHsgY29sb3I6IGdyZWVuIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4K
KzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvaW1wb3J0LXAtZ3JlZW4uY3NzCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvaW1wb3J0LXAtZ3JlZW4uY3NzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9pbXBvcnQtcC1ncmVlbi5jc3MJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEgQEAKK3AgeyAgY29sb3I6IGdyZWVuIH0KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1x
dWVyeS0wMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9y
PSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMxN3gx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMxNzogIlRoaXMgdGV4dCBzaG91
bGQgYmUgZ3JlZW4gb24gYml0bWFwIGNvbG9yIGRldmljZXMuIgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wMS5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDEuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1z
eW50YXgtMDEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT5IVE1MNCBtZWRpYSBkZXNjcmlwdG9ycyB0ZXN0OiBwYXJzaW5nIHN0eWxlIGVs
ZW1lbnQgbWVkaWEgYXR0cmlidXRlLCBmb3J3YXJkLWNvbXBhdGlibGUgc3ludGF4PC90aXRsZT4K
KzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC90
eXBlcy5odG1sI2gtNi4xMyIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iM2Qt
Z2xhc3Nlcywgc2NyZWVuIGFuZCByZXNvbHV0aW9uID4gNDBkcGksIGJyYWlsbGUiPgorcCB7IGNv
bG9yOiBncmVlbiB9Cis8L3N0eWxlPgorCis8L2hlYWQ+Cis8Ym9keT4KKzwvYm9keT4KKzxwPiBU
aGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiA8L3A+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDMuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wMy5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2ltcGxlIG1lZGlhIHF1ZXJ5IChub3QgYnJhaWxsZSwg
c2NyZWVuKS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgY3NzIEBpbXBvcnQgcnVsZTwvdGl0bGU+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVy
aWVzLyNzeW50YXgiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQGltcG9ydCB1cmwoaW1w
b3J0LXAtZ3JlZW4uY3NzKSBub3QgYnJhaWxsZSwgc2NyZWVuOworPC9zdHlsZT4KKzwvaGVhZD4K
Kzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDEtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxl
LXF1ZXJ5LTAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0
ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZ
fSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBz
aXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYz
OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZh
bGlkLW1lZGlhLWZlYXR1cmUtMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0
ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUg
Nzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJU
aGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtd2lkdGgtYWJzb2x1dGUtMDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wNC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNp
emUgODA4eDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA3ODV4NTg1CitsYXllciBh
dCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUg
Nzg1eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDU4NAorICAg
ICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4IFtjb2xvcj0jMDA4MDAwXQor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNzh4MTgKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNzg6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVu
IGlmIHZpZXdwb3J0IGlzIGF0IG1vc3QgODAwcHggd2lkZS4iCisgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTIxeDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMTIxOiAiZGl2IG9mIHdpZHRoIDgwMHB4IgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wNS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDUuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRv
ci1zeW50YXgtMDUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT5IVE1MNCBtZWRpYSBkZXNjcmlwdG9yIHRlc3Q6IHBhcnNpbmcgc3R5bGUg
ZWxlbWVudCBtZWRpYSBhdHRyaWJ1dGUsIGZvcndhcmQtY29tcGF0aWJsZSBzeW50YXg8L3RpdGxl
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQw
L3R5cGVzLmh0bWwjaC02LjEzIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iKioq
Kip8e30tIHxbfCI+CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxi
b2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wMS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgt
MDEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxp
ZC1zeW50YXgtMDEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHN5bnRhY3RpY2FsbHkgaW52YWxp
ZCBtZWRpYSBxdWVyeSBpbnNpZGUgaHRtbCBlbGVtZW50IHNob3VsZCBiZSB0cmVhdGVkIGFzIGh0
bWwgbWVkaWEgZGVzY3JpcHRvci4gVXNpbmcgc3R5bGUgZWxlbWVudCwgbWVkaWEgYXR0cmlidXRl
LjwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv
Y3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJh
bGwgYW5kIGludmFsaWQiPgorcCB7IGNvbG9yOiBncmVlbiB9Cis8L3N0eWxlPgorCis8L2hlYWQ+
Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTA1LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBs
ZS1xdWVyeS0wNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9E
WX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkg
c2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2
MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wNS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDUuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDUuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1
ZXJ5IHRlc3Q6IHN5bnRhY3RpY2FsbHkgaW52YWxpZCBtZWRpYSBxdWVyeSBpbnNpZGUgY3NzIHJ1
bGUgc2hvdWxkIGV2YWwgdG8gZmFsc2UgKCwsLCwpLiBVc2luZyBzdHlsZSBlbGVtZW50LCBjc3Mg
aW1wb3J0IHJ1bGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53
My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorPCEtLSB0aGlzIHRlc3Qgc2hvd3Mgc2xp
Z2h0IGRpc2Nvbm5lY3QgYmV0d2VlbiBjc3MgbWVkaWEgcXVlcmllcyBhbmQgaHRtbDQgbWVkaWEg
ZGVzY3JpcHRvcnMgLS0+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSIsLCwsLCwiPgor
cCB7IGNvbG9yOiBncmVlbiB9Cis8L3N0eWw+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQGlt
cG9ydCB1cmwoaW1wb3J0LXAtcmVkLmNzcykgYWxsLCwsLCwsOworCis8L3N0eWxlPgorPC9oZWFk
PgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3lu
dGF4LTAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAw
eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtbWVkaWEtZXhjZXB0LTAyLmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1leGNlcHQt
MDIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtbWVk
aWEtZXhjZXB0LTAyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKzxodG1sPgor
PGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBAbWVkaWEgY3NzIHJ1bGUgbWVk
aWEubWVkaWFUZXh0IHByb3BlcnR5IHBhcnNpbmcsIG1lZGlhIHF1ZXJ5IHN5bnRheCBlcnJvciBz
aG91bGQgYmUgaGFuZGxlZCBjb3JyZWN0bHkuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvQ1NTMjEvbWVkaWEuaHRtbCIgLz4KKworPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KK3AjcmVzdWx0IHtjb2xvcjogZ3JlZW59CisKK0BtZWRpYSBub3Qgc2Ny
ZWVuIHsKKy8qIHF1ZXJ5IHdpbGwgYmUgbW9kaWZpZWQgZnJvbSBqYXZhc2NyaXB0ICovCisvKiB0
aGUgbWFuaXB1bGF0aW9uIGNvbnRhaW5zIHN5bnRheCBlcnJvciwgYW5kIHNob3VsZCBmYWlsICov
CitwI3Jlc3VsdCB7Y29sb3I6IHJlZH0KK30KKworQG1lZGlhIHNjcmVlbiBhbmQgcmVzb2x1dGlv
biA+IDQwZHBpIHsKKy8qIG1lZGlhIHF1ZXJ5IHdpdGggc3ludGF4IGVycm9yIHNob3VsZCBmYWls
ICovCisvKiBjb3JyZXNwb25kaW5nIERPTSBtYW5pcHVsYXRpb24gd2lsbCBmYWlsICovCitwI3Jl
c3VsdCB7Y29sb3I6IHJlZH0KK30KKzwvc3R5bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2Ny
aXB0Ij4KK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgLy8gdGhpcyBzaG91
bGQgdGhyb3cKKyAgICAgICAgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3NzUnVsZXNbMV0ubWVk
aWEubWVkaWFUZXh0ID0gInNjcmVlbiBhbmQgcmVzb2x1dGlvbiA+IDQwZHBpIjsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5l
ckhUTUwgPSAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iOworICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiZGV0YWlscyIpLmlubmVySFRNTCA9ICJDYXVnaHQgZXhjZXB0aW9uOiAi
ICsgZTsKKyAgIH0KK30KKzwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3Qo
KSI+Cis8cCBpZD0icmVzdWx0Ij5GYWlsdXJlOiB0ZXN0IG5vdCBydW48L3A+Cis8cCBpZD0iZGV0
YWlscyI+PC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTA0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDQtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5
LTA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1
NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAw
ODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0
cmFpbnRzLTAyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1y
ZWxhdGl2ZS1jb25zdHJhaW50cy0wMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wMi5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE4IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkg
dGVzdDogcmVsYXRpdmUgY29uc3RyYWludHMgdGVzdCB1c2luZyBzY3JlZW4gYW5kIChtaW4td2lk
dGg6IDMwZW0pLiBVc2luZyBzdHlsZSBlbGVtZW50LCBtZWRpYSBhdHRyaWJ1dGUgPC90aXRsZT4g
IAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlh
cXVlcmllcy8jd2lkdGgiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW4g
YW5kIChtaW4td2lkdGg6IDMwZW0pIj4KK3AgeworICAgIGNvbG9yOiBncmVlbjsKK30KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYg
dmlld3BvcnQgaXMgd2lkZXIgdGhhbiAzMGVtLiAgPC9wPgorCis8ZGl2IHN0eWxlPSJ3aWR0aDog
MzBlbTsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBsZW5ndGggMzAgZW0g
PC9kaXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogODAwcHg7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0
Ymx1ZTsiPiBkaXYgb2YgbGVuZ3RoIDgwMHB4IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS10eXBlLXN5bnRheC0wMS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS10eXBlLXN5bnRh
eC0wMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21lZGlhLXR5cGUtc3ludGF4LTAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXpl
IDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAi
VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDMuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0wMy5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNT
UzMgbWVkaWEgcXVlcnkgdGVzdDogc3R5bGVzaGVldCBtZWRpYS5hcHBlbmRNZWRpdW08L3RpdGxl
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlh
cXVlcmllcy8jc3ludGF4IiAvPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9ET00tTGV2ZWwtMi1TdHlsZS9zdHlsZXNoZWV0cy5odG1sIiAvPgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIiBtZWRpYT0iYnJhaWxsZSwgbm90IHNjcmVlbiI+CitwIHsgY29sb3I6IGdy
ZWVuIH0KKzwvc3R5bGU+CisKKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorZnVuY3Rp
b24gdGVzdCgpIHsKKyAgICB2YXIgcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0
Iik7CisgICAgdmFyIG1lZGlhID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWE7CisgICAg
bWVkaWEuYXBwZW5kTWVkaXVtKCJzY3JlZW4gYW5kIChjb2xvcikiKTsKKyAgICBtZWRpYS5hcHBl
bmRNZWRpdW0oIm5vdCBzY3JlZW4iKTsKKyAgICB2YXIgZmlyc3QgPSB0cnVlOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbWVkaWEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFmaXJzdCkg
IHJlLmlubmVySFRNTCArPSAiLCAiICsgbWVkaWEuaXRlbShpKTsKKyAgICAgICAgZWxzZSByZS5p
bm5lckhUTUwgPSBtZWRpYS5pdGVtKGkpOworICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgIH0K
KworfQorPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4KKzwhLS0g
RklYTUU6IE5PVEUhIFRoaXMgd2lsbCBmYWlsIHVudGlsIGR5bmFtaWMgc2V0dGluZyBvZiBtZWRp
YSBwcm9wZXJ0eSBjYXVzZXMgc3R5bGUgcmVjYWxjdWxhdGlvbi4KKyAgICAgICAgICBUaGlzIGlz
IG5vdCB0aGUgY2FzZSBjdXJyZW50bHkgKDI0LjA3LjIwMDUpCistLT4KKzxwPiBUaGlzIHRleHQg
c2hvdWxkIGJlIGdyZWVuIGFuZCBiZWxvdyBzaG91bGQgcmVhZCAiYnJhaWxsZSwgbm90IHNjcmVl
biwgc2NyZWVuIGFuZCAoY29sb3IpIi4gPC9wPgorPHAgaWQ9InJlc3VsdCI+RmFpbHVyZTogdGVz
dCBub3QgcnVuPC9wPgorPHA+IGV4cGVjdGVkIHRvIGZhaWwgKDI0LjA3LjIwMDUpPC9wPgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlw
dG9yLXN5bnRheC0wNi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wNi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTA2
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYK
KyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAw
MF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBn
cmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFp
bnRzLTA2Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxh
dGl2ZS1jb25zdHJhaW50cy0wNi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDE3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVz
dDogbWVkaWEgcXVlcnkgdGVzdGluZyBjb25zdHJhaW50cyB3aXRoIHJlbGF0aXZlIHZhbHVlcyBl
dmFsdWF0aW5nIGZhbHNlIChzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pKS4gVXNpbmcgc3R5
bGUgZWxlbWVudCwgQG1lZGlhIGNzcyBydWxlLjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKzxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IGdyZWVuIH0KK0BtZWRpYSBzY3JlZW4g
YW5kIChtaW4td2lkdGg6IDYwZW0pIHsKK3AgeyBjb2xvcjogcmVkIH0KK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0
IGlzIG5hcnJvd2VyIHRoYW4gNjBlbS4gVGhpcyB0ZXN0cyB0aGF0IChtaW4td2lkdGg6IDYwZW0p
IGNhbiBldmFsdWF0ZSB0byBmYWxzZS48L3A+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogNjBlbTsgYmFj
a2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBsZW5ndGggNjAgZW0gPC9kaXY+Cis8
ZGl2IHN0eWxlPSJ3aWR0aDogODAwcHg7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBk
aXYgb2YgbGVuZ3RoIDgwMHB4IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wMi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wMi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFs
aWQtc3ludGF4LTAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUg
ODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBb
Y29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXZhbHVl
bGVzcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtdmFsdWVs
ZXNzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXZhbHVl
bGVzcy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogbWVkaWEgcXVlcnkgd2l0aG91dCB2YWx1ZXMg
KHNjcmVlbiBhbmQgKGNvbG9yKSkuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIEBtZWRpYSBjc3MgcnVs
ZS48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9j
c3MzLW1lZGlhcXVlcmllcy8jY29sb3IiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitA
bWVkaWEgc2NyZWVuIGFuZCAoY29sb3IpIHsKK3AgeyBjb2xvcjogZ3JlZW4gfQorfQorPC9zdHls
ZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgY29s
b3IgZGlzcGxheSBpcyB1c2VkLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTAzLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTAzLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NT
MyBtZWRpYSBxdWVyeSB0ZXN0OiBtZWRpYSBxdWVyeSB0ZXN0aW5nIGNvbXBvdW5kIHF1ZXJpZXMg
KHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6MCkpLiBVc2luZyBzdHlsZSBlbGVtZW50LCBj
c3MgQGltcG9ydCBydWxlPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3
dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4KKzxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyIgPgorQGltcG9ydCB1cmwoaW1wb3J0LXAtZ3JlZW4uY3NzKSBzY3JlZW4gYW5kIChj
b2xvcikgYW5kIChncmlkOjApOworPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhp
cyB0ZXh0IHNob3VsZCBiZSBncmVlbiBvbiBiaXRtYXAgY29sb3IgZGV2aWNlcy48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLW1lZGlhLWV4
Y2VwdC0wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1qcy1tZWRpYS1leGNlcHQtMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1leGNlcHQtMDMtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
ICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJs
b2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjIxeDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMjIxOiAiU3VjY2Vzcy4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4i
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDE4CisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQwMXgxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDQwMTogIkNhdWdodCBleGNlcHRpb246IEVycm9yOiBTWU5UQVhfRVJS
OiBET00gRXhjZXB0aW9uIDEyIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxh
dGl2ZS1jb25zdHJhaW50cy0wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wMy1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFp
bnRzLTAzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDc4NXg1
ODUKK2xheWVyIGF0ICgwLDApIHNpemUgODA4eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQg
KDAsMCkgc2l6ZSA3ODV4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3
Njl4NTg0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTggW2NvbG9y
PSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM2MHgx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM2MDogIlRoaXMgdGV4dCBzaG91
bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgd2lkZXIgdGhhbiAzMGVtLiIKKyAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDQ4MHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjN4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjM6ICJkaXYgb2YgbGVuZ3RoIDMwIGVtIgorICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTIpIHNpemUgODAweDE4IFtiZ2NvbG9yPSNBREQ4RTZd
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyNHgxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyNDogImRpdiBvZiBsZW5ndGggODAwcHgiCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wMS5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAxLmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0w
MS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2ltcGxlIG1lZGlhIHF1ZXJ5LiBVc2luZyBzdHls
ZSBlbGVtZW50LCBtZWRpYSBhdHRyaWJ1dGU8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVm
PSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAvPgorCis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJvbmx5IGFsbCI+CitwIHsgY29sb3I6IGdyZWVu
IH0KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTA0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDQtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNo
ZWV0LW1lZGlhLTA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRN
TH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkg
c2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgK
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDQ1eDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDQ1OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
biBhbmQgYmVsb3cgc2hvdWxkIHJlYWQgXCJtZWRpYSBsaXN0IGlzIGVtcHR5XCIuIgorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMTd4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCAxMTc6ICJtZWRpYSBsaXN0IGlzIGVtcHR5IgorICAgICAgUmVuZGVyQmxvY2sge1B9
IGF0ICgwLDY4KSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAxNzd4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNzc6ICJF
eHBlY3RlZCB0byBmYWlsICgyNC43LjIwMDUpIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMy5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUt
MDMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHN5bnRhY3RpY2FsbHkgY29ycmVjdCBxdWVyeSB3
aXRoIGludmFsaWQgbWVkaWEgZmVhdHVyZSBzaG91bGQgZXZhbCBmYWxzZSAgKGFsbCBhbmQgKGlu
dmFsaWQpKS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgY3NzIGltcG9ydCBydWxlLjwvdGl0bGU+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVy
aWVzLyIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IGdyZWVuIH0KKzwv
c3R5bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQGltcG9ydCB1cmwoaW1wb3J0LXAtcmVk
LmNzcykgYWxsIGFuZCAoaW52YWxpZCk7Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4g
VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTA0Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wNC5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0w
NC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogQWJzb2x1dGUgd2lkdGggcXVlcnkgKHNjcmVlbiBh
bmQgKG1heC13aWR0aDogODAwcHgpKS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgQG1lZGlhIGNzcyBy
dWxlLjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RS
L2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitA
bWVkaWEgIHNjcmVlbiBhbmQgKG1heC13aWR0aDogODAwcHgpIHsKK3AgeyBjb2xvcjogZ3JlZW4g
fQorfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4gaWYgdmlld3BvcnQgaXMgYXQgbW9zdCA4MDBweCB3aWRlLjwvcD4KKzxkaXYgc3R5bGU9
IndpZHRoOiA4MDBweDsgYmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7Ij5kaXYgb2Ygd2lkdGgg
ODAwcHg8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDctZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2
ZS1jb25zdHJhaW50cy0wNy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODA4eDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkg
c2l6ZSA3ODV4NTg1CitsYXllciBhdCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQmxvY2sg
e0hUTUx9IGF0ICgwLDApIHNpemUgNzg1eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzY5eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5
eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSA3MTB4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3MTA6ICJUaGlz
IHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIHdpZGVyIHRoYW4gMzBlbS4gVGhp
cyB0ZXN0cyB0aGF0IChtYXgtd2lkdGg6IDMwZW0pIGNhbiBldmFsdWF0ZSB0byBmYWxzZS4iCisg
ICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA0ODB4MTggW2JnY29sb3I9I0FE
RDhFNl0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTIzeDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTIzOiAiZGl2IG9mIGxlbmd0aCAzMCBl
bSIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDUyKSBzaXplIDgwMHgxOCBbYmdjb2xv
cj0jQUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjR4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjQ6ICJkaXYgb2YgbGVuZ3Ro
IDgwMHB4IgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVy
eS0wNS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1w
bGUtcXVlcnktMDUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOCBAQAorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBtYXRjaGVzIGNvbG9yIG9yIG1v
bm9jaHJvbWUgc2NyZWVucyA8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyI+CitwIHsgY29sb3I6IHJlZCB9CitAbWVkaWEgYWxsIGFuZCAoY29sb3IpIHsKK3AgeyBj
b2xvcjogZ3JlZW4gfQorfQorQG1lZGlhIGFsbCBhbmQgKG1vbm9jaHJvbWUpIHsKK3AgeyBjb2xv
cjogZ3JlZW47fQorfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBz
aG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wNC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1
ZXJ5LTA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYw
MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4
NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9
IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzE3eDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzE3OiAiVGhpcyB0ZXh0IHNob3Vs
ZCBiZSBncmVlbiBvbiBiaXRtYXAgY29sb3IgZGV2aWNlcy4iCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTAxLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtd2lkdGgtYWJzb2x1
dGUtMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitsYXllciBh
dCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgNzg1eDU4
NQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAo
MCwwKSBzaXplIDc4NXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2
OXg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgxOCBbY29sb3I9
IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzc4eDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzc4OiAiVGhpcyB0ZXh0IHNob3Vs
ZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyBhdCBtb3N0IDgwMHB4IHdpZGUuIgorICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMzQpIHNpemUgODAweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyMXgxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyMTogImRpdiBvZiB3aWR0aCA4MDBweCIKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3lu
dGF4LTAyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlh
LWRlc2NyaXB0b3Itc3ludGF4LTAyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAK
KzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+SFRNTDQgbWVkaWEgZGVzY3JpcHRvciB0ZXN0OiBwYXJz
aW5nIHN0eWxlIGVsZW1lbnQgbWVkaWEgYXR0cmlidXRlLCBmb3J3YXJkLWNvbXBhdGlibGUgc3lu
dGF4PC90aXRsZT4gCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RS
L1JFQy1odG1sNDAvdHlwZXMuaHRtbCNoLTYuMTMiIC8+Cis8IS0tIGFjdHVhbCB0ZXN0Y2FzZSBm
cm9tIGh0dHA6Ly93d3cuaGl4aWUuY2gvdGVzdHMvZXZpbC9jc3MvaW1wb3J0L2V4dHJhL3N0eWxl
ZXhvdGljbWVkaWEuaHRtbCAtLT4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2Ny
ZWVuO2JyYWlsbGUiPgorcCB7IGNvbG9yOiBncmVlbiB9Cis8L3N0eWxlPgorCis8L2hlYWQ+Cis8
Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wNC5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1x
dWVyeS0wNC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1z
aW1wbGUtbmVnLXF1ZXJ5LTA0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+IENTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2ltcGxlIG1lZGlh
IHF1ZXJ5IChub3QgYnJhaWxsZSwgc2NyZWVuKS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgY3NzIEBt
ZWRpYSBydWxlPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyI+CitAbWVkaWEgbm90IGJyYWlsbGUsIHNjcmVlbiB7CitwIHsgY29sb3I6IGdyZWVuIH0KK30K
Kzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVu
LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVk
aWEtdHlwZS1zeW50YXgtMDEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21lZGlhLXR5cGUtc3ludGF4LTAxLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21lZGlhLXR5cGUtc3ludGF4LTAxLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTQgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMi4xIG1lZGlhIHR5cGUgdGVz
dDogcGFyc2luZyBzaW1wbGUgQG1lZGlhIGNzcyBydWxlLjwvdGl0bGU+Cis8bGluayByZWw9Imhl
bHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvdHlwZXMuaHRtbCNoLTYu
MTMiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitAbWVkaWEgYWxsIHsgcCB7IGNvbG9y
OiBncmVlbiB9IH0KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPHA+IFRo
aXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIDwvcD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wMi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0w
Mi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2
CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgw
MDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZl
YXR1cmUtMDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvbXEtaW52YWxpZC1tZWRpYS1mZWF0dXJlLTA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRpYS1mZWF0dXJlLTA0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0K
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
bi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4
LTA2Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNj
cmlwdG9yLXN5bnRheC0wNi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wNi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkhUTUw0IG1lZGlhIGRlc2NyaXB0b3Ig
dGVzdDogcGFyc2luZyBzdHlsZSBlbGVtZW50IG1lZGlhIGF0dHJpYnV0ZSwgZm9yd2FyZC1jb21w
YXRpYmxlIHN5bnRheDwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cu
dzMub3JnL1RSL1JFQy1odG1sNDAvdHlwZXMuaHRtbCNoLTYuMTMiIC8+Cis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiIG1lZGlhPSIgICAgICI+CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+CisK
KzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5
bnRheC0wMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52
YWxpZC1zeW50YXgtMDIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvbXEtaW52YWxpZC1zeW50YXgtMDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBA
QAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHN5bnRhY3Rp
Y2FsbHkgaW52YWxpZCBtZWRpYSBxdWVyeSBpbnNpZGUgaHRtbCBlbGVtZW50IHNob3VsZCBiZSB0
cmVhdGVkIGFzIG1lZGlhIGRlc2NyaXB0b3IuIFVzaW5nIGxpbmsgZWxlbWVudCwgbWVkaWEgYXR0
cmlidXRlLjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
L1RSL2NzczMtbWVkaWFxdWVyaWVzLyIgLz4KKworPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBl
PSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCBhbmQgaW52YWxpZCIgaHJlZj0iaW1wb3J0LXAtZ3JlZW4u
Y3NzIiAvPgorCis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVu
LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
c2ltcGxlLW5lZy1xdWVyeS0wMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTAxLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wMS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2Cisg
ICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBd
CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAg
ICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3Jl
ZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRh
eC0wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
ZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTAzLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5l
Zy1xdWVyeS0wNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52
YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgw
LDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvbXEtanMtbWVkaWEtZXhjZXB0LTAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1leGNlcHQtMDMuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtbWVkaWEtZXhjZXB0LTAzLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBt
ZWRpYSBxdWVyeSB0ZXN0OiBAbWVkaWEgY3NzIHJ1bGUgbWVkaWEubWVkaWFUZXh0IHByb3BlcnR5
IHBhcnNpbmcsIG1lZGlhIHF1ZXJ5IHN5bnRheCBlcnJvciBzaG91bGQgYmUgaGFuZGxlZCBjb3Jy
ZWN0bHkgKCwsLCwpLjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cu
dzMub3JnL1RSL0NTUzIxL21lZGlhLmh0bWwiIC8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLVN0eWxlL2Nzcy5odG1sI0NTUy1DU1NNZWRp
YVJ1bGUiIC8+Cis8IS0tIHRoaXMgdGVzdCBzaG93cyBzbGlnaHQgZGlzY29ubmVjdCBiZXR3ZWVu
IGNzcyBtZWRpYSBxdWVyaWVzIGFuZCBodG1sNCBtZWRpYSBkZXNjcmlwdG9ycyAtLT4KKzxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyI+CitwI3Jlc3VsdCB7Y29sb3I6IGdyZWVufQorCitAbWVkaWEgYnJh
aWxsZSB7CisvKiBxdWVyeSB3aWxsIGJlIG1vZGlmaWVkIGZyb20gamF2YXNjcmlwdCAqLworLyog
dGhlIG1hbmlwdWxhdGlvbiBjb250YWlucyBzeW50YXggZXJyb3IsIGFuZCBzaG91bGQgZmFpbCAq
LworcCNyZXN1bHQge2NvbG9yOiByZWR9Cit9Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5ndWFn
ZT0iamF2YXNjcmlwdCI+CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHRyeSB7CisgICAgICAgIC8v
IHRoaXMgc2hvdWxkbid0IHRocm93CisgICAgICAgIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLm1l
ZGlhLm1lZGlhVGV4dCA9ICIsLCwsIjsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiRmFpbHVyZS4gLCwsLCBz
aG91bGQgYmUgdmFsaWQgbWVkaWEgZGVzY3JpcHRvci4iOworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZGV0YWlscyIpLmlubmVySFRNTCA9ICJDYXVnaHQgZXhjZXB0aW9uOiAiICsg
ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0cnkgeworICAgICAgICAvLyB0aGlzIHNo
b3VsZCB0aHJvdworICAgICAgICBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1sxXS5t
ZWRpYS5tZWRpYVRleHQgPSAiLCwsLCI7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiRmFpbHVyZS4gTm8gZXhjZXB0aW9uIHRocm93bi4iOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3Vs
dCIpLmlubmVySFRNTCA9ICJTdWNjZXNzLiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiI7Cisg
ICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkZXRhaWxzIikuaW5uZXJIVE1MID0gIkNh
dWdodCBleGNlcHRpb246ICIgKyBlOworICAgfQorfQorPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxi
b2R5IG9ubG9hZD0idGVzdCgpIj4KKzxwIGlkPSJyZXN1bHQiPkZhaWx1cmU6IHRlc3Qgbm90IHJ1
bjwvcD4KKzxwIGlkPSJkZXRhaWxzIj5hYWE8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXR5cGUtc3ludGF4LTAyLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXR5cGUtc3ludGF4LTAy
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVk
aWEtdHlwZS1zeW50YXgtMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sg
e0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0
eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlz
IHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
cmVsYXRpdmUtY29uc3RyYWludHMtMDMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTAzLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTAzLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NT
MyBtZWRpYSBxdWVyeSB0ZXN0OiByZWxhdGl2ZSBjb25zdHJhaW50cyB0ZXN0IHVzaW5nIHNjcmVl
biBhbmQgKG1pbi13aWR0aDogMzBlbSkuIFVzaW5nIGxpbmsgZWxlbWVudCwgbWVkaWEgYXR0cmli
dXRlIDwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv
VFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0
eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzBlbSkiIGhyZWY9
ImltcG9ydC1wLWdyZWVuLmNzcyIgLz4KKzwvaGVhZD4KKzxib2R5PgorCis8cD4gVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyB3aWRlciB0aGFuIDMwZW0uICA8L3A+CisK
KzxkaXYgc3R5bGU9IndpZHRoOiAzMGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4g
ZGl2IG9mIGxlbmd0aCAzMCBlbSA8L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOiA4MDBweDsgYmFj
a2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBsZW5ndGggODAwcHggPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLXN0eWxl
c2hlZXQtbWVkaWEtMDQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0wNC5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVl
cnkgdGVzdDogc3R5bGVzaGVldCBtZWRpYSBkZWxldGVNZWRpdW0gPC90aXRsZT4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAv
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwt
Mi1TdHlsZS9zdHlsZXNoZWV0cy5odG1sIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRp
YT0iYnJhaWxsZSwgbm90IHNjcmVlbiI+CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+CisK
KzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB2
YXIgcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iik7CisgICAgdmFyIG1lZGlh
ID0gZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWE7CisgICAgbWVkaWEuYXBwZW5kTWVkaXVt
KCJzY3JlZW4gYW5kIChjb2xvcikiKTsKKyAgICB3aGlsZSAobWVkaWEubGVuZ3RoKSB7CisgICAg
ICAgIG1lZGlhLmRlbGV0ZU1lZGl1bShtZWRpYS5pdGVtKDApKTsKKyAgICB9CisgICAgcmUuaW5u
ZXJIVE1MID0gIm1lZGlhIGxpc3QgaXMgZW1wdHkiCisgICAgdmFyIGZpcnN0ID0gdHJ1ZTsKKyAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IG1lZGlhLmxlbmd0aDsgKytpKSB7CisgICAgICAgIGlmICgh
Zmlyc3QpICByZS5pbm5lckhUTUwgKz0gIiwgIiArIG1lZGlhLml0ZW0oaSk7CisgICAgICAgIGVs
c2UgcmUuaW5uZXJIVE1MID0gbWVkaWEuaXRlbShpKTsKKyAgICAgICAgZmlyc3QgPSBmYWxzZTsK
KyAgICB9Cit9Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgor
PCEtLSBGSVhNRTogTk9URSEgVGhpcyB3aWxsIGZhaWwgdW50aWwgZHluYW1pYyBzZXR0aW5nIG9m
IG1lZGlhIHByb3BlcnR5IGNhdXNlcyBzdHlsZSByZWNhbGN1bGF0aW9uLgorICAgICAgICAgIFRo
aXMgaXMgbm90IHRoZSBjYXNlIGN1cnJlbnRseSAoMjQuMDcuMjAwNSkKKy0tPgorPHA+IFRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4gYW5kIGJlbG93IHNob3VsZCByZWFkICJtZWRpYSBsaXN0IGlz
IGVtcHR5Ii4gIDwvcD4KKzxwIGlkPSJyZXN1bHQiPkZhaWx1cmU6IHRlc3Qgbm90IHJ1bjwvcD4K
KzxwPiBFeHBlY3RlZCB0byBmYWlsICgyNC43LjIwMDUpIDwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1z
eW50YXgtMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9E
WX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkg
c2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2
MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDcuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMt
MDcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IG1lZGlhIHF1ZXJ5IHRlc3RpbmcgY29uc3RyYWlu
dHMgd2l0aCByZWxhdGl2ZSB2YWx1ZXMgZXZhbHVhdGluZyBmYWxzZSAoc2NyZWVuIGFuZCAobWF4
LXdpZHRoOiAzMGVtKSkuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIEBtZWRpYSBjc3MgcnVsZS48L3Rp
dGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1l
ZGlhcXVlcmllcy8jd2lkdGgiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9y
OiBncmVlbiB9CitAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAzMGVtKSB7CitwIHsgY29s
b3I6IHJlZCB9Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxwPiBUaGlzIHRleHQg
c2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIHdpZGVyIHRoYW4gMzBlbS4gVGhpcyB0ZXN0
cyB0aGF0IChtYXgtd2lkdGg6IDMwZW0pIGNhbiBldmFsdWF0ZSB0byBmYWxzZS4gPC9wPgorCis8
ZGl2IHN0eWxlPSJ3aWR0aDogMzBlbTsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRp
diBvZiBsZW5ndGggMzAgZW0gPC9kaXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogODAwcHg7IGJhY2tn
cm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBkaXYgb2YgbGVuZ3RoIDgwMHB4IDwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNo
ZWV0LW1lZGlhLTAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTAxLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2Cisg
ICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjEweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggNjEwOiAiVGhlIHRleHQgYmVsb3cgc2hvdWxkIGJlIGdyZWVuIGFuZCBjb250
YWluIFwiYnJhaWxsZSwgbWVkaWEsIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6IDApLCB0
dHlcIi4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDE4IFtjb2xv
cj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMTJ4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMTI6ICJicmFpbGxlLCBtZWRp
YSwgc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDogMCksIHR0eSIKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTA0Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTA0Lmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NT
MyBtZWRpYSBxdWVyeSB0ZXN0OiBtZWRpYSBxdWVyeSB0ZXN0aW5nIGNvbXBvdW5kIHF1ZXJpZXMg
KHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6MCkpLiBVc2luZyBzdHlsZSBlbGVtZW50LCBj
c3MgQG1lZGlhIHJ1bGU8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3
LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAvPgorPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KK0BtZWRpYSBzY3JlZW4gYW5kIChjb2xvcikgYW5kIChncmlkOjApIHsKK3AgeyBj
b2xvcjogZ3JlZW4gfQorfQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0
ZXh0IHNob3VsZCBiZSBncmVlbiBvbiBiaXRtYXAgY29sb3IgZGV2aWNlcy48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRl
LTAxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1h
YnNvbHV0ZS0wMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
cS13aWR0aC1hYnNvbHV0ZS0wMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogQWJzb2x1dGUgd2lk
dGggcXVlcnkgKHNjcmVlbiBhbmQgKG1heC13aWR0aDogODAwcHgpKS4gVXNpbmcgc3R5bGUgZWxl
bWVudCwgbWVkaWEgYXR0cmlidXRlLjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiBhbmQgKG1heC13aWR0aDogODAwcHgpIj4KK3Ag
eyBjb2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4
dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgYXQgbW9zdCA4MDBweCB3aWRlLjwvcD4K
KzxkaXYgc3R5bGU9IndpZHRoOiA4MDBweDsgYmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7Ij5k
aXYgb2Ygd2lkdGggODAwcHg8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDIuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAyLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRp
YSBxdWVyeSB0ZXN0OiBzaW1wbGUgbWVkaWEgcXVlcnkuIFVzaW5nIGxpbmsgZWxlbWVudCwgbWVk
aWEgYXR0cmlidXRlPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53
My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4KKworPGxpbmsgdHlwZT0idGV4
dC9jc3MiIG1lZGlhPSJvbmx5IGFsbCIgaHJlZj0iaW1wb3J0LXAtZ3JlZW4uY3NzIiAvPgorPC9o
ZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0
cmFpbnRzLTA0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitsYXllciBhdCAoMCwwKSBz
aXplIDgwOHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgNzg1eDU4NQorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDc4NXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg1ODQKKyAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgxOCBbY29sb3I9IzAwODAwMF0K
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzYweDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzYwOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
biBpZiB2aWV3cG9ydCBpcyB3aWRlciB0aGFuIDMwZW0uIgorICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDAsMzQpIHNpemUgNDgweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyM3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDEyMzogImRpdiBvZiBsZW5ndGggMzAgZW0iCisgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA4MDB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTI0eDE4CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMTI0OiAiZGl2IG9mIGxlbmd0aCA4MDBweCIKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtZ3JpZC0wMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1ncmlkLTAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtZ3JpZC0wMS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM3OHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDM3ODogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld2luZyBk
ZXZpY2UgaXMgYml0bWFwIGRldmljZSIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
aW52YWxpZC1tZWRpYS1mZWF0dXJlLTA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRpYS1mZWF0dXJlLTA0Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzeW50YWN0aWNhbGx5IGNvcnJlY3QgcXVlcnkgd2l0aCBp
bnZhbGlkIG1lZGlhIGZlYXR1cmUgc2hvdWxkIGV2YWwgZmFsc2UgKGFsbCBhbmQgKGludmFsaWQp
KS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgY3NzIG1lZGlhIHJ1bGUuPC90aXRsZT4KKzxsaW5rIHJl
bD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAv
PgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3AgeyBjb2xvcjogZ3JlZW4gfQorQG1lZGlhIGFs
bCBhbmQgKGludmFsaWQpIHsKK3AgeyBjb2xvcjogcmVkIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDEt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29t
cG91bmQtcXVlcnktMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNh
bnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9k
eSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQg
KDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDMxN3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDMxNzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gb24gYml0bWFwIGNvbG9yIGRldmlj
ZXMuIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1taW4tY29uc3RyYWludC1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1taW4tY29u
c3RyYWludC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21xLW1pbi1jb25zdHJhaW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXpl
IDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMzgxeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzgxOiAi
VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCB3aWR0aCBpcyBhdCBsZWFzdCA2
MDBweC4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFp
bnRzLTA4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA4LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDgtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitsYXllciBhdCAoMCwwKSBzaXpl
IDc4NXg2NDIKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA3ODV4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4
NXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg1NzYKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgxOCBbY29sb3I9IzAwODAwMF0KKyAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzE5eDE4CisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzE5OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBp
ZiBoZWlnaHQgaXMgYXQgbGVhc3QgMzBleCAuIgorICAgICAgUmVuZGVyQmxvY2sgKGZsb2F0aW5n
KSB7RElWfSBhdCAoMCwzNCkgc2l6ZSAxMTV4MjI5IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDExNXgxOAorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDExNTogImRpdiBvZiBoZWlnaHQgMzBleCIKKyAgICAgIFJlbmRl
ckJsb2NrIChmbG9hdGluZykge0RJVn0gYXQgKDExNSwzNCkgc2l6ZSAxMjR4NjAwIFtiZ2NvbG9y
PSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyNHgx
OAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyNDogImRpdiBvZiBoZWlnaHQg
NjAwcHgiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnkt
MDEuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1u
ZWctcXVlcnktMDEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtc2ltcGxlLW5lZy1xdWVyeS0wMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc2ltcGxlIG1l
ZGlhIHF1ZXJ5IChub3QgYnJhaWxsZSwgc2NyZWVuKS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgbWVk
aWEgYXR0cmlidXRlLjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cu
dzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+Cis8c3R5bGUgdHlwZT0idGV4
dC9jc3MiIG1lZGlhPSJub3QgYnJhaWxsZSwgc2NyZWVuIj4KK3AgeyBjb2xvcjogZ3JlZW4gfQor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4u
IDwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
Y29tcG91bmQtcXVlcnktMDUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wNS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM5OXgxOAorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDM5OTogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYg
dmlld3BvcnQgaXMgYXQgbW9zdCA4MDBweCB4IDYwMHB4LiIKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDMuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTAzLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3lu
dGF4LTAzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+SFRNTDQgbWVkaWEgZGVzY3JpcHRvciB0ZXN0OiBwYXJzaW5nIHN0eWxlIGVsZW1l
bnQgbWVkaWEgYXR0cmlidXRlLCBmb3J3YXJkLWNvbXBhdGlibGUgc3ludGF4PC90aXRsZT4KKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC90eXBl
cy5odG1sI2gtNi4xMyIgLz4KKzwhLS0gYWN0dWFsIHRlc3RjYXNlIGZyb20gaHR0cDovL3d3dy5o
aXhpZS5jaC90ZXN0cy9ldmlsL2Nzcy9pbXBvcnQvZXh0cmEvc3R5bGVleG90aWNtZWRpYS5odG1s
IC0tPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYnJhaWxsZSwgYWxsIHdpdGggcHJp
bnQiPgorcCB7IGNvbG9yOiBncmVlbiB9Cis8L3N0eWxlPgorCis8L2hlYWQ+Cis8Ym9keT4KKzxw
PiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRpYS1mZWF0dXJlLTAxLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQt
bWVkaWEtZmVhdHVyZS0wMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wMi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wMi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdp
ZHRoLWFic29sdXRlLTAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBA
QAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBz
aXplIDc4NXg1ODUKK2xheWVyIGF0ICgwLDApIHNpemUgODA4eDYwMAorICBSZW5kZXJCbG9jayB7
SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA3Njl4NTg0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4
MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDM3OHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM3ODogIlRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgYXQgbW9zdCA4MDBweCB3aWRlLiIK
KyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDgwMHgxOCBbYmdjb2xvcj0j
QUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjF4MTgK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjE6ICJkaXYgb2Ygd2lkdGggODAw
cHgiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDUu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1uZWct
cXVlcnktMDUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
c2ltcGxlLW5lZy1xdWVyeS0wNS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogbWVkaWEgcXVlcnkg
dGVzdGluZyBub3QgYW5kIGZlYXR1cmUgYnJhaWxsZSAobm90IGJyYWlsbGUpLiBVc2luZyBzdHls
ZSBlbGVtZW50LCBAbWVkaWEgY3NzIHJ1bGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KK0BtZWRpYSBub3QgYnJhaWxsZSB7CitwIHsgY29sb3I6IGdyZWVuIH0K
K30KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUg
Z3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgorCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21xLXNpbXBsZS1xdWVyeS0wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAw
eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtdHlwZS1zeW50YXgtMDIuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXR5cGUtc3ludGF4LTAy
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXR5cGUt
c3ludGF4LTAyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+Q1NTMi4xIG1lZGlhIHR5cGUgdGVzdDogcGFyc2luZyBzaW1wbGUgQG1lZGlh
IGNzcyBydWxlLiBNZWRpYSB0eXBlICwsLCwgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgaW52YWxp
ZCBzeW50YXg8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9y
Zy9UUi9SRUMtaHRtbDQwL3R5cGVzLmh0bWwjaC02LjEzIiAvPgorCis8c3R5bGUgdHlwZT0idGV4
dC9jc3MiPgorcCB7IGNvbG9yOiBncmVlbiB9CitAbWVkaWEgLCwsLCwgeyBwIHsgY29sb3I6IHJl
ZCB9IH0KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPHA+IFRoaXMgdGV4
dCBzaG91bGQgYmUgZ3JlZW4uIDwvcD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtanMtbWVkaWEtZm9yd2FyZC1zeW50YXgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtbWVkaWEtZm9yd2FyZC1zeW50YXgtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1t
ZWRpYS1mb3J3YXJkLXN5bnRheC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
OCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3
ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRo
aXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
cS1pbnZhbGlkLXN5bnRheC0wMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDMuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNiBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRl
c3Q6IHN5bnRhY3RpY2FsbHkgaW52YWxpZCBtZWRpYSBxdWVyeSBpbnNpZGUgY3NzIHJ1bGUgc2hv
dWxkIGV2YWwgdG8gZmFsc2UuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBpbXBvcnQgcnVsZS48
L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3Mz
LW1lZGlhcXVlcmllcy8iIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9yOiBn
cmVlbiB9Cis8L3N0eWxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BpbXBvcnQgdXJsKGlt
cG9ydC1wLXJlZC5jc3MpIGFsbCBhbmQgaW52YWxpZDsKKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxi
b2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTAyLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBs
ZS1uZWctcXVlcnktMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVy
Q2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBh
dCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkg
d2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDEuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDEuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1t
ZWRpYS0wMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIzIEBACis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3R5bGVzaGVldCBtZWRpYS5tZWRpYVRl
eHQgcHJvcGVydHkgaW5zcGVjdGlvbi48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAvPgorCis8c3R5
bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJicmFpbGxlLCBtZWRpYSB3aXRoIGVycm9yLCBzY3Jl
ZW4gYW5kIChjb2xvcikgYW5kIChncmlkOjApLCB0dHkgcmVzb2x1dGlvbiA+IDYwMHB4Ij4KKyNy
ZXN1bHQgeyBjb2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKworPHNjcmlwdCBsYW5ndWFnZT0iamF2
YXNjcmlwdCI+CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHJlID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdCIpOworICAgIHJlLmlubmVySFRNTCA9ICJzdGFydGVkIjsKKyAgICByZS5p
bm5lckhUTUwgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYS5tZWRpYVRleHQ7Cit9Cis8
L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPHA+IFRoZSB0ZXh0
IGJlbG93IHNob3VsZCBiZSBncmVlbiBhbmQgY29udGFpbiAiYnJhaWxsZSwgbWVkaWEsIHNjcmVl
biBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6IDApLCB0dHkiLiA8L3A+Cis8cCBpZD0icmVzdWx0Ij5G
YWlsdXJlOiB0ZXN0IG5vdCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTA0LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3lu
dGF4LTA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52
YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgw
LDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA0Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFp
bnRzLTA0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiByZWxhdGl2ZSBjb25zdHJhaW50cyB0ZXN0
IHVzaW5nIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzBlbSkuIFVzaW5nIHN0eWxlIGVsZW1lbnQs
IGNzcyBAaW1wb3J0IHJ1bGUgPC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRw
Oi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jd2lkdGgiIC8+CisKKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CitAaW1wb3J0IHVybChpbXBvcnQtcC1ncmVlbi5jc3MpIHNjcmVlbiBh
bmQgKG1pbi13aWR0aDogMzBlbSk7Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxwPiBU
aGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIHdpZGVyIHRoYW4gMzBlbS4g
IDwvcD4KKworPGRpdiBzdHlsZT0id2lkdGg6IDMwZW07IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0
Ymx1ZTsiPiBkaXYgb2YgbGVuZ3RoIDMwIGVtIDwvZGl2PgorPGRpdiBzdHlsZT0id2lkdGg6IDgw
MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCA4MDBweCA8
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
Z3JpZC0wMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtZ3Jp
ZC0wMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1ncmlk
LTAxLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBNZWRpYSBxdWVyeSB0ZXN0aW5nIHZhbHVlIG9m
IGdyaWQgKHNjcmVlbiBhbmQgZ3JpZDowKS4gVXNpbmcgc3R5bGUgYXR0cmlidXRlLCBAbWVkaWEg
Y3NzIHJ1bGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0Bt
ZWRpYSBzY3JlZW4gYW5kIChncmlkOiAwKSB7CitwIHsgY29sb3I6IGdyZWVuIH0KK30KKzwvc3R5
bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZp
ZXdpbmcgZGV2aWNlIGlzIGJpdG1hcCBkZXZpY2U8L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDEuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTAxLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1
ZXJ5LTAxLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1sPgorPGhlYWQ+
Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBtZWRpYSBxdWVyeSB0ZXN0aW5nIGNvbXBv
dW5kIHF1ZXJpZXMgKHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6MCkpLiBVc2luZyBzdHls
ZSBlbGVtZW50LCBtZWRpYSBhdHRyaWJ1dGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJl
Zj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4KKzxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6
MCkiPgorcCB7IGNvbG9yOiBncmVlbiB9Cis8L3N0eWxlPgorCis8L2hlYWQ+Cis8Ym9keT4KKzxw
PiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIG9uIGJpdG1hcCBjb2xvciBkZXZpY2VzLjwvcD4K
KzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxp
ZC1zeW50YXgtMDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wNC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJC
bG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1taW4tY29uc3RyYWludC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtbWluLWNvbnN0cmFpbnQuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtbWluLWNvbnN0cmFpbnQuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1Mz
IG1lZGlhIHF1ZXJ5IHRlc3Q6IE1lZGlhIHF1ZXJ5IHdpdGggbWluLSBjb25zdHJhaW50IChzY3Jl
ZW4gYW5kIChtaW4td2lkdGg6IDYwMHB4KSkuIFVzaW5nIHN0eWxlIGF0dHJpYnV0ZSwgQGltcG9y
dCBjc3MgcnVsZS48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL2Nhc2NhZGUuaHRtbCNhdC1pbXBvcnQiIC8+CisKKzxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IHJlZCB9Cis8L3N0eWxlPgorPHN0eWxl
IHR5cGU9InRleHQvY3NzIj4KK0BpbXBvcnQgdXJsKGltcG9ydC1wLWdyZWVuLmNzcykgc2NyZWVu
IGFuZCAobWluLXdpZHRoOiA2MDBweCk7Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4g
VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCB3aWR0aCBpcyBhdCBsZWFzdCA2
MDBweC48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA4Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wOC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wOC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIwIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogbWVkaWEgcXVlcnkgdGVzdGluZyBjb25zdHJhaW50cyB3
aXRoIHJlbGF0aXZlIHZhbHVlcyAoc2NyZWVuIGFuZCAobWluLWhlaWdodDogMzBleCkpLiBVc2lu
ZyBzdHlsZSBlbGVtZW50LCBAbWVkaWEgY3NzIHJ1bGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVs
cCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAv
PgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9yOiByZWQgfQorQG1lZGlhIHNj
cmVlbiBhbmQgKG1pbi1oZWlnaHQ6IDMwZXgpIHsKK3AgeyBjb2xvcjogZ3JlZW4gfQorfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBp
ZiBoZWlnaHQgaXMgYXQgbGVhc3QgMzBleCAuPC9wPgorCis8ZGl2IHN0eWxlPSJkaXNwbGF5Omlu
bGluZTsgZmxvYXQ6bGVmdDsgaGVpZ2h0OiAzMGV4OyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJs
dWU7Ij4gZGl2IG9mIGhlaWdodCAzMGV4IDwvZGl2PgorPGRpdiBzdHlsZT0iZGlzcGxheTppbmxp
bmU7IGZsb2F0OmxlZnQ7IGhlaWdodDogNjAwcHg7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1
ZTsiPiBkaXYgb2YgaGVpZ2h0IDYwMHB4IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1leGNlcHQtMDEtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtbWVkaWEtZXhjZXB0
LTAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtanMtbWVkaWEtZXhjZXB0LTAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJC
bG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0g
YXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6
ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjQ0eDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjQ0OiAiVGhlIHRleHQgYmVsb3cg
c2hvdWxkIHJlYWQgXCJTdWNjZXNzLlwiIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM0
KSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgNTR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1
NDogIlN1Y2Nlc3MuIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDY4KSBzaXplIDc4NHgx
OAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1MTl4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1MTk6ICJGb2xsb3dpbmcgZXhjZXB0aW9uIHdh
cyBjYXVnaHQ6IEVycm9yOiBOT1RfRk9VTkRfRVJSOiBET00gRXhjZXB0aW9uIDgiCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTA1Lmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wNS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0w
NS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogQ29tcG91bmQgbWVkaWEgcXVlcnksIGFic29sdXRl
IHZhbHVlcyAoc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgYW5kIChtYXgtaGVpZ2h0OjYw
MHB4KSkuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIEBtZWRpYSBjc3MgcnVsZS48L3RpdGxlPgorPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmll
cy8jd2lkdGgiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitAbWVkaWEgc2NyZWVuIGFu
ZCAobWF4LXdpZHRoOiA4MDBweCkgYW5kIChtYXgtaGVpZ2h0OjYwMHB4KXsKK3AgeyBjb2xvcjog
Z3JlZW4gfQorfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91
bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgYXQgbW9zdCA4MDBweCB4IDYwMHB4LjwvcD4KKzwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVz
aGVldC1tZWRpYS0wMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0wMi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3Ngor
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDYxMHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDYxMDogIlRoZSB0ZXh0IGJlbG93IHNob3VsZCBiZSBncmVlbiBhbmQgY29u
dGFpbiBcImJyYWlsbGUsIG1lZGlhLCBzY3JlZW4gYW5kIChjb2xvcikgYW5kIChncmlkOiAwKSwg
dHR5XCIuIgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgxOCBbY29s
b3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzEy
eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzEyOiAiYnJhaWxsZSwgbWVk
aWEsIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6IDApLCB0dHkiCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRpYS1mZWF0dXJlLTAx
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQt
bWVkaWEtZmVhdHVyZS0wMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3ludGFjdGljYWxseSBj
b3JyZWN0IHF1ZXJ5IHdpdGggaW52YWxpZCBtZWRpYSBmZWF0dXJlIHNob3VsZCBldmFsIGZhbHNl
IChhbGwgYW5kIChpbnZhbGlkKSkuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIG1lZGlhIGF0dHJpYnV0
ZS48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9j
c3MzLW1lZGlhcXVlcmllcy8iIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9y
OiBncmVlbiB9Cis8L3N0eWxlPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iYWxsIGFu
ZCAoaW52YWxpZCkiPgorcCB7IGNvbG9yOiByZWQgfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5
PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wMi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDIu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtd2lkdGgtYWJz
b2x1dGUtMDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IEFic29sdXRlIHdpZHRoIHF1ZXJ5IChz
Y3JlZW4gYW5kIChtYXgtd2lkdGg6IDgwMHB4KSkuIFVzaW5nIGxpbmsgZWxlbWVudCwgbWVkaWEg
YXR0cmlidXRlLjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMu
b3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKzxsaW5rICB0eXBlPSJ0ZXh0L2Nz
cyIgbWVkaWE9InNjcmVlbiBhbmQgKG1heC13aWR0aDogODAwcHgpIiBocmVmPSJpbXBvcnQtcC1n
cmVlbi5jc3MiIC8+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdy
ZWVuIGlmIHZpZXdwb3J0IGlzIGF0IG1vc3QgODAwcHggd2lkZS48L3A+Cis8ZGl2IHN0eWxlPSJ3
aWR0aDogODAwcHg7IGJhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOyI+ZGl2IG9mIHdpZHRoIDgw
MHB4PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA1LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA1LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUt
Y29uc3RyYWludHMtMDUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBA
CitsYXllciBhdCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNp
emUgNzg1eDU4NQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckJsb2NrIHtI
VE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4
KSBzaXplIDc2OXg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgx
OCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMzYweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzYwOiAiVGhpcyB0
ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyB3aWRlciB0aGFuIDMwZW0uIgorICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzQpIHNpemUgNDgweDE4IFtiZ2NvbG9yPSNBREQ4
RTZdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyM3gxOAorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyMzogImRpdiBvZiBsZW5ndGggMzAgZW0i
CisgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA4MDB4MTggW2JnY29sb3I9
I0FERDhFNl0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTI0eDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI0OiAiZGl2IG9mIGxlbmd0aCA4
MDBweCIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnkt
MDMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxl
LXF1ZXJ5LTAzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgorPGhl
YWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzaW1wbGUgbWVkaWEgcXVlcnkuIFVz
aW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBAaW1wb3J0IHJ1bGU8L3RpdGxlPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4
IiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BpbXBvcnQgdXJsKGltcG9ydC1wLWdyZWVu
LmNzcykgb25seSBhbGw7Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21xLWdyaWQtMDItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtZ3JpZC0wMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWdyaWQtMDItZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRl
ckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9
IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzOTl4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCAzOTk6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdpbmcgZGV2aWNl
IGlzIG5vdCBhIGdyaWQgZGV2aWNlLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
anMtbWVkaWEtZm9yd2FyZC1zeW50YXguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21xLWpzLW1lZGlhLWZvcndhcmQtc3ludGF4Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLW1lZGlhLWZvcndhcmQtc3ludGF4Lmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzMgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NT
MyBtZWRpYSBxdWVyeSB0ZXN0OiBzdHlsZXNoZWV0IG1lZGlhLm1lZGlhVGV4dCA9IHBhcnNpbmcs
IG1lZGlhIGRlc2NyaXB0b3IgZmFsbGJhY2sgaW4gZG9jdW1lbnQuU3R5bGVTaGVldC5tZWRpYS5t
ZWRpYVRleHQ8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9y
Zy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+CisKKzwhLS0gdGhlIG1lZGlhIHByb3BlcnR5IG9m
IHN0eWxlc2hlZXQgYmVsb3cgd2lsbCBiZSBtYW5pcHVsYXRlZCwgYW5kCisgbWFuaXB1bGF0aW9u
IHNob3VsZCByZXNwZWN0IGh0bWwgbWVkaWEgZGVzY3JpcHRvciBmb3J3YXJkLWNvbXBhdGlibGUg
c3ludGF4LgorIFRoaXMgbWVhbnMgdGhlIG1hbmlwdWxhdGlvbiBzaG91bGQgc3VjY2VlZC4gLS0+
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCitwI3Jlc3VsdCB7IGNvbG9yOiBncmVlbjt9CisK
K0BtZWRpYSBzY3JlZW4gYW5kIHJlc29sdXRpb24gPiA0MGRwaSB7CisvKiBtZWRpYSBxdWVyeSB3
aXRoIHN5bnRheCBlcnJvciBzaG91bGQgZmFpbCAqLworLyogY29ycmVzcG9uZGluZyBET00gbWFu
aXB1bGF0aW9uIHRvIHRoZSBtZWRpYVRleHQgb2YgdGhlIHN0eWxlc2hlZXQgd2lsbCBzdWNjZWVk
ICovCitwI3Jlc3VsdCB7IGNvbG9yOiByZWQ7fQorCit9Cis8L3N0eWxlPgorPHNjcmlwdCBsYW5n
dWFnZT0iamF2YXNjcmlwdCI+CitmdW5jdGlvbiB0ZXN0KCkgeworICAgLy8gdGhpcyBzaG91bGQg
bm90IHRocm93LCBiZWNhdXNlIFN0eWxlU2hlZXQgc2hvdWxkIHJlc3BlY3QgTWVkaWEgRGVzY3Jp
cHRpb24gZm9yd2FyZC1jb21wYXRpYmxlIHN5bnRheAorICAgZG9jdW1lbnQuc3R5bGVTaGVldHNb
MF0ubWVkaWEubWVkaWFUZXh0ID0gInNjcmVlbiBhbmQgcmVzb2x1dGlvbiA+IDQwZHBpIjsKKyAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgPSAiVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbi4iOworfQorPC9zY3JpcHQ+CisKKworPC9oZWFkPgorPGJvZHkgb25s
b2FkPSJ0ZXN0KCkiPgorPHAgaWQ9InJlc3VsdCI+RmFpbHVyZTogdGVzdCBub3QgcnVuPC9wPgor
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1jb21wb3Vu
ZC1xdWVyeS0wMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTAyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
ICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJs
b2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzE3eDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMzE3OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBvbiBiaXRtYXAg
Y29sb3IgZGV2aWNlcy4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZl
LWNvbnN0cmFpbnRzLTA5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA5LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMt
MDktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitsYXllciBhdCAo
MCwwKSBzaXplIDk2OHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgNzg1eDU4NQor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA5Njh4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDc4NXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg1
ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgxOCBbY29sb3I9IzAw
ODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzgxeDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzgxOiAiVGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbiBpZiB2aWV3cG9ydCBpcyBuYXJyb3dlciB0aGFuIDYwZW0uIgorICAgICAgUmVuZGVy
QmxvY2sge0RJVn0gYXQgKDAsMzQpIHNpemUgOTYweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyM3gxOAorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyMzogImRpdiBvZiBsZW5ndGggNjAgZW0iCisgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA4MDB4MTggW2JnY29sb3I9I0FERDhFNl0K
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTI0eDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI0OiAiZGl2IG9mIGxlbmd0aCA4MDBweCIKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wMi5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0w
Mi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUt
bmVnLXF1ZXJ5LTAyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAgQEAKKzxodG1sPgor
PGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzaW1wbGUgbWVkaWEgcXVlciAo
bm90IGJyYWlsbGUsIHNjcmVlbikuIFVzaW5nIGxpbmsgZWxlbWVudCwgbWVkaWEgYXR0cmlidXRl
LjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2Nz
czMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9
InRleHQvY3NzIiBtZWRpYT0ibm90IGJyYWlsbGUsIHNjcmVlbiIgaHJlZj0iaW1wb3J0LXAtZ3Jl
ZW4uY3NzIiAvPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
bi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLW1l
ZGlhLWZlYXR1cmUtMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hU
TUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgp
IHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4
IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRl
eHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtd2lk
dGgtYWJzb2x1dGUtMDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wMy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODA4
eDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA3ODV4NTg1CitsYXllciBhdCAoMCww
KSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1eDYw
MAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDU4NAorICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNzh4MTgKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCAzNzg6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZp
ZXdwb3J0IGlzIGF0IG1vc3QgODAwcHggd2lkZS4iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwzNCkgc2l6ZSA4MDB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTIxeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTIxOiAiZGl2IG9mIHdpZHRoIDgwMHB4IgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wNC5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDQuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50
YXgtMDQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4K
Kzx0aXRsZT5IVE1MNCBtZWRpYSBkZXNjcmlwdG9yIHRlc3Q6IHBhcnNpbmcgc3R5bGUgZWxlbWVu
dCBtZWRpYSBhdHRyaWJ1dGUsIGZvcndhcmQtY29tcGF0aWJsZSBzeW50YXg8L3RpdGxlPgorPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3R5cGVz
Lmh0bWwjaC02LjEzIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIiBtZWRpYT0iLCwsLCI+Citw
IHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTA0LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1
ZXJ5LTA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYw
MAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4
NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9
IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4
CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3Vs
ZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL2ltcG9ydC1wLXJlZC5j
c3MKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9pbXBvcnQtcC1yZWQuY3Nz
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9pbXBvcnQtcC1yZWQuY3Nz
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIgQEAKK3AgeyBjb2xvcjogcmVkIH0KK1wgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZh
bGlkLXN5bnRheC0wNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtaW52YWxpZC1zeW50YXgtMDQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHN5
bnRhY3RpY2FsbHkgaW52YWxpZCBtZWRpYSBxdWVyeSBpbnNpZGUgY3NzIHJ1bGUgc2hvdWxkIGV2
YWwgdG8gZmFsc2UuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBtZWRpYSBydWxlLjwvdGl0bGU+
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFx
dWVyaWVzLyIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IGdyZWVuIH0K
K0BtZWRpYSBhbGwgYW5kIGludmFsaWQgeworcCB7IGNvbG9yOiByZWQgfQorfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlw
dG9yLXN5bnRheC0wMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wMS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTAx
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYK
KyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAw
MF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBn
cmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLW1lZGlhLWV4Y2VwdC0w
MS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtbWVkaWEt
ZXhjZXB0LTAxLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LWpzLW1lZGlhLWV4Y2VwdC0wMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMxIEBACis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogZGVsZXRlTWVkaXVt
IHRocm93aW5nIGV4Y2VwdGlvbi48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRw
Oi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+CisKKzxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+CitAbWVkaWEgYWxsIGFuZCAoY29sb3IpIHsKK3AjcmVzdWx0IHsgY29sb3I6IGdy
ZWVuO30KK30KKzwvc3R5bGU+CisKKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorZnVu
Y3Rpb24gdGVzdCgpIHsKKyAgICB0cnkgeworICAgICAgIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBd
LmNzc1J1bGVzWzBdLm1lZGlhLmRlbGV0ZU1lZGl1bSgiYWxsIGFuZCAoIik7CisgICAgfQorICAg
IGNhdGNoKGUpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlu
bmVySFRNTCA9ICJTdWNjZXNzLiIKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRl
dGFpbHMiKS5pbm5lckhUTUwgPSAiRm9sbG93aW5nIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0OiAiICsg
ZTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKworCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3Qo
KSI+Cis8cD5UaGUgdGV4dCBiZWxvdyBzaG91bGQgcmVhZCAiU3VjY2Vzcy4iIDwvcD4KKzxwIGlk
PSJyZXN1bHQiPkZhaWx1cmU6IHRlc3Qgbm90IHJ1bi48L3A+Cis8cCBpZD0iZGV0YWlscyI+PC9w
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1w
bGUtbmVnLXF1ZXJ5LTAzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTAzLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4i
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDIu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLXN0eWxlc2hl
ZXQtbWVkaWEtMDIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtanMtc3R5bGVzaGVldC1tZWRpYS0wMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3
IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3R5bGVz
aGVldCBtZWRpYSBwcm9wZXJ0eSBlbnVtZXJhdGlvbi48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxw
IiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAv
PgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwt
Mi1TdHlsZS9zdHlsZXNoZWV0cy5odG1sIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1l
ZGlhPSJicmFpbGxlLCBtZWRpYSB3aXRoIGVycm9yLCBzY3JlZW4gYW5kIChjb2xvcikgYW5kIChn
cmlkOjApLCB0dHkgcmVzb2x1dGlvbiA+IDYwMHB4Ij4KKyNyZXN1bHQgeyBjb2xvcjogZ3JlZW47
IH0KKzwvc3R5bGU+CisKKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiPgorZnVuY3Rpb24g
dGVzdCgpIHsKKyAgICByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAg
ICByZS5pbm5lckhUTUwgPSAic3RhcnRlZCI7CisgICAgcmUuaW5uZXJIVE1MID0gZG9jdW1lbnQu
c3R5bGVTaGVldHNbMF0ubWVkaWEuaXRlbSgwKQorICAgICAgICAgICAgICAgICAgICArICIsICIg
KyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYS5pdGVtKDEpCisgICAgICAgICAgICAgICAg
ICAgICsgIiwgIiArIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlhLml0ZW0oMikKKyAgICAg
ICAgICAgICAgICAgICAgKyAiLCAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWEuaXRl
bSgzKSA7Cit9Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgor
PHA+IFRoZSB0ZXh0IGJlbG93IHNob3VsZCBiZSBncmVlbiBhbmQgY29udGFpbiAiYnJhaWxsZSwg
bWVkaWEsIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6IDApLCB0dHkiLiA8L3A+Cis8cCBp
ZD0icmVzdWx0Ij5GYWlsdXJlOiB0ZXN0IG5vdCBydW48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTA1LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRl
c2NyaXB0b3Itc3ludGF4LTA1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDUtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAg
IFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxv
Y2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IFdl
YkNvcmUvcGxhdGZvcm0vbWFjL1NjcmVlbk1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9TY3JlZW5NYWMubW0JKHJldmlzaW9uIDE0NTU1KQorKysgV2ViQ29yZS9wbGF0
Zm9ybS9tYWMvU2NyZWVuTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MCw2ICs1MCwyMiBAQCBp
bnQgc2NyZWVuRGVwdGgoV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIFtzY3JlZW4od2lkZ2V0
KSBkZXB0aF07CiB9CiAKK2ludCBzY3JlZW5EZXB0aFBlckNvbXBvbmVudChXaWRnZXQqIHdpZGdl
dCkKK3sKKyAgIHJldHVybiBOU0JpdHNQZXJTYW1wbGVGcm9tRGVwdGgoW3NjcmVlbih3aWRnZXQp
IGRlcHRoXSk7Cit9CisKK2Jvb2wgc2NyZWVuSXNNb25vY2hyb21lKFdpZGdldCogd2lkZ2V0KQor
eworICAgIE5TU2NyZWVuKiBzID0gc2NyZWVuKHdpZGdldCk7CisgICAgTlNEaWN0aW9uYXJ5KiBk
ZCA9IFtzIGRldmljZURlc2NyaXB0aW9uXTsKKyAgICBOU1N0cmluZyogY29sb3JTcGFjZU5hbWUg
PSBbZGQgb2JqZWN0Rm9yS2V5Ok5TRGV2aWNlQ29sb3JTcGFjZU5hbWVdOworICAgIHJldHVybiBj
b2xvclNwYWNlTmFtZSA9PSBOU0NhbGlicmF0ZWRXaGl0ZUNvbG9yU3BhY2UKKyAgICAgICAgfHwg
Y29sb3JTcGFjZU5hbWUgPT0gTlNDYWxpYnJhdGVkQmxhY2tDb2xvclNwYWNlCisgICAgICAgIHx8
IGNvbG9yU3BhY2VOYW1lID09IE5TRGV2aWNlV2hpdGVDb2xvclNwYWNlCisgICAgICAgIHx8IGNv
bG9yU3BhY2VOYW1lID09IE5TRGV2aWNlQmxhY2tDb2xvclNwYWNlOworfQorCiBJbnRSZWN0IHNj
cmVlblJlY3QoV2lkZ2V0KiB3aWRnZXQpCiB7CiAgICAgcmV0dXJuIGVuY2xvc2luZ0ludFJlY3Qo
ZmxpcEdsb2JhbFJlY3QoW3NjcmVlbih3aWRnZXQpIGZyYW1lXSkpOwpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9TY3JlZW4uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1NjcmVlbi5o
CShyZXZpc2lvbiAxNDU1NSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vU2NyZWVuLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDYgKzMyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIFdp
ZGdldDsKIAogICAgIGludCBzY3JlZW5EZXB0aChXaWRnZXQqKTsKKyAgICBpbnQgc2NyZWVuRGVw
dGhQZXJDb21wb25lbnQoV2lkZ2V0Kik7CisgICAgYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lk
Z2V0Kik7CiAgICAgSW50UmVjdCBzY3JlZW5SZWN0KFdpZGdldCopOwogICAgIEludFJlY3QgdXNh
YmxlU2NyZWVuUmVjdChXaWRnZXQqKTsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNf
Y3NzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19jc3MuY3BwCShy
ZXZpc2lvbiAxNDU1NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2Nzcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTUyNiw5ICs1MjYsMTAgQEAgYm9vbCBET01NZWRpYUxpc3Q6OmdldE93blBy
b3BlcnR5U2xvdChFeAogCiB2b2lkIERPTU1lZGlhTGlzdDo6cHV0KEV4ZWNTdGF0ZSogZXhlYywg
Y29uc3QgSWRlbnRpZmllciAmcHJvcGVydHlOYW1lLCBKU1ZhbHVlKiB2YWx1ZSwgaW50IGF0dHIp
CiB7CisgIERPTUV4Y2VwdGlvblRyYW5zbGF0b3IgZXhjZXB0aW9uKGV4ZWMpOwogICBNZWRpYUxp
c3QgJm1lZGlhTGlzdCA9ICptX2ltcGw7CiAgIGlmIChwcm9wZXJ0eU5hbWUgPT0gIm1lZGlhVGV4
dCIpCi0gICAgbWVkaWFMaXN0LnNldE1lZGlhVGV4dCh2YWx1ZS0+dG9TdHJpbmcoZXhlYykpOwor
ICAgIG1lZGlhTGlzdC5zZXRNZWRpYVRleHQodmFsdWUtPnRvU3RyaW5nKGV4ZWMpLCBleGNlcHRp
b24pOwogICBlbHNlCiAgICAgRE9NT2JqZWN0OjpwdXQoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1
ZSwgYXR0cik7CiB9CkBAIC01NDIsMTUgKzU0MywxNiBAQCBKU1ZhbHVlKiBLSlM6OkRPTU1lZGlh
TGlzdFByb3RvRnVuYzo6Y2FsCiB7CiAgIGlmICghdGhpc09iai0+aW5oZXJpdHMoJktKUzo6RE9N
TWVkaWFMaXN0OjppbmZvKSkKICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3Ip
OwotICBNZWRpYUxpc3QgJm1lZGlhTGlzdCA9ICpzdGF0aWNfY2FzdDxET01NZWRpYUxpc3QqPih0
aGlzT2JqKS0+aW1wbCgpOworICBET01FeGNlcHRpb25UcmFuc2xhdG9yIGV4Y2VwdGlvbihleGVj
KTsKKyAgTWVkaWFMaXN0JiBtZWRpYUxpc3QgPSAqc3RhdGljX2Nhc3Q8RE9NTWVkaWFMaXN0ICo+
KHRoaXNPYmopLT5pbXBsKCk7CiAgIHN3aXRjaCAoaWQpIHsKICAgICBjYXNlIERPTU1lZGlhTGlz
dDo6SXRlbToKICAgICAgIHJldHVybiBqc1N0cmluZ09yTnVsbChtZWRpYUxpc3QuaXRlbShhcmdz
WzBdLT50b0ludDMyKGV4ZWMpKSk7CiAgICAgY2FzZSBET01NZWRpYUxpc3Q6OkRlbGV0ZU1lZGl1
bToKLSAgICAgIG1lZGlhTGlzdC5kZWxldGVNZWRpdW0oYXJnc1swXS0+dG9TdHJpbmcoZXhlYykp
OworICAgICAgbWVkaWFMaXN0LmRlbGV0ZU1lZGl1bShhcmdzWzBdLT50b1N0cmluZyhleGVjKSwg
ZXhjZXB0aW9uKTsKICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIGNhc2UgRE9NTWVk
aWFMaXN0OjpBcHBlbmRNZWRpdW06Ci0gICAgICBtZWRpYUxpc3QuYXBwZW5kTWVkaXVtKGFyZ3Nb
MF0tPnRvU3RyaW5nKGV4ZWMpKTsKKyAgICAgIG1lZGlhTGlzdC5hcHBlbmRNZWRpdW0oYXJnc1sw
XS0+dG9TdHJpbmcoZXhlYyksIGV4Y2VwdGlvbik7CiAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKICAgICBkZWZhdWx0OgogICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL29iamMvRE9NQ1NTLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3Mvb2JqYy9ET01DU1MubW0JKHJldmlzaW9uIDE0NTU1KQorKysgV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUNTUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMzMzLDcgKzMzMyw5IEBAIHR5cGVkZWYg
RE9NV2luZG93IEFic3RyYWN0VmlldzsKIAogLSAodm9pZClzZXRNZWRpYVRleHQ6KE5TU3RyaW5n
ICopbWVkaWFUZXh0CiB7Ci0gICAgW3NlbGYgX21lZGlhTGlzdF0tPnNldE1lZGlhVGV4dChtZWRp
YVRleHQpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFtzZWxmIF9tZWRpYUxpc3Rd
LT5zZXRNZWRpYVRleHQobWVkaWFUZXh0LCBlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsK
IH0KIAogLSAodW5zaWduZWQpbGVuZ3RoCkBAIC0zNDgsMTIgKzM1MCwxNiBAQCB0eXBlZGVmIERP
TVdpbmRvdyBBYnN0cmFjdFZpZXc7CiAKIC0gKHZvaWQpZGVsZXRlTWVkaXVtOihOU1N0cmluZyAq
KW9sZE1lZGl1bQogewotICAgIFtzZWxmIF9tZWRpYUxpc3RdLT5kZWxldGVNZWRpdW0ob2xkTWVk
aXVtKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBbc2VsZiBfbWVkaWFMaXN0XS0+
ZGVsZXRlTWVkaXVtKG9sZE1lZGl1bSwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9
CiAKIC0gKHZvaWQpYXBwZW5kTWVkaXVtOihOU1N0cmluZyAqKW5ld01lZGl1bQogewotICAgIFtz
ZWxmIF9tZWRpYUxpc3RdLT5hcHBlbmRNZWRpdW0obmV3TWVkaXVtKTsKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBbc2VsZiBfbWVkaWFMaXN0XS0+YXBwZW5kTWVkaXVtKG5ld01lZGl1
bSwgZWMpOworICAgIHJhaXNlT25ET01FcnJvcihlYyk7CiB9CiAKIEBlbmQKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MTGlua0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MTGlua0VsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDU1NSkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
TGlua0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCiAjaW5jbHVkZSAiY3NzaGVs
cGVyLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTE2NSw3ICsxNjYsMTEgQEAgdm9pZCBIVE1MTGlua0VsZW1lbnQ6OnByb2Nl
c3MoKQogICAgICAgICAvLyBubyBuZWVkIHRvIGxvYWQgc3R5bGUgc2hlZXRzIHdoaWNoIGFyZW4n
dCBmb3IgdGhlIHNjcmVlbiBvdXRwdXQKICAgICAgICAgLy8gIyMjIHRoZXJlIG1heSBiZSBpbiBz
b21lIHNpdHVhdGlvbnMgZS5nLiBmb3IgYW4gZWRpdG9yIG9yIHNjcmlwdCB0byBtYW5pcHVsYXRl
CiAgICAgICAgIC8vIGFsc28sIGRvbid0IGxvYWQgc3R5bGUgc2hlZXRzIGZvciBzdGFuZGFsb25l
IGRvY3VtZW50cwotICAgICAgICBpZiAobV9tZWRpYS5pc051bGwoKSB8fCBtX21lZGlhLmNvbnRh
aW5zKCJzY3JlZW4iKSB8fCBtX21lZGlhLmNvbnRhaW5zKCJhbGwiKSB8fCBtX21lZGlhLmNvbnRh
aW5zKCJwcmludCIpKSB7CisgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgYWxsRXZhbCh0cnVl
KTsKKyAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4iLCB0cnVl
KTsKKyAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWwoInByaW50IiwgdHJ1ZSk7
CisgICAgICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1lZGlhID0gbmV3IE1lZGlhTGlzdCgoQ1NTU3R5
bGVTaGVldCopMCwgbV9tZWRpYSwgdHJ1ZSk7CisgICAgICAgIGlmIChhbGxFdmFsLmV2YWwobWVk
aWEuZ2V0KCkpIHx8IHNjcmVlbkV2YWwuZXZhbChtZWRpYS5nZXQoKSkgfHwgcHJpbnRFdmFsLmV2
YWwobWVkaWEuZ2V0KCkpKSB7CiAKICAgICAgICAgICAgIC8vIEFkZCBvdXJzZWx2ZXMgYXMgYSBw
ZW5kaW5nIHNoZWV0LCBidXQgb25seSBpZiB3ZSBhcmVuJ3QgYW4gYWx0ZXJuYXRlIAogICAgICAg
ICAgICAgLy8gc3R5bGVzaGVldC4gIEFsdGVybmF0ZSBzdHlsZXNoZWV0cyBkb24ndCBob2xkIHVw
IHJlbmRlciB0cmVlIGNvbnN0cnVjdGlvbi4KQEAgLTIwOCw4ICsyMTMsOCBAQCB2b2lkIEhUTUxM
aW5rRWxlbWVudDo6c2V0U3R5bGVTaGVldChjb25zCiAgICAgbV9zaGVldCA9IG5ldyBDU1NTdHls
ZVNoZWV0KHRoaXMsIHVybCk7CiAgICAgbV9zaGVldC0+cGFyc2VTdHJpbmcoc2hlZXRTdHIsICFk
b2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSk7CiAKLSAgICBNZWRpYUxpc3QqIG1lZGlhID0gbmV3
IE1lZGlhTGlzdChtX3NoZWV0LmdldCgpLCBtX21lZGlhKTsKLSAgICBtX3NoZWV0LT5zZXRNZWRp
YShtZWRpYSk7CisgICAgUmVmUHRyPE1lZGlhTGlzdD4gbWVkaWEgPSBuZXcgTWVkaWFMaXN0KChD
U1NTdHlsZVNoZWV0KikwLCBtX21lZGlhLCB0cnVlKTsKKyAgICBtX3NoZWV0LT5zZXRNZWRpYSht
ZWRpYS5nZXQoKSk7CiAKICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKIApJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1M
U3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gMTQ1NTUpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFN0
eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIk1lZGlhTGlz
dC5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3IuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC04MywxNSArODQsMTggQEAgdm9pZCBIVE1MU3R5bGVFbGVtZW50OjpjaGlsZHJl
bkNoYW5nZWQoKQogICAgIH0KIAogICAgIG1fbG9hZGluZyA9IGZhbHNlOwotICAgIGlmICgobV90
eXBlLmlzRW1wdHkoKSB8fCBtX3R5cGUgPT0gInRleHQvY3NzIikgLy8gVHlwZSBtdXN0IGJlIGVt
cHR5IG9yIENTUwotICAgICAgICAgJiYgKG1fbWVkaWEuaXNOdWxsKCkgfHwgbV9tZWRpYS5jb250
YWlucygic2NyZWVuIikgfHwgbV9tZWRpYS5jb250YWlucygiYWxsIikgfHwgbV9tZWRpYS5jb250
YWlucygicHJpbnQiKSkpIHsKLSAgICAgICAgZG9jdW1lbnQoKS0+YWRkUGVuZGluZ1NoZWV0KCk7
Ci0gICAgICAgIG1fbG9hZGluZyA9IHRydWU7Ci0gICAgICAgIG1fc2hlZXQgPSBuZXcgQ1NTU3R5
bGVTaGVldCh0aGlzKTsKLSAgICAgICAgbV9zaGVldC0+cGFyc2VTdHJpbmcodGV4dCwgIWRvY3Vt
ZW50KCktPmluQ29tcGF0TW9kZSgpKTsKLSAgICAgICAgTWVkaWFMaXN0KiBtZWRpYSA9IG5ldyBN
ZWRpYUxpc3QobV9zaGVldC5nZXQoKSwgbV9tZWRpYSk7Ci0gICAgICAgIG1fc2hlZXQtPnNldE1l
ZGlhKG1lZGlhKTsKLSAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgaWYgKG1fdHlwZS5p
c0VtcHR5KCkgfHwgbV90eXBlID09ICJ0ZXh0L2NzcyIpIHsgLy8gVHlwZSBtdXN0IGJlIGVtcHR5
IG9yIENTUworICAgICAgICBSZWZQdHI8TWVkaWFMaXN0PiBtZWRpYSA9IG5ldyBNZWRpYUxpc3Qo
KENTU1N0eWxlU2hlZXQqKTAsIG1fbWVkaWEsIHRydWUpOworICAgICAgICBNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIsIHRydWUpOworICAgICAgICBNZWRpYVF1ZXJ5RXZh
bHVhdG9yIHByaW50RXZhbCgicHJpbnQiLCB0cnVlKTsKKyAgICAgICAgaWYgKHNjcmVlbkV2YWwu
ZXZhbChtZWRpYS5nZXQoKSkgfHwgcHJpbnRFdmFsLmV2YWwobWVkaWEuZ2V0KCkpKSB7CisgICAg
ICAgICAgICBkb2N1bWVudCgpLT5hZGRQZW5kaW5nU2hlZXQoKTsKKyAgICAgICAgICAgIG1fbG9h
ZGluZyA9IHRydWU7CisgICAgICAgICAgICBtX3NoZWV0ID0gbmV3IENTU1N0eWxlU2hlZXQodGhp
cyk7CisgICAgICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyh0ZXh0LCAhZG9jdW1lbnQoKS0+
aW5Db21wYXRNb2RlKCkpOworICAgICAgICAgICAgbV9zaGVldC0+c2V0TWVkaWEobWVkaWEuZ2V0
KCkpOworICAgICAgICAgICAgbV9sb2FkaW5nID0gZmFsc2U7CisgICAgICAgIH0KICAgICB9CiAK
ICAgICBpZiAoIWlzTG9hZGluZygpICYmIG1fc2hlZXQpCkluZGV4OiBXZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50
YXRpb24uY3BwCShyZXZpc2lvbiAxNDU1NSkKKysrIFdlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDcgKzE2Miw3IEBAIFBhc3NSZWZQdHI8Q1NT
U3R5bGVTaGVldD4gRE9NSW1wbGVtZW50YXQKICAgICBlYyA9IDA7CiAgICAgQ1NTU3R5bGVTaGVl
dCogY29uc3QgbnVsbFNoZWV0ID0gMDsKICAgICBSZWZQdHI8Q1NTU3R5bGVTaGVldD4gc2hlZXQg
PSBuZXcgQ1NTU3R5bGVTaGVldChudWxsU2hlZXQpOwotICAgIHNoZWV0LT5zZXRNZWRpYShuZXcg
TWVkaWFMaXN0KHNoZWV0LmdldCgpLCBtZWRpYSkpOworICAgIHNoZWV0LT5zZXRNZWRpYShuZXcg
TWVkaWFMaXN0KHNoZWV0LmdldCgpLCBtZWRpYSwgdHJ1ZSkpOwogICAgIHJldHVybiBzaGVldC5y
ZWxlYXNlKCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAxNDU1NSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNTAsNiArMTUwLDEzIEBACiAJCTFBRTJB
RUM4MEExRDI5N0IwMEI0MkIyNSAvKiBKU0hUTUxRdW90ZUVsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTJBRUM0MEExRDI5N0IwMEI0MkIy
NSAvKiBKU0hUTUxRdW90ZUVsZW1lbnQuaCAqLzsgfTsKIAkJMUFFMkFFRTYwQTFEMkE3NTAwQjQy
QjI1IC8qIEpTSFRNTEJsb2NrcXVvdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBRTJBRUU0MEExRDJBNzUwMEI0MkIyNSAvKiBKU0hU
TUxCbG9ja3F1b3RlRWxlbWVudC5jcHAgKi87IH07CiAJCTFBRTJBRUU3MEExRDJBNzUwMEI0MkIy
NSAvKiBKU0hUTUxCbG9ja3F1b3RlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFMkFFRTUwQTFEMkE3NTAwQjQyQjI1IC8qIEpTSFRNTEJs
b2NrcXVvdGVFbGVtZW50LmggKi87IH07CisJCTQ3MDFCODM2MEEyNDI3RkMwMDM0NTUzMyAvKiBN
ZWRpYUZlYXR1cmVOYW1lcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA0NzAxQjgyRjBBMjQyN0ZDMDAzNDU1MzMgLyogTWVkaWFGZWF0dXJlTmFtZXMu
Y3BwICovOyB9OworCQk0NzAxQjgzNzBBMjQyN0ZDMDAzNDU1MzMgLyogTWVkaWFGZWF0dXJlTmFt
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3MDFC
ODMwMEEyNDI3RkMwMDM0NTUzMyAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oICovOyB9OworCQk0NzAx
QjgzODBBMjQyN0ZDMDAzNDU1MzMgLyogTWVkaWFRdWVyeS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NzAxQjgzMTBBMjQyN0ZDMDAzNDU1MzMgLyog
TWVkaWFRdWVyeS5jcHAgKi87IH07CisJCTQ3MDFCODM5MEEyNDI3RkMwMDM0NTUzMyAvKiBNZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ3MDFCODMyMEEyNDI3RkMwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9y
LmNwcCAqLzsgfTsKKwkJNDcwMUI4M0EwQTI0MjdGQzAwMzQ1NTMzIC8qIE1lZGlhUXVlcnlFdmFs
dWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3
MDFCODMzMEEyNDI3RkMwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmggKi87IH07CisJ
CTQ3MDFCODNCMEEyNDI3RkMwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3MDFCODM0MEEyNDI3RkMwMDM0
NTUzMyAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCAqLzsgfTsKKwkJNDcwMUI4M0MwQTI0MjdGQzAwMzQ1
NTMzIC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ3MDFCODM1MEEyNDI3RkMwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5RXhwLmgg
Ki87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVG
NjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmggKi87IH07CiAJCTU1MEEwQkNEMDg1RjYwNEQwMDczNTNENiAvKiBIVE1MTmFtZXMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBC
Q0IwODVGNjA0RDAwNzM1M0Q2IC8qIEhUTUxOYW1lcy5jcHAgKi87IH07CkBAIC0xNjkwLDYgKzE2
OTcsMTMgQEAKIAkJMUFFMkFFRTUwQTFEMkE3NTAwQjQyQjI1IC8qIEpTSFRNTEJsb2NrcXVvdGVF
bGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxCbG9ja3F1
b3RlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkyRDkwNjYwQjA2NjVE
OTM3MDA2QjZGMUEgLyogQ2xpcGJvYXJkTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENsaXBib2FyZE1hYy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJMkQ5MDY2MEMwNjY1RDkz
NzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENsaXBib2FyZE1hYy5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisJCTQ3MDFCODJG
MEEyNDI3RkMwMDM0NTUzMyAvKiBNZWRpYUZlYXR1cmVOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFGZWF0dXJlTmFtZXMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk0NzAxQjgzMDBBMjQyN0ZDMDAzNDU1MzMgLyogTWVkaWFGZWF0
dXJlTmFtZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhRmVhdHVy
ZU5hbWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ3MDFCODMxMEEyNDI3RkMw
MDM0NTUzMyAvKiBNZWRpYVF1ZXJ5LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVF1ZXJ5LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDcw
MUI4MzIwQTI0MjdGQzAwMzQ1NTMzIC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUXVlcnlFdmFsdWF0b3IuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NzAxQjgzMzBBMjQyN0ZDMDAzNDU1MzMgLyog
TWVkaWFRdWVyeUV2YWx1YXRvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
TWVkaWFRdWVyeUV2YWx1YXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NzAx
QjgzNDBBMjQyN0ZDMDAzNDU1MzMgLyogTWVkaWFRdWVyeUV4cC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFRdWVyeUV4cC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ3MDFCODM1MEEyNDI3RkMwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5RXhw
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVF1ZXJ5RXhwLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ3NThDNDQzMDhDNUYyMTcwMDlCQUYwNSAvKiBL
Q2FudmFzUGF0aC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEtDYW52YXNQYXRoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFi
V2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CiAJCTUxNTBDMkExMDcwMjYyOTAwMEFGNjQyQyAv
KiBXZWJEYXNoYm9hcmRSZWdpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2ViRGFzaGJvYXJkUmVnaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1MTUwQzJBNTA3MDI2Mjk4
MDBBRjY0MkMgLyogV2ViRGFzaGJvYXJkUmVnaW9uLm0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMub2JqYzsgcGF0aCA9IFdlYkRhc2hib2FyZFJlZ2lvbi5tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKQEAgLTQ5
OTEsNiArNTAwNSwxMyBAQAogCQkJCTkzQ0E0QzlEMDlERjkzRkEwMERGODY3NyAvKiBtYWtldmFs
dWVzICovLAogCQkJCUE4RUE4MDAxMEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuY3BwICov
LAogCQkJCUE4RUE4MDA2MEExOTUxNkUwMEE4RUY1RiAvKiBNZWRpYUxpc3QuaCAqLywKKwkJCQk0
NzAxQjgyRjBBMjQyN0ZDMDAzNDU1MzMgLyogTWVkaWFGZWF0dXJlTmFtZXMuY3BwICovLAorCQkJ
CTQ3MDFCODMwMEEyNDI3RkMwMDM0NTUzMyAvKiBNZWRpYUZlYXR1cmVOYW1lcy5oICovLAorCQkJ
CTQ3MDFCODMxMEEyNDI3RkMwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5LmNwcCAqLywKKwkJCQk0NzAx
QjgzMjBBMjQyN0ZDMDAzNDU1MzMgLyogTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAgKi8sCisJCQkJ
NDcwMUI4MzMwQTI0MjdGQzAwMzQ1NTMzIC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCAqLywKKwkJ
CQk0NzAxQjgzNDBBMjQyN0ZDMDAzNDU1MzMgLyogTWVkaWFRdWVyeUV4cC5jcHAgKi8sCisJCQkJ
NDcwMUI4MzUwQTI0MjdGQzAwMzQ1NTMzIC8qIE1lZGlhUXVlcnlFeHAuaCAqLywKIAkJCQlBODBF
NkNEMTBBMTk4OUNBMDA3RkI4QzUgLyogUGFpci5oICovLAogCQkJCTkzQ0E0QzlGMDlERjkzRkEw
MERGODY3NyAvKiBxdWlya3MuY3NzICovLAogCQkJCUE4MEU3OTk2MEExOUJEMjEwMDdGQjhDNSAv
KiBSZWN0LmlkbCAqLywKQEAgLTYwNDIsNiArNjA2Myw5IEBACiAJCQkJMUFFMkFFQzgwQTFEMjk3
QjAwQjQyQjI1IC8qIEpTSFRNTFF1b3RlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUFF
MkFFRTcwQTFEMkE3NTAwQjQyQjI1IC8qIEpTSFRNTEJsb2NrcXVvdGVFbGVtZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQlERDdDREYyNTBBMjNDRjk4MDAwNjk5MjggLyogQ1NTVW5rbm93blJ1bGUu
aCBpbiBIZWFkZXJzICovLAorCQkJCTQ3MDFCODM3MEEyNDI3RkMwMDM0NTUzMyAvKiBNZWRpYUZl
YXR1cmVOYW1lcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDcwMUI4M0EwQTI0MjdGQzAwMzQ1NTMz
IC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ3MDFCODNDMEEy
NDI3RkMwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5RXhwLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJ
CQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTY4NTYs
NiArNjg4MCwxMCBAQAogCQkJCTFBRTJBRTVCMEExRDI2RjIwMEI0MkIyNSAvKiBKU0hUTUxNZW51
RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUUyQUVDNzBBMUQyOTdCMDBCNDJCMjUg
LyogSlNIVE1MUXVvdGVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBRTJBRUU2MEEx
RDJBNzUwMEI0MkIyNSAvKiBKU0hUTUxCbG9ja3F1b3RlRWxlbWVudC5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQk0NzAxQjgzNjBBMjQyN0ZDMDAzNDU1MzMgLyogTWVkaWFGZWF0dXJlTmFtZXMuY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJNDcwMUI4MzgwQTI0MjdGQzAwMzQ1NTMzIC8qIE1lZGlhUXVl
cnkuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDcwMUI4MzkwQTI0MjdGQzAwMzQ1NTMzIC8qIE1l
ZGlhUXVlcnlFdmFsdWF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDcwMUI4M0IwQTI0MjdG
QzAwMzQ1NTMzIC8qIE1lZGlhUXVlcnlFeHAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJD
b3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24g
MTQ1NTUpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEz
MyBAQAorMjAwNi0wNS0yNCAgS2ltbW8gS2lubnVuZW4gIDxraW1tby50Lmtpbm51bmVuQG5va2lh
LmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgIENTUzMg
TWVkaWEgUXVlcmllcyBpbXBsZW1lbnRhdGlvbi4KKyAgICA8aHR0cDovL2J1Z3ppbGxhLm9wZW5k
YXJ3aW4ub3JnL3Nob3dfYnVnLmNnaT9pZD00MTI3PgorCisgICAgICAgICogV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19jc3MuY3Bw
OgorICAgICAgICAoS0pTOjpET01NZWRpYUxpc3Q6OnB1dCk6CisgICAgICAgIChLSlM6OktKUzo6
RE9NTWVkaWFMaXN0UHJvdG9GdW5jOjpjYWxsQXNGdW5jdGlvbik6CisgICAgICAgICogYmluZGlu
Z3Mvb2JqYy9ET01DU1MubW06CisgICAgICAgICgtW0RPTU1lZGlhTGlzdCBzZXRNZWRpYVRleHQ6
XSk6CisgICAgICAgICgtW0RPTU1lZGlhTGlzdCBkZWxldGVNZWRpdW06XSk6CisgICAgICAgICgt
W0RPTU1lZGlhTGlzdCBhcHBlbmRNZWRpdW06XSk6CisgICAgICAgICogY3NzL0NTU0dyYW1tYXIu
eToKKyAgICAgICAgKiBjc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhRmVhdHVyZU5hbWVzOjppbml0KToKKyAgICAgICAgKiBjc3MvTWVkaWFG
ZWF0dXJlTmFtZXMuaDogQWRkZWQuCisgICAgICAgICogY3NzL01lZGlhTGlzdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUxpc3Q6Ok1lZGlhTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZWRpYUxpc3Q6On5NZWRpYUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VNZWRpYURlc2Ny
aXB0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFMaXN0OjpkZWxldGVNZWRpdW0pOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFMaXN0OjptZWRpYVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFMaXN0OjpzZXRNZWRpYVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFMaXN0Ojpp
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTGlzdDo6YXBwZW5kTWVkaXVtKToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhTGlzdDo6YXBwZW5kTWVkaWFRdWVyeSk6CisgICAgICAgICogY3Nz
L01lZGlhTGlzdC5oOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFMaXN0OjpNZWRpYUxpc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFMaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFMaXN0OjptZWRpYVF1ZXJpZXMpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5LmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpNZWRpYVF1ZXJ5KToKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6On5NZWRpYVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUXVlcnk6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6
Y3NzVGV4dCk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnkuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVF1ZXJ5OjopOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6cmVz
dHJpY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjpleHByZXNzaW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5OjptZWRpYVR5cGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFRdWVyeTo6YXBwZW5kKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6KToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUXVlcnlFdmFsdWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV2YWx1YXRv
cjo6fk1lZGlhUXVlcnlFdmFsdWF0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV2
YWx1YXRvcjo6bWVkaWFUeXBlTWF0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6YXBwbHlSZXN0cmlj
dG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFdmFsdWF0b3I6OmV2YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6cGFyc2VBc3BlY3RSYXRpbyk6CisgICAgICAgIChXZWJDb3JlOjpjbXB2
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpudW1iZXJWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
Ojpjb2xvck1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6bW9ub2Nocm9tZU1l
ZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlX2FzcGVjdF9yYXRpb01l
ZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6Z3JpZE1lZGlhRmVhdHVyZUV2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6ZGV2aWNlX2hlaWdodE1lZGlhRmVhdHVyZUV2YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGV2aWNlX3dpZHRoTWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjpoZWlnaHRNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6OndpZHRo
TWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjptaW5fY29sb3JNZWRpYUZlYXR1
cmVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Om1heF9jb2xvck1lZGlhRmVhdHVyZUV2YWwpOgor
ICAgICAgICAoV2ViQ29yZTo6bWluX21vbm9jaHJvbWVNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1heF9tb25vY2hyb21lTWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChX
ZWJDb3JlOjptaW5fZGV2aWNlX2FzcGVjdF9yYXRpb01lZGlhRmVhdHVyZUV2YWwpOgorICAgICAg
ICAoV2ViQ29yZTo6bWF4X2RldmljZV9hc3BlY3RfcmF0aW9NZWRpYUZlYXR1cmVFdmFsKToKKyAg
ICAgICAgKFdlYkNvcmU6Om1pbl9oZWlnaHRNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAgICAgKFdl
YkNvcmU6Om1heF9oZWlnaHRNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Om1p
bl93aWR0aE1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6bWF4X3dpZHRoTWVk
aWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjptaW5fZGV2aWNlX2hlaWdodE1lZGlh
RmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6bWF4X2RldmljZV9oZWlnaHRNZWRpYUZl
YXR1cmVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Om1pbl9kZXZpY2Vfd2lkdGhNZWRpYUZlYXR1
cmVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Om1heF9kZXZpY2Vfd2lkdGhNZWRpYUZlYXR1cmVF
dmFsKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZUZ1bmN0aW9uTWFwKToKKyAgICAgICAgKiBj
c3MvTWVkaWFRdWVyeUV2YWx1YXRvci5oOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvTWVkaWFRdWVy
eUV4cC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV4cDo6TWVkaWFR
dWVyeUV4cCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXhwOjp+TWVkaWFRdWVyeUV4
cCk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnlFeHAuaDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVF1ZXJ5RXhwOjptZWRpYUZlYXR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFRdWVyeUV4cDo6dmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV4cDo6b3Bl
cmF0b3I9PSk6CisgICAgICAgICogY3NzL1N0eWxlU2hlZXQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVTaGVldDo6c2V0TWVkaWEpOgorICAgICAgICAqIGNzcy9jc3NwYXJzZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpDU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTUGFyc2VyOjp+Q1NTUGFyc2VyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6
c2V0dXBQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVl
cnkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVGbG9hdGluZ01lZGlhUXVl
cnlFeHApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpzaW5rRmxvYXRpbmdNZWRpYVF1
ZXJ5RXhwKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRlRmxvYXRpbmdNZWRp
YVF1ZXJ5RXhwTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnNpbmtGbG9hdGlu
Z01lZGlhUXVlcnlFeHBMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6Y3JlYXRl
RmxvYXRpbmdNZWRpYVF1ZXJ5KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6c2lua0Zs
b2F0aW5nTWVkaWFRdWVyeSk6CisgICAgICAgICogY3NzL2Nzc3BhcnNlci5oOgorICAgICAgICAq
IGNzcy9jc3NzdHlsZXNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2Vs
ZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxl
Y3Rvcjo6aW5pdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjp+Q1NTU3R5
bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpsb2FkRGVm
YXVsdFN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoVUFB
bmRQcmludFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxl
Rm9yRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpkZWZhdWx0
U3R5bGVGb3JSb290KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmFkanVz
dEZvbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2FjaGVCb3JkZXJB
bmRCYWNrZ3JvdW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxl
UnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1J1bGVTZXQ6OmFkZFJ1bGVz
RnJvbVNoZWV0KToKKyAgICAgICAgKiBjc3MvY3Nzc3R5bGVzZWxlY3Rvci5oOgorICAgICAgICAq
IGNzcy9tYWtldG9rZW5pemVyOgorICAgICAgICAqIGNzcy90b2tlbml6ZXIuZmxleDoKKyAgICAg
ICAgKiBodG1sL0hUTUxMaW5rRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTGlu
a0VsZW1lbnQ6OnByb2Nlc3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpz
ZXRTdHlsZVNoZWV0KToKKyAgICAgICAgKiBodG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFN0eWxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAg
ICAgKiBrc3ZnMi9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAoV2ViQ29yZTo6U1ZH
U3R5bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIGtzdmcyL3N2Zy9TVkdE
T01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgKFdlYkNvcmU6OlNWR0RPTUltcGxlbWVudGF0
aW9uOjpjcmVhdGVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lOjpGcmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vU2NyZWVu
Lmg6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NjcmVlbk1hYy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklz
TW9ub2Nocm9tZSk6CisKIDIwMDYtMDUtMjMgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBw
bGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMuCkBAIC0xMTIsOCArMjQwLDYgQEAK
IAogICAgICAgICAqIGJpbmRpbmdzL2pzL2tqc19odG1sLmg6IHNpbXBsZSBzdHlsZSBjbGVhbnVw
LgogCi09PT0gV2ViQ29yZS01MjEuMTAgPT09Ci0KIDIwMDYtMDUtMjIgIEpvaG4gU3VsbGl2YW4g
IDxzdWxsaXZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxz
c29uLgpJbmRleDogV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9NZWRpYUxpc3QuY3BwCShyZXZpc2lvbiAxNDU1NSkKKysrIFdlYkNvcmUvY3NzL01l
ZGlhTGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1LDI5ICsyNSw3OSBAQAogI2luY2x1ZGUg
IkNTU1J1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVkZSAiRGVwcmVj
YXRlZFN0cmluZ0xpc3QuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAi
TWVkaWFRdWVyeS5oIgorI2luY2x1ZGUgImNzc3BhcnNlci5oIgorCiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAotTWVkaWFMaXN0OjpNZWRpYUxpc3QoQ1NTU3R5bGVTaGVldCogcGFyZW50U2hlZXQp
CisvKiBNZWRpYUxpc3QgaXMgdXNlZCB0byBzdG9yZSAzIHR5cGVzIG9mIG1lZGlhIHJlbGF0ZWQg
ZW50aXRpZXMgd2hpY2ggbWVhbiB0aGUgc2FtZToKKyAqIE1lZGlhIFF1ZXJpZXMsIE1lZGlhIFR5
cGVzIGFuZCBNZWRpYSBEZXNjcmlwdG9ycy4KKyAqIEN1cnJlbnRseSBNZWRpYUxpc3QgYWx3YXlz
IHRyaWVzIHRvIHBhcnNlIG1lZGlhIHF1ZXJpZXMgYW5kIGlmIHBhcnNpbmcgZmFpbHMsCisgKiB0
cmllcyB0byBmYWxsYmFjayB0byBNZWRpYSBEZXNjcmlwdG9ycyBpZiBtX2ZhbGxiYWNrIGZsYWcg
aXMgc2V0LgorICogU2xpZ2h0IHByb2JsZW0gd2l0aCBzeW50YXggZXJyb3IgaGFuZGxpbmc6Cisg
KiBDU1MgMi4xIFNwZWMgKGh0dHA6Ly93d3cudzMub3JnL1RSL0NTUzIxL21lZGlhLmh0bWwpCisg
KiBzcGVjaWZpZXMgdGhhdCBmYWlsaW5nIG1lZGlhIHR5cGUgcGFyc2luZyBpcyBhIHN5bnRheCBl
cnJvcgorICogQ1NTIDMgTWVkaWEgUXVlcmllcyBTcGVjIChodHRwOi8vd3d3LnczLm9yZy9UUi9j
c3MzLW1lZGlhcXVlcmllcy8pCisgKiBzcGVjaWZpZXMgdGhhdCBmYWlsaW5nIG1lZGlhIHF1ZXJ5
IGlzIGEgc3ludGF4IGVycm9yCisgKiBIVE1MIDQuMDEgc3BlYyAoaHR0cDovL3d3dy53My5vcmcv
VFIvUkVDLWh0bWw0MC9wcmVzZW50L3N0eWxlcy5odG1sI2FkZWYtbWVkaWEpCisgKiBzcGVjaWZp
ZXMgdGhhdCBNZWRpYSBEZXNjcmlwdG9ycyBzaG91bGQgYmUgcGFyc2VkIHdpdGggZm9yd2FyZC1j
b21wYXRpYmxlIHN5bnRheAorICogRE9NIExldmVsIDIgU3R5bGUgU2hlZXQgc3BlYyAoaHR0cDov
L3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTItU3R5bGUvKQorICogdGFsa3MgYWJvdXQgTWVkaWFM
aXN0Lm1lZGlhVGV4dCBhbmQgcmVmZXJzCisgKiAgIC0gIHRvIE1lZGlhIERlc2NyaXB0b3JzIG9m
IEhUTUwgNC4wIGluIGNvbnRleHQgb2YgU3R5bGVTaGVldAorICogICAtICB0byBNZWRpYSBUeXBl
cyBvZiBDU1MgMi4wIGluIGNvbnRleHQgb2YgQ1NTTWVkaWFSdWxlIGFuZCBDU1NJbXBvcnRSdWxl
CisgKgorICogVGhlc2UgZmFjdHMgY3JlYXRlIHNpdHVhdGlvbiB3aGVyZSBzYW1lIChpbGxlZ2Fs
KSBtZWRpYSBzcGVjaWZpY2F0aW9uIG1heSByZXN1bHQgaW4KKyAqIGRpZmZlcmVudCBwYXJzZXMg
ZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQgaXMgbWVkaWEgYXR0ciBvZiBzdHlsZSBlbGVtZW50IG9y
IHBhcnQgb2YKKyAqIGNzcyBAbWVkaWEgcnVsZS4KKyAqIDxzdHlsZSBtZWRpYT0ic2NyZWVuIGFu
ZCByZXNvbHV0aW9uID4gNDBkcGkiPiAuLjwvc3R5bGU+IHdpbGwgYmUgZW5hYmxlZCBvbiBzY3Jl
ZW4gZGV2aWNlcyB3aGVyZSBhcworICogQG1lZGlhIHNjcmVlbiBhbmQgcmVzb2x1dGlvbiA+IDQw
ZHBpIHsuLn0gd2lsbCBub3QuCisgKiBUaGlzIGdldHMgbW9yZSBjb3VudGVyLWludHVpdGl2ZSBp
biBKYXZhU2NyaXB0OgorICogZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWEubWVkaWFUZXh0
ID0gInNjcmVlbiBhbmQgcmVzb2x1dGlvbiA+IDQwZHBpIiB3aWxsIGJlIG9rIGFuZAorICogZW5h
YmxlZCwgd2hpbGUKKyAqIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzBdLm1lZGlh
Lm1lZGlhVGV4dCA9ICJzY3JlZW4gYW5kIHJlc29sdXRpb24gPiA0MGRwaSIgd2lsbAorICogdGhy
b3cgU1lOVEFYX0VSUiBleGNlcHRpb24uCisgKi8KKworTWVkaWFMaXN0OjpNZWRpYUxpc3QoQ1NT
U3R5bGVTaGVldCogcGFyZW50U2hlZXQsIGJvb2wgZmFsbGJhY2tUb0Rlc2NyaXB0b3IpCiAgICAg
OiBTdHlsZUJhc2UocGFyZW50U2hlZXQpCisgICAgLCBtX2ZhbGxiYWNrKGZhbGxiYWNrVG9EZXNj
cmlwdG9yKQogewogfQogCi1NZWRpYUxpc3Q6Ok1lZGlhTGlzdChDU1NTdHlsZVNoZWV0KiBwYXJl
bnRTaGVldCwgY29uc3QgU3RyaW5nJiBtZWRpYSkKK01lZGlhTGlzdDo6TWVkaWFMaXN0KENTU1N0
eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBjb25zdCBTdHJpbmcmIG1lZGlhLCBib29sIGZhbGxiYWNr
VG9EZXNjcmlwdG9yKQogICAgIDogU3R5bGVCYXNlKHBhcmVudFNoZWV0KQorICAgICwgbV9mYWxs
YmFjayhmYWxsYmFja1RvRGVzY3JpcHRvcikKIHsKLSAgICBzZXRNZWRpYVRleHQobWVkaWEpOwor
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIHNldE1lZGlhVGV4dChtZWRpYSwgZWMpOwor
ICAgIC8vIEZJWE1FOiBwYXJzaW5nIGNhbiBmYWlsLiBUaGUgcHJvYmxlbSB3aXRoIGZhaWxpbmcg
Y29uc3RydWN0b3IgaXMgdGhhdAorICAgIC8vIHdlIHdvdWxkIG5lZWQgYWRkaXRpb25hbCBmbGFn
IHNheWluZyBNZWRpYUxpc3QgaXMgbm90IHZhbGlkCisgICAgLy8gUGFyc2UgY2FuIGZhaWwgb25s
eSB3aGVuIGZhbGxiYWNrVG9EZXNjcmlwdG9yID09IGZhbHNlLCBpLmUgd2hlbiBIVE1MNCBtZWRp
YSBkZXNjcmlwdG9yCisgICAgLy8gZm9yd2FyZC1jb21wYXRpYmxlIHN5bnRheCBpcyBub3QgaW4g
dXNlLiAKKyAgICAvLyBET01JbXBsZW1lbnRhdGlvbkNTUyBzZWVtcyB0byBtYW5kYXRlIHRoYXQg
bWVkaWEgZGVzY3JpcHRvcnMgYXJlIHVzZWQKKyAgICAvLyBmb3IgYm90aCBodG1sIGFuZCBzdmcs
IGV2ZW4gdGhvdWdoIHN2ZzpzdHlsZSBkb2Vzbid0IHVzZSBtZWRpYSBkZXNjcmlwdG9ycworICAg
IC8vIEN1cnJlbnRseSB0aGUgb25seSBwbGFjZXMgd2hlcmUgcGFyc2luZyBjYW4gZmFpbCBhcmUK
KyAgICAvLyBjcmVhdGluZyA8c3ZnOnN0eWxlPiwgY3JlYXRpbmcgY3NzIG1lZGlhIC8gaW1wb3J0
IHJ1bGVzIGZyb20ganMKKyAgICBpZiAoZWMpCisgICAgICAgIHNldE1lZGlhVGV4dCgiaW52YWxp
ZCIsIGVjKTsKIH0KIAotTWVkaWFMaXN0OjpNZWRpYUxpc3QoQ1NTUnVsZSogcGFyZW50UnVsZSwg
Y29uc3QgU3RyaW5nJiBtZWRpYSkKK01lZGlhTGlzdDo6TWVkaWFMaXN0KENTU1J1bGUqIHBhcmVu
dFJ1bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEsIGJvb2wgZmFsbGJhY2tUb0Rlc2NyaXB0b3IpCiAg
ICAgOiBTdHlsZUJhc2UocGFyZW50UnVsZSkKKyAgICAsIG1fZmFsbGJhY2soZmFsbGJhY2tUb0Rl
c2NyaXB0b3IpCiB7Ci0gICAgc2V0TWVkaWFUZXh0KG1lZGlhKTsKKyAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKKyAgICBzZXRNZWRpYVRleHQobWVkaWEsIGVjKTsKKyAgICAvL0ZJWE1FOiBwYXJz
aW5nIGNhbiBmYWlsLgorICAgIGlmIChlYykKKyAgICAgICAgc2V0TWVkaWFUZXh0KCJpbnZhbGlk
IiwgZWMpOwogfQogCi1ib29sIE1lZGlhTGlzdDo6Y29udGFpbnMoY29uc3QgU3RyaW5nJiBtZWRp
dW0pIGNvbnN0CitNZWRpYUxpc3Q6On5NZWRpYUxpc3QoKQogewotICAgIHJldHVybiBtX2xzdE1l
ZGlhLmNvdW50KCkgPT0gMCB8fCBtX2xzdE1lZGlhLmNvbnRhaW5zKG1lZGl1bSkgfHwgbV9sc3RN
ZWRpYS5jb250YWlucygiYWxsIik7CisgICAgZGVsZXRlQWxsVmFsdWVzKG1fcXVlcmllcyk7CiB9
CiAKIENTU1N0eWxlU2hlZXQgKk1lZGlhTGlzdDo6cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0CkBA
IC02MCwzNiArMTEwLDE0NyBAQCBDU1NSdWxlICpNZWRpYUxpc3Q6OnBhcmVudFJ1bGUoKSBjb25z
dAogICAgIHJldHVybiBwYXJlbnQoKS0+aXNSdWxlKCkgPyBzdGF0aWNfY2FzdDxDU1NSdWxlKj4o
cGFyZW50KCkpIDogMDsKIH0KIAotdm9pZCBNZWRpYUxpc3Q6OmRlbGV0ZU1lZGl1bShjb25zdCBT
dHJpbmcmIG9sZE1lZGl1bSkKK3N0YXRpYyBTdHJpbmcgcGFyc2VNZWRpYURlc2NyaXB0b3IoY29u
c3QgU3RyaW5nJiBzKQogewotICAgIGZvciAoRGVwcmVjYXRlZFZhbHVlTGlzdDxTdHJpbmc+OjpJ
dGVyYXRvciBpdCA9IG1fbHN0TWVkaWEuYmVnaW4oKTsgaXQgIT0gbV9sc3RNZWRpYS5lbmQoKTsg
KytpdCkgewotICAgICAgICBpZiAoKCppdCkgPT0gb2xkTWVkaXVtKSB7Ci0gICAgICAgICAgICBt
X2xzdE1lZGlhLnJlbW92ZShpdCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgaW50IGxlbiA9
IHMubGVuZ3RoKCk7CisKKyAgICAvLyBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3R5
cGVzLmh0bWwjdHlwZS1tZWRpYS1kZXNjcmlwdG9ycworICAgIC8vICJFYWNoIGVudHJ5IGlzIHRy
dW5jYXRlZCBqdXN0IGJlZm9yZSB0aGUgZmlyc3QgY2hhcmFjdGVyIHRoYXQgaXNuJ3QgYQorICAg
IC8vIFVTIEFTQ0lJIGxldHRlciBbYS16QS1aXSAoSVNPIDEwNjQ2IGhleCA0MS01YSwgNjEtN2Ep
LCBkaWdpdCBbMC05XSAoaGV4IDMwLTM5KSwKKyAgICAvLyBvciBoeXBoZW4gKGhleCAyZCkuIgor
ICAgIGludCBpOworICAgIHVuc2lnbmVkIHNob3J0IGM7CisgICAgZm9yIChpID0gMDsgaSA8IGxl
bjsgKytpKSB7CisgICAgICAgIGMgPSBzW2ldOworICAgICAgICBpZiAoISAoKGMgPj0gJ2EnICYm
IGMgPD0gJ3onKQorICAgICAgICAgICAgfHwgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKQorICAgICAg
ICAgICAgfHwgKGMgPj0gJzEnICYmIGMgPD0gJzknKQorICAgICAgICAgICAgfHwgKGMgPT0gJy0n
KSkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHMubGVmdChpKTsKK30K
Kwordm9pZCBNZWRpYUxpc3Q6OmRlbGV0ZU1lZGl1bShjb25zdCBTdHJpbmcmIG9sZE1lZGl1bSwg
RXhjZXB0aW9uQ29kZSYgZWMpCit7CisgICAgTWVkaWFMaXN0IHRlbXBNZWRpYUxpc3Q7CisgICAg
Q1NTUGFyc2VyIHAodHJ1ZSk7CisKKyAgICBNZWRpYVF1ZXJ5KiBvbGRRdWVyeSA9IDA7CisgICAg
Ym9vbCBkZWxldGVPbGRRdWVyeSA9IGZhbHNlOworCisgICAgaWYgKHAucGFyc2VNZWRpYVF1ZXJ5
KCZ0ZW1wTWVkaWFMaXN0LCBvbGRNZWRpdW0pKSB7CisgICAgICAgIGlmICh0ZW1wTWVkaWFMaXN0
Lm1fcXVlcmllcy5zaXplKCkgPiAwKQorICAgICAgICAgICAgb2xkUXVlcnkgPSB0ZW1wTWVkaWFM
aXN0Lm1fcXVlcmllc1swXTsKKyAgICB9IGVsc2UgaWYgKG1fZmFsbGJhY2spIHsKKyAgICAgICAg
U3RyaW5nIG1lZGl1bSA9IHBhcnNlTWVkaWFEZXNjcmlwdG9yKG9sZE1lZGl1bSk7CisgICAgICAg
IGlmICghbWVkaXVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBvbGRRdWVyeSA9IG5ldyBNZWRp
YVF1ZXJ5KE1lZGlhUXVlcnk6Ok5vbmUsIG1lZGl1bSwgMCk7CisgICAgICAgICAgICBkZWxldGVP
bGRRdWVyeSA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBET00gU3R5bGUgU2hl
ZXRzIHNwZWMgZG9lc24ndCBhbGxvdyBTWU5UQVhfRVJSIHRvIGJlIHRocm93biBpbiBkZWxldGVN
ZWRpdW0KKyAgICBlYyA9IE5PVF9GT1VORF9FUlI7CisKKyAgICBpZiAob2xkUXVlcnkpIHsKKyAg
ICAgICAgZm9yKHNpemVfdCBpID0gMDsgaSA8IG1fcXVlcmllcy5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgTWVkaWFRdWVyeSogYSA9IG1fcXVlcmllc1tpXTsKKyAgICAgICAgICAgIGlmICgq
YSA9PSAqb2xkUXVlcnkpIHsKKyAgICAgICAgICAgICAgICBtX3F1ZXJpZXMucmVtb3ZlKGkpOwor
ICAgICAgICAgICAgICAgIGRlbGV0ZSBhOworICAgICAgICAgICAgICAgIGVjID0gMDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAo
ZGVsZXRlT2xkUXVlcnkpCisgICAgICAgICAgICBkZWxldGUgb2xkUXVlcnk7CiAgICAgfQogfQog
CiBXZWJDb3JlOjpTdHJpbmcgTWVkaWFMaXN0OjptZWRpYVRleHQoKSBjb25zdAogewotICAgIFN0
cmluZyB0ZXh0ID0gIiI7Ci0gICAgZm9yIChEZXByZWNhdGVkVmFsdWVMaXN0PFN0cmluZz46OkNv
bnN0SXRlcmF0b3IgaXQgPSBtX2xzdE1lZGlhLmJlZ2luKCk7IGl0ICE9IG1fbHN0TWVkaWEuZW5k
KCk7ICsraXQpIHsKLSAgICAgICAgaWYgKHRleHQubGVuZ3RoKCkgPiAwKQorICAgIFN0cmluZyB0
ZXh0KCIiKTsKKworICAgIGJvb2wgZmlyc3QgPSB0cnVlOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgbV9xdWVyaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICghZmlyc3QpCiAgICAg
ICAgICAgICB0ZXh0ICs9ICIsICI7Ci0gICAgICAgIHRleHQgKz0gKml0OworICAgICAgICBlbHNl
CisgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICB0ZXh0ICs9IG1fcXVlcmllc1tp
XS0+Y3NzVGV4dCgpOwogICAgIH0KKwogICAgIHJldHVybiB0ZXh0OwogfQogCi12b2lkIE1lZGlh
TGlzdDo6c2V0TWVkaWFUZXh0KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdmFsdWUpCit2b2lkIE1l
ZGlhTGlzdDo6c2V0TWVkaWFUZXh0KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdmFsdWUsICBFeGNl
cHRpb25Db2RlJiBlYykKIHsKLSAgICBtX2xzdE1lZGlhLmNsZWFyKCk7CisgICAgTWVkaWFMaXN0
IHRlbXBNZWRpYUxpc3Q7CisgICAgQ1NTUGFyc2VyIHAodHJ1ZSk7CisKICAgICBEZXByZWNhdGVk
U3RyaW5nTGlzdCBsaXN0ID0gRGVwcmVjYXRlZFN0cmluZ0xpc3Q6OnNwbGl0KCcsJywgdmFsdWUu
ZGVwcmVjYXRlZFN0cmluZygpKTsKICAgICBmb3IgKERlcHJlY2F0ZWRTdHJpbmdMaXN0OjpJdGVy
YXRvciBpdCA9IGxpc3QuYmVnaW4oKTsgaXQgIT0gbGlzdC5lbmQoKTsgKytpdCkgewogICAgICAg
ICBTdHJpbmcgbWVkaXVtID0gKCppdCkuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgIGlmICgh
bWVkaXVtLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fbHN0TWVkaWEuYXBwZW5kKG1lZGl1bSk7
CisgICAgICAgIGlmICghbWVkaXVtLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKCFwLnBh
cnNlTWVkaWFRdWVyeSgmdGVtcE1lZGlhTGlzdCwgbWVkaXVtKSkgeworICAgICAgICAgICAgICAg
IGlmIChtX2ZhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtZWRpYURlc2Ny
aXB0b3IgPSBwYXJzZU1lZGlhRGVzY3JpcHRvcihtZWRpdW0pOworICAgICAgICAgICAgICAgICAg
ICBpZiAoIW1lZGlhRGVzY3JpcHRvci5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHRlbXBNZWRpYUxpc3QubV9xdWVyaWVzLmFwcGVuZChuZXcgTWVkaWFRdWVyeShNZWRpYVF1ZXJ5
OjpOb25lLCBtZWRpYURlc2NyaXB0b3IsIDApKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9ICAgICAgICAgIAorICAg
ICAgICB9IGVsc2UgaWYgKCFtX2ZhbGxiYWNrKSB7CisgICAgICAgICAgICBlYyA9IFNZTlRBWF9F
UlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gICAgICAgICAgICAKKyAgICB9Cisg
ICAgLy8gIiwsLCwiIGZhbGxzIHN0cmFpZ2h0IHRocm91Z2gsIGJ1dCBpcyBub3QgdmFsaWQgdW5s
ZXNzIGZhbGxiYWNrCisgICAgaWYgKCFtX2ZhbGxiYWNrICYmIGxpc3QuYmVnaW4oKSA9PSBsaXN0
LmVuZCgpKSB7CisgICAgICAgIFN0cmluZyBzID0gdmFsdWUuZGVwcmVjYXRlZFN0cmluZygpLnN0
cmlwV2hpdGVTcGFjZSgpOworICAgICAgICBpZiAoIXMuaXNFbXB0eSgpKSB7CisgICAgICAgICAg
ICBlYyA9IFNZTlRBWF9FUlI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9Cisg
ICAgfQorICAgIAorICAgIGVjID0gMDsKKyAgICBkZWxldGVBbGxWYWx1ZXMobV9xdWVyaWVzKTsK
KyAgICBtX3F1ZXJpZXMgPSB0ZW1wTWVkaWFMaXN0Lm1fcXVlcmllczsKKyAgICB0ZW1wTWVkaWFM
aXN0Lm1fcXVlcmllcy5jbGVhcigpOworfQorCitTdHJpbmcgTWVkaWFMaXN0OjppdGVtKHVuc2ln
bmVkIGluZGV4KSBjb25zdAoreworICAgIGlmIChpbmRleCA8IG1fcXVlcmllcy5zaXplKCkpIHsK
KyAgICAgICAgTWVkaWFRdWVyeSogcXVlcnkgPSBtX3F1ZXJpZXNbaW5kZXhdOworICAgICAgICBy
ZXR1cm4gcXVlcnktPmNzc1RleHQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9
CisKK3ZvaWQgTWVkaWFMaXN0OjphcHBlbmRNZWRpdW0oY29uc3QgU3RyaW5nJiBuZXdNZWRpdW0s
IEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGVjID0gSU5WQUxJRF9DSEFSQUNURVJfRVJSOwor
ICAgIENTU1BhcnNlciBwKHRydWUpOworICAgIGlmIChwLnBhcnNlTWVkaWFRdWVyeSh0aGlzLCBu
ZXdNZWRpdW0pKSB7CisgICAgICAgIGVjID0gMDsKKyAgICB9IGVsc2UgaWYgKG1fZmFsbGJhY2sp
IHsKKyAgICAgICAgU3RyaW5nIG1lZGl1bSA9IHBhcnNlTWVkaWFEZXNjcmlwdG9yKG5ld01lZGl1
bSk7CisgICAgICAgIGlmICghbWVkaXVtLmlzTnVsbCgpKSB7CisgICAgICAgICAgICBtX3F1ZXJp
ZXMuYXBwZW5kKG5ldyBNZWRpYVF1ZXJ5KE1lZGlhUXVlcnk6Ok5vbmUsIG1lZGl1bSwgMCkpOwor
ICAgICAgICAgICAgZWMgPSAwOworICAgICAgICB9CiAgICAgfQogfQogCit2b2lkIE1lZGlhTGlz
dDo6YXBwZW5kTWVkaWFRdWVyeShNZWRpYVF1ZXJ5KiBtZWRpYVF1ZXJ5KQoreworICAgIG1fcXVl
cmllcy5hcHBlbmQobWVkaWFRdWVyeSk7Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlh
UXVlcnlFeHAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXhwLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDU1MgTWVkaWEgUXVlcnkKKyAqCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYgS2ltbW8gS2lubnVuZW4gPGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIE1lZGlhUXVlcnlFeHBfaAorI2RlZmluZSBNZWRpYVF1ZXJ5RXhwX2gKKworI2luY2x1ZGUg
IkF0b21pY1N0cmluZy5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKK2NsYXNzIFZhbHVlTGlzdDsKKworY2xhc3MgTWVkaWFRdWVyeUV4cAoreworcHVibGlj
OgorICAgIE1lZGlhUXVlcnlFeHAoY29uc3QgQXRvbWljU3RyaW5nJiBtZWRpYUZlYXR1cmUsIFZh
bHVlTGlzdCogdmFsdWVzKTsKKyAgICB+TWVkaWFRdWVyeUV4cCgpOworCisgICAgQXRvbWljU3Ry
aW5nIG1lZGlhRmVhdHVyZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFGZWF0dXJlOyB9CisKKyAg
ICBDU1NWYWx1ZSogdmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3ZhbHVlOyB9CisKKyAgICBib29s
IG9wZXJhdG9yPT0oY29uc3QgTWVkaWFRdWVyeUV4cCYgb3RoZXIpIGNvbnN0ICB7CisgICAgICAg
IHJldHVybiAob3RoZXIubV9tZWRpYUZlYXR1cmUgPT0gbV9tZWRpYUZlYXR1cmUpCisgICAgICAg
ICAgICAmJiAoKCFvdGhlci5tX3ZhbHVlICYmICFtX3ZhbHVlKQorICAgICAgICAgICAgICAgIHx8
IChvdGhlci5tX3ZhbHVlICYmIG1fdmFsdWUgJiYgb3RoZXIubV92YWx1ZS0+Y3NzVGV4dCgpID09
IG1fdmFsdWUtPmNzc1RleHQoKSkpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBBdG9taWNTdHJp
bmcgbV9tZWRpYUZlYXR1cmU7CisgICAgQ1NTVmFsdWUqIG1fdmFsdWU7Cit9OworCit9IC8vIG5h
bWVzcGFjZQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3Iu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDU1MgTWVkaWEgUXVlcnkgRXZhbHVhdG9yCisgKgor
ICogQ29weXJpZ2h0IChDKSAyMDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5v
a2lhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBNZWRpYVF1ZXJ5RXZhbHVhdG9yX2gKKyNkZWZpbmUgTWVkaWFRdWVy
eUV2YWx1YXRvcl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CitjbGFzcyBGcmFtZVZpZXc7CitjbGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIE1l
ZGlhTGlzdDsKK2NsYXNzIE1lZGlhUXVlcnlFeHA7CisKKy8qKgorICogQ2xhc3MgdGhhdCBldmFs
dWF0ZXMgY3NzIG1lZGlhIHF1ZXJpZXMgYXMgZGVmaW5lZCBpbgorICogQ1NTMyBNb2R1bGUgIk1l
ZGlhIFF1ZXJpZXMiIChodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8pCisg
KiBTcGVjaWFsIGNvbnN0cnVjdG9ycyBhcmUgbmVlZGVkLCBpZiBzaW1wbGUgbWVkaWEgcXVlcmll
cyBhcmUgdG8gYmUKKyAqIGV2YWx1YXRlZCB3aXRob3V0IGtub3dsZWRnZSBvZiB0aGUgbWVkaXVt
IGZlYXR1cmVzLiBUaGlzIGNhbiBoYXBwZW4KKyAqIGZvciBleGFtcGxlIHdoZW4gcGFyc2luZyBV
QSBzdHlsZXNoZWV0cywgaWYgZXZhbHVhdGlvbiBpcyBkb25lCisgKiByaWdodCBhZnRlciBwYXJz
aW5nLgorICoKKyAqIHRoZSBib29sZWFuIHBhcmFtZXRlciBpcyB1c2VkIHRvIGFwcHJveGltYXRl
IHJlc3VsdHMgb2YgZXZhbHVhdGlvbiwgaWYKKyAqIHRoZSBkZXZpY2UgY2hhcmFjdGVyaXN0aWNz
IGFyZSBub3Qga25vd24uIFRoaXMgY2FuIGJlIHVzZWQgdG8gcHJ1bmUgdGhlIGxvYWRpbmcKKyAq
IG9mIHN0eWxlc2hlZXRzIHRvIG9ubHkgdGhvc2Ugd2hpY2ggYXJlIHByb2JhYmxlIHRvIG1hdGNo
LgorICovCitjbGFzcyBNZWRpYVF1ZXJ5RXZhbHVhdG9yCit7CitwdWJsaWM6CisgICAgLyoqIENy
ZWF0ZXMgZXZhbHVhdG9yIHdoaWNoIGV2YWx1YXRlcyBvbmx5IHNpbXBsZSBtZWRpYSBxdWVyaWVz
CisgICAgICogIEV2YWx1YXRvciByZXR1cm5zIHRydWUgZm9yICJhbGwiLCBhbmQgcmV0dXJucyB2
YWx1ZSBvZiBcbWVkaWFGZWF0dXJlUmVzdWx0CisgICAgICogIGZvciBhbnkgbWVkaWEgZmVhdHVy
ZXMKKyAgICAgKi8KKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yKGJvb2wgbWVkaWFGZWF0dXJlUmVz
dWx0ID0gZmFsc2UpOworCisgICAgLyoqIENyZWF0ZXMgZXZhbHVhdG9yIHdoaWNoIGV2YWx1YXRl
cyBvbmx5IHNpbXBsZSBtZWRpYSBxdWVyaWVzCisgICAgICogIEV2YWx1YXRvciAgcmV0dXJucyB0
cnVlIGZvciBhY2NlcHRlZE1lZGlhVHlwZSBhbmQgcmV0dXJucyB2YWx1ZSBvZiBcbWVkaWFmZWF0
dXJlUmVzdWx0CisgICAgICogIGZvciBhbnkgbWVkaWEgZmVhdHVyZXMKKyAgICAgKi8KKyAgICBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFN0cmluZyYgYWNjZXB0ZWRNZWRpYVR5cGUsIGJvb2wg
bWVkaWFGZWF0dXJlUmVzdWx0ID0gZmFsc2UpOworCisgICAgLyoqIENyZWF0ZXMgZXZhbHVhdG9y
IHdoaWNoIGV2YWx1YXRlcyBmdWxsIG1lZGlhIHF1ZXJpZXMKKyAgICAgKi8KKyAgICBNZWRpYVF1
ZXJ5RXZhbHVhdG9yKGNvbnN0IFN0cmluZyYgYWNjZXB0ZWRNZWRpYVR5cGUsIEZyYW1lVmlldyog
dmlldywgUmVuZGVyU3R5bGUqIHN0eWxlKTsKKworICAgIH5NZWRpYVF1ZXJ5RXZhbHVhdG9yKCk7
CisKKyAgICBib29sIG1lZGlhVHlwZU1hdGNoKGNvbnN0IFN0cmluZyYgbWVkaWFUeXBlVG9NYXRj
aCkgY29uc3Q7CisKKyAgICAvKiogRXZhbHVhdGVzIGEgbGlzdCBvZiBtZWRpYSBxdWVyaWVzICov
CisgICAgYm9vbCBldmFsKGNvbnN0IE1lZGlhTGlzdCogcXVlcnkpIGNvbnN0OworCisgICAgLyoq
IEV2YWx1YXRlcyBtZWRpYSBxdWVyeSBzdWJleHByZXNzaW9uLCBpZSAiYW5kIChtZWRpYS1mZWF0
dXJlOiB2YWx1ZSkiIHBhcnQgKi8KKyAgICBib29sIGV2YWwoY29uc3QgTWVkaWFRdWVyeUV4cCog
ZXhwcikgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fbWVkaWFUeXBlOworICAgIEZy
YW1lVmlldyogbV92aWV3OyAvLyBub3Qgb3duZWQKKyAgICBSZW5kZXJTdHlsZSogbV9zdHlsZTsg
Ly8gbm90IG93bmVkCisgICAgYm9vbCBtX2V4cFJlc3VsdDsKK307CisKK30gLy8gbmFtZXNwYWNl
CisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCShyZXZpc2lvbiAxNDU1NSkK
KysrIFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiSGlzdG9yeS5oIgogI2luY2x1ZGUgIktXUUtIVE1MU2V0
dGluZ3MuaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZh
bHVhdG9yLmgiCiAjaW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlJlY3RJbXBsLmgiCiAjaW5j
bHVkZSAiUmVuZGVyVGhlbWUuaCIKQEAgLTE3Miw3ICsxNzMsNyBAQCBwdWJsaWM6CiAgICAgCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmluZ0ltcGwqLCBDU1NSdWxlRGF0YUxpc3QqPiBB
dG9tUnVsZU1hcDsKICAgICAKLSAgICB2b2lkIGFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hl
ZXQqIHNoZWV0LCBjb25zdCBTdHJpbmcgJm1lZGl1bSA9ICJzY3JlZW4iKTsKKyAgICB2b2lkIGFk
ZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqIHNoZWV0LCBNZWRpYVF1ZXJ5RXZhbHVhdG9y
KiBtZWRpdW0pOwogICAgIAogICAgIHZvaWQgYWRkUnVsZShDU1NTdHlsZVJ1bGUqIHJ1bGUsIENT
U1NlbGVjdG9yKiBzZWwpOwogICAgIHZvaWQgYWRkVG9SdWxlU2V0KEF0b21pY1N0cmluZ0ltcGwq
IGtleSwgQXRvbVJ1bGVNYXAmIG1hcCwKQEAgLTIxNCwxOCArMjE1LDM5IEBAIENTU1N0eWxlU2Vs
ZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoRG9jdW0KICAgICBzZXR0aW5ncyA9IHZpZXcgPyB2aWV3
LT5mcmFtZSgpLT5zZXR0aW5ncygpIDogMDsKICAgICBpZiAoIWRlZmF1bHRTdHlsZSkKICAgICAg
ICAgbG9hZERlZmF1bHRTdHlsZSgpOwotICAgIG1fbWVkaWFUeXBlID0gdmlldyA/IHZpZXctPm1l
ZGlhVHlwZSgpIDogU3RyaW5nKCJhbGwiKTsKIAogICAgIG1fdXNlclN0eWxlID0gMDsKICAgICBt
X3VzZXJTaGVldCA9IDA7CiAKKyAgICAvLyBjb25zdHJ1Y3QgZG9jdW1lbnQgcm9vdCBlbGVtZW50
IGRlZmF1bHQgc3R5bGUuIHRoaXMgaXMgbmVlZGVkCisgICAgLy8gdG8gZXZhbHVhdGUgbWVkaWEg
cXVlcmllcyB0aGF0IGNvbnRhaW4gcmVsYXRpdmUgY29uc3RyYWludHMsIGxpa2UgInNjcmVlbiBh
bmQgKG1heC13aWR0aDogMTBlbSkiCisgICAgLy8gVGhpcyBpcyBoZXJlIGluc3RlYWQgb2YgY29u
c3RydWN0b3IsIGJlY2F1c2Ugd2hlbiBjb25zdHJ1Y3RvciBpcyBydW4sCisgICAgLy8gZG9jdW1l
bnQgZG9lc24ndCBoYXZlIGRvY3VtZW50RWxlbWVudAorICAgIC8vIE5PVEU6IHRoaXMgYXNzdW1l
cyB0aGF0IGVsZW1lbnQgdGhhdCBnZXRzIHBhc3NlZCB0byBzdHlsZUZvckVsZW1lbnQgLWNhbGwK
KyAgICAvLyBpcyBmcm9tIHRoZSBkb2N1bWVudCB0aGF0IG93bnMgdGhlIHN0eWxlIHNlbGVjdG9y
CisgICAgaWYgKHZpZXcpCisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlhUXVlcnlFdmFsdWF0
b3Iodmlldy0+bWVkaWFUeXBlKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9tZWRpdW0gPSBuZXcg
TWVkaWFRdWVyeUV2YWx1YXRvcigiYWxsIik7CisKKyAgICBFbGVtZW50KiByb290ID0gZG9jLT5k
b2N1bWVudEVsZW1lbnQoKTsKKworICAgIGlmIChyb290KQorICAgICAgICBtX3Jvb3REZWZhdWx0
U3R5bGUgPSBkZWZhdWx0U3R5bGVGb3JSb290KHJvb3QpOyAvLyBkb250IHJlZiwgYmVjYXVzZSB0
aGUgUmVuZGVyU3R5bGUgaXMgYWxsb2NhdGVkIGZyb20gZ2xvYmFsIGhlYXAKKworICAgIGlmICht
X3Jvb3REZWZhdWx0U3R5bGUgJiYgdmlldykgeworICAgICAgICBkZWxldGUgbV9tZWRpdW07Cisg
ICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlhUXVlcnlFdmFsdWF0b3Iodmlldy0+bWVkaWFUeXBl
KCksIHZpZXcsIG1fcm9vdERlZmF1bHRTdHlsZSk7CisgICAgfQorCisKICAgICAvLyBGSVhNRTog
VGhpcyBzdWNrcyEgVGhlIHVzZXIgc2hlZXQgaXMgcmVwYXJzZWQgZXZlcnkgdGltZSEKICAgICBp
ZiAoIXVzZXJTdHlsZVNoZWV0LmlzRW1wdHkoKSkgewogICAgICAgICBtX3VzZXJTaGVldCA9IG5l
dyBDU1NTdHlsZVNoZWV0KGRvYyk7CiAgICAgICAgIG1fdXNlclNoZWV0LT5wYXJzZVN0cmluZyh1
c2VyU3R5bGVTaGVldCwgc3RyaWN0UGFyc2luZyk7CiAKICAgICAgICAgbV91c2VyU3R5bGUgPSBu
ZXcgQ1NTUnVsZVNldCgpOwotICAgICAgICBtX3VzZXJTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQo
bV91c2VyU2hlZXQsIG1fbWVkaWFUeXBlKTsKKyAgICAgICAgbV91c2VyU3R5bGUtPmFkZFJ1bGVz
RnJvbVNoZWV0KG1fdXNlclNoZWV0LCBtX21lZGl1bSk7CiAgICAgfQogCiAgICAgLy8gYWRkIHN0
eWxlc2hlZXRzIGZyb20gZG9jdW1lbnQKQEAgLTIzNCwxMCArMjU2LDggQEAgQ1NTU3R5bGVTZWxl
Y3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihEb2N1bQogICAgIERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0
b3I8U3R5bGVTaGVldD4gaXQoc3R5bGVTaGVldHMtPnN0eWxlU2hlZXRzKTsKICAgICBmb3IgKDsg
aXQuY3VycmVudCgpOyArK2l0KQogICAgICAgICBpZiAoaXQuY3VycmVudCgpLT5pc0NTU1N0eWxl
U2hlZXQoKSAmJiAhaXQuY3VycmVudCgpLT5kaXNhYmxlZCgpKQotICAgICAgICAgICAgbV9hdXRo
b3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3RhdGljX2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KGl0
LmN1cnJlbnQoKSksIG1fbWVkaWFUeXBlKTsKKyAgICAgICAgICAgIG1fYXV0aG9yU3R5bGUtPmFk
ZFJ1bGVzRnJvbVNoZWV0KHN0YXRpY19jYXN0PENTU1N0eWxlU2hlZXQqPihpdC5jdXJyZW50KCkp
LCBtX21lZGl1bSk7CiAKLSAgICBtX3J1bGVMaXN0ID0gMDsKLSAgICBtX2NvbGxlY3RSdWxlc09u
bHkgPSBmYWxzZTsKIH0KIAogQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihDU1NT
dHlsZVNoZWV0ICpzaGVldCkKQEAgLTI0NywxMCArMjY3LDIzIEBAIENTU1N0eWxlU2VsZWN0b3I6
OkNTU1N0eWxlU2VsZWN0b3IoQ1NTU3QKICAgICBpZiAoIWRlZmF1bHRTdHlsZSkKICAgICAgICAg
bG9hZERlZmF1bHRTdHlsZSgpOwogICAgIEZyYW1lVmlldyAqdmlldyA9IHNoZWV0LT5kb2MoKS0+
dmlldygpOwotICAgIG1fbWVkaWFUeXBlID0gIHZpZXcgPyB2aWV3LT5tZWRpYVR5cGUoKSA6IFN0
cmluZygiYWxsIik7CisKKyAgICBpZiAodmlldykKKyAgICAgICAgbV9tZWRpdW0gPSBuZXcgTWVk
aWFRdWVyeUV2YWx1YXRvcih2aWV3LT5tZWRpYVR5cGUoKSk7CisgICAgZWxzZQorICAgICAgICBt
X21lZGl1bSA9IG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9yKCJhbGwiKTsKKworICAgIEVsZW1lbnQq
IHJvb3QgPSBzaGVldC0+ZG9jKCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIGlmIChyb290KQor
ICAgICAgICBtX3Jvb3REZWZhdWx0U3R5bGUgPSBkZWZhdWx0U3R5bGVGb3JSb290KHJvb3QpOwor
CisgICAgaWYgKG1fcm9vdERlZmF1bHRTdHlsZSAmJiB2aWV3KSB7CisgICAgICAgIGRlbGV0ZSBt
X21lZGl1bTsKKyAgICAgICAgbV9tZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcih2aWV3
LT5tZWRpYVR5cGUoKSwgdmlldywgbV9yb290RGVmYXVsdFN0eWxlKTsKKyAgICB9CiAKICAgICBt
X2F1dGhvclN0eWxlID0gbmV3IENTU1J1bGVTZXQoKTsKLSAgICBtX2F1dGhvclN0eWxlLT5hZGRS
dWxlc0Zyb21TaGVldChzaGVldCwgbV9tZWRpYVR5cGUpOworICAgIG1fYXV0aG9yU3R5bGUtPmFk
ZFJ1bGVzRnJvbVNoZWV0KHNoZWV0LCBtX21lZGl1bSk7CiB9CiAKIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6aW5pdCgpCkBAIC0yNTgsNiArMjkxLDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
aW5pdCgpCiAgICAgZWxlbWVudCA9IDA7CiAgICAgc2V0dGluZ3MgPSAwOwogICAgIG1fbWF0Y2hl
ZFJ1bGVDb3VudCA9IG1fbWF0Y2hlZERlY2xDb3VudCA9IG1fdG1wUnVsZUNvdW50ID0gMDsKKyAg
ICBtX3J1bGVMaXN0ID0gMDsKKyAgICBtX2NvbGxlY3RSdWxlc09ubHkgPSBmYWxzZTsKKyAgICBt
X3Jvb3REZWZhdWx0U3R5bGUgPSAwOworICAgIG1fbWVkaXVtID0gMDsKIH0KIAogdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjpzZXRFbmNvZGVkVVJMKGNvbnN0IEtVUkwmIHVybCkKQEAgLTI3OSw2ICsz
MTYsOSBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OnNldEVuY29kZWRVUkwoY29uCiAKIENTU1N0
eWxlU2VsZWN0b3I6On5DU1NTdHlsZVNlbGVjdG9yKCkKIHsKKyAgICBkZWxldGUgbV9tZWRpdW07
CisgICAgOjpkZWxldGUgbV9yb290RGVmYXVsdFN0eWxlOworCiAgICAgZGVsZXRlIG1fYXV0aG9y
U3R5bGU7CiAgICAgZGVsZXRlIG1fdXNlclN0eWxlOwogICAgIGRlbGV0ZSBtX3VzZXJTaGVldDsK
QEAgLTMwNywyMSArMzQ3LDI0IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bG9hZERlZmF1bHRT
dHlsZSgKICAgICBkZWZhdWx0UHJpbnRTdHlsZSA9IG5ldyBDU1NSdWxlU2V0OwogICAgIGRlZmF1
bHRRdWlya3NTdHlsZSA9IG5ldyBDU1NSdWxlU2V0OwogCisgICAgTWVkaWFRdWVyeUV2YWx1YXRv
ciBzY3JlZW5FdmFsKCJzY3JlZW4iKTsKKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZh
bCgicHJpbnQiKTsKKwogICAgIC8vIFN0cmljdC1tb2RlIHJ1bGVzLgogICAgIGRlZmF1bHRTaGVl
dCA9IHBhcnNlVUFTaGVldChodG1sNFVzZXJBZ2VudFN0eWxlU2hlZXQpOwotICAgIGRlZmF1bHRT
dHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCAic2NyZWVuIik7Ci0gICAgZGVm
YXVsdFByaW50U3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgInByaW50Iik7
CisgICAgZGVmYXVsdFN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsICZzY3Jl
ZW5FdmFsKTsKKyAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVs
dFNoZWV0LCAmcHJpbnRFdmFsKTsKIAogI2lmIFNWR19TVVBQT1JUCiAgICAgLy8gU1ZHIHJ1bGVz
LgogICAgIHN2Z1NoZWV0ID0gcGFyc2VVQVNoZWV0KHN2Z1VzZXJBZ2VudFN0eWxlU2hlZXQpOwot
ICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsICJzY3JlZW4iKTsK
LSAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsICJwcmlu
dCIpOworICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsICZzY3Jl
ZW5FdmFsKTsKKyAgICBkZWZhdWx0UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hl
ZXQsICZwcmludEV2YWwpOwogI2VuZGlmCiAKICAgICAvLyBRdWlya3MtbW9kZSBydWxlcy4KICAg
ICBxdWlya3NTaGVldCA9IHBhcnNlVUFTaGVldChxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KTsK
LSAgICBkZWZhdWx0UXVpcmtzU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCAi
c2NyZWVuIik7CisgICAgZGVmYXVsdFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChxdWly
a3NTaGVldCwgJnNjcmVlbkV2YWwpOwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFkZE1h
dGNoZWRSdWxlKENTU1J1bGVEYXRhKiBydWxlKQpAQCAtNjk5LDYgKzc0MiwxOSBAQCBSZW5kZXJT
dHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6bG9jYXRlU2hhCiAgICAgcmV0dXJuIDA7CiB9CiAKK3Zv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hVQUFuZFByaW50UnVsZXMoaW50JiBmaXJzdFVBUnVs
ZSwgaW50JiBsYXN0VUFSdWxlKQoreworICAgIC8vIDEuIEZpcnN0IHdlIG1hdGNoIHJ1bGVzIGZy
b20gdGhlIHVzZXIgYWdlbnQgc2hlZXQuCisgICAgbWF0Y2hSdWxlcyhkZWZhdWx0U3R5bGUsIGZp
cnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKKworICAgIC8vIDIuIEluIHF1aXJrcyBtb2RlLCB3ZSBt
YXRjaCBydWxlcyBmcm9tIHRoZSBxdWlya3MgdXNlciBhZ2VudCBzaGVldC4KKyAgICBpZiAoIXN0
cmljdFBhcnNpbmcpCisgICAgICAgIG1hdGNoUnVsZXMoZGVmYXVsdFF1aXJrc1N0eWxlLCBmaXJz
dFVBUnVsZSwgbGFzdFVBUnVsZSk7CisKKyAgICAvLyAzLiBJZiBvdXIgbWVkaXVtIGlzIHByaW50
LCB0aGVuIHdlIG1hdGNoIHJ1bGVzIGZyb20gdGhlIHByaW50IHNoZWV0LgorICAgIGlmIChtX21l
ZGl1bS0+bWVkaWFUeXBlTWF0Y2goInByaW50IikpCisgICAgICAgIG1hdGNoUnVsZXMoZGVmYXVs
dFByaW50U3R5bGUsIGZpcnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKK30KIAogUmVuZGVyU3R5bGUq
IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiBlLCBSZW5kZXJTdHls
ZSogZGVmYXVsdFBhcmVudCwgYm9vbCBhbGxvd1NoYXJpbmcpCiB7CkBAIC03MzMsMTggKzc4OSw5
IEBAIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckUKICAgICAgICAgc3R5
bGUtPmluaGVyaXRGcm9tKHBhcmVudFN0eWxlKTsKICAgICBlbHNlCiAgICAgICAgIHBhcmVudFN0
eWxlID0gc3R5bGU7Ci0gICAgCi0gICAgLy8gMS4gRmlyc3Qgd2UgbWF0Y2ggcnVsZXMgZnJvbSB0
aGUgdXNlciBhZ2VudCBzaGVldC4KKwogICAgIGludCBmaXJzdFVBUnVsZSA9IC0xLCBsYXN0VUFS
dWxlID0gLTE7Ci0gICAgbWF0Y2hSdWxlcyhkZWZhdWx0U3R5bGUsIGZpcnN0VUFSdWxlLCBsYXN0
VUFSdWxlKTsKLSAgICAKLSAgICAvLyAyLiBJbiBxdWlya3MgbW9kZSwgd2UgbWF0Y2ggcnVsZXMg
ZnJvbSB0aGUgcXVpcmtzIHVzZXIgYWdlbnQgc2hlZXQuCi0gICAgaWYgKCFzdHJpY3RQYXJzaW5n
KQotICAgICAgICBtYXRjaFJ1bGVzKGRlZmF1bHRRdWlya3NTdHlsZSwgZmlyc3RVQVJ1bGUsIGxh
c3RVQVJ1bGUpOwotICAgIAotICAgIC8vIDMuIElmIG91ciBtZWRpdW0gaXMgcHJpbnQsIHRoZW4g
d2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgcHJpbnQgc2hlZXQuCi0gICAgaWYgKG1fbWVkaWFUeXBl
ID09ICJwcmludCIpCi0gICAgICAgIG1hdGNoUnVsZXMoZGVmYXVsdFByaW50U3R5bGUsIGZpcnN0
VUFSdWxlLCBsYXN0VUFSdWxlKTsKKyAgICBtYXRjaFVBQW5kUHJpbnRSdWxlcyhmaXJzdFVBUnVs
ZSwgbGFzdFVBUnVsZSk7CiAKICAgICAvLyA0LiBOb3cgd2UgY2hlY2sgdXNlciBzaGVldCBydWxl
cy4KICAgICBpbnQgZmlyc3RVc2VyUnVsZSA9IC0xLCBsYXN0VXNlclJ1bGUgPSAtMTsKQEAgLTgw
MiwyMyArODQ5LDE0IEBAIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckUK
ICAgICBhcHBseURlY2xhcmF0aW9ucyh0cnVlLCB0cnVlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVs
ZSk7CiAgICAgCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIGdvIGFoZWFkIGFuZCB1
cGRhdGUgaXQgbm93LgotICAgIGlmIChmb250RGlydHkpIHsKLSAgICAgICAgY2hlY2tGb3JUZXh0
U2l6ZUFkanVzdCgpOwotICAgICAgICBjaGVja0ZvckdlbmVyaWNGYW1pbHlDaGFuZ2Uoc3R5bGUs
IHBhcmVudFN0eWxlKTsKLSAgICAgICAgc3R5bGUtPmZvbnQoKS51cGRhdGUoKTsKLSAgICAgICAg
Zm9udERpcnR5ID0gZmFsc2U7Ci0gICAgfQorICAgIGlmIChmb250RGlydHkpCisgICAgICAgIGFk
anVzdEZvbnQoKTsKICAgICAKICAgICAvLyBOb3cgZG8gdGhlIG5vcm1hbCBwcmlvcml0eSBVQSBw
cm9wZXJ0aWVzLgogICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCBmYWxzZSwgZmlyc3RVQVJ1
bGUsIGxhc3RVQVJ1bGUpOwogICAgIAogICAgIC8vIENhY2hlIG91ciBib3JkZXIgYW5kIGJhY2tn
cm91bmQgc28gdGhhdCB3ZSBjYW4gZXhhbWluZSB0aGVtIGxhdGVyLgotICAgIG1faGFzVUFBcHBl
YXJhbmNlID0gc3R5bGUtPmhhc0FwcGVhcmFuY2UoKTsKLSAgICBpZiAobV9oYXNVQUFwcGVhcmFu
Y2UpIHsKLSAgICAgICAgbV9ib3JkZXJEYXRhID0gc3R5bGUtPmJvcmRlcigpOwotICAgICAgICBt
X2JhY2tncm91bmREYXRhID0gKnN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAgICAgIG1f
YmFja2dyb3VuZENvbG9yID0gc3R5bGUtPmJhY2tncm91bmRDb2xvcigpOwotICAgIH0KKyAgICBj
YWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKICAgICAKICAgICAvLyBOb3cgZG8gdGhlIGF1dGhv
ciBhbmQgdXNlciBub3JtYWwgcHJpb3JpdHkgcHJvcGVydGllcyBhbmQgYWxsIHRoZSAhaW1wb3J0
YW50IHByb3BlcnRpZXMuCiAgICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIGZhbHNlLCBsYXN0
VUFSdWxlKzEsIG1fbWF0Y2hlZERlY2xDb3VudC0xKTsKQEAgLTgyOCwxMiArODY2LDggQEAgUmVu
ZGVyU3R5bGUqIENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9yRQogICAgIAogICAgIC8vIElmIG91
ciBmb250IGdvdCBkaXJ0aWVkIGJ5IG9uZSBvZiB0aGUgbm9uLWVzc2VudGlhbCBmb250IHByb3Bz
LCAKICAgICAvLyBnbyBhaGVhZCBhbmQgdXBkYXRlIGl0IGEgc2Vjb25kIHRpbWUuCi0gICAgaWYg
KGZvbnREaXJ0eSkgewotICAgICAgICBjaGVja0ZvclRleHRTaXplQWRqdXN0KCk7Ci0gICAgICAg
IGNoZWNrRm9yR2VuZXJpY0ZhbWlseUNoYW5nZShzdHlsZSwgcGFyZW50U3R5bGUpOwotICAgICAg
ICBzdHlsZS0+Zm9udCgpLnVwZGF0ZSgpOwotICAgICAgICBmb250RGlydHkgPSBmYWxzZTsKLSAg
ICB9CisgICAgaWYgKGZvbnREaXJ0eSkKKyAgICAgICAgYWRqdXN0Rm9udCgpOwogICAgIAogICAg
IC8vIENsZWFuIHVwIG91ciBzdHlsZSBvYmplY3QncyBkaXNwbGF5IGFuZCB0ZXh0IGRlY29yYXRp
b25zIChhbW9uZyBvdGhlciBmaXh1cHMpLgogICAgIGFkanVzdFJlbmRlclN0eWxlKHN0eWxlLCBl
KTsKQEAgLTg4MiwyMyArOTE2LDE0IEBAIFJlbmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpw
c2V1ZG9TdHkKICAgICBhcHBseURlY2xhcmF0aW9ucyh0cnVlLCB0cnVlLCBmaXJzdFVBUnVsZSwg
bGFzdFVBUnVsZSk7CiAgICAgCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQsIGdvIGFo
ZWFkIGFuZCB1cGRhdGUgaXQgbm93LgotICAgIGlmIChmb250RGlydHkpIHsKLSAgICAgICAgY2hl
Y2tGb3JUZXh0U2l6ZUFkanVzdCgpOwotICAgICAgICBjaGVja0ZvckdlbmVyaWNGYW1pbHlDaGFu
Z2Uoc3R5bGUsIHBhcmVudFN0eWxlKTsKLSAgICAgICAgc3R5bGUtPmZvbnQoKS51cGRhdGUoKTsK
LSAgICAgICAgZm9udERpcnR5ID0gZmFsc2U7Ci0gICAgfQorICAgIGlmIChmb250RGlydHkpCisg
ICAgICAgIGFkanVzdEZvbnQoKTsKICAgICAKICAgICAvLyBOb3cgZG8gdGhlIG5vcm1hbCBwcmlv
cml0eSBwcm9wZXJ0aWVzLgogICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCBmYWxzZSwgZmly
c3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogICAgIAogICAgIC8vIENhY2hlIG91ciBib3JkZXIgYW5k
IGJhY2tncm91bmQgc28gdGhhdCB3ZSBjYW4gZXhhbWluZSB0aGVtIGxhdGVyLgotICAgIG1faGFz
VUFBcHBlYXJhbmNlID0gc3R5bGUtPmhhc0FwcGVhcmFuY2UoKTsKLSAgICBpZiAobV9oYXNVQUFw
cGVhcmFuY2UpIHsKLSAgICAgICAgbV9ib3JkZXJEYXRhID0gc3R5bGUtPmJvcmRlcigpOwotICAg
ICAgICBtX2JhY2tncm91bmREYXRhID0gKnN0eWxlLT5iYWNrZ3JvdW5kTGF5ZXJzKCk7Ci0gICAg
ICAgIG1fYmFja2dyb3VuZENvbG9yID0gc3R5bGUtPmJhY2tncm91bmRDb2xvcigpOwotICAgIH0K
KyAgICBjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKICAgICAKICAgICBhcHBseURlY2xhcmF0
aW9ucyhmYWxzZSwgZmFsc2UsIGxhc3RVQVJ1bGUrMSwgbV9tYXRjaGVkRGVjbENvdW50LTEpOwog
ICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVlLCBmaXJzdEF1dGhvclJ1bGUsIGxhc3RB
dXRob3JSdWxlKTsKQEAgLTkwNywxMyArOTMyLDggQEAgUmVuZGVyU3R5bGUqIENTU1N0eWxlU2Vs
ZWN0b3I6OnBzZXVkb1N0eQogICAgIAogICAgIC8vIElmIG91ciBmb250IGdvdCBkaXJ0aWVkIGJ5
IG9uZSBvZiB0aGUgbm9uLWVzc2VudGlhbCBmb250IHByb3BzLCAKICAgICAvLyBnbyBhaGVhZCBh
bmQgdXBkYXRlIGl0IGEgc2Vjb25kIHRpbWUuCi0gICAgaWYgKGZvbnREaXJ0eSkgewotICAgICAg
ICBjaGVja0ZvclRleHRTaXplQWRqdXN0KCk7Ci0gICAgICAgIGNoZWNrRm9yR2VuZXJpY0ZhbWls
eUNoYW5nZShzdHlsZSwgcGFyZW50U3R5bGUpOwotICAgICAgICBzdHlsZS0+Zm9udCgpLnVwZGF0
ZSgpOwotICAgICAgICBmb250RGlydHkgPSBmYWxzZTsKLSAgICB9Ci0gICAgCisgICAgaWYgKGZv
bnREaXJ0eSkKKyAgICAgICAgYWRqdXN0Rm9udCgpOwogICAgIC8vIENsZWFuIHVwIG91ciBzdHls
ZSBvYmplY3QncyBkaXNwbGF5IGFuZCB0ZXh0IGRlY29yYXRpb25zIChhbW9uZyBvdGhlciBmaXh1
cHMpLgogICAgIGFkanVzdFJlbmRlclN0eWxlKHN0eWxlLCAwKTsKIApAQCAtOTIxLDYgKzk0MSw1
MCBAQCBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5CiAgICAgcmV0dXJu
IHN0eWxlOwogfQogCisvLyBDcmVhdGVzIHN0eWxlIGJhc2VkIG9uIHVzZXIgYWdlbnQgc3R5bGUg
c2hlZXQgb25seS4gVGhpcyBpcyB1c2VkIGluIG1lZGlhIHF1ZXJpZXMsIHdoZXJlIAorLy8gcmVs
YXRpdmUgdW5pdHMgYXJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBkb2N1bWVudCByb290IGVs
ZW1lbnQgc3R5bGUsIHN0eWxlZCBvbmx5IHdpdGgKKy8vIFVBIHN0eWxlc2hlZXQKK1JlbmRlclN0
eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpkZWZhdWx0U3R5bGVGb3JSb290KEVsZW1lbnQqIGUpCit7
CisKKyAgICBpbml0RWxlbWVudEFuZFBzZXVkb1N0YXRlKGUpOworICAgIGluaXRGb3JTdHlsZVJl
c29sdmUoZSwgMCk7CisKKyAgICBzdHlsZSA9IDo6bmV3IFJlbmRlclN0eWxlKCk7CisgICAgLy8g
ZG9uJ3QgcmVmLCBiZWNhdXNlIHdlIHdhbnQgdG8gZGVsZXRlIHRoaXMsIGJ1dCB3ZSBjYW5ub3Qg
dW5yZWYgaXQKKworICAgIGlmIChwYXJlbnRTdHlsZSkKKyAgICAgICAgc3R5bGUtPmluaGVyaXRG
cm9tKHBhcmVudFN0eWxlKTsKKyAgICBlbHNlCisgICAgICAgIHBhcmVudFN0eWxlID0gc3R5bGU7
CisKKyAgICBpbnQgZmlyc3RVQVJ1bGUgPSAtMSwgbGFzdFVBUnVsZSA9IC0xOworICAgIG1hdGNo
VUFBbmRQcmludFJ1bGVzKGZpcnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKKworICAgIGFwcGx5RGVj
bGFyYXRpb25zKHRydWUsIGZhbHNlLCAwLCBtX21hdGNoZWREZWNsQ291bnQtMSk7CisgICAgYXBw
bHlEZWNsYXJhdGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOworCisg
ICAgaWYgKGZvbnREaXJ0eSkKKyAgICAgICAgYWRqdXN0Rm9udCgpOworCisgICAgLy8gTm93IGRv
IHRoZSBub3JtYWwgcHJpb3JpdHkgVUEgcHJvcGVydGllcy4KKyAgICBhcHBseURlY2xhcmF0aW9u
cyhmYWxzZSwgZmFsc2UsIGZpcnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKKworICAgIC8vIENhY2hl
IG91ciBib3JkZXIgYW5kIGJhY2tncm91bmQgc28gdGhhdCB3ZSBjYW4gZXhhbWluZSB0aGVtIGxh
dGVyLgorICAgIGNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOworCisgICAgLy8gTm93IGRvIHRo
ZSBhdXRob3IgYW5kIHVzZXIgbm9ybWFsIHByaW9yaXR5IHByb3BlcnRpZXMgYW5kIGFsbCB0aGUg
IWltcG9ydGFudCBwcm9wZXJ0aWVzLgorICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVl
LCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CisKKyAgICBpZiAoZm9udERpcnR5KQorICAgICAg
ICBhZGp1c3RGb250KCk7CisKKyAgICAvLyBDbGVhbiB1cCBvdXIgc3R5bGUgb2JqZWN0J3MgZGlz
cGxheSBhbmQgdGV4dCBkZWNvcmF0aW9ucyAoYW1vbmcgb3RoZXIgZml4dXBzKS4KKyAgICBhZGp1
c3RSZW5kZXJTdHlsZShzdHlsZSwgZSk7CisKKyAgICByZXR1cm4gc3R5bGU7Cit9CisKIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0UmVuZGVyU3R5bGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBF
bGVtZW50ICplKQogewogICAgIC8vIENhY2hlIG91ciBvcmlnaW5hbCBkaXNwbGF5LgpAQCAtMTAz
Nyw2ICsxMTAxLDI0IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YWRqdXN0UmVuZGVyU3R5bGUK
ICAgICAgICAgdmlldy0+dXNlU2xvd1JlcGFpbnRzKCk7CiB9CiAKK3ZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6YWRqdXN0Rm9udCgpCit7CisgICAgY2hlY2tGb3JUZXh0U2l6ZUFkanVzdCgpOworICAg
IGNoZWNrRm9yR2VuZXJpY0ZhbWlseUNoYW5nZShzdHlsZSwgcGFyZW50U3R5bGUpOworICAgIHN0
eWxlLT5mb250KCkudXBkYXRlKCk7CisgICAgZm9udERpcnR5ID0gZmFsc2U7Cit9CisKK3ZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6Y2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCkKK3sKKyAgICBtX2hh
c1VBQXBwZWFyYW5jZSA9IHN0eWxlLT5oYXNBcHBlYXJhbmNlKCk7CisgICAgaWYgKG1faGFzVUFB
cHBlYXJhbmNlKSB7CisgICAgICAgIG1fYm9yZGVyRGF0YSA9IHN0eWxlLT5ib3JkZXIoKTsKKyAg
ICAgICAgbV9iYWNrZ3JvdW5kRGF0YSA9ICpzdHlsZS0+YmFja2dyb3VuZExheWVycygpOworICAg
ICAgICBtX2JhY2tncm91bmRDb2xvciA9IHN0eWxlLT5iYWNrZ3JvdW5kQ29sb3IoKTsKKyAgICB9
Cit9CisKIFJlZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0Zv
ckVsZW1lbnQoRWxlbWVudCogZSwgYm9vbCBhdXRob3JPbmx5KQogewogICAgIGlmICghZS0+ZG9j
dW1lbnQoKS0+aGF2ZVN0eWxlc2hlZXRzTG9hZGVkKCkpCkBAIC0xMDQ4LDE3ICsxMTMwLDkgQEAg
UmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpzdAogICAgIGluaXRGb3JTdHls
ZVJlc29sdmUoZSwgMCk7CiAgICAgCiAgICAgaWYgKCFhdXRob3JPbmx5KSB7Ci0gICAgICAgIC8v
IEZpcnN0IHdlIG1hdGNoIHJ1bGVzIGZyb20gdGhlIHVzZXIgYWdlbnQgc2hlZXQuCiAgICAgICAg
IGludCBmaXJzdFVBUnVsZSA9IC0xLCBsYXN0VUFSdWxlID0gLTE7Ci0gICAgICAgIG1hdGNoUnVs
ZXMoZGVmYXVsdFN0eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7Ci0gICAgICAgIAotICAg
ICAgICAvLyBJbiBxdWlya3MgbW9kZSwgd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgcXVpcmtzIHVz
ZXIgYWdlbnQgc2hlZXQuCi0gICAgICAgIGlmICghc3RyaWN0UGFyc2luZykKLSAgICAgICAgICAg
IG1hdGNoUnVsZXMoZGVmYXVsdFF1aXJrc1N0eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7
Ci0gICAgICAgIAotICAgICAgICAvLyBJZiBvdXIgbWVkaXVtIGlzIHByaW50LCB0aGVuIHdlIG1h
dGNoIHJ1bGVzIGZyb20gdGhlIHByaW50IHNoZWV0LgotICAgICAgICBpZiAobV9tZWRpYVR5cGUg
PT0gInByaW50IikKLSAgICAgICAgICAgIG1hdGNoUnVsZXMoZGVmYXVsdFByaW50U3R5bGUsIGZp
cnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKKyAgICAgICAgLy8gRmlyc3Qgd2UgbWF0Y2ggcnVsZXMg
ZnJvbSB0aGUgdXNlciBhZ2VudCBzaGVldC4KKyAgICAgICAgbWF0Y2hVQUFuZFByaW50UnVsZXMo
Zmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogCiAgICAgICAgIC8vIE5vdyB3ZSBjaGVjayB1c2Vy
IHNoZWV0IHJ1bGVzLgogICAgICAgICBpbnQgZmlyc3RVc2VyUnVsZSA9IC0xLCBsYXN0VXNlclJ1
bGUgPSAtMTsKQEAgLTE1ODcsMTQgKzE2NjEsMTQgQEAgdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxl
KENTU1N0eWxlUnVsZSogcgogICAgICAgICBtX3VuaXZlcnNhbFJ1bGVzLT5hcHBlbmQobV9ydWxl
Q291bnQrKywgcnVsZSwgc2VsKTsKIH0KIAotdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxlc0Zyb21T
aGVldChDU1NTdHlsZVNoZWV0ICpzaGVldCwgY29uc3QgU3RyaW5nICZtZWRpdW0pCit2b2lkIENT
U1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqIHNoZWV0LCAgTWVkaWFR
dWVyeUV2YWx1YXRvciogbWVkaXVtKQogewogICAgIGlmICghc2hlZXQgfHwgIXNoZWV0LT5pc0NT
U1N0eWxlU2hlZXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm8gbWVkaWEgaW1wbGll
cyAiYWxsIiwgYnV0IGlmIGEgbWVkaWEgbGlzdCBleGlzdHMgaXQgbXVzdAogICAgIC8vIGNvbnRh
aW4gb3VyIGN1cnJlbnQgbWVkaXVtCi0gICAgaWYgKHNoZWV0LT5tZWRpYSgpICYmICFzaGVldC0+
bWVkaWEoKS0+Y29udGFpbnMobWVkaXVtKSkKKyAgICBpZiAoc2hlZXQtPm1lZGlhKCkgJiYgIW1l
ZGl1bS0+ZXZhbChzaGVldC0+bWVkaWEoKSkpCiAgICAgICAgIHJldHVybjsgLy8gdGhlIHN0eWxl
IHNoZWV0IGRvZXNuJ3QgYXBwbHkKIAogICAgIGludCBsZW4gPSBzaGVldC0+bGVuZ3RoKCk7CkBA
IC0xNjA4LDE0ICsxNjgyLDE0IEBAIHZvaWQgQ1NTUnVsZVNldDo6YWRkUnVsZXNGcm9tU2hlZXQo
Q1NTU3QKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmKGl0ZW0tPmlzSW1wb3J0UnVsZSgpKSB7
CiAgICAgICAgICAgICBDU1NJbXBvcnRSdWxlKiBpbXBvcnQgPSBzdGF0aWNfY2FzdDxDU1NJbXBv
cnRSdWxlKj4oaXRlbSk7Ci0gICAgICAgICAgICBpZiAoIWltcG9ydC0+bWVkaWEoKSB8fCBpbXBv
cnQtPm1lZGlhKCktPmNvbnRhaW5zKG1lZGl1bSkpCisgICAgICAgICAgICBpZiAoIWltcG9ydC0+
bWVkaWEoKSB8fCBtZWRpdW0tPmV2YWwoaW1wb3J0LT5tZWRpYSgpKSkKICAgICAgICAgICAgICAg
ICBhZGRSdWxlc0Zyb21TaGVldChpbXBvcnQtPnN0eWxlU2hlZXQoKSwgbWVkaXVtKTsKICAgICAg
ICAgfQogICAgICAgICBlbHNlIGlmKGl0ZW0tPmlzTWVkaWFSdWxlKCkpIHsKICAgICAgICAgICAg
IENTU01lZGlhUnVsZSogciA9IHN0YXRpY19jYXN0PENTU01lZGlhUnVsZSo+KGl0ZW0pOwogICAg
ICAgICAgICAgQ1NTUnVsZUxpc3QqIHJ1bGVzID0gci0+Y3NzUnVsZXMoKTsKIAotICAgICAgICAg
ICAgaWYgKCghci0+bWVkaWEoKSB8fCByLT5tZWRpYSgpLT5jb250YWlucyhtZWRpdW0pKSAmJiBy
dWxlcykgeworICAgICAgICAgICAgaWYgKCghci0+bWVkaWEoKSB8fCBtZWRpdW0tPmV2YWwoci0+
bWVkaWEoKSkpICYmIHJ1bGVzKSB7CiAgICAgICAgICAgICAgICAgLy8gVHJhdmVyc2UgY2hpbGQg
ZWxlbWVudHMgb2YgdGhlIEBtZWRpYSBydWxlLgogICAgICAgICAgICAgICAgIGZvciAodW5zaWdu
ZWQgaiA9IDA7IGogPCBydWxlcy0+bGVuZ3RoKCk7IGorKykgewogICAgICAgICAgICAgICAgICAg
ICBDU1NSdWxlICpjaGlsZEl0ZW0gPSBydWxlcy0+aXRlbShqKTsKSW5kZXg6IFdlYkNvcmUvY3Nz
L2Nzc3BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5oCShyZXZp
c2lvbiAxNDU1NSkKKysrIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDMsNiArNDQsOSBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgY2xhc3MgTWVkaWFMaXN0OwogICAgIGNsYXNzIFN0eWxlQmFzZTsKICAgICBjbGFz
cyBTdHlsZUxpc3Q7CisgICAgY2xhc3MgTWVkaWFMaXN0OworICAgIGNsYXNzIE1lZGlhUXVlcnlF
eHA7CisKIAogICAgIHN0cnVjdCBQYXJzZVN0cmluZyB7CiAgICAgICAgIFVDaGFyKiBjaGFyYWN0
ZXJzOwpAQCAtMTEwLDYgKzExNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgc3Rh
dGljIFJHQkEzMiBwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBib29sIHBhcnNl
Q29sb3IoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmKTsKICAgICAg
ICAgYm9vbCBwYXJzZURlY2xhcmF0aW9uKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiwgY29u
c3QgU3RyaW5nJik7CisgICAgICAgIGJvb2wgcGFyc2VNZWRpYVF1ZXJ5KE1lZGlhTGlzdCosIGNv
bnN0IFN0cmluZyYpOwogCiAgICAgICAgIHN0YXRpYyBDU1NQYXJzZXIqIGN1cnJlbnQoKSB7IHJl
dHVybiBjdXJyZW50UGFyc2VyOyB9CiAKQEAgLTE3NywxMiArMTgyLDIwIEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgQ1NTUnVsZUxpc3QqIGNyZWF0ZVJ1bGVMaXN0KCk7CiAgICAgICAg
IENTU1J1bGUqIGNyZWF0ZVN0eWxlUnVsZShDU1NTZWxlY3RvciopOwogCisgICAgICAgIE1lZGlh
UXVlcnlFeHAqIGNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cChjb25zdCBBdG9taWNTdHJpbmcm
LCBWYWx1ZUxpc3QqKTsKKyAgICAgICAgTWVkaWFRdWVyeUV4cCogc2lua0Zsb2F0aW5nTWVkaWFR
dWVyeUV4cChNZWRpYVF1ZXJ5RXhwKik7CisgICAgICAgIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4q
IGNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKTsKKyAgICAgICAgVmVjdG9yPE1lZGlh
UXVlcnlFeHAqPiogc2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoVmVjdG9yPE1lZGlhUXVl
cnlFeHAqPiopOworICAgICAgICBNZWRpYVF1ZXJ5KiBjcmVhdGVGbG9hdGluZ01lZGlhUXVlcnko
TWVkaWFRdWVyeTo6UmVzdHJpY3RvciwgY29uc3QgU3RyaW5nJiwgVmVjdG9yPE1lZGlhUXVlcnlF
eHAqPiopOworICAgICAgICBNZWRpYVF1ZXJ5KiBzaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KE1lZGlh
UXVlcnkqKTsKKwogICAgIHB1YmxpYzoKICAgICAgICAgYm9vbCBzdHJpY3Q7CiAgICAgICAgIGJv
b2wgaW1wb3J0YW50OwogICAgICAgICBpbnQgaWQ7CiAgICAgICAgIFN0eWxlTGlzdCogc3R5bGVF
bGVtZW50OwogICAgICAgICBSZWZQdHI8Q1NTUnVsZT4gcnVsZTsKKyAgICAgICAgTWVkaWFRdWVy
eSogbWVkaWFRdWVyeTsKICAgICAgICAgVmFsdWVMaXN0KiB2YWx1ZUxpc3Q7CiAgICAgICAgIENT
U1Byb3BlcnR5KiogcGFyc2VkUHJvcGVydGllczsKICAgICAgICAgaW50IG51bVBhcnNlZFByb3Bl
cnRpZXM7CkBAIC0yMjYsNiArMjM5LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
SGFzaFNldDxWYWx1ZUxpc3QqPiBtX2Zsb2F0aW5nVmFsdWVMaXN0czsKICAgICAgICAgSGFzaFNl
dDxGdW5jdGlvbio+IG1fZmxvYXRpbmdGdW5jdGlvbnM7CiAKKyAgICAgICAgTWVkaWFRdWVyeSog
bV9mbG9hdGluZ01lZGlhUXVlcnk7CisgICAgICAgIE1lZGlhUXVlcnlFeHAqIG1fZmxvYXRpbmdN
ZWRpYVF1ZXJ5RXhwOworICAgICAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBtX2Zsb2F0aW5n
TWVkaWFRdWVyeUV4cExpc3Q7CisKICAgICAgICAgLy8gZGVmaW5lcyB1bml0cyBhbGxvd2VkIGZv
ciBhIGNlcnRhaW4gcHJvcGVydHksIHVzZWQgaW4gcGFyc2VVbml0CiAgICAgICAgIGVudW0gVW5p
dHMgewogICAgICAgICAgICAgRlVua25vd24gICA9IDB4MDAwMCwKSW5kZXg6IFdlYkNvcmUvY3Nz
L01lZGlhUXVlcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjIgQEAKKy8qCisgKiBDU1MgTWVkaWEgUXVlcnkKKyAqCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDYgS2ltbW8gS2lubnVuZW4gPGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IE1lZGlhUXVlcnlfaAorI2RlZmluZSBNZWRpYVF1ZXJ5X2gKKworI2luY2x1ZGUgIlBsYXRmb3Jt
U3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CitjbGFzcyBNZWRpYVF1ZXJ5RXhwOworCitjbGFzcyBNZWRpYVF1ZXJ5Cit7CitwdWJsaWM6Cisg
ICAgZW51bSBSZXN0cmljdG9yIHsKKyAgICAgICAgT25seSwgTm90LCBOb25lCisgICAgfTsKKwor
ICAgIE1lZGlhUXVlcnkoUmVzdHJpY3RvciByLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgVmVj
dG9yPE1lZGlhUXVlcnlFeHAqPiogZXhwcnMpOworICAgIH5NZWRpYVF1ZXJ5KCk7CisKKyAgICBS
ZXN0cmljdG9yIHJlc3RyaWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3Jlc3RyaWN0b3I7IH0KKyAg
ICBjb25zdCBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBleHByZXNzaW9ucygpIGNvbnN0IHsgcmV0
dXJuIG1fZXhwcmVzc2lvbnM7IH0KKyAgICBTdHJpbmcgbWVkaWFUeXBlKCkgY29uc3QgeyByZXR1
cm4gbV9tZWRpYVR5cGU7IH0KKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgTWVkaWFRdWVyeSYg
b3RoZXIpIGNvbnN0OworICAgIHZvaWQgYXBwZW5kKE1lZGlhUXVlcnlFeHAqIG5ld0V4cCkgeyBt
X2V4cHJlc3Npb25zLT5hcHBlbmQobmV3RXhwKTsgfQorICAgIFN0cmluZyBjc3NUZXh0KCkgY29u
c3Q7CisKKyBwcml2YXRlOgorICAgIFJlc3RyaWN0b3IgbV9yZXN0cmljdG9yOworICAgIFN0cmlu
ZyBtX21lZGlhVHlwZTsKKyAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBtX2V4cHJlc3Npb25z
OworfTsKKworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL2Nzcy9tYWtl
dG9rZW5pemVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL21ha2V0b2tlbml6ZXIJKHJldmlz
aW9uIDE0NTU1KQorKysgV2ViQ29yZS9jc3MvbWFrZXRva2VuaXplcgkod29ya2luZyBjb3B5KQpA
QCAtNTMsNiArNTMsMTUgQEAgd2hpbGUgKDw+KSB7CiAgICAgcHJpbnQ7CiB9CiAKKyMgbWVkaWEg
cXVlcnksIHRva2VuaXplciBzdGF0ZSBzdXBwb3J0Cit3aGlsZSAoPD4pIHsKKyAgbGFzdCBpZiAv
eXl0ZXh0LzsKK30KK3doaWxlICg8PikgeworICBsYXN0IGlmIG5vdCAoL2RlZmluZS8gfHwgL2xp
bmUvKSA7CisgIHByaW50OworfQorCiB3aGlsZSAoPD4pIHsKICAgICBsYXN0IGlmIC9eWVlfREVD
TC87CiB9CkluZGV4OiBXZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2Nzcy9TdHlsZVNoZWV0LmNwcAkocmV2aXNpb24gMTQ1NTUpCisrKyBXZWJDb3JlL2Nz
cy9TdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjQsNyArNjQsMTEgQEAgU3R5bGVT
aGVldCogU3R5bGVTaGVldDo6cGFyZW50U3R5bGVTaGVldAogCiB2b2lkIFN0eWxlU2hlZXQ6OnNl
dE1lZGlhKE1lZGlhTGlzdCogbWVkaWEpCiB7CisgICAgaWYgKG1fbWVkaWEpCisgICAgICAgIG1f
bWVkaWEtPnNldFBhcmVudCgwKTsKKwogICAgIG1fbWVkaWEgPSBtZWRpYTsKKyAgICBtX21lZGlh
LT5zZXRQYXJlbnQodGhpcyk7CiB9CiAKIH0KSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnku
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
OTcgQEAKKy8qCisgKiBDU1MgTWVkaWEgUXVlcnkKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDYgS2ltbW8gS2lubnVuZW4gPGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgorCisjaW5jbHVkZSAiTWVkaWFR
dWVyeUV4cC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK01lZGlhUXVlcnk6Ok1lZGlhUXVl
cnkoUmVzdHJpY3RvciByLCBjb25zdCBTdHJpbmcmIG1lZGlhVHlwZSwgVmVjdG9yPE1lZGlhUXVl
cnlFeHAqPiogZXhwcnMpCisgICAgOiBtX3Jlc3RyaWN0b3IocikKKyAgICAsIG1fbWVkaWFUeXBl
KG1lZGlhVHlwZSkKKyAgICAsIG1fZXhwcmVzc2lvbnMoZXhwcnMpCit7CisgICAgaWYgKCFtX2V4
cHJlc3Npb25zKQorICAgICAgICBtX2V4cHJlc3Npb25zID0gbmV3IFZlY3RvcjxNZWRpYVF1ZXJ5
RXhwKj47Cit9CisKK01lZGlhUXVlcnk6On5NZWRpYVF1ZXJ5KCkKK3sKKyAgICBpZiAobV9leHBy
ZXNzaW9ucykgeworICAgICAgICBkZWxldGVBbGxWYWx1ZXMoKm1fZXhwcmVzc2lvbnMpOworICAg
ICAgICBkZWxldGUgbV9leHByZXNzaW9uczsKKyAgICB9Cit9CisKK2Jvb2wgTWVkaWFRdWVyeTo6
b3BlcmF0b3I9PShjb25zdCBNZWRpYVF1ZXJ5JiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9y
ZXN0cmljdG9yICE9IG90aGVyLm1fcmVzdHJpY3RvcgorICAgICAgICB8fCBtX21lZGlhVHlwZSAh
PSBvdGhlci5tX21lZGlhVHlwZQorICAgICAgICB8fCBtX2V4cHJlc3Npb25zLT5zaXplKCkgIT0g
b3RoZXIubV9leHByZXNzaW9ucy0+c2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fZXhwcmVzc2lvbnMtPnNpemUoKTsgKytpKSB7Cisg
ICAgICAgIE1lZGlhUXVlcnlFeHAqIGV4cCA9IG1fZXhwcmVzc2lvbnMtPmF0KGkpOworICAgICAg
ICBNZWRpYVF1ZXJ5RXhwKiBvZXhwID0gb3RoZXIubV9leHByZXNzaW9ucy0+YXQoaSk7CisgICAg
ICAgIGlmICghKCpleHAgPT0gKm9leHApKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IH0KKworICAgIHJldHVybiB0cnVlOworfQorCitTdHJpbmcgTWVkaWFRdWVyeTo6Y3NzVGV4dCgp
IGNvbnN0Cit7CisgICAgU3RyaW5nIHRleHQ7CisgICAgc3dpdGNoIChtX3Jlc3RyaWN0b3IpIHsK
KyAgICAgICAgY2FzZSBNZWRpYVF1ZXJ5OjpPbmx5OgorICAgICAgICAgICAgdGV4dCArPSAib25s
eSAiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTWVkaWFRdWVyeTo6Tm90Ogor
ICAgICAgICAgICAgdGV4dCArPSAibm90ICI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBNZWRpYVF1ZXJ5OjpOb25lOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIHRleHQgKz0gbV9tZWRpYVR5cGU7CisgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBtX2V4cHJlc3Npb25zLT5zaXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVF1ZXJ5
RXhwKiBleHAgPSBtX2V4cHJlc3Npb25zLT5hdChpKTsKKyAgICAgICAgdGV4dCArPSAiIGFuZCAo
IjsKKyAgICAgICAgdGV4dCArPSBleHAtPm1lZGlhRmVhdHVyZSgpOworICAgICAgICBpZiAoZXhw
LT52YWx1ZSgpKSB7CisgICAgICAgICAgICB0ZXh0ICs9ICI6ICI7CisgICAgICAgICAgICB0ZXh0
ICs9IGV4cC0+dmFsdWUoKS0+Y3NzVGV4dCgpOworICAgICAgICB9CisgICAgICAgIHRleHQgKz0g
IikiOworICAgIH0KKyAgICByZXR1cm4gdGV4dDsKK30KKworfSAvL25hbWVzcGFjZQpJbmRleDog
V2ViQ29yZS9jc3MvY3NzcGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3Nw
YXJzZXIuY3BwCShyZXZpc2lvbiAxNDU1NSkKKysrIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5j
bHVkZSAiU2hhZG93VmFsdWUuaCIKICNpbmNsdWRlICJjc3NoZWxwZXIuaCIKKyNpbmNsdWRlICJN
ZWRpYVF1ZXJ5RXhwLmgiCiAKICNkZWZpbmUgWVlERUJVRyAwCiAKQEAgLTkyLDYgKzkzLDkgQEAg
bmFtZXNwYWNlIHsKIENTU1BhcnNlciogQ1NTUGFyc2VyOjpjdXJyZW50UGFyc2VyID0gMDsKIAog
Q1NTUGFyc2VyOjpDU1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQorICAgIDogbV9mbG9hdGlu
Z01lZGlhUXVlcnkoMCkKKyAgICAsIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKDApCisgICAgLCBt
X2Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoMCkKIHsKICNpZmRlZiBDU1NfREVCVUcKICAgICBr
ZERlYnVnKDYwODApIDw8ICJDU1NQYXJzZXI6OkNTU1BhcnNlciB0aGlzPSIgPDwgdGhpcyA8PCBl
bmRsOwpAQCAtMTI4LDYgKzEzMiwxMiBAQCBDU1NQYXJzZXI6On5DU1NQYXJzZXIoKQogCiAgICAg
ZmFzdEZyZWUoZGF0YSk7CiAKKyAgICBpZiAobV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KSB7
CisgICAgICAgIGRlbGV0ZUFsbFZhbHVlcygqbV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KTsK
KyAgICAgICAgZGVsZXRlIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdDsKKyAgICB9CisgICAg
ZGVsZXRlIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwOworICAgIGRlbGV0ZSBtX2Zsb2F0aW5nTWVk
aWFRdWVyeTsKICAgICBkZWxldGVBbGxWYWx1ZXMobV9mbG9hdGluZ1NlbGVjdG9ycyk7CiAgICAg
ZGVsZXRlQWxsVmFsdWVzKG1fZmxvYXRpbmdWYWx1ZUxpc3RzKTsKICAgICBkZWxldGVBbGxWYWx1
ZXMobV9mbG9hdGluZ0Z1bmN0aW9ucyk7CkBAIC0xNTAsNiArMTYwLDkgQEAgdm9pZCBQYXJzZVN0
cmluZzo6bG93ZXIoKQogdm9pZCBDU1NQYXJzZXI6OnNldHVwUGFyc2VyKGNvbnN0IGNoYXIqIHBy
ZWZpeCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHN1ZmZpeCkKIHsKICAgICBp
bnQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpICsgc3RybGVuKHByZWZpeCkgKyBzdHJsZW4oc3Vm
Zml4KSArIDI7CisKKyAgICBpZiAoZGF0YSkKKyAgICAgICAgZmFzdEZyZWUoZGF0YSk7CiAgICAg
CiAgICAgZGF0YSA9IHN0YXRpY19jYXN0PFVDaGFyKj4oZmFzdE1hbGxvYyhsZW5ndGggKiBzaXpl
b2YoVUNoYXIpKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0cmxlbihwcmVmaXgp
OyBpKyspCkBAIC0yOTIsNiArMzA1LDMyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0
aW9uKENTU011dGEKICAgICByZXR1cm4gb2s7CiB9CiAKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZU1l
ZGlhUXVlcnkoTWVkaWFMaXN0KiBxdWVyaWVzLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAg
ICBpZiAoc3RyaW5nLmlzRW1wdHkoKSB8fCBzdHJpbmcuaXNOdWxsKCkpIHsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgbWVkaWFRdWVyeSA9IDA7CisgICAgLy8gY2FuJ3QgdXNl
IHsgYmVjYXVzZSB0b2tlbml6ZXIgc3RhdGUgc3dpdGNoZXMgZnJvbSBtZWRpYXF1ZXJ5IHRvIGlu
aXRpYWwgc3RhdGUgd2hlbiBpdCBzZWVzIHsgdG9rZW4uCisgICAgLy8gaW5zdGVhZCBpbnNlcnQg
b25lICIgIiAod2hpY2ggaXMgV0hJVEVTUEFDRSBpbiBDU1NHcmFtbWFyLnkpCisgICAgc2V0dXBQ
YXJzZXIgKCJALXdlYmtpdC1tZWRpYXF1ZXJ5ICIsIHN0cmluZywgIn0gIik7CisKKyAgICBDU1NQ
YXJzZXIqIG9sZCA9IGN1cnJlbnRQYXJzZXI7CisgICAgY3VycmVudFBhcnNlciA9IHRoaXM7Cisg
ICAgY3NzeXlwYXJzZSh0aGlzKTsKKyAgICBjdXJyZW50UGFyc2VyID0gb2xkOworCisgICAgYm9v
bCBvayA9IGZhbHNlOworICAgIGlmIChtZWRpYVF1ZXJ5KSB7CisgICAgICAgIG9rID0gdHJ1ZTsK
KyAgICAgICAgcXVlcmllcy0+YXBwZW5kTWVkaWFRdWVyeShtZWRpYVF1ZXJ5KTsKKyAgICAgICAg
bWVkaWFRdWVyeSA9IDA7CisgICAgfQorCisgICAgcmV0dXJuIG9rOworfQorCiAKIHZvaWQgQ1NT
UGFyc2VyOjphZGRQcm9wZXJ0eShpbnQgcHJvcElkLCBDU1NWYWx1ZSAqdmFsdWUsIGJvb2wgaW1w
b3J0YW50KQogewpAQCAtMjg1Niw2ICsyODk1LDUxIEBAIFZhbHVlJiBDU1NQYXJzZXI6OnNpbmtG
bG9hdGluZ1ZhbHVlKFZhbHUKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK01lZGlhUXVlcnlFeHAq
IENTU1BhcnNlcjo6Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKGNvbnN0IEF0b21pY1N0cmlu
ZyYgbWVkaWFGZWF0dXJlLCBWYWx1ZUxpc3QqIHZhbHVlcykKK3sKKyAgICBkZWxldGUgbV9mbG9h
dGluZ01lZGlhUXVlcnlFeHA7CisgICAgbV9mbG9hdGluZ01lZGlhUXVlcnlFeHAgPSBuZXcgTWVk
aWFRdWVyeUV4cChtZWRpYUZlYXR1cmUsIHZhbHVlcyk7CisgICAgcmV0dXJuIG1fZmxvYXRpbmdN
ZWRpYVF1ZXJ5RXhwOworfQorCitNZWRpYVF1ZXJ5RXhwKiBDU1NQYXJzZXI6OnNpbmtGbG9hdGlu
Z01lZGlhUXVlcnlFeHAoTWVkaWFRdWVyeUV4cCogZSkKK3sKKyAgICBBU1NFUlQoZSA9PSBtX2Zs
b2F0aW5nTWVkaWFRdWVyeUV4cCk7CisgICAgbV9mbG9hdGluZ01lZGlhUXVlcnlFeHAgPSAwOwor
ICAgIHJldHVybiBlOworfQorCitWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBDU1NQYXJzZXI6OmNy
ZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKQoreworICAgIGlmIChtX2Zsb2F0aW5nTWVk
aWFRdWVyeUV4cExpc3QpIHsKKyAgICAgICAgZGVsZXRlQWxsVmFsdWVzKCptX2Zsb2F0aW5nTWVk
aWFRdWVyeUV4cExpc3QpOworICAgICAgICBkZWxldGUgbV9mbG9hdGluZ01lZGlhUXVlcnlFeHBM
aXN0OworICAgIH0KKyAgICBtX2Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QgPSBuZXcgVmVjdG9y
PE1lZGlhUXVlcnlFeHAqPjsKKyAgICByZXR1cm4gbV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0
OworfQorCitWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ01l
ZGlhUXVlcnlFeHBMaXN0KFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4qIGwpCit7CisgICAgQVNTRVJU
KGwgPT0gbV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KTsKKyAgICBtX2Zsb2F0aW5nTWVkaWFR
dWVyeUV4cExpc3QgPSAwOworICAgIHJldHVybiBsOworfQorCitNZWRpYVF1ZXJ5KiBDU1NQYXJz
ZXI6OmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHIsIGNv
bnN0IFN0cmluZyYgbWVkaWFUeXBlLCBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBleHBycykKK3sK
KyAgICBkZWxldGUgbV9mbG9hdGluZ01lZGlhUXVlcnk7CisgICAgbV9mbG9hdGluZ01lZGlhUXVl
cnkgPSBuZXcgTWVkaWFRdWVyeShyLCBtZWRpYVR5cGUsIGV4cHJzKTsKKyAgICByZXR1cm4gbV9m
bG9hdGluZ01lZGlhUXVlcnk7Cit9CisKK01lZGlhUXVlcnkqIENTU1BhcnNlcjo6c2lua0Zsb2F0
aW5nTWVkaWFRdWVyeShNZWRpYVF1ZXJ5KiBtcSkKK3sKKyAgICBBU1NFUlQobXEgPT0gbV9mbG9h
dGluZ01lZGlhUXVlcnkpOworICAgIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5ID0gMDsKKyAgICByZXR1
cm4gbXE7Cit9CisKIE1lZGlhTGlzdCogQ1NTUGFyc2VyOjpjcmVhdGVNZWRpYUxpc3QoKQogewog
ICAgIE1lZGlhTGlzdCogbGlzdCA9IG5ldyBNZWRpYUxpc3Q7CkBAIC0yOTM1LDYgKzMwMTksMTMg
QEAgdHlwZWRlZiB1bnNpZ25lZCBZWV9DSEFSOwogI2RlZmluZSBZWV9TVEFURV9FT0Yoc3RhdGUp
IChZWV9FTkRfT0ZfQlVGRkVSICsgc3RhdGUgKyAxKQogI2RlZmluZSB5eXRlcm1pbmF0ZSgpIHl5
VG9rID0gRU5EX1RPS0VOOyByZXR1cm4geXlUb2sKICNkZWZpbmUgWVlfRkFUQUxfRVJST1IoYSkK
Ky8vIFRoZSBsaW5lIGJlbG93IGlzIG5lZWRlZCB0byBidWlsZCB0aGUgdG9rZW5pemVyIHdpdGgg
Y29uZGl0b24gc3RhY2suCisvLyBUaGUgbWFjcm8gaXMgdXNlZCBpbiB0aGUgdG9rZW5pemVyIGdy
YW1tYXIgd2l0aCBsaW5lcyBjb250YWluaW5nCisvLyBCRUdJTihtZWRpYXF1ZXJpZXMpIGFuZCBC
RUdJTihpbml0aWFsKS4geXlfc3RhcnQgYWN0cyBhcyBpbmRleCB0bworLy8gdG9rZW5pemVyIHRy
YW5zaXRpb24gdGFibGUsIGFuZCAnbWVkaWFxdWVyaWVzJyBhbmQgJ2luaXRpYWwnIGFyZQorLy8g
b2Zmc2V0IG11bHRpcGxpZXJzIHRoYXQgc3BlY2lmeSB3aGljaCB0cmFuc2l0aW9ucyBhcmUgYWN0
aXZlCisvLyBpbiB0aGUgdG9rZW5pemVyIGR1cmluZyBpbiBlYWNoIGNvbmRpdGlvbiAodG9rZW5p
emVyIHN0YXRlKQorI2RlZmluZSBCRUdJTiB5eV9zdGFydCA9IDEgKyAyICoKIAogI2luY2x1ZGUg
InRva2VuaXplci5jcHAiCiAKSW5kZXg6IFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmgJKHJldmlzaW9uIDE0
NTU1KQorKysgV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw3IEBAIGNsYXNzIENTU1NlbGVjdG9yOwogY2xhc3MgQ1NTU3R5bGVSdWxlOwog
Y2xhc3MgQ1NTU3R5bGVTaGVldDsKIGNsYXNzIENTU1ZhbHVlOworY2xhc3MgTWVkaWFRdWVyeUV2
YWx1YXRvcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgRWxlbWVudDsKIGNsYXNzIEZyYW1lOwpA
QCAtMTc3LDcgKzE3OCwxMiBAQCBwdWJsaWM6CiAgCiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9p
ZCBpbml0KCk7Ci0gICAgICAgIAorCisgICAgICAgIHZvaWQgbWF0Y2hVQUFuZFByaW50UnVsZXMo
aW50JiBmaXJzdFVBUnVsZSwgaW50JiBsYXN0VUFSdWxlKTsKKyAgICAgICAgdm9pZCBhZGp1c3RG
b250KCk7CisgICAgICAgIHZvaWQgY2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCk7CisgICAgICAg
IFJlbmRlclN0eWxlKiBkZWZhdWx0U3R5bGVGb3JSb290KEVsZW1lbnQqIGUpOworICAgICAgICAg
CiAgICAgICAgIHZvaWQgbWFwQmFja2dyb3VuZEF0dGFjaG1lbnQoQmFja2dyb3VuZExheWVyKiBs
YXllciwgQ1NTVmFsdWUqIHZhbHVlKTsKICAgICAgICAgdm9pZCBtYXBCYWNrZ3JvdW5kQ2xpcChC
YWNrZ3JvdW5kTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpOwogICAgICAgICB2b2lkIG1h
cEJhY2tncm91bmRPcmlnaW4oQmFja2dyb3VuZExheWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVl
KTsKQEAgLTIwMyw3ICsyMDksOCBAQCBwdWJsaWM6CiAgICAgICAgIENTU1J1bGVMaXN0KiBtX3J1
bGVMaXN0OwogICAgICAgICBib29sIG1fY29sbGVjdFJ1bGVzT25seTsKIAotICAgICAgICBTdHJp
bmcgbV9tZWRpYVR5cGU7CisgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IqIG1fbWVkaXVtOwor
ICAgICAgICBSZW5kZXJTdHlsZSogbV9yb290RGVmYXVsdFN0eWxlOwogCiAgICAgICAgIFJlbmRl
clN0eWxlOjpQc2V1ZG9JZCBkeW5hbWljUHNldWRvOwogICAgICAgICAKSW5kZXg6IFdlYkNvcmUv
Y3NzL01lZGlhRmVhdHVyZU5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFG
ZWF0dXJlTmFtZXMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5h
bWVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMg
cGFydCBvZiB0aGUgQ1NTIGltcGxlbWVudGF0aW9uIGZvciBLREUuCisgKgorICogQ29weXJpZ2h0
IChDKSAyMDA1IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExp
Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl
cgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBN
QSAwMjExMS0xMzA3LCBVU0EuCisgKgorICovCisjaWZuZGVmIE1FRElBRkVBVFVSRU5BTUVTX0gK
KyNkZWZpbmUgTUVESUFGRUFUVVJFTkFNRVNfSAorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIE1lZGlhRmVhdHVyZU5hbWVzIHsKKwor
I2RlZmluZSBDU1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUobWFjcm8p
IFwKKyAgICBtYWNybyhjb2xvciwgImNvbG9yIikgXAorICAgIG1hY3JvKGdyaWQsICJncmlkIikg
XAorICAgIG1hY3JvKG1vbm9jaHJvbWUsICJtb25vY2hyb21lIikgXAorICAgIG1hY3JvKGhlaWdo
dCwgImhlaWdodCIpIFwKKyAgICBtYWNybyh3aWR0aCwgIndpZHRoIikgXAorICAgIG1hY3JvKGRl
dmljZV9hc3BlY3RfcmF0aW8sICJkZXZpY2UtYXNwZWN0LXJhdGlvIikgXAorICAgIG1hY3JvKGRl
dmljZV9oZWlnaHQsICJkZXZpY2UtaGVpZ2h0IikgXAorICAgIG1hY3JvKGRldmljZV93aWR0aCwg
ImRldmljZS13aWR0aCIpIFwKKyAgICBtYWNybyhtYXhfY29sb3IsICJtYXgtY29sb3IiKSBcCisg
ICAgbWFjcm8obWF4X2RldmljZV9hc3BlY3RfcmF0aW8sICJtYXgtZGV2aWNlLWFzcGVjdC1yYXRp
byIpIFwKKyAgICBtYWNybyhtYXhfZGV2aWNlX2hlaWdodCwgIm1heC1kZXZpY2UtaGVpZ2h0Iikg
XAorICAgIG1hY3JvKG1heF9kZXZpY2Vfd2lkdGgsICJtYXgtZGV2aWNlLXdpZHRoIikgXAorICAg
IG1hY3JvKG1heF9oZWlnaHQsICJtYXgtaGVpZ2h0IikgXAorICAgIG1hY3JvKG1heF9tb25vY2hy
b21lLCAibWF4LW1vbm9jaHJvbWUiKSBcCisgICAgbWFjcm8obWF4X3dpZHRoLCAibWF4LXdpZHRo
IikgXAorICAgIG1hY3JvKG1pbl9jb2xvciwgIm1pbi1jb2xvciIpIFwKKyAgICBtYWNybyhtaW5f
ZGV2aWNlX2FzcGVjdF9yYXRpbywgIm1pbi1kZXZpY2UtYXNwZWN0LXJhdGlvIikgXAorICAgIG1h
Y3JvKG1pbl9kZXZpY2VfaGVpZ2h0LCAibWluLWRldmljZS1oZWlnaHQiKSBcCisgICAgbWFjcm8o
bWluX2RldmljZV93aWR0aCwgIm1pbi1kZXZpY2Utd2lkdGgiKSBcCisgICAgbWFjcm8obWluX2hl
aWdodCwgIm1pbi1oZWlnaHQiKSBcCisgICAgbWFjcm8obWluX21vbm9jaHJvbWUsICJtaW4tbW9u
b2Nocm9tZSIpIFwKKyAgICBtYWNybyhtaW5fd2lkdGgsICJtaW4td2lkdGgiKSBcCisvLyBlbmQg
b2YgbWFjcm8KKworI2lmICFDU1NfTUVESUFRVUVSWV9OQU1FU19ISURFX0dMT0JBTFMKKyAgICAj
ZGVmaW5lIENTU19NRURJQVFVRVJZX05BTUVTX0RFQ0xBUkUobmFtZSwgc3RyKSBleHRlcm4gY29u
c3QgQXRvbWljU3RyaW5nIG5hbWUjI01lZGlhRmVhdHVyZTsKKyAgICBDU1NfTUVESUFRVUVSWV9O
QU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoQ1NTX01FRElBUVVFUllfTkFNRVNfREVDTEFSRSkK
KyAgICAjdW5kZWYgQ1NTX01FRElBUVVFUllfTkFNRVNfREVDTEFSRQorI2VuZGlmCisKKyAgICAg
dm9pZCBpbml0KCk7Cit9IH0KKworI2VuZGlmCisKKwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQkocmV2aXNpb24g
MTQ1NTUpCisrKyBXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkJKHdvcmtpbmcgY29weSkKQEAgLTM4
LDYgKzM4LDggQEAKICNpbmNsdWRlIDxhc3NlcnQuaD4KICNpbmNsdWRlIDxzdGRsaWIuaD4KICNp
bmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlICJNZWRpYVF1ZXJ5LmgiCisjaW5jbHVkZSAiTWVk
aWFRdWVyeUV4cC5oIgogCiAjaWYgU1ZHX1NVUFBPUlQKICNpbmNsdWRlICJrc3ZnY3NzcHJvcGVy
dGllcy5oIgpAQCAtMTM5LDYgKzE0MSwxMSBAQCBzdGF0aWMgaW5saW5lIGludCBnZXRWYWx1ZUlE
KGNvbnN0IGNoYXIqCiAgICAgY2hhciB0b2s7CiAgICAgVmFsdWUgdmFsdWU7CiAgICAgVmFsdWVM
aXN0KiB2YWx1ZUxpc3Q7CisKKyAgICBNZWRpYVF1ZXJ5KiBtZWRpYVF1ZXJ5OworICAgIE1lZGlh
UXVlcnlFeHAqIG1lZGlhUXVlcnlFeHA7CisgICAgVmVjdG9yPE1lZGlhUXVlcnlFeHAqPiogbWVk
aWFRdWVyeUV4cExpc3Q7CisgICAgTWVkaWFRdWVyeTo6UmVzdHJpY3RvciBtZWRpYVF1ZXJ5UmVz
dHJpY3RvcjsKIH0KIAogJXsKQEAgLTE4MSw4ICsxODgsMTIgQEAgc3RhdGljIGludCBjc3N5eWxl
eChZWVNUWVBFICp5eWx2YWwpIHsgcgogJXRva2VuIFdFQktJVF9SVUxFX1NZTQogJXRva2VuIFdF
QktJVF9ERUNMU19TWU0KICV0b2tlbiBXRUJLSVRfVkFMVUVfU1lNCisldG9rZW4gV0VCS0lUX01F
RElBUVVFUllfU1lNCiAKICV0b2tlbiBJTVBPUlRBTlRfU1lNCisldG9rZW4gTUVESUFfT05MWQor
JXRva2VuIE1FRElBX05PVAorJXRva2VuIE1FRElBX0FORAogCiAldG9rZW4gPHZhbD4gUUVNUwog
JXRva2VuIDx2YWw+IEVNUwpAQCAtMjMxLDggKzI0MiwxNSBAQCBzdGF0aWMgaW50IGNzc3l5bGV4
KFlZU1RZUEUgKnl5bHZhbCkgeyByCiAldHlwZSA8c3RyaW5nPiBtZWRpdW0KICV0eXBlIDxzdHJp
bmc+IGhleGNvbG9yCiAKKyV0eXBlIDxzdHJpbmc+IG1lZGlhX2ZlYXR1cmUKICV0eXBlIDxtZWRp
YUxpc3Q+IG1lZGlhX2xpc3QKICV0eXBlIDxtZWRpYUxpc3Q+IG1heWJlX21lZGlhX2xpc3QKKyV0
eXBlIDxtZWRpYVF1ZXJ5PiBtZWRpYV9xdWVyeQorJXR5cGUgPG1lZGlhUXVlcnlSZXN0cmljdG9y
PiBtYXliZV9tZWRpYV9yZXN0cmljdG9yCisldHlwZSA8dmFsdWVMaXN0PiBtYXliZV9tZWRpYV92
YWx1ZQorJXR5cGUgPG1lZGlhUXVlcnlFeHA+IG1lZGlhX3F1ZXJ5X2V4cAorJXR5cGUgPG1lZGlh
UXVlcnlFeHBMaXN0PiBtZWRpYV9xdWVyeV9leHBfbGlzdAorJXR5cGUgPG1lZGlhUXVlcnlFeHBM
aXN0PiBtYXliZV9tZWRpYV9xdWVyeV9leHBfbGlzdAogCiAldHlwZSA8cnVsZUxpc3Q+IHJ1bGVz
ZXRfbGlzdAogCkBAIC0yNzIsNiArMjkwLDcgQEAgc3R5bGVzaGVldDoKICAgfCB3ZWJraXRfcnVs
ZSBtYXliZV9zcGFjZQogICB8IHdlYmtpdF9kZWNscyBtYXliZV9zcGFjZQogICB8IHdlYmtpdF92
YWx1ZSBtYXliZV9zcGFjZQorICB8IHdlYmtpdF9tZWRpYXF1ZXJ5IG1heWJlX3NwYWNlCiAgIDsK
IAogd2Via2l0X3J1bGU6CkBAIC0zMDAsNiArMzE5LDEzIEBAIHdlYmtpdF92YWx1ZToKICAgICB9
CiA7CiAKK3dlYmtpdF9tZWRpYXF1ZXJ5OgorICAgICBXRUJLSVRfTUVESUFRVUVSWV9TWU0gV0hJ
VEVTUEFDRSBtYXliZV9zcGFjZSBtZWRpYV9xdWVyeSAnfScgeworICAgICAgICAgQ1NTUGFyc2Vy
KiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAgICAgIHAtPm1lZGlh
UXVlcnkgPSBwLT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQ0KTsKKyAgICAgfQorOworCiBtYXli
ZV9zcGFjZToKICAgICAvKiBlbXB0eSAqLyAlcHJlYyBVTklNUE9SVEFOVF9UT0sKICAgfCBtYXli
ZV9zcGFjZSBXSElURVNQQUNFCkBAIC0zODMsMjMgKzQwOSw4NCBAQCBTVFJJTkcKIHwgVVJJCiA7
CiAKK21lZGlhX2ZlYXR1cmU6CisgICAgSURFTlQgbWF5YmVfc3BhY2UgeworICAgICAgICAkJCA9
ICQxOworICAgIH0KKyAgICA7CisKK21heWJlX21lZGlhX3ZhbHVlOgorICAgIC8qZW1wdHkqLyB7
CisgICAgICAgICQkID0gMDsKKyAgICB9CisgICAgfCAnOicgbWF5YmVfc3BhY2UgZXhwciBtYXli
ZV9zcGFjZSB7CisgICAgICAgICQkID0gJDM7CisgICAgfQorICAgIDsKKworbWVkaWFfcXVlcnlf
ZXhwOgorICAgIE1FRElBX0FORCBtYXliZV9zcGFjZSAnKCcgbWF5YmVfc3BhY2UgbWVkaWFfZmVh
dHVyZSBtYXliZV9zcGFjZSBtYXliZV9tZWRpYV92YWx1ZSAnKScgbWF5YmVfc3BhY2UgeworICAg
ICAgICAkNS5sb3dlcigpOworICAgICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBh
cnNlciktPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cChhdG9taWNTdHJpbmcoJDUpLCAkNyk7
CisgICAgfQorICAgIDsKKworbWVkaWFfcXVlcnlfZXhwX2xpc3Q6CisgICAgbWVkaWFfcXVlcnlf
ZXhwIHsKKyAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNl
cik7CisgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QoKTsKKyAg
ICAgICQkLT5hcHBlbmQocC0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cCgkMSkpOworICAgIH0K
KyAgICB8IG1lZGlhX3F1ZXJ5X2V4cF9saXN0IG1lZGlhX3F1ZXJ5X2V4cCB7CisgICAgICAkJCA9
ICQxOworICAgICAgJCQtPmFwcGVuZChzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5z
aW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKCQyKSk7CisgICAgfQorICAgIDsKKworbWF5YmVfbWVk
aWFfcXVlcnlfZXhwX2xpc3Q6CisgICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQgPSBzdGF0aWNf
Y2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0
KCk7CisgICAgfQorICAgIHwgbWVkaWFfcXVlcnlfZXhwX2xpc3QKKyAgICA7CisKK21heWJlX21l
ZGlhX3Jlc3RyaWN0b3I6CisgICAgLyplbXB0eSovIHsKKyAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5
OjpOb25lOworICAgIH0KKyAgICB8IE1FRElBX09OTFkgeworICAgICAgICAkJCA9IE1lZGlhUXVl
cnk6Ok9ubHk7CisgICAgfQorICAgIHwgTUVESUFfTk9UIHsKKyAgICAgICAgJCQgPSBNZWRpYVF1
ZXJ5OjpOb3Q7CisgICAgfQorICAgIDsKKworbWVkaWFfcXVlcnk6CisgICAgbWF5YmVfbWVkaWFf
cmVzdHJpY3RvciBtYXliZV9zcGFjZSBtZWRpdW0gbWF5YmVfbWVkaWFfcXVlcnlfZXhwX2xpc3Qg
eworICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIp
OworICAgICAgICAkMy5sb3dlcigpOworICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nTWVk
aWFRdWVyeSgkMSwgZG9tU3RyaW5nKCQzKSwgcC0+c2lua0Zsb2F0aW5nTWVkaWFRdWVyeUV4cExp
c3QoJDQpKTsKKyAgICB9CisgICAgOworCiBtYXliZV9tZWRpYV9saXN0OgogICAgICAvKiBlbXB0
eSAqLyB7CiAgICAgICAgICQkID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+Y3Jl
YXRlTWVkaWFMaXN0KCk7CiAgICAgIH0KICAgICAgfCBtZWRpYV9saXN0Ci07Ci0KKyAgICAgOwog
CiBtZWRpYV9saXN0OgotICAgIG1lZGl1bSB7Ci0gICAgICAgICQkID0gc3RhdGljX2Nhc3Q8Q1NT
UGFyc2VyKj4ocGFyc2VyKS0+Y3JlYXRlTWVkaWFMaXN0KCk7Ci0gICAgICAgICQkLT5hcHBlbmRN
ZWRpdW0oZG9tU3RyaW5nKCQxKS5sb3dlcigpKTsKKyAgICBtZWRpYV9xdWVyeSB7CisgICAgICAg
IENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAg
ICQkID0gcC0+Y3JlYXRlTWVkaWFMaXN0KCk7CisgICAgICAgICQkLT5hcHBlbmRNZWRpYVF1ZXJ5
KHAtPnNpbmtGbG9hdGluZ01lZGlhUXVlcnkoJDEpKTsKICAgICB9Ci0gICAgfCBtZWRpYV9saXN0
ICcsJyBtYXliZV9zcGFjZSBtZWRpdW0geworICAgIHwgbWVkaWFfbGlzdCAnLCcgbWF5YmVfc3Bh
Y2UgbWVkaWFfcXVlcnkgewogICAgICAgICAkJCA9ICQxOwogICAgICAgICBpZiAoJCQpCi0gICAg
ICAgICAgICAkJC0+YXBwZW5kTWVkaXVtKGRvbVN0cmluZygkNCkubG93ZXIoKSk7CisgICAgICAg
ICAgICAkJC0+YXBwZW5kTWVkaWFRdWVyeShzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIp
LT5zaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KCQ0KSk7CiAgICAgfQogICAgIHwgbWVkaWFfbGlzdCBl
cnJvciB7CiAgICAgICAgICQkID0gMDsKSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5h
bWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUg
RE9NIGltcGxlbWVudGF0aW9uIGZvciBLREUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA1IEFw
cGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3
LCBVU0EuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2lmIEFWT0lEX1NUQVRJ
Q19DT05TVFJVQ1RPUlMKKyNkZWZpbmUgQ1NTX01FRElBUVVFUllfTkFNRVNfSElERV9HTE9CQUxT
IDEKKyNlbmRpZgorCisjaW5jbHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMuaCIKKyNpbmNsdWRlICJT
dGF0aWNDb25zdHJ1Y3RvcnMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeyBuYW1lc3BhY2UgTWVk
aWFGZWF0dXJlTmFtZXMgeworCisjZGVmaW5lIERFRklORV9NRURJQUZFQVRVUkVfR0xPQkFMKG5h
bWUsIHN0cikgXAorICAgIERFRklORV9HTE9CQUwoQXRvbWljU3RyaW5nLCBuYW1lIyNNZWRpYUZl
YXR1cmUsIHN0cikKK0NTU19NRURJQVFVRVJZX05BTUVTX0ZPUl9FQUNIX01FRElBRkVBVFVSRShE
RUZJTkVfTUVESUFGRUFUVVJFX0dMT0JBTCkKKyN1bmRlZiBERUZJTkVfTUVESUFGRUFUVVJFX0dM
T0JBTAorCit2b2lkIGluaXQoKQoreworICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkOworICAg
IGlmICghaW5pdGlhbGl6ZWQpIHsKKyAgICAgICAvLyBVc2UgcGxhY2VtZW50IG5ldyB0byBpbml0
aWFsaXplIHRoZSBnbG9iYWxzLgorCisgICAgICAgIEF0b21pY1N0cmluZzo6aW5pdCgpOworICAg
ICAgICAjZGVmaW5lIElOSVRJQUxJWkVfR0xPQkFMKG5hbWUsIHN0cikgbmV3ICgodm9pZCopJm5h
bWUjI01lZGlhRmVhdHVyZSkgQXRvbWljU3RyaW5nKHN0cik7CisgICAgICAgIENTU19NRURJQVFV
RVJZX05BTUVTX0ZPUl9FQUNIX01FRElBRkVBVFVSRShJTklUSUFMSVpFX0dMT0JBTCkKKyAgICAg
ICAgI3VuZGVmIElOSVRJQUxJWkVfR0xPQkFMCisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1ZTsK
KyAgICB9Cit9CisKK30gfQpJbmRleDogV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmgJKHJldmlzaW9uIDE0NTU1KQorKysgV2ViQ29y
ZS9jc3MvTWVkaWFMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTI0LDQ2ICsyNCw0MiBAQAogI2Rl
ZmluZSBNZWRpYUxpc3RfSAogCiAjaW5jbHVkZSAiU3R5bGVCYXNlLmgiCi0jaW5jbHVkZSAiRGVw
cmVjYXRlZFZhbHVlTGlzdC5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlICJQ
bGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KK3R5cGVkZWYgaW50IEV4
Y2VwdGlvbkNvZGU7CiBjbGFzcyBDU1NTdHlsZVNoZWV0OworY2xhc3MgTWVkaWFRdWVyeTsKIGNs
YXNzIENTU1J1bGU7CiAKIGNsYXNzIE1lZGlhTGlzdCA6IHB1YmxpYyBTdHlsZUJhc2UKIHsKIHB1
YmxpYzoKLSAgICBNZWRpYUxpc3QoKSA6IFN0eWxlQmFzZSgwKSB7fQotICAgIE1lZGlhTGlzdChD
U1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCk7Ci0gICAgTWVkaWFMaXN0KENTU1N0eWxlU2hlZXQq
IHBhcmVudFNoZWV0LCBjb25zdCBTdHJpbmcmIG1lZGlhKTsKLSAgICBNZWRpYUxpc3QoQ1NTUnVs
ZSogcGFyZW50UnVsZSwgY29uc3QgU3RyaW5nJiBtZWRpYSk7CisgICAgTWVkaWFMaXN0KGJvb2wg
ZmFsbGJhY2tUb0Rlc2NyaXB0aW9uID0gZmFsc2UpIDogU3R5bGVCYXNlKDApLCBtX2ZhbGxiYWNr
KGZhbGxiYWNrVG9EZXNjcmlwdGlvbikge30KKyAgICBNZWRpYUxpc3QoQ1NTU3R5bGVTaGVldCog
cGFyZW50U2hlZXQsIGJvb2wgZmFsbGJhY2tUb0Rlc2NyaXB0aW9uID0gZmFsc2UpOworICAgIE1l
ZGlhTGlzdChDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgY29uc3QgU3RyaW5nJiBtZWRpYSwg
Ym9vbCBmYWxsYmFja1RvRGVzY3JpcHRpb24gPSBmYWxzZSk7CisgICAgTWVkaWFMaXN0KENTU1J1
bGUqIHBhcmVudFJ1bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEsIGJvb2wgZmFsbGJhY2tUb0Rlc2Ny
aXB0aW9uID0gZmFsc2UpOworICAgIH5NZWRpYUxpc3QoKTsKIAogICAgIHZpcnR1YWwgYm9vbCBp
c01lZGlhTGlzdCgpIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIENTU1N0eWxlU2hlZXQqIHBhcmVu
dFN0eWxlU2hlZXQoKSBjb25zdDsKICAgICBDU1NSdWxlKiBwYXJlbnRSdWxlKCkgY29uc3Q7Ci0g
ICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sc3RNZWRpYS5jb3VudCgpOyB9
Ci0gICAgU3RyaW5nIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fbHN0TWVk
aWFbaW5kZXhdOyB9Ci0gICAgdm9pZCBkZWxldGVNZWRpdW0oY29uc3QgU3RyaW5nJiBvbGRNZWRp
dW0pOwotICAgIHZvaWQgYXBwZW5kTWVkaXVtKGNvbnN0IFN0cmluZyYgbmV3TWVkaXVtKSB7IG1f
bHN0TWVkaWEuYXBwZW5kKG5ld01lZGl1bSk7IH0KKyAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dCB7IHJldHVybiAodW5zaWduZWQpIG1fcXVlcmllcy5zaXplKCk7IH0KKyAgICBTdHJpbmcgaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgdm9pZCBkZWxldGVNZWRpdW0oY29uc3QgU3Ry
aW5nJiBvbGRNZWRpdW0sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIGFwcGVuZE1lZGl1bShj
b25zdCBTdHJpbmcmIG5ld01lZGl1bSwgRXhjZXB0aW9uQ29kZSYpOwogCiAgICAgU3RyaW5nIG1l
ZGlhVGV4dCgpIGNvbnN0OwotICAgIHZvaWQgc2V0TWVkaWFUZXh0KGNvbnN0IFN0cmluZyYpOwor
ICAgIHZvaWQgc2V0TWVkaWFUZXh0KGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmeG8pOwog
Ci0gICAgLyoqCi0gICAgICogQ2hlY2sgaWYgdGhlIGxpc3QgY29udGFpbnMgZWl0aGVyIHRoZSBy
ZXF1ZXN0ZWQgbWVkaXVtLCBvciB0aGUKLSAgICAgKiBjYXRjaC1hbGwgImFsbCIgbWVkaWEgdHlw
ZS4gUmV0dXJucyB0cnVlIHdoZW4gZm91bmQsIGZhbHNlIG90aGVyd2lzZS4KLSAgICAgKiBTaW5j
ZSBub3Qgc3BlY2lmeWluZyBtZWRpYSB0eXBlcyBzaG91bGQgYmUgdHJlYXRlZCBhcyAiYWxsIiBh
Y2NvcmRpbmcKLSAgICAgKiB0byBET00gc3BlY3MsIGFuIGVtcHR5IGxpc3QgYWx3YXlzIHJldHVy
bnMgdHJ1ZS4KLSAgICAgKgotICAgICAqIF9OT1RfIHBhcnQgb2YgdGhlIERPTSEKLSAgICAgKi8K
LSAgICBib29sIGNvbnRhaW5zKGNvbnN0IFN0cmluZyYgbWVkaXVtKSBjb25zdDsKKyAgICB2b2lk
IGFwcGVuZE1lZGlhUXVlcnkoTWVkaWFRdWVyeSogbWVkaWFRdWVyeSk7CisgICAgY29uc3QgVmVj
dG9yPE1lZGlhUXVlcnkqPiogbWVkaWFRdWVyaWVzKCkgY29uc3QgeyByZXR1cm4gJm1fcXVlcmll
czsgfQogCiBwcm90ZWN0ZWQ6Ci0gICAgRGVwcmVjYXRlZFZhbHVlTGlzdDxTdHJpbmc+IG1fbHN0
TWVkaWE7CisgICAgVmVjdG9yPE1lZGlhUXVlcnkqPiBtX3F1ZXJpZXM7CisgICAgYm9vbCBtX2Zh
bGxiYWNrOyAvLyB0cnVlIGlmIGZhaWxlZCBtZWRpYSBxdWVyeSBwYXJzaW5nIHNob3VsZCBmYWxs
YmFjayB0byBtZWRpYSBkZXNjcmlwdGlvbiBwYXJzaW5nCiB9OwogCiB9IC8vIG5hbWVzcGFjZQpJ
bmRleDogV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeUV4cC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5RXhwLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENTUyBN
ZWRpYSBRdWVyeQorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBLaW1tbyBLaW5udW5lbiA8a2lt
bW8udC5raW5udW5lbkBub2tpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJN
ZWRpYVF1ZXJ5RXhwLmgiCisKKyNpbmNsdWRlICJjc3NwYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NQ
cmltaXRpdmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK01lZGlhUXVlcnlFeHA6Ok1lZGlhUXVlcnlFeHAoY29uc3QgQXRvbWljU3Ry
aW5nJiBtZWRpYUZlYXR1cmUsIFZhbHVlTGlzdCogdmFsdWVMaXN0KQorICAgIDogbV9tZWRpYUZl
YXR1cmUobWVkaWFGZWF0dXJlKQorICAgICwgbV92YWx1ZSgwKQoreworICAgIGlmICh2YWx1ZUxp
c3QpIHsKKyAgICAgICAgaWYgKHZhbHVlTGlzdC0+c2l6ZSgpID09IDEpIHsKKyAgICAgICAgICAg
IFZhbHVlKiB2YWx1ZSA9IHZhbHVlTGlzdC0+Y3VycmVudCgpOworCisgICAgICAgICAgICBpZiAo
dmFsdWUtPmlkICE9IDApCisgICAgICAgICAgICAgICAgbV92YWx1ZSA9IG5ldyBDU1NQcmltaXRp
dmVWYWx1ZSh2YWx1ZS0+aWQpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUtPnVuaXQgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpCisgICAgICAgICAgICAgICAgbV92YWx1ZSA9
IG5ldyBDU1NQcmltaXRpdmVWYWx1ZShkb21TdHJpbmcodmFsdWUtPnN0cmluZyksIChDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSB2YWx1ZS0+dW5pdCk7CisgICAgICAgICAgICBlbHNlIGlm
ICh2YWx1ZS0+dW5pdCA+PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUiAmJgorICAgICAg
ICAgICAgICAgICAgICAgIHZhbHVlLT51bml0IDw9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfS0ha
KQorICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUt
PmZWYWx1ZSwgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpIHZhbHVlLT51bml0KTsKKwor
ICAgICAgICAgICAgdmFsdWVMaXN0LT5uZXh0KCk7CisgICAgICAgIH0gZWxzZSBpZiAodmFsdWVM
aXN0LT5zaXplKCkgPiAxKSB7CisgICAgICAgICAgICAvLyBjcmVhdGUgbGlzdCBvZiB2YWx1ZXMK
KyAgICAgICAgICAgIC8vIGN1cnJlbnRseSBhY2NlcHRzIG9ubHkgPGludGVnZXI+LzxpbnRlZ2Vy
PgorCisgICAgICAgICAgICBDU1NWYWx1ZUxpc3QqIGxpc3QgPSBuZXcgQ1NTVmFsdWVMaXN0KCk7
CisgICAgICAgICAgICBWYWx1ZSogdmFsdWUgPSAwOworICAgICAgICAgICAgYm9vbCBpc1ZhbGlk
ID0gdHJ1ZTsKKworICAgICAgICAgICAgd2hpbGUgKCh2YWx1ZSA9IHZhbHVlTGlzdC0+Y3VycmVu
dCgpKSAmJiBpc1ZhbGlkKSB7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLT51bml0ID09IFZh
bHVlOjpPcGVyYXRvciAmJiB2YWx1ZS0+aVZhbHVlID09ICcvJykKKyAgICAgICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKG5ldyBDU1NQcmltaXRpdmVWYWx1ZSgiLyIsIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfU1RSSU5HKSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUtPnVuaXQg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCisgICAgICAgICAgICAgICAgICAgIGxp
c3QtPmFwcGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFsdWUtPmZWYWx1ZSwgQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIHZhbHVlID0gdmFs
dWVMaXN0LT5uZXh0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc1ZhbGlk
KQorICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBsaXN0OworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIGRlbGV0ZSBsaXN0OworICAgICAgICB9CisgICAgfQorfQorCitNZWRpYVF1
ZXJ5RXhwOjp+TWVkaWFRdWVyeUV4cCgpCit7CisgICAgZGVsZXRlIG1fdmFsdWU7Cit9CisKK30g
Ly8gbmFtZXNwYWNlCkluZGV4OiBXZWJDb3JlL2Nzcy90b2tlbml6ZXIuZmxleAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2Nzcy90b2tlbml6ZXIuZmxleAkocmV2aXNpb24gMTQ1NTUpCisrKyBXZWJD
b3JlL2Nzcy90b2tlbml6ZXIuZmxleAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDggQEAKICVv
cHRpb24gY2FzZS1pbnNlbnNpdGl2ZQogJW9wdGlvbiBub3l5d3JhcAogJW9wdGlvbiA4Yml0Cisl
b3B0aW9uIHN0YWNrCislcyBtZWRpYXF1ZXJ5CiAKIGggICAgICAgICAgICAgICBbMC05YS1mQS1G
XQogbm9uYXNjaWkgICAgICAgIFtcMjAwLVwzNzddCkBAIC0zNCw2ICszNiw5IEBAIHJhbmdlICAg
ICAgICAgICBcP3sxLDZ9fHtofShcP3swLDV9fHtofSgKICJePSIgICAgICAgICAgICAgICAgICAg
IHt5eVRvayA9IEJFR0lOU1dJVEg7IHJldHVybiB5eVRvazt9CiAiJD0iICAgICAgICAgICAgICAg
ICAgICB7eXlUb2sgPSBFTkRTV0lUSDsgcmV0dXJuIHl5VG9rO30KICIqPSIgICAgICAgICAgICAg
ICAgICAgIHt5eVRvayA9IENPTlRBSU5TOyByZXR1cm4geXlUb2s7fQorPG1lZGlhcXVlcnk+Im5v
dCIgICAgICAge3l5VG9rID0gTUVESUFfTk9UOyByZXR1cm4geXlUb2s7fQorPG1lZGlhcXVlcnk+
Im9ubHkiICAgICAge3l5VG9rID0gTUVESUFfT05MWTsgcmV0dXJuIHl5VG9rO30KKzxtZWRpYXF1
ZXJ5PiJhbmQiICAgICAgIHt5eVRvayA9IE1FRElBX0FORDsgcmV0dXJuIHl5VG9rO30KIAoge3N0
cmluZ30gICAgICAgICAgICAgICAge3l5VG9rID0gU1RSSU5HOyByZXR1cm4geXlUb2s7fQogCkBA
IC00MSwxNSArNDYsMTYgQEAgcmFuZ2UgICAgICAgICAgIFw/ezEsNn18e2h9KFw/ezAsNX18e2h9
KAogCiAiIyJ7bmFtZX0gICAgICAgICAgICAgICB7eXlUb2sgPSBIQVNIOyByZXR1cm4geXlUb2s7
fQogCi0iQGltcG9ydCIgICAgICAgICAgICAgICB7eXlUb2sgPSBJTVBPUlRfU1lNOyByZXR1cm4g
eXlUb2s7fQorIkBpbXBvcnQiICAgICAgICAgICAgICAge0JFR0lOKG1lZGlhcXVlcnkpOyB5eVRv
ayA9IElNUE9SVF9TWU07IHJldHVybiB5eVRvazt9CiAiQHBhZ2UiICAgICAgICAgICAgICAgICB7
eXlUb2sgPSBQQUdFX1NZTTsgcmV0dXJuIHl5VG9rO30KLSJAbWVkaWEiICAgICAgICAgICAgICAg
IHt5eVRvayA9IE1FRElBX1NZTTsgcmV0dXJuIHl5VG9rO30KKyJAbWVkaWEiICAgICAgICAgICAg
ICAgIHtCRUdJTihtZWRpYXF1ZXJ5KTsgeXlUb2sgPSBNRURJQV9TWU07IHJldHVybiB5eVRvazt9
CiAiQGZvbnQtZmFjZSIgICAgICAgICAgICB7eXlUb2sgPSBGT05UX0ZBQ0VfU1lNOyByZXR1cm4g
eXlUb2s7fQogIkBjaGFyc2V0IiAgICAgICAgICAgICAge3l5VG9rID0gQ0hBUlNFVF9TWU07IHJl
dHVybiB5eVRvazt9CiAiQG5hbWVzcGFjZSIgICAgICAgICAgICB7eXlUb2sgPSBOQU1FU1BBQ0Vf
U1lNOyByZXR1cm4geXlUb2s7IH0KICJALXdlYmtpdC1ydWxlIiAgICB7eXlUb2sgPSBXRUJLSVRf
UlVMRV9TWU07IHJldHVybiB5eVRvazsgfQogIkAtd2Via2l0LWRlY2xzIiAgIHt5eVRvayA9IFdF
QktJVF9ERUNMU19TWU07IHJldHVybiB5eVRvazsgfQogIkAtd2Via2l0LXZhbHVlIiAgIHt5eVRv
ayA9IFdFQktJVF9WQUxVRV9TWU07IHJldHVybiB5eVRvazsgfQorIkAtd2Via2l0LW1lZGlhcXVl
cnkiICAge0JFR0lOKG1lZGlhcXVlcnkpOyB5eVRvayA9IFdFQktJVF9NRURJQVFVRVJZX1NZTTsg
cmV0dXJuIHl5VG9rOyB9CiAKICIhInt3fSJpbXBvcnRhbnQiICAgICAgICAge3l5VG9rID0gSU1Q
T1JUQU5UX1NZTTsgcmV0dXJuIHl5VG9rO30KIApAQCAtODEsNiArODcsOCBAQCByYW5nZSAgICAg
ICAgICAgXD97MSw2fXx7aH0oXD97MCw1fXx7aH0oCiBVXCt7cmFuZ2V9ICAgICAgICAgICAgICB7
eXlUb2sgPSBVTklDT0RFUkFOR0U7IHJldHVybiB5eVRvazt9CiBVXCt7aH17MSw2fS17aH17MSw2
fSAgICB7eXlUb2sgPSBVTklDT0RFUkFOR0U7IHJldHVybiB5eVRvazt9CiAKKzxtZWRpYXF1ZXJ5
PiJ7IiAgICAgICAgIHwKKzxtZWRpYXF1ZXJ5PiI7IiAgICAgICAgIHtCRUdJTihJTklUSUFMKTsg
eXlUb2sgPSAqeXl0ZXh0OyByZXR1cm4geXlUb2s7IH0KIC4gICAgICAgICAgICAgICAgICAgICAg
IHt5eVRvayA9ICp5eXRleHQ7IHJldHVybiB5eVRvazt9CiAKICUlCkluZGV4OiBXZWJDb3JlL2Nz
cy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9NZWRp
YVF1ZXJ5RXZhbHVhdG9yLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvY3NzL01lZGlhUXVl
cnlFdmFsdWF0b3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM2NCBAQAorLyoKKyAqIENT
UyBNZWRpYSBRdWVyeSBFdmFsdWF0b3IKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgS2ltbW8g
S2lubnVuZW4gPGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisKKyNpbmNsdWRlICJDU1NQcmltaXRp
dmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1ZhbHVlTGlzdC5oIgorI2luY2x1ZGUgIk1lZGlhRmVh
dHVyZU5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFMaXN0LmgiCisjaW5jbHVkZSAiTWVkaWFRdWVy
eS5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAuaCIKKyNpbmNsdWRlICJyZW5kZXJpbmcvcmVu
ZGVyX3N0eWxlLmgiCisjaW5jbHVkZSAicGFnZS9GcmFtZVZpZXcuaCIKKyNpbmNsdWRlICJTY3Jl
ZW4uaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cit1
c2luZyBuYW1lc3BhY2UgTWVkaWFGZWF0dXJlTmFtZXM7CisKK2VudW0gTWVkaWFGZWF0dXJlUHJl
Zml4Cit7CisgICAgTWluUHJlZml4LCBNYXhQcmVmaXgsIE5vUHJlZml4Cit9OworCit0eXBlZGVm
IGJvb2wgKCpFdmFsRnVuYykoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIEZy
YW1lVmlldyogdmlldywgIE1lZGlhRmVhdHVyZVByZWZpeCBvcCk7Cit0eXBlZGVmIEhhc2hNYXA8
QXRvbWljU3RyaW5nSW1wbCosIEV2YWxGdW5jPiBGdW5jdGlvbk1hcDsKK3N0YXRpYyBGdW5jdGlv
bk1hcCogZ0Z1bmN0aW9uTWFwOworCisvKgorICogRklYTUU6IGZvbGxvd2luZyBtZWRpYSBmZWF0
dXJlcyBhcmUgbm90IGltcGxlbWVudGVkOiBjb2xvcl9pbmRleCwgc2NhbiwgcmVzb2x1dGlvbgor
ICoKKyAqIGNvbG9yX2luZGV4LCBtaW4tY29sb3ItaW5kZXgsIG1heF9jb2xvcl9pbmRleDogSXQn
cyB1bmtub3duIGhvdyB0byByZXRyaWV2ZQorICogdGhlIGluZm9ybWF0aW9uIGlmIHRoZSBkaXNw
bGF5IG1vZGUgaXMgaW5kZXhlZAorICogc2NhbjogVGhlICJzY2FuIiBtZWRpYSBmZWF0dXJlIGRl
c2NyaWJlcyB0aGUgc2Nhbm5pbmcgcHJvY2VzcyBvZgorICogdHYgb3V0cHV0IGRldmljZXMuIEl0
J3MgdW5rbm93biBob3cgdG8gcmV0cmlldmUgdGhpcyBpbmZvcm1hdGlvbiBmcm9tCisgKiB0aGUg
cGxhdGZvcm0KKyAqIHJlc29sdXRpb24sIG1pbi1yZXNvbHV0aW9uLCAgbWF4LXJlc29sdXRpb246
IGNzcyBwYXJzZXIgZG9lc24ndCBzZWVtIHRvCisgKiBzdXBwb3J0IENTU19ESU1FTlNJT04KKyAq
LworCitNZWRpYVF1ZXJ5RXZhbHVhdG9yOjogTWVkaWFRdWVyeUV2YWx1YXRvcihib29sIG1lZGlh
RmVhdHVyZVJlc3VsdCkKKyAgICA6IG1fdmlldygwKQorICAgICwgbV9zdHlsZSgwKQorICAgICwg
bV9leHBSZXN1bHQobWVkaWFGZWF0dXJlUmVzdWx0KQoreworfQorCitNZWRpYVF1ZXJ5RXZhbHVh
dG9yOjogTWVkaWFRdWVyeUV2YWx1YXRvcihjb25zdCBTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBl
LCBib29sIG1lZGlhRmVhdHVyZVJlc3VsdCkKKyAgICA6IG1fbWVkaWFUeXBlKGFjY2VwdGVkTWVk
aWFUeXBlKQorICAgICwgbV92aWV3KDApCisgICAgLCBtX3N0eWxlKDApCisgICAgLCBtX2V4cFJl
c3VsdChtZWRpYUZlYXR1cmVSZXN1bHQpCit7Cit9CisKK01lZGlhUXVlcnlFdmFsdWF0b3I6OiBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yKGNvbnN0IFN0cmluZyYgYWNjZXB0ZWRNZWRpYVR5cGUsIEZyYW1l
VmlldyogdmlldywgUmVuZGVyU3R5bGUqIHN0eWxlKQorICAgIDogbV9tZWRpYVR5cGUoYWNjZXB0
ZWRNZWRpYVR5cGUubG93ZXIoKSkKKyAgICAsIG1fdmlldyh2aWV3KQorICAgICwgbV9zdHlsZShz
dHlsZSkKKyAgICAsIG1fZXhwUmVzdWx0KGZhbHNlKSAvLyBkb2Vzbid0IG1hdHRlciB3aGVuIHdl
IGhhdmUgbV92aWV3IGFuZCBtX3N0eWxlCit7Cit9CisKK01lZGlhUXVlcnlFdmFsdWF0b3I6On5N
ZWRpYVF1ZXJ5RXZhbHVhdG9yKCkKK3sKK30KKworYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpt
ZWRpYVR5cGVNYXRjaChjb25zdCBTdHJpbmcmIG1lZGlhVHlwZVRvTWF0Y2gpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIG1lZGlhVHlwZVRvTWF0Y2guaXNFbXB0eSgpCisgICAgICAgIHx8IChtZWRpYVR5
cGVUb01hdGNoLnN0YXJ0c1dpdGgoImFsbCIsIGZhbHNlKSAmJiBtZWRpYVR5cGVUb01hdGNoLmxl
bmd0aCgpID09IDMpCisgICAgICAgIHx8IG1lZGlhVHlwZVRvTWF0Y2gubG93ZXIoKSA9PSBtX21l
ZGlhVHlwZTsKK30KKworc3RhdGljIGJvb2wgYXBwbHlSZXN0cmljdG9yKE1lZGlhUXVlcnk6OlJl
c3RyaWN0b3IgciwgYm9vbCB2YWx1ZSkKK3sKKyAgICByZXR1cm4gciA9PSBNZWRpYVF1ZXJ5OjpO
b3QgPyAhdmFsdWUgOiB2YWx1ZTsKK30KKworYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9yOjpldmFs
KGNvbnN0IE1lZGlhTGlzdCogbWVkaWFMaXN0KSBjb25zdAoreworICAgIGlmICghbWVkaWFMaXN0
KQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNvbnN0IFZlY3RvcjxNZWRpYVF1ZXJ5Kj4q
IHF1ZXJpZXMgPSBtZWRpYUxpc3QtPm1lZGlhUXVlcmllcygpOworICAgIGlmICghcXVlcmllcy0+
c2l6ZSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gZW1wdHkgcXVlcnkgbGlzdCBldmFsdWF0
ZXMgdG8gdHJ1ZQorCisgICAgLy8gaXRlcmF0ZSBvdmVyIHF1ZXJpZXMsIHN0b3AgaWYgYW55IG9m
IHRoZW0gZXZhbCB0byB0cnVlIChPUiBzZW1hbnRpY3MpCisgICAgYm9vbCByZXN1bHQgPSBmYWxz
ZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHF1ZXJpZXMtPnNpemUoKSAmJiAhcmVzdWx0
OyArK2kpIHsKKyAgICAgICAgTWVkaWFRdWVyeSogcXVlcnkgPSBxdWVyaWVzLT5hdChpKTsKKwor
ICAgICAgICBpZiAobWVkaWFUeXBlTWF0Y2gocXVlcnktPm1lZGlhVHlwZSgpKSkgeworICAgICAg
ICAgICAgY29uc3QgVmVjdG9yPE1lZGlhUXVlcnlFeHAqPiogZXhwcyA9IHF1ZXJ5LT5leHByZXNz
aW9ucygpOworICAgICAgICAgICAgLy8gaXRlcmF0ZSB0aHJvdWdoIGV4cHJlc3Npb25zLCBzdG9w
IGlmIGFueSBvZiB0aGVtIGV2YWwgdG8gZmFsc2UKKyAgICAgICAgICAgIC8vIChBTkQgc2VtYW50
aWNzKQorICAgICAgICAgICAgc2l6ZV90IGogPSAwOworICAgICAgICAgICAgZm9yICg7IGogPCBl
eHBzLT5zaXplKCkgJiYgZXZhbChleHBzLT5hdChqKSk7ICsraikgLyogZW1wdHkqLzsKKworICAg
ICAgICAgICAgLy8gYXNzdW1lIHRydWUgaWYgd2UgYXJlIGF0IHRoZSBlbmQgb2YgdGhlIGxpc3Qs
CisgICAgICAgICAgICAvLyBvdGhlcndpc2UgYXNzdW1lIGZhbHNlCisgICAgICAgICAgICByZXN1
bHQgPSBhcHBseVJlc3RyaWN0b3IocXVlcnktPnJlc3RyaWN0b3IoKSwgZXhwcy0+c2l6ZSgpID09
IGopOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IGFwcGx5UmVzdHJpY3Rv
cihxdWVyeS0+cmVzdHJpY3RvcigpLCBmYWxzZSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworc3RhdGljIGJvb2wgcGFyc2VBc3BlY3RSYXRpbyhDU1NWYWx1ZSogdmFsdWUsIGlu
dCYgYSwgaW50JiBiKQoreworICAgIGlmICh2YWx1ZS0+aXNWYWx1ZUxpc3QoKSl7CisgICAgICAg
IENTU1ZhbHVlTGlzdCogdmFsdWVMaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFs
dWUpOworICAgICAgICBpZiAodmFsdWVMaXN0LT5sZW5ndGgoKSA9PSAzKSB7CisgICAgICAgICAg
ICBDU1NWYWx1ZSogaTAgPSB2YWx1ZUxpc3QtPml0ZW0oMCk7CisgICAgICAgICAgICBDU1NWYWx1
ZSogaTEgPSB2YWx1ZUxpc3QtPml0ZW0oMSk7CisgICAgICAgICAgICBDU1NWYWx1ZSogaTIgPSB2
YWx1ZUxpc3QtPml0ZW0oMik7CisgICAgICAgICAgICBpZiAoaTAtPmlzUHJpbWl0aXZlVmFsdWUo
KSAmJiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGkwKS0+cHJpbWl0aXZlVHlwZSgp
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSCisgICAgICAgICAgICAgICAgJiYgaTEt
PmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGkx
KS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HCisgICAg
ICAgICAgICAgICAgJiYgaTItPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBzdGF0aWNfY2FzdDxDU1NQ
cmltaXRpdmVWYWx1ZSo+KGkyKS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfTlVNQkVSKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHN0ciA9IHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4oaTEpLT5nZXRTdHJpbmdWYWx1ZSgpOworICAgICAgICAgICAg
ICAgIGlmICghc3RyLmlzTnVsbCgpICYmIHN0ci5sZW5ndGgoKSA9PSAxICYmIHN0clswXSA9PSBR
Q2hhcignLycpKSB7CisgICAgICAgICAgICAgICAgICAgIGEgPSAoaW50KSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KGkwKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUik7CisgICAgICAgICAgICAgICAgICAgIGIgPSAoaW50KSBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KGkyKS0+Z2V0RmxvYXRWYWx1ZShDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX05VTUJFUik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmFs
c2U7Cit9CisKK2lubGluZSBib29sIGNtcHZhbHVlKGludCBhLCBpbnQgYiwgTWVkaWFGZWF0dXJl
UHJlZml4IG9wKQoreworICAgIHN3aXRjaCAob3ApIHsKKyAgICBjYXNlIE1pblByZWZpeDoKKyAg
ICAgICAgcmV0dXJuIGEgPj0gYjsKKyAgICBjYXNlIE1heFByZWZpeDoKKyAgICAgICAgcmV0dXJu
IGEgPD0gYjsKKyAgICBjYXNlIE5vUHJlZml4OgorICAgICAgICByZXR1cm4gYSA9PSBiOworICAg
IH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIG51bWJlclZhbHVlKENTU1Zh
bHVlKiB2YWx1ZSwgZmxvYXQmIHJlc3VsdCkKK3sKKyAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKQorICAgICAgICAmJiBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKSB7Cisg
ICAgICAgIHJlc3VsdCA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5n
ZXRGbG9hdFZhbHVlKENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGJvb2wgY29s
b3JNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBG
cmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCit7CisgICAgaW50IGJpdHNQ
ZXJDb21wb25lbnQgPSBzY3JlZW5EZXB0aFBlckNvbXBvbmVudCh2aWV3KTsKKyAgICBmbG9hdCBu
dW1iZXI7CisgICAgaWYgKHZhbHVlKQorICAgICAgICByZXR1cm4gbnVtYmVyVmFsdWUodmFsdWUs
IG51bWJlcikgJiYgY21wdmFsdWUoYml0c1BlckNvbXBvbmVudCwgKGludCludW1iZXIsIG9wKTsK
KworICAgIHJldHVybiBiaXRzUGVyQ29tcG9uZW50ICE9IDA7Cit9CisKK3N0YXRpYyBib29sIG1v
bm9jaHJvbWVNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBGcmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCit7CisgICAgaWYg
KCFzY3JlZW5Jc01vbm9jaHJvbWUodmlldykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IHJldHVybiBjb2xvck1lZGlhRmVhdHVyZUV2YWwodmFsdWUsIHN0eWxlLCB2aWV3LCBvcCk7Cit9
CisKK3N0YXRpYyBib29sIGRldmljZV9hc3BlY3RfcmF0aW9NZWRpYUZlYXR1cmVFdmFsKENTU1Zh
bHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFtZVZpZXcqIHZpZXcsICBNZWRpYUZl
YXR1cmVQcmVmaXggb3ApCit7CisgICAgaWYgKHZhbHVlKSB7CisgICAgICAgIEludFJlY3Qgc2cg
PSBzY3JlZW5SZWN0KHZpZXcpOworICAgICAgICBpbnQgYSA9IDA7CisgICAgICAgIGludCBiID0g
MDsKKyAgICAgICAgaWYgKHBhcnNlQXNwZWN0UmF0aW8odmFsdWUsIGEsIGIpKQorICAgICAgICAg
ICAgcmV0dXJuIGIgIT0gMCAgJiYgY21wdmFsdWUoYSAqIHNnLmhlaWdodCgpLCBiICogc2cud2lk
dGgoKSwgb3ApOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gKHssbWlu
LSxtYXgtfWRldmljZS1hc3BlY3QtcmF0aW8pCisgICAgLy8gYXNzdW1lIGlmIHdlIGhhdmUgYSBk
ZXZpY2UsIGl0cyBhc3BlY3QgcmF0aW8gaXMgbm9uLXplcm8KKyAgICByZXR1cm4gdHJ1ZTsKK30K
Kworc3RhdGljIGJvb2wgZ3JpZE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5k
ZXJTdHlsZSogc3R5bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlhRmVhdHVyZVByZWZpeCBvcCkK
K3sKKyAgICAvLyBpZiBvdXRwdXQgZGV2aWNlIGlzIGJpdG1hcCwgZ3JpZDogMCA9PSB0cnVlCisg
ICAgLy8gYXNzdW1lIHdlIGhhdmUgYml0bWFwIGRldmljZQorICAgIGZsb2F0IG51bWJlcjsKKyAg
ICBpZiAodmFsdWUgJiYgbnVtYmVyVmFsdWUodmFsdWUsIG51bWJlcikpCisgICAgICAgIHJldHVy
biBjbXB2YWx1ZSgoaW50KW51bWJlciwgMCwgb3ApOworICAgIHJldHVybiBmYWxzZTsKK30KKwor
c3RhdGljIGJvb2wgZGV2aWNlX2hlaWdodE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVl
LCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlhRmVhdHVyZVByZWZp
eCBvcCkKK3sKKyAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgSW50UmVjdCBzZyA9IHNjcmVlblJl
Y3Qodmlldyk7CisgICAgICAgIHJldHVybiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIGNt
cHZhbHVlKHNnLmhlaWdodCgpLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVl
KS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSksIG9wKTsKKyAgICB9CisgICAgLy8gKHssbWluLSxt
YXgtfWRldmljZS1oZWlnaHQpCisgICAgLy8gYXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGFz
c3VtZSBub24temVybworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgYm9vbCBkZXZpY2Vf
d2lkdGhNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxl
LCBGcmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCit7CisgICAgaWYgKHZh
bHVlKSB7CisgICAgICAgIEludFJlY3Qgc2cgPSBzY3JlZW5SZWN0KHZpZXcpOworICAgICAgICBy
ZXR1cm4gdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBjbXB2YWx1ZShzZy53aWR0aCgpLCBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Y29tcHV0ZUxlbmd0aEludChz
dHlsZSksIG9wKTsKKyAgICB9CisgICAgLy8gKHssbWluLSxtYXgtfWRldmljZS13aWR0aCkKKyAg
ICAvLyBhc3N1bWUgaWYgd2UgaGF2ZSBhIGRldmljZSwgYXNzdW1lIG5vbi16ZXJvCisgICAgcmV0
dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIGhlaWdodE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFs
dWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlhRmVh
dHVyZVByZWZpeCBvcCkKK3sKKyAgICBpZiAodmFsdWUpCisgICAgICAgIHJldHVybiB2YWx1ZS0+
aXNQcmltaXRpdmVWYWx1ZSgpICYmIGNtcHZhbHVlKHZpZXctPnZpc2libGVIZWlnaHQoKSwgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmNvbXB1dGVMZW5ndGhJbnQoc3R5
bGUpLCBvcCk7CisKKyAgICByZXR1cm4gdmlldy0+dmlzaWJsZUhlaWdodCgpICE9IDA7Cit9CisK
K3N0YXRpYyBib29sIHdpZHRoTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRl
clN0eWxlKiBzdHlsZSwgRnJhbWVWaWV3KiB2aWV3LCAgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQor
eworICAgIGlmICh2YWx1ZSkKKyAgICAgICAgcmV0dXJuIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVl
KCkgJiYgY21wdmFsdWUodmlldy0+dmlzaWJsZVdpZHRoKCksIHN0YXRpY19jYXN0PENTU1ByaW1p
dGl2ZVZhbHVlKj4odmFsdWUpLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKSwgb3ApOworCisgICAg
cmV0dXJuIHZpZXctPnZpc2libGVXaWR0aCgpICE9IDA7Cit9CisKKy8vIHJlc3Qgb2YgdGhlIGZ1
bmN0aW9ucyBhcmUgdHJhbXBvbGluZXMgd2hpY2ggc2V0IHRoZSBwcmVmaXggYWNjb3JkaW5nIHRv
IHRoZSBtZWRpYSBmZWF0dXJlIGV4cHJlc3Npb24gdXNlZAorCitzdGF0aWMgYm9vbCBtaW5fY29s
b3JNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBG
cmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVmaXggLypvcCovKQoreworICAgIHJldHVy
biBjb2xvck1lZGlhRmVhdHVyZUV2YWwodmFsdWUsIHN0eWxlLCB2aWV3LCBNaW5QcmVmaXgpOwor
fQorCitzdGF0aWMgYm9vbCBtYXhfY29sb3JNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1
ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVm
aXggLypvcCovKQoreworICAgIHJldHVybiBjb2xvck1lZGlhRmVhdHVyZUV2YWwodmFsdWUsIHN0
eWxlLCB2aWV3LCBNYXhQcmVmaXgpOworfQorCitzdGF0aWMgYm9vbCBtaW5fbW9ub2Nocm9tZU1l
ZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyYW1l
VmlldyogdmlldywgIE1lZGlhRmVhdHVyZVByZWZpeCAvKm9wKi8pCit7CisgICAgcmV0dXJuIG1v
bm9jaHJvbWVNZWRpYUZlYXR1cmVFdmFsKHZhbHVlLCBzdHlsZSwgdmlldywgTWluUHJlZml4KTsK
K30KKworc3RhdGljIGJvb2wgbWF4X21vbm9jaHJvbWVNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVl
KiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1
cmVQcmVmaXggLypvcCovKQoreworICAgIHJldHVybiBtb25vY2hyb21lTWVkaWFGZWF0dXJlRXZh
bCh2YWx1ZSwgc3R5bGUsIHZpZXcsIE1heFByZWZpeCk7Cit9CisKK3N0YXRpYyBib29sIG1pbl9k
ZXZpY2VfYXNwZWN0X3JhdGlvTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRl
clN0eWxlKiBzdHlsZSwgRnJhbWVWaWV3KiB2aWV3LCAgTWVkaWFGZWF0dXJlUHJlZml4IC8qb3Aq
LykKK3sKKyAgICByZXR1cm4gZGV2aWNlX2FzcGVjdF9yYXRpb01lZGlhRmVhdHVyZUV2YWwodmFs
dWUsIHN0eWxlLCB2aWV3LCBNaW5QcmVmaXgpOworfQorCitzdGF0aWMgYm9vbCBtYXhfZGV2aWNl
X2FzcGVjdF9yYXRpb01lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlhRmVhdHVyZVByZWZpeCAvKm9wKi8pCit7
CisgICAgcmV0dXJuIGRldmljZV9hc3BlY3RfcmF0aW9NZWRpYUZlYXR1cmVFdmFsKHZhbHVlLCBz
dHlsZSwgdmlldywgTWF4UHJlZml4KTsKK30KKworc3RhdGljIGJvb2wgbWluX2hlaWdodE1lZGlh
RmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyYW1lVmll
dyogdmlldywgIE1lZGlhRmVhdHVyZVByZWZpeCAvKm9wKi8pCit7CisgICAgcmV0dXJuIGhlaWdo
dE1lZGlhRmVhdHVyZUV2YWwodmFsdWUsIHN0eWxlLCB2aWV3LCBNaW5QcmVmaXgpOworfQorCitz
dGF0aWMgYm9vbCBtYXhfaGVpZ2h0TWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRnJhbWVWaWV3KiB2aWV3LCAgTWVkaWFGZWF0dXJlUHJlZml4IC8q
b3AqLykKK3sKKyAgICByZXR1cm4gaGVpZ2h0TWVkaWFGZWF0dXJlRXZhbCh2YWx1ZSwgc3R5bGUs
IHZpZXcsIE1heFByZWZpeCk7Cit9CisKK3N0YXRpYyBib29sIG1pbl93aWR0aE1lZGlhRmVhdHVy
ZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyYW1lVmlldyogdmll
dywgIE1lZGlhRmVhdHVyZVByZWZpeCAvKm9wKi8pCit7CisgICAgcmV0dXJuIHdpZHRoTWVkaWFG
ZWF0dXJlRXZhbCh2YWx1ZSwgc3R5bGUsIHZpZXcsIE1pblByZWZpeCk7Cit9CisKK3N0YXRpYyBi
b29sIG1heF93aWR0aE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHls
ZSogc3R5bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlhRmVhdHVyZVByZWZpeCAvKm9wKi8pCit7
CisgICAgcmV0dXJuIHdpZHRoTWVkaWFGZWF0dXJlRXZhbCh2YWx1ZSwgc3R5bGUsIHZpZXcsIE1h
eFByZWZpeCk7Cit9CisKK3N0YXRpYyBib29sIG1pbl9kZXZpY2VfaGVpZ2h0TWVkaWFGZWF0dXJl
RXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgRnJhbWVWaWV3KiB2aWV3
LCAgTWVkaWFGZWF0dXJlUHJlZml4IC8qb3AqLykKK3sKKyAgICByZXR1cm4gZGV2aWNlX2hlaWdo
dE1lZGlhRmVhdHVyZUV2YWwodmFsdWUsIHN0eWxlLCB2aWV3LCBNaW5QcmVmaXgpOworfQorCitz
dGF0aWMgYm9vbCBtYXhfZGV2aWNlX2hlaWdodE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZh
bHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlhRmVhdHVyZVBy
ZWZpeCAvKm9wKi8pCit7CisgICAgcmV0dXJuIGRldmljZV9oZWlnaHRNZWRpYUZlYXR1cmVFdmFs
KHZhbHVlLCBzdHlsZSwgdmlldywgTWF4UHJlZml4KTsKK30KKworc3RhdGljIGJvb2wgbWluX2Rl
dmljZV93aWR0aE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlhRmVhdHVyZVByZWZpeCAvKm9wKi8pCit7Cisg
ICAgcmV0dXJuIGRldmljZV93aWR0aE1lZGlhRmVhdHVyZUV2YWwodmFsdWUsIHN0eWxlLCB2aWV3
LCBNaW5QcmVmaXgpOworfQorCitzdGF0aWMgYm9vbCBtYXhfZGV2aWNlX3dpZHRoTWVkaWFGZWF0
dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgRnJhbWVWaWV3KiB2
aWV3LCAgTWVkaWFGZWF0dXJlUHJlZml4IC8qb3AqLykKK3sKKyAgICByZXR1cm4gZGV2aWNlX3dp
ZHRoTWVkaWFGZWF0dXJlRXZhbCh2YWx1ZSwgc3R5bGUsIHZpZXcsIE1heFByZWZpeCk7Cit9CisK
K3N0YXRpYyB2b2lkIGNyZWF0ZUZ1bmN0aW9uTWFwKCkKK3sKKyAgICAvLyBDcmVhdGUgdGhlIHRh
YmxlLgorICAgIGdGdW5jdGlvbk1hcCA9IG5ldyBGdW5jdGlvbk1hcDsKKyNkZWZpbmUgQUREX1RP
X0ZVTkNUSU9OTUFQKG5hbWUsIHN0cikgIFwKKyAgICBnRnVuY3Rpb25NYXAtPnNldChuYW1lIyNN
ZWRpYUZlYXR1cmUuaW1wbCgpLCBuYW1lIyNNZWRpYUZlYXR1cmVFdmFsKTsKKyAgICBDU1NfTUVE
SUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoQUREX1RPX0ZVTkNUSU9OTUFQKTsK
KyN1bmRlZiBBRERfVE9fRlVOQ1RJT05NQVAKK30KKworYm9vbCBNZWRpYVF1ZXJ5RXZhbHVhdG9y
OjpldmFsKGNvbnN0IE1lZGlhUXVlcnlFeHAqIGV4cHIpIGNvbnN0Cit7CisgICAgaWYgKCFtX3Zp
ZXcgfHwgIW1fc3R5bGUpCisgICAgICAgIHJldHVybiBtX2V4cFJlc3VsdDsKKworICAgIGlmICgh
Z0Z1bmN0aW9uTWFwKQorICAgICAgICBjcmVhdGVGdW5jdGlvbk1hcCgpOworCisgICAgLy8gY2Fs
bCB0aGUgbWVkaWEgZmVhdHVyZSBldmFsdWF0aW9uIGZ1bmN0aW9uLiBBc3N1bWUgbm8gcHJlZml4
CisgICAgLy8gYW5kIGxldCB0cmFtcG9saW5lIGZ1bmN0aW9ucyBvdmVycmlkZSB0aGUgcHJlZml4
IGlmIHByZWZpeCBpcworICAgIC8vIHVzZWQKKyAgICBFdmFsRnVuYyBmdW5jID0gZ0Z1bmN0aW9u
TWFwLT5nZXQoZXhwci0+bWVkaWFGZWF0dXJlKCkuaW1wbCgpKTsKKyAgICBpZiAoZnVuYykKKyAg
ICAgICAgcmV0dXJuIGZ1bmMoZXhwci0+dmFsdWUoKSwgbV9zdHlsZSwgbV92aWV3LCBOb1ByZWZp
eCk7CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNlCkluZGV4OiBXZWJD
b3JlL2tzdmcyL3N2Zy9TVkdTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
a3N2ZzIvc3ZnL1NWR1N0eWxlRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NTU1KQorKysgV2ViQ29y
ZS9rc3ZnMi9zdmcvU1ZHU3R5bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiAr
MzAsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlFdmFsdWF0b3Iu
aCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBA
IC05NiwxNyArOTcsMTggQEAgdm9pZCBTVkdTdHlsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCgp
CiAgICAgICAgIG1fc2hlZXQgPSAwOwogCiAgICAgbV9sb2FkaW5nID0gZmFsc2U7Ci0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBfbWVkaWEgPSBtZWRpYSgpOwotICAgIGlmICgodHlwZSgpLmlzRW1w
dHkoKSB8fCB0eXBlKCkgPT0gInRleHQvY3NzIikgJiYgKF9tZWRpYS5pc051bGwoKSB8fCBfbWVk
aWEuY29udGFpbnMoInNjcmVlbiIpIHx8IF9tZWRpYS5jb250YWlucygiYWxsIikgfHwgX21lZGlh
LmNvbnRhaW5zKCJwcmludCIpKSkgeworICAgIE1lZGlhUXVlcnlFdmFsdWF0b3Igc2NyZWVuRXZh
bCgic2NyZWVuIiwgdHJ1ZSk7CisgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBwcmludEV2YWwoInBy
aW50IiwgdHJ1ZSk7ICAgCisgICAgUmVmUHRyPE1lZGlhTGlzdD4gbWVkaWFMaXN0ID0gbmV3IE1l
ZGlhTGlzdCgoQ1NTU3R5bGVTaGVldCopMCwgbWVkaWEoKSk7CisgICAgaWYgKCh0eXBlKCkuaXNF
bXB0eSgpIHx8IHR5cGUoKSA9PSAidGV4dC9jc3MiKSAmJiAoc2NyZWVuRXZhbC5ldmFsKG1lZGlh
TGlzdC5nZXQoKSkgfHwgcHJpbnRFdmFsLmV2YWwobWVkaWFMaXN0LmdldCgpKSkpIHsKICAgICAg
ICAgb3duZXJEb2N1bWVudCgpLT5hZGRQZW5kaW5nU2hlZXQoKTsKIAogICAgICAgICBtX2xvYWRp
bmcgPSB0cnVlOwogIAogICAgICAgICBtX3NoZWV0ID0gbmV3IENTU1N0eWxlU2hlZXQodGhpcyk7
CiAgICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHRleHRDb250ZW50KCkpOyAvLyBTVkcgY3Nz
IGlzIGFsd2F5cyBwYXJzZWQgaW4gc3RyaWN0IG1vZGUKLQotICAgICAgICBNZWRpYUxpc3QqIG1l
ZGlhTGlzdCA9IG5ldyBNZWRpYUxpc3QobV9zaGVldC5nZXQoKSwgX21lZGlhKTsKLSAgICAgICAg
bV9zaGVldC0+c2V0TWVkaWEobWVkaWFMaXN0KTsKKyAgICAgICAgCisgICAgICAgIG1fc2hlZXQt
PnNldE1lZGlhKG1lZGlhTGlzdC5nZXQoKSk7CiAgICAgICAgIG1fbG9hZGluZyA9IGZhbHNlOwog
ICAgIH0KIApJbmRleDogV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRE9NSW1wbGVtZW50YXRpb24uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RPTUltcGxlbWVudGF0aW9uLmNw
cAkocmV2aXNpb24gMTQ1NTUpCisrKyBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdET01JbXBsZW1lbnRh
dGlvbi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5Nyw3ICsxOTcsMTAgQEAgUGFzc1JlZlB0cjxD
U1NTdHlsZVNoZWV0PiBTVkdET01JbXBsZW1lbgogICAgIENTU1N0eWxlU2hlZXQgKnBhcmVudCA9
IDA7CiAgICAgUmVmUHRyPENTU1N0eWxlU2hlZXQ+IHNoZWV0ID0gbmV3IENTU1N0eWxlU2hlZXQo
cGFyZW50KTsKICAgICAvL3NoZWV0LT5zZXRUaXRsZSh0aXRsZSk7Ci0gICAgc2hlZXQtPnNldE1l
ZGlhKG5ldyBNZWRpYUxpc3Qoc2hlZXQuZ2V0KCksIG1lZGlhKSk7CisgICAgLy8gaHR0cDovL3d3
dy53My5vcmcvVFIvRE9NLUxldmVsLTItU3R5bGUvY3NzLmh0bWwjQ1NTLURPTUltcGxlbWVudGF0
aW9uQ1NTIHNheXMKKyAgICAvLyB0aGF0IG1lZGlhIGRlc2NyaXB0b3JzIHNob3VsZCBiZSB1c2Vk
LCBldmVuIHRob3VnaCBzdmc6c3R5bGUgaGFzIG9ubHkKKyAgICAvLyBjc3MgbWVkaWEgdHlwZXMu
IEhlbmNlIHRoZSB0aGlyZCBwYXJhbWV0ZXIgKHRydWUpLgorICAgIHNoZWV0LT5zZXRNZWRpYShu
ZXcgTWVkaWFMaXN0KHNoZWV0LmdldCgpLCBtZWRpYSwgdHJ1ZSkpOyAKICAgICByZXR1cm4gc2hl
ZXQucmVsZWFzZSgpOwogfQogCkluZGV4OiBXZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9GcmFtZS5jcHAJKHJldmlzaW9uIDE0NTU1KQorKysgV2ViQ29y
ZS9wYWdlL0ZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQAogI2luY2x1
ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MR2VuZXJpY0Zvcm1FbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCisjaW5jbHVkZSAiTWVkaWFGZWF0dXJlTmFtZXMu
aCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2luY2x1ZGUgIkltYWdlRG9jdW1l
bnQuaCIKICNpbmNsdWRlICJNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmgiCkBAIC0xNDgs
NiArMTQ5LDcgQEAgRnJhbWU6OkZyYW1lKFBhZ2UqIHBhZ2UsIFJlbmRlclBhcnQqIG93bgogICAg
IEV2ZW50TmFtZXM6OmluaXQoKTsKICAgICBIVE1MTmFtZXM6OmluaXQoKTsKICAgICBRdWFsaWZp
ZWROYW1lOjppbml0KCk7CisgICAgTWVkaWFGZWF0dXJlTmFtZXM6OmluaXQoKTsKIAogI2lmIFNW
R19TVVBQT1JUCiAgICAgU1ZHTmFtZXM6OmluaXQoKTsK
</data>
<flag name="review"
          id="2420"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>8549</attachid>
            <date>2006-05-26 00:42:28 -0700</date>
            <delta_ts>2006-05-29 23:07:45 -0700</delta_ts>
            <desc>Revised patch</desc>
            <filename>mediaqueries-2006-05-26-WebKit.patch</filename>
            <type>text/plain</type>
            <size>202771</size>
            <attacher name="Kimmo Kinnunen">kimmo.t.kinnunen</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE0NjA2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTI0IEBACisyMDA2LTA1LTI2ICBLaW1tbyBLaW5udW5lbiAg
PHNldCBFTUFJTF9BRERSRVNTIGVudmlyb25tZW50IHZhcmlhYmxlPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICBUZXN0IGNhc2VzIGZvciBDU1MzIE1lZGlh
IFF1ZXJpZXMgaW1wbGVtZW50YXRpb24uCisgICAgICAgIDxodHRwOi8vYnVnemlsbGEub3BlbmRh
cndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTQxMjc+CisKKyAgICAgICAgKiBmYXN0L21lZGlhL2lt
cG9ydC1wLWdyZWVuLmNzczogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9pbXBvcnQtcC1y
ZWQuY3NzOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3lu
dGF4LTAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tZWRpYS1k
ZXNjcmlwdG9yLXN5bnRheC0wMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21l
ZGlhLWRlc2NyaXB0b3Itc3ludGF4LTAyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wMi5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTAzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wMy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4
LTA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tZWRpYS1kZXNj
cmlwdG9yLXN5bnRheC0wNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21lZGlh
LWRlc2NyaXB0b3Itc3ludGF4LTA1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wNS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTA2LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wNi5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21lZGlhLXR5cGUtc3ludGF4LTAxLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tZWRpYS10eXBlLXN5bnRheC0w
MS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21lZGlhLXR5cGUtc3ludGF4LTAy
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tZWRpYS10eXBlLXN5
bnRheC0wMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1
ZXJ5LTAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1jb21w
b3VuZC1xdWVyeS0wMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLWNvbXBv
dW5kLXF1ZXJ5LTAyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9t
cS1jb21wb3VuZC1xdWVyeS0wMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21x
LWNvbXBvdW5kLXF1ZXJ5LTAzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9t
ZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTA1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wNS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L21lZGlhL21xLWdyaWQtMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L21lZGlhL21xLWdyaWQtMDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRp
YS9tcS1ncmlkLTAyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9t
cS1ncmlkLTAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxpZC1t
ZWRpYS1mZWF0dXJlLTAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRp
YS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMy1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRp
YS1mZWF0dXJlLTAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxp
ZC1tZWRpYS1mZWF0dXJlLTA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9t
ZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDQuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDEuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wMi1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDIuaHRtbDogQWRkZWQu
CisgICAgICAgICogZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wMy1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDMuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wNC1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wNS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50
YXgtMDUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1leGNl
cHQtMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLWpzLW1l
ZGlhLWV4Y2VwdC0wMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLWpzLW1l
ZGlhLWV4Y2VwdC0wMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEv
bXEtanMtbWVkaWEtZXhjZXB0LTAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEv
bXEtanMtbWVkaWEtZXhjZXB0LTAzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYS9tcS1qcy1tZWRpYS1leGNlcHQtMDMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYS9tcS1qcy1tZWRpYS1mb3J3YXJkLXN5bnRheC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvbWVkaWEvbXEtanMtbWVkaWEtZm9yd2FyZC1zeW50YXguaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTAxLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1l
ZGlhLTAxLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVl
dC1tZWRpYS0wMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEt
anMtc3R5bGVzaGVldC1tZWRpYS0wMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlh
L21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L21lZGlhL21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTA0LWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTA0Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtbWluLWNvbnN0cmFpbnQtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLW1pbi1jb25zdHJhaW50Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMt
MDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXJlbGF0aXZl
LWNvbnN0cmFpbnRzLTAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcmVs
YXRpdmUtY29uc3RyYWludHMtMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTAzLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDQtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA0Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDUt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXJlbGF0aXZlLWNv
bnN0cmFpbnRzLTA1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcmVsYXRp
dmUtY29uc3RyYWludHMtMDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA2Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDctZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA3Lmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDgtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0
cmFpbnRzLTA4Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtcmVsYXRpdmUt
Y29uc3RyYWludHMtMDktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlh
L21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wMS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDItZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDIuaHRtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTAzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTAz
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0w
NC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtc2ltcGxlLW5l
Zy1xdWVyeS0wNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21xLXNpbXBsZS1u
ZWctcXVlcnktMDUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlhL21x
LXNpbXBsZS1uZWctcXVlcnktMDUuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9t
cS1zaW1wbGUtcXVlcnktMDEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21l
ZGlhL21xLXNpbXBsZS1xdWVyeS0wMS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L21lZGlh
L21xLXNpbXBsZS1xdWVyeS0wMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvbWVk
aWEvbXEtc2ltcGxlLXF1ZXJ5LTAzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9t
ZWRpYS9tcS1zaW1wbGUtcXVlcnktMDQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wNC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wNS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTA1Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvbWVkaWEvbXEtdmFsdWVsZXNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9tZWRpYS9tcS12YWx1ZWxlc3MuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9tZWRpYS9t
cS13aWR0aC1hYnNvbHV0ZS0wMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
bWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9t
ZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wMi1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvbWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDIuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvbWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDMuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wNC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvbWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDQuaHRtbDogQWRkZWQu
CisKIDIwMDYtMDUtMjUgIE1pdHogUGV0dGVsICA8b3BlbmRhcndpbi5vcmdAbWl0enBldHRlbC5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgaHlhdHQuICBMYW5kZWQgYnkgZXNlaWRlbC4KSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDUuaHRt
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0
cmFpbnRzLTA1Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA1Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjQg
QEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiByZWxhdGl2
ZSBjb25zdHJhaW50cyB0ZXN0IHVzaW5nIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzBlbSkuIFVz
aW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBAbWVkaWEgcnVsZSA8L3RpdGxlPiAgCis8bGluayByZWw9
ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0
aCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3AgeworICBjb2xvcjogcmVkOworfQor
QG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzBlbSkgeworICAgcCB7CisgICAgIGNvbG9y
OiBncmVlbjsKKyAgfQorfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCis8cD4gVGhpcyB0
ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyB3aWRlciB0aGFuIDMwZW0uICA8L3A+
CisKKzxkaXYgc3R5bGU9IndpZHRoOiAzMGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7
Ij4gZGl2IG9mIGxlbmd0aCAzMCBlbSA8L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOiA4MDBweDsg
YmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBsZW5ndGggODAwcHggPC9kaXY+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFs
aWQtc3ludGF4LTAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21xLWludmFsaWQtc3ludGF4LTAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDEtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAor
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtZ3JpZC0wMi5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtZ3JpZC0wMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1ncmlkLTAyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTQgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBt
ZWRpYSBxdWVyeSB0ZXN0aW5nIG5vdCBhbmQgcGFyYW1ldGVybGVzcyBmZWF0dXJlIChub3Qgc2Ny
ZWVuIGFuZCAoZ3JpZCkpLiBVc2luZyBzdHlsZSBlbGVtZW50LCBAbWVkaWEgY3NzIHJ1bGUuPC90
aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1t
ZWRpYXF1ZXJpZXMvI2dyaWQiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQG1lZGlhIG5v
dCBzY3JlZW4gYW5kIChncmlkKSB7CitwIHsgY29sb3I6IGdyZWVuIH0KK30KKzwvc3R5bGU+Cis8
L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdpbmcg
ZGV2aWNlIGlzIG5vdCBhIGdyaWQgZGV2aWNlLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgtMDUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1zeW50YXgt
MDUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
cS1pbnZhbGlkLXN5bnRheC0wNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
OCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3
ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRo
aXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
cS1jb21wb3VuZC1xdWVyeS0wMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDIuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRl
c3Q6IG1lZGlhIHF1ZXJ5IHRlc3RpbmcgY29tcG91bmQgcXVlcmllcyAoc2NyZWVuIGFuZCAoY29s
b3IpIGFuZCAoZ3JpZDowKSkuIFVzaW5nIGxpbmsgZWxlbWVudCwgbWVkaWEgYXR0cmlidXRlPC90
aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1t
ZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4
dC9jc3MiIG1lZGlhPSJzY3JlZW4gYW5kIChjb2xvcikgIGFuZCAoZ3JpZDowKSIgaHJlZj0iaW1w
b3J0LXAtZ3JlZW4uY3NzIiAvPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3Vs
ZCBiZSBncmVlbiBvbiBiaXRtYXAgY29sb3IgZGV2aWNlcy48L3A+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA5
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1j
b25zdHJhaW50cy0wOS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wOS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDE3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogbWVk
aWEgcXVlcnkgdGVzdGluZyBjb25zdHJhaW50cyB3aXRoIHJlbGF0aXZlIHZhbHVlcyAoc2NyZWVu
IGFuZCAobWF4LXdpZHRoOiA2MGVtKSkuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIEBtZWRpYSBjc3Mg
cnVsZS48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9U
Ui9jc3MzLW1lZGlhcXVlcmllcy8jd2lkdGgiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgor
cCB7IGNvbG9yOiByZWQgfQorQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNjBlbSkgewor
cCB7IGNvbG9yOiBncmVlbiB9Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhp
cyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyBuYXJyb3dlciB0aGFuIDYwZW0u
ICA8L3A+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogNjBlbTsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRi
bHVlOyI+IGRpdiBvZiBsZW5ndGggNjAgZW0gPC9kaXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogODAw
cHg7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBkaXYgb2YgbGVuZ3RoIDgwMHB4IDwv
ZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1q
cy1tZWRpYS1leGNlcHQtMDItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbXEtanMtbWVkaWEtZXhjZXB0LTAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtbWVkaWEtZXhjZXB0LTAyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4u
IgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDM0KSBzaXplIDc4NHgxOAorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0MDF4MTgKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA0MDE6ICJDYXVnaHQgZXhjZXB0aW9uOiBFcnJvcjogU1lOVEFYX0VS
UjogRE9NIEV4Y2VwdGlvbiAxMiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVs
YXRpdmUtY29uc3RyYWludHMtMDItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJh
aW50cy0wMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK2xheWVy
IGF0ICgwLDApIHNpemUgODA4eDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA3ODV4
NTg1CitsYXllciBhdCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgNzg1eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
NzY5eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4IFtjb2xv
cj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNjB4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNjA6ICJUaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIHdpZGVyIHRoYW4gMzBlbS4iCisgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA0ODB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTIzeDE4CisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTIzOiAiZGl2IG9mIGxlbmd0aCAzMCBlbSIKKyAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDUyKSBzaXplIDgwMHgxOCBbYmdjb2xvcj0jQUREOEU2
XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjR4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjQ6ICJkaXYgb2YgbGVuZ3RoIDgwMHB4IgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTAzLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLXN0
eWxlc2hlZXQtbWVkaWEtMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTAzLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
IFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgNTYweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTYw
OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBhbmQgYmVsb3cgc2hvdWxkIHJlYWQgXCJicmFp
bGxlLCBub3Qgc2NyZWVuLCBzY3JlZW4gYW5kIChjb2xvcilcIi4iCisgICAgICBSZW5kZXJCbG9j
ayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDMwNHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMw
NDogImJyYWlsbGUsIG5vdCBzY3JlZW4sIHNjcmVlbiBhbmQgKGNvbG9yKSwgbm90IHNjcmVlbiIK
KyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw2OCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTgyeDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMTgyOiAiZXhwZWN0ZWQgdG8gZmFpbCAoMjQuMDcuMjAwNSkiCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRpYS1m
ZWF0dXJlLTAyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEz
IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3ludGFj
dGljYWxseSBjb3JyZWN0IHF1ZXJ5IHdpdGggaW52YWxpZCBtZWRpYSBmZWF0dXJlIHNob3VsZCBl
dmFsIGZhbHNlICAoYWxsIGFuZCAoaW52YWxpZCkpLiBVc2luZyBsaW5rIGVsZW1lbnQsIG1lZGlh
IGF0dHJpYnV0ZS48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgor
cCB7IGNvbG9yOiBncmVlbiB9Cis8L3N0eWxlPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBl
PSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCBhbmQgKGludmFsaWQpIiBocmVmPSJpbXBvcnQtcC1yZWQu
Y3NzIiAvPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48
L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdp
ZHRoLWFic29sdXRlLTAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS13aWR0aC1hYnNvbHV0ZS0wMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wMy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDog
QWJzb2x1dGUgd2lkdGggcXVlcnkgKHNjcmVlbiBhbmQgKG1heC13aWR0aDogODAwcHgpKS4gVXNp
bmcgc3R5bGUgZWxlbWVudCwgQGltcG9ydCBjc3MgcnVsZS48L3RpdGxlPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jd2lkdGgi
IC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQGltcG9ydCB1cmwoaW1wb3J0LXAtZ3JlZW4u
Y3NzKSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDgwMHB4KTsKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIGF0IG1v
c3QgODAwcHggd2lkZS48L3A+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogODAwcHg7IGJhY2tncm91bmQt
Y29sb3I6bGlnaHRibHVlOyI+ZGl2IG9mIHdpZHRoIDgwMHB4PC9kaXY+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRz
LTA2LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDYtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitsYXllciBhdCAoMCwwKSBzaXplIDk2
OHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgNzg1eDU4NQorbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA5Njh4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2
MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg1ODQKKyAgICAgIFJl
bmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzI4eDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggNzI4OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2
aWV3cG9ydCBpcyBuYXJyb3dlciB0aGFuIDYwZW0uIFRoaXMgdGVzdHMgdGhhdCAobWluLXdpZHRo
OiA2MGVtKSBjYW4gZXZhbHVhdGUgdG8gZmFsc2UuIgorICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDAsMzQpIHNpemUgOTYweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyM3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDEyMzogImRpdiBvZiBsZW5ndGggNjAgZW0iCisgICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCw1Mikgc2l6ZSA4MDB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTI0eDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMTI0OiAiZGl2IG9mIGxlbmd0aCA4MDBweCIKSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtdmFsdWVsZXNzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXZhbHVlbGVzcy1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXZhbHVlbGVzcy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisg
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJC
bG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMwOHgxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDMwODogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgY29sb3Ig
ZGlzcGxheSBpcyB1c2VkLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxl
LXF1ZXJ5LTA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1z
aW1wbGUtcXVlcnktMDQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvbXEtc2ltcGxlLXF1ZXJ5LTA0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAK
KzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzaW1wbGUgbWVk
aWEgcXVlcnkuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBAbWVkaWEgcnVsZTwvdGl0bGU+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVy
aWVzLyNzeW50YXgiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQG1lZGlhIG9ubHkgYWxs
IHsKK3AgeyBjb2xvcjogZ3JlZW4gfQorfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+
IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9pbXBvcnQtcC1ncmVlbi5jc3MKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9pbXBvcnQtcC1ncmVlbi5jc3MJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL2ltcG9ydC1wLWdyZWVuLmNzcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSBAQAorcCB7ICBjb2xvcjogZ3JlZW4gfQpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wMy1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5
LTAzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1
NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAw
ODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzE3eDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzE3OiAiVGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbiBvbiBiaXRtYXAgY29sb3IgZGV2aWNlcy4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTAxLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wMS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRh
eC0wMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPkhUTUw0IG1lZGlhIGRlc2NyaXB0b3JzIHRlc3Q6IHBhcnNpbmcgc3R5bGUgZWxlbWVu
dCBtZWRpYSBhdHRyaWJ1dGUsIGZvcndhcmQtY29tcGF0aWJsZSBzeW50YXg8L3RpdGxlPgorPGxp
bmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3R5cGVz
Lmh0bWwjaC02LjEzIiAvPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSIzZC1nbGFz
c2VzLCBzY3JlZW4gYW5kIHJlc29sdXRpb24gPiA0MGRwaSwgYnJhaWxsZSI+CitwIHsgY29sb3I6
IGdyZWVuIH0KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPC9ib2R5PgorPHA+IFRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4uIDwvcD4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wMy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wMy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTAzLmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NT
MyBtZWRpYSBxdWVyeSB0ZXN0OiBzaW1wbGUgbWVkaWEgcXVlcnkgKG5vdCBicmFpbGxlLCBzY3Jl
ZW4pLiBVc2luZyBzdHlsZSBlbGVtZW50LCBjc3MgQGltcG9ydCBydWxlPC90aXRsZT4KKzxsaW5r
IHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMv
I3N5bnRheCIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitAaW1wb3J0IHVybChpbXBvcnQt
cC1ncmVlbi5jc3MpIG5vdCBicmFpbGxlLCBzY3JlZW47Cis8L3N0eWxlPgorPC9oZWFkPgorPGJv
ZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wMS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVl
cnktMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1zaW1wbGUtcXVlcnktMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0
ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUg
Nzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAs
MCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJU
aGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtaW52YWxpZC1tZWRpYS1mZWF0dXJlLTAzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQt
bWVkaWEtZmVhdHVyZS0wMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBA
QAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7
SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgs
OCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4
MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13
aWR0aC1hYnNvbHV0ZS0wNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTA0LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDh4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDc4NXg1ODUKK2xheWVyIGF0ICgw
LDApIHNpemUgODA4eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4
NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4NTg0CisgICAgICBS
ZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTggW2NvbG9yPSMwMDgwMDBdCisgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM3OHgxOAorICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDM3ODogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYg
dmlld3BvcnQgaXMgYXQgbW9zdCA4MDBweCB3aWRlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9
IGF0ICgwLDM0KSBzaXplIDgwMHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjF4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAxMjE6ICJkaXYgb2Ygd2lkdGggODAwcHgiCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTA1Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wNS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5
bnRheC0wNS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPkhUTUw0IG1lZGlhIGRlc2NyaXB0b3IgdGVzdDogcGFyc2luZyBzdHlsZSBlbGVt
ZW50IG1lZGlhIGF0dHJpYnV0ZSwgZm9yd2FyZC1jb21wYXRpYmxlIHN5bnRheDwvdGl0bGU+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvdHlw
ZXMuaHRtbCNoLTYuMTMiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSIqKioqKnx7
fS0gfFt8Ij4KK3AgeyBjb2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+
Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtc3ludGF4LTAxLmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wMS5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5
bnRheC0wMS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3ludGFjdGljYWxseSBpbnZhbGlkIG1l
ZGlhIHF1ZXJ5IGluc2lkZSBodG1sIGVsZW1lbnQgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgaHRtbCBt
ZWRpYSBkZXNjcmlwdG9yLiBVc2luZyBzdHlsZSBlbGVtZW50LCBtZWRpYSBhdHRyaWJ1dGUuPC90
aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3Mz
LW1lZGlhcXVlcmllcy8iIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImFsbCBh
bmQgaW52YWxpZCI+CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxi
b2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1
ZXJ5LTA1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvbXEtc2ltcGxlLXF1ZXJ5LTA1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXpl
IDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAi
VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLWludmFsaWQtc3ludGF4LTA1Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wNS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wNS5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDE3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkg
dGVzdDogc3ludGFjdGljYWxseSBpbnZhbGlkIG1lZGlhIHF1ZXJ5IGluc2lkZSBjc3MgcnVsZSBz
aG91bGQgZXZhbCB0byBmYWxzZSAoLCwsLCkuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBpbXBv
cnQgcnVsZS48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9y
Zy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+Cis8IS0tIHRoaXMgdGVzdCBzaG93cyBzbGlnaHQg
ZGlzY29ubmVjdCBiZXR3ZWVuIGNzcyBtZWRpYSBxdWVyaWVzIGFuZCBodG1sNCBtZWRpYSBkZXNj
cmlwdG9ycyAtLT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9IiwsLCwsLCI+CitwIHsg
Y29sb3I6IGdyZWVuIH0KKzwvc3R5bD4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitAaW1wb3J0
IHVybChpbXBvcnQtcC1yZWQuY3NzKSBhbGwsLCwsLCw7CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgt
MDItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVk
aWEtZGVzY3JpcHRvci1zeW50YXgtMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1leGNlcHQtMDIuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLW1lZGlhLWV4Y2VwdC0wMi5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1l
eGNlcHQtMDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IEBtZWRpYSBjc3MgcnVsZSBtZWRpYS5t
ZWRpYVRleHQgcHJvcGVydHkgcGFyc2luZywgbWVkaWEgcXVlcnkgc3ludGF4IGVycm9yIHNob3Vs
ZCBiZSBoYW5kbGVkIGNvcnJlY3RseS48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9tZWRpYS5odG1sIiAvPgorCis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPgorcCNyZXN1bHQge2NvbG9yOiBncmVlbn0KKworQG1lZGlhIG5vdCBzY3JlZW4g
eworLyogcXVlcnkgd2lsbCBiZSBtb2RpZmllZCBmcm9tIGphdmFzY3JpcHQgKi8KKy8qIHRoZSBt
YW5pcHVsYXRpb24gY29udGFpbnMgc3ludGF4IGVycm9yLCBhbmQgc2hvdWxkIGZhaWwgKi8KK3Aj
cmVzdWx0IHtjb2xvcjogcmVkfQorfQorCitAbWVkaWEgc2NyZWVuIGFuZCByZXNvbHV0aW9uID4g
NDBkcGkgeworLyogbWVkaWEgcXVlcnkgd2l0aCBzeW50YXggZXJyb3Igc2hvdWxkIGZhaWwgKi8K
Ky8qIGNvcnJlc3BvbmRpbmcgRE9NIG1hbmlwdWxhdGlvbiB3aWxsIGZhaWwgKi8KK3AjcmVzdWx0
IHtjb2xvcjogcmVkfQorfQorPC9zdHlsZT4KKzxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQi
PgorZnVuY3Rpb24gdGVzdCgpIHsKKyAgICB0cnkgeworICAgICAgICAvLyB0aGlzIHNob3VsZCB0
aHJvdworICAgICAgICBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxlc1sxXS5tZWRpYS5t
ZWRpYVRleHQgPSAic2NyZWVuIGFuZCByZXNvbHV0aW9uID4gNDBkcGkiOworICAgIH0gY2F0Y2gg
KGUpIHsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRN
TCA9ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiI7CisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJkZXRhaWxzIikuaW5uZXJIVE1MID0gIkNhdWdodCBleGNlcHRpb246ICIgKyBl
OworICAgfQorfQorPC9zY3JpcHQ+CisKKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4K
KzxwIGlkPSJyZXN1bHQiPkZhaWx1cmU6IHRlc3Qgbm90IHJ1bjwvcD4KKzxwIGlkPSJkZXRhaWxz
Ij48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LXNpbXBsZS1uZWctcXVlcnktMDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wNC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDQt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3Ngor
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAw
XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdy
ZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWlu
dHMtMDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0
aXZlLWNvbnN0cmFpbnRzLTAyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTAyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTggQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0
OiByZWxhdGl2ZSBjb25zdHJhaW50cyB0ZXN0IHVzaW5nIHNjcmVlbiBhbmQgKG1pbi13aWR0aDog
MzBlbSkuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIG1lZGlhIGF0dHJpYnV0ZSA8L3RpdGxlPiAgCis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVy
aWVzLyN3aWR0aCIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9InNjcmVlbiBhbmQg
KG1pbi13aWR0aDogMzBlbSkiPgorcCB7CisgICAgY29sb3I6IGdyZWVuOworfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorCis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3
cG9ydCBpcyB3aWRlciB0aGFuIDMwZW0uICA8L3A+CisKKzxkaXYgc3R5bGU9IndpZHRoOiAzMGVt
OyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCAzMCBlbSA8L2Rp
dj4KKzxkaXYgc3R5bGU9IndpZHRoOiA4MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVl
OyI+IGRpdiBvZiBsZW5ndGggODAwcHggPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXR5cGUtc3ludGF4LTAxLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLXR5cGUtc3ludGF4LTAx
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVk
aWEtdHlwZS1zeW50YXgtMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sg
e0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0
eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlz
IHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
anMtc3R5bGVzaGVldC1tZWRpYS0wMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0wMy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTAzLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBt
ZWRpYSBxdWVyeSB0ZXN0OiBzdHlsZXNoZWV0IG1lZGlhLmFwcGVuZE1lZGl1bTwvdGl0bGU+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVy
aWVzLyNzeW50YXgiIC8+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
L1RSL0RPTS1MZXZlbC0yLVN0eWxlL3N0eWxlc2hlZXRzLmh0bWwiIC8+Cis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiIG1lZGlhPSJicmFpbGxlLCBub3Qgc2NyZWVuIj4KK3AgeyBjb2xvcjogZ3JlZW4g
fQorPC9zdHlsZT4KKworPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CitmdW5jdGlvbiB0
ZXN0KCkgeworICAgIHZhciByZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsK
KyAgICB2YXIgbWVkaWEgPSBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYTsKKyAgICBtZWRp
YS5hcHBlbmRNZWRpdW0oInNjcmVlbiBhbmQgKGNvbG9yKSIpOworICAgIG1lZGlhLmFwcGVuZE1l
ZGl1bSgibm90IHNjcmVlbiIpOworICAgIHZhciBmaXJzdCA9IHRydWU7CisgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBtZWRpYS5sZW5ndGg7ICsraSkgeworICAgICAgICBpZiAoIWZpcnN0KSAgcmUu
aW5uZXJIVE1MICs9ICIsICIgKyBtZWRpYS5pdGVtKGkpOworICAgICAgICBlbHNlIHJlLmlubmVy
SFRNTCA9IG1lZGlhLml0ZW0oaSk7CisgICAgICAgIGZpcnN0ID0gZmFsc2U7CisgICAgfQorCit9
Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHkgb25sb2FkPSJ0ZXN0KCkiPgorPCEtLSBGSVhN
RTogTk9URSEgVGhpcyB3aWxsIGZhaWwgdW50aWwgZHluYW1pYyBzZXR0aW5nIG9mIG1lZGlhIHBy
b3BlcnR5IGNhdXNlcyBzdHlsZSByZWNhbGN1bGF0aW9uLgorICAgICAgICAgIFRoaXMgaXMgbm90
IHRoZSBjYXNlIGN1cnJlbnRseSAoMjQuMDcuMjAwNSkKKy0tPgorPHA+IFRoaXMgdGV4dCBzaG91
bGQgYmUgZ3JlZW4gYW5kIGJlbG93IHNob3VsZCByZWFkICJicmFpbGxlLCBub3Qgc2NyZWVuLCBz
Y3JlZW4gYW5kIChjb2xvcikiLiA8L3A+Cis8cCBpZD0icmVzdWx0Ij5GYWlsdXJlOiB0ZXN0IG5v
dCBydW48L3A+Cis8cD4gZXhwZWN0ZWQgdG8gZmFpbCAoMjQuMDcuMjAwNSk8L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3It
c3ludGF4LTA2LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTA2LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDYtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUg
ODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAg
ICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVu
LiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMt
MDYuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZl
LWNvbnN0cmFpbnRzLTA2Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA2Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBt
ZWRpYSBxdWVyeSB0ZXN0aW5nIGNvbnN0cmFpbnRzIHdpdGggcmVsYXRpdmUgdmFsdWVzIGV2YWx1
YXRpbmcgZmFsc2UgKHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkpLiBVc2luZyBzdHlsZSBl
bGVtZW50LCBAbWVkaWEgY3NzIHJ1bGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0i
aHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorPHN0eWxl
IHR5cGU9InRleHQvY3NzIj4KK3AgeyBjb2xvcjogZ3JlZW4gfQorQG1lZGlhIHNjcmVlbiBhbmQg
KG1pbi13aWR0aDogNjBlbSkgeworcCB7IGNvbG9yOiByZWQgfQorfQorPC9zdHlsZT4KKzwvaGVh
ZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMg
bmFycm93ZXIgdGhhbiA2MGVtLiBUaGlzIHRlc3RzIHRoYXQgKG1pbi13aWR0aDogNjBlbSkgY2Fu
IGV2YWx1YXRlIHRvIGZhbHNlLjwvcD4KKzxkaXYgc3R5bGU9IndpZHRoOiA2MGVtOyBiYWNrZ3Jv
dW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCA2MCBlbSA8L2Rpdj4KKzxkaXYg
c3R5bGU9IndpZHRoOiA4MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBv
ZiBsZW5ndGggODAwcHggPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21xLWludmFsaWQtc3ludGF4LTAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtc3ludGF4LTAyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1z
eW50YXgtMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0
ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUg
Nzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xv
cj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4
MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtdmFsdWVsZXNz
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS12YWx1ZWxlc3Mu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtdmFsdWVsZXNz
Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0
bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBtZWRpYSBxdWVyeSB3aXRob3V0IHZhbHVlcyAoc2Ny
ZWVuIGFuZCAoY29sb3IpKS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgQG1lZGlhIGNzcyBydWxlLjwv
dGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMt
bWVkaWFxdWVyaWVzLyNjb2xvciIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRp
YSBzY3JlZW4gYW5kIChjb2xvcikgeworcCB7IGNvbG9yOiBncmVlbiB9Cit9Cis8L3N0eWxlPgor
PC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiBjb2xvciBk
aXNwbGF5IGlzIHVzZWQuPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wMy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDMuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDMuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1l
ZGlhIHF1ZXJ5IHRlc3Q6IG1lZGlhIHF1ZXJ5IHRlc3RpbmcgY29tcG91bmQgcXVlcmllcyAoc2Ny
ZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDowKSkuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBA
aW1wb3J0IHJ1bGU8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3Lncz
Lm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAvPgorPHN0eWxlIHR5cGU9InRleHQv
Y3NzIiA+CitAaW1wb3J0IHVybChpbXBvcnQtcC1ncmVlbi5jc3MpIHNjcmVlbiBhbmQgKGNvbG9y
KSBhbmQgKGdyaWQ6MCk7Cis8L3N0eWxlPgorCis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRl
eHQgc2hvdWxkIGJlIGdyZWVuIG9uIGJpdG1hcCBjb2xvciBkZXZpY2VzLjwvcD4KKzwvYm9keT4K
KzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtbWVkaWEtZXhjZXB0
LTAzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LWpzLW1lZGlhLWV4Y2VwdC0wMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhL21xLWpzLW1lZGlhLWV4Y2VwdC0wMy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJl
bmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sg
e1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMjF4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAyMjE6ICJTdWNjZXNzLiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKKyAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNDAxeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggNDAxOiAiQ2F1Z2h0IGV4Y2VwdGlvbjogRXJyb3I6IFNZTlRBWF9FUlI6IERP
TSBFeGNlcHRpb24gMTIiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZl
LWNvbnN0cmFpbnRzLTAzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTAzLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMt
MDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitsYXllciBhdCAo
MCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgNzg1eDU4NQor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDc4NXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg1
ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgxOCBbY29sb3I9IzAw
ODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzYweDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzYwOiAiVGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbiBpZiB2aWV3cG9ydCBpcyB3aWRlciB0aGFuIDMwZW0uIgorICAgICAgUmVuZGVyQmxv
Y2sge0RJVn0gYXQgKDAsMzQpIHNpemUgNDgweDE4IFtiZ2NvbG9yPSNBREQ4RTZdCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyM3gxOAorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDEyMzogImRpdiBvZiBsZW5ndGggMzAgZW0iCisgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA4MDB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTI0eDE4CisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI0OiAiZGl2IG9mIGxlbmd0aCA4MDBweCIKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAxLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDEuaHRtbAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAxLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzaW1wbGUgbWVkaWEgcXVlcnkuIFVzaW5nIHN0eWxlIGVs
ZW1lbnQsIG1lZGlhIGF0dHJpYnV0ZTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0
dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+CisKKzxzdHls
ZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9Im9ubHkgYWxsIj4KK3AgeyBjb2xvcjogZ3JlZW4gfQor
PC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
bi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LWpzLXN0eWxlc2hlZXQtbWVkaWEtMDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0wNC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLXN0eWxlc2hlZXQt
bWVkaWEtMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACitsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAw
eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXpl
IDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0NDV4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA0NDU6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGFu
ZCBiZWxvdyBzaG91bGQgcmVhZCBcIm1lZGlhIGxpc3QgaXMgZW1wdHlcIi4iCisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDExN3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDExNzogIm1lZGlhIGxpc3QgaXMgZW1wdHkiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQg
KDAsNjgpIHNpemUgNzg0eDE4CisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDE3N3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE3NzogIkV4cGVj
dGVkIHRvIGZhaWwgKDI0LjcuMjAwNSkiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21x
LWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRpYS1mZWF0dXJlLTAzLmh0bWwJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMy5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3ludGFjdGljYWxseSBjb3JyZWN0IHF1ZXJ5IHdpdGgg
aW52YWxpZCBtZWRpYSBmZWF0dXJlIHNob3VsZCBldmFsIGZhbHNlICAoYWxsIGFuZCAoaW52YWxp
ZCkpLiBVc2luZyBzdHlsZSBlbGVtZW50LCBjc3MgaW1wb3J0IHJ1bGUuPC90aXRsZT4KKzxsaW5r
IHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMv
IiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3AgeyBjb2xvcjogZ3JlZW4gfQorPC9zdHls
ZT4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitAaW1wb3J0IHVybChpbXBvcnQtcC1yZWQuY3Nz
KSBhbGwgYW5kIChpbnZhbGlkKTsKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlz
IHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDQuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTA0Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTA0Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBBYnNvbHV0ZSB3aWR0aCBxdWVyeSAoc2NyZWVuIGFuZCAo
bWF4LXdpZHRoOiA4MDBweCkpLiBVc2luZyBzdHlsZSBlbGVtZW50LCBAbWVkaWEgY3NzIHJ1bGUu
PC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3Nz
My1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRp
YSAgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkgeworcCB7IGNvbG9yOiBncmVlbiB9Cit9
Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
biBpZiB2aWV3cG9ydCBpcyBhdCBtb3N0IDgwMHB4IHdpZGUuPC9wPgorPGRpdiBzdHlsZT0id2lk
dGg6IDgwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsiPmRpdiBvZiB3aWR0aCA4MDBw
eDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
cS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNv
bnN0cmFpbnRzLTA3LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXpl
IDc4NXg1ODUKK2xheWVyIGF0ICgwLDApIHNpemUgODA4eDYwMAorICBSZW5kZXJCbG9jayB7SFRN
TH0gYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkg
c2l6ZSA3Njl4NTg0CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTgg
W2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDcxMHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDcxMDogIlRoaXMgdGV4
dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgd2lkZXIgdGhhbiAzMGVtLiBUaGlzIHRl
c3RzIHRoYXQgKG1heC13aWR0aDogMzBlbSkgY2FuIGV2YWx1YXRlIHRvIGZhbHNlLiIKKyAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDQ4MHgxOCBbYmdjb2xvcj0jQUREOEU2
XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjN4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjM6ICJkaXYgb2YgbGVuZ3RoIDMwIGVtIgor
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTIpIHNpemUgODAweDE4IFtiZ2NvbG9yPSNB
REQ4RTZdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyNHgxOAor
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyNDogImRpdiBvZiBsZW5ndGggODAw
cHgiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wNS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTA1
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1x
dWVyeS0wNS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACis8aHRtbD4KKzxoZWFk
PgorPHRpdGxlPiBDU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IG1hdGNoZXMgY29sb3Igb3IgbW9ub2No
cm9tZSBzY3JlZW5zIDwvdGl0bGU+ICAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3
dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3Nz
Ij4KK3AgeyBjb2xvcjogcmVkIH0KK0BtZWRpYSBhbGwgYW5kIChjb2xvcikgeworcCB7IGNvbG9y
OiBncmVlbiB9Cit9CitAbWVkaWEgYWxsIGFuZCAobW9ub2Nocm9tZSkgeworcCB7IGNvbG9yOiBn
cmVlbjt9Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3Vs
ZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTA0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTA0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnkt
MDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3
NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4
MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMTd4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMTc6ICJUaGlzIHRleHQgc2hvdWxkIGJl
IGdyZWVuIG9uIGJpdG1hcCBjb2xvciBkZXZpY2VzLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDEtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0w
MS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODA4eDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA3ODV4NTg1Cits
YXllciBhdCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgNzg1eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDU4
NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4IFtjb2xvcj0jMDA4
MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNzh4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNzg6ICJUaGlzIHRleHQgc2hvdWxkIGJl
IGdyZWVuIGlmIHZpZXdwb3J0IGlzIGF0IG1vc3QgODAwcHggd2lkZS4iCisgICAgICBSZW5kZXJC
bG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA4MDB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTIxeDE4CisgICAgICAgICAgdGV4
dCBydW4gYXQgKDAsMCkgd2lkdGggMTIxOiAiZGl2IG9mIHdpZHRoIDgwMHB4IgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wMi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgt
MDIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVz
Y3JpcHRvci1zeW50YXgtMDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0
bWw+Cis8aGVhZD4KKzx0aXRsZT5IVE1MNCBtZWRpYSBkZXNjcmlwdG9yIHRlc3Q6IHBhcnNpbmcg
c3R5bGUgZWxlbWVudCBtZWRpYSBhdHRyaWJ1dGUsIGZvcndhcmQtY29tcGF0aWJsZSBzeW50YXg8
L3RpdGxlPiAKKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVD
LWh0bWw0MC90eXBlcy5odG1sI2gtNi4xMyIgLz4KKzwhLS0gYWN0dWFsIHRlc3RjYXNlIGZyb20g
aHR0cDovL3d3dy5oaXhpZS5jaC90ZXN0cy9ldmlsL2Nzcy9pbXBvcnQvZXh0cmEvc3R5bGVleG90
aWNtZWRpYS5odG1sIC0tPgorCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJzY3JlZW47
YnJhaWxsZSI+CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5
PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTA0Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5
LTA0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBs
ZS1uZWctcXVlcnktMDQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+
Cis8aGVhZD4KKzx0aXRsZT4gQ1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzaW1wbGUgbWVkaWEgcXVl
cnkgKG5vdCBicmFpbGxlLCBzY3JlZW4pLiBVc2luZyBzdHlsZSBlbGVtZW50LCBjc3MgQG1lZGlh
IHJ1bGU8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9U
Ui9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4K
K0BtZWRpYSBub3QgYnJhaWxsZSwgc2NyZWVuIHsKK3AgeyBjb2xvcjogZ3JlZW4gfQorfQorPC9z
dHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9w
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS10
eXBlLXN5bnRheC0wMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bWVkaWEtdHlwZS1zeW50YXgtMDEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvbWVkaWEtdHlwZS1zeW50YXgtMDEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MyLjEgbWVkaWEgdHlwZSB0ZXN0OiBw
YXJzaW5nIHNpbXBsZSBAbWVkaWEgY3NzIHJ1bGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIg
aHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLWh0bWw0MC90eXBlcy5odG1sI2gtNi4xMyIg
Lz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRpYSBhbGwgeyBwIHsgY29sb3I6IGdy
ZWVuIH0gfQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8cD4gVGhpcyB0
ZXh0IHNob3VsZCBiZSBncmVlbi4gPC9wPgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLXF1ZXJ5LTAyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIg
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAg
ICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0K
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
bi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVy
ZS0wNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
cS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAo
MCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAw
eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDYu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0
b3Itc3ludGF4LTA2Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTA2Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+SFRNTDQgbWVkaWEgZGVzY3JpcHRvciB0ZXN0
OiBwYXJzaW5nIHN0eWxlIGVsZW1lbnQgbWVkaWEgYXR0cmlidXRlLCBmb3J3YXJkLWNvbXBhdGli
bGUgc3ludGF4PC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5v
cmcvVFIvUkVDLWh0bWw0MC90eXBlcy5odG1sI2gtNi4xMyIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0
L2NzcyIgbWVkaWE9IiAgICAgIj4KK3AgeyBjb2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKworPC9o
ZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtc3ludGF4
LTAyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlk
LXN5bnRheC0wMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
cS1pbnZhbGlkLXN5bnRheC0wMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8
aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3ludGFjdGljYWxs
eSBpbnZhbGlkIG1lZGlhIHF1ZXJ5IGluc2lkZSBodG1sIGVsZW1lbnQgc2hvdWxkIGJlIHRyZWF0
ZWQgYXMgbWVkaWEgZGVzY3JpcHRvci4gVXNpbmcgbGluayBlbGVtZW50LCBtZWRpYSBhdHRyaWJ1
dGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIv
Y3NzMy1tZWRpYXF1ZXJpZXMvIiAvPgorCis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRl
eHQvY3NzIiBtZWRpYT0iYWxsIGFuZCBpbnZhbGlkIiBocmVmPSJpbXBvcnQtcC1ncmVlbi5jc3Mi
IC8+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9w
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1w
bGUtbmVnLXF1ZXJ5LTAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTAxLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAg
dGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4i
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTAz
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlh
LWRlc2NyaXB0b3Itc3ludGF4LTAzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBz
aXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAor
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVy
QmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wNS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1
ZXJ5LTA1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9E
WX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkg
c2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2
MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS9tcS1qcy1tZWRpYS1leGNlcHQtMDMuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21xLWpzLW1lZGlhLWV4Y2VwdC0wMy5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1leGNlcHQtMDMuaHRtbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw0MyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlh
IHF1ZXJ5IHRlc3Q6IEBtZWRpYSBjc3MgcnVsZSBtZWRpYS5tZWRpYVRleHQgcHJvcGVydHkgcGFy
c2luZywgbWVkaWEgcXVlcnkgc3ludGF4IGVycm9yIHNob3VsZCBiZSBoYW5kbGVkIGNvcnJlY3Rs
eSAoLCwsLCkuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5v
cmcvVFIvQ1NTMjEvbWVkaWEuaHRtbCIgLz4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDov
L3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTItU3R5bGUvY3NzLmh0bWwjQ1NTLUNTU01lZGlhUnVs
ZSIgLz4KKzwhLS0gdGhpcyB0ZXN0IHNob3dzIHNsaWdodCBkaXNjb25uZWN0IGJldHdlZW4gY3Nz
IG1lZGlhIHF1ZXJpZXMgYW5kIGh0bWw0IG1lZGlhIGRlc2NyaXB0b3JzIC0tPgorPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KK3AjcmVzdWx0IHtjb2xvcjogZ3JlZW59CisKK0BtZWRpYSBicmFpbGxl
IHsKKy8qIHF1ZXJ5IHdpbGwgYmUgbW9kaWZpZWQgZnJvbSBqYXZhc2NyaXB0ICovCisvKiB0aGUg
bWFuaXB1bGF0aW9uIGNvbnRhaW5zIHN5bnRheCBlcnJvciwgYW5kIHNob3VsZCBmYWlsICovCitw
I3Jlc3VsdCB7Y29sb3I6IHJlZH0KK30KK30KKzwvc3R5bGU+Cis8c2NyaXB0IGxhbmd1YWdlPSJq
YXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgdHJ5IHsKKyAgICAgICAgLy8gdGhp
cyBzaG91bGRuJ3QgdGhyb3cKKyAgICAgICAgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWEu
bWVkaWFUZXh0ID0gIiwsLCwiOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJGYWlsdXJlLiAsLCwsIHNob3Vs
ZCBiZSB2YWxpZCBtZWRpYSBkZXNjcmlwdG9yLiI7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCJkZXRhaWxzIikuaW5uZXJIVE1MID0gIkNhdWdodCBleGNlcHRpb246ICIgKyBlOwor
ICAgICAgICByZXR1cm47CisgICAgfQorICAgIHRyeSB7CisgICAgICAgIC8vIHRoaXMgc2hvdWxk
IHRocm93CisgICAgICAgIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLmNzc1J1bGVzWzFdLm1lZGlh
Lm1lZGlhVGV4dCA9ICIsLCwsIjsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJl
c3VsdCIpLmlubmVySFRNTCA9ICJGYWlsdXJlLiBObyBleGNlcHRpb24gdGhyb3duLiI7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0Iiku
aW5uZXJIVE1MID0gIlN1Y2Nlc3MuIFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIjsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImRldGFpbHMiKS5pbm5lckhUTUwgPSAiQ2F1Z2h0
IGV4Y2VwdGlvbjogIiArIGU7CisgICB9Cit9Cis8L3NjcmlwdD4KKworPC9oZWFkPgorPGJvZHkg
b25sb2FkPSJ0ZXN0KCkiPgorPHAgaWQ9InJlc3VsdCI+RmFpbHVyZTogdGVzdCBub3QgcnVuPC9w
PgorPHAgaWQ9ImRldGFpbHMiPmFhYTwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtdHlwZS1zeW50YXgtMDItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtdHlwZS1zeW50YXgtMDItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS10
eXBlLXN5bnRheC0wMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAor
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRN
TH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkg
c2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgg
W2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4
dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxh
dGl2ZS1jb25zdHJhaW50cy0wMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDMuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDMuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1l
ZGlhIHF1ZXJ5IHRlc3Q6IHJlbGF0aXZlIGNvbnN0cmFpbnRzIHRlc3QgdXNpbmcgc2NyZWVuIGFu
ZCAobWluLXdpZHRoOiAzMGVtKS4gVXNpbmcgbGluayBlbGVtZW50LCBtZWRpYSBhdHRyaWJ1dGUg
PC90aXRsZT4gIAorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9j
c3MzLW1lZGlhcXVlcmllcy8jd2lkdGgiIC8+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9
InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIGFuZCAobWluLXdpZHRoOiAzMGVtKSIgaHJlZj0iaW1w
b3J0LXAtZ3JlZW4uY3NzIiAvPgorPC9oZWFkPgorPGJvZHk+CisKKzxwPiBUaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIHdpZGVyIHRoYW4gMzBlbS4gIDwvcD4KKworPGRp
diBzdHlsZT0id2lkdGg6IDMwZW07IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBkaXYg
b2YgbGVuZ3RoIDMwIGVtIDwvZGl2PgorPGRpdiBzdHlsZT0id2lkdGg6IDgwMHB4OyBiYWNrZ3Jv
dW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9mIGxlbmd0aCA4MDBweCA8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVl
dC1tZWRpYS0wNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
anMtc3R5bGVzaGVldC1tZWRpYS0wNC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTA0Lmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMzcgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0
ZXN0OiBzdHlsZXNoZWV0IG1lZGlhIGRlbGV0ZU1lZGl1bSA8L3RpdGxlPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLVN0
eWxlL3N0eWxlc2hlZXRzLmh0bWwiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJi
cmFpbGxlLCBub3Qgc2NyZWVuIj4KK3AgeyBjb2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKworPHNj
cmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CitmdW5jdGlvbiB0ZXN0KCkgeworICAgIHZhciBy
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKTsKKyAgICB2YXIgbWVkaWEgPSBk
b2N1bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYTsKKyAgICBtZWRpYS5hcHBlbmRNZWRpdW0oInNj
cmVlbiBhbmQgKGNvbG9yKSIpOworICAgIHdoaWxlIChtZWRpYS5sZW5ndGgpIHsKKyAgICAgICAg
bWVkaWEuZGVsZXRlTWVkaXVtKG1lZGlhLml0ZW0oMCkpOworICAgIH0KKyAgICByZS5pbm5lckhU
TUwgPSAibWVkaWEgbGlzdCBpcyBlbXB0eSIKKyAgICB2YXIgZmlyc3QgPSB0cnVlOworICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbWVkaWEubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKCFmaXJz
dCkgIHJlLmlubmVySFRNTCArPSAiLCAiICsgbWVkaWEuaXRlbShpKTsKKyAgICAgICAgZWxzZSBy
ZS5pbm5lckhUTUwgPSBtZWRpYS5pdGVtKGkpOworICAgICAgICBmaXJzdCA9IGZhbHNlOworICAg
IH0KK30KKzwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8IS0t
IEZJWE1FOiBOT1RFISBUaGlzIHdpbGwgZmFpbCB1bnRpbCBkeW5hbWljIHNldHRpbmcgb2YgbWVk
aWEgcHJvcGVydHkgY2F1c2VzIHN0eWxlIHJlY2FsY3VsYXRpb24uCisgICAgICAgICAgVGhpcyBp
cyBub3QgdGhlIGNhc2UgY3VycmVudGx5ICgyNC4wNy4yMDA1KQorLS0+Cis8cD4gVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbiBhbmQgYmVsb3cgc2hvdWxkIHJlYWQgIm1lZGlhIGxpc3QgaXMgZW1w
dHkiLiAgPC9wPgorPHAgaWQ9InJlc3VsdCI+RmFpbHVyZTogdGVzdCBub3QgcnVuPC9wPgorPHA+
IEV4cGVjdGVkIHRvIGZhaWwgKDI0LjcuMjAwNSkgPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wMy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRh
eC0wMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLWludmFsaWQtc3ludGF4LTAzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJs
b2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBh
dCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXpl
IDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAi
VGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA3Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNy5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNy5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxl
PkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogbWVkaWEgcXVlcnkgdGVzdGluZyBjb25zdHJhaW50cyB3
aXRoIHJlbGF0aXZlIHZhbHVlcyBldmFsdWF0aW5nIGZhbHNlIChzY3JlZW4gYW5kIChtYXgtd2lk
dGg6IDMwZW0pKS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgQG1lZGlhIGNzcyBydWxlLjwvdGl0bGU+
Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFx
dWVyaWVzLyN3aWR0aCIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IGdy
ZWVuIH0KK0BtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDMwZW0pIHsKK3AgeyBjb2xvcjog
cmVkIH0KK30KKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+IFRoaXMgdGV4dCBzaG91
bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgd2lkZXIgdGhhbiAzMGVtLiBUaGlzIHRlc3RzIHRo
YXQgKG1heC13aWR0aDogMzBlbSkgY2FuIGV2YWx1YXRlIHRvIGZhbHNlLiA8L3A+CisKKzxkaXYg
c3R5bGU9IndpZHRoOiAzMGVtOyBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGJsdWU7Ij4gZGl2IG9m
IGxlbmd0aCAzMCBlbSA8L2Rpdj4KKzxkaXYgc3R5bGU9IndpZHRoOiA4MDBweDsgYmFja2dyb3Vu
ZC1jb2xvcjogbGlnaHRibHVlOyI+IGRpdiBvZiBsZW5ndGggODAwcHggPC9kaXY+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLXN0eWxlc2hlZXQt
bWVkaWEtMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVk
aWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0wMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDEtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACitsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAg
IFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA2MTB4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA2MTA6ICJUaGUgdGV4dCBiZWxvdyBzaG91bGQgYmUgZ3JlZW4gYW5kIGNvbnRhaW4g
XCJicmFpbGxlLCBtZWRpYSwgc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDogMCksIHR0eVwi
LiIKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwzNCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMw
MDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDMxMngxOAor
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMxMjogImJyYWlsbGUsIG1lZGlhLCBz
Y3JlZW4gYW5kIChjb2xvcikgYW5kIChncmlkOiAwKSwgdHR5IgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wNC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDQuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDQuaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1l
ZGlhIHF1ZXJ5IHRlc3Q6IG1lZGlhIHF1ZXJ5IHRlc3RpbmcgY29tcG91bmQgcXVlcmllcyAoc2Ny
ZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDowKSkuIFVzaW5nIHN0eWxlIGVsZW1lbnQsIGNzcyBA
bWVkaWEgcnVsZTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMu
b3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9j
c3MiPgorQG1lZGlhIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6MCkgeworcCB7IGNvbG9y
OiBncmVlbiB9Cit9Cis8L3N0eWxlPgorCis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQg
c2hvdWxkIGJlIGdyZWVuIG9uIGJpdG1hcCBjb2xvciBkZXZpY2VzLjwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtd2lkdGgtYWJzb2x1dGUtMDEu
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdpZHRoLWFic29s
dXRlLTAxLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdp
ZHRoLWFic29sdXRlLTAxLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAKKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBBYnNvbHV0ZSB3aWR0aCBx
dWVyeSAoc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkpLiBVc2luZyBzdHlsZSBlbGVtZW50
LCBtZWRpYSBhdHRyaWJ1dGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDov
L3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorPHN0eWxlIHR5cGU9
InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkiPgorcCB7IGNv
bG9yOiBncmVlbiB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNo
b3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyBhdCBtb3N0IDgwMHB4IHdpZGUuPC9wPgorPGRp
diBzdHlsZT0id2lkdGg6IDgwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOmxpZ2h0Ymx1ZTsiPmRpdiBv
ZiB3aWR0aCA4MDBweDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wMi5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDIuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1
ZXJ5IHRlc3Q6IHNpbXBsZSBtZWRpYSBxdWVyeS4gVXNpbmcgbGluayBlbGVtZW50LCBtZWRpYSBh
dHRyaWJ1dGU8L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9y
Zy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAvPgorCis8bGluayB0eXBlPSJ0ZXh0L2Nz
cyIgbWVkaWE9Im9ubHkgYWxsIiBocmVmPSJpbXBvcnQtcC1ncmVlbi5jc3MiIC8+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWlu
dHMtMDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUg
ODA4eDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA3ODV4NTg1CitsYXllciBhdCAo
MCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1
eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDU4NAorICAgICAg
UmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4IFtjb2xvcj0jMDA4MDAwXQorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzNjB4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNjA6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlm
IHZpZXdwb3J0IGlzIHdpZGVyIHRoYW4gMzBlbS4iCisgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwzNCkgc2l6ZSA0ODB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTIzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTIzOiAiZGl2IG9mIGxlbmd0aCAzMCBlbSIKKyAgICAgIFJlbmRlckJsb2NrIHtE
SVZ9IGF0ICgwLDUyKSBzaXplIDgwMHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjR4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwwKSB3aWR0aCAxMjQ6ICJkaXYgb2YgbGVuZ3RoIDgwMHB4IgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1ncmlkLTAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhL21xLWdyaWQtMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1ncmlkLTAxLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzc4eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMzc4OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3aW5nIGRldmlj
ZSBpcyBiaXRtYXAgZGV2aWNlIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZh
bGlkLW1lZGlhLWZlYXR1cmUtMDQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wNC5odG1sCShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDQuaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1Mz
IG1lZGlhIHF1ZXJ5IHRlc3Q6IHN5bnRhY3RpY2FsbHkgY29ycmVjdCBxdWVyeSB3aXRoIGludmFs
aWQgbWVkaWEgZmVhdHVyZSBzaG91bGQgZXZhbCBmYWxzZSAoYWxsIGFuZCAoaW52YWxpZCkpLiBV
c2luZyBzdHlsZSBlbGVtZW50LCBjc3MgbWVkaWEgcnVsZS48L3RpdGxlPgorPGxpbmsgcmVsPSJo
ZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+Cis8
c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorcCB7IGNvbG9yOiBncmVlbiB9CitAbWVkaWEgYWxsIGFu
ZCAoaW52YWxpZCkgeworcCB7IGNvbG9yOiByZWQgfQorfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxi
b2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1s
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wMS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1jb21wb3Vu
ZC1xdWVyeS0wMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFz
IGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtC
T0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCww
KSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMzE3eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
MzE3OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBvbiBiaXRtYXAgY29sb3IgZGV2aWNlcy4i
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLW1pbi1jb25zdHJhaW50LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLW1pbi1jb25zdHJh
aW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtbWluLWNvbnN0cmFpbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDgg
QEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sg
e0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0
eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkg
c2l6ZSAzODF4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzODE6ICJUaGlz
IHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IHdpZHRoIGlzIGF0IGxlYXN0IDYwMHB4
LiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMt
MDgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
cmVsYXRpdmUtY29uc3RyYWludHMtMDgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wOC1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1
eDY0MgorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCitsYXllciBhdCAoMCww
KSBzaXplIDc4NXg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1eDYw
MAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDU3NgorICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMTl4MTgKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCAzMTk6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGhl
aWdodCBpcyBhdCBsZWFzdCAzMGV4IC4iCisgICAgICBSZW5kZXJCbG9jayAoZmxvYXRpbmcpIHtE
SVZ9IGF0ICgwLDM0KSBzaXplIDExNXgyMjkgW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTE1eDE4CisgICAgICAgICAgdGV4dCBydW4g
YXQgKDAsMCkgd2lkdGggMTE1OiAiZGl2IG9mIGhlaWdodCAzMGV4IgorICAgICAgUmVuZGVyQmxv
Y2sgKGZsb2F0aW5nKSB7RElWfSBhdCAoMTE1LDM0KSBzaXplIDEyNHg2MDAgW2JnY29sb3I9I0FE
RDhFNl0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTI0eDE4Cisg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTI0OiAiZGl2IG9mIGhlaWdodCA2MDBw
eCIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wMS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1x
dWVyeS0wMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1z
aW1wbGUtbmVnLXF1ZXJ5LTAxLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzxo
dG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzaW1wbGUgbWVkaWEg
cXVlcnkgKG5vdCBicmFpbGxlLCBzY3JlZW4pLiBVc2luZyBzdHlsZSBlbGVtZW50LCBtZWRpYSBh
dHRyaWJ1dGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5v
cmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyIgbWVkaWE9Im5vdCBicmFpbGxlLCBzY3JlZW4iPgorcCB7IGNvbG9yOiBncmVlbiB9Cis8L3N0
eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4gPC9w
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1jb21w
b3VuZC1xdWVyeS0wNS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTA1LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2
MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
KyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRl
ckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzk5eDE4CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMzk5OiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3
cG9ydCBpcyBhdCBtb3N0IDgwMHB4IHggNjAwcHguIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wMy5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDMuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgt
MDMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5IVE1MNCBtZWRpYSBkZXNjcmlwdG9yIHRlc3Q6IHBhcnNpbmcgc3R5bGUgZWxlbWVudCBt
ZWRpYSBhdHRyaWJ1dGUsIGZvcndhcmQtY29tcGF0aWJsZSBzeW50YXg8L3RpdGxlPgorPGxpbmsg
cmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMtaHRtbDQwL3R5cGVzLmh0
bWwjaC02LjEzIiAvPgorPCEtLSBhY3R1YWwgdGVzdGNhc2UgZnJvbSBodHRwOi8vd3d3LmhpeGll
LmNoL3Rlc3RzL2V2aWwvY3NzL2ltcG9ydC9leHRyYS9zdHlsZWV4b3RpY21lZGlhLmh0bWwgLS0+
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJicmFpbGxlLCBhbGwgd2l0aCBwcmludCI+
CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRo
aXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDEtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRp
YS1mZWF0dXJlLTAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvbXEtaW52YWxpZC1tZWRpYS1mZWF0dXJlLTAxLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVu
ZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQ
fSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTAyLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTAyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtd2lkdGgt
YWJzb2x1dGUtMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACits
YXllciBhdCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUg
Nzg1eDU4NQorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1M
fSBhdCAoMCwwKSBzaXplIDc4NXg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBz
aXplIDc2OXg1ODQKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc2OXgxOCBb
Y29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
Mzc4eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzc4OiAiVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbiBpZiB2aWV3cG9ydCBpcyBhdCBtb3N0IDgwMHB4IHdpZGUuIgorICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMzQpIHNpemUgODAweDE4IFtiZ2NvbG9yPSNBREQ4
RTZdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDEyMXgxOAorICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDEyMTogImRpdiBvZiB3aWR0aCA4MDBweCIK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wNS5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVy
eS0wNS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1w
bGUtbmVnLXF1ZXJ5LTA1Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTYgQEAKKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBtZWRpYSBxdWVyeSB0ZXN0
aW5nIG5vdCBhbmQgZmVhdHVyZSBicmFpbGxlIChub3QgYnJhaWxsZSkuIFVzaW5nIHN0eWxlIGVs
ZW1lbnQsIEBtZWRpYSBjc3MgcnVsZS48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8iIC8+Cis8c3R5bGUgdHlwZT0i
dGV4dC9jc3MiPgorQG1lZGlhIG5vdCBicmFpbGxlIHsKK3AgeyBjb2xvcjogZ3JlZW4gfQorfQor
PC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVl
bi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEv
bXEtc2ltcGxlLXF1ZXJ5LTAzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wMy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4
NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5k
ZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQg
cnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS10eXBlLXN5bnRheC0wMi5odG1sCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtdHlwZS1zeW50YXgtMDIuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtdHlwZS1zeW50
YXgtMDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4K
Kzx0aXRsZT5DU1MyLjEgbWVkaWEgdHlwZSB0ZXN0OiBwYXJzaW5nIHNpbXBsZSBAbWVkaWEgY3Nz
IHJ1bGUuIE1lZGlhIHR5cGUgLCwsLCBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyBpbnZhbGlkIHN5
bnRheDwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RS
L1JFQy1odG1sNDAvdHlwZXMuaHRtbCNoLTYuMTMiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2Nz
cyI+CitwIHsgY29sb3I6IGdyZWVuIH0KK0BtZWRpYSAsLCwsLCB7IHAgeyBjb2xvcjogcmVkIH0g
fQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8L2JvZHk+Cis8cD4gVGhpcyB0ZXh0IHNo
b3VsZCBiZSBncmVlbi4gPC9wPgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1qcy1tZWRpYS1mb3J3YXJkLXN5bnRheC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1mb3J3YXJkLXN5bnRheC1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLW1lZGlh
LWZvcndhcmQtc3ludGF4LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4IEBA
CitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDApIHNp
emUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2NrIHtI
VE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4
KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4NHgx
OCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNp
emUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0
ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWlu
dmFsaWQtc3ludGF4LTAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1pbnZhbGlkLXN5bnRheC0wMy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wMy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE2IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDog
c3ludGFjdGljYWxseSBpbnZhbGlkIG1lZGlhIHF1ZXJ5IGluc2lkZSBjc3MgcnVsZSBzaG91bGQg
ZXZhbCB0byBmYWxzZS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgY3NzIGltcG9ydCBydWxlLjwvdGl0
bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVk
aWFxdWVyaWVzLyIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IGdyZWVu
IH0KKzwvc3R5bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQGltcG9ydCB1cmwoaW1wb3J0
LXAtcmVkLmNzcykgYWxsIGFuZCBpbnZhbGlkOworPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+
Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDItZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtc2ltcGxlLW5l
Zy1xdWVyeS0wMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52
YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkg
e0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgw
LDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0
aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0wMS5odG1sCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0wMS5odG1sCShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlh
LTAxLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKzxodG1sPgorPGhlYWQ+Cis8
dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzdHlsZXNoZWV0IG1lZGlhLm1lZGlhVGV4dCBw
cm9wZXJ0eSBpbnNwZWN0aW9uLjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6
Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+CisKKzxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9ImJyYWlsbGUsIG1lZGlhIHdpdGggZXJyb3IsIHNjcmVlbiBh
bmQgKGNvbG9yKSBhbmQgKGdyaWQ6MCksIHR0eSByZXNvbHV0aW9uID4gNjAwcHgiPgorI3Jlc3Vs
dCB7IGNvbG9yOiBncmVlbiB9Cis8L3N0eWxlPgorCis8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2Ny
aXB0Ij4KK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAgcmUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgicmVzdWx0Iik7CisgICAgcmUuaW5uZXJIVE1MID0gInN0YXJ0ZWQiOworICAgIHJlLmlubmVy
SFRNTCA9IGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlhLm1lZGlhVGV4dDsKK30KKzwvc2Ny
aXB0PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD4gVGhlIHRleHQgYmVs
b3cgc2hvdWxkIGJlIGdyZWVuIGFuZCBjb250YWluICJicmFpbGxlLCBtZWRpYSwgc2NyZWVuIGFu
ZCAoY29sb3IpIGFuZCAoZ3JpZDogMCksIHR0eSIuIDwvcD4KKzxwIGlkPSJyZXN1bHQiPkZhaWx1
cmU6IHRlc3Qgbm90IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDQtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgt
MDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9t
ZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5k
ZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9E
WX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkg
c2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2
MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wNC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDQuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMt
MDQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHJlbGF0aXZlIGNvbnN0cmFpbnRzIHRlc3QgdXNp
bmcgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAzMGVtKS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgY3Nz
IEBpbXBvcnQgcnVsZSA8L3RpdGxlPiAgCis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93
d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3aWR0aCIgLz4KKworPHN0eWxlIHR5cGU9
InRleHQvY3NzIj4KK0BpbXBvcnQgdXJsKGltcG9ydC1wLWdyZWVuLmNzcykgc2NyZWVuIGFuZCAo
bWluLXdpZHRoOiAzMGVtKTsKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHA+IFRoaXMg
dGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3BvcnQgaXMgd2lkZXIgdGhhbiAzMGVtLiAgPC9w
PgorCis8ZGl2IHN0eWxlPSJ3aWR0aDogMzBlbTsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVl
OyI+IGRpdiBvZiBsZW5ndGggMzAgZW0gPC9kaXY+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogODAwcHg7
IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsiPiBkaXYgb2YgbGVuZ3RoIDgwMHB4IDwvZGl2
PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1ncmlk
LTAxLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1ncmlkLTAx
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWdyaWQtMDEu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRs
ZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IE1lZGlhIHF1ZXJ5IHRlc3RpbmcgdmFsdWUgb2YgZ3Jp
ZCAoc2NyZWVuIGFuZCBncmlkOjApLiBVc2luZyBzdHlsZSBhdHRyaWJ1dGUsIEBtZWRpYSBjc3Mg
cnVsZS48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9U
Ui9jc3MzLW1lZGlhcXVlcmllcy8iIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQG1lZGlh
IHNjcmVlbiBhbmQgKGdyaWQ6IDApIHsKK3AgeyBjb2xvcjogZ3JlZW4gfQorfQorPC9zdHlsZT4K
KzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld2lu
ZyBkZXZpY2UgaXMgYml0bWFwIGRldmljZTwvcD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1jb21wb3VuZC1xdWVyeS0wMS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDEuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnkt
MDEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IG1lZGlhIHF1ZXJ5IHRlc3RpbmcgY29tcG91bmQg
cXVlcmllcyAoc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDowKSkuIFVzaW5nIHN0eWxlIGVs
ZW1lbnQsIG1lZGlhIGF0dHJpYnV0ZS48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBocmVmPSJo
dHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jc3ludGF4IiAvPgorPHN0eWxl
IHR5cGU9InRleHQvY3NzIiBtZWRpYT0ic2NyZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDowKSI+
CitwIHsgY29sb3I6IGdyZWVuIH0KKzwvc3R5bGU+CisKKzwvaGVhZD4KKzxib2R5PgorPHA+IFRo
aXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gb24gYml0bWFwIGNvbG9yIGRldmljZXMuPC9wPgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLXN5
bnRheC0wNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRp
YS9tcS1pbnZhbGlkLXN5bnRheC0wNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtc3ludGF4LTA0LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw4IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAg
UmVuZGVyQ2FudmFzIGF0ICgwLDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBS
ZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2Nr
IHtQfSBhdCAoMCwwKSBzaXplIDc4NHgxOCBbY29sb3I9IzAwODAwMF0KKyAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTYzeDE4CisgICAgICAgICAgdGV4dCBydW4gYXQg
KDAsMCkgd2lkdGggMTYzOiAiVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi4iCkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhL21xLW1pbi1jb25zdHJhaW50Lmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1taW4tY29uc3RyYWludC5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1taW4tY29uc3RyYWludC5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE3IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVk
aWEgcXVlcnkgdGVzdDogTWVkaWEgcXVlcnkgd2l0aCBtaW4tIGNvbnN0cmFpbnQgKHNjcmVlbiBh
bmQgKG1pbi13aWR0aDogNjAwcHgpKS4gVXNpbmcgc3R5bGUgYXR0cmlidXRlLCBAaW1wb3J0IGNz
cyBydWxlLjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3Jn
L1RSL2NzczMtbWVkaWFxdWVyaWVzLyIgLz4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDov
L3d3dy53My5vcmcvVFIvQ1NTMjEvY2FzY2FkZS5odG1sI2F0LWltcG9ydCIgLz4KKworPHN0eWxl
IHR5cGU9InRleHQvY3NzIj4KK3AgeyBjb2xvcjogcmVkIH0KKzwvc3R5bGU+Cis8c3R5bGUgdHlw
ZT0idGV4dC9jc3MiPgorQGltcG9ydCB1cmwoaW1wb3J0LXAtZ3JlZW4uY3NzKSBzY3JlZW4gYW5k
IChtaW4td2lkdGg6IDYwMHB4KTsKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlz
IHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IHdpZHRoIGlzIGF0IGxlYXN0IDYwMHB4
LjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
cmVsYXRpdmUtY29uc3RyYWludHMtMDguaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA4Lmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXJlbGF0aXZlLWNvbnN0cmFpbnRzLTA4Lmh0bWwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjAgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NT
MyBtZWRpYSBxdWVyeSB0ZXN0OiBtZWRpYSBxdWVyeSB0ZXN0aW5nIGNvbnN0cmFpbnRzIHdpdGgg
cmVsYXRpdmUgdmFsdWVzIChzY3JlZW4gYW5kIChtaW4taGVpZ2h0OiAzMGV4KSkuIFVzaW5nIHN0
eWxlIGVsZW1lbnQsIEBtZWRpYSBjc3MgcnVsZS48L3RpdGxlPgorPGxpbmsgcmVsPSJoZWxwIiBo
cmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLW1lZGlhcXVlcmllcy8jd2lkdGgiIC8+CisK
KzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IHJlZCB9CitAbWVkaWEgc2NyZWVu
IGFuZCAobWluLWhlaWdodDogMzBleCkgeworcCB7IGNvbG9yOiBncmVlbiB9Cit9Cis8L3N0eWxl
PgorPC9oZWFkPgorPGJvZHk+CisKKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIGlmIGhl
aWdodCBpcyBhdCBsZWFzdCAzMGV4IC48L3A+CisKKzxkaXYgc3R5bGU9ImRpc3BsYXk6aW5saW5l
OyBmbG9hdDpsZWZ0OyBoZWlnaHQ6IDMwZXg7IGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsi
PiBkaXYgb2YgaGVpZ2h0IDMwZXggPC9kaXY+Cis8ZGl2IHN0eWxlPSJkaXNwbGF5OmlubGluZTsg
ZmxvYXQ6bGVmdDsgaGVpZ2h0OiA2MDBweDsgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOyI+
IGRpdiBvZiBoZWlnaHQgNjAwcHggPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L21lZGlhL21xLWpzLW1lZGlhLWV4Y2VwdC0wMS1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1leGNlcHQtMDEt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1q
cy1tZWRpYS1leGNlcHQtMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0
IEBACitsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQ2FudmFzIGF0ICgwLDAp
IHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHg1NzYKKyAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCwwKSBzaXplIDc4
NHgxOAorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyNDR4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyNDQ6ICJUaGUgdGV4dCBiZWxvdyBzaG91
bGQgcmVhZCBcIlN1Y2Nlc3MuXCIiCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNp
emUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSA1NHgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDU0OiAi
U3VjY2Vzcy4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsNjgpIHNpemUgNzg0eDE4Cisg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDUxOXgxOAorICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDUxOTogIkZvbGxvd2luZyBleGNlcHRpb24gd2FzIGNh
dWdodDogRXJyb3I6IE5PVF9GT1VORF9FUlI6IERPTSBFeGNlcHRpb24gOCIKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDUuaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTA1Lmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1ZXJ5LTA1Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBDb21wb3VuZCBtZWRpYSBxdWVyeSwgYWJzb2x1dGUgdmFs
dWVzIChzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDgwMHB4KSBhbmQgKG1heC1oZWlnaHQ6NjAwcHgp
KS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgQG1lZGlhIGNzcyBydWxlLjwvdGl0bGU+Cis8bGluayBy
ZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyN3
aWR0aCIgLz4KKworPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK0BtZWRpYSBzY3JlZW4gYW5kICht
YXgtd2lkdGg6IDgwMHB4KSBhbmQgKG1heC1oZWlnaHQ6NjAwcHgpeworcCB7IGNvbG9yOiBncmVl
biB9Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBi
ZSBncmVlbiBpZiB2aWV3cG9ydCBpcyBhdCBtb3N0IDgwMHB4IHggNjAwcHguPC9wPgorPC9ib2R5
PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0
LW1lZGlhLTAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21xLWpzLXN0eWxlc2hlZXQtbWVkaWEtMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1zdHlsZXNoZWV0LW1lZGlhLTAyLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAg
ICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKKyAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNjEweDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNjEwOiAiVGhlIHRleHQgYmVsb3cgc2hvdWxkIGJlIGdyZWVuIGFuZCBjb250YWlu
IFwiYnJhaWxsZSwgbWVkaWEsIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6IDApLCB0dHlc
Ii4iCisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMzQpIHNpemUgNzg0eDE4IFtjb2xvcj0j
MDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMTJ4MTgK
KyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMTI6ICJicmFpbGxlLCBtZWRpYSwg
c2NyZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDogMCksIHR0eSIKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRpYS1mZWF0dXJlLTAxLmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1pbnZhbGlkLW1lZGlhLWZlYXR1cmUtMDEuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52YWxpZC1tZWRp
YS1mZWF0dXJlLTAxLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxodG1sPgor
PGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzeW50YWN0aWNhbGx5IGNvcnJl
Y3QgcXVlcnkgd2l0aCBpbnZhbGlkIG1lZGlhIGZlYXR1cmUgc2hvdWxkIGV2YWwgZmFsc2UgKGFs
bCBhbmQgKGludmFsaWQpKS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgbWVkaWEgYXR0cmlidXRlLjwv
dGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMt
bWVkaWFxdWVyaWVzLyIgLz4KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CitwIHsgY29sb3I6IGdy
ZWVuIH0KKzwvc3R5bGU+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSJhbGwgYW5kIChp
bnZhbGlkKSI+CitwIHsgY29sb3I6IHJlZCB9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+Cis8
cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTAyLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wMi5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1hYnNvbHV0
ZS0wMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8aHRtbD4KKzxoZWFkPgor
PHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogQWJzb2x1dGUgd2lkdGggcXVlcnkgKHNjcmVl
biBhbmQgKG1heC13aWR0aDogODAwcHgpKS4gVXNpbmcgbGluayBlbGVtZW50LCBtZWRpYSBhdHRy
aWJ1dGUuPC90aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcv
VFIvY3NzMy1tZWRpYXF1ZXJpZXMvI3dpZHRoIiAvPgorPGxpbmsgIHR5cGU9InRleHQvY3NzIiBt
ZWRpYT0ic2NyZWVuIGFuZCAobWF4LXdpZHRoOiA4MDBweCkiIGhyZWY9ImltcG9ydC1wLWdyZWVu
LmNzcyIgLz4KKzwvaGVhZD4KKzxib2R5PgorPHA+IFRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4g
aWYgdmlld3BvcnQgaXMgYXQgbW9zdCA4MDBweCB3aWRlLjwvcD4KKzxkaXYgc3R5bGU9IndpZHRo
OiA4MDBweDsgYmFja2dyb3VuZC1jb2xvcjpsaWdodGJsdWU7Ij5kaXYgb2Ygd2lkdGggODAwcHg8
L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEt
cmVsYXRpdmUtY29uc3RyYWludHMtMDUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDUtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25z
dHJhaW50cy0wNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK2xh
eWVyIGF0ICgwLDApIHNpemUgODA4eDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA3
ODV4NTg1CitsYXllciBhdCAoMCwwKSBzaXplIDgwOHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9
IGF0ICgwLDApIHNpemUgNzg1eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNp
emUgNzY5eDU4NAorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4IFtj
b2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAz
NjB4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzNjA6ICJUaGlzIHRleHQg
c2hvdWxkIGJlIGdyZWVuIGlmIHZpZXdwb3J0IGlzIHdpZGVyIHRoYW4gMzBlbS4iCisgICAgICBS
ZW5kZXJCbG9jayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA0ODB4MTggW2JnY29sb3I9I0FERDhFNl0K
KyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTIzeDE4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMTIzOiAiZGl2IG9mIGxlbmd0aCAzMCBlbSIKKyAg
ICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDUyKSBzaXplIDgwMHgxOCBbYmdjb2xvcj0jQURE
OEU2XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjR4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjQ6ICJkaXYgb2YgbGVuZ3RoIDgwMHB4
IgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDMuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wMy5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVl
cnktMDMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8aGVhZD4K
Kzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHNpbXBsZSBtZWRpYSBxdWVyeS4gVXNpbmcg
c3R5bGUgZWxlbWVudCwgY3NzIEBpbXBvcnQgcnVsZTwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAi
IGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+
Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQGltcG9ydCB1cmwoaW1wb3J0LXAtZ3JlZW4uY3Nz
KSBvbmx5IGFsbDsKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zh
c3QvbWVkaWEvbXEtZ3JpZC0wMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYS9tcS1ncmlkLTAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtZ3JpZC0wMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNh
bnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAor
ICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9k
eSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQg
KDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMCwwKSBzaXplIDM5OXgxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDM5OTogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld2luZyBkZXZpY2UgaXMg
bm90IGEgZ3JpZCBkZXZpY2UuIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1t
ZWRpYS1mb3J3YXJkLXN5bnRheC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtanMtbWVkaWEtZm9yd2FyZC1zeW50YXguaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtbWVkaWEtZm9yd2FyZC1zeW50YXguaHRtbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzMyBAQAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5DU1MzIG1l
ZGlhIHF1ZXJ5IHRlc3Q6IHN0eWxlc2hlZXQgbWVkaWEubWVkaWFUZXh0ID0gcGFyc2luZywgbWVk
aWEgZGVzY3JpcHRvciBmYWxsYmFjayBpbiBkb2N1bWVudC5TdHlsZVNoZWV0Lm1lZGlhLm1lZGlh
VGV4dDwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RS
L2NzczMtbWVkaWFxdWVyaWVzLyIgLz4KKworPCEtLSB0aGUgbWVkaWEgcHJvcGVydHkgb2Ygc3R5
bGVzaGVldCBiZWxvdyB3aWxsIGJlIG1hbmlwdWxhdGVkLCBhbmQKKyBtYW5pcHVsYXRpb24gc2hv
dWxkIHJlc3BlY3QgaHRtbCBtZWRpYSBkZXNjcmlwdG9yIGZvcndhcmQtY29tcGF0aWJsZSBzeW50
YXguCisgVGhpcyBtZWFucyB0aGUgbWFuaXB1bGF0aW9uIHNob3VsZCBzdWNjZWVkLiAtLT4KKzxz
dHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisKK3AjcmVzdWx0IHsgY29sb3I6IGdyZWVuO30KKworQG1l
ZGlhIHNjcmVlbiBhbmQgcmVzb2x1dGlvbiA+IDQwZHBpIHsKKy8qIG1lZGlhIHF1ZXJ5IHdpdGgg
c3ludGF4IGVycm9yIHNob3VsZCBmYWlsICovCisvKiBjb3JyZXNwb25kaW5nIERPTSBtYW5pcHVs
YXRpb24gdG8gdGhlIG1lZGlhVGV4dCBvZiB0aGUgc3R5bGVzaGVldCB3aWxsIHN1Y2NlZWQgKi8K
K3AjcmVzdWx0IHsgY29sb3I6IHJlZDt9CisKK30KKzwvc3R5bGU+Cis8c2NyaXB0IGxhbmd1YWdl
PSJqYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIHRlc3QoKSB7CisgICAvLyB0aGlzIHNob3VsZCBub3Qg
dGhyb3csIGJlY2F1c2UgU3R5bGVTaGVldCBzaG91bGQgcmVzcGVjdCBNZWRpYSBEZXNjcmlwdGlv
biBmb3J3YXJkLWNvbXBhdGlibGUgc3ludGF4CisgICBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5t
ZWRpYS5tZWRpYVRleHQgPSAic2NyZWVuIGFuZCByZXNvbHV0aW9uID4gNDBkcGkiOworICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCA9ICJUaGlzIHRleHQgc2hv
dWxkIGJlIGdyZWVuLiI7Cit9Cis8L3NjcmlwdD4KKworCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
InRlc3QoKSI+Cis8cCBpZD0icmVzdWx0Ij5GYWlsdXJlOiB0ZXN0IG5vdCBydW48L3A+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWNvbXBvdW5kLXF1
ZXJ5LTAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlh
L21xLWNvbXBvdW5kLXF1ZXJ5LTAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvbWVkaWEvbXEtY29tcG91bmQtcXVlcnktMDItZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBS
ZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAorICAgIFJl
bmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVuZGVyQmxvY2sg
e1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAgICBSZW5kZXJU
ZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMTd4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAzMTc6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuIG9uIGJpdG1hcCBjb2xv
ciBkZXZpY2VzLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtcmVsYXRpdmUtY29u
c3RyYWludHMtMDktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtcmVsYXRpdmUtY29uc3RyYWludHMtMDktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1yZWxhdGl2ZS1jb25zdHJhaW50cy0wOS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTQgQEAKK2xheWVyIGF0ICgwLDAp
IHNpemUgOTY4eDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA3ODV4NTg1CitsYXll
ciBhdCAoMCwwKSBzaXplIDk2OHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgNzg1eDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzY5eDU4NAor
ICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzY5eDE4IFtjb2xvcj0jMDA4MDAw
XQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzODF4MTgKKyAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzODE6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdy
ZWVuIGlmIHZpZXdwb3J0IGlzIG5hcnJvd2VyIHRoYW4gNjBlbS4iCisgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwzNCkgc2l6ZSA5NjB4MTggW2JnY29sb3I9I0FERDhFNl0KKyAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTIzeDE4CisgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMTIzOiAiZGl2IG9mIGxlbmd0aCA2MCBlbSIKKyAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDUyKSBzaXplIDgwMHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjR4MTgKKyAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMjQ6ICJkaXYgb2YgbGVuZ3RoIDgwMHB4IgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTAyLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtbmVnLXF1ZXJ5LTAyLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1uZWct
cXVlcnktMDIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorPGh0bWw+Cis8aGVh
ZD4KKzx0aXRsZT5DU1MzIG1lZGlhIHF1ZXJ5IHRlc3Q6IHNpbXBsZSBtZWRpYSBxdWVyIChub3Qg
YnJhaWxsZSwgc2NyZWVuKS4gVXNpbmcgbGluayBlbGVtZW50LCBtZWRpYSBhdHRyaWJ1dGUuPC90
aXRsZT4KKzxsaW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1t
ZWRpYXF1ZXJpZXMvI3N5bnRheCIgLz4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4
dC9jc3MiIG1lZGlhPSJub3QgYnJhaWxsZSwgc2NyZWVuIiBocmVmPSJpbXBvcnQtcC1ncmVlbi5j
c3MiIC8+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwPiBUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLjwv
cD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtaW52
YWxpZC1tZWRpYS1mZWF0dXJlLTAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEtZmVhdHVyZS0wMi1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQtbWVkaWEt
ZmVhdHVyZS0wMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5
ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0g
YXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6
ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2Nv
bG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2
M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBz
aG91bGQgYmUgZ3JlZW4uIgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS13aWR0aC1h
YnNvbHV0ZS0wMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS9tcS13aWR0aC1hYnNvbHV0ZS0wMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXdpZHRoLWFic29sdXRlLTAzLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDh4NjAw
CisgIFJlbmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDc4NXg1ODUKK2xheWVyIGF0ICgwLDApIHNp
emUgODA4eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4NjAwCisg
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4NTg0CisgICAgICBSZW5kZXJC
bG9jayB7UH0gYXQgKDAsMCkgc2l6ZSA3Njl4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJl
bmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDM3OHgxOAorICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDM3ODogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4gaWYgdmlld3Bv
cnQgaXMgYXQgbW9zdCA4MDBweCB3aWRlLiIKKyAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDM0KSBzaXplIDgwMHgxOCBbYmdjb2xvcj0jQUREOEU2XQorICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAxMjF4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCAxMjE6ICJkaXYgb2Ygd2lkdGggODAwcHgiCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wNC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0w
NC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKzxoZWFkPgorPHRp
dGxlPkhUTUw0IG1lZGlhIGRlc2NyaXB0b3IgdGVzdDogcGFyc2luZyBzdHlsZSBlbGVtZW50IG1l
ZGlhIGF0dHJpYnV0ZSwgZm9yd2FyZC1jb21wYXRpYmxlIHN5bnRheDwvdGl0bGU+Cis8bGluayBy
ZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy1odG1sNDAvdHlwZXMuaHRt
bCNoLTYuMTMiIC8+Cis8c3R5bGUgdHlwZT0idGV4dC9jc3MiIG1lZGlhPSIsLCwsIj4KK3AgeyBj
b2xvcjogZ3JlZW4gfQorPC9zdHlsZT4KKworPC9oZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0
IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L21lZGlhL21xLXNpbXBsZS1xdWVyeS0wNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnktMDQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1zaW1wbGUtcXVlcnkt
MDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgw
LDApIHNpemUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCits
YXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3
NgorICAgICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4
MDAwXQorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJl
IGdyZWVuLiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvaW1wb3J0LXAtcmVkLmNzcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL2ltcG9ydC1wLXJlZC5jc3MJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL2ltcG9ydC1wLXJlZC5jc3MJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMiBAQAorcCB7IGNvbG9yOiByZWQgfQorXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLWludmFsaWQt
c3ludGF4LTA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1p
bnZhbGlkLXN5bnRheC0wNC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYS9tcS1pbnZhbGlkLXN5bnRheC0wNC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1
IEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPkNTUzMgbWVkaWEgcXVlcnkgdGVzdDogc3ludGFj
dGljYWxseSBpbnZhbGlkIG1lZGlhIHF1ZXJ5IGluc2lkZSBjc3MgcnVsZSBzaG91bGQgZXZhbCB0
byBmYWxzZS4gVXNpbmcgc3R5bGUgZWxlbWVudCwgY3NzIG1lZGlhIHJ1bGUuPC90aXRsZT4KKzxs
aW5rIHJlbD0iaGVscCIgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJp
ZXMvIiAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK3AgeyBjb2xvcjogZ3JlZW4gfQorQG1l
ZGlhIGFsbCBhbmQgaW52YWxpZCB7CitwIHsgY29sb3I6IHJlZCB9Cit9Cis8L3N0eWxlPgorPC9o
ZWFkPgorPGJvZHk+Cis8cD4gVGhpcyB0ZXh0IHNob3VsZCBiZSBncmVlbi48L3A+Cis8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21lZGlhLWRlc2NyaXB0b3It
c3ludGF4LTAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L21l
ZGlhL21lZGlhLWRlc2NyaXB0b3Itc3ludGF4LTAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDEtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNp
emUgODAweDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUg
ODAweDYwMAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAg
ICAgUmVuZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQor
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVu
LiIKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtbWVkaWEtZXhjZXB0LTAxLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1qcy1tZWRpYS1leGNl
cHQtMDEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMt
bWVkaWEtZXhjZXB0LTAxLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzEgQEAKKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBkZWxldGVNZWRpdW0gdGhy
b3dpbmcgZXhjZXB0aW9uLjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93
d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyIgLz4KKworPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KK0BtZWRpYSBhbGwgYW5kIChjb2xvcikgeworcCNyZXN1bHQgeyBjb2xvcjogZ3JlZW47
fQorfQorPC9zdHlsZT4KKworPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CitmdW5jdGlv
biB0ZXN0KCkgeworICAgIHRyeSB7CisgICAgICAgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0uY3Nz
UnVsZXNbMF0ubWVkaWEuZGVsZXRlTWVkaXVtKCJhbGwgYW5kICgiKTsKKyAgICB9CisgICAgY2F0
Y2goZSkgeworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJI
VE1MID0gIlN1Y2Nlc3MuIgorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGV0YWls
cyIpLmlubmVySFRNTCA9ICJGb2xsb3dpbmcgZXhjZXB0aW9uIHdhcyBjYXVnaHQ6ICIgKyBlOwor
ICAgIH0KK30KKzwvc2NyaXB0PgorCisKKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0idGVzdCgpIj4K
KzxwPlRoZSB0ZXh0IGJlbG93IHNob3VsZCByZWFkICJTdWNjZXNzLiIgPC9wPgorPHAgaWQ9InJl
c3VsdCI+RmFpbHVyZTogdGVzdCBub3QgcnVuLjwvcD4KKzxwIGlkPSJkZXRhaWxzIj48L3A+Cis8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1u
ZWctcXVlcnktMDMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qv
bWVkaWEvbXEtc2ltcGxlLW5lZy1xdWVyeS0wMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9mYXN0L21lZGlhL21xLXNpbXBsZS1uZWctcXVlcnktMDMtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJDYW52YXMgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCitsYXllciBhdCAoMCww
KSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYw
MAorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU3NgorICAgICAgUmVu
ZGVyQmxvY2sge1B9IGF0ICgwLDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDA4MDAwXQorICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxNjN4MTgKKyAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMCwwKSB3aWR0aCAxNjM6ICJUaGlzIHRleHQgc2hvdWxkIGJlIGdyZWVuLiIKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1tZWRpYS0wMi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbXEtanMtc3R5bGVzaGVldC1t
ZWRpYS0wMi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9tZWRpYS9tcS1q
cy1zdHlsZXNoZWV0LW1lZGlhLTAyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjcgQEAK
KzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+Q1NTMyBtZWRpYSBxdWVyeSB0ZXN0OiBzdHlsZXNoZWV0
IG1lZGlhIHByb3BlcnR5IGVudW1lcmF0aW9uLjwvdGl0bGU+Cis8bGluayByZWw9ImhlbHAiIGhy
ZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtbWVkaWFxdWVyaWVzLyNzeW50YXgiIC8+Cis8
bGluayByZWw9ImhlbHAiIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLVN0
eWxlL3N0eWxlc2hlZXRzLmh0bWwiIC8+CisKKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyIgbWVkaWE9
ImJyYWlsbGUsIG1lZGlhIHdpdGggZXJyb3IsIHNjcmVlbiBhbmQgKGNvbG9yKSBhbmQgKGdyaWQ6
MCksIHR0eSByZXNvbHV0aW9uID4gNjAwcHgiPgorI3Jlc3VsdCB7IGNvbG9yOiBncmVlbjsgfQor
PC9zdHlsZT4KKworPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCI+CitmdW5jdGlvbiB0ZXN0
KCkgeworICAgIHJlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpOworICAgIHJl
LmlubmVySFRNTCA9ICJzdGFydGVkIjsKKyAgICByZS5pbm5lckhUTUwgPSBkb2N1bWVudC5zdHls
ZVNoZWV0c1swXS5tZWRpYS5pdGVtKDApCisgICAgICAgICAgICAgICAgICAgICsgIiwgIiArIGRv
Y3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlhLml0ZW0oMSkKKyAgICAgICAgICAgICAgICAgICAg
KyAiLCAiICsgZG9jdW1lbnQuc3R5bGVTaGVldHNbMF0ubWVkaWEuaXRlbSgyKQorICAgICAgICAg
ICAgICAgICAgICArICIsICIgKyBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5tZWRpYS5pdGVtKDMp
IDsKK30KKzwvc2NyaXB0PgorCis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InRlc3QoKSI+Cis8cD4g
VGhlIHRleHQgYmVsb3cgc2hvdWxkIGJlIGdyZWVuIGFuZCBjb250YWluICJicmFpbGxlLCBtZWRp
YSwgc2NyZWVuIGFuZCAoY29sb3IpIGFuZCAoZ3JpZDogMCksIHR0eSIuIDwvcD4KKzxwIGlkPSJy
ZXN1bHQiPkZhaWx1cmU6IHRlc3Qgbm90IHJ1bjwvcD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3JpcHRvci1zeW50YXgtMDUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvbWVkaWEvbWVkaWEtZGVzY3Jp
cHRvci1zeW50YXgtMDUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYS9tZWRpYS1kZXNjcmlwdG9yLXN5bnRheC0wNS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsOCBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgIFJl
bmRlckNhbnZhcyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKK2xheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMAorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCisgICAgUmVu
ZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTc2CisgICAgICBSZW5kZXJCbG9jayB7
UH0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDgwMDBdCisgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDE2M3gxOAorICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDApIHdpZHRoIDE2MzogIlRoaXMgdGV4dCBzaG91bGQgYmUgZ3JlZW4uIgpJbmRleDogV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvU2NyZWVuTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZv
cm0vbWFjL1NjcmVlbk1hYy5tbQkocmV2aXNpb24gMTQ2MDYpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L21hYy9TY3JlZW5NYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDIyIEBAIGludCBz
Y3JlZW5EZXB0aChXaWRnZXQqIHdpZGdldCkKICAgICByZXR1cm4gW3NjcmVlbih3aWRnZXQpIGRl
cHRoXTsKIH0KIAoraW50IHNjcmVlbkRlcHRoUGVyQ29tcG9uZW50KFdpZGdldCogd2lkZ2V0KQor
eworICAgcmV0dXJuIE5TQml0c1BlclNhbXBsZUZyb21EZXB0aChbc2NyZWVuKHdpZGdldCkgZGVw
dGhdKTsKK30KKworYm9vbCBzY3JlZW5Jc01vbm9jaHJvbWUoV2lkZ2V0KiB3aWRnZXQpCit7Cisg
ICAgTlNTY3JlZW4qIHMgPSBzY3JlZW4od2lkZ2V0KTsKKyAgICBOU0RpY3Rpb25hcnkqIGRkID0g
W3MgZGV2aWNlRGVzY3JpcHRpb25dOworICAgIE5TU3RyaW5nKiBjb2xvclNwYWNlTmFtZSA9IFtk
ZCBvYmplY3RGb3JLZXk6TlNEZXZpY2VDb2xvclNwYWNlTmFtZV07CisgICAgcmV0dXJuIGNvbG9y
U3BhY2VOYW1lID09IE5TQ2FsaWJyYXRlZFdoaXRlQ29sb3JTcGFjZQorICAgICAgICB8fCBjb2xv
clNwYWNlTmFtZSA9PSBOU0NhbGlicmF0ZWRCbGFja0NvbG9yU3BhY2UKKyAgICAgICAgfHwgY29s
b3JTcGFjZU5hbWUgPT0gTlNEZXZpY2VXaGl0ZUNvbG9yU3BhY2UKKyAgICAgICAgfHwgY29sb3JT
cGFjZU5hbWUgPT0gTlNEZXZpY2VCbGFja0NvbG9yU3BhY2U7Cit9CisKIEludFJlY3Qgc2NyZWVu
UmVjdChXaWRnZXQqIHdpZGdldCkKIHsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChmbGlw
R2xvYmFsUmVjdChbc2NyZWVuKHdpZGdldCkgZnJhbWVdKSk7CkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL1NjcmVlbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vU2NyZWVuLmgJKHJl
dmlzaW9uIDE0NjA2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9TY3JlZW4uaAkod29ya2luZyBjb3B5
KQpAQCAtMzIsNiArMzIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgV2lkZ2V0
OwogCiAgICAgaW50IHNjcmVlbkRlcHRoKFdpZGdldCopOworICAgIGludCBzY3JlZW5EZXB0aFBl
ckNvbXBvbmVudChXaWRnZXQqKTsKKyAgICBib29sIHNjcmVlbklzTW9ub2Nocm9tZShXaWRnZXQq
KTsKICAgICBJbnRSZWN0IHNjcmVlblJlY3QoV2lkZ2V0Kik7CiAgICAgSW50UmVjdCB1c2FibGVT
Y3JlZW5SZWN0KFdpZGdldCopOwogCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL2tqc19jc3Mu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMva2pzX2Nzcy5jcHAJKHJldmlz
aW9uIDE0NjA2KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9ranNfY3NzLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTI4LDkgKzUyOCwxMCBAQCBib29sIERPTU1lZGlhTGlzdDo6Z2V0T3duUHJvcGVy
dHlTbG90KEV4CiAKIHZvaWQgRE9NTWVkaWFMaXN0OjpwdXQoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBJZGVudGlmaWVyICZwcm9wZXJ0eU5hbWUsIEpTVmFsdWUqIHZhbHVlLCBpbnQgYXR0cikKIHsK
KyAgRE9NRXhjZXB0aW9uVHJhbnNsYXRvciBleGNlcHRpb24oZXhlYyk7CiAgIE1lZGlhTGlzdCAm
bWVkaWFMaXN0ID0gKm1faW1wbDsKICAgaWYgKHByb3BlcnR5TmFtZSA9PSAibWVkaWFUZXh0IikK
LSAgICBtZWRpYUxpc3Quc2V0TWVkaWFUZXh0KHZhbHVlLT50b1N0cmluZyhleGVjKSk7CisgICAg
bWVkaWFMaXN0LnNldE1lZGlhVGV4dCh2YWx1ZS0+dG9TdHJpbmcoZXhlYyksIGV4Y2VwdGlvbik7
CiAgIGVsc2UKICAgICBET01PYmplY3Q6OnB1dChleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBh
dHRyKTsKIH0KQEAgLTU0NCwxNSArNTQ1LDE2IEBAIEpTVmFsdWUqIEtKUzo6RE9NTWVkaWFMaXN0
UHJvdG9GdW5jOjpjYWwKIHsKICAgaWYgKCF0aGlzT2JqLT5pbmhlcml0cygmS0pTOjpET01NZWRp
YUxpc3Q6OmluZm8pKQogICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0g
IE1lZGlhTGlzdCAmbWVkaWFMaXN0ID0gKnN0YXRpY19jYXN0PERPTU1lZGlhTGlzdCo+KHRoaXNP
YmopLT5pbXBsKCk7CisgIERPTUV4Y2VwdGlvblRyYW5zbGF0b3IgZXhjZXB0aW9uKGV4ZWMpOwor
ICBNZWRpYUxpc3QmIG1lZGlhTGlzdCA9ICpzdGF0aWNfY2FzdDxET01NZWRpYUxpc3QgKj4odGhp
c09iaiktPmltcGwoKTsKICAgc3dpdGNoIChpZCkgewogICAgIGNhc2UgRE9NTWVkaWFMaXN0OjpJ
dGVtOgogICAgICAgcmV0dXJuIGpzU3RyaW5nT3JOdWxsKG1lZGlhTGlzdC5pdGVtKGFyZ3NbMF0t
PnRvSW50MzIoZXhlYykpKTsKICAgICBjYXNlIERPTU1lZGlhTGlzdDo6RGVsZXRlTWVkaXVtOgot
ICAgICAgbWVkaWFMaXN0LmRlbGV0ZU1lZGl1bShhcmdzWzBdLT50b1N0cmluZyhleGVjKSk7Cisg
ICAgICBtZWRpYUxpc3QuZGVsZXRlTWVkaXVtKGFyZ3NbMF0tPnRvU3RyaW5nKGV4ZWMpLCBleGNl
cHRpb24pOwogICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgY2FzZSBET01NZWRpYUxp
c3Q6OkFwcGVuZE1lZGl1bToKLSAgICAgIG1lZGlhTGlzdC5hcHBlbmRNZWRpdW0oYXJnc1swXS0+
dG9TdHJpbmcoZXhlYykpOworICAgICAgbWVkaWFMaXN0LmFwcGVuZE1lZGl1bShhcmdzWzBdLT50
b1N0cmluZyhleGVjKSwgZXhjZXB0aW9uKTsKICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
ICAgIGRlZmF1bHQ6CiAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKSW5kZXg6IFdlYkNvcmUv
YmluZGluZ3Mvb2JqYy9ET01DU1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9v
YmpjL0RPTUNTUy5tbQkocmV2aXNpb24gMTQ2MDYpCisrKyBXZWJDb3JlL2JpbmRpbmdzL29iamMv
RE9NQ1NTLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zMzMsNyArMzMzLDkgQEAgdHlwZWRlZiBET01X
aW5kb3cgQWJzdHJhY3RWaWV3OwogCiAtICh2b2lkKXNldE1lZGlhVGV4dDooTlNTdHJpbmcgKilt
ZWRpYVRleHQKIHsKLSAgICBbc2VsZiBfbWVkaWFMaXN0XS0+c2V0TWVkaWFUZXh0KG1lZGlhVGV4
dCk7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgW3NlbGYgX21lZGlhTGlzdF0tPnNl
dE1lZGlhVGV4dChtZWRpYVRleHQsIGVjKTsKKyAgICByYWlzZU9uRE9NRXJyb3IoZWMpOwogfQog
CiAtICh1bnNpZ25lZClsZW5ndGgKQEAgLTM0OCwxMiArMzUwLDE2IEBAIHR5cGVkZWYgRE9NV2lu
ZG93IEFic3RyYWN0VmlldzsKIAogLSAodm9pZClkZWxldGVNZWRpdW06KE5TU3RyaW5nICopb2xk
TWVkaXVtCiB7Ci0gICAgW3NlbGYgX21lZGlhTGlzdF0tPmRlbGV0ZU1lZGl1bShvbGRNZWRpdW0p
OworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgIFtzZWxmIF9tZWRpYUxpc3RdLT5kZWxl
dGVNZWRpdW0ob2xkTWVkaXVtLCBlYyk7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAog
LSAodm9pZClhcHBlbmRNZWRpdW06KE5TU3RyaW5nICopbmV3TWVkaXVtCiB7Ci0gICAgW3NlbGYg
X21lZGlhTGlzdF0tPmFwcGVuZE1lZGl1bShuZXdNZWRpdW0pOworICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOworICAgIFtzZWxmIF9tZWRpYUxpc3RdLT5hcHBlbmRNZWRpdW0obmV3TWVkaXVtLCBl
Yyk7CisgICAgcmFpc2VPbkRPTUVycm9yKGVjKTsKIH0KIAogQGVuZApJbmRleDogV2ViQ29yZS9o
dG1sL0hUTUxMaW5rRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxM
aW5rRWxlbWVudC5jcHAJKHJldmlzaW9uIDE0NjA2KQorKysgV2ViQ29yZS9odG1sL0hUTUxMaW5r
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKICNpbmNsdWRlICJNZWRpYUxpc3QuaCIKICNpbmNsdWRlICJjc3NoZWxwZXIu
aCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTY1LDcgKzE2NiwxMSBAQCB2b2lkIEhUTUxMaW5rRWxlbWVudDo6cHJvY2Vzcygp
CiAgICAgICAgIC8vIG5vIG5lZWQgdG8gbG9hZCBzdHlsZSBzaGVldHMgd2hpY2ggYXJlbid0IGZv
ciB0aGUgc2NyZWVuIG91dHB1dAogICAgICAgICAvLyAjIyMgdGhlcmUgbWF5IGJlIGluIHNvbWUg
c2l0dWF0aW9ucyBlLmcuIGZvciBhbiBlZGl0b3Igb3Igc2NyaXB0IHRvIG1hbmlwdWxhdGUKICAg
ICAgICAgLy8gYWxzbywgZG9uJ3QgbG9hZCBzdHlsZSBzaGVldHMgZm9yIHN0YW5kYWxvbmUgZG9j
dW1lbnRzCi0gICAgICAgIGlmIChtX21lZGlhLmlzTnVsbCgpIHx8IG1fbWVkaWEuY29udGFpbnMo
InNjcmVlbiIpIHx8IG1fbWVkaWEuY29udGFpbnMoImFsbCIpIHx8IG1fbWVkaWEuY29udGFpbnMo
InByaW50IikpIHsKKyAgICAgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBhbGxFdmFsKHRydWUpOwor
ICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIsIHRydWUpOwor
ICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZhbCgicHJpbnQiLCB0cnVlKTsKKyAg
ICAgICAgUmVmUHRyPE1lZGlhTGlzdD4gbWVkaWEgPSBuZXcgTWVkaWFMaXN0KChDU1NTdHlsZVNo
ZWV0KikwLCBtX21lZGlhLCB0cnVlKTsKKyAgICAgICAgaWYgKGFsbEV2YWwuZXZhbChtZWRpYS5n
ZXQoKSkgfHwgc2NyZWVuRXZhbC5ldmFsKG1lZGlhLmdldCgpKSB8fCBwcmludEV2YWwuZXZhbCht
ZWRpYS5nZXQoKSkpIHsKIAogICAgICAgICAgICAgLy8gQWRkIG91cnNlbHZlcyBhcyBhIHBlbmRp
bmcgc2hlZXQsIGJ1dCBvbmx5IGlmIHdlIGFyZW4ndCBhbiBhbHRlcm5hdGUgCiAgICAgICAgICAg
ICAvLyBzdHlsZXNoZWV0LiAgQWx0ZXJuYXRlIHN0eWxlc2hlZXRzIGRvbid0IGhvbGQgdXAgcmVu
ZGVyIHRyZWUgY29uc3RydWN0aW9uLgpAQCAtMjA4LDggKzIxMyw4IEBAIHZvaWQgSFRNTExpbmtF
bGVtZW50OjpzZXRTdHlsZVNoZWV0KGNvbnMKICAgICBtX3NoZWV0ID0gbmV3IENTU1N0eWxlU2hl
ZXQodGhpcywgdXJsKTsKICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyhzaGVldFN0ciwgIWRvY3Vt
ZW50KCktPmluQ29tcGF0TW9kZSgpKTsKIAotICAgIE1lZGlhTGlzdCogbWVkaWEgPSBuZXcgTWVk
aWFMaXN0KG1fc2hlZXQuZ2V0KCksIG1fbWVkaWEpOwotICAgIG1fc2hlZXQtPnNldE1lZGlhKG1l
ZGlhKTsKKyAgICBSZWZQdHI8TWVkaWFMaXN0PiBtZWRpYSA9IG5ldyBNZWRpYUxpc3QoKENTU1N0
eWxlU2hlZXQqKTAsIG1fbWVkaWEsIHRydWUpOworICAgIG1fc2hlZXQtPnNldE1lZGlhKG1lZGlh
LmdldCgpKTsKIAogICAgIG1fbG9hZGluZyA9IGZhbHNlOwogCkluZGV4OiBXZWJDb3JlL2h0bWwv
SFRNTFN0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTdHls
ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNikKKysrIFdlYkNvcmUvaHRtbC9IVE1MU3R5bGVF
bGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkRv
Y3VtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiTWVkaWFMaXN0Lmgi
CisjaW5jbHVkZSAiTWVkaWFRdWVyeUV2YWx1YXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTgzLDE1ICs4NCwxOCBAQCB2b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZCgpCiAgICAgfQogCiAgICAgbV9sb2FkaW5nID0gZmFsc2U7Ci0gICAgaWYgKChtX3R5cGUu
aXNFbXB0eSgpIHx8IG1fdHlwZSA9PSAidGV4dC9jc3MiKSAvLyBUeXBlIG11c3QgYmUgZW1wdHkg
b3IgQ1NTCi0gICAgICAgICAmJiAobV9tZWRpYS5pc051bGwoKSB8fCBtX21lZGlhLmNvbnRhaW5z
KCJzY3JlZW4iKSB8fCBtX21lZGlhLmNvbnRhaW5zKCJhbGwiKSB8fCBtX21lZGlhLmNvbnRhaW5z
KCJwcmludCIpKSkgewotICAgICAgICBkb2N1bWVudCgpLT5hZGRQZW5kaW5nU2hlZXQoKTsKLSAg
ICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsKLSAgICAgICAgbV9zaGVldCA9IG5ldyBDU1NTdHlsZVNo
ZWV0KHRoaXMpOwotICAgICAgICBtX3NoZWV0LT5wYXJzZVN0cmluZyh0ZXh0LCAhZG9jdW1lbnQo
KS0+aW5Db21wYXRNb2RlKCkpOwotICAgICAgICBNZWRpYUxpc3QqIG1lZGlhID0gbmV3IE1lZGlh
TGlzdChtX3NoZWV0LmdldCgpLCBtX21lZGlhKTsKLSAgICAgICAgbV9zaGVldC0+c2V0TWVkaWEo
bWVkaWEpOwotICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKKyAgICBpZiAobV90eXBlLmlzRW1w
dHkoKSB8fCBtX3R5cGUgPT0gInRleHQvY3NzIikgeyAvLyBUeXBlIG11c3QgYmUgZW1wdHkgb3Ig
Q1NTCisgICAgICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1lZGlhID0gbmV3IE1lZGlhTGlzdCgoQ1NT
U3R5bGVTaGVldCopMCwgbV9tZWRpYSwgdHJ1ZSk7CisgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0
b3Igc2NyZWVuRXZhbCgic2NyZWVuIiwgdHJ1ZSk7CisgICAgICAgIE1lZGlhUXVlcnlFdmFsdWF0
b3IgcHJpbnRFdmFsKCJwcmludCIsIHRydWUpOworICAgICAgICBpZiAoc2NyZWVuRXZhbC5ldmFs
KG1lZGlhLmdldCgpKSB8fCBwcmludEV2YWwuZXZhbChtZWRpYS5nZXQoKSkpIHsKKyAgICAgICAg
ICAgIGRvY3VtZW50KCktPmFkZFBlbmRpbmdTaGVldCgpOworICAgICAgICAgICAgbV9sb2FkaW5n
ID0gdHJ1ZTsKKyAgICAgICAgICAgIG1fc2hlZXQgPSBuZXcgQ1NTU3R5bGVTaGVldCh0aGlzKTsK
KyAgICAgICAgICAgIG1fc2hlZXQtPnBhcnNlU3RyaW5nKHRleHQsICFkb2N1bWVudCgpLT5pbkNv
bXBhdE1vZGUoKSk7CisgICAgICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYShtZWRpYS5nZXQoKSk7
CisgICAgICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKKyAgICAgICAgfQogICAgIH0KIAogICAg
IGlmICghaXNMb2FkaW5nKCkgJiYgbV9zaGVldCkKSW5kZXg6IFdlYkNvcmUvZG9tL0RPTUltcGxl
bWVudGF0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlv
bi5jcHAJKHJldmlzaW9uIDE0NjA2KQorKysgV2ViQ29yZS9kb20vRE9NSW1wbGVtZW50YXRpb24u
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjIsNyArMTYyLDcgQEAgUGFzc1JlZlB0cjxDU1NTdHls
ZVNoZWV0PiBET01JbXBsZW1lbnRhdAogICAgIGVjID0gMDsKICAgICBDU1NTdHlsZVNoZWV0KiBj
b25zdCBudWxsU2hlZXQgPSAwOwogICAgIFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBzaGVldCA9IG5l
dyBDU1NTdHlsZVNoZWV0KG51bGxTaGVldCk7Ci0gICAgc2hlZXQtPnNldE1lZGlhKG5ldyBNZWRp
YUxpc3Qoc2hlZXQuZ2V0KCksIG1lZGlhKSk7CisgICAgc2hlZXQtPnNldE1lZGlhKG5ldyBNZWRp
YUxpc3Qoc2hlZXQuZ2V0KCksIG1lZGlhLCB0cnVlKSk7CiAgICAgcmV0dXJuIHNoZWV0LnJlbGVh
c2UoKTsKIH0KIApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDE0NjA2KQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw2ICsxNTAsMTQgQEAKIAkJMUFFMkFFQzgw
QTFEMjk3QjAwQjQyQjI1IC8qIEpTSFRNTFF1b3RlRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFMkFFQzQwQTFEMjk3QjAwQjQyQjI1IC8q
IEpTSFRNTFF1b3RlRWxlbWVudC5oICovOyB9OwogCQkxQUUyQUVFNjBBMUQyQTc1MDBCNDJCMjUg
LyogSlNIVE1MQmxvY2txdW90ZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMUFFMkFFRTQwQTFEMkE3NTAwQjQyQjI1IC8qIEpTSFRNTEJs
b2NrcXVvdGVFbGVtZW50LmNwcCAqLzsgfTsKIAkJMUFFMkFFRTcwQTFEMkE3NTAwQjQyQjI1IC8q
IEpTSFRNTEJsb2NrcXVvdGVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQUUyQUVFNTBBMUQyQTc1MDBCNDJCMjUgLyogSlNIVE1MQmxvY2tx
dW90ZUVsZW1lbnQuaCAqLzsgfTsKKwkJNDcwMUI4OEMwQTI2Q0NFMDAwMzQ1NTMzIC8qIE1lZGlh
RmVhdHVyZU5hbWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDQ3MDFCODg0MEEyNkNDRTAwMDM0NTUzMyAvKiBNZWRpYUZlYXR1cmVOYW1lcy5jcHAg
Ki87IH07CisJCTQ3MDFCODhEMEEyNkNDRTAwMDM0NTUzMyAvKiBNZWRpYUZlYXR1cmVOYW1lcy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDcwMUI4ODUw
QTI2Q0NFMDAwMzQ1NTMzIC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggKi87IH07CisJCTQ3MDFCODhF
MEEyNkNDRTAwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3MDFCODg2MEEyNkNDRTAwMDM0NTUzMyAvKiBNZWRp
YVF1ZXJ5LmNwcCAqLzsgfTsKKwkJNDcwMUI4OEYwQTI2Q0NFMDAwMzQ1NTMzIC8qIE1lZGlhUXVl
cnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3MDFC
ODg3MEEyNkNDRTAwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5LmggKi87IH07CisJCTQ3MDFCODkwMEEy
NkNDRTAwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3MDFCODg4MEEyNkNDRTAwMDM0NTUzMyAv
KiBNZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCAqLzsgfTsKKwkJNDcwMUI4OTEwQTI2Q0NFMDAwMzQ1
NTMzIC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ3MDFCODg5MEEyNkNDRTAwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5
RXZhbHVhdG9yLmggKi87IH07CisJCTQ3MDFCODkyMEEyNkNDRTAwMDM0NTUzMyAvKiBNZWRpYVF1
ZXJ5RXhwLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDQ3MDFCODhBMEEyNkNDRTAwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5RXhwLmNwcCAqLzsgfTsKKwkJ
NDcwMUI4OTMwQTI2Q0NFMDAwMzQ1NTMzIC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ3MDFCODhCMEEyNkNDRTAwMDM0NTUz
MyAvKiBNZWRpYVF1ZXJ5RXhwLmggKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAv
KiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAq
LzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYw
MzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IH07CiAJCTY1MEY1M0RDMDlEMTVEREEw
MEM5QjBDOCAvKiBDU1NHcmFtbWFyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA2NTBGNTNEQjA5RDE1RERBMDBDOUIwQzggLyogQ1NTR3JhbW1hci5oICov
OyB9OwpAQCAtMTcwMCw2ICsxNzA4LDE0IEBACiAJCTFBRTJBRUU1MEExRDJBNzUwMEI0MkIyNSAv
KiBKU0hUTUxCbG9ja3F1b3RlRWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNIVE1MQmxvY2txdW90ZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMkQ5MDY2MEIwNjY1RDkzNzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGlwYm9hcmRNYWMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCTJEOTA2NjBDMDY2NUQ5MzcwMDZCNkYxQSAvKiBDbGlwYm9hcmRNYWMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDbGlwYm9h
cmRNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMg
PSAwOyB9OworCQk0NzAxQjg4NDBBMjZDQ0UwMDAzNDU1MzMgLyogTWVkaWFGZWF0dXJlTmFtZXMu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhRmVhdHVyZU5h
bWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDcwMUI4ODUwQTI2Q0NFMDAw
MzQ1NTMzIC8qIE1lZGlhRmVhdHVyZU5hbWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBNZWRpYUZlYXR1cmVOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk0NzAxQjg4NjBBMjZDQ0UwMDAzNDU1MzMgLyogTWVkaWFRdWVyeS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWVkaWFRdWVyeS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTQ3MDFCODg3MEEyNkNDRTAwMDM0NTUzMyAvKiBNZWRpYVF1ZXJ5Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVF1ZXJ5Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTQ3MDFCODg4MEEyNkNDRTAwMDM0NTUzMyAvKiBNZWRpYVF1
ZXJ5RXZhbHVhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDcw
MUI4ODkwQTI2Q0NFMDAwMzQ1NTMzIC8qIE1lZGlhUXVlcnlFdmFsdWF0b3IuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUXVlcnlFdmFsdWF0b3IuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDcwMUI4OEEwQTI2Q0NFMDAwMzQ1NTMzIC8qIE1lZGlhUXVl
cnlFeHAuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUXVl
cnlFeHAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NzAxQjg4QjBBMjZDQ0Uw
MDAzNDU1MzMgLyogTWVkaWFRdWVyeUV4cC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFRdWVyeUV4cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0NzU4
QzQ0MzA4QzVGMjE3MDA5QkFGMDUgLyogS0NhbnZhc1BhdGguY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBLQ2FudmFzUGF0aC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1
MTUwQzJBMTA3MDI2MjkwMDBBRjY0MkMgLyogV2ViRGFzaGJvYXJkUmVnaW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkRhc2hib2FyZFJl
Z2lvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0g
MDsgfTsKIAkJNTE1MEMyQTUwNzAyNjI5ODAwQUY2NDJDIC8qIFdlYkRhc2hib2FyZFJlZ2lvbi5t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRX
aWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLm9iamM7IHBhdGggPSBX
ZWJEYXNoYm9hcmRSZWdpb24ubTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4
OyB1c2VzVGFicyA9IDA7IH07CkBAIC01MDE5LDYgKzUwMzUsMTQgQEAKIAkJCQk5M0NBNEM5RDA5
REY5M0ZBMDBERjg2NzcgLyogbWFrZXZhbHVlcyAqLywKIAkJCQlBOEVBODAwMTBBMTk1MTZFMDBB
OEVGNUYgLyogTWVkaWFMaXN0LmNwcCAqLywKIAkJCQlBOEVBODAwNjBBMTk1MTZFMDBBOEVGNUYg
LyogTWVkaWFMaXN0LmggKi8sCisJCQkJNDcwMUI4ODQwQTI2Q0NFMDAwMzQ1NTMzIC8qIE1lZGlh
RmVhdHVyZU5hbWVzLmNwcCAqLywKKwkJCQk0NzAxQjg4NTBBMjZDQ0UwMDAzNDU1MzMgLyogTWVk
aWFGZWF0dXJlTmFtZXMuaCAqLywKKwkJCQk0NzAxQjg4NjBBMjZDQ0UwMDAzNDU1MzMgLyogTWVk
aWFRdWVyeS5jcHAgKi8sCisJCQkJNDcwMUI4ODcwQTI2Q0NFMDAwMzQ1NTMzIC8qIE1lZGlhUXVl
cnkuaCAqLywKKwkJCQk0NzAxQjg4ODBBMjZDQ0UwMDAzNDU1MzMgLyogTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAgKi8sCisJCQkJNDcwMUI4ODkwQTI2Q0NFMDAwMzQ1NTMzIC8qIE1lZGlhUXVlcnlF
dmFsdWF0b3IuaCAqLywKKwkJCQk0NzAxQjg4QTBBMjZDQ0UwMDAzNDU1MzMgLyogTWVkaWFRdWVy
eUV4cC5jcHAgKi8sCisJCQkJNDcwMUI4OEIwQTI2Q0NFMDAwMzQ1NTMzIC8qIE1lZGlhUXVlcnlF
eHAuaCAqLywKIAkJCQlBODBFNkNEMTBBMTk4OUNBMDA3RkI4QzUgLyogUGFpci5oICovLAogCQkJ
CTkzQ0E0QzlGMDlERjkzRkEwMERGODY3NyAvKiBxdWlya3MuY3NzICovLAogCQkJCUE4MEU3OTk2
MEExOUJEMjEwMDdGQjhDNSAvKiBSZWN0LmlkbCAqLywKQEAgLTYwNzMsNiArNjA5NywxMCBAQAog
CQkJCUE4RDA2NEZDMEEyM0MwQ0MwMDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJREQ3Q0RGMjUwQTIzQ0Y5ODAwMDY5OTI4IC8qIENTU1Vua25vd25SdWxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEQwNkIzOTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5h
bWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk0NzAxQjg4RDBBMjZDQ0UwMDAzNDU1MzMgLyogTWVk
aWFGZWF0dXJlTmFtZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTQ3MDFCODhGMEEyNkNDRTAwMDM0
NTUzMyAvKiBNZWRpYVF1ZXJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQk0NzAxQjg5MTBBMjZDQ0Uw
MDAzNDU1MzMgLyogTWVkaWFRdWVyeUV2YWx1YXRvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDcw
MUI4OTMwQTI2Q0NFMDAwMzQ1NTMzIC8qIE1lZGlhUXVlcnlFeHAuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtNjg5NCw2ICs2OTIyLDEwIEBACiAJCQkJQThEMDY0RkIwQTIzQzBDQzAwNUU3MjAzIC8qIEpT
SFRNTEZvcm1FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4RDA2NUFFMEEyNDQ2Q0Qw
MDVFNzIwMyAvKiBKU0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQlBOEQwNkIzQTBBMjY1RENEMDA1RTcyMDMgLyogSFRNTE5hbWVzLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCTQ3MDFCODhDMEEyNkNDRTAwMDM0NTUzMyAvKiBNZWRpYUZlYXR1cmVOYW1lcy5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQk0NzAxQjg4RTBBMjZDQ0UwMDAzNDU1MzMgLyogTWVkaWFRdWVy
eS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0NzAxQjg5MDBBMjZDQ0UwMDAzNDU1MzMgLyogTWVk
aWFRdWVyeUV2YWx1YXRvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0NzAxQjg5MjBBMjZDQ0Uw
MDAzNDU1MzMgLyogTWVkaWFRdWVyeUV4cC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
NDYwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTM0
IEBACisyMDA2LTA1LTI2ICBLaW1tbyBLaW5udW5lbiAgPGtpbW1vLnQua2lubnVuZW5Abm9raWEu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICBDU1Mz
IE1lZGlhIFF1ZXJpZXMgaW1wbGVtZW50YXRpb24uCisgICAgICAgIDxodHRwOi8vYnVnemlsbGEu
b3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTQxMjc+CisKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMva2pzX2Nz
cy5jcHA6CisgICAgICAgIChLSlM6OkRPTU1lZGlhTGlzdDo6cHV0KToKKyAgICAgICAgKEtKUzo6
S0pTOjpET01NZWRpYUxpc3RQcm90b0Z1bmM6OmNhbGxBc0Z1bmN0aW9uKToKKyAgICAgICAgKiBi
aW5kaW5ncy9vYmpjL0RPTUNTUy5tbToKKyAgICAgICAgKC1bRE9NTWVkaWFMaXN0IHNldE1lZGlh
VGV4dDpdKToKKyAgICAgICAgKC1bRE9NTWVkaWFMaXN0IGRlbGV0ZU1lZGl1bTpdKToKKyAgICAg
ICAgKC1bRE9NTWVkaWFMaXN0IGFwcGVuZE1lZGl1bTpdKToKKyAgICAgICAgKiBjc3MvQ1NTR3Jh
bW1hci55OgorICAgICAgICAqIGNzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHA6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFGZWF0dXJlTmFtZXM6OmluaXQpOgorICAgICAgICAqIGNzcy9N
ZWRpYUZlYXR1cmVOYW1lcy5oOiBBZGRlZC4KKyAgICAgICAgKiBjc3MvTWVkaWFMaXN0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhTGlzdDo6TWVkaWFMaXN0KToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhTGlzdDo6fk1lZGlhTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZU1lZGlh
RGVzY3JpcHRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUxpc3Q6OmRlbGV0ZU1lZGl1bSk6
CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUxpc3Q6Om1lZGlhVGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUxpc3Q6OnNldE1lZGlhVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUxp
c3Q6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFMaXN0OjphcHBlbmRNZWRpdW0pOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFMaXN0OjphcHBlbmRNZWRpYVF1ZXJ5KToKKyAgICAgICAg
KiBjc3MvTWVkaWFMaXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUxpc3Q6Ok1lZGlhTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUxpc3Q6Omxlbmd0aCk6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYUxpc3Q6Om1lZGlhUXVlcmllcyk6CisgICAgICAgICogY3NzL01lZGlhUXVlcnku
Y3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6Ok1lZGlhUXVlcnkpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeTo6fk1lZGlhUXVlcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFRdWVyeTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1
ZXJ5Ojpjc3NUZXh0KToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6Oik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5
OjpyZXN0cmljdG9yKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6OmV4cHJlc3Npb25z
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnk6Om1lZGlhVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVF1ZXJ5OjphcHBlbmQpOgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZh
bHVhdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFRdWVyeUV2YWx1YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXZh
bHVhdG9yOjp+TWVkaWFRdWVyeUV2YWx1YXRvcik6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1
ZXJ5RXZhbHVhdG9yOjptZWRpYVR5cGVNYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjphcHBseVJl
c3RyaWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUFzcGVjdFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6
OmNtcHZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6Om51bWJlclZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbG9yTWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjptb25vY2hy
b21lTWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VfYXNwZWN0X3Jh
dGlvTWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpncmlkTWVkaWFGZWF0dXJl
RXZhbCk6CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VfaGVpZ2h0TWVkaWFGZWF0dXJlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2Vfd2lkdGhNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OmhlaWdodE1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
d2lkdGhNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Om1pbl9jb2xvck1lZGlh
RmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6bWF4X2NvbG9yTWVkaWFGZWF0dXJlRXZh
bCk6CisgICAgICAgIChXZWJDb3JlOjptaW5fbW9ub2Nocm9tZU1lZGlhRmVhdHVyZUV2YWwpOgor
ICAgICAgICAoV2ViQ29yZTo6bWF4X21vbm9jaHJvbWVNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6Om1pbl9kZXZpY2VfYXNwZWN0X3JhdGlvTWVkaWFGZWF0dXJlRXZhbCk6Cisg
ICAgICAgIChXZWJDb3JlOjptYXhfZGV2aWNlX2FzcGVjdF9yYXRpb01lZGlhRmVhdHVyZUV2YWwp
OgorICAgICAgICAoV2ViQ29yZTo6bWluX2hlaWdodE1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAg
ICAoV2ViQ29yZTo6bWF4X2hlaWdodE1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29y
ZTo6bWluX3dpZHRoTWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjptYXhfd2lk
dGhNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAgICAgKFdlYkNvcmU6Om1pbl9kZXZpY2VfaGVpZ2h0
TWVkaWFGZWF0dXJlRXZhbCk6CisgICAgICAgIChXZWJDb3JlOjptYXhfZGV2aWNlX2hlaWdodE1l
ZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6bWluX2RldmljZV93aWR0aE1lZGlh
RmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6bWF4X2RldmljZV93aWR0aE1lZGlhRmVh
dHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnVuY3Rpb25NYXApOgorICAgICAg
ICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmg6IEFkZGVkLgorICAgICAgICAqIGNzcy9NZWRp
YVF1ZXJ5RXhwLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXhwOjpN
ZWRpYVF1ZXJ5RXhwKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUXVlcnlFeHA6On5NZWRpYVF1
ZXJ5RXhwKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV4cC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhUXVlcnlFeHA6Om1lZGlhRmVhdHVyZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVF1ZXJ5RXhwOjp2YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVF1ZXJ5RXhw
OjpvcGVyYXRvcj09KToKKyAgICAgICAgKiBjc3MvU3R5bGVTaGVldC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZVNoZWV0OjpzZXRNZWRpYSk6CisgICAgICAgICogY3NzL2Nzc3BhcnNlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OkNTU1BhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDU1NQYXJzZXI6On5DU1NQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFy
c2VyOjpzZXR1cFBhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlTWVk
aWFRdWVyeSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nTWVk
aWFRdWVyeUV4cCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ01l
ZGlhUXVlcnlFeHApOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVGbG9hdGlu
Z01lZGlhUXVlcnlFeHBMaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6c2lua0Zs
b2F0aW5nTWVkaWFRdWVyeUV4cExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpj
cmVhdGVGbG9hdGluZ01lZGlhUXVlcnkpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpz
aW5rRmxvYXRpbmdNZWRpYVF1ZXJ5KToKKyAgICAgICAgKiBjc3MvY3NzcGFyc2VyLmg6CisgICAg
ICAgICogY3NzL2Nzc3N0eWxlc2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHls
ZVNlbGVjdG9yOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6On5D
U1NTdHlsZVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Omxv
YWREZWZhdWx0U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6bWF0
Y2hVQVJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnN0eWxlRm9y
RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9TdHls
ZUZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6dXBkYXRl
Rm9udCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjYWNoZUJvcmRlckFu
ZEJhY2tncm91bmQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVS
dWxlc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUnVsZVNldDo6YWRkUnVsZXNG
cm9tU2hlZXQpOgorICAgICAgICAqIGNzcy9jc3NzdHlsZXNlbGVjdG9yLmg6CisgICAgICAgICog
Y3NzL21ha2V0b2tlbml6ZXI6CisgICAgICAgICogY3NzL3Rva2VuaXplci5mbGV4OgorICAgICAg
ICAqIGRvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01JbXBs
ZW1lbnRhdGlvbjo6Y3JlYXRlQ1NTU3R5bGVTaGVldCk6CisgICAgICAgICogaHRtbC9IVE1MTGlu
a0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTExpbmtFbGVtZW50Ojpwcm9jZXNz
KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxMaW5rRWxlbWVudDo6c2V0U3R5bGVTaGVldCk6Cisg
ICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxTdHlsZUVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICoga3N2ZzIvc3ZnL1NW
R0RPTUltcGxlbWVudGF0aW9uLmNwcDoKKyAgICAgICAgKFNWR0RPTUltcGxlbWVudGF0aW9uOjpj
cmVhdGVDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKiBrc3ZnMi9zdmcvU1ZHU3R5bGVFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1N0eWxlRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lOjpG
cmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vU2NyZWVuLmg6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1NjcmVlbk1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbkRlcHRoUGVyQ29tcG9u
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OnNjcmVlbklzTW9ub2Nocm9tZSk6CisKIDIwMDYtMDUt
MjYgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBhZGVsZS4KSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhTGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFMaXN0LmNwcAkocmV2aXNpb24gMTQ2MDYpCisrKyBXZWJD
b3JlL2Nzcy9NZWRpYUxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNSwyOSArMjUsNzkgQEAK
ICNpbmNsdWRlICJDU1NSdWxlLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1
ZGUgIkRlcHJlY2F0ZWRTdHJpbmdMaXN0LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgor
I2luY2x1ZGUgIk1lZGlhUXVlcnkuaCIKKyNpbmNsdWRlICJjc3NwYXJzZXIuaCIKKwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLU1lZGlhTGlzdDo6TWVkaWFMaXN0KENTU1N0eWxlU2hlZXQqIHBh
cmVudFNoZWV0KQorLyogTWVkaWFMaXN0IGlzIHVzZWQgdG8gc3RvcmUgMyB0eXBlcyBvZiBtZWRp
YSByZWxhdGVkIGVudGl0aWVzIHdoaWNoIG1lYW4gdGhlIHNhbWU6CisgKiBNZWRpYSBRdWVyaWVz
LCBNZWRpYSBUeXBlcyBhbmQgTWVkaWEgRGVzY3JpcHRvcnMuCisgKiBDdXJyZW50bHkgTWVkaWFM
aXN0IGFsd2F5cyB0cmllcyB0byBwYXJzZSBtZWRpYSBxdWVyaWVzIGFuZCBpZiBwYXJzaW5nIGZh
aWxzLAorICogdHJpZXMgdG8gZmFsbGJhY2sgdG8gTWVkaWEgRGVzY3JpcHRvcnMgaWYgbV9mYWxs
YmFjayBmbGFnIGlzIHNldC4KKyAqIFNsaWdodCBwcm9ibGVtIHdpdGggc3ludGF4IGVycm9yIGhh
bmRsaW5nOgorICogQ1NTIDIuMSBTcGVjIChodHRwOi8vd3d3LnczLm9yZy9UUi9DU1MyMS9tZWRp
YS5odG1sKQorICogc3BlY2lmaWVzIHRoYXQgZmFpbGluZyBtZWRpYSB0eXBlIHBhcnNpbmcgaXMg
YSBzeW50YXggZXJyb3IKKyAqIENTUyAzIE1lZGlhIFF1ZXJpZXMgU3BlYyAoaHR0cDovL3d3dy53
My5vcmcvVFIvY3NzMy1tZWRpYXF1ZXJpZXMvKQorICogc3BlY2lmaWVzIHRoYXQgZmFpbGluZyBt
ZWRpYSBxdWVyeSBpcyBhIHN5bnRheCBlcnJvcgorICogSFRNTCA0LjAxIHNwZWMgKGh0dHA6Ly93
d3cudzMub3JnL1RSL1JFQy1odG1sNDAvcHJlc2VudC9zdHlsZXMuaHRtbCNhZGVmLW1lZGlhKQor
ICogc3BlY2lmaWVzIHRoYXQgTWVkaWEgRGVzY3JpcHRvcnMgc2hvdWxkIGJlIHBhcnNlZCB3aXRo
IGZvcndhcmQtY29tcGF0aWJsZSBzeW50YXgKKyAqIERPTSBMZXZlbCAyIFN0eWxlIFNoZWV0IHNw
ZWMgKGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0yLVN0eWxlLykKKyAqIHRhbGtzIGFi
b3V0IE1lZGlhTGlzdC5tZWRpYVRleHQgYW5kIHJlZmVycworICogICAtICB0byBNZWRpYSBEZXNj
cmlwdG9ycyBvZiBIVE1MIDQuMCBpbiBjb250ZXh0IG9mIFN0eWxlU2hlZXQKKyAqICAgLSAgdG8g
TWVkaWEgVHlwZXMgb2YgQ1NTIDIuMCBpbiBjb250ZXh0IG9mIENTU01lZGlhUnVsZSBhbmQgQ1NT
SW1wb3J0UnVsZQorICoKKyAqIFRoZXNlIGZhY3RzIGNyZWF0ZSBzaXR1YXRpb24gd2hlcmUgc2Ft
ZSAoaWxsZWdhbCkgbWVkaWEgc3BlY2lmaWNhdGlvbiBtYXkgcmVzdWx0IGluCisgKiBkaWZmZXJl
bnQgcGFyc2VzIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IGlzIG1lZGlhIGF0dHIgb2Ygc3R5bGUg
ZWxlbWVudCBvciBwYXJ0IG9mCisgKiBjc3MgQG1lZGlhIHJ1bGUuCisgKiA8c3R5bGUgbWVkaWE9
InNjcmVlbiBhbmQgcmVzb2x1dGlvbiA+IDQwZHBpIj4gLi48L3N0eWxlPiB3aWxsIGJlIGVuYWJs
ZWQgb24gc2NyZWVuIGRldmljZXMgd2hlcmUgYXMKKyAqIEBtZWRpYSBzY3JlZW4gYW5kIHJlc29s
dXRpb24gPiA0MGRwaSB7Li59IHdpbGwgbm90LgorICogVGhpcyBnZXRzIG1vcmUgY291bnRlci1p
bnR1aXRpdmUgaW4gSmF2YVNjcmlwdDoKKyAqIGRvY3VtZW50LnN0eWxlU2hlZXRzWzBdLm1lZGlh
Lm1lZGlhVGV4dCA9ICJzY3JlZW4gYW5kIHJlc29sdXRpb24gPiA0MGRwaSIgd2lsbCBiZSBvayBh
bmQKKyAqIGVuYWJsZWQsIHdoaWxlCisgKiBkb2N1bWVudC5zdHlsZVNoZWV0c1swXS5jc3NSdWxl
c1swXS5tZWRpYS5tZWRpYVRleHQgPSAic2NyZWVuIGFuZCByZXNvbHV0aW9uID4gNDBkcGkiIHdp
bGwKKyAqIHRocm93IFNZTlRBWF9FUlIgZXhjZXB0aW9uLgorICovCisKK01lZGlhTGlzdDo6TWVk
aWFMaXN0KENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0LCBib29sIGZhbGxiYWNrVG9EZXNjcmlw
dG9yKQogICAgIDogU3R5bGVCYXNlKHBhcmVudFNoZWV0KQorICAgICwgbV9mYWxsYmFjayhmYWxs
YmFja1RvRGVzY3JpcHRvcikKIHsKIH0KIAotTWVkaWFMaXN0OjpNZWRpYUxpc3QoQ1NTU3R5bGVT
aGVldCogcGFyZW50U2hlZXQsIGNvbnN0IFN0cmluZyYgbWVkaWEpCitNZWRpYUxpc3Q6Ok1lZGlh
TGlzdChDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVldCwgY29uc3QgU3RyaW5nJiBtZWRpYSwgYm9v
bCBmYWxsYmFja1RvRGVzY3JpcHRvcikKICAgICA6IFN0eWxlQmFzZShwYXJlbnRTaGVldCkKKyAg
ICAsIG1fZmFsbGJhY2soZmFsbGJhY2tUb0Rlc2NyaXB0b3IpCiB7Ci0gICAgc2V0TWVkaWFUZXh0
KG1lZGlhKTsKKyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBzZXRNZWRpYVRleHQobWVk
aWEsIGVjKTsKKyAgICAvLyBGSVhNRTogcGFyc2luZyBjYW4gZmFpbC4gVGhlIHByb2JsZW0gd2l0
aCBmYWlsaW5nIGNvbnN0cnVjdG9yIGlzIHRoYXQKKyAgICAvLyB3ZSB3b3VsZCBuZWVkIGFkZGl0
aW9uYWwgZmxhZyBzYXlpbmcgTWVkaWFMaXN0IGlzIG5vdCB2YWxpZAorICAgIC8vIFBhcnNlIGNh
biBmYWlsIG9ubHkgd2hlbiBmYWxsYmFja1RvRGVzY3JpcHRvciA9PSBmYWxzZSwgaS5lIHdoZW4g
SFRNTDQgbWVkaWEgZGVzY3JpcHRvcgorICAgIC8vIGZvcndhcmQtY29tcGF0aWJsZSBzeW50YXgg
aXMgbm90IGluIHVzZS4gCisgICAgLy8gRE9NSW1wbGVtZW50YXRpb25DU1Mgc2VlbXMgdG8gbWFu
ZGF0ZSB0aGF0IG1lZGlhIGRlc2NyaXB0b3JzIGFyZSB1c2VkCisgICAgLy8gZm9yIGJvdGggaHRt
bCBhbmQgc3ZnLCBldmVuIHRob3VnaCBzdmc6c3R5bGUgZG9lc24ndCB1c2UgbWVkaWEgZGVzY3Jp
cHRvcnMKKyAgICAvLyBDdXJyZW50bHkgdGhlIG9ubHkgcGxhY2VzIHdoZXJlIHBhcnNpbmcgY2Fu
IGZhaWwgYXJlCisgICAgLy8gY3JlYXRpbmcgPHN2ZzpzdHlsZT4sIGNyZWF0aW5nIGNzcyBtZWRp
YSAvIGltcG9ydCBydWxlcyBmcm9tIGpzCisgICAgaWYgKGVjKQorICAgICAgICBzZXRNZWRpYVRl
eHQoImludmFsaWQiLCBlYyk7CiB9CiAKLU1lZGlhTGlzdDo6TWVkaWFMaXN0KENTU1J1bGUqIHBh
cmVudFJ1bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEpCitNZWRpYUxpc3Q6Ok1lZGlhTGlzdChDU1NS
dWxlKiBwYXJlbnRSdWxlLCBjb25zdCBTdHJpbmcmIG1lZGlhLCBib29sIGZhbGxiYWNrVG9EZXNj
cmlwdG9yKQogICAgIDogU3R5bGVCYXNlKHBhcmVudFJ1bGUpCisgICAgLCBtX2ZhbGxiYWNrKGZh
bGxiYWNrVG9EZXNjcmlwdG9yKQogewotICAgIHNldE1lZGlhVGV4dChtZWRpYSk7CisgICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgc2V0TWVkaWFUZXh0KG1lZGlhLCBlYyk7CisgICAgLy9G
SVhNRTogcGFyc2luZyBjYW4gZmFpbC4KKyAgICBpZiAoZWMpCisgICAgICAgIHNldE1lZGlhVGV4
dCgiaW52YWxpZCIsIGVjKTsKIH0KIAotYm9vbCBNZWRpYUxpc3Q6OmNvbnRhaW5zKGNvbnN0IFN0
cmluZyYgbWVkaXVtKSBjb25zdAorTWVkaWFMaXN0Ojp+TWVkaWFMaXN0KCkKIHsKLSAgICByZXR1
cm4gbV9sc3RNZWRpYS5jb3VudCgpID09IDAgfHwgbV9sc3RNZWRpYS5jb250YWlucyhtZWRpdW0p
IHx8IG1fbHN0TWVkaWEuY29udGFpbnMoImFsbCIpOworICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3F1
ZXJpZXMpOwogfQogCiBDU1NTdHlsZVNoZWV0ICpNZWRpYUxpc3Q6OnBhcmVudFN0eWxlU2hlZXQo
KSBjb25zdApAQCAtNjAsMzYgKzExMCwxNDcgQEAgQ1NTUnVsZSAqTWVkaWFMaXN0OjpwYXJlbnRS
dWxlKCkgY29uc3QKICAgICByZXR1cm4gcGFyZW50KCktPmlzUnVsZSgpID8gc3RhdGljX2Nhc3Q8
Q1NTUnVsZSo+KHBhcmVudCgpKSA6IDA7CiB9CiAKLXZvaWQgTWVkaWFMaXN0OjpkZWxldGVNZWRp
dW0oY29uc3QgU3RyaW5nJiBvbGRNZWRpdW0pCitzdGF0aWMgU3RyaW5nIHBhcnNlTWVkaWFEZXNj
cmlwdG9yKGNvbnN0IFN0cmluZyYgcykKIHsKLSAgICBmb3IgKERlcHJlY2F0ZWRWYWx1ZUxpc3Q8
U3RyaW5nPjo6SXRlcmF0b3IgaXQgPSBtX2xzdE1lZGlhLmJlZ2luKCk7IGl0ICE9IG1fbHN0TWVk
aWEuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgaWYgKCgqaXQpID09IG9sZE1lZGl1bSkgewotICAg
ICAgICAgICAgbV9sc3RNZWRpYS5yZW1vdmUoaXQpOwotICAgICAgICAgICAgcmV0dXJuOworICAg
IGludCBsZW4gPSBzLmxlbmd0aCgpOworCisgICAgLy8gaHR0cDovL3d3dy53My5vcmcvVFIvUkVD
LWh0bWw0MC90eXBlcy5odG1sI3R5cGUtbWVkaWEtZGVzY3JpcHRvcnMKKyAgICAvLyAiRWFjaCBl
bnRyeSBpcyB0cnVuY2F0ZWQganVzdCBiZWZvcmUgdGhlIGZpcnN0IGNoYXJhY3RlciB0aGF0IGlz
bid0IGEKKyAgICAvLyBVUyBBU0NJSSBsZXR0ZXIgW2EtekEtWl0gKElTTyAxMDY0NiBoZXggNDEt
NWEsIDYxLTdhKSwgZGlnaXQgWzAtOV0gKGhleCAzMC0zOSksCisgICAgLy8gb3IgaHlwaGVuICho
ZXggMmQpLiIKKyAgICBpbnQgaTsKKyAgICB1bnNpZ25lZCBzaG9ydCBjOworICAgIGZvciAoaSA9
IDA7IGkgPCBsZW47ICsraSkgeworICAgICAgICBjID0gc1tpXTsKKyAgICAgICAgaWYgKCEgKChj
ID49ICdhJyAmJiBjIDw9ICd6JykKKyAgICAgICAgICAgIHx8IChjID49ICdBJyAmJiBjIDw9ICda
JykKKyAgICAgICAgICAgIHx8IChjID49ICcxJyAmJiBjIDw9ICc5JykKKyAgICAgICAgICAgIHx8
IChjID09ICctJykpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBzLmxl
ZnQoaSk7Cit9CisKK3ZvaWQgTWVkaWFMaXN0OjpkZWxldGVNZWRpdW0oY29uc3QgU3RyaW5nJiBv
bGRNZWRpdW0sIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIE1lZGlhTGlzdCB0ZW1wTWVkaWFM
aXN0OworICAgIENTU1BhcnNlciBwKHRydWUpOworCisgICAgTWVkaWFRdWVyeSogb2xkUXVlcnkg
PSAwOworICAgIGJvb2wgZGVsZXRlT2xkUXVlcnkgPSBmYWxzZTsKKworICAgIGlmIChwLnBhcnNl
TWVkaWFRdWVyeSgmdGVtcE1lZGlhTGlzdCwgb2xkTWVkaXVtKSkgeworICAgICAgICBpZiAodGVt
cE1lZGlhTGlzdC5tX3F1ZXJpZXMuc2l6ZSgpID4gMCkKKyAgICAgICAgICAgIG9sZFF1ZXJ5ID0g
dGVtcE1lZGlhTGlzdC5tX3F1ZXJpZXNbMF07CisgICAgfSBlbHNlIGlmIChtX2ZhbGxiYWNrKSB7
CisgICAgICAgIFN0cmluZyBtZWRpdW0gPSBwYXJzZU1lZGlhRGVzY3JpcHRvcihvbGRNZWRpdW0p
OworICAgICAgICBpZiAoIW1lZGl1bS5pc051bGwoKSkgeworICAgICAgICAgICAgb2xkUXVlcnkg
PSBuZXcgTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpOb25lLCBtZWRpdW0sIDApOworICAgICAgICAg
ICAgZGVsZXRlT2xkUXVlcnkgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gRE9N
IFN0eWxlIFNoZWV0cyBzcGVjIGRvZXNuJ3QgYWxsb3cgU1lOVEFYX0VSUiB0byBiZSB0aHJvd24g
aW4gZGVsZXRlTWVkaXVtCisgICAgZWMgPSBOT1RfRk9VTkRfRVJSOworCisgICAgaWYgKG9sZFF1
ZXJ5KSB7CisgICAgICAgIGZvcihzaXplX3QgaSA9IDA7IGkgPCBtX3F1ZXJpZXMuc2l6ZSgpOyAr
K2kpIHsKKyAgICAgICAgICAgIE1lZGlhUXVlcnkqIGEgPSBtX3F1ZXJpZXNbaV07CisgICAgICAg
ICAgICBpZiAoKmEgPT0gKm9sZFF1ZXJ5KSB7CisgICAgICAgICAgICAgICAgbV9xdWVyaWVzLnJl
bW92ZShpKTsKKyAgICAgICAgICAgICAgICBkZWxldGUgYTsKKyAgICAgICAgICAgICAgICBlYyA9
IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAg
ICAgICAgaWYgKGRlbGV0ZU9sZFF1ZXJ5KQorICAgICAgICAgICAgZGVsZXRlIG9sZFF1ZXJ5Owog
ICAgIH0KIH0KIAogV2ViQ29yZTo6U3RyaW5nIE1lZGlhTGlzdDo6bWVkaWFUZXh0KCkgY29uc3QK
IHsKLSAgICBTdHJpbmcgdGV4dCA9ICIiOwotICAgIGZvciAoRGVwcmVjYXRlZFZhbHVlTGlzdDxT
dHJpbmc+OjpDb25zdEl0ZXJhdG9yIGl0ID0gbV9sc3RNZWRpYS5iZWdpbigpOyBpdCAhPSBtX2xz
dE1lZGlhLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgIGlmICh0ZXh0Lmxlbmd0aCgpID4gMCkKKyAg
ICBTdHJpbmcgdGV4dCgiIik7CisKKyAgICBib29sIGZpcnN0ID0gdHJ1ZTsKKyAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IG1fcXVlcmllcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoIWZp
cnN0KQogICAgICAgICAgICAgdGV4dCArPSAiLCAiOwotICAgICAgICB0ZXh0ICs9ICppdDsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgdGV4dCArPSBt
X3F1ZXJpZXNbaV0tPmNzc1RleHQoKTsKICAgICB9CisKICAgICByZXR1cm4gdGV4dDsKIH0KIAot
dm9pZCBNZWRpYUxpc3Q6OnNldE1lZGlhVGV4dChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZhbHVl
KQordm9pZCBNZWRpYUxpc3Q6OnNldE1lZGlhVGV4dChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHZh
bHVlLCAgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgbV9sc3RNZWRpYS5jbGVhcigpOworICAg
IE1lZGlhTGlzdCB0ZW1wTWVkaWFMaXN0OworICAgIENTU1BhcnNlciBwKHRydWUpOworCiAgICAg
RGVwcmVjYXRlZFN0cmluZ0xpc3QgbGlzdCA9IERlcHJlY2F0ZWRTdHJpbmdMaXN0OjpzcGxpdCgn
LCcsIHZhbHVlLmRlcHJlY2F0ZWRTdHJpbmcoKSk7CiAgICAgZm9yIChEZXByZWNhdGVkU3RyaW5n
TGlzdDo6SXRlcmF0b3IgaXQgPSBsaXN0LmJlZ2luKCk7IGl0ICE9IGxpc3QuZW5kKCk7ICsraXQp
IHsKICAgICAgICAgU3RyaW5nIG1lZGl1bSA9ICgqaXQpLnN0cmlwV2hpdGVTcGFjZSgpOwotICAg
ICAgICBpZiAoIW1lZGl1bS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX2xzdE1lZGlhLmFwcGVu
ZChtZWRpdW0pOworICAgICAgICBpZiAoIW1lZGl1bS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAg
IGlmICghcC5wYXJzZU1lZGlhUXVlcnkoJnRlbXBNZWRpYUxpc3QsIG1lZGl1bSkpIHsKKyAgICAg
ICAgICAgICAgICBpZiAobV9mYWxsYmFjaykgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcg
bWVkaWFEZXNjcmlwdG9yID0gcGFyc2VNZWRpYURlc2NyaXB0b3IobWVkaXVtKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFtZWRpYURlc2NyaXB0b3IuaXNOdWxsKCkpCisgICAgICAgICAgICAg
ICAgICAgICAgICB0ZW1wTWVkaWFMaXN0Lm1fcXVlcmllcy5hcHBlbmQobmV3IE1lZGlhUXVlcnko
TWVkaWFRdWVyeTo6Tm9uZSwgbWVkaWFEZXNjcmlwdG9yLCAwKSk7CisgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAgICAg
ICAgICAKKyAgICAgICAgfSBlbHNlIGlmICghbV9mYWxsYmFjaykgeworICAgICAgICAgICAgZWMg
PSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9ICAgICAgICAgICAg
CisgICAgfQorICAgIC8vICIsLCwsIiBmYWxscyBzdHJhaWdodCB0aHJvdWdoLCBidXQgaXMgbm90
IHZhbGlkIHVubGVzcyBmYWxsYmFjaworICAgIGlmICghbV9mYWxsYmFjayAmJiBsaXN0LmJlZ2lu
KCkgPT0gbGlzdC5lbmQoKSkgeworICAgICAgICBTdHJpbmcgcyA9IHZhbHVlLmRlcHJlY2F0ZWRT
dHJpbmcoKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAgaWYgKCFzLmlzRW1wdHkoKSkgewor
ICAgICAgICAgICAgZWMgPSBTWU5UQVhfRVJSOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQorICAgIH0KKyAgICAKKyAgICBlYyA9IDA7CisgICAgZGVsZXRlQWxsVmFsdWVzKG1f
cXVlcmllcyk7CisgICAgbV9xdWVyaWVzID0gdGVtcE1lZGlhTGlzdC5tX3F1ZXJpZXM7CisgICAg
dGVtcE1lZGlhTGlzdC5tX3F1ZXJpZXMuY2xlYXIoKTsKK30KKworU3RyaW5nIE1lZGlhTGlzdDo6
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICBpZiAoaW5kZXggPCBtX3F1ZXJpZXMu
c2l6ZSgpKSB7CisgICAgICAgIE1lZGlhUXVlcnkqIHF1ZXJ5ID0gbV9xdWVyaWVzW2luZGV4XTsK
KyAgICAgICAgcmV0dXJuIHF1ZXJ5LT5jc3NUZXh0KCk7CisgICAgfQorCisgICAgcmV0dXJuIFN0
cmluZygpOworfQorCit2b2lkIE1lZGlhTGlzdDo6YXBwZW5kTWVkaXVtKGNvbnN0IFN0cmluZyYg
bmV3TWVkaXVtLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBlYyA9IElOVkFMSURfQ0hBUkFD
VEVSX0VSUjsKKyAgICBDU1NQYXJzZXIgcCh0cnVlKTsKKyAgICBpZiAocC5wYXJzZU1lZGlhUXVl
cnkodGhpcywgbmV3TWVkaXVtKSkgeworICAgICAgICBlYyA9IDA7CisgICAgfSBlbHNlIGlmICht
X2ZhbGxiYWNrKSB7CisgICAgICAgIFN0cmluZyBtZWRpdW0gPSBwYXJzZU1lZGlhRGVzY3JpcHRv
cihuZXdNZWRpdW0pOworICAgICAgICBpZiAoIW1lZGl1bS5pc051bGwoKSkgeworICAgICAgICAg
ICAgbV9xdWVyaWVzLmFwcGVuZChuZXcgTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpOb25lLCBtZWRp
dW0sIDApKTsKKyAgICAgICAgICAgIGVjID0gMDsKKyAgICAgICAgfQogICAgIH0KIH0KIAordm9p
ZCBNZWRpYUxpc3Q6OmFwcGVuZE1lZGlhUXVlcnkoTWVkaWFRdWVyeSogbWVkaWFRdWVyeSkKK3sK
KyAgICBtX3F1ZXJpZXMuYXBwZW5kKG1lZGlhUXVlcnkpOworfQorCiB9CkluZGV4OiBXZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5RXhwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV4cC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ1NTIE1lZGlhIFF1ZXJ5CisgKgorICog
Q29weXJpZ2h0IChDKSAyMDA2IEtpbW1vIEtpbm51bmVuIDxraW1tby50Lmtpbm51bmVuQG5va2lh
LmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
QVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBNZWRpYVF1ZXJ5RXhwX2gKKyNkZWZpbmUgTWVkaWFRdWVyeUV4cF9oCisK
KyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CitjbGFzcyBWYWx1ZUxpc3Q7CisKK2NsYXNzIE1lZGlhUXVlcnlFeHAK
K3sKK3B1YmxpYzoKKyAgICBNZWRpYVF1ZXJ5RXhwKGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFG
ZWF0dXJlLCBWYWx1ZUxpc3QqIHZhbHVlcyk7CisgICAgfk1lZGlhUXVlcnlFeHAoKTsKKworICAg
IEF0b21pY1N0cmluZyBtZWRpYUZlYXR1cmUoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRmVhdHVy
ZTsgfQorCisgICAgQ1NTVmFsdWUqIHZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV92YWx1ZTsgfQor
CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnlFeHAmIG90aGVyKSBjb25zdCAg
eworICAgICAgICByZXR1cm4gKG90aGVyLm1fbWVkaWFGZWF0dXJlID09IG1fbWVkaWFGZWF0dXJl
KQorICAgICAgICAgICAgJiYgKCghb3RoZXIubV92YWx1ZSAmJiAhbV92YWx1ZSkKKyAgICAgICAg
ICAgICAgICB8fCAob3RoZXIubV92YWx1ZSAmJiBtX3ZhbHVlICYmIG90aGVyLm1fdmFsdWUtPmNz
c1RleHQoKSA9PSBtX3ZhbHVlLT5jc3NUZXh0KCkpKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAg
QXRvbWljU3RyaW5nIG1fbWVkaWFGZWF0dXJlOworICAgIENTU1ZhbHVlKiBtX3ZhbHVlOworfTsK
KworfSAvLyBuYW1lc3BhY2UKKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5
RXZhbHVhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg4IEBACisvKgorICogQ1NTIE1lZGlhIFF1ZXJ5IEV2YWx1
YXRvcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBLaW1tbyBLaW5udW5lbiA8a2ltbW8udC5r
aW5udW5lbkBub2tpYS5jb20+LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIEFVVEhPUiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTWVkaWFRdWVyeUV2YWx1YXRvcl9oCisjZGVmaW5l
IE1lZGlhUXVlcnlFdmFsdWF0b3JfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgRnJhbWVWaWV3OworY2xhc3MgUmVuZGVyU3R5bGU7
CitjbGFzcyBNZWRpYUxpc3Q7CitjbGFzcyBNZWRpYVF1ZXJ5RXhwOworCisvKioKKyAqIENsYXNz
IHRoYXQgZXZhbHVhdGVzIGNzcyBtZWRpYSBxdWVyaWVzIGFzIGRlZmluZWQgaW4KKyAqIENTUzMg
TW9kdWxlICJNZWRpYSBRdWVyaWVzIiAoaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1tZWRpYXF1
ZXJpZXMvKQorICogU3BlY2lhbCBjb25zdHJ1Y3RvcnMgYXJlIG5lZWRlZCwgaWYgc2ltcGxlIG1l
ZGlhIHF1ZXJpZXMgYXJlIHRvIGJlCisgKiBldmFsdWF0ZWQgd2l0aG91dCBrbm93bGVkZ2Ugb2Yg
dGhlIG1lZGl1bSBmZWF0dXJlcy4gVGhpcyBjYW4gaGFwcGVuCisgKiBmb3IgZXhhbXBsZSB3aGVu
IHBhcnNpbmcgVUEgc3R5bGVzaGVldHMsIGlmIGV2YWx1YXRpb24gaXMgZG9uZQorICogcmlnaHQg
YWZ0ZXIgcGFyc2luZy4KKyAqCisgKiB0aGUgYm9vbGVhbiBwYXJhbWV0ZXIgaXMgdXNlZCB0byBh
cHByb3hpbWF0ZSByZXN1bHRzIG9mIGV2YWx1YXRpb24sIGlmCisgKiB0aGUgZGV2aWNlIGNoYXJh
Y3RlcmlzdGljcyBhcmUgbm90IGtub3duLiBUaGlzIGNhbiBiZSB1c2VkIHRvIHBydW5lIHRoZSBs
b2FkaW5nCisgKiBvZiBzdHlsZXNoZWV0cyB0byBvbmx5IHRob3NlIHdoaWNoIGFyZSBwcm9iYWJs
ZSB0byBtYXRjaC4KKyAqLworY2xhc3MgTWVkaWFRdWVyeUV2YWx1YXRvcgoreworcHVibGljOgor
ICAgIC8qKiBDcmVhdGVzIGV2YWx1YXRvciB3aGljaCBldmFsdWF0ZXMgb25seSBzaW1wbGUgbWVk
aWEgcXVlcmllcworICAgICAqICBFdmFsdWF0b3IgcmV0dXJucyB0cnVlIGZvciAiYWxsIiwgYW5k
IHJldHVybnMgdmFsdWUgb2YgXG1lZGlhRmVhdHVyZVJlc3VsdAorICAgICAqICBmb3IgYW55IG1l
ZGlhIGZlYXR1cmVzCisgICAgICovCisgICAgTWVkaWFRdWVyeUV2YWx1YXRvcihib29sIG1lZGlh
RmVhdHVyZVJlc3VsdCA9IGZhbHNlKTsKKworICAgIC8qKiBDcmVhdGVzIGV2YWx1YXRvciB3aGlj
aCBldmFsdWF0ZXMgb25seSBzaW1wbGUgbWVkaWEgcXVlcmllcworICAgICAqICBFdmFsdWF0b3Ig
IHJldHVybnMgdHJ1ZSBmb3IgYWNjZXB0ZWRNZWRpYVR5cGUgYW5kIHJldHVybnMgdmFsdWUgb2Yg
XG1lZGlhZmVhdHVyZVJlc3VsdAorICAgICAqICBmb3IgYW55IG1lZGlhIGZlYXR1cmVzCisgICAg
ICovCisgICAgTWVkaWFRdWVyeUV2YWx1YXRvcihjb25zdCBTdHJpbmcmIGFjY2VwdGVkTWVkaWFU
eXBlLCBib29sIG1lZGlhRmVhdHVyZVJlc3VsdCA9IGZhbHNlKTsKKworICAgIC8qKiBDcmVhdGVz
IGV2YWx1YXRvciB3aGljaCBldmFsdWF0ZXMgZnVsbCBtZWRpYSBxdWVyaWVzCisgICAgICovCisg
ICAgTWVkaWFRdWVyeUV2YWx1YXRvcihjb25zdCBTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBlLCBG
cmFtZVZpZXcqIHZpZXcsIFJlbmRlclN0eWxlKiBzdHlsZSk7CisKKyAgICB+TWVkaWFRdWVyeUV2
YWx1YXRvcigpOworCisgICAgYm9vbCBtZWRpYVR5cGVNYXRjaChjb25zdCBTdHJpbmcmIG1lZGlh
VHlwZVRvTWF0Y2gpIGNvbnN0OworCisgICAgLyoqIEV2YWx1YXRlcyBhIGxpc3Qgb2YgbWVkaWEg
cXVlcmllcyAqLworICAgIGJvb2wgZXZhbChjb25zdCBNZWRpYUxpc3QqIHF1ZXJ5KSBjb25zdDsK
KworICAgIC8qKiBFdmFsdWF0ZXMgbWVkaWEgcXVlcnkgc3ViZXhwcmVzc2lvbiwgaWUgImFuZCAo
bWVkaWEtZmVhdHVyZTogdmFsdWUpIiBwYXJ0ICovCisgICAgYm9vbCBldmFsKGNvbnN0IE1lZGlh
UXVlcnlFeHAqIGV4cHIpIGNvbnN0OworCitwcml2YXRlOgorICAgIFN0cmluZyBtX21lZGlhVHlw
ZTsKKyAgICBGcmFtZVZpZXcqIG1fdmlldzsgLy8gbm90IG93bmVkCisgICAgUmVuZGVyU3R5bGUq
IG1fc3R5bGU7IC8vIG5vdCBvd25lZAorICAgIGJvb2wgbV9leHBSZXN1bHQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZQorI2VuZGlmCkluZGV4OiBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFRdWVyeS5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9jc3MvTWVkaWFRdWVyeS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYyIEBACisvKgorICog
Q1NTIE1lZGlhIFF1ZXJ5CisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEtpbW1vIEtpbm51bmVu
IDxraW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBNZWRpYVF1ZXJ5X2gKKyNkZWZp
bmUgTWVkaWFRdWVyeV9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgTWVkaWFRdWVyeUV4
cDsKKworY2xhc3MgTWVkaWFRdWVyeQoreworcHVibGljOgorICAgIGVudW0gUmVzdHJpY3RvciB7
CisgICAgICAgIE9ubHksIE5vdCwgTm9uZQorICAgIH07CisKKyAgICBNZWRpYVF1ZXJ5KFJlc3Ry
aWN0b3IgciwgY29uc3QgU3RyaW5nJiBtZWRpYVR5cGUsIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4q
IGV4cHJzKTsKKyAgICB+TWVkaWFRdWVyeSgpOworCisgICAgUmVzdHJpY3RvciByZXN0cmljdG9y
KCkgY29uc3QgeyByZXR1cm4gbV9yZXN0cmljdG9yOyB9CisgICAgY29uc3QgVmVjdG9yPE1lZGlh
UXVlcnlFeHAqPiogZXhwcmVzc2lvbnMoKSBjb25zdCB7IHJldHVybiBtX2V4cHJlc3Npb25zOyB9
CisgICAgU3RyaW5nIG1lZGlhVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVkaWFUeXBlOyB9Cisg
ICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IE1lZGlhUXVlcnkmIG90aGVyKSBjb25zdDsKKyAgICB2
b2lkIGFwcGVuZChNZWRpYVF1ZXJ5RXhwKiBuZXdFeHApIHsgbV9leHByZXNzaW9ucy0+YXBwZW5k
KG5ld0V4cCk7IH0KKyAgICBTdHJpbmcgY3NzVGV4dCgpIGNvbnN0OworCisgcHJpdmF0ZToKKyAg
ICBSZXN0cmljdG9yIG1fcmVzdHJpY3RvcjsKKyAgICBTdHJpbmcgbV9tZWRpYVR5cGU7CisgICAg
VmVjdG9yPE1lZGlhUXVlcnlFeHAqPiogbV9leHByZXNzaW9uczsKK307CisKK30gLy8gbmFtZXNw
YWNlCisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9jc3MvY3NzcGFyc2VyLmgJKHJldmlzaW9uIDE0NjA2KQorKysgV2ViQ29yZS9j
c3MvY3NzcGFyc2VyLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rv
ci5oPgorI2luY2x1ZGUgIk1lZGlhUXVlcnkuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00Myw2ICs0NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBjbGFzcyBNZWRpYUxpc3Q7
CiAgICAgY2xhc3MgU3R5bGVCYXNlOwogICAgIGNsYXNzIFN0eWxlTGlzdDsKKyAgICBjbGFzcyBN
ZWRpYUxpc3Q7CisgICAgY2xhc3MgTWVkaWFRdWVyeUV4cDsKKwogCiAgICAgc3RydWN0IFBhcnNl
U3RyaW5nIHsKICAgICAgICAgVUNoYXIqIGNoYXJhY3RlcnM7CkBAIC0xMTAsNiArMTE0LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBzdGF0aWMgUkdCQTMyIHBhcnNlQ29sb3IoY29u
c3QgU3RyaW5nJik7CiAgICAgICAgIGJvb2wgcGFyc2VDb2xvcihDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiosIGNvbnN0IFN0cmluZyYpOwogICAgICAgICBib29sIHBhcnNlRGVjbGFyYXRpb24o
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgYm9v
bCBwYXJzZU1lZGlhUXVlcnkoTWVkaWFMaXN0KiwgY29uc3QgU3RyaW5nJik7CiAKICAgICAgICAg
c3RhdGljIENTU1BhcnNlciogY3VycmVudCgpIHsgcmV0dXJuIGN1cnJlbnRQYXJzZXI7IH0KIApA
QCAtMTc3LDEyICsxODIsMjAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBDU1NSdWxl
TGlzdCogY3JlYXRlUnVsZUxpc3QoKTsKICAgICAgICAgQ1NTUnVsZSogY3JlYXRlU3R5bGVSdWxl
KENTU1NlbGVjdG9yKik7CiAKKyAgICAgICAgTWVkaWFRdWVyeUV4cCogY3JlYXRlRmxvYXRpbmdN
ZWRpYVF1ZXJ5RXhwKGNvbnN0IEF0b21pY1N0cmluZyYsIFZhbHVlTGlzdCopOworICAgICAgICBN
ZWRpYVF1ZXJ5RXhwKiBzaW5rRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKE1lZGlhUXVlcnlFeHAqKTsK
KyAgICAgICAgVmVjdG9yPE1lZGlhUXVlcnlFeHAqPiogY3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5
RXhwTGlzdCgpOworICAgICAgICBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBzaW5rRmxvYXRpbmdN
ZWRpYVF1ZXJ5RXhwTGlzdChWZWN0b3I8TWVkaWFRdWVyeUV4cCo+Kik7CisgICAgICAgIE1lZGlh
UXVlcnkqIGNyZWF0ZUZsb2F0aW5nTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yLCBj
b25zdCBTdHJpbmcmLCBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+Kik7CisgICAgICAgIE1lZGlhUXVl
cnkqIHNpbmtGbG9hdGluZ01lZGlhUXVlcnkoTWVkaWFRdWVyeSopOworCiAgICAgcHVibGljOgog
ICAgICAgICBib29sIHN0cmljdDsKICAgICAgICAgYm9vbCBpbXBvcnRhbnQ7CiAgICAgICAgIGlu
dCBpZDsKICAgICAgICAgU3R5bGVMaXN0KiBzdHlsZUVsZW1lbnQ7CiAgICAgICAgIFJlZlB0cjxD
U1NSdWxlPiBydWxlOworICAgICAgICBNZWRpYVF1ZXJ5KiBtZWRpYVF1ZXJ5OwogICAgICAgICBW
YWx1ZUxpc3QqIHZhbHVlTGlzdDsKICAgICAgICAgQ1NTUHJvcGVydHkqKiBwYXJzZWRQcm9wZXJ0
aWVzOwogICAgICAgICBpbnQgbnVtUGFyc2VkUHJvcGVydGllczsKQEAgLTIyNiw2ICsyMzksMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBIYXNoU2V0PFZhbHVlTGlzdCo+IG1fZmxv
YXRpbmdWYWx1ZUxpc3RzOwogICAgICAgICBIYXNoU2V0PEZ1bmN0aW9uKj4gbV9mbG9hdGluZ0Z1
bmN0aW9uczsKIAorICAgICAgICBNZWRpYVF1ZXJ5KiBtX2Zsb2F0aW5nTWVkaWFRdWVyeTsKKyAg
ICAgICAgTWVkaWFRdWVyeUV4cCogbV9mbG9hdGluZ01lZGlhUXVlcnlFeHA7CisgICAgICAgIFZl
Y3RvcjxNZWRpYVF1ZXJ5RXhwKj4qIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdDsKKwogICAg
ICAgICAvLyBkZWZpbmVzIHVuaXRzIGFsbG93ZWQgZm9yIGEgY2VydGFpbiBwcm9wZXJ0eSwgdXNl
ZCBpbiBwYXJzZVVuaXQKICAgICAgICAgZW51bSBVbml0cyB7CiAgICAgICAgICAgICBGVW5rbm93
biAgID0gMHgwMDAwLApJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHJldmlzaW9uIDE0
NjA2KQorKysgV2ViQ29yZS9jc3MvY3Nzc3R5bGVzZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNsdWRlICJIaXN0b3J5LmgiCiAjaW5jbHVkZSAiS1dRS0hU
TUxTZXR0aW5ncy5oIgogI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgorI2luY2x1ZGUgIk1lZGlhUXVl
cnlFdmFsdWF0b3IuaCIKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiUmVjdEltcGwuaCIK
ICNpbmNsdWRlICJSZW5kZXJUaGVtZS5oIgpAQCAtMTcyLDcgKzE3Myw3IEBAIHB1YmxpYzoKICAg
ICAKICAgICB0eXBlZGVmIEhhc2hNYXA8QXRvbWljU3RyaW5nSW1wbCosIENTU1J1bGVEYXRhTGlz
dCo+IEF0b21SdWxlTWFwOwogICAgIAotICAgIHZvaWQgYWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5
bGVTaGVldCogc2hlZXQsIGNvbnN0IFN0cmluZyAmbWVkaXVtID0gInNjcmVlbiIpOworICAgIHZv
aWQgYWRkUnVsZXNGcm9tU2hlZXQoQ1NTU3R5bGVTaGVldCogc2hlZXQsIE1lZGlhUXVlcnlFdmFs
dWF0b3IqIG1lZGl1bSk7CiAgICAgCiAgICAgdm9pZCBhZGRSdWxlKENTU1N0eWxlUnVsZSogcnVs
ZSwgQ1NTU2VsZWN0b3IqIHNlbCk7CiAgICAgdm9pZCBhZGRUb1J1bGVTZXQoQXRvbWljU3RyaW5n
SW1wbCoga2V5LCBBdG9tUnVsZU1hcCYgbWFwLApAQCAtMjE0LDE4ICsyMTUsMzkgQEAgQ1NTU3R5
bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihEb2N1bQogICAgIHNldHRpbmdzID0gdmlldyA/
IHZpZXctPmZyYW1lKCktPnNldHRpbmdzKCkgOiAwOwogICAgIGlmICghZGVmYXVsdFN0eWxlKQog
ICAgICAgICBsb2FkRGVmYXVsdFN0eWxlKCk7Ci0gICAgbV9tZWRpYVR5cGUgPSB2aWV3ID8gdmll
dy0+bWVkaWFUeXBlKCkgOiBTdHJpbmcoImFsbCIpOwogCiAgICAgbV91c2VyU3R5bGUgPSAwOwog
ICAgIG1fdXNlclNoZWV0ID0gMDsKIAorICAgIC8vIGNvbnN0cnVjdCBkb2N1bWVudCByb290IGVs
ZW1lbnQgZGVmYXVsdCBzdHlsZS4gdGhpcyBpcyBuZWVkZWQKKyAgICAvLyB0byBldmFsdWF0ZSBt
ZWRpYSBxdWVyaWVzIHRoYXQgY29udGFpbiByZWxhdGl2ZSBjb25zdHJhaW50cywgbGlrZSAic2Ny
ZWVuIGFuZCAobWF4LXdpZHRoOiAxMGVtKSIKKyAgICAvLyBUaGlzIGlzIGhlcmUgaW5zdGVhZCBv
ZiBjb25zdHJ1Y3RvciwgYmVjYXVzZSB3aGVuIGNvbnN0cnVjdG9yIGlzIHJ1biwKKyAgICAvLyBk
b2N1bWVudCBkb2Vzbid0IGhhdmUgZG9jdW1lbnRFbGVtZW50CisgICAgLy8gTk9URTogdGhpcyBh
c3N1bWVzIHRoYXQgZWxlbWVudCB0aGF0IGdldHMgcGFzc2VkIHRvIHN0eWxlRm9yRWxlbWVudCAt
Y2FsbAorICAgIC8vIGlzIGFsd2F5cyBmcm9tIHRoZSBkb2N1bWVudCB0aGF0IG93bnMgdGhlIHN0
eWxlIHNlbGVjdG9yCisgICAgaWYgKHZpZXcpCisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlh
UXVlcnlFdmFsdWF0b3Iodmlldy0+bWVkaWFUeXBlKCkpOworICAgIGVsc2UKKyAgICAgICAgbV9t
ZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcigiYWxsIik7CisKKyAgICBFbGVtZW50KiBy
b290ID0gZG9jLT5kb2N1bWVudEVsZW1lbnQoKTsKKworICAgIGlmIChyb290KQorICAgICAgICBt
X3Jvb3REZWZhdWx0U3R5bGUgPSBzdHlsZUZvckVsZW1lbnQocm9vdCwgMCwgZmFsc2UsIHRydWUp
OyAvLyBkb250IHJlZiwgYmVjYXVzZSB0aGUgUmVuZGVyU3R5bGUgaXMgYWxsb2NhdGVkIGZyb20g
Z2xvYmFsIGhlYXAKKworICAgIGlmIChtX3Jvb3REZWZhdWx0U3R5bGUgJiYgdmlldykgeworICAg
ICAgICBkZWxldGUgbV9tZWRpdW07CisgICAgICAgIG1fbWVkaXVtID0gbmV3IE1lZGlhUXVlcnlF
dmFsdWF0b3Iodmlldy0+bWVkaWFUeXBlKCksIHZpZXcsIG1fcm9vdERlZmF1bHRTdHlsZSk7Cisg
ICAgfQorCisKICAgICAvLyBGSVhNRTogVGhpcyBzdWNrcyEgVGhlIHVzZXIgc2hlZXQgaXMgcmVw
YXJzZWQgZXZlcnkgdGltZSEKICAgICBpZiAoIXVzZXJTdHlsZVNoZWV0LmlzRW1wdHkoKSkgewog
ICAgICAgICBtX3VzZXJTaGVldCA9IG5ldyBDU1NTdHlsZVNoZWV0KGRvYyk7CiAgICAgICAgIG1f
dXNlclNoZWV0LT5wYXJzZVN0cmluZyh1c2VyU3R5bGVTaGVldCwgc3RyaWN0UGFyc2luZyk7CiAK
ICAgICAgICAgbV91c2VyU3R5bGUgPSBuZXcgQ1NTUnVsZVNldCgpOwotICAgICAgICBtX3VzZXJT
dHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQobV91c2VyU2hlZXQsIG1fbWVkaWFUeXBlKTsKKyAgICAg
ICAgbV91c2VyU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KG1fdXNlclNoZWV0LCBtX21lZGl1bSk7
CiAgICAgfQogCiAgICAgLy8gYWRkIHN0eWxlc2hlZXRzIGZyb20gZG9jdW1lbnQKQEAgLTIzNCwx
MCArMjU2LDggQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6Q1NTU3R5bGVTZWxlY3RvcihEb2N1bQogICAg
IERlcHJlY2F0ZWRQdHJMaXN0SXRlcmF0b3I8U3R5bGVTaGVldD4gaXQoc3R5bGVTaGVldHMtPnN0
eWxlU2hlZXRzKTsKICAgICBmb3IgKDsgaXQuY3VycmVudCgpOyArK2l0KQogICAgICAgICBpZiAo
aXQuY3VycmVudCgpLT5pc0NTU1N0eWxlU2hlZXQoKSAmJiAhaXQuY3VycmVudCgpLT5kaXNhYmxl
ZCgpKQotICAgICAgICAgICAgbV9hdXRob3JTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3RhdGlj
X2Nhc3Q8Q1NTU3R5bGVTaGVldCo+KGl0LmN1cnJlbnQoKSksIG1fbWVkaWFUeXBlKTsKKyAgICAg
ICAgICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHN0YXRpY19jYXN0PENTU1N0
eWxlU2hlZXQqPihpdC5jdXJyZW50KCkpLCBtX21lZGl1bSk7CiAKLSAgICBtX3J1bGVMaXN0ID0g
MDsKLSAgICBtX2NvbGxlY3RSdWxlc09ubHkgPSBmYWxzZTsKIH0KIAogQ1NTU3R5bGVTZWxlY3Rv
cjo6Q1NTU3R5bGVTZWxlY3RvcihDU1NTdHlsZVNoZWV0ICpzaGVldCkKQEAgLTI0NywxMCArMjY3
LDIzIEBAIENTU1N0eWxlU2VsZWN0b3I6OkNTU1N0eWxlU2VsZWN0b3IoQ1NTU3QKICAgICBpZiAo
IWRlZmF1bHRTdHlsZSkKICAgICAgICAgbG9hZERlZmF1bHRTdHlsZSgpOwogICAgIEZyYW1lVmll
dyAqdmlldyA9IHNoZWV0LT5kb2MoKS0+dmlldygpOwotICAgIG1fbWVkaWFUeXBlID0gIHZpZXcg
PyB2aWV3LT5tZWRpYVR5cGUoKSA6IFN0cmluZygiYWxsIik7CisKKyAgICBpZiAodmlldykKKyAg
ICAgICAgbV9tZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcih2aWV3LT5tZWRpYVR5cGUo
KSk7CisgICAgZWxzZQorICAgICAgICBtX21lZGl1bSA9IG5ldyBNZWRpYVF1ZXJ5RXZhbHVhdG9y
KCJhbGwiKTsKKworICAgIEVsZW1lbnQqIHJvb3QgPSBzaGVldC0+ZG9jKCktPmRvY3VtZW50RWxl
bWVudCgpOworICAgIGlmIChyb290KQorICAgICAgICBtX3Jvb3REZWZhdWx0U3R5bGUgPSBzdHls
ZUZvckVsZW1lbnQocm9vdCwgMCwgZmFsc2UsIHRydWUpOworCisgICAgaWYgKG1fcm9vdERlZmF1
bHRTdHlsZSAmJiB2aWV3KSB7CisgICAgICAgIGRlbGV0ZSBtX21lZGl1bTsKKyAgICAgICAgbV9t
ZWRpdW0gPSBuZXcgTWVkaWFRdWVyeUV2YWx1YXRvcih2aWV3LT5tZWRpYVR5cGUoKSwgdmlldywg
bV9yb290RGVmYXVsdFN0eWxlKTsKKyAgICB9CiAKICAgICBtX2F1dGhvclN0eWxlID0gbmV3IENT
U1J1bGVTZXQoKTsKLSAgICBtX2F1dGhvclN0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChzaGVldCwg
bV9tZWRpYVR5cGUpOworICAgIG1fYXV0aG9yU3R5bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHNoZWV0
LCBtX21lZGl1bSk7CiB9CiAKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdCgpCkBAIC0yNTgs
NiArMjkxLDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6aW5pdCgpCiAgICAgZWxlbWVudCA9
IDA7CiAgICAgc2V0dGluZ3MgPSAwOwogICAgIG1fbWF0Y2hlZFJ1bGVDb3VudCA9IG1fbWF0Y2hl
ZERlY2xDb3VudCA9IG1fdG1wUnVsZUNvdW50ID0gMDsKKyAgICBtX3J1bGVMaXN0ID0gMDsKKyAg
ICBtX2NvbGxlY3RSdWxlc09ubHkgPSBmYWxzZTsKKyAgICBtX3Jvb3REZWZhdWx0U3R5bGUgPSAw
OworICAgIG1fbWVkaXVtID0gMDsKIH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpzZXRFbmNv
ZGVkVVJMKGNvbnN0IEtVUkwmIHVybCkKQEAgLTI3OSw2ICszMTYsOSBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OnNldEVuY29kZWRVUkwoY29uCiAKIENTU1N0eWxlU2VsZWN0b3I6On5DU1NTdHls
ZVNlbGVjdG9yKCkKIHsKKyAgICBkZWxldGUgbV9tZWRpdW07CisgICAgOjpkZWxldGUgbV9yb290
RGVmYXVsdFN0eWxlOworCiAgICAgZGVsZXRlIG1fYXV0aG9yU3R5bGU7CiAgICAgZGVsZXRlIG1f
dXNlclN0eWxlOwogICAgIGRlbGV0ZSBtX3VzZXJTaGVldDsKQEAgLTMwNywyMSArMzQ3LDI0IEBA
IHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bG9hZERlZmF1bHRTdHlsZSgKICAgICBkZWZhdWx0UHJp
bnRTdHlsZSA9IG5ldyBDU1NSdWxlU2V0OwogICAgIGRlZmF1bHRRdWlya3NTdHlsZSA9IG5ldyBD
U1NSdWxlU2V0OwogCisgICAgTWVkaWFRdWVyeUV2YWx1YXRvciBzY3JlZW5FdmFsKCJzY3JlZW4i
KTsKKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHByaW50RXZhbCgicHJpbnQiKTsKKwogICAgIC8v
IFN0cmljdC1tb2RlIHJ1bGVzLgogICAgIGRlZmF1bHRTaGVldCA9IHBhcnNlVUFTaGVldChodG1s
NFVzZXJBZ2VudFN0eWxlU2hlZXQpOwotICAgIGRlZmF1bHRTdHlsZS0+YWRkUnVsZXNGcm9tU2hl
ZXQoZGVmYXVsdFNoZWV0LCAic2NyZWVuIik7Ci0gICAgZGVmYXVsdFByaW50U3R5bGUtPmFkZFJ1
bGVzRnJvbVNoZWV0KGRlZmF1bHRTaGVldCwgInByaW50Iik7CisgICAgZGVmYXVsdFN0eWxlLT5h
ZGRSdWxlc0Zyb21TaGVldChkZWZhdWx0U2hlZXQsICZzY3JlZW5FdmFsKTsKKyAgICBkZWZhdWx0
UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoZGVmYXVsdFNoZWV0LCAmcHJpbnRFdmFsKTsK
IAogI2lmIFNWR19TVVBQT1JUCiAgICAgLy8gU1ZHIHJ1bGVzLgogICAgIHN2Z1NoZWV0ID0gcGFy
c2VVQVNoZWV0KHN2Z1VzZXJBZ2VudFN0eWxlU2hlZXQpOwotICAgIGRlZmF1bHRTdHlsZS0+YWRk
UnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsICJzY3JlZW4iKTsKLSAgICBkZWZhdWx0UHJpbnRTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsICJwcmludCIpOworICAgIGRlZmF1bHRTdHls
ZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsICZzY3JlZW5FdmFsKTsKKyAgICBkZWZhdWx0
UHJpbnRTdHlsZS0+YWRkUnVsZXNGcm9tU2hlZXQoc3ZnU2hlZXQsICZwcmludEV2YWwpOwogI2Vu
ZGlmCiAKICAgICAvLyBRdWlya3MtbW9kZSBydWxlcy4KICAgICBxdWlya3NTaGVldCA9IHBhcnNl
VUFTaGVldChxdWlya3NVc2VyQWdlbnRTdHlsZVNoZWV0KTsKLSAgICBkZWZhdWx0UXVpcmtzU3R5
bGUtPmFkZFJ1bGVzRnJvbVNoZWV0KHF1aXJrc1NoZWV0LCAic2NyZWVuIik7CisgICAgZGVmYXVs
dFF1aXJrc1N0eWxlLT5hZGRSdWxlc0Zyb21TaGVldChxdWlya3NTaGVldCwgJnNjcmVlbkV2YWwp
OwogfQogCiB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFkZE1hdGNoZWRSdWxlKENTU1J1bGVEYXRh
KiBydWxlKQpAQCAtNjk5LDggKzc0MiwyNCBAQCBSZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rv
cjo6bG9jYXRlU2hhCiAgICAgcmV0dXJuIDA7CiB9CiAKK3ZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
bWF0Y2hVQVJ1bGVzKGludCYgZmlyc3RVQVJ1bGUsIGludCYgbGFzdFVBUnVsZSkKK3sKKyAgICAv
LyAxLiBGaXJzdCB3ZSBtYXRjaCBydWxlcyBmcm9tIHRoZSB1c2VyIGFnZW50IHNoZWV0LgorICAg
IG1hdGNoUnVsZXMoZGVmYXVsdFN0eWxlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CisKKyAg
ICAvLyAyLiBJbiBxdWlya3MgbW9kZSwgd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgcXVpcmtzIHVz
ZXIgYWdlbnQgc2hlZXQuCisgICAgaWYgKCFzdHJpY3RQYXJzaW5nKQorICAgICAgICBtYXRjaFJ1
bGVzKGRlZmF1bHRRdWlya3NTdHlsZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOworCisgICAg
Ly8gMy4gSWYgb3VyIG1lZGl1bSBpcyBwcmludCwgdGhlbiB3ZSBtYXRjaCBydWxlcyBmcm9tIHRo
ZSBwcmludCBzaGVldC4KKyAgICBpZiAobV9tZWRpdW0tPm1lZGlhVHlwZU1hdGNoKCJwcmludCIp
KQorICAgICAgICBtYXRjaFJ1bGVzKGRlZmF1bHRQcmludFN0eWxlLCBmaXJzdFVBUnVsZSwgbGFz
dFVBUnVsZSk7Cit9CisKKy8vIElmIHJlc29sdmVGb3JSb290RGVmYXVsdCBpcyB0cnVlLCBzdHls
ZSBiYXNlZCBvbiB1c2VyIGFnZW50IHN0eWxlIHNoZWV0IG9ubHkuIFRoaXMgaXMgdXNlZCBpbiBt
ZWRpYSBxdWVyaWVzLCB3aGVyZQorLy8gcmVsYXRpdmUgdW5pdHMgYXJlIGludGVycHJldGVkIGFj
Y29yZGluZyB0byBkb2N1bWVudCByb290IGVsZW1lbnQgc3R5bGUsIHN0eWxlZCBvbmx5IHdpdGgg
VUEgc3R5bGVzaGVldAogCi1SZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6c3R5bGVGb3JF
bGVtZW50KEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBkZWZhdWx0UGFyZW50LCBib29sIGFsbG93
U2hhcmluZykKK1JlbmRlclN0eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckVsZW1lbnQo
RWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIGRlZmF1bHRQYXJlbnQsIGJvb2wgYWxsb3dTaGFyaW5n
LCBib29sIHJlc29sdmVGb3JSb290RGVmYXVsdCkKIHsKICAgICBpZiAoYWxsb3dTaGFyaW5nICYm
ICFlLT5kb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkgewogICAgICAgICBpZiAo
IXN0eWxlTm90WWV0QXZhaWxhYmxlKSB7CkBAIC03MjcsMTEzICs3ODYsMTAyIEBAIFJlbmRlclN0
eWxlKiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZUZvckUKICAgICB9CiAgICAgaW5pdEZvclN0eWxl
UmVzb2x2ZShlLCBkZWZhdWx0UGFyZW50KTsKIAotICAgIHN0eWxlID0gbmV3IChlLT5kb2N1bWVu
dCgpLT5yZW5kZXJBcmVuYSgpKSBSZW5kZXJTdHlsZSgpOwotICAgIHN0eWxlLT5yZWYoKTsKKyAg
ICBpZiAocmVzb2x2ZUZvclJvb3REZWZhdWx0KSB7CisgICAgICAgIHN0eWxlID0gOjpuZXcgUmVu
ZGVyU3R5bGUoKTsKKyAgICAgICAgLy8gZG9uJ3QgcmVmLCBiZWNhdXNlIHdlIHdhbnQgdG8gZGVs
ZXRlIHRoaXMsIGJ1dCB3ZSBjYW5ub3QgdW5yZWYgaXQKKyAgICB9IGVsc2UgeworICAgICAgICBz
dHlsZSA9IG5ldyAoZS0+ZG9jdW1lbnQoKS0+cmVuZGVyQXJlbmEoKSkgUmVuZGVyU3R5bGUoKTsK
KyAgICAgICAgc3R5bGUtPnJlZigpOworICAgIH0KICAgICBpZiAocGFyZW50U3R5bGUpCiAgICAg
ICAgIHN0eWxlLT5pbmhlcml0RnJvbShwYXJlbnRTdHlsZSk7CiAgICAgZWxzZQogICAgICAgICBw
YXJlbnRTdHlsZSA9IHN0eWxlOwotICAgIAotICAgIC8vIDEuIEZpcnN0IHdlIG1hdGNoIHJ1bGVz
IGZyb20gdGhlIHVzZXIgYWdlbnQgc2hlZXQuCi0gICAgaW50IGZpcnN0VUFSdWxlID0gLTEsIGxh
c3RVQVJ1bGUgPSAtMTsKLSAgICBtYXRjaFJ1bGVzKGRlZmF1bHRTdHlsZSwgZmlyc3RVQVJ1bGUs
IGxhc3RVQVJ1bGUpOwotICAgIAotICAgIC8vIDIuIEluIHF1aXJrcyBtb2RlLCB3ZSBtYXRjaCBy
dWxlcyBmcm9tIHRoZSBxdWlya3MgdXNlciBhZ2VudCBzaGVldC4KLSAgICBpZiAoIXN0cmljdFBh
cnNpbmcpCi0gICAgICAgIG1hdGNoUnVsZXMoZGVmYXVsdFF1aXJrc1N0eWxlLCBmaXJzdFVBUnVs
ZSwgbGFzdFVBUnVsZSk7Ci0gICAgCi0gICAgLy8gMy4gSWYgb3VyIG1lZGl1bSBpcyBwcmludCwg
dGhlbiB3ZSBtYXRjaCBydWxlcyBmcm9tIHRoZSBwcmludCBzaGVldC4KLSAgICBpZiAobV9tZWRp
YVR5cGUgPT0gInByaW50IikKLSAgICAgICAgbWF0Y2hSdWxlcyhkZWZhdWx0UHJpbnRTdHlsZSwg
Zmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogCi0gICAgLy8gNC4gTm93IHdlIGNoZWNrIHVzZXIg
c2hlZXQgcnVsZXMuCisgICAgaW50IGZpcnN0VUFSdWxlID0gLTEsIGxhc3RVQVJ1bGUgPSAtMTsK
ICAgICBpbnQgZmlyc3RVc2VyUnVsZSA9IC0xLCBsYXN0VXNlclJ1bGUgPSAtMTsKLSAgICBtYXRj
aFJ1bGVzKG1fdXNlclN0eWxlLCBmaXJzdFVzZXJSdWxlLCBsYXN0VXNlclJ1bGUpOwotCi0gICAg
Ly8gNS4gTm93IGNoZWNrIGF1dGhvciBydWxlcywgYmVnaW5uaW5nIGZpcnN0IHdpdGggcHJlc2Vu
dGF0aW9uYWwgYXR0cmlidXRlcwotICAgIC8vIG1hcHBlZCBmcm9tIEhUTUwuCiAgICAgaW50IGZp
cnN0QXV0aG9yUnVsZSA9IC0xLCBsYXN0QXV0aG9yUnVsZSA9IC0xOwotICAgIGlmIChzdHlsZWRF
bGVtZW50KSB7Ci0gICAgICAgIC8vIEFzayBpZiB0aGUgSFRNTCBlbGVtZW50IGhhcyBtYXBwZWQg
YXR0cmlidXRlcy4KLSAgICAgICAgaWYgKHN0eWxlZEVsZW1lbnQtPmhhc01hcHBlZEF0dHJpYnV0
ZXMoKSkgewotICAgICAgICAgICAgLy8gV2FsayBvdXIgYXR0cmlidXRlIGxpc3QgYW5kIGFkZCBp
biBlYWNoIGRlY2wuCi0gICAgICAgICAgICBjb25zdCBOYW1lZE1hcHBlZEF0dHJNYXAqIG1hcCA9
IHN0eWxlZEVsZW1lbnQtPm1hcHBlZEF0dHJpYnV0ZXMoKTsKLSAgICAgICAgICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBtYXAtPmxlbmd0aCgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBN
YXBwZWRBdHRyaWJ1dGUqIGF0dHIgPSBtYXAtPmF0dHJpYnV0ZUl0ZW0oaSk7Ci0gICAgICAgICAg
ICAgICAgaWYgKGF0dHItPmRlY2woKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RB
dXRob3JSdWxlID09IC0xKSBmaXJzdEF1dGhvclJ1bGUgPSBtX21hdGNoZWREZWNsQ291bnQ7Ci0g
ICAgICAgICAgICAgICAgICAgIGxhc3RBdXRob3JSdWxlID0gbV9tYXRjaGVkRGVjbENvdW50Owot
ICAgICAgICAgICAgICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24oYXR0ci0+ZGVjbCgpKTsK
KyAgICBtYXRjaFVBUnVsZXMoZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOworCisgICAgaWYgKCFy
ZXNvbHZlRm9yUm9vdERlZmF1bHQpIHsKKyAgICAgICAgLy8gNC4gTm93IHdlIGNoZWNrIHVzZXIg
c2hlZXQgcnVsZXMuCisgICAgICAgIG1hdGNoUnVsZXMobV91c2VyU3R5bGUsIGZpcnN0VXNlclJ1
bGUsIGxhc3RVc2VyUnVsZSk7CisKKyAgICAgICAgLy8gNS4gTm93IGNoZWNrIGF1dGhvciBydWxl
cywgYmVnaW5uaW5nIGZpcnN0IHdpdGggcHJlc2VudGF0aW9uYWwgYXR0cmlidXRlcworICAgICAg
ICAvLyBtYXBwZWQgZnJvbSBIVE1MLgorICAgICAgICBpZiAoc3R5bGVkRWxlbWVudCkgeworICAg
ICAgICAgICAgLy8gQXNrIGlmIHRoZSBIVE1MIGVsZW1lbnQgaGFzIG1hcHBlZCBhdHRyaWJ1dGVz
LgorICAgICAgICAgICAgaWYgKHN0eWxlZEVsZW1lbnQtPmhhc01hcHBlZEF0dHJpYnV0ZXMoKSkg
eworICAgICAgICAgICAgICAgIC8vIFdhbGsgb3VyIGF0dHJpYnV0ZSBsaXN0IGFuZCBhZGQgaW4g
ZWFjaCBkZWNsLgorICAgICAgICAgICAgICAgIGNvbnN0IE5hbWVkTWFwcGVkQXR0ck1hcCogbWFw
ID0gc3R5bGVkRWxlbWVudC0+bWFwcGVkQXR0cmlidXRlcygpOworICAgICAgICAgICAgICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXAtPmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgICAg
ICAgICAgICAgTWFwcGVkQXR0cmlidXRlKiBhdHRyID0gbWFwLT5hdHRyaWJ1dGVJdGVtKGkpOwor
ICAgICAgICAgICAgICAgICAgICBpZiAoYXR0ci0+ZGVjbCgpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoZmlyc3RBdXRob3JSdWxlID09IC0xKSBmaXJzdEF1dGhvclJ1bGUgPSBtX21h
dGNoZWREZWNsQ291bnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBsYXN0QXV0aG9yUnVsZSA9
IG1fbWF0Y2hlZERlY2xDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZE1hdGNoZWRE
ZWNsYXJhdGlvbihhdHRyLT5kZWNsKCkpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICB9CiAKLSAgICAgICAgLy8gTm93IHdl
IGNoZWNrIGFkZGl0aW9uYWwgbWFwcGVkIGRlY2xhcmF0aW9ucy4KLSAgICAgICAgLy8gVGFibGVz
IGFuZCB0YWJsZSBjZWxscyBzaGFyZSBhbiBhZGRpdGlvbmFsIG1hcHBlZCBydWxlIHRoYXQgbXVz
dCBiZSBhcHBsaWVkCi0gICAgICAgIC8vIGFmdGVyIGFsbCBhdHRyaWJ1dGVzLCBzaW5jZSB0aGVp
ciBtYXBwZWQgc3R5bGUgZGVwZW5kcyBvbiB0aGUgdmFsdWVzIG9mIG11bHRpcGxlIGF0dHJpYnV0
ZXMuCi0gICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBhdHRyaWJ1dGVEZWNsID0g
c3R5bGVkRWxlbWVudC0+YWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbCgpOwotICAgICAgICBp
ZiAoYXR0cmlidXRlRGVjbCkgewotICAgICAgICAgICAgaWYgKGZpcnN0QXV0aG9yUnVsZSA9PSAt
MSkgZmlyc3RBdXRob3JSdWxlID0gbV9tYXRjaGVkRGVjbENvdW50OwotICAgICAgICAgICAgbGFz
dEF1dGhvclJ1bGUgPSBtX21hdGNoZWREZWNsQ291bnQ7Ci0gICAgICAgICAgICBhZGRNYXRjaGVk
RGVjbGFyYXRpb24oYXR0cmlidXRlRGVjbCk7CisgICAgICAgICAgICAvLyBOb3cgd2UgY2hlY2sg
YWRkaXRpb25hbCBtYXBwZWQgZGVjbGFyYXRpb25zLgorICAgICAgICAgICAgLy8gVGFibGVzIGFu
ZCB0YWJsZSBjZWxscyBzaGFyZSBhbiBhZGRpdGlvbmFsIG1hcHBlZCBydWxlIHRoYXQgbXVzdCBi
ZSBhcHBsaWVkCisgICAgICAgICAgICAvLyBhZnRlciBhbGwgYXR0cmlidXRlcywgc2luY2UgdGhl
aXIgbWFwcGVkIHN0eWxlIGRlcGVuZHMgb24gdGhlIHZhbHVlcyBvZiBtdWx0aXBsZSBhdHRyaWJ1
dGVzLgorICAgICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIGF0dHJpYnV0ZURl
Y2wgPSBzdHlsZWRFbGVtZW50LT5hZGRpdGlvbmFsQXR0cmlidXRlU3R5bGVEZWNsKCk7CisgICAg
ICAgICAgICBpZiAoYXR0cmlidXRlRGVjbCkgeworICAgICAgICAgICAgICAgIGlmIChmaXJzdEF1
dGhvclJ1bGUgPT0gLTEpIGZpcnN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hlZERlY2xDb3VudDsKKyAg
ICAgICAgICAgICAgICBsYXN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hlZERlY2xDb3VudDsKKyAgICAg
ICAgICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24oYXR0cmlidXRlRGVjbCk7CisgICAgICAg
ICAgICB9CiAgICAgICAgIH0KLSAgICB9CiAgICAgCi0gICAgLy8gNi4gQ2hlY2sgdGhlIHJ1bGVz
IGluIGF1dGhvciBzaGVldHMgbmV4dC4KLSAgICBtYXRjaFJ1bGVzKG1fYXV0aG9yU3R5bGUsIGZp
cnN0QXV0aG9yUnVsZSwgbGFzdEF1dGhvclJ1bGUpOwotICAgIAotICAgIC8vIDcuIE5vdyBjaGVj
ayBvdXIgaW5saW5lIHN0eWxlIGF0dHJpYnV0ZS4KLSAgICBpZiAoc3R5bGVkRWxlbWVudCkgewot
ICAgICAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogaW5saW5lRGVjbCA9IHN0eWxlZEVs
ZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpOwotICAgICAgICBpZiAoaW5saW5lRGVjbCkgewotICAg
ICAgICAgICAgaWYgKGZpcnN0QXV0aG9yUnVsZSA9PSAtMSkgZmlyc3RBdXRob3JSdWxlID0gbV9t
YXRjaGVkRGVjbENvdW50OwotICAgICAgICAgICAgbGFzdEF1dGhvclJ1bGUgPSBtX21hdGNoZWRE
ZWNsQ291bnQ7Ci0gICAgICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24oaW5saW5lRGVjbCk7
CisgICAgICAgIC8vIDYuIENoZWNrIHRoZSBydWxlcyBpbiBhdXRob3Igc2hlZXRzIG5leHQuCisg
ICAgICAgIG1hdGNoUnVsZXMobV9hdXRob3JTdHlsZSwgZmlyc3RBdXRob3JSdWxlLCBsYXN0QXV0
aG9yUnVsZSk7CisgICAgCisgICAgICAgIC8vIDcuIE5vdyBjaGVjayBvdXIgaW5saW5lIHN0eWxl
IGF0dHJpYnV0ZS4KKyAgICAgICAgaWYgKHN0eWxlZEVsZW1lbnQpIHsKKyAgICAgICAgICAgIENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVEZWNsID0gc3R5bGVkRWxlbWVudC0+aW5s
aW5lU3R5bGVEZWNsKCk7CisgICAgICAgICAgICBpZiAoaW5saW5lRGVjbCkgeworICAgICAgICAg
ICAgICAgIGlmIChmaXJzdEF1dGhvclJ1bGUgPT0gLTEpIGZpcnN0QXV0aG9yUnVsZSA9IG1fbWF0
Y2hlZERlY2xDb3VudDsKKyAgICAgICAgICAgICAgICBsYXN0QXV0aG9yUnVsZSA9IG1fbWF0Y2hl
ZERlY2xDb3VudDsKKyAgICAgICAgICAgICAgICBhZGRNYXRjaGVkRGVjbGFyYXRpb24oaW5saW5l
RGVjbCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgCisKICAgICAvLyBO
b3cgd2UgaGF2ZSBhbGwgb2YgdGhlIG1hdGNoZWQgcnVsZXMgaW4gdGhlIGFwcHJvcHJpYXRlIG9y
ZGVyLiAgV2FsayB0aGUgcnVsZXMgYW5kIGFwcGx5CiAgICAgLy8gaGlnaC1wcmlvcml0eSBwcm9w
ZXJ0aWVzIGZpcnN0LCBpLmUuLCB0aG9zZSBwcm9wZXJ0aWVzIHRoYXQgb3RoZXIgcHJvcGVydGll
cyBkZXBlbmQgb24uCiAgICAgLy8gVGhlIG9yZGVyIGlzICgxKSBoaWdoLXByaW9yaXR5IG5vdCBp
bXBvcnRhbnQsICgyKSBoaWdoLXByaW9yaXR5IGltcG9ydGFudCwgKDMpIG5vcm1hbCBub3QgaW1w
b3J0YW50CiAgICAgLy8gYW5kICg0KSBub3JtYWwgaW1wb3J0YW50LgogICAgIGFwcGx5RGVjbGFy
YXRpb25zKHRydWUsIGZhbHNlLCAwLCBtX21hdGNoZWREZWNsQ291bnQtMSk7Ci0gICAgYXBwbHlE
ZWNsYXJhdGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RBdXRob3JSdWxlLCBsYXN0QXV0aG9yUnVsZSk7
Ci0gICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RVc2VyUnVsZSwgbGFzdFVz
ZXJSdWxlKTsKKyAgICBpZiAoIXJlc29sdmVGb3JSb290RGVmYXVsdCkgeworICAgICAgICBhcHBs
eURlY2xhcmF0aW9ucyh0cnVlLCB0cnVlLCBmaXJzdEF1dGhvclJ1bGUsIGxhc3RBdXRob3JSdWxl
KTsKKyAgICAgICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgdHJ1ZSwgZmlyc3RVc2VyUnVsZSwg
bGFzdFVzZXJSdWxlKTsKKyAgICB9CiAgICAgYXBwbHlEZWNsYXJhdGlvbnModHJ1ZSwgdHJ1ZSwg
Zmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogICAgIAogICAgIC8vIElmIG91ciBmb250IGdvdCBk
aXJ0aWVkLCBnbyBhaGVhZCBhbmQgdXBkYXRlIGl0IG5vdy4KLSAgICBpZiAoZm9udERpcnR5KSB7
Ci0gICAgICAgIGNoZWNrRm9yVGV4dFNpemVBZGp1c3QoKTsKLSAgICAgICAgY2hlY2tGb3JHZW5l
cmljRmFtaWx5Q2hhbmdlKHN0eWxlLCBwYXJlbnRTdHlsZSk7Ci0gICAgICAgIHN0eWxlLT5mb250
KCkudXBkYXRlKCk7Ci0gICAgICAgIGZvbnREaXJ0eSA9IGZhbHNlOwotICAgIH0KKyAgICBpZiAo
Zm9udERpcnR5KQorICAgICAgICB1cGRhdGVGb250KCk7CiAgICAgCiAgICAgLy8gTm93IGRvIHRo
ZSBub3JtYWwgcHJpb3JpdHkgVUEgcHJvcGVydGllcy4KICAgICBhcHBseURlY2xhcmF0aW9ucyhm
YWxzZSwgZmFsc2UsIGZpcnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKICAgICAKICAgICAvLyBDYWNo
ZSBvdXIgYm9yZGVyIGFuZCBiYWNrZ3JvdW5kIHNvIHRoYXQgd2UgY2FuIGV4YW1pbmUgdGhlbSBs
YXRlci4KLSAgICBtX2hhc1VBQXBwZWFyYW5jZSA9IHN0eWxlLT5oYXNBcHBlYXJhbmNlKCk7Ci0g
ICAgaWYgKG1faGFzVUFBcHBlYXJhbmNlKSB7Ci0gICAgICAgIG1fYm9yZGVyRGF0YSA9IHN0eWxl
LT5ib3JkZXIoKTsKLSAgICAgICAgbV9iYWNrZ3JvdW5kRGF0YSA9ICpzdHlsZS0+YmFja2dyb3Vu
ZExheWVycygpOwotICAgICAgICBtX2JhY2tncm91bmRDb2xvciA9IHN0eWxlLT5iYWNrZ3JvdW5k
Q29sb3IoKTsKLSAgICB9CisgICAgY2FjaGVCb3JkZXJBbmRCYWNrZ3JvdW5kKCk7CiAgICAgCiAg
ICAgLy8gTm93IGRvIHRoZSBhdXRob3IgYW5kIHVzZXIgbm9ybWFsIHByaW9yaXR5IHByb3BlcnRp
ZXMgYW5kIGFsbCB0aGUgIWltcG9ydGFudCBwcm9wZXJ0aWVzLgotICAgIGFwcGx5RGVjbGFyYXRp
b25zKGZhbHNlLCBmYWxzZSwgbGFzdFVBUnVsZSsxLCBtX21hdGNoZWREZWNsQ291bnQtMSk7Ci0g
ICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIHRydWUsIGZpcnN0QXV0aG9yUnVsZSwgbGFzdEF1
dGhvclJ1bGUpOwotICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVlLCBmaXJzdFVzZXJS
dWxlLCBsYXN0VXNlclJ1bGUpOworICAgIGlmICghcmVzb2x2ZUZvclJvb3REZWZhdWx0KSB7Cisg
ICAgICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCBmYWxzZSwgbGFzdFVBUnVsZSsxLCBtX21h
dGNoZWREZWNsQ291bnQtMSk7CisgICAgICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVl
LCBmaXJzdEF1dGhvclJ1bGUsIGxhc3RBdXRob3JSdWxlKTsKKyAgICAgICAgYXBwbHlEZWNsYXJh
dGlvbnMoZmFsc2UsIHRydWUsIGZpcnN0VXNlclJ1bGUsIGxhc3RVc2VyUnVsZSk7CisgICAgfQog
ICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCB0cnVlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVs
ZSk7CiAgICAgCiAgICAgLy8gSWYgb3VyIGZvbnQgZ290IGRpcnRpZWQgYnkgb25lIG9mIHRoZSBu
b24tZXNzZW50aWFsIGZvbnQgcHJvcHMsIAogICAgIC8vIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQg
YSBzZWNvbmQgdGltZS4KLSAgICBpZiAoZm9udERpcnR5KSB7Ci0gICAgICAgIGNoZWNrRm9yVGV4
dFNpemVBZGp1c3QoKTsKLSAgICAgICAgY2hlY2tGb3JHZW5lcmljRmFtaWx5Q2hhbmdlKHN0eWxl
LCBwYXJlbnRTdHlsZSk7Ci0gICAgICAgIHN0eWxlLT5mb250KCkudXBkYXRlKCk7Ci0gICAgICAg
IGZvbnREaXJ0eSA9IGZhbHNlOwotICAgIH0KKyAgICBpZiAoZm9udERpcnR5KQorICAgICAgICB1
cGRhdGVGb250KCk7CiAgICAgCiAgICAgLy8gQ2xlYW4gdXAgb3VyIHN0eWxlIG9iamVjdCdzIGRp
c3BsYXkgYW5kIHRleHQgZGVjb3JhdGlvbnMgKGFtb25nIG90aGVyIGZpeHVwcykuCiAgICAgYWRq
dXN0UmVuZGVyU3R5bGUoc3R5bGUsIGUpOwpAQCAtODgyLDIzICs5MzAsMTQgQEAgUmVuZGVyU3R5
bGUqIENTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eQogICAgIGFwcGx5RGVjbGFyYXRpb25zKHRy
dWUsIHRydWUsIGZpcnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsKICAgICAKICAgICAvLyBJZiBvdXIg
Zm9udCBnb3QgZGlydGllZCwgZ28gYWhlYWQgYW5kIHVwZGF0ZSBpdCBub3cuCi0gICAgaWYgKGZv
bnREaXJ0eSkgewotICAgICAgICBjaGVja0ZvclRleHRTaXplQWRqdXN0KCk7Ci0gICAgICAgIGNo
ZWNrRm9yR2VuZXJpY0ZhbWlseUNoYW5nZShzdHlsZSwgcGFyZW50U3R5bGUpOwotICAgICAgICBz
dHlsZS0+Zm9udCgpLnVwZGF0ZSgpOwotICAgICAgICBmb250RGlydHkgPSBmYWxzZTsKLSAgICB9
CisgICAgaWYgKGZvbnREaXJ0eSkKKyAgICAgICAgdXBkYXRlRm9udCgpOwogICAgIAogICAgIC8v
IE5vdyBkbyB0aGUgbm9ybWFsIHByaW9yaXR5IHByb3BlcnRpZXMuCiAgICAgYXBwbHlEZWNsYXJh
dGlvbnMoZmFsc2UsIGZhbHNlLCBmaXJzdFVBUnVsZSwgbGFzdFVBUnVsZSk7CiAgICAgCiAgICAg
Ly8gQ2FjaGUgb3VyIGJvcmRlciBhbmQgYmFja2dyb3VuZCBzbyB0aGF0IHdlIGNhbiBleGFtaW5l
IHRoZW0gbGF0ZXIuCi0gICAgbV9oYXNVQUFwcGVhcmFuY2UgPSBzdHlsZS0+aGFzQXBwZWFyYW5j
ZSgpOwotICAgIGlmIChtX2hhc1VBQXBwZWFyYW5jZSkgewotICAgICAgICBtX2JvcmRlckRhdGEg
PSBzdHlsZS0+Ym9yZGVyKCk7Ci0gICAgICAgIG1fYmFja2dyb3VuZERhdGEgPSAqc3R5bGUtPmJh
Y2tncm91bmRMYXllcnMoKTsKLSAgICAgICAgbV9iYWNrZ3JvdW5kQ29sb3IgPSBzdHlsZS0+YmFj
a2dyb3VuZENvbG9yKCk7Ci0gICAgfQorICAgIGNhY2hlQm9yZGVyQW5kQmFja2dyb3VuZCgpOwog
ICAgIAogICAgIGFwcGx5RGVjbGFyYXRpb25zKGZhbHNlLCBmYWxzZSwgbGFzdFVBUnVsZSsxLCBt
X21hdGNoZWREZWNsQ291bnQtMSk7CiAgICAgYXBwbHlEZWNsYXJhdGlvbnMoZmFsc2UsIHRydWUs
IGZpcnN0QXV0aG9yUnVsZSwgbGFzdEF1dGhvclJ1bGUpOwpAQCAtOTA3LDEzICs5NDYsOCBAQCBS
ZW5kZXJTdHlsZSogQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5CiAgICAgCiAgICAgLy8gSWYg
b3VyIGZvbnQgZ290IGRpcnRpZWQgYnkgb25lIG9mIHRoZSBub24tZXNzZW50aWFsIGZvbnQgcHJv
cHMsIAogICAgIC8vIGdvIGFoZWFkIGFuZCB1cGRhdGUgaXQgYSBzZWNvbmQgdGltZS4KLSAgICBp
ZiAoZm9udERpcnR5KSB7Ci0gICAgICAgIGNoZWNrRm9yVGV4dFNpemVBZGp1c3QoKTsKLSAgICAg
ICAgY2hlY2tGb3JHZW5lcmljRmFtaWx5Q2hhbmdlKHN0eWxlLCBwYXJlbnRTdHlsZSk7Ci0gICAg
ICAgIHN0eWxlLT5mb250KCkudXBkYXRlKCk7Ci0gICAgICAgIGZvbnREaXJ0eSA9IGZhbHNlOwot
ICAgIH0KLSAgICAKKyAgICBpZiAoZm9udERpcnR5KQorICAgICAgICB1cGRhdGVGb250KCk7CiAg
ICAgLy8gQ2xlYW4gdXAgb3VyIHN0eWxlIG9iamVjdCdzIGRpc3BsYXkgYW5kIHRleHQgZGVjb3Jh
dGlvbnMgKGFtb25nIG90aGVyIGZpeHVwcykuCiAgICAgYWRqdXN0UmVuZGVyU3R5bGUoc3R5bGUs
IDApOwogCkBAIC0xMDM3LDYgKzEwNzEsMjQgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphZGp1
c3RSZW5kZXJTdHlsZQogICAgICAgICB2aWV3LT51c2VTbG93UmVwYWludHMoKTsKIH0KIAordm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjp1cGRhdGVGb250KCkKK3sKKyAgICBjaGVja0ZvclRleHRTaXpl
QWRqdXN0KCk7CisgICAgY2hlY2tGb3JHZW5lcmljRmFtaWx5Q2hhbmdlKHN0eWxlLCBwYXJlbnRT
dHlsZSk7CisgICAgc3R5bGUtPmZvbnQoKS51cGRhdGUoKTsKKyAgICBmb250RGlydHkgPSBmYWxz
ZTsKK30KKwordm9pZCBDU1NTdHlsZVNlbGVjdG9yOjpjYWNoZUJvcmRlckFuZEJhY2tncm91bmQo
KQoreworICAgIG1faGFzVUFBcHBlYXJhbmNlID0gc3R5bGUtPmhhc0FwcGVhcmFuY2UoKTsKKyAg
ICBpZiAobV9oYXNVQUFwcGVhcmFuY2UpIHsKKyAgICAgICAgbV9ib3JkZXJEYXRhID0gc3R5bGUt
PmJvcmRlcigpOworICAgICAgICBtX2JhY2tncm91bmREYXRhID0gKnN0eWxlLT5iYWNrZ3JvdW5k
TGF5ZXJzKCk7CisgICAgICAgIG1fYmFja2dyb3VuZENvbG9yID0gc3R5bGUtPmJhY2tncm91bmRD
b2xvcigpOworICAgIH0KK30KKwogUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9y
OjpzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBib29sIGF1dGhvck9ubHkpCiB7CiAg
ICAgaWYgKCFlLT5kb2N1bWVudCgpLT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkKQEAgLTEwNDgs
MTcgKzExMDAsOSBAQCBSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3I6OnN0CiAg
ICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlLCAwKTsKICAgICAKICAgICBpZiAoIWF1dGhvck9ubHkp
IHsKLSAgICAgICAgLy8gRmlyc3Qgd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgdXNlciBhZ2VudCBz
aGVldC4KICAgICAgICAgaW50IGZpcnN0VUFSdWxlID0gLTEsIGxhc3RVQVJ1bGUgPSAtMTsKLSAg
ICAgICAgbWF0Y2hSdWxlcyhkZWZhdWx0U3R5bGUsIGZpcnN0VUFSdWxlLCBsYXN0VUFSdWxlKTsK
LSAgICAgICAgCi0gICAgICAgIC8vIEluIHF1aXJrcyBtb2RlLCB3ZSBtYXRjaCBydWxlcyBmcm9t
IHRoZSBxdWlya3MgdXNlciBhZ2VudCBzaGVldC4KLSAgICAgICAgaWYgKCFzdHJpY3RQYXJzaW5n
KQotICAgICAgICAgICAgbWF0Y2hSdWxlcyhkZWZhdWx0UXVpcmtzU3R5bGUsIGZpcnN0VUFSdWxl
LCBsYXN0VUFSdWxlKTsKLSAgICAgICAgCi0gICAgICAgIC8vIElmIG91ciBtZWRpdW0gaXMgcHJp
bnQsIHRoZW4gd2UgbWF0Y2ggcnVsZXMgZnJvbSB0aGUgcHJpbnQgc2hlZXQuCi0gICAgICAgIGlm
IChtX21lZGlhVHlwZSA9PSAicHJpbnQiKQotICAgICAgICAgICAgbWF0Y2hSdWxlcyhkZWZhdWx0
UHJpbnRTdHlsZSwgZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOworICAgICAgICAvLyBGaXJzdCB3
ZSBtYXRjaCBydWxlcyBmcm9tIHRoZSB1c2VyIGFnZW50IHNoZWV0LgorICAgICAgICBtYXRjaFVB
UnVsZXMoZmlyc3RVQVJ1bGUsIGxhc3RVQVJ1bGUpOwogCiAgICAgICAgIC8vIE5vdyB3ZSBjaGVj
ayB1c2VyIHNoZWV0IHJ1bGVzLgogICAgICAgICBpbnQgZmlyc3RVc2VyUnVsZSA9IC0xLCBsYXN0
VXNlclJ1bGUgPSAtMTsKQEAgLTE1ODcsMTQgKzE2MzEsMTQgQEAgdm9pZCBDU1NSdWxlU2V0Ojph
ZGRSdWxlKENTU1N0eWxlUnVsZSogcgogICAgICAgICBtX3VuaXZlcnNhbFJ1bGVzLT5hcHBlbmQo
bV9ydWxlQ291bnQrKywgcnVsZSwgc2VsKTsKIH0KIAotdm9pZCBDU1NSdWxlU2V0OjphZGRSdWxl
c0Zyb21TaGVldChDU1NTdHlsZVNoZWV0ICpzaGVldCwgY29uc3QgU3RyaW5nICZtZWRpdW0pCit2
b2lkIENTU1J1bGVTZXQ6OmFkZFJ1bGVzRnJvbVNoZWV0KENTU1N0eWxlU2hlZXQqIHNoZWV0LCAg
TWVkaWFRdWVyeUV2YWx1YXRvciogbWVkaXVtKQogewogICAgIGlmICghc2hlZXQgfHwgIXNoZWV0
LT5pc0NTU1N0eWxlU2hlZXQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gTm8gbWVkaWEg
aW1wbGllcyAiYWxsIiwgYnV0IGlmIGEgbWVkaWEgbGlzdCBleGlzdHMgaXQgbXVzdAogICAgIC8v
IGNvbnRhaW4gb3VyIGN1cnJlbnQgbWVkaXVtCi0gICAgaWYgKHNoZWV0LT5tZWRpYSgpICYmICFz
aGVldC0+bWVkaWEoKS0+Y29udGFpbnMobWVkaXVtKSkKKyAgICBpZiAoc2hlZXQtPm1lZGlhKCkg
JiYgIW1lZGl1bS0+ZXZhbChzaGVldC0+bWVkaWEoKSkpCiAgICAgICAgIHJldHVybjsgLy8gdGhl
IHN0eWxlIHNoZWV0IGRvZXNuJ3QgYXBwbHkKIAogICAgIGludCBsZW4gPSBzaGVldC0+bGVuZ3Ro
KCk7CkBAIC0xNjA4LDE0ICsxNjUyLDE0IEBAIHZvaWQgQ1NTUnVsZVNldDo6YWRkUnVsZXNGcm9t
U2hlZXQoQ1NTU3QKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmKGl0ZW0tPmlzSW1wb3J0UnVs
ZSgpKSB7CiAgICAgICAgICAgICBDU1NJbXBvcnRSdWxlKiBpbXBvcnQgPSBzdGF0aWNfY2FzdDxD
U1NJbXBvcnRSdWxlKj4oaXRlbSk7Ci0gICAgICAgICAgICBpZiAoIWltcG9ydC0+bWVkaWEoKSB8
fCBpbXBvcnQtPm1lZGlhKCktPmNvbnRhaW5zKG1lZGl1bSkpCisgICAgICAgICAgICBpZiAoIWlt
cG9ydC0+bWVkaWEoKSB8fCBtZWRpdW0tPmV2YWwoaW1wb3J0LT5tZWRpYSgpKSkKICAgICAgICAg
ICAgICAgICBhZGRSdWxlc0Zyb21TaGVldChpbXBvcnQtPnN0eWxlU2hlZXQoKSwgbWVkaXVtKTsK
ICAgICAgICAgfQogICAgICAgICBlbHNlIGlmKGl0ZW0tPmlzTWVkaWFSdWxlKCkpIHsKICAgICAg
ICAgICAgIENTU01lZGlhUnVsZSogciA9IHN0YXRpY19jYXN0PENTU01lZGlhUnVsZSo+KGl0ZW0p
OwogICAgICAgICAgICAgQ1NTUnVsZUxpc3QqIHJ1bGVzID0gci0+Y3NzUnVsZXMoKTsKIAotICAg
ICAgICAgICAgaWYgKCghci0+bWVkaWEoKSB8fCByLT5tZWRpYSgpLT5jb250YWlucyhtZWRpdW0p
KSAmJiBydWxlcykgeworICAgICAgICAgICAgaWYgKCghci0+bWVkaWEoKSB8fCBtZWRpdW0tPmV2
YWwoci0+bWVkaWEoKSkpICYmIHJ1bGVzKSB7CiAgICAgICAgICAgICAgICAgLy8gVHJhdmVyc2Ug
Y2hpbGQgZWxlbWVudHMgb2YgdGhlIEBtZWRpYSBydWxlLgogICAgICAgICAgICAgICAgIGZvciAo
dW5zaWduZWQgaiA9IDA7IGogPCBydWxlcy0+bGVuZ3RoKCk7IGorKykgewogICAgICAgICAgICAg
ICAgICAgICBDU1NSdWxlICpjaGlsZEl0ZW0gPSBydWxlcy0+aXRlbShqKTsKSW5kZXg6IFdlYkNv
cmUvY3NzL21ha2V0b2tlbml6ZXIKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvbWFrZXRva2Vu
aXplcgkocmV2aXNpb24gMTQ2MDYpCisrKyBXZWJDb3JlL2Nzcy9tYWtldG9rZW5pemVyCSh3b3Jr
aW5nIGNvcHkpCkBAIC01Myw2ICs1MywxNSBAQCB3aGlsZSAoPD4pIHsKICAgICBwcmludDsKIH0K
IAorIyBtZWRpYSBxdWVyeSwgdG9rZW5pemVyIHN0YXRlIHN1cHBvcnQKK3doaWxlICg8Pikgewor
ICBsYXN0IGlmIC95eXRleHQvOworfQord2hpbGUgKDw+KSB7CisgIGxhc3QgaWYgbm90ICgvZGVm
aW5lLyB8fCAvbGluZS8pIDsKKyAgcHJpbnQ7Cit9CisKIHdoaWxlICg8PikgewogICAgIGxhc3Qg
aWYgL15ZWV9ERUNMLzsKIH0KSW5kZXg6IFdlYkNvcmUvY3NzL1N0eWxlU2hlZXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvY3NzL1N0eWxlU2hlZXQuY3BwCShyZXZpc2lvbiAxNDYwNikKKysr
IFdlYkNvcmUvY3NzL1N0eWxlU2hlZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02NCw3ICs2NCwx
MSBAQCBTdHlsZVNoZWV0KiBTdHlsZVNoZWV0OjpwYXJlbnRTdHlsZVNoZWV0CiAKIHZvaWQgU3R5
bGVTaGVldDo6c2V0TWVkaWEoTWVkaWFMaXN0KiBtZWRpYSkKIHsKKyAgICBpZiAobV9tZWRpYSkK
KyAgICAgICAgbV9tZWRpYS0+c2V0UGFyZW50KDApOworCiAgICAgbV9tZWRpYSA9IG1lZGlhOwor
ICAgIG1fbWVkaWEtPnNldFBhcmVudCh0aGlzKTsKIH0KIAogfQpJbmRleDogV2ViQ29yZS9jc3Mv
Y3NzcGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9jc3NwYXJzZXIuY3BwCShy
ZXZpc2lvbiAxNDYwNikKKysrIFdlYkNvcmUvY3NzL2Nzc3BhcnNlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJQYWlyLmgiCiAjaW5jbHVkZSAiU2hhZG93
VmFsdWUuaCIKICNpbmNsdWRlICJjc3NoZWxwZXIuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXhw
LmgiCiAKICNkZWZpbmUgWVlERUJVRyAwCiAKQEAgLTkyLDYgKzkzLDkgQEAgbmFtZXNwYWNlIHsK
IENTU1BhcnNlciogQ1NTUGFyc2VyOjpjdXJyZW50UGFyc2VyID0gMDsKIAogQ1NTUGFyc2VyOjpD
U1NQYXJzZXIoYm9vbCBzdHJpY3RQYXJzaW5nKQorICAgIDogbV9mbG9hdGluZ01lZGlhUXVlcnko
MCkKKyAgICAsIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKDApCisgICAgLCBtX2Zsb2F0aW5nTWVk
aWFRdWVyeUV4cExpc3QoMCkKIHsKICNpZmRlZiBDU1NfREVCVUcKICAgICBrZERlYnVnKDYwODAp
IDw8ICJDU1NQYXJzZXI6OkNTU1BhcnNlciB0aGlzPSIgPDwgdGhpcyA8PCBlbmRsOwpAQCAtMTI4
LDYgKzEzMiwxMiBAQCBDU1NQYXJzZXI6On5DU1NQYXJzZXIoKQogCiAgICAgZmFzdEZyZWUoZGF0
YSk7CiAKKyAgICBpZiAobV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KSB7CisgICAgICAgIGRl
bGV0ZUFsbFZhbHVlcygqbV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KTsKKyAgICAgICAgZGVs
ZXRlIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdDsKKyAgICB9CisgICAgZGVsZXRlIG1fZmxv
YXRpbmdNZWRpYVF1ZXJ5RXhwOworICAgIGRlbGV0ZSBtX2Zsb2F0aW5nTWVkaWFRdWVyeTsKICAg
ICBkZWxldGVBbGxWYWx1ZXMobV9mbG9hdGluZ1NlbGVjdG9ycyk7CiAgICAgZGVsZXRlQWxsVmFs
dWVzKG1fZmxvYXRpbmdWYWx1ZUxpc3RzKTsKICAgICBkZWxldGVBbGxWYWx1ZXMobV9mbG9hdGlu
Z0Z1bmN0aW9ucyk7CkBAIC0xNTAsNiArMTYwLDkgQEAgdm9pZCBQYXJzZVN0cmluZzo6bG93ZXIo
KQogdm9pZCBDU1NQYXJzZXI6OnNldHVwUGFyc2VyKGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3Qg
U3RyaW5nJiBzdHJpbmcsIGNvbnN0IGNoYXIqIHN1ZmZpeCkKIHsKICAgICBpbnQgbGVuZ3RoID0g
c3RyaW5nLmxlbmd0aCgpICsgc3RybGVuKHByZWZpeCkgKyBzdHJsZW4oc3VmZml4KSArIDI7CisK
KyAgICBpZiAoZGF0YSkKKyAgICAgICAgZmFzdEZyZWUoZGF0YSk7CiAgICAgCiAgICAgZGF0YSA9
IHN0YXRpY19jYXN0PFVDaGFyKj4oZmFzdE1hbGxvYyhsZW5ndGggKiBzaXplb2YoVUNoYXIpKSk7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0cmxlbihwcmVmaXgpOyBpKyspCkBAIC0y
OTIsNiArMzA1LDMyIEBAIGJvb2wgQ1NTUGFyc2VyOjpwYXJzZURlY2xhcmF0aW9uKENTU011dGEK
ICAgICByZXR1cm4gb2s7CiB9CiAKK2Jvb2wgQ1NTUGFyc2VyOjpwYXJzZU1lZGlhUXVlcnkoTWVk
aWFMaXN0KiBxdWVyaWVzLCBjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBpZiAoc3RyaW5n
LmlzRW1wdHkoKSB8fCBzdHJpbmcuaXNOdWxsKCkpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgbWVkaWFRdWVyeSA9IDA7CisgICAgLy8gY2FuJ3QgdXNlIHsgYmVjYXVzZSB0
b2tlbml6ZXIgc3RhdGUgc3dpdGNoZXMgZnJvbSBtZWRpYXF1ZXJ5IHRvIGluaXRpYWwgc3RhdGUg
d2hlbiBpdCBzZWVzIHsgdG9rZW4uCisgICAgLy8gaW5zdGVhZCBpbnNlcnQgb25lICIgIiAod2hp
Y2ggaXMgV0hJVEVTUEFDRSBpbiBDU1NHcmFtbWFyLnkpCisgICAgc2V0dXBQYXJzZXIgKCJALXdl
YmtpdC1tZWRpYXF1ZXJ5ICIsIHN0cmluZywgIn0gIik7CisKKyAgICBDU1NQYXJzZXIqIG9sZCA9
IGN1cnJlbnRQYXJzZXI7CisgICAgY3VycmVudFBhcnNlciA9IHRoaXM7CisgICAgY3NzeXlwYXJz
ZSh0aGlzKTsKKyAgICBjdXJyZW50UGFyc2VyID0gb2xkOworCisgICAgYm9vbCBvayA9IGZhbHNl
OworICAgIGlmIChtZWRpYVF1ZXJ5KSB7CisgICAgICAgIG9rID0gdHJ1ZTsKKyAgICAgICAgcXVl
cmllcy0+YXBwZW5kTWVkaWFRdWVyeShtZWRpYVF1ZXJ5KTsKKyAgICAgICAgbWVkaWFRdWVyeSA9
IDA7CisgICAgfQorCisgICAgcmV0dXJuIG9rOworfQorCiAKIHZvaWQgQ1NTUGFyc2VyOjphZGRQ
cm9wZXJ0eShpbnQgcHJvcElkLCBDU1NWYWx1ZSAqdmFsdWUsIGJvb2wgaW1wb3J0YW50KQogewpA
QCAtMjg1Niw2ICsyODk1LDUxIEBAIFZhbHVlJiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ1ZhbHVl
KFZhbHUKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKK01lZGlhUXVlcnlFeHAqIENTU1BhcnNlcjo6
Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwKGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFGZWF0
dXJlLCBWYWx1ZUxpc3QqIHZhbHVlcykKK3sKKyAgICBkZWxldGUgbV9mbG9hdGluZ01lZGlhUXVl
cnlFeHA7CisgICAgbV9mbG9hdGluZ01lZGlhUXVlcnlFeHAgPSBuZXcgTWVkaWFRdWVyeUV4cCht
ZWRpYUZlYXR1cmUsIHZhbHVlcyk7CisgICAgcmV0dXJuIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5RXhw
OworfQorCitNZWRpYVF1ZXJ5RXhwKiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ01lZGlhUXVlcnlF
eHAoTWVkaWFRdWVyeUV4cCogZSkKK3sKKyAgICBBU1NFUlQoZSA9PSBtX2Zsb2F0aW5nTWVkaWFR
dWVyeUV4cCk7CisgICAgbV9mbG9hdGluZ01lZGlhUXVlcnlFeHAgPSAwOworICAgIHJldHVybiBl
OworfQorCitWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBDU1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5n
TWVkaWFRdWVyeUV4cExpc3QoKQoreworICAgIGlmIChtX2Zsb2F0aW5nTWVkaWFRdWVyeUV4cExp
c3QpIHsKKyAgICAgICAgZGVsZXRlQWxsVmFsdWVzKCptX2Zsb2F0aW5nTWVkaWFRdWVyeUV4cExp
c3QpOworICAgICAgICBkZWxldGUgbV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0OworICAgIH0K
KyAgICBtX2Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3QgPSBuZXcgVmVjdG9yPE1lZGlhUXVlcnlF
eHAqPjsKKyAgICByZXR1cm4gbV9mbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0OworfQorCitWZWN0
b3I8TWVkaWFRdWVyeUV4cCo+KiBDU1NQYXJzZXI6OnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHBM
aXN0KFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4qIGwpCit7CisgICAgQVNTRVJUKGwgPT0gbV9mbG9h
dGluZ01lZGlhUXVlcnlFeHBMaXN0KTsKKyAgICBtX2Zsb2F0aW5nTWVkaWFRdWVyeUV4cExpc3Qg
PSAwOworICAgIHJldHVybiBsOworfQorCitNZWRpYVF1ZXJ5KiBDU1NQYXJzZXI6OmNyZWF0ZUZs
b2F0aW5nTWVkaWFRdWVyeShNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHIsIGNvbnN0IFN0cmluZyYg
bWVkaWFUeXBlLCBWZWN0b3I8TWVkaWFRdWVyeUV4cCo+KiBleHBycykKK3sKKyAgICBkZWxldGUg
bV9mbG9hdGluZ01lZGlhUXVlcnk7CisgICAgbV9mbG9hdGluZ01lZGlhUXVlcnkgPSBuZXcgTWVk
aWFRdWVyeShyLCBtZWRpYVR5cGUsIGV4cHJzKTsKKyAgICByZXR1cm4gbV9mbG9hdGluZ01lZGlh
UXVlcnk7Cit9CisKK01lZGlhUXVlcnkqIENTU1BhcnNlcjo6c2lua0Zsb2F0aW5nTWVkaWFRdWVy
eShNZWRpYVF1ZXJ5KiBtcSkKK3sKKyAgICBBU1NFUlQobXEgPT0gbV9mbG9hdGluZ01lZGlhUXVl
cnkpOworICAgIG1fZmxvYXRpbmdNZWRpYVF1ZXJ5ID0gMDsKKyAgICByZXR1cm4gbXE7Cit9CisK
IE1lZGlhTGlzdCogQ1NTUGFyc2VyOjpjcmVhdGVNZWRpYUxpc3QoKQogewogICAgIE1lZGlhTGlz
dCogbGlzdCA9IG5ldyBNZWRpYUxpc3Q7CkBAIC0yOTM1LDYgKzMwMTksMTMgQEAgdHlwZWRlZiB1
bnNpZ25lZCBZWV9DSEFSOwogI2RlZmluZSBZWV9TVEFURV9FT0Yoc3RhdGUpIChZWV9FTkRfT0Zf
QlVGRkVSICsgc3RhdGUgKyAxKQogI2RlZmluZSB5eXRlcm1pbmF0ZSgpIHl5VG9rID0gRU5EX1RP
S0VOOyByZXR1cm4geXlUb2sKICNkZWZpbmUgWVlfRkFUQUxfRVJST1IoYSkKKy8vIFRoZSBsaW5l
IGJlbG93IGlzIG5lZWRlZCB0byBidWlsZCB0aGUgdG9rZW5pemVyIHdpdGggY29uZGl0b24gc3Rh
Y2suCisvLyBUaGUgbWFjcm8gaXMgdXNlZCBpbiB0aGUgdG9rZW5pemVyIGdyYW1tYXIgd2l0aCBs
aW5lcyBjb250YWluaW5nCisvLyBCRUdJTihtZWRpYXF1ZXJpZXMpIGFuZCBCRUdJTihpbml0aWFs
KS4geXlfc3RhcnQgYWN0cyBhcyBpbmRleCB0bworLy8gdG9rZW5pemVyIHRyYW5zaXRpb24gdGFi
bGUsIGFuZCAnbWVkaWFxdWVyaWVzJyBhbmQgJ2luaXRpYWwnIGFyZQorLy8gb2Zmc2V0IG11bHRp
cGxpZXJzIHRoYXQgc3BlY2lmeSB3aGljaCB0cmFuc2l0aW9ucyBhcmUgYWN0aXZlCisvLyBpbiB0
aGUgdG9rZW5pemVyIGR1cmluZyBpbiBlYWNoIGNvbmRpdGlvbiAodG9rZW5pemVyIHN0YXRlKQor
I2RlZmluZSBCRUdJTiB5eV9zdGFydCA9IDEgKyAyICoKIAogI2luY2x1ZGUgInRva2VuaXplci5j
cHAiCiAKSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvY3NzL01lZGlhUXVlcnkuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvTWVk
aWFRdWVyeS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDU1MgTWVk
aWEgUXVlcnkKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYgS2ltbW8gS2lubnVuZW4g
PGtpbW1vLnQua2lubnVuZW5Abm9raWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiTWVkaWFRdWVyeS5oIgorCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV4cC5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK01lZGlhUXVlcnk6Ok1lZGlhUXVlcnkoUmVzdHJpY3RvciByLCBjb25z
dCBTdHJpbmcmIG1lZGlhVHlwZSwgVmVjdG9yPE1lZGlhUXVlcnlFeHAqPiogZXhwcnMpCisgICAg
OiBtX3Jlc3RyaWN0b3IocikKKyAgICAsIG1fbWVkaWFUeXBlKG1lZGlhVHlwZSkKKyAgICAsIG1f
ZXhwcmVzc2lvbnMoZXhwcnMpCit7CisgICAgaWYgKCFtX2V4cHJlc3Npb25zKQorICAgICAgICBt
X2V4cHJlc3Npb25zID0gbmV3IFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj47Cit9CisKK01lZGlhUXVl
cnk6On5NZWRpYVF1ZXJ5KCkKK3sKKyAgICBpZiAobV9leHByZXNzaW9ucykgeworICAgICAgICBk
ZWxldGVBbGxWYWx1ZXMoKm1fZXhwcmVzc2lvbnMpOworICAgICAgICBkZWxldGUgbV9leHByZXNz
aW9uczsKKyAgICB9Cit9CisKK2Jvb2wgTWVkaWFRdWVyeTo6b3BlcmF0b3I9PShjb25zdCBNZWRp
YVF1ZXJ5JiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAobV9yZXN0cmljdG9yICE9IG90aGVyLm1f
cmVzdHJpY3RvcgorICAgICAgICB8fCBtX21lZGlhVHlwZSAhPSBvdGhlci5tX21lZGlhVHlwZQor
ICAgICAgICB8fCBtX2V4cHJlc3Npb25zLT5zaXplKCkgIT0gb3RoZXIubV9leHByZXNzaW9ucy0+
c2l6ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fZXhwcmVzc2lvbnMtPnNpemUoKTsgKytpKSB7CisgICAgICAgIE1lZGlhUXVlcnlFeHAq
IGV4cCA9IG1fZXhwcmVzc2lvbnMtPmF0KGkpOworICAgICAgICBNZWRpYVF1ZXJ5RXhwKiBvZXhw
ID0gb3RoZXIubV9leHByZXNzaW9ucy0+YXQoaSk7CisgICAgICAgIGlmICghKCpleHAgPT0gKm9l
eHApKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCitTdHJpbmcgTWVkaWFRdWVyeTo6Y3NzVGV4dCgpIGNvbnN0Cit7CisgICAgU3RyaW5n
IHRleHQ7CisgICAgc3dpdGNoIChtX3Jlc3RyaWN0b3IpIHsKKyAgICAgICAgY2FzZSBNZWRpYVF1
ZXJ5OjpPbmx5OgorICAgICAgICAgICAgdGV4dCArPSAib25seSAiOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgTWVkaWFRdWVyeTo6Tm90OgorICAgICAgICAgICAgdGV4dCArPSAi
bm90ICI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBNZWRpYVF1ZXJ5OjpOb25l
OgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHRleHQg
Kz0gbV9tZWRpYVR5cGU7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2V4cHJlc3Npb25z
LT5zaXplKCk7ICsraSkgeworICAgICAgICBNZWRpYVF1ZXJ5RXhwKiBleHAgPSBtX2V4cHJlc3Np
b25zLT5hdChpKTsKKyAgICAgICAgdGV4dCArPSAiIGFuZCAoIjsKKyAgICAgICAgdGV4dCArPSBl
eHAtPm1lZGlhRmVhdHVyZSgpOworICAgICAgICBpZiAoZXhwLT52YWx1ZSgpKSB7CisgICAgICAg
ICAgICB0ZXh0ICs9ICI6ICI7CisgICAgICAgICAgICB0ZXh0ICs9IGV4cC0+dmFsdWUoKS0+Y3Nz
VGV4dCgpOworICAgICAgICB9CisgICAgICAgIHRleHQgKz0gIikiOworICAgIH0KKyAgICByZXR1
cm4gdGV4dDsKK30KKworfSAvL25hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9jc3MvY3Nzc3R5bGVz
ZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL2Nzc3N0eWxlc2VsZWN0b3IuaAko
cmV2aXNpb24gMTQ2MDYpCisrKyBXZWJDb3JlL2Nzcy9jc3NzdHlsZXNlbGVjdG9yLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAgY2xhc3MgQ1NTU2VsZWN0b3I7CiBjbGFzcyBDU1NT
dHlsZVJ1bGU7CiBjbGFzcyBDU1NTdHlsZVNoZWV0OwogY2xhc3MgQ1NTVmFsdWU7CitjbGFzcyBN
ZWRpYVF1ZXJ5RXZhbHVhdG9yOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBFbGVtZW50OwogY2xh
c3MgRnJhbWU7CkBAIC05Myw3ICs5NCw3IEBAIGNsYXNzIFN0eWxlZEVsZW1lbnQ7CiAKICAgICAg
ICAgdm9pZCBpbml0RWxlbWVudEFuZFBzZXVkb1N0YXRlKEVsZW1lbnQqIGUpOwogICAgICAgICB2
b2lkIGluaXRGb3JTdHlsZVJlc29sdmUoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVudFN0
eWxlKTsKLSAgICAgICAgUmVuZGVyU3R5bGUgKnN0eWxlRm9yRWxlbWVudChFbGVtZW50KiwgUmVu
ZGVyU3R5bGUqIHBhcmVudFN0eWxlPTAsIGJvb2wgYWxsb3dTaGFyaW5nPXRydWUpOworICAgICAg
ICBSZW5kZXJTdHlsZSAqc3R5bGVGb3JFbGVtZW50KEVsZW1lbnQqLCBSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGU9MCwgYm9vbCBhbGxvd1NoYXJpbmc9dHJ1ZSwgYm9vbCByZXNvbHZlRm9yUm9vdERl
ZmF1bHQ9ZmFsc2UpOwogICAgICAgICBSZW5kZXJTdHlsZSogcHNldWRvU3R5bGVGb3JFbGVtZW50
KFJlbmRlclN0eWxlOjpQc2V1ZG9JZCwgRWxlbWVudCosIFJlbmRlclN0eWxlKiBwYXJlbnRTdHls
ZT0wKTsKIAogICAgICAgICBSZW5kZXJTdHlsZSogbG9jYXRlU2hhcmVkU3R5bGUoKTsKQEAgLTE3
Nyw3ICsxNzgsMTEgQEAgcHVibGljOgogIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgaW5p
dCgpOwotICAgICAgICAKKworICAgICAgICB2b2lkIG1hdGNoVUFSdWxlcyhpbnQmIGZpcnN0VUFS
dWxlLCBpbnQmIGxhc3RVQVJ1bGUpOworICAgICAgICB2b2lkIHVwZGF0ZUZvbnQoKTsKKyAgICAg
ICAgdm9pZCBjYWNoZUJvcmRlckFuZEJhY2tncm91bmQoKTsKKyAgICAgICAgIAogICAgICAgICB2
b2lkIG1hcEJhY2tncm91bmRBdHRhY2htZW50KEJhY2tncm91bmRMYXllciogbGF5ZXIsIENTU1Zh
bHVlKiB2YWx1ZSk7CiAgICAgICAgIHZvaWQgbWFwQmFja2dyb3VuZENsaXAoQmFja2dyb3VuZExh
eWVyKiBsYXllciwgQ1NTVmFsdWUqIHZhbHVlKTsKICAgICAgICAgdm9pZCBtYXBCYWNrZ3JvdW5k
T3JpZ2luKEJhY2tncm91bmRMYXllciogbGF5ZXIsIENTU1ZhbHVlKiB2YWx1ZSk7CkBAIC0yMDMs
NyArMjA4LDggQEAgcHVibGljOgogICAgICAgICBDU1NSdWxlTGlzdCogbV9ydWxlTGlzdDsKICAg
ICAgICAgYm9vbCBtX2NvbGxlY3RSdWxlc09ubHk7CiAKLSAgICAgICAgU3RyaW5nIG1fbWVkaWFU
eXBlOworICAgICAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yKiBtX21lZGl1bTsKKyAgICAgICAgUmVu
ZGVyU3R5bGUqIG1fcm9vdERlZmF1bHRTdHlsZTsKIAogICAgICAgICBSZW5kZXJTdHlsZTo6UHNl
dWRvSWQgZHluYW1pY1BzZXVkbzsKICAgICAgICAgCkluZGV4OiBXZWJDb3JlL2Nzcy9NZWRpYUZl
YXR1cmVOYW1lcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL01lZGlhRmVhdHVyZU5hbWVz
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDY1IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhl
IENTUyBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBB
cHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMw
NywgVVNBLgorICoKKyAqLworI2lmbmRlZiBNRURJQUZFQVRVUkVOQU1FU19ICisjZGVmaW5lIE1F
RElBRkVBVFVSRU5BTUVTX0gKKworI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7IG5hbWVzcGFjZSBNZWRpYUZlYXR1cmVOYW1lcyB7CisKKyNkZWZpbmUgQ1NT
X01FRElBUVVFUllfTkFNRVNfRk9SX0VBQ0hfTUVESUFGRUFUVVJFKG1hY3JvKSBcCisgICAgbWFj
cm8oY29sb3IsICJjb2xvciIpIFwKKyAgICBtYWNybyhncmlkLCAiZ3JpZCIpIFwKKyAgICBtYWNy
byhtb25vY2hyb21lLCAibW9ub2Nocm9tZSIpIFwKKyAgICBtYWNybyhoZWlnaHQsICJoZWlnaHQi
KSBcCisgICAgbWFjcm8od2lkdGgsICJ3aWR0aCIpIFwKKyAgICBtYWNybyhkZXZpY2VfYXNwZWN0
X3JhdGlvLCAiZGV2aWNlLWFzcGVjdC1yYXRpbyIpIFwKKyAgICBtYWNybyhkZXZpY2VfaGVpZ2h0
LCAiZGV2aWNlLWhlaWdodCIpIFwKKyAgICBtYWNybyhkZXZpY2Vfd2lkdGgsICJkZXZpY2Utd2lk
dGgiKSBcCisgICAgbWFjcm8obWF4X2NvbG9yLCAibWF4LWNvbG9yIikgXAorICAgIG1hY3JvKG1h
eF9kZXZpY2VfYXNwZWN0X3JhdGlvLCAibWF4LWRldmljZS1hc3BlY3QtcmF0aW8iKSBcCisgICAg
bWFjcm8obWF4X2RldmljZV9oZWlnaHQsICJtYXgtZGV2aWNlLWhlaWdodCIpIFwKKyAgICBtYWNy
byhtYXhfZGV2aWNlX3dpZHRoLCAibWF4LWRldmljZS13aWR0aCIpIFwKKyAgICBtYWNybyhtYXhf
aGVpZ2h0LCAibWF4LWhlaWdodCIpIFwKKyAgICBtYWNybyhtYXhfbW9ub2Nocm9tZSwgIm1heC1t
b25vY2hyb21lIikgXAorICAgIG1hY3JvKG1heF93aWR0aCwgIm1heC13aWR0aCIpIFwKKyAgICBt
YWNybyhtaW5fY29sb3IsICJtaW4tY29sb3IiKSBcCisgICAgbWFjcm8obWluX2RldmljZV9hc3Bl
Y3RfcmF0aW8sICJtaW4tZGV2aWNlLWFzcGVjdC1yYXRpbyIpIFwKKyAgICBtYWNybyhtaW5fZGV2
aWNlX2hlaWdodCwgIm1pbi1kZXZpY2UtaGVpZ2h0IikgXAorICAgIG1hY3JvKG1pbl9kZXZpY2Vf
d2lkdGgsICJtaW4tZGV2aWNlLXdpZHRoIikgXAorICAgIG1hY3JvKG1pbl9oZWlnaHQsICJtaW4t
aGVpZ2h0IikgXAorICAgIG1hY3JvKG1pbl9tb25vY2hyb21lLCAibWluLW1vbm9jaHJvbWUiKSBc
CisgICAgbWFjcm8obWluX3dpZHRoLCAibWluLXdpZHRoIikgXAorLy8gZW5kIG9mIG1hY3JvCisK
KyNpZiAhQ1NTX01FRElBUVVFUllfTkFNRVNfSElERV9HTE9CQUxTCisgICAgI2RlZmluZSBDU1Nf
TUVESUFRVUVSWV9OQU1FU19ERUNMQVJFKG5hbWUsIHN0cikgZXh0ZXJuIGNvbnN0IEF0b21pY1N0
cmluZyBuYW1lIyNNZWRpYUZlYXR1cmU7CisgICAgQ1NTX01FRElBUVVFUllfTkFNRVNfRk9SX0VB
Q0hfTUVESUFGRUFUVVJFKENTU19NRURJQVFVRVJZX05BTUVTX0RFQ0xBUkUpCisgICAgI3VuZGVm
IENTU19NRURJQVFVRVJZX05BTUVTX0RFQ0xBUkUKKyNlbmRpZgorCisgICAgIHZvaWQgaW5pdCgp
OworfSB9CisKKyNlbmRpZgorCisKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkJKHJldmlzaW9uIDE0NjA2KQorKysg
V2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CSh3b3JraW5nIGNvcHkpCkBAIC0zOCw2ICszOCw4IEBA
CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8c3Ry
aW5nLmg+CisjaW5jbHVkZSAiTWVkaWFRdWVyeS5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnlFeHAu
aCIKIAogI2lmIFNWR19TVVBQT1JUCiAjaW5jbHVkZSAia3N2Z2Nzc3Byb3BlcnRpZXMuaCIKQEAg
LTEzOSw2ICsxNDEsMTEgQEAgc3RhdGljIGlubGluZSBpbnQgZ2V0VmFsdWVJRChjb25zdCBjaGFy
KgogICAgIGNoYXIgdG9rOwogICAgIFZhbHVlIHZhbHVlOwogICAgIFZhbHVlTGlzdCogdmFsdWVM
aXN0OworCisgICAgTWVkaWFRdWVyeSogbWVkaWFRdWVyeTsKKyAgICBNZWRpYVF1ZXJ5RXhwKiBt
ZWRpYVF1ZXJ5RXhwOworICAgIFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4qIG1lZGlhUXVlcnlFeHBM
aXN0OworICAgIE1lZGlhUXVlcnk6OlJlc3RyaWN0b3IgbWVkaWFRdWVyeVJlc3RyaWN0b3I7CiB9
CiAKICV7CkBAIC0xODEsOCArMTg4LDEyIEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQRSAq
eXlsdmFsKSB7IHIKICV0b2tlbiBXRUJLSVRfUlVMRV9TWU0KICV0b2tlbiBXRUJLSVRfREVDTFNf
U1lNCiAldG9rZW4gV0VCS0lUX1ZBTFVFX1NZTQorJXRva2VuIFdFQktJVF9NRURJQVFVRVJZX1NZ
TQogCiAldG9rZW4gSU1QT1JUQU5UX1NZTQorJXRva2VuIE1FRElBX09OTFkKKyV0b2tlbiBNRURJ
QV9OT1QKKyV0b2tlbiBNRURJQV9BTkQKIAogJXRva2VuIDx2YWw+IFFFTVMKICV0b2tlbiA8dmFs
PiBFTVMKQEAgLTIzMSw4ICsyNDIsMTUgQEAgc3RhdGljIGludCBjc3N5eWxleChZWVNUWVBFICp5
eWx2YWwpIHsgcgogJXR5cGUgPHN0cmluZz4gbWVkaXVtCiAldHlwZSA8c3RyaW5nPiBoZXhjb2xv
cgogCisldHlwZSA8c3RyaW5nPiBtZWRpYV9mZWF0dXJlCiAldHlwZSA8bWVkaWFMaXN0PiBtZWRp
YV9saXN0CiAldHlwZSA8bWVkaWFMaXN0PiBtYXliZV9tZWRpYV9saXN0CisldHlwZSA8bWVkaWFR
dWVyeT4gbWVkaWFfcXVlcnkKKyV0eXBlIDxtZWRpYVF1ZXJ5UmVzdHJpY3Rvcj4gbWF5YmVfbWVk
aWFfcmVzdHJpY3RvcgorJXR5cGUgPHZhbHVlTGlzdD4gbWF5YmVfbWVkaWFfdmFsdWUKKyV0eXBl
IDxtZWRpYVF1ZXJ5RXhwPiBtZWRpYV9xdWVyeV9leHAKKyV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlz
dD4gbWVkaWFfcXVlcnlfZXhwX2xpc3QKKyV0eXBlIDxtZWRpYVF1ZXJ5RXhwTGlzdD4gbWF5YmVf
bWVkaWFfcXVlcnlfZXhwX2xpc3QKIAogJXR5cGUgPHJ1bGVMaXN0PiBydWxlc2V0X2xpc3QKIApA
QCAtMjcyLDYgKzI5MCw3IEBAIHN0eWxlc2hlZXQ6CiAgIHwgd2Via2l0X3J1bGUgbWF5YmVfc3Bh
Y2UKICAgfCB3ZWJraXRfZGVjbHMgbWF5YmVfc3BhY2UKICAgfCB3ZWJraXRfdmFsdWUgbWF5YmVf
c3BhY2UKKyAgfCB3ZWJraXRfbWVkaWFxdWVyeSBtYXliZV9zcGFjZQogICA7CiAKIHdlYmtpdF9y
dWxlOgpAQCAtMzAwLDYgKzMxOSwxMyBAQCB3ZWJraXRfdmFsdWU6CiAgICAgfQogOwogCit3ZWJr
aXRfbWVkaWFxdWVyeToKKyAgICAgV0VCS0lUX01FRElBUVVFUllfU1lNIFdISVRFU1BBQ0UgbWF5
YmVfc3BhY2UgbWVkaWFfcXVlcnkgJ30nIHsKKyAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRp
Y19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CisgICAgICAgICBwLT5tZWRpYVF1ZXJ5ID0gcC0+
c2lua0Zsb2F0aW5nTWVkaWFRdWVyeSgkNCk7CisgICAgIH0KKzsKKwogbWF5YmVfc3BhY2U6CiAg
ICAgLyogZW1wdHkgKi8gJXByZWMgVU5JTVBPUlRBTlRfVE9LCiAgIHwgbWF5YmVfc3BhY2UgV0hJ
VEVTUEFDRQpAQCAtMzgzLDIzICs0MDksODQgQEAgU1RSSU5HCiB8IFVSSQogOwogCittZWRpYV9m
ZWF0dXJlOgorICAgIElERU5UIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJCQgPSAkMTsKKyAgICB9
CisgICAgOworCittYXliZV9tZWRpYV92YWx1ZToKKyAgICAvKmVtcHR5Ki8geworICAgICAgICAk
JCA9IDA7CisgICAgfQorICAgIHwgJzonIG1heWJlX3NwYWNlIGV4cHIgbWF5YmVfc3BhY2Ugewor
ICAgICAgICAkJCA9ICQzOworICAgIH0KKyAgICA7CisKK21lZGlhX3F1ZXJ5X2V4cDoKKyAgICBN
RURJQV9BTkQgbWF5YmVfc3BhY2UgJygnIG1heWJlX3NwYWNlIG1lZGlhX2ZlYXR1cmUgbWF5YmVf
c3BhY2UgbWF5YmVfbWVkaWFfdmFsdWUgJyknIG1heWJlX3NwYWNlIHsKKyAgICAgICAgJDUubG93
ZXIoKTsKKyAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVh
dGVGbG9hdGluZ01lZGlhUXVlcnlFeHAoYXRvbWljU3RyaW5nKCQ1KSwgJDcpOworICAgIH0KKyAg
ICA7CisKK21lZGlhX3F1ZXJ5X2V4cF9saXN0OgorICAgIG1lZGlhX3F1ZXJ5X2V4cCB7CisgICAg
ICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAg
JCQgPSBwLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCk7CisgICAgICAkJC0+YXBw
ZW5kKHAtPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHAoJDEpKTsKKyAgICB9CisgICAgfCBtZWRp
YV9xdWVyeV9leHBfbGlzdCBtZWRpYV9xdWVyeV9leHAgeworICAgICAgJCQgPSAkMTsKKyAgICAg
ICQkLT5hcHBlbmQoc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+c2lua0Zsb2F0aW5n
TWVkaWFRdWVyeUV4cCgkMikpOworICAgIH0KKyAgICA7CisKK21heWJlX21lZGlhX3F1ZXJ5X2V4
cF9saXN0OgorICAgIC8qZW1wdHkqLyB7CisgICAgICAgICQkID0gc3RhdGljX2Nhc3Q8Q1NTUGFy
c2VyKj4ocGFyc2VyKS0+Y3JlYXRlRmxvYXRpbmdNZWRpYVF1ZXJ5RXhwTGlzdCgpOworICAgIH0K
KyAgICB8IG1lZGlhX3F1ZXJ5X2V4cF9saXN0CisgICAgOworCittYXliZV9tZWRpYV9yZXN0cmlj
dG9yOgorICAgIC8qZW1wdHkqLyB7CisgICAgICAgICQkID0gTWVkaWFRdWVyeTo6Tm9uZTsKKyAg
ICB9CisgICAgfCBNRURJQV9PTkxZIHsKKyAgICAgICAgJCQgPSBNZWRpYVF1ZXJ5OjpPbmx5Owor
ICAgIH0KKyAgICB8IE1FRElBX05PVCB7CisgICAgICAgICQkID0gTWVkaWFRdWVyeTo6Tm90Owor
ICAgIH0KKyAgICA7CisKK21lZGlhX3F1ZXJ5OgorICAgIG1heWJlX21lZGlhX3Jlc3RyaWN0b3Ig
bWF5YmVfc3BhY2UgbWVkaXVtIG1heWJlX21lZGlhX3F1ZXJ5X2V4cF9saXN0IHsKKyAgICAgICAg
Q1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKKyAgICAgICAg
JDMubG93ZXIoKTsKKyAgICAgICAgJCQgPSBwLT5jcmVhdGVGbG9hdGluZ01lZGlhUXVlcnkoJDEs
IGRvbVN0cmluZygkMyksIHAtPnNpbmtGbG9hdGluZ01lZGlhUXVlcnlFeHBMaXN0KCQ0KSk7Cisg
ICAgfQorICAgIDsKKwogbWF5YmVfbWVkaWFfbGlzdDoKICAgICAgLyogZW1wdHkgKi8gewogICAg
ICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZU1lZGlhTGlz
dCgpOwogICAgICB9CiAgICAgIHwgbWVkaWFfbGlzdAotOwotCisgICAgIDsKIAogbWVkaWFfbGlz
dDoKLSAgICBtZWRpdW0gewotICAgICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBh
cnNlciktPmNyZWF0ZU1lZGlhTGlzdCgpOwotICAgICAgICAkJC0+YXBwZW5kTWVkaXVtKGRvbVN0
cmluZygkMSkubG93ZXIoKSk7CisgICAgbWVkaWFfcXVlcnkgeworICAgICAgICBDU1NQYXJzZXIq
IHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOworICAgICAgICAkJCA9IHAtPmNy
ZWF0ZU1lZGlhTGlzdCgpOworICAgICAgICAkJC0+YXBwZW5kTWVkaWFRdWVyeShwLT5zaW5rRmxv
YXRpbmdNZWRpYVF1ZXJ5KCQxKSk7CiAgICAgfQotICAgIHwgbWVkaWFfbGlzdCAnLCcgbWF5YmVf
c3BhY2UgbWVkaXVtIHsKKyAgICB8IG1lZGlhX2xpc3QgJywnIG1heWJlX3NwYWNlIG1lZGlhX3F1
ZXJ5IHsKICAgICAgICAgJCQgPSAkMTsKICAgICAgICAgaWYgKCQkKQotICAgICAgICAgICAgJCQt
PmFwcGVuZE1lZGl1bShkb21TdHJpbmcoJDQpLmxvd2VyKCkpOworICAgICAgICAgICAgJCQtPmFw
cGVuZE1lZGlhUXVlcnkoc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+c2lua0Zsb2F0
aW5nTWVkaWFRdWVyeSgkNCkpOwogICAgIH0KICAgICB8IG1lZGlhX2xpc3QgZXJyb3IgewogICAg
ICAgICAkJCA9IDA7CkluZGV4OiBXZWJDb3JlL2Nzcy9NZWRpYUZlYXR1cmVOYW1lcy5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9jc3MvTWVkaWFGZWF0dXJlTmFtZXMuY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDUzIEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1l
bnRhdGlvbiBmb3IgS0RFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRl
ciwgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs
ZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBBVk9JRF9TVEFUSUNfQ09OU1RSVUNU
T1JTCisjZGVmaW5lIENTU19NRURJQVFVRVJZX05BTUVTX0hJREVfR0xPQkFMUyAxCisjZW5kaWYK
KworI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCisjaW5jbHVkZSAiU3RhdGljQ29uc3Ry
dWN0b3JzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsgbmFtZXNwYWNlIE1lZGlhRmVhdHVyZU5h
bWVzIHsKKworI2RlZmluZSBERUZJTkVfTUVESUFGRUFUVVJFX0dMT0JBTChuYW1lLCBzdHIpIFwK
KyAgICBERUZJTkVfR0xPQkFMKEF0b21pY1N0cmluZywgbmFtZSMjTWVkaWFGZWF0dXJlLCBzdHIp
CitDU1NfTUVESUFRVUVSWV9OQU1FU19GT1JfRUFDSF9NRURJQUZFQVRVUkUoREVGSU5FX01FRElB
RkVBVFVSRV9HTE9CQUwpCisjdW5kZWYgREVGSU5FX01FRElBRkVBVFVSRV9HTE9CQUwKKwordm9p
ZCBpbml0KCkKK3sKKyAgICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZDsKKyAgICBpZiAoIWluaXRp
YWxpemVkKSB7CisgICAgICAgLy8gVXNlIHBsYWNlbWVudCBuZXcgdG8gaW5pdGlhbGl6ZSB0aGUg
Z2xvYmFscy4KKworICAgICAgICBBdG9taWNTdHJpbmc6OmluaXQoKTsKKyAgICAgICAgI2RlZmlu
ZSBJTklUSUFMSVpFX0dMT0JBTChuYW1lLCBzdHIpIG5ldyAoKHZvaWQqKSZuYW1lIyNNZWRpYUZl
YXR1cmUpIEF0b21pY1N0cmluZyhzdHIpOworICAgICAgICBDU1NfTUVESUFRVUVSWV9OQU1FU19G
T1JfRUFDSF9NRURJQUZFQVRVUkUoSU5JVElBTElaRV9HTE9CQUwpCisgICAgICAgICN1bmRlZiBJ
TklUSUFMSVpFX0dMT0JBTAorICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7CisgICAgfQorfQor
Cit9IH0KSW5kZXg6IFdlYkNvcmUvY3NzL01lZGlhTGlzdC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvY3NzL01lZGlhTGlzdC5oCShyZXZpc2lvbiAxNDYwNikKKysrIFdlYkNvcmUvY3NzL01lZGlh
TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCw0NiArMjQsNDIgQEAKICNkZWZpbmUgTWVkaWFM
aXN0X0gKIAogI2luY2x1ZGUgIlN0eWxlQmFzZS5oIgotI2luY2x1ZGUgIkRlcHJlY2F0ZWRWYWx1
ZUxpc3QuaCIKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewotCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2Rl
OwogY2xhc3MgQ1NTU3R5bGVTaGVldDsKK2NsYXNzIE1lZGlhUXVlcnk7CiBjbGFzcyBDU1NSdWxl
OwogCiBjbGFzcyBNZWRpYUxpc3QgOiBwdWJsaWMgU3R5bGVCYXNlCiB7CiBwdWJsaWM6Ci0gICAg
TWVkaWFMaXN0KCkgOiBTdHlsZUJhc2UoMCkge30KLSAgICBNZWRpYUxpc3QoQ1NTU3R5bGVTaGVl
dCogcGFyZW50U2hlZXQpOwotICAgIE1lZGlhTGlzdChDU1NTdHlsZVNoZWV0KiBwYXJlbnRTaGVl
dCwgY29uc3QgU3RyaW5nJiBtZWRpYSk7Ci0gICAgTWVkaWFMaXN0KENTU1J1bGUqIHBhcmVudFJ1
bGUsIGNvbnN0IFN0cmluZyYgbWVkaWEpOworICAgIE1lZGlhTGlzdChib29sIGZhbGxiYWNrVG9E
ZXNjcmlwdGlvbiA9IGZhbHNlKSA6IFN0eWxlQmFzZSgwKSwgbV9mYWxsYmFjayhmYWxsYmFja1Rv
RGVzY3JpcHRpb24pIHt9CisgICAgTWVkaWFMaXN0KENTU1N0eWxlU2hlZXQqIHBhcmVudFNoZWV0
LCBib29sIGZhbGxiYWNrVG9EZXNjcmlwdGlvbiA9IGZhbHNlKTsKKyAgICBNZWRpYUxpc3QoQ1NT
U3R5bGVTaGVldCogcGFyZW50U2hlZXQsIGNvbnN0IFN0cmluZyYgbWVkaWEsIGJvb2wgZmFsbGJh
Y2tUb0Rlc2NyaXB0aW9uID0gZmFsc2UpOworICAgIE1lZGlhTGlzdChDU1NSdWxlKiBwYXJlbnRS
dWxlLCBjb25zdCBTdHJpbmcmIG1lZGlhLCBib29sIGZhbGxiYWNrVG9EZXNjcmlwdGlvbiA9IGZh
bHNlKTsKKyAgICB+TWVkaWFMaXN0KCk7CiAKICAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUxpc3Qo
KSB7IHJldHVybiB0cnVlOyB9CiAKICAgICBDU1NTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0
KCkgY29uc3Q7CiAgICAgQ1NTUnVsZSogcGFyZW50UnVsZSgpIGNvbnN0OwotICAgIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbHN0TWVkaWEuY291bnQoKTsgfQotICAgIFN0cmlu
ZyBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX2xzdE1lZGlhW2luZGV4XTsg
fQotICAgIHZvaWQgZGVsZXRlTWVkaXVtKGNvbnN0IFN0cmluZyYgb2xkTWVkaXVtKTsKLSAgICB2
b2lkIGFwcGVuZE1lZGl1bShjb25zdCBTdHJpbmcmIG5ld01lZGl1bSkgeyBtX2xzdE1lZGlhLmFw
cGVuZChuZXdNZWRpdW0pOyB9CisgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
KHVuc2lnbmVkKSBtX3F1ZXJpZXMuc2l6ZSgpOyB9CisgICAgU3RyaW5nIGl0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0OworICAgIHZvaWQgZGVsZXRlTWVkaXVtKGNvbnN0IFN0cmluZyYgb2xkTWVk
aXVtLCBFeGNlcHRpb25Db2RlJik7CisgICAgdm9pZCBhcHBlbmRNZWRpdW0oY29uc3QgU3RyaW5n
JiBuZXdNZWRpdW0sIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIFN0cmluZyBtZWRpYVRleHQoKSBj
b25zdDsKLSAgICB2b2lkIHNldE1lZGlhVGV4dChjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIHNl
dE1lZGlhVGV4dChjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJnhvKTsKIAotICAgIC8qKgot
ICAgICAqIENoZWNrIGlmIHRoZSBsaXN0IGNvbnRhaW5zIGVpdGhlciB0aGUgcmVxdWVzdGVkIG1l
ZGl1bSwgb3IgdGhlCi0gICAgICogY2F0Y2gtYWxsICJhbGwiIG1lZGlhIHR5cGUuIFJldHVybnMg
dHJ1ZSB3aGVuIGZvdW5kLCBmYWxzZSBvdGhlcndpc2UuCi0gICAgICogU2luY2Ugbm90IHNwZWNp
ZnlpbmcgbWVkaWEgdHlwZXMgc2hvdWxkIGJlIHRyZWF0ZWQgYXMgImFsbCIgYWNjb3JkaW5nCi0g
ICAgICogdG8gRE9NIHNwZWNzLCBhbiBlbXB0eSBsaXN0IGFsd2F5cyByZXR1cm5zIHRydWUuCi0g
ICAgICoKLSAgICAgKiBfTk9UXyBwYXJ0IG9mIHRoZSBET00hCi0gICAgICovCi0gICAgYm9vbCBj
b250YWlucyhjb25zdCBTdHJpbmcmIG1lZGl1bSkgY29uc3Q7CisgICAgdm9pZCBhcHBlbmRNZWRp
YVF1ZXJ5KE1lZGlhUXVlcnkqIG1lZGlhUXVlcnkpOworICAgIGNvbnN0IFZlY3RvcjxNZWRpYVF1
ZXJ5Kj4qIG1lZGlhUXVlcmllcygpIGNvbnN0IHsgcmV0dXJuICZtX3F1ZXJpZXM7IH0KIAogcHJv
dGVjdGVkOgotICAgIERlcHJlY2F0ZWRWYWx1ZUxpc3Q8U3RyaW5nPiBtX2xzdE1lZGlhOworICAg
IFZlY3RvcjxNZWRpYVF1ZXJ5Kj4gbV9xdWVyaWVzOworICAgIGJvb2wgbV9mYWxsYmFjazsgLy8g
dHJ1ZSBpZiBmYWlsZWQgbWVkaWEgcXVlcnkgcGFyc2luZyBzaG91bGQgZmFsbGJhY2sgdG8gbWVk
aWEgZGVzY3JpcHRpb24gcGFyc2luZwogfTsKIAogfSAvLyBuYW1lc3BhY2UKSW5kZXg6IFdlYkNv
cmUvY3NzL01lZGlhUXVlcnlFeHAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL01lZGlh
UXVlcnlFeHAuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV4cC5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBDU1MgTWVkaWEgUXVlcnkK
KyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgS2ltbW8gS2lubnVuZW4gPGtpbW1vLnQua2lubnVu
ZW5Abm9raWEuY29tPi4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBBVVRIT1IgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBD
T01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeUV4
cC5oIgorCisjaW5jbHVkZSAiY3NzcGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFs
dWUuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitNZWRpYVF1ZXJ5RXhwOjpNZWRpYVF1ZXJ5RXhwKGNvbnN0IEF0b21pY1N0cmluZyYgbWVkaWFG
ZWF0dXJlLCBWYWx1ZUxpc3QqIHZhbHVlTGlzdCkKKyAgICA6IG1fbWVkaWFGZWF0dXJlKG1lZGlh
RmVhdHVyZSkKKyAgICAsIG1fdmFsdWUoMCkKK3sKKyAgICBpZiAodmFsdWVMaXN0KSB7CisgICAg
ICAgIGlmICh2YWx1ZUxpc3QtPnNpemUoKSA9PSAxKSB7CisgICAgICAgICAgICBWYWx1ZSogdmFs
dWUgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlLT5pZCAh
PSAwKQorICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBuZXcgQ1NTUHJpbWl0aXZlVmFsdWUodmFs
dWUtPmlkKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfU1RSSU5HKQorICAgICAgICAgICAgICAgIG1fdmFsdWUgPSBuZXcgQ1NTUHJp
bWl0aXZlVmFsdWUoZG9tU3RyaW5nKHZhbHVlLT5zdHJpbmcpLCAoQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlcykgdmFsdWUtPnVuaXQpOworICAgICAgICAgICAgZWxzZSBpZiAodmFsdWUtPnVu
aXQgPj0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIgJiYKKyAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZS0+dW5pdCA8PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0tIWikKKyAgICAgICAg
ICAgICAgICBtX3ZhbHVlID0gbmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLT5mVmFsdWUsIChD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzKSB2YWx1ZS0+dW5pdCk7CisKKyAgICAgICAgICAg
IHZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICB9IGVsc2UgaWYgKHZhbHVlTGlzdC0+c2l6ZSgp
ID4gMSkgeworICAgICAgICAgICAgLy8gY3JlYXRlIGxpc3Qgb2YgdmFsdWVzCisgICAgICAgICAg
ICAvLyBjdXJyZW50bHkgYWNjZXB0cyBvbmx5IDxpbnRlZ2VyPi88aW50ZWdlcj4KKworICAgICAg
ICAgICAgQ1NTVmFsdWVMaXN0KiBsaXN0ID0gbmV3IENTU1ZhbHVlTGlzdCgpOworICAgICAgICAg
ICAgVmFsdWUqIHZhbHVlID0gMDsKKyAgICAgICAgICAgIGJvb2wgaXNWYWxpZCA9IHRydWU7CisK
KyAgICAgICAgICAgIHdoaWxlICgodmFsdWUgPSB2YWx1ZUxpc3QtPmN1cnJlbnQoKSkgJiYgaXNW
YWxpZCkgeworICAgICAgICAgICAgICAgIGlmICh2YWx1ZS0+dW5pdCA9PSBWYWx1ZTo6T3BlcmF0
b3IgJiYgdmFsdWUtPmlWYWx1ZSA9PSAnLycpCisgICAgICAgICAgICAgICAgICAgIGxpc3QtPmFw
cGVuZChuZXcgQ1NTUHJpbWl0aXZlVmFsdWUoIi8iLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NU
UklORykpOworICAgICAgICAgICAgICAgIGVsc2UgaWYgKHZhbHVlLT51bml0ID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfTlVNQkVSKQorICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQo
bmV3IENTU1ByaW1pdGl2ZVZhbHVlKHZhbHVlLT5mVmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBp
c1ZhbGlkID0gZmFsc2U7CisKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlTGlzdC0+bmV4
dCgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNWYWxpZCkKKyAgICAgICAg
ICAgICAgICBtX3ZhbHVlID0gbGlzdDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBkZWxldGUgbGlzdDsKKyAgICAgICAgfQorICAgIH0KK30KKworTWVkaWFRdWVyeUV4cDo6fk1l
ZGlhUXVlcnlFeHAoKQoreworICAgIGRlbGV0ZSBtX3ZhbHVlOworfQorCit9IC8vIG5hbWVzcGFj
ZQpJbmRleDogV2ViQ29yZS9jc3MvdG9rZW5pemVyLmZsZXgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9jc3MvdG9rZW5pemVyLmZsZXgJKHJldmlzaW9uIDE0NjA2KQorKysgV2ViQ29yZS9jc3MvdG9r
ZW5pemVyLmZsZXgJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw4IEBACiAlb3B0aW9uIGNhc2Ut
aW5zZW5zaXRpdmUKICVvcHRpb24gbm95eXdyYXAKICVvcHRpb24gOGJpdAorJW9wdGlvbiBzdGFj
aworJXMgbWVkaWFxdWVyeQogCiBoICAgICAgICAgICAgICAgWzAtOWEtZkEtRl0KIG5vbmFzY2lp
ICAgICAgICBbXDIwMC1cMzc3XQpAQCAtMzQsNiArMzYsOSBAQCByYW5nZSAgICAgICAgICAgXD97
MSw2fXx7aH0oXD97MCw1fXx7aH0oCiAiXj0iICAgICAgICAgICAgICAgICAgICB7eXlUb2sgPSBC
RUdJTlNXSVRIOyByZXR1cm4geXlUb2s7fQogIiQ9IiAgICAgICAgICAgICAgICAgICAge3l5VG9r
ID0gRU5EU1dJVEg7IHJldHVybiB5eVRvazt9CiAiKj0iICAgICAgICAgICAgICAgICAgICB7eXlU
b2sgPSBDT05UQUlOUzsgcmV0dXJuIHl5VG9rO30KKzxtZWRpYXF1ZXJ5PiJub3QiICAgICAgIHt5
eVRvayA9IE1FRElBX05PVDsgcmV0dXJuIHl5VG9rO30KKzxtZWRpYXF1ZXJ5PiJvbmx5IiAgICAg
IHt5eVRvayA9IE1FRElBX09OTFk7IHJldHVybiB5eVRvazt9Cis8bWVkaWFxdWVyeT4iYW5kIiAg
ICAgICB7eXlUb2sgPSBNRURJQV9BTkQ7IHJldHVybiB5eVRvazt9CiAKIHtzdHJpbmd9ICAgICAg
ICAgICAgICAgIHt5eVRvayA9IFNUUklORzsgcmV0dXJuIHl5VG9rO30KIApAQCAtNDEsMTUgKzQ2
LDE2IEBAIHJhbmdlICAgICAgICAgICBcP3sxLDZ9fHtofShcP3swLDV9fHtofSgKIAogIiMie25h
bWV9ICAgICAgICAgICAgICAge3l5VG9rID0gSEFTSDsgcmV0dXJuIHl5VG9rO30KIAotIkBpbXBv
cnQiICAgICAgICAgICAgICAge3l5VG9rID0gSU1QT1JUX1NZTTsgcmV0dXJuIHl5VG9rO30KKyJA
aW1wb3J0IiAgICAgICAgICAgICAgIHtCRUdJTihtZWRpYXF1ZXJ5KTsgeXlUb2sgPSBJTVBPUlRf
U1lNOyByZXR1cm4geXlUb2s7fQogIkBwYWdlIiAgICAgICAgICAgICAgICAge3l5VG9rID0gUEFH
RV9TWU07IHJldHVybiB5eVRvazt9Ci0iQG1lZGlhIiAgICAgICAgICAgICAgICB7eXlUb2sgPSBN
RURJQV9TWU07IHJldHVybiB5eVRvazt9CisiQG1lZGlhIiAgICAgICAgICAgICAgICB7QkVHSU4o
bWVkaWFxdWVyeSk7IHl5VG9rID0gTUVESUFfU1lNOyByZXR1cm4geXlUb2s7fQogIkBmb250LWZh
Y2UiICAgICAgICAgICAge3l5VG9rID0gRk9OVF9GQUNFX1NZTTsgcmV0dXJuIHl5VG9rO30KICJA
Y2hhcnNldCIgICAgICAgICAgICAgIHt5eVRvayA9IENIQVJTRVRfU1lNOyByZXR1cm4geXlUb2s7
fQogIkBuYW1lc3BhY2UiICAgICAgICAgICAge3l5VG9rID0gTkFNRVNQQUNFX1NZTTsgcmV0dXJu
IHl5VG9rOyB9CiAiQC13ZWJraXQtcnVsZSIgICAge3l5VG9rID0gV0VCS0lUX1JVTEVfU1lNOyBy
ZXR1cm4geXlUb2s7IH0KICJALXdlYmtpdC1kZWNscyIgICB7eXlUb2sgPSBXRUJLSVRfREVDTFNf
U1lNOyByZXR1cm4geXlUb2s7IH0KICJALXdlYmtpdC12YWx1ZSIgICB7eXlUb2sgPSBXRUJLSVRf
VkFMVUVfU1lNOyByZXR1cm4geXlUb2s7IH0KKyJALXdlYmtpdC1tZWRpYXF1ZXJ5IiAgIHtCRUdJ
TihtZWRpYXF1ZXJ5KTsgeXlUb2sgPSBXRUJLSVRfTUVESUFRVUVSWV9TWU07IHJldHVybiB5eVRv
azsgfQogCiAiISJ7d30iaW1wb3J0YW50IiAgICAgICAgIHt5eVRvayA9IElNUE9SVEFOVF9TWU07
IHJldHVybiB5eVRvazt9CiAKQEAgLTgxLDYgKzg3LDggQEAgcmFuZ2UgICAgICAgICAgIFw/ezEs
Nn18e2h9KFw/ezAsNX18e2h9KAogVVwre3JhbmdlfSAgICAgICAgICAgICAge3l5VG9rID0gVU5J
Q09ERVJBTkdFOyByZXR1cm4geXlUb2s7fQogVVwre2h9ezEsNn0te2h9ezEsNn0gICAge3l5VG9r
ID0gVU5JQ09ERVJBTkdFOyByZXR1cm4geXlUb2s7fQogCis8bWVkaWFxdWVyeT4ieyIgICAgICAg
ICB8Cis8bWVkaWFxdWVyeT4iOyIgICAgICAgICB7QkVHSU4oSU5JVElBTCk7IHl5VG9rID0gKnl5
dGV4dDsgcmV0dXJuIHl5VG9rOyB9CiAuICAgICAgICAgICAgICAgICAgICAgICB7eXlUb2sgPSAq
eXl0ZXh0OyByZXR1cm4geXlUb2s7fQogCiAlJQpJbmRleDogV2ViQ29yZS9jc3MvTWVkaWFRdWVy
eUV2YWx1YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1
YXRvci5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9y
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNjQgQEAKKy8qCisgKiBDU1MgTWVkaWEgUXVl
cnkgRXZhbHVhdG9yCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEtpbW1vIEtpbm51bmVuIDxr
aW1tby50Lmtpbm51bmVuQG5va2lhLmNvbT4uCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
TWVkaWFRdWVyeUV2YWx1YXRvci5oIgorCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIK
KyNpbmNsdWRlICJDU1NWYWx1ZUxpc3QuaCIKKyNpbmNsdWRlICJNZWRpYUZlYXR1cmVOYW1lcy5o
IgorI2luY2x1ZGUgIk1lZGlhTGlzdC5oIgorI2luY2x1ZGUgIk1lZGlhUXVlcnkuaCIKKyNpbmNs
dWRlICJNZWRpYVF1ZXJ5RXhwLmgiCisjaW5jbHVkZSAicmVuZGVyaW5nL3JlbmRlcl9zdHlsZS5o
IgorI2luY2x1ZGUgInBhZ2UvRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiU2NyZWVuLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewordXNpbmcgbmFtZXNw
YWNlIE1lZGlhRmVhdHVyZU5hbWVzOworCitlbnVtIE1lZGlhRmVhdHVyZVByZWZpeAoreworICAg
IE1pblByZWZpeCwgTWF4UHJlZml4LCBOb1ByZWZpeAorfTsKKwordHlwZWRlZiBib29sICgqRXZh
bEZ1bmMpKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFtZVZpZXcqIHZp
ZXcsICBNZWRpYUZlYXR1cmVQcmVmaXggb3ApOwordHlwZWRlZiBIYXNoTWFwPEF0b21pY1N0cmlu
Z0ltcGwqLCBFdmFsRnVuYz4gRnVuY3Rpb25NYXA7CitzdGF0aWMgRnVuY3Rpb25NYXAqIGdGdW5j
dGlvbk1hcDsKKworLyoKKyAqIEZJWE1FOiBmb2xsb3dpbmcgbWVkaWEgZmVhdHVyZXMgYXJlIG5v
dCBpbXBsZW1lbnRlZDogY29sb3JfaW5kZXgsIHNjYW4sIHJlc29sdXRpb24KKyAqCisgKiBjb2xv
cl9pbmRleCwgbWluLWNvbG9yLWluZGV4LCBtYXhfY29sb3JfaW5kZXg6IEl0J3MgdW5rbm93biBo
b3cgdG8gcmV0cmlldmUKKyAqIHRoZSBpbmZvcm1hdGlvbiBpZiB0aGUgZGlzcGxheSBtb2RlIGlz
IGluZGV4ZWQKKyAqIHNjYW46IFRoZSAic2NhbiIgbWVkaWEgZmVhdHVyZSBkZXNjcmliZXMgdGhl
IHNjYW5uaW5nIHByb2Nlc3Mgb2YKKyAqIHR2IG91dHB1dCBkZXZpY2VzLiBJdCdzIHVua25vd24g
aG93IHRvIHJldHJpZXZlIHRoaXMgaW5mb3JtYXRpb24gZnJvbQorICogdGhlIHBsYXRmb3JtCisg
KiByZXNvbHV0aW9uLCBtaW4tcmVzb2x1dGlvbiwgIG1heC1yZXNvbHV0aW9uOiBjc3MgcGFyc2Vy
IGRvZXNuJ3Qgc2VlbSB0bworICogc3VwcG9ydCBDU1NfRElNRU5TSU9OCisgKi8KKworTWVkaWFR
dWVyeUV2YWx1YXRvcjo6IE1lZGlhUXVlcnlFdmFsdWF0b3IoYm9vbCBtZWRpYUZlYXR1cmVSZXN1
bHQpCisgICAgOiBtX3ZpZXcoMCkKKyAgICAsIG1fc3R5bGUoMCkKKyAgICAsIG1fZXhwUmVzdWx0
KG1lZGlhRmVhdHVyZVJlc3VsdCkKK3sKK30KKworTWVkaWFRdWVyeUV2YWx1YXRvcjo6IE1lZGlh
UXVlcnlFdmFsdWF0b3IoY29uc3QgU3RyaW5nJiBhY2NlcHRlZE1lZGlhVHlwZSwgYm9vbCBtZWRp
YUZlYXR1cmVSZXN1bHQpCisgICAgOiBtX21lZGlhVHlwZShhY2NlcHRlZE1lZGlhVHlwZSkKKyAg
ICAsIG1fdmlldygwKQorICAgICwgbV9zdHlsZSgwKQorICAgICwgbV9leHBSZXN1bHQobWVkaWFG
ZWF0dXJlUmVzdWx0KQoreworfQorCitNZWRpYVF1ZXJ5RXZhbHVhdG9yOjogTWVkaWFRdWVyeUV2
YWx1YXRvcihjb25zdCBTdHJpbmcmIGFjY2VwdGVkTWVkaWFUeXBlLCBGcmFtZVZpZXcqIHZpZXcs
IFJlbmRlclN0eWxlKiBzdHlsZSkKKyAgICA6IG1fbWVkaWFUeXBlKGFjY2VwdGVkTWVkaWFUeXBl
Lmxvd2VyKCkpCisgICAgLCBtX3ZpZXcodmlldykKKyAgICAsIG1fc3R5bGUoc3R5bGUpCisgICAg
LCBtX2V4cFJlc3VsdChmYWxzZSkgLy8gZG9lc24ndCBtYXR0ZXIgd2hlbiB3ZSBoYXZlIG1fdmll
dyBhbmQgbV9zdHlsZQoreworfQorCitNZWRpYVF1ZXJ5RXZhbHVhdG9yOjp+TWVkaWFRdWVyeUV2
YWx1YXRvcigpCit7Cit9CisKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6bWVkaWFUeXBlTWF0
Y2goY29uc3QgU3RyaW5nJiBtZWRpYVR5cGVUb01hdGNoKSBjb25zdAoreworICAgIHJldHVybiBt
ZWRpYVR5cGVUb01hdGNoLmlzRW1wdHkoKQorICAgICAgICB8fCAobWVkaWFUeXBlVG9NYXRjaC5z
dGFydHNXaXRoKCJhbGwiLCBmYWxzZSkgJiYgbWVkaWFUeXBlVG9NYXRjaC5sZW5ndGgoKSA9PSAz
KQorICAgICAgICB8fCBtZWRpYVR5cGVUb01hdGNoLmxvd2VyKCkgPT0gbV9tZWRpYVR5cGU7Cit9
CisKK3N0YXRpYyBib29sIGFwcGx5UmVzdHJpY3RvcihNZWRpYVF1ZXJ5OjpSZXN0cmljdG9yIHIs
IGJvb2wgdmFsdWUpCit7CisgICAgcmV0dXJuIHIgPT0gTWVkaWFRdWVyeTo6Tm90ID8gIXZhbHVl
IDogdmFsdWU7Cit9CisKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChjb25zdCBNZWRp
YUxpc3QqIG1lZGlhTGlzdCkgY29uc3QKK3sKKyAgICBpZiAoIW1lZGlhTGlzdCkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICBjb25zdCBWZWN0b3I8TWVkaWFRdWVyeSo+KiBxdWVyaWVzID0g
bWVkaWFMaXN0LT5tZWRpYVF1ZXJpZXMoKTsKKyAgICBpZiAoIXF1ZXJpZXMtPnNpemUoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7IC8vIGVtcHR5IHF1ZXJ5IGxpc3QgZXZhbHVhdGVzIHRvIHRydWUK
KworICAgIC8vIGl0ZXJhdGUgb3ZlciBxdWVyaWVzLCBzdG9wIGlmIGFueSBvZiB0aGVtIGV2YWwg
dG8gdHJ1ZSAoT1Igc2VtYW50aWNzKQorICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBxdWVyaWVzLT5zaXplKCkgJiYgIXJlc3VsdDsgKytpKSB7Cisg
ICAgICAgIE1lZGlhUXVlcnkqIHF1ZXJ5ID0gcXVlcmllcy0+YXQoaSk7CisKKyAgICAgICAgaWYg
KG1lZGlhVHlwZU1hdGNoKHF1ZXJ5LT5tZWRpYVR5cGUoKSkpIHsKKyAgICAgICAgICAgIGNvbnN0
IFZlY3RvcjxNZWRpYVF1ZXJ5RXhwKj4qIGV4cHMgPSBxdWVyeS0+ZXhwcmVzc2lvbnMoKTsKKyAg
ICAgICAgICAgIC8vIGl0ZXJhdGUgdGhyb3VnaCBleHByZXNzaW9ucywgc3RvcCBpZiBhbnkgb2Yg
dGhlbSBldmFsIHRvIGZhbHNlCisgICAgICAgICAgICAvLyAoQU5EIHNlbWFudGljcykKKyAgICAg
ICAgICAgIHNpemVfdCBqID0gMDsKKyAgICAgICAgICAgIGZvciAoOyBqIDwgZXhwcy0+c2l6ZSgp
ICYmIGV2YWwoZXhwcy0+YXQoaikpOyArK2opIC8qIGVtcHR5Ki87CisKKyAgICAgICAgICAgIC8v
IGFzc3VtZSB0cnVlIGlmIHdlIGFyZSBhdCB0aGUgZW5kIG9mIHRoZSBsaXN0LAorICAgICAgICAg
ICAgLy8gb3RoZXJ3aXNlIGFzc3VtZSBmYWxzZQorICAgICAgICAgICAgcmVzdWx0ID0gYXBwbHlS
ZXN0cmljdG9yKHF1ZXJ5LT5yZXN0cmljdG9yKCksIGV4cHMtPnNpemUoKSA9PSBqKTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICByZXN1bHQgPSBhcHBseVJlc3RyaWN0b3IocXVlcnktPnJl
c3RyaWN0b3IoKSwgZmFsc2UpOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0
YXRpYyBib29sIHBhcnNlQXNwZWN0UmF0aW8oQ1NTVmFsdWUqIHZhbHVlLCBpbnQmIGEsIGludCYg
YikKK3sKKyAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpeworICAgICAgICBDU1NWYWx1ZUxp
c3QqIHZhbHVlTGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKKyAgICAg
ICAgaWYgKHZhbHVlTGlzdC0+bGVuZ3RoKCkgPT0gMykgeworICAgICAgICAgICAgQ1NTVmFsdWUq
IGkwID0gdmFsdWVMaXN0LT5pdGVtKDApOworICAgICAgICAgICAgQ1NTVmFsdWUqIGkxID0gdmFs
dWVMaXN0LT5pdGVtKDEpOworICAgICAgICAgICAgQ1NTVmFsdWUqIGkyID0gdmFsdWVMaXN0LT5p
dGVtKDIpOworICAgICAgICAgICAgaWYgKGkwLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGlj
X2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpMCktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX05VTUJFUgorICAgICAgICAgICAgICAgICYmIGkxLT5pc1ByaW1pdGl2
ZVZhbHVlKCkgJiYgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpMSktPnByaW1pdGl2
ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORworICAgICAgICAgICAgICAg
ICYmIGkyLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPihpMiktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJF
UikgeworICAgICAgICAgICAgICAgIFN0cmluZyBzdHIgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KGkxKS0+Z2V0U3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXN0
ci5pc051bGwoKSAmJiBzdHIubGVuZ3RoKCkgPT0gMSAmJiBzdHJbMF0gPT0gUUNoYXIoJy8nKSkg
eworICAgICAgICAgICAgICAgICAgICBhID0gKGludCkgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPihpMCktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
OworICAgICAgICAgICAgICAgICAgICBiID0gKGludCkgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPihpMiktPmdldEZsb2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIp
OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitp
bmxpbmUgYm9vbCBjbXB2YWx1ZShpbnQgYSwgaW50IGIsIE1lZGlhRmVhdHVyZVByZWZpeCBvcCkK
K3sKKyAgICBzd2l0Y2ggKG9wKSB7CisgICAgY2FzZSBNaW5QcmVmaXg6CisgICAgICAgIHJldHVy
biBhID49IGI7CisgICAgY2FzZSBNYXhQcmVmaXg6CisgICAgICAgIHJldHVybiBhIDw9IGI7Cisg
ICAgY2FzZSBOb1ByZWZpeDoKKyAgICAgICAgcmV0dXJuIGEgPT0gYjsKKyAgICB9CisgICAgcmV0
dXJuIGZhbHNlOworfQorCitzdGF0aWMgYm9vbCBudW1iZXJWYWx1ZShDU1NWYWx1ZSogdmFsdWUs
IGZsb2F0JiByZXN1bHQpCit7CisgICAgaWYgKHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkKKyAg
ICAgICAgJiYgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPnByaW1pdGl2
ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikgeworICAgICAgICByZXN1
bHQgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Z2V0RmxvYXRWYWx1
ZShDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUik7CisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29sIGNvbG9yTWVkaWFGZWF0
dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgRnJhbWVWaWV3KiB2
aWV3LCAgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQoreworICAgIGludCBiaXRzUGVyQ29tcG9uZW50
ID0gc2NyZWVuRGVwdGhQZXJDb21wb25lbnQodmlldyk7CisgICAgZmxvYXQgbnVtYmVyOworICAg
IGlmICh2YWx1ZSkKKyAgICAgICAgcmV0dXJuIG51bWJlclZhbHVlKHZhbHVlLCBudW1iZXIpICYm
IGNtcHZhbHVlKGJpdHNQZXJDb21wb25lbnQsIChpbnQpbnVtYmVyLCBvcCk7CisKKyAgICByZXR1
cm4gYml0c1BlckNvbXBvbmVudCAhPSAwOworfQorCitzdGF0aWMgYm9vbCBtb25vY2hyb21lTWVk
aWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgRnJhbWVW
aWV3KiB2aWV3LCAgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQoreworICAgIGlmICghc2NyZWVuSXNN
b25vY2hyb21lKHZpZXcpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gY29s
b3JNZWRpYUZlYXR1cmVFdmFsKHZhbHVlLCBzdHlsZSwgdmlldywgb3ApOworfQorCitzdGF0aWMg
Ym9vbCBkZXZpY2VfYXNwZWN0X3JhdGlvTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUs
IFJlbmRlclN0eWxlKiBzdHlsZSwgRnJhbWVWaWV3KiB2aWV3LCAgTWVkaWFGZWF0dXJlUHJlZml4
IG9wKQoreworICAgIGlmICh2YWx1ZSkgeworICAgICAgICBJbnRSZWN0IHNnID0gc2NyZWVuUmVj
dCh2aWV3KTsKKyAgICAgICAgaW50IGEgPSAwOworICAgICAgICBpbnQgYiA9IDA7CisgICAgICAg
IGlmIChwYXJzZUFzcGVjdFJhdGlvKHZhbHVlLCBhLCBiKSkKKyAgICAgICAgICAgIHJldHVybiBi
ICE9IDAgICYmIGNtcHZhbHVlKGEgKiBzZy5oZWlnaHQoKSwgYiAqIHNnLndpZHRoKCksIG9wKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vICh7LG1pbi0sbWF4LX1kZXZp
Y2UtYXNwZWN0LXJhdGlvKQorICAgIC8vIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBpdHMg
YXNwZWN0IHJhdGlvIGlzIG5vbi16ZXJvCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBi
b29sIGdyaWRNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0
eWxlLCBGcmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCit7CisgICAgLy8g
aWYgb3V0cHV0IGRldmljZSBpcyBiaXRtYXAsIGdyaWQ6IDAgPT0gdHJ1ZQorICAgIC8vIGFzc3Vt
ZSB3ZSBoYXZlIGJpdG1hcCBkZXZpY2UKKyAgICBmbG9hdCBudW1iZXI7CisgICAgaWYgKHZhbHVl
ICYmIG51bWJlclZhbHVlKHZhbHVlLCBudW1iZXIpKQorICAgICAgICByZXR1cm4gY21wdmFsdWUo
KGludCludW1iZXIsIDAsIG9wKTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3N0YXRpYyBib29s
IGRldmljZV9oZWlnaHRNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5
bGUqIHN0eWxlLCBGcmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVmaXggb3ApCit7Cisg
ICAgaWYgKHZhbHVlKSB7CisgICAgICAgIEludFJlY3Qgc2cgPSBzY3JlZW5SZWN0KHZpZXcpOwor
ICAgICAgICByZXR1cm4gdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBjbXB2YWx1ZShzZy5o
ZWlnaHQoKSwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmNvbXB1dGVM
ZW5ndGhJbnQoc3R5bGUpLCBvcCk7CisgICAgfQorICAgIC8vICh7LG1pbi0sbWF4LX1kZXZpY2Ut
aGVpZ2h0KQorICAgIC8vIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBhc3N1bWUgbm9uLXpl
cm8KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgZGV2aWNlX3dpZHRoTWVkaWFG
ZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgRnJhbWVWaWV3
KiB2aWV3LCAgTWVkaWFGZWF0dXJlUHJlZml4IG9wKQoreworICAgIGlmICh2YWx1ZSkgeworICAg
ICAgICBJbnRSZWN0IHNnID0gc2NyZWVuUmVjdCh2aWV3KTsKKyAgICAgICAgcmV0dXJuIHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgY21wdmFsdWUoc2cud2lkdGgoKSwgc3RhdGljX2Nhc3Q8
Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUpLCBvcCk7
CisgICAgfQorICAgIC8vICh7LG1pbi0sbWF4LX1kZXZpY2Utd2lkdGgpCisgICAgLy8gYXNzdW1l
IGlmIHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybworICAgIHJldHVybiB0cnVlOwor
fQorCitzdGF0aWMgYm9vbCBoZWlnaHRNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwg
UmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVmaXgg
b3ApCit7CisgICAgaWYgKHZhbHVlKQorICAgICAgICByZXR1cm4gdmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSAmJiBjbXB2YWx1ZSh2aWV3LT52aXNpYmxlSGVpZ2h0KCksIHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKSwgb3ApOwor
CisgICAgcmV0dXJuIHZpZXctPnZpc2libGVIZWlnaHQoKSAhPSAwOworfQorCitzdGF0aWMgYm9v
bCB3aWR0aE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlhRmVhdHVyZVByZWZpeCBvcCkKK3sKKyAgICBpZiAo
dmFsdWUpCisgICAgICAgIHJldHVybiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIGNtcHZh
bHVlKHZpZXctPnZpc2libGVXaWR0aCgpLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KHZhbHVlKS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSksIG9wKTsKKworICAgIHJldHVybiB2aWV3
LT52aXNpYmxlV2lkdGgoKSAhPSAwOworfQorCisvLyByZXN0IG9mIHRoZSBmdW5jdGlvbnMgYXJl
IHRyYW1wb2xpbmVzIHdoaWNoIHNldCB0aGUgcHJlZml4IGFjY29yZGluZyB0byB0aGUgbWVkaWEg
ZmVhdHVyZSBleHByZXNzaW9uIHVzZWQKKworc3RhdGljIGJvb2wgbWluX2NvbG9yTWVkaWFGZWF0
dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0eWxlKiBzdHlsZSwgRnJhbWVWaWV3KiB2
aWV3LCAgTWVkaWFGZWF0dXJlUHJlZml4IC8qb3AqLykKK3sKKyAgICByZXR1cm4gY29sb3JNZWRp
YUZlYXR1cmVFdmFsKHZhbHVlLCBzdHlsZSwgdmlldywgTWluUHJlZml4KTsKK30KKworc3RhdGlj
IGJvb2wgbWF4X2NvbG9yTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJlbmRlclN0
eWxlKiBzdHlsZSwgRnJhbWVWaWV3KiB2aWV3LCAgTWVkaWFGZWF0dXJlUHJlZml4IC8qb3AqLykK
K3sKKyAgICByZXR1cm4gY29sb3JNZWRpYUZlYXR1cmVFdmFsKHZhbHVlLCBzdHlsZSwgdmlldywg
TWF4UHJlZml4KTsKK30KKworc3RhdGljIGJvb2wgbWluX21vbm9jaHJvbWVNZWRpYUZlYXR1cmVF
dmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFtZVZpZXcqIHZpZXcs
ICBNZWRpYUZlYXR1cmVQcmVmaXggLypvcCovKQoreworICAgIHJldHVybiBtb25vY2hyb21lTWVk
aWFGZWF0dXJlRXZhbCh2YWx1ZSwgc3R5bGUsIHZpZXcsIE1pblByZWZpeCk7Cit9CisKK3N0YXRp
YyBib29sIG1heF9tb25vY2hyb21lTWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRnJhbWVWaWV3KiB2aWV3LCAgTWVkaWFGZWF0dXJlUHJlZml4IC8q
b3AqLykKK3sKKyAgICByZXR1cm4gbW9ub2Nocm9tZU1lZGlhRmVhdHVyZUV2YWwodmFsdWUsIHN0
eWxlLCB2aWV3LCBNYXhQcmVmaXgpOworfQorCitzdGF0aWMgYm9vbCBtaW5fZGV2aWNlX2FzcGVj
dF9yYXRpb01lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5
bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlhRmVhdHVyZVByZWZpeCAvKm9wKi8pCit7CisgICAg
cmV0dXJuIGRldmljZV9hc3BlY3RfcmF0aW9NZWRpYUZlYXR1cmVFdmFsKHZhbHVlLCBzdHlsZSwg
dmlldywgTWluUHJlZml4KTsKK30KKworc3RhdGljIGJvb2wgbWF4X2RldmljZV9hc3BlY3RfcmF0
aW9NZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBG
cmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVmaXggLypvcCovKQoreworICAgIHJldHVy
biBkZXZpY2VfYXNwZWN0X3JhdGlvTWVkaWFGZWF0dXJlRXZhbCh2YWx1ZSwgc3R5bGUsIHZpZXcs
IE1heFByZWZpeCk7Cit9CisKK3N0YXRpYyBib29sIG1pbl9oZWlnaHRNZWRpYUZlYXR1cmVFdmFs
KENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFtZVZpZXcqIHZpZXcsICBN
ZWRpYUZlYXR1cmVQcmVmaXggLypvcCovKQoreworICAgIHJldHVybiBoZWlnaHRNZWRpYUZlYXR1
cmVFdmFsKHZhbHVlLCBzdHlsZSwgdmlldywgTWluUHJlZml4KTsKK30KKworc3RhdGljIGJvb2wg
bWF4X2hlaWdodE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlhRmVhdHVyZVByZWZpeCAvKm9wKi8pCit7Cisg
ICAgcmV0dXJuIGhlaWdodE1lZGlhRmVhdHVyZUV2YWwodmFsdWUsIHN0eWxlLCB2aWV3LCBNYXhQ
cmVmaXgpOworfQorCitzdGF0aWMgYm9vbCBtaW5fd2lkdGhNZWRpYUZlYXR1cmVFdmFsKENTU1Zh
bHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFtZVZpZXcqIHZpZXcsICBNZWRpYUZl
YXR1cmVQcmVmaXggLypvcCovKQoreworICAgIHJldHVybiB3aWR0aE1lZGlhRmVhdHVyZUV2YWwo
dmFsdWUsIHN0eWxlLCB2aWV3LCBNaW5QcmVmaXgpOworfQorCitzdGF0aWMgYm9vbCBtYXhfd2lk
dGhNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBG
cmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVmaXggLypvcCovKQoreworICAgIHJldHVy
biB3aWR0aE1lZGlhRmVhdHVyZUV2YWwodmFsdWUsIHN0eWxlLCB2aWV3LCBNYXhQcmVmaXgpOwor
fQorCitzdGF0aWMgYm9vbCBtaW5fZGV2aWNlX2hlaWdodE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFs
dWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlhRmVh
dHVyZVByZWZpeCAvKm9wKi8pCit7CisgICAgcmV0dXJuIGRldmljZV9oZWlnaHRNZWRpYUZlYXR1
cmVFdmFsKHZhbHVlLCBzdHlsZSwgdmlldywgTWluUHJlZml4KTsKK30KKworc3RhdGljIGJvb2wg
bWF4X2RldmljZV9oZWlnaHRNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVy
U3R5bGUqIHN0eWxlLCBGcmFtZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVmaXggLypvcCov
KQoreworICAgIHJldHVybiBkZXZpY2VfaGVpZ2h0TWVkaWFGZWF0dXJlRXZhbCh2YWx1ZSwgc3R5
bGUsIHZpZXcsIE1heFByZWZpeCk7Cit9CisKK3N0YXRpYyBib29sIG1pbl9kZXZpY2Vfd2lkdGhN
ZWRpYUZlYXR1cmVFdmFsKENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFt
ZVZpZXcqIHZpZXcsICBNZWRpYUZlYXR1cmVQcmVmaXggLypvcCovKQoreworICAgIHJldHVybiBk
ZXZpY2Vfd2lkdGhNZWRpYUZlYXR1cmVFdmFsKHZhbHVlLCBzdHlsZSwgdmlldywgTWluUHJlZml4
KTsKK30KKworc3RhdGljIGJvb2wgbWF4X2RldmljZV93aWR0aE1lZGlhRmVhdHVyZUV2YWwoQ1NT
VmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyYW1lVmlldyogdmlldywgIE1lZGlh
RmVhdHVyZVByZWZpeCAvKm9wKi8pCit7CisgICAgcmV0dXJuIGRldmljZV93aWR0aE1lZGlhRmVh
dHVyZUV2YWwodmFsdWUsIHN0eWxlLCB2aWV3LCBNYXhQcmVmaXgpOworfQorCitzdGF0aWMgdm9p
ZCBjcmVhdGVGdW5jdGlvbk1hcCgpCit7CisgICAgLy8gQ3JlYXRlIHRoZSB0YWJsZS4KKyAgICBn
RnVuY3Rpb25NYXAgPSBuZXcgRnVuY3Rpb25NYXA7CisjZGVmaW5lIEFERF9UT19GVU5DVElPTk1B
UChuYW1lLCBzdHIpICBcCisgICAgZ0Z1bmN0aW9uTWFwLT5zZXQobmFtZSMjTWVkaWFGZWF0dXJl
LmltcGwoKSwgbmFtZSMjTWVkaWFGZWF0dXJlRXZhbCk7CisgICAgQ1NTX01FRElBUVVFUllfTkFN
RVNfRk9SX0VBQ0hfTUVESUFGRUFUVVJFKEFERF9UT19GVU5DVElPTk1BUCk7CisjdW5kZWYgQURE
X1RPX0ZVTkNUSU9OTUFQCit9CisKK2Jvb2wgTWVkaWFRdWVyeUV2YWx1YXRvcjo6ZXZhbChjb25z
dCBNZWRpYVF1ZXJ5RXhwKiBleHByKSBjb25zdAoreworICAgIGlmICghbV92aWV3IHx8ICFtX3N0
eWxlKQorICAgICAgICByZXR1cm4gbV9leHBSZXN1bHQ7CisKKyAgICBpZiAoIWdGdW5jdGlvbk1h
cCkKKyAgICAgICAgY3JlYXRlRnVuY3Rpb25NYXAoKTsKKworICAgIC8vIGNhbGwgdGhlIG1lZGlh
IGZlYXR1cmUgZXZhbHVhdGlvbiBmdW5jdGlvbi4gQXNzdW1lIG5vIHByZWZpeAorICAgIC8vIGFu
ZCBsZXQgdHJhbXBvbGluZSBmdW5jdGlvbnMgb3ZlcnJpZGUgdGhlIHByZWZpeCBpZiBwcmVmaXgg
aXMKKyAgICAvLyB1c2VkCisgICAgRXZhbEZ1bmMgZnVuYyA9IGdGdW5jdGlvbk1hcC0+Z2V0KGV4
cHItPm1lZGlhRmVhdHVyZSgpLmltcGwoKSk7CisgICAgaWYgKGZ1bmMpCisgICAgICAgIHJldHVy
biBmdW5jKGV4cHItPnZhbHVlKCksIG1fc3R5bGUsIG1fdmlldywgTm9QcmVmaXgpOworCisgICAg
cmV0dXJuIGZhbHNlOworfQorCit9IC8vIG5hbWVzcGFjZQpJbmRleDogV2ViQ29yZS9rc3ZnMi9z
dmcvU1ZHU3R5bGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9T
VkdTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiAxNDYwNikKKysrIFdlYkNvcmUva3N2ZzIvc3Zn
L1NWR1N0eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDYgKzMwLDcgQEAKICNp
bmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRl
ICJNZWRpYUxpc3QuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtOTYsMTcgKzk3
LDE4IEBAIHZvaWQgU1ZHU3R5bGVFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoKQogICAgICAgICBt
X3NoZWV0ID0gMDsKIAogICAgIG1fbG9hZGluZyA9IGZhbHNlOwotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgX21lZGlhID0gbWVkaWEoKTsKLSAgICBpZiAoKHR5cGUoKS5pc0VtcHR5KCkgfHwgdHlw
ZSgpID09ICJ0ZXh0L2NzcyIpICYmIChfbWVkaWEuaXNOdWxsKCkgfHwgX21lZGlhLmNvbnRhaW5z
KCJzY3JlZW4iKSB8fCBfbWVkaWEuY29udGFpbnMoImFsbCIpIHx8IF9tZWRpYS5jb250YWlucygi
cHJpbnQiKSkpIHsKKyAgICBNZWRpYVF1ZXJ5RXZhbHVhdG9yIHNjcmVlbkV2YWwoInNjcmVlbiIs
IHRydWUpOworICAgIE1lZGlhUXVlcnlFdmFsdWF0b3IgcHJpbnRFdmFsKCJwcmludCIsIHRydWUp
OyAgIAorICAgIFJlZlB0cjxNZWRpYUxpc3Q+IG1lZGlhTGlzdCA9IG5ldyBNZWRpYUxpc3QoKENT
U1N0eWxlU2hlZXQqKTAsIG1lZGlhKCkpOworICAgIGlmICgodHlwZSgpLmlzRW1wdHkoKSB8fCB0
eXBlKCkgPT0gInRleHQvY3NzIikgJiYgKHNjcmVlbkV2YWwuZXZhbChtZWRpYUxpc3QuZ2V0KCkp
IHx8IHByaW50RXZhbC5ldmFsKG1lZGlhTGlzdC5nZXQoKSkpKSB7CiAgICAgICAgIG93bmVyRG9j
dW1lbnQoKS0+YWRkUGVuZGluZ1NoZWV0KCk7CiAKICAgICAgICAgbV9sb2FkaW5nID0gdHJ1ZTsK
ICAKICAgICAgICAgbV9zaGVldCA9IG5ldyBDU1NTdHlsZVNoZWV0KHRoaXMpOwogICAgICAgICBt
X3NoZWV0LT5wYXJzZVN0cmluZyh0ZXh0Q29udGVudCgpKTsgLy8gU1ZHIGNzcyBpcyBhbHdheXMg
cGFyc2VkIGluIHN0cmljdCBtb2RlCi0KLSAgICAgICAgTWVkaWFMaXN0KiBtZWRpYUxpc3QgPSBu
ZXcgTWVkaWFMaXN0KG1fc2hlZXQuZ2V0KCksIF9tZWRpYSk7Ci0gICAgICAgIG1fc2hlZXQtPnNl
dE1lZGlhKG1lZGlhTGlzdCk7CisgICAgICAgIAorICAgICAgICBtX3NoZWV0LT5zZXRNZWRpYSht
ZWRpYUxpc3QuZ2V0KCkpOwogICAgICAgICBtX2xvYWRpbmcgPSBmYWxzZTsKICAgICB9CiAKSW5k
ZXg6IFdlYkNvcmUva3N2ZzIvc3ZnL1NWR0RPTUltcGxlbWVudGF0aW9uLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2tzdmcyL3N2Zy9TVkdET01JbXBsZW1lbnRhdGlvbi5jcHAJKHJldmlzaW9u
IDE0NjA2KQorKysgV2ViQ29yZS9rc3ZnMi9zdmcvU1ZHRE9NSW1wbGVtZW50YXRpb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xOTMsNyArMTkzLDEwIEBAIFBhc3NSZWZQdHI8Q1NTU3R5bGVTaGVl
dD4gU1ZHRE9NSW1wbGVtZW4KICAgICBDU1NTdHlsZVNoZWV0ICpwYXJlbnQgPSAwOwogICAgIFJl
ZlB0cjxDU1NTdHlsZVNoZWV0PiBzaGVldCA9IG5ldyBDU1NTdHlsZVNoZWV0KHBhcmVudCk7CiAg
ICAgLy9zaGVldC0+c2V0VGl0bGUodGl0bGUpOwotICAgIHNoZWV0LT5zZXRNZWRpYShuZXcgTWVk
aWFMaXN0KHNoZWV0LmdldCgpLCBtZWRpYSkpOworICAgIC8vIGh0dHA6Ly93d3cudzMub3JnL1RS
L0RPTS1MZXZlbC0yLVN0eWxlL2Nzcy5odG1sI0NTUy1ET01JbXBsZW1lbnRhdGlvbkNTUyBzYXlz
CisgICAgLy8gdGhhdCBtZWRpYSBkZXNjcmlwdG9ycyBzaG91bGQgYmUgdXNlZCwgZXZlbiB0aG91
Z2ggc3ZnOnN0eWxlIGhhcyBvbmx5CisgICAgLy8gY3NzIG1lZGlhIHR5cGVzLiBIZW5jZSB0aGUg
dGhpcmQgcGFyYW1ldGVyICh0cnVlKS4KKyAgICBzaGVldC0+c2V0TWVkaWEobmV3IE1lZGlhTGlz
dChzaGVldC5nZXQoKSwgbWVkaWEsIHRydWUpKTsgCiAgICAgcmV0dXJuIHNoZWV0LnJlbGVhc2Uo
KTsKIH0KIApJbmRleDogV2ViQ29yZS9wYWdlL0ZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvRnJhbWUuY3BwCShyZXZpc2lvbiAxNDYwNikKKysrIFdlYkNvcmUvcGFnZS9GcmFt
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJIVE1MRnJh
bWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTEdlbmVyaWNGb3JtRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIk1lZGlhRmVhdHVyZU5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZURvY3VtZW50LmgiCiAjaW5j
bHVkZSAiTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5oIgpAQCAtMTQ5LDYgKzE1MCw3IEBA
IEZyYW1lOjpGcmFtZShQYWdlKiBwYWdlLCBSZW5kZXJQYXJ0KiBvd24KICAgICBFdmVudE5hbWVz
Ojppbml0KCk7CiAgICAgSFRNTE5hbWVzOjppbml0KCk7CiAgICAgUXVhbGlmaWVkTmFtZTo6aW5p
dCgpOworICAgIE1lZGlhRmVhdHVyZU5hbWVzOjppbml0KCk7CiAKICNpZiBTVkdfU1VQUE9SVAog
ICAgIFNWR05hbWVzOjppbml0KCk7Cg==
</data>
<flag name="review"
          id="2445"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>