<?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>14955</bug_id>
          
          <creation_ts>2007-08-13 00:29:25 -0700</creation_ts>
          <short_desc>Implement getElementsByClassName</short_desc>
          <delta_ts>2007-12-14 13:57:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>523.x (Safari 3)</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>https://bugzilla.mozilla.org/show_bug.cgi?id=357450</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="David Smith">catfish.man</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annevk</cc>
    
    <cc>ap</cc>
    
    <cc>dev+webkit</cc>
    
    <cc>gavin.sharp</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2415</commentid>
    <comment_count>0</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-08-13 00:29:25 -0700</bug_when>
    <thetext>HTML5 specifies a getElementsByClassName method on Document and Element. Firefox 3 supports this with a slightly modified API, which Hixie says he plans to update the HTML5 spec to match. Firefox has gotten large (77x over js implementations, 8x over XPath) speed improvements for this functionality from doing it natively.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2416</commentid>
    <comment_count>1</comment_count>
      <attachid>15948</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-08-13 00:43:16 -0700</bug_when>
    <thetext>Created attachment 15948
Preliminary patch to implement getElementsByClassName

This isn&apos;t done (no changelog, no testcases and very limited manual testing, one known wart), but it does work, and is compatible with the Firefox implementation as far as I know. Feedback is welcome, particularly on the part that handles parsing the class string. Darin suggested generating a dummy Element, setting its class, then getting its classList, but I wasn&apos;t able to get that working (and I&apos;m not convinced that it&apos;s less nasty than the code duplication). The current method is copy-pasted from NamedMappedAttrMap::parseClassAttribute, which is definitely less than ideal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2203</commentid>
    <comment_count>2</comment_count>
      <attachid>15991</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-08-15 20:06:18 -0700</bug_when>
    <thetext>Created attachment 15991
Updated to not have nasty code duplication

The updated version of this has moved parseClassAttribute into AtomicStringList (which is renamed to ClassNameList, since that&apos;s all it&apos;s used for), which allows getting rid of the duplicated code without weird hacks.

Still no changelog or tests, but the code should be ready for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2202</commentid>
    <comment_count>3</comment_count>
      <attachid>15991</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2007-08-15 20:11:25 -0700</bug_when>
    <thetext>Comment on attachment 15991
Updated to not have nasty code duplication

I&apos;m not sure the renaming of AtomicStringList is desirable. Perhaps ClassNameList should be a subclass of AtomicStringList that just adds the parseClassAttribute method? I could be convinced otherwise, though.

It also seems like parseClassAttribute could be a static method that functions as a named constructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2195</commentid>
    <comment_count>4</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-08-15 22:55:31 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 15991 [edit])
&gt; I&apos;m not sure the renaming of AtomicStringList is desirable. Perhaps
&gt; ClassNameList should be a subclass of AtomicStringList that just adds the
&gt; parseClassAttribute method? I could be convinced otherwise, though.

AtomicStringList effectively *is* already ClassNameList; it&apos;s used nowhere in the code except to store lists of class names. Maciej has pointed out that it&apos;s not even a particularly good structure to use for that, but fixing it is beyond the scope of this patch.

&gt; 
&gt; It also seems like parseClassAttribute could be a static method that functions
&gt; as a named constructor.
&gt; 

Seems plausible. I&apos;ll try it out and see how it feels.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2130</commentid>
    <comment_count>5</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-08-16 16:02:49 -0700</bug_when>
    <thetext>I did a bit of performance testing on this just for fun; Native vs. prototype.js&apos;s xpath version vs. prototype.js&apos;s DOM traversal version

native: 303ms
xpath: 5,706ms
js/dom: 26,660ms

:)

I also tried out aroben&apos;s second suggestion, but it seemed like a bit of a wash. Made the getElementsByClassName callsite a little nicer, and the NamedMappedAttrMap one a little less nice. What about making a regular constructor that takes a class attribute string and calls through to parseClassAttribute? Is that sort of minor convenience method generally considered worthwhile in webkit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1713</commentid>
    <comment_count>6</comment_count>
      <attachid>16071</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-08-22 10:49:30 -0700</bug_when>
    <thetext>Created attachment 16071
Now with changelog and test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1541</commentid>
    <comment_count>7</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-08-24 11:34:48 -0700</bug_when>
    <thetext>Have you tested the behavior of passing js null and js undefined to getElementsByClassName and getElementsByClassNameNS?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1043</commentid>
    <comment_count>8</comment_count>
      <attachid>16176</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-09-01 16:57:57 -0700</bug_when>
    <thetext>Created attachment 16176
Without getElementsByClassNameNS, and with null/undefined tests

getElementsByClassNameNS doesn&apos;t make any sense, so I&apos;ve removed it (as discussed on irc). This also tests null/undefined as suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795</commentid>
    <comment_count>9</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-09-08 05:25:35 -0700</bug_when>
    <thetext>Some test cases for getElementsByClassName:

http://tc.labs.opera.com/apis/getElementsByClassName/

(The Opera alpha now supports it).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>792</commentid>
    <comment_count>10</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-09-08 05:37:14 -0700</bug_when>
    <thetext>Anne van Kesteren points out that this implementation doesn&apos;t treat \f as whitespace so it would fail his tests. I didn&apos;t double-check that the spec requires this treatment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746</commentid>
    <comment_count>11</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2007-09-09 13:08:08 -0700</bug_when>
    <thetext>FWIW: the specification currently doesn&apos;t define the string argument. However, it seems likely that it resuses the definitions for getting tokens out of string that is used for class= currently which includes the aforementioned character.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748</commentid>
    <comment_count>12</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-09-09 13:32:51 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; FWIW: the specification currently doesn&apos;t define the string argument. However,
&gt; it seems likely that it resuses the definitions for getting tokens out of
&gt; string that is used for class= currently which includes the aforementioned
&gt; character.
&gt; 

Interesting. That would imply that WebKit is mis-handling class= as well, since I reused the whitespace logic from it for getElementsByClassName.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722</commentid>
    <comment_count>13</comment_count>
      <attachid>16239</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-09-09 23:25:54 -0700</bug_when>
    <thetext>Created attachment 16239
Adds form feed to the whitespace list, and copyright headers

This just adds form feed to the whitespace list (for *all* class name parsing, please let me know if that should be split out into another patch. It&apos;s about 6 characters on a line that&apos;s already being modified, so I figured it would be fine here), and adds my copyright header to the files I made more than tiny changes on (thanks for pointing that out olliej!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723</commentid>
    <comment_count>14</comment_count>
      <attachid>16240</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-09-09 23:42:19 -0700</bug_when>
    <thetext>Created attachment 16240
Actually include the header

Somehow either I hadn&apos;t been svn adding ClassNameList.h this whole time, or (based on what filemerge says), svn-apply didn&apos;t pick up on the rename. This is the same as the previous one, except it should actually work :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57567</commentid>
    <comment_count>15</comment_count>
      <attachid>16240</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-01 12:17:23 -0700</bug_when>
    <thetext>Comment on attachment 16240
Actually include the header

Ok, a few comments:
+    for(const ClassNameList *t = this; t; t = t-&gt;next()) 
+    { 
+        if(t-&gt;string() == str) 
+            return true; 

Those don&apos;t agree with the style guidelines.  { should be on the same line as for, and if( should be if (
http://webkit.org/coding/coding-style.html

No need for this-&gt; here:
+void ClassNameList::parseClassAttribute(const String&amp; classStr, const bool inCompatMode)
+{
+    this-&gt;clear();

+    String classAttr = inCompatMode ? 
+        (classStr.impl()-&gt;isLower() ? classStr : String(classStr.impl()-&gt;lower())) :
+        classStr;
doesnt&apos; need to call all the impl() stuff, just call .lower() on string.

To me &quot;start&quot; and &quot;end&quot; are more readable than &quot;ePos&quot; and &quot;sPos&quot;, but that&apos;s not a huge issue.

Style guidelines again:
+ClassNodeList::ClassNodeList(PassRefPtr&lt;Node&gt; rootNode, const AtomicString&amp; className)
+: NodeList(rootNode), m_namespaceURI(nullAtom)


Why?
+    m_classList = *(new ClassNameList());
That shouldn&apos;t be needed.

Style again:
+    const ClassNameList* t = static_cast&lt;Element*&gt;(testNode)-&gt;getClassList();
+    
+    for (const ClassNameList* c = &amp;m_classList; c; c = c-&gt;next())
+    {
+        if(t-&gt;contains(c-&gt;string()))
+           continue;

also, &quot;t&quot; is not a very readable/useful variable name

This is also more easily written as:
+    for (const ClassNameList* c = &amp;m_classList; c; c = c-&gt;next())
+    {
+        if(t-&gt;contains(c-&gt;string()))
+           continue;
+
+        return false;

if (!contains)
    return false;

IMO.

Shouldn&apos;t this be &quot;isEmpty()&quot; ?

+PassRefPtr&lt;NodeList&gt; Element::getElementsByClassName(const String&amp; className)
+{
+    if (className.isNull())
+        return 0;


Otherwise looks OK.  I think the style stuff should be corrected and a new patch posted before landing though.

Thanks for the patch!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57610</commentid>
    <comment_count>16</comment_count>
      <attachid>16496</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-10-01 23:36:29 -0700</bug_when>
    <thetext>Created attachment 16496
Updated to address review comments

I ended up removing the empty args optimization entirely, since it was buggy, and probably not useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57614</commentid>
    <comment_count>17</comment_count>
      <attachid>16497</attachid>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-10-02 00:22:59 -0700</bug_when>
    <thetext>Created attachment 16497
More review fixage

Addressing stuff I missed before, and stuff mentioned on IRC.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57700</commentid>
    <comment_count>18</comment_count>
      <attachid>16497</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2007-10-02 23:43:57 -0700</bug_when>
    <thetext>Comment on attachment 16497
More review fixage

I am surprised.  I had figured class names were always case insensitive.  It does not appear to be the case with your patch.  Does contains() need to lower() the incoming string when in compatMode?

This is not needed, please remove:
+    m_classList = ClassNameList();

Constructor initializers are generally one on each line, with the comma (or colon) leading the line (see the style guidelines). This allows easy use of #if ENABLE(FOO) around certain initializers as well as easy removal/addition with the smallest possible diff.

Maybe it&apos;s the need to return &quot;false&quot; when m_impl == 0, that has caused isLower() not to be implemented before.  One could argue that isLower should return true for &quot;&quot; or null.  Not sure it matters.  I&apos;m OK having a  funny isLower as such.  It&apos;s also OK to call string-&gt;impl()-&gt;toLower() (and NOT wrap it in String(), the compiler will do that for you.)  I know I encouraged you to add isLower. Doesn&apos;t matter either way, your call.

Need to fix the one small style issue, the extra initialization and answer regarding case insensitive lookups.  I also think we need a compat-mode test and some case-sensitivity and white-space sensitivity tests before this can land.

Thanks again for taking the time to work on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>57736</commentid>
    <comment_count>19</comment_count>
    <who name="Anne van Kesteren">annevk</who>
    <bug_when>2007-10-03 09:40:09 -0700</bug_when>
    <thetext>FYI: class names are always case-_sensitive_ as far as getElementsByClassName() is concerned. No need to introduce limited quirks mode behavior into a new API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58572</commentid>
    <comment_count>20</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2007-10-15 06:08:11 -0700</bug_when>
    <thetext>I&apos;d love to see the last few issues fixed up to land this on trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>58581</commentid>
    <comment_count>21</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-10-15 07:50:56 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; I&apos;d love to see the last few issues fixed up to land this on trunk.
&gt; 

I haven&apos;t forgotten, just haven&apos;t had time to work on it. I&apos;ll try to set aside some time this weekend to finish it up.

I do have one question regarding case-sensitivity though: now that code is shared between regular class parsing and getElementsByClassName parsing it becomes more difficult to only have a quirks mode for regular class parsing. Should I leave it as is, or add another argument to the function to let the caller control whether quirks mode is allowed (or a third option if I&apos;m missing some better way of doing it)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61557</commentid>
    <comment_count>22</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2007-11-17 23:37:58 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; FYI: class names are always case-_sensitive_ as far as getElementsByClassName()
&gt; is concerned. No need to introduce limited quirks mode behavior into a new API.

I&apos;m not sure if I agree - a Web developer doesn&apos;t need to know whether an API is old or new - consistent behavior might be better, even if it means supporting old quirks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62819</commentid>
    <comment_count>23</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-11-30 14:34:19 -0800</bug_when>
    <thetext>This doesn&apos;t seem to work with a lot of Anne&apos;s tests.  It is failing on tests that set a class on the documentElement (&lt;html&gt;) and I think it is failing to find this element because we only search below the root node.  I am curious if the the element that getElementsByClassName is called on is supposed to include it self in the list, or only it&apos;s descendants.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62820</commentid>
    <comment_count>24</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-11-30 14:41:14 -0800</bug_when>
    <thetext>Actually, the spec is pretty specific about this.  So it is a bug for implementation of document.getElementsByClassName to just call documentElement.getElementsByClassName because that won&apos;t include itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>63188</commentid>
    <comment_count>25</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-12-03 16:33:15 -0800</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #19)
&gt; &gt; FYI: class names are always case-_sensitive_ as far as getElementsByClassName()
&gt; &gt; is concerned. No need to introduce limited quirks mode behavior into a new API.
&gt; 
&gt; I&apos;m not sure if I agree - a Web developer doesn&apos;t need to know whether an API
&gt; is old or new - consistent behavior might be better, even if it means
&gt; supporting old quirks.
&gt; 

I&apos;ve spoken with Mozilla and Opera developers about this, and brought it up with Hixie and #whatwg; so far four people (counting the two of us) are in favor of maintaining the case insensitivity quirk, and everyone else doesn&apos;t care at all. I&apos;ll try to remember to send an email to the list about changing the spec to reflect this.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64063</commentid>
    <comment_count>26</comment_count>
      <attachid>17870</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-12 17:02:24 -0800</bug_when>
    <thetext>Created attachment 17870
updated patch

This updates the patch to allow document as the root node, cleaned up things a bit and adds Anne&apos;s test suite to the layouttests.  Only test 014.html as it originally was failed, but I have updated it to match our current quirksmode behavior and added a comment.  Think we should land this with the current functionality.  Objections.

I also kept David&apos;s name in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64065</commentid>
    <comment_count>27</comment_count>
      <attachid>17870</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2007-12-12 17:55:10 -0800</bug_when>
    <thetext>Comment on attachment 17870
updated patch

There&apos;s an extra change log entry here, for bug 15313.

I really wish we didn&apos;t use a list for ClassNameList. A Vector&lt;AtomicString&gt;* would work better, I think. It&apos;s really bad that deleting a ClassNameList uses O(n) stack in the destructor.

Is it really good to indent ChildNodeList.h as part of this patch? There&apos;s also an unneeded forward declaration added to that file. Please land that separately if at all.

We should use foldCase() instead of lower() for contexts like this one.

The check of isLower() in parseClassAttribute is unnecessary. String::lower() should already do that.

 41     , m_namespaceURI(nullAtom)

Isn&apos;t nullAtom the default anyway?

Otherwise looks good to me. I&apos;ll say review- for now because I want you to consider the comments above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64066</commentid>
    <comment_count>28</comment_count>
    <who name="David Smith">catfish.man</who>
    <bug_when>2007-12-12 19:37:10 -0800</bug_when>
    <thetext>I have already filed http://bugs.webkit.org/show_bug.cgi?id=15760 on the O(n) stack issue (it&apos;s a crasher). I think that bug would be a better place to address changing from a linked list to a vector. The current implementation is as it is merely because it&apos;s a rename of AtomicStringList rather than a new class.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64112</commentid>
    <comment_count>29</comment_count>
      <attachid>17882</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-13 14:22:22 -0800</bug_when>
    <thetext>Created attachment 17882
updated patch (now with more Vector)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64132</commentid>
    <comment_count>30</comment_count>
      <attachid>17882</attachid>
    <who name="">mitz</who>
    <bug_when>2007-12-13 22:00:55 -0800</bug_when>
    <thetext>Comment on attachment 17882
updated patch (now with more Vector)

 122     bool isLower() const { return m_impl ? m_impl-&gt;isLower() : false; }

The null string is all-lowercase (and all-uppercase), so this should say true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64187</commentid>
    <comment_count>31</comment_count>
      <attachid>17882</attachid>
    <who name="">mitz</who>
    <bug_when>2007-12-14 11:01:26 -0800</bug_when>
    <thetext>Comment on attachment 17882
updated patch (now with more Vector)

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64206</commentid>
    <comment_count>32</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2007-12-14 13:57:19 -0800</bug_when>
    <thetext>Fix landed in r28722.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15948</attachid>
            <date>2007-08-13 00:43:16 -0700</date>
            <delta_ts>2007-08-15 20:06:18 -0700</delta_ts>
            <desc>Preliminary patch to implement getElementsByClassName</desc>
            <filename>get-elements-by-class-name.txt</filename>
            <type>text/plain</type>
            <size>8145</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvZG9tL0F0b21pY1N0cmluZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9BdG9taWNTdHJpbmdMaXN0LmgJKHJldmlzaW9uIDI1MDI0KQorKysgV2ViQ29yZS9k
b20vQXRvbWljU3RyaW5nTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw2ICszNyw4IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldE5leHQoQXRvbWljU3RyaW5nTGlzdCogbikgeyBtX25leHQgPSBu
OyB9CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0
cmluZzsgfQogICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyKSB7IG1f
c3RyaW5nID0gc3RyOyB9CisgICAgCisgICAgYm9vbCBjb250YWlucyhjb25zdCBBdG9taWNTdHJp
bmcmIHN0cikgY29uc3QgeyBmb3IoY29uc3QgQXRvbWljU3RyaW5nTGlzdCAqdCA9IHRoaXM7IHQ7
IHQgPSB0LT5uZXh0KCkpIHsgaWYodC0+c3RyaW5nKCkgPT0gc3RyKSByZXR1cm4gdHJ1ZTsgfSBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIEF0b21pY1N0cmluZ0xpc3QqIGNsb25lKCkgeyByZXR1cm4g
bmV3IEF0b21pY1N0cmluZ0xpc3QobV9zdHJpbmcsIG1fbmV4dCA/IG1fbmV4dC0+Y2xvbmUoKSA6
IDApOyB9CiAgICAgdm9pZCBjbGVhcigpIHsgbV9zdHJpbmcgPSBudWxsQXRvbTsgZGVsZXRlIG1f
bmV4dDsgbV9uZXh0ID0gMDsgfQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjUwMjQpCisrKyBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0MjQsNiArMzQyNCwx
NiBAQCBQYXNzUmVmUHRyPE5hbWVOb2RlTGlzdD4gRG9jdW1lbnQ6OmdldEVsCiAgICAgcmV0dXJu
IG5ldyBOYW1lTm9kZUxpc3QodGhpcywgZWxlbWVudE5hbWUpOwogfQogCitQYXNzUmVmUHRyPE5v
ZGVMaXN0PiBEb2N1bWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcgJmNs
YXNzTmFtZSkKK3sKKyAgICByZXR1cm4gZG9jdW1lbnRFbGVtZW50KCktPmdldEVsZW1lbnRzQnlD
bGFzc05hbWUoY2xhc3NOYW1lKTsKK30KKworUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6
OmdldEVsZW1lbnRzQnlDbGFzc05hbWVOUyhjb25zdCBTdHJpbmcgJm5hbWVzcGFjZVVSSSwgY29u
c3QgU3RyaW5nICZjbGFzc05hbWUpCit7CisgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpLT5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lTlMobmFtZXNwYWNlVVJJLCBjbGFzc05hbWUpOworfQorCiB2
b2lkIERvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewogICAgIHNldFBhcnNpbmcoZmFsc2Up
OwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyNTAyNCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIwMiw2ICsyMDIsOCBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0
cjxOb2RlPiBhZG9wdE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUm
KTsKICAgICAKICAgICBQYXNzUmVmUHRyPE5hbWVOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeU5hbWUo
Y29uc3QgU3RyaW5nJiBlbGVtZW50TmFtZSk7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcgJmNsYXNzTmFtZSk7CisgICAgUGFzc1Jl
ZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZU5TKGNvbnN0IFN0cmluZyAmbmFt
ZXNwYWNlVVJJLCBjb25zdCBTdHJpbmcgJmNsYXNzTmFtZSk7CiAKICAgICAvLyBBY3R1YWxseSBw
YXJ0IG9mIEpTSFRNTERvY3VtZW50LCBidXQgdXNlZCBmb3IgZ2l2aW5nIFhNTCBkb2N1bWVudHMg
YSB3aW5kb3cgdGl0bGUgYXMgd2VsbAogICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdGl0bGU7IH0KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDI1MDI0KQorKysgV2ViQ29yZS9k
b20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDEwIEBAIG1vZHVs
ZSBjb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW4gW09wdGlvbmFsXSBib29sZWFuIGF1dGhvck9ubHkpOwogI2VuZGlmCiAKKyAgICAgICAg
Ly9IVE1MIDUKKyAgICAgICAgTm9kZUxpc3QgICAgICAgICAgICBnZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKGluIERPTVN0cmluZyB0YWduYW1lKTsKKyAgICAgICAgTm9kZUxpc3QgICAgICAgICAgICBn
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3RyaW5nXSBET01T
dHJpbmcgbmFtZXNwYWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgY2xhc3NOYW1lKTsKICAgICB9OwogCiB9Cklu
ZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9F
bGVtZW50LmNwcAkocmV2aXNpb24gMjUwMjQpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLS8qCisgICAgLyoKICAqIENvcHlyaWdodCAo
QykgMTk5OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5
IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAx
IFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCkBAIC00MSw2ICs0MSw3IEBACiAjaW5jbHVkZSAi
VGV4dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIlhNTE5h
bWVzLmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC04OCw2ICs4OSwxMDAgQEAgdm9pZCBFbGVtZW50UmFyZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHls
ZQogICAgIG1fY29tcHV0ZWRTdHlsZSA9IDA7CiB9CiAKKy8vIE5vZGVMaXN0IHRoYXQgbGltaXRz
IHRvIGEgcGFydGljdWxhciBjbGFzcy4KK2NsYXNzIENsYXNzTm9kZUxpc3QgOiBwdWJsaWMgTm9k
ZUxpc3QgeworcHVibGljOgorICAgIENsYXNzTm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlPiByb290
Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmlu
ZyYgY2xhc3NOYW1lKTsKKyAgICAKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0
OworICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgCitw
cml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhOb2RlICopIGNvbnN0OworICAg
IAorICAgIEF0b21pY1N0cmluZyBtX25hbWVzcGFjZVVSSTsKKyAgICBBdG9taWNTdHJpbmdMaXN0
IG1fY2xhc3NMaXN0OworfTsKKworaW5saW5lIHN0YXRpYyBib29sIGlzQ2xhc3NXaGl0ZXNwYWNl
KFVDaGFyIGMpCit7CisgICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1xyJyB8fCBjID09ICdc
bicgfHwgYyA9PSAnXHQnOworfQorCitDbGFzc05vZGVMaXN0OjpDbGFzc05vZGVMaXN0KFBhc3NS
ZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJLCBj
b25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSkKKzogTm9kZUxpc3Qocm9vdE5vZGUpLCBtX25h
bWVzcGFjZVVSSShuYW1lc3BhY2VVUkkpCit7CisgICAgQVNTRVJUKG1fbmFtZXNwYWNlVVJJLmlz
TnVsbCgpIHx8ICFtX25hbWVzcGFjZVVSSS5pc0VtcHR5KCkpOworICAgIAorICAgIFN0cmluZyBj
bGFzc1N0ciA9IGNsYXNzTmFtZTsKKworICAgIFN0cmluZyBjbGFzc0F0dHIgPSBtX3Jvb3ROb2Rl
LT5kb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSA/IAorICAgICAgICAoY2xhc3NTdHIuaW1wbCgp
LT5pc0xvd2VyKCkgPyBjbGFzc1N0ciA6IFN0cmluZyhjbGFzc1N0ci5pbXBsKCktPmxvd2VyKCkp
KSA6CisgICAgICAgIGNsYXNzU3RyOworICAgIAorICAgIEF0b21pY1N0cmluZ0xpc3QqIGN1cnIg
PSAwOworICAgIAorICAgIGNvbnN0IFVDaGFyKiBzdHIgPSBjbGFzc0F0dHIuY2hhcmFjdGVycygp
OworICAgIGludCBsZW5ndGggPSBjbGFzc0F0dHIubGVuZ3RoKCk7CisgICAgaW50IHNQb3MgPSAw
OworICAgIAorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHdoaWxlIChzUG9zIDwgbGVuZ3Ro
ICYmIGlzQ2xhc3NXaGl0ZXNwYWNlKHN0cltzUG9zXSkpCisgICAgICAgICAgICArK3NQb3M7Cisg
ICAgICAgIGlmIChzUG9zID49IGxlbmd0aCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBp
bnQgZVBvcyA9IHNQb3MgKyAxOworICAgICAgICB3aGlsZSAoZVBvcyA8IGxlbmd0aCAmJiAhaXND
bGFzc1doaXRlc3BhY2Uoc3RyW2VQb3NdKSkKKyAgICAgICAgICAgICsrZVBvczsKKyAgICAgICAg
aWYgKGN1cnIpIHsKKyAgICAgICAgICAgIGN1cnItPnNldE5leHQobmV3IEF0b21pY1N0cmluZ0xp
c3QoQXRvbWljU3RyaW5nKHN0ciArIHNQb3MsIGVQb3MgLSBzUG9zKSkpOworICAgICAgICAgICAg
Y3VyciA9IGN1cnItPm5leHQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChz
UG9zID09IDAgJiYgZVBvcyA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBtX2NsYXNzTGlz
dC5zZXRTdHJpbmcoQXRvbWljU3RyaW5nKGNsYXNzQXR0cikpOworICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9jbGFzc0xpc3Quc2V0U3RyaW5nKEF0
b21pY1N0cmluZyhzdHIgKyBzUG9zLCBlUG9zIC0gc1BvcykpOworICAgICAgICAgICAgY3VyciA9
ICZtX2NsYXNzTGlzdDsKKyAgICAgICAgfQorICAgICAgICBzUG9zID0gZVBvcyArIDE7CisgICAg
fQorfQorCit1bnNpZ25lZCBDbGFzc05vZGVMaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJl
dHVybiByZWN1cnNpdmVMZW5ndGgoKTsKK30KKworTm9kZSogQ2xhc3NOb2RlTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVjdXJzaXZlSXRlbShpbmRleCk7
Cit9CisKK2Jvb2wgQ2xhc3NOb2RlTGlzdDo6bm9kZU1hdGNoZXMoTm9kZSogdGVzdE5vZGUpIGNv
bnN0Cit7CisgICAgaWYgKCF0ZXN0Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgCisgICAgaWYgKG1fbmFtZXNwYWNlVVJJICE9IHN0YXJBdG9tICYmIG1f
bmFtZXNwYWNlVVJJICE9IHRlc3ROb2RlLT5uYW1lc3BhY2VVUkkoKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIAorICAgIGlmICghdGVzdE5vZGUtPmhhc0NsYXNzKCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAKKyAgICBjb25zdCBBdG9taWNTdHJpbmdMaXN0KiB0ID0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KHRlc3ROb2RlKS0+Z2V0Q2xhc3NMaXN0KCk7CisgICAgCisgICAgZm9y
IChjb25zdCBBdG9taWNTdHJpbmdMaXN0KiBjID0gJm1fY2xhc3NMaXN0OyBjOyBjID0gYy0+bmV4
dCgpKQorICAgIHsKKyAgICAgICAgaWYodC0+Y29udGFpbnMoYy0+c3RyaW5nKCkpKQorICAgICAg
ICAgICBjb250aW51ZTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAg
IHJldHVybiB0cnVlOworfQorCiBFbGVtZW50OjpFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHFOYW1lLCBEb2N1bWVudCAqZG9jKQogICAgIDogQ29udGFpbmVyTm9kZShkb2MpCiAgICAgLCBt
X3VwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyKHRoaXMsICZFbGVtZW50Ojp1cGRhdGVGb2N1c0Fw
cGVhcmFuY2VUaW1lckZpcmVkKQpAQCAtMTEwMSw0ICsxMTk2LDE3IEBAIFJlbmRlclN0eWxlKiBF
bGVtZW50Ojpjb21wdXRlZFN0eWxlKCkKICAgICByZXR1cm4gcmQtPm1fY29tcHV0ZWRTdHlsZTsK
IH0KIAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRWxlbWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFt
ZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGdldEVsZW1lbnRzQnlDbGFzc05h
bWVOUygiKiIsIG5hbWUpOworfQorCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBFbGVtZW50OjpnZXRF
bGVtZW50c0J5Q2xhc3NOYW1lTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IFN0
cmluZyYgY2xhc3NOYW1lKQoreworICAgIGlmIChjbGFzc05hbWUuaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiAwOworCisgICAgcmV0dXJuIG5ldyBDbGFzc05vZGVMaXN0KHRoaXMsIG5hbWVzcGFj
ZVVSSS5pc0VtcHR5KCkgPyBudWxsQXRvbSA6IEF0b21pY1N0cmluZyhuYW1lc3BhY2VVUkkpLCBj
bGFzc05hbWUpOworfQorCiB9CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAyNTAyNCkKKysrIFdlYkNvcmUv
ZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTYzLDYgKzE2Myw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGJsdXIoKTsKICAgICBib29sIG5lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCkg
Y29uc3QgeyByZXR1cm4gbV9uZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZTsgfQogICAgIHZvaWQg
c2V0TmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGUoYm9vbCBiKSB7IG1fbmVlZHNGb2N1c0FwcGVh
cmFuY2VVcGRhdGUgPSBiOyB9CisgICAgCisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcmKTsKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lTlMoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7
CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSogLCBE
ZXByZWNhdGVkU3RyaW5nIGluZCA9ICIiKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1l
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShyZXZpc2lvbiAy
NTAyNCkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC05NCw3
ICs5NCwxMSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5l
ZWRlZChpbiBbT3B0aW9uYWxdIGJvb2xlYW4gY2VudGVySWZOZWVkZWQpOwogICAgICAgICB2b2lk
IHNjcm9sbEJ5TGluZXMoaW4gbG9uZyBsaW5lcyk7CiAgICAgICAgIHZvaWQgc2Nyb2xsQnlQYWdl
cyhpbiBsb25nIHBhZ2VzKTsKLQorICAgICAgICAKKyAgICAgICAgLy8gSFRNTCA1CisgICAgICAg
IE5vZGVMaXN0IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoaW4gRE9NU3RyaW5nIG5hbWUpOworICAg
ICAgICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9O
dWxsU3RyaW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGNsYXNzTmFtZSk7CiAjaWYgZGVmaW5l
ZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykKICAgICAgICAgLy8gT2JqZWN0aXZlLUMgZXh0ZW5zaW9u
cwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15991</attachid>
            <date>2007-08-15 20:06:18 -0700</date>
            <delta_ts>2007-08-22 10:49:30 -0700</delta_ts>
            <desc>Updated to not have nasty code duplication</desc>
            <filename>get-elements-by-class-name2.txt</filename>
            <type>text/plain</type>
            <size>29693</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAyNTEwMikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTUsNiArMzU1LDggQEAKIAkJNTFGMTFFMTUwQTQ4QzI5MjAwMzRB
MjRFIC8qIFNRTFRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxRjExRTE0MEE0OEMyOTIwMDM0QTI0RSAvKiBTUUxUcmFuc2FjdGlv
bi5jcHAgKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1l
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEw
QkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBC
Q0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBR
dWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJNjM0MDk0N0QwQzcyQjM4NzAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3QuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDA5NDdCMEM3MkIz
ODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjM0MDk0N0UwQzcyQjM4NzAwRjBDNTk4IC8qIENsYXNz
TmFtZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjM0MDk0N0MwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3QuY3BwICovOyB9Owog
CQk2NTBFM0Y2QTBBRjZDMTY4MDAxRkEzQUQgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUwRTNGNjgwQUY2QzE2
ODAwMUZBM0FEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLzsgfTsKIAkJNjUwRjUzREMwOUQx
NUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1MEY1M0RCMDlEMTVEREEwMEM5QjBDOCAvKiBDU1NHcmFtbWFy
LmggKi87IH07CiAJCTY1MEY1M0REMDlEMTVEREYwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ0MDlE
MTMwNDMwMDBFNjFENyAvKiBDU1NHcmFtbWFyLmNwcCAqLzsgfTsKQEAgLTE2MTUsNyArMTYxNyw2
IEBACiAJCTkzRjE5OUJEMDgyNDVFNTkwMDFFOUFCQyAvKiBBWE9iamVjdENhY2hlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk5OEE1QzA1MkI1OUND
MDAxN0E2QzEgLyogQVhPYmplY3RDYWNoZS5oICovOyB9OwogCQk5M0YxOTlCRTA4MjQ1RTU5MDAx
RTlBQkMgLyogQmxvY2tFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA2NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRp
b25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
OTNGMTk5QzIwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVLZXlHZW5lcmF0b3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QjJCMUY3MDU2QkVGM0Ew
MEQyQjc3MSAvKiBXZWJDb3JlS2V5R2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk5Q0YwODI0NUU1OTAwMUU5QUJDIC8qIEF0
b21pY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDM0IzNjQ3MDVDOUQ1RTIwMEU0MjkwMiAvKiBBdG9taWNTdHJpbmdMaXN0LmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5REUw
ODI0NUU1OTAwMUU5QUJDIC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCRTkxRkM4QjA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24u
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0Yx
OTlFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1lbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjZBM0Q2MDY2M0JGMDQwMDREMjkx
OSAvKiBIVE1MQ2FudmFzRWxlbWVudC5oICovOyB9OwogCQk5M0YxOTlFNzA4MjQ1RTU5MDAxRTlB
QkMgLyogQ2xpcGJvYXJkTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAyRDkwNjYwQjA2NjVEOTM3MDA2QjZGMUEgLyogQ2xpcGJvYXJkTWFjLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTM2MTEsNiAr
MzYxMiw4IEBACiAJCTU1OTk4QTVCMDUyQjU5Q0MwMDE3QTZDMSAvKiBXZWJDb3JlQVhPYmplY3Qu
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVu
dFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXZWJDb3JlQVhPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTk5OEE1QzA1MkI1OUNDMDAxN0E2QzEgLyogQVhP
YmplY3RDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBWE9iamVjdENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTk5OEE1RDA1MkI1OUNDMDAxN0E2QzEgLyogQVhP
YmplY3RDYWNoZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFYT2JqZWN0Q2FjaGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk2MzQwOTQ3QjBDNzJCMzg2
MDBGMEM1OTggLyogQ2xhc3NOYW1lTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDbGFzc05hbWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYzNDA5
NDdDMEM3MkIzODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTmFtZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk2NTBFM0Y2ODBBRjZDMTY4MDAxRkEzQUQgLyogUmVzb3VyY2VSZXF1ZXN0
TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNl
UmVxdWVzdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUwRjUzREIwOUQx
NUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENTU0dyYW1tYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxODg4
ODYwQUZGM0JGNzAwMTY0NzIwIC8qIFJlc291cmNlRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtNjExMiw3ICs2MTE1LDYgQEAKIAkJQkMzMDVDNzcwQzA3NkJCMzAwQ0Qy
MEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVu
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNUNBMzBDMDc4MUJCMDBDRDIw
RjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMzQjM2NDcwNUM5RDVFMjAwRTQyOTAyIC8qIEF0b21pY1N0
cmluZ0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQXRvbWljU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0
aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkMzQzM5QjQwQzBEM0Q4RDAwNUY0RDdBIC8qIEpT
TWVkaWFMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01l
ZGlhTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0MzOUI1MEMwRDNE
OEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNNZWRpYUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzRkNB
QTgwQUMzREI1ODAwQkE1NEFEIC8qIFBsYXRmb3JtU2Nyb2xsQmFyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVNjcm9sbEJhci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTAwMTMsNyArMTAwMTUsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKIAkJCQlBNzg0OTQxQTBCNUZFNTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJk
LmNwcCAqLywKLQkJCQlCQzNCMzY0NzA1QzlENUUyMDBFNDI5MDIgLyogQXRvbWljU3RyaW5nTGlz
dC5oICovLAorCQkJCTYzNDA5NDdCMEM3MkIzODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0Lmgg
Ki8sCisJCQkJNjM0MDk0N0MwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3QuY3BwICov
LAogCQkJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAqLywKIAkJCQlBOEM0
QTdGQjA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5oICovLAogCQkJCTkzRUVDMUU1MDlDMjg3Nzcw
MEM1MTVEMSAvKiBBdHRyLmlkbCAqLywKQEAgLTEwMjEzLDcgKzEwMjE2LDYgQEAKIAkJCQk5M0Yx
OTlCRDA4MjQ1RTU5MDAxRTlBQkMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNGMTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNGMTk5QzIwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVLZXlHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRjE5OUNGMDgyNDVFNTkwMDFFOUFCQyAvKiBBdG9t
aWNTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlERTA4MjQ1RTU5MDAxRTlB
QkMgLyogUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUU1MDgyNDVFNTkwMDFF
OUFCQyAvKiBIVE1MQ2FudmFzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5RTcw
ODI0NUU1OTAwMUU5QUJDIC8qIENsaXBib2FyZE1hYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMTcx
Miw2ICsxMTcxNCw3IEBACiAJCQkJMEYzMUNCRjkyQjY1NDczMEJBMDUzNUU4IC8qIEJpZGlDb250
ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDMyRTg0NzBDNTE0OTM4MDBCMTUwMEYgLyogR0ND
b250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYg
LyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjM0MDk0N0QwQzcyQjM4NzAwRjBD
NTk4IC8qIENsYXNzTmFtZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTE3NTAsNyArMTE3NTMs
NiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi8gPSB7
CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRDb25maWd1cmF0aW9uTGlzdCA9IDE0OUMy
ODQzMDg5MDJCMTEwMDhBOUVGQyAvKiBCdWlsZCBjb25maWd1cmF0aW9uIGxpc3QgZm9yIFBCWFBy
b2plY3QgIldlYkNvcmUiICovOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlr
bm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTEzMTczLDYgKzEzMTc1LDcgQEAKIAkJ
CQlCQzJFRDZCQzBDNkJEMkYwMDA5MjBCRkYgLyogSlNBdHRyQ3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDMkVEN0E1MEM2QzBGMzYwMDkyMEJGRiAvKiBKU0hUTUxGcmFtZUVsZW1lbnRD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTE0QjNGNzYwQzcyMjA1NTAwMDUzMERGIC8q
IEZpbGVTeXN0ZW1NYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk2MzQwOTQ3RTBDNzJCMzg3MDBG
MEM1OTggLyogQ2xhc3NOYW1lTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAyNTEwMikKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsNyArMzk0LDcgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzKENTU1J1bAogICAgIGlmIChlbGVtZW50LT5oYXNJRCgp
KQogICAgICAgICBtYXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0SURSdWxlcyhlbGVtZW50LT5n
ZXRJREF0dHJpYnV0ZSgpLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsK
ICAgICBpZiAoZWxlbWVudC0+aGFzQ2xhc3MoKSkgewotICAgICAgICBmb3IgKGNvbnN0IEF0b21p
Y1N0cmluZ0xpc3QqIHNpbmdsZUNsYXNzID0gZWxlbWVudC0+Z2V0Q2xhc3NMaXN0KCk7IHNpbmds
ZUNsYXNzOyBzaW5nbGVDbGFzcyA9IHNpbmdsZUNsYXNzLT5uZXh0KCkpCisgICAgICAgIGZvciAo
Y29uc3QgQ2xhc3NOYW1lTGlzdCogc2luZ2xlQ2xhc3MgPSBlbGVtZW50LT5nZXRDbGFzc0xpc3Qo
KTsgc2luZ2xlQ2xhc3M7IHNpbmdsZUNsYXNzID0gc2luZ2xlQ2xhc3MtPm5leHQoKSkKICAgICAg
ICAgICAgIG1hdGNoUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRDbGFzc1J1bGVzKHNpbmdsZUNsYXNz
LT5zdHJpbmcoKS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAgICAg
fQogICAgIG1hdGNoUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRUYWdSdWxlcyhlbGVtZW50LT5sb2Nh
bE5hbWUoKS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CkBAIC0xMzU1
LDcgKzEzNTUsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OmNoZWNrT25lU2VsZWN0b3IoCiAg
ICAgICAgIGlmIChzZWwtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkNsYXNzKSB7CiAgICAgICAg
ICAgICBpZiAoIWUtPmhhc0NsYXNzKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICAgICAgZm9yIChjb25zdCBBdG9taWNTdHJpbmdMaXN0KiBjID0gZS0+Z2V0Q2xhc3NM
aXN0KCk7IGM7IGMgPSBjLT5uZXh0KCkpCisgICAgICAgICAgICBmb3IgKGNvbnN0IENsYXNzTmFt
ZUxpc3QqIGMgPSBlLT5nZXRDbGFzc0xpc3QoKTsgYzsgYyA9IGMtPm5leHQoKSkKICAgICAgICAg
ICAgICAgICBpZiAoYy0+c3RyaW5nKCkgPT0gc2VsLT5tX3ZhbHVlKQogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKSW5kZXg6IFdlYkNv
cmUvZG9tL0F0b21pY1N0cmluZ0xpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9BdG9t
aWNTdHJpbmdMaXN0LmgJKHJldmlzaW9uIDI1MTAyKQorKysgV2ViQ29yZS9kb20vQXRvbWljU3Ry
aW5nTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBUaGlzIGZp
bGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxlbWVudGF0aW9uIGZvciBLREUuCi0gKgotICogQ29w
eXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
LSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
Ci0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAq
Ci0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotICogQm9z
dG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0gKgotICovCi0KLSNpZm5kZWYgQXRvbWljU3RyaW5n
TGlzdF9oCi0jZGVmaW5lIEF0b21pY1N0cmluZ0xpc3RfaAotCi0jaW5jbHVkZSAiQXRvbWljU3Ry
aW5nLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXRvbWljU3RyaW5nTGlzdCB7
Ci1wdWJsaWM6Ci0gICAgQXRvbWljU3RyaW5nTGlzdCgpIDogbV9uZXh0KDApIHt9Ci0gICAgQXRv
bWljU3RyaW5nTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIHN0ciwgQXRvbWljU3RyaW5nTGlzdCog
biA9IDApIDogbV9zdHJpbmcoc3RyKSwgbV9uZXh0KG4pIHt9Ci0gICAgfkF0b21pY1N0cmluZ0xp
c3QoKSB7IGRlbGV0ZSBtX25leHQ7IH0KLSAgICAKLSAgICBBdG9taWNTdHJpbmdMaXN0KiBuZXh0
KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0OyB9Ci0gICAgdm9pZCBzZXROZXh0KEF0b21pY1N0cmlu
Z0xpc3QqIG4pIHsgbV9uZXh0ID0gbjsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5n
KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSAgICB2b2lkIHNldFN0cmluZyhjb25zdCBB
dG9taWNTdHJpbmcmIHN0cikgeyBtX3N0cmluZyA9IHN0cjsgfQotCi0gICAgQXRvbWljU3RyaW5n
TGlzdCogY2xvbmUoKSB7IHJldHVybiBuZXcgQXRvbWljU3RyaW5nTGlzdChtX3N0cmluZywgbV9u
ZXh0ID8gbV9uZXh0LT5jbG9uZSgpIDogMCk7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBtX3N0cmlu
ZyA9IG51bGxBdG9tOyBkZWxldGUgbV9uZXh0OyBtX25leHQgPSAwOyB9Ci0gICAgCi1wcml2YXRl
OgotICAgIEF0b21pY1N0cmluZyBtX3N0cmluZzsKLSAgICBBdG9taWNTdHJpbmdMaXN0KiBtX25l
eHQ7Ci19OwotCi19Ci0KLSNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0Zmlz
aC5tYW5AZ21haWwuY29tKQorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVT
QS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQ2xhc3NOYW1lTGlzdC5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitib29sIENsYXNzTmFtZUxpc3Q6OmNvbnRh
aW5zKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyKSBjb25zdCAKK3sgCisgICAgZm9yKGNvbnN0IENs
YXNzTmFtZUxpc3QgKnQgPSB0aGlzOyB0OyB0ID0gdC0+bmV4dCgpKSAKKyAgICB7IAorICAgICAg
ICBpZih0LT5zdHJpbmcoKSA9PSBzdHIpIAorICAgICAgICAgICAgcmV0dXJuIHRydWU7IAorICAg
IH0gCisgICAgcmV0dXJuIGZhbHNlOyAKK30KKworaW5saW5lIHN0YXRpYyBib29sIGlzQ2xhc3NX
aGl0ZXNwYWNlKFVDaGFyIGMpCit7CisgICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1xyJyB8
fCBjID09ICdcbicgfHwgYyA9PSAnXHQnOworfQorCit2b2lkIENsYXNzTmFtZUxpc3Q6OnBhcnNl
Q2xhc3NBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBjbGFzc1N0ciwgY29uc3QgYm9vbCBpbkNvbXBh
dE1vZGUpCit7CisgICAgdGhpcy0+Y2xlYXIoKTsKKyAgICAKKyAgICBTdHJpbmcgY2xhc3NBdHRy
ID0gaW5Db21wYXRNb2RlID8gCisgICAgICAgIChjbGFzc1N0ci5pbXBsKCktPmlzTG93ZXIoKSA/
IGNsYXNzU3RyIDogU3RyaW5nKGNsYXNzU3RyLmltcGwoKS0+bG93ZXIoKSkpIDoKKyAgICAgICAg
Y2xhc3NTdHI7CisgICAgCisgICAgQ2xhc3NOYW1lTGlzdCogY3VyciA9IDA7CisgICAgCisgICAg
Y29uc3QgVUNoYXIqIHN0ciA9IGNsYXNzQXR0ci5jaGFyYWN0ZXJzKCk7CisgICAgaW50IGxlbmd0
aCA9IGNsYXNzQXR0ci5sZW5ndGgoKTsKKyAgICBpbnQgc1BvcyA9IDA7CisgICAgCisgICAgd2hp
bGUgKHRydWUpIHsKKyAgICAgICAgd2hpbGUgKHNQb3MgPCBsZW5ndGggJiYgaXNDbGFzc1doaXRl
c3BhY2Uoc3RyW3NQb3NdKSkKKyAgICAgICAgICAgICsrc1BvczsKKyAgICAgICAgaWYgKHNQb3Mg
Pj0gbGVuZ3RoKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGludCBlUG9zID0gc1BvcyAr
IDE7CisgICAgICAgIHdoaWxlIChlUG9zIDwgbGVuZ3RoICYmICFpc0NsYXNzV2hpdGVzcGFjZShz
dHJbZVBvc10pKQorICAgICAgICAgICAgKytlUG9zOworICAgICAgICBpZiAoY3VycikgeworICAg
ICAgICAgICAgY3Vyci0+c2V0TmV4dChuZXcgQ2xhc3NOYW1lTGlzdChBdG9taWNTdHJpbmcoc3Ry
ICsgc1BvcywgZVBvcyAtIHNQb3MpKSk7CisgICAgICAgICAgICBjdXJyID0gY3Vyci0+bmV4dCgp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHNQb3MgPT0gMCAmJiBlUG9zID09
IGxlbmd0aCkgeworICAgICAgICAgICAgICAgIG1fc3RyaW5nID0gQXRvbWljU3RyaW5nKGNsYXNz
QXR0cik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBtX3N0cmluZyA9IEF0b21pY1N0cmluZyhzdHIgKyBzUG9zLCBlUG9zIC0gc1Bvcyk7CisgICAg
ICAgICAgICBjdXJyID0gdGhpczsKKyAgICAgICAgfQorICAgICAgICBzUG9zID0gZVBvcyArIDE7
CisgICAgfQorfQorICAgIAorfQpJbmRleDogV2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NsYXNzTmFtZUxpc3QuaAkocmV2aXNpb24gMjUwODkp
CShmcm9tIFdlYkNvcmUvZG9tL0F0b21pY1N0cmluZ0xpc3QuaDoyNTA4OSkKKysrIFdlYkNvcmUv
ZG9tL0NsYXNzTmFtZUxpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUxIEBACisvKgor
ICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgor
ICoKKyAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQv
b3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
KiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz
MCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICoKKyAqLworCisjaWZuZGVmIEF0
b21pY1N0cmluZ0xpc3RfaAorI2RlZmluZSBBdG9taWNTdHJpbmdMaXN0X2gKKworI2luY2x1ZGUg
IkF0b21pY1N0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEF0b21pY1N0
cmluZ0xpc3QgeworcHVibGljOgorICAgIEF0b21pY1N0cmluZ0xpc3QoKSA6IG1fbmV4dCgwKSB7
fQorICAgIEF0b21pY1N0cmluZ0xpc3QoY29uc3QgQXRvbWljU3RyaW5nJiBzdHIsIEF0b21pY1N0
cmluZ0xpc3QqIG4gPSAwKSA6IG1fc3RyaW5nKHN0ciksIG1fbmV4dChuKSB7fQorICAgIH5BdG9t
aWNTdHJpbmdMaXN0KCkgeyBkZWxldGUgbV9uZXh0OyB9CisgICAgCisgICAgQXRvbWljU3RyaW5n
TGlzdCogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQorICAgIHZvaWQgc2V0TmV4dChB
dG9taWNTdHJpbmdMaXN0KiBuKSB7IG1fbmV4dCA9IG47IH0KKyAgICBjb25zdCBBdG9taWNTdHJp
bmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgdm9pZCBzZXRTdHJp
bmcoY29uc3QgQXRvbWljU3RyaW5nJiBzdHIpIHsgbV9zdHJpbmcgPSBzdHI7IH0KKworICAgIEF0
b21pY1N0cmluZ0xpc3QqIGNsb25lKCkgeyByZXR1cm4gbmV3IEF0b21pY1N0cmluZ0xpc3QobV9z
dHJpbmcsIG1fbmV4dCA/IG1fbmV4dC0+Y2xvbmUoKSA6IDApOyB9CisgICAgdm9pZCBjbGVhcigp
IHsgbV9zdHJpbmcgPSBudWxsQXRvbTsgZGVsZXRlIG1fbmV4dDsgbV9uZXh0ID0gMDsgfQorICAg
IAorcHJpdmF0ZToKKyAgICBBdG9taWNTdHJpbmcgbV9zdHJpbmc7CisgICAgQXRvbWljU3RyaW5n
TGlzdCogbV9uZXh0OworfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0NsYXNz
TmFtZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmgJKHJl
dmlzaW9uIDI1MDg5KQorKysgV2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yMCwzMiArMjAsMzggQEAKICAqCiAgKi8KIAotI2lmbmRlZiBBdG9taWNTdHJpbmdM
aXN0X2gKLSNkZWZpbmUgQXRvbWljU3RyaW5nTGlzdF9oCisjaWZuZGVmIENsYXNzTmFtZUxpc3Rf
aAorI2RlZmluZSBDbGFzc05hbWVMaXN0X2gKIAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEF0b21pY1N0cmluZ0xpc3QgewotcHVibGlj
OgotICAgIEF0b21pY1N0cmluZ0xpc3QoKSA6IG1fbmV4dCgwKSB7fQotICAgIEF0b21pY1N0cmlu
Z0xpc3QoY29uc3QgQXRvbWljU3RyaW5nJiBzdHIsIEF0b21pY1N0cmluZ0xpc3QqIG4gPSAwKSA6
IG1fc3RyaW5nKHN0ciksIG1fbmV4dChuKSB7fQotICAgIH5BdG9taWNTdHJpbmdMaXN0KCkgeyBk
ZWxldGUgbV9uZXh0OyB9CiAgICAgCi0gICAgQXRvbWljU3RyaW5nTGlzdCogbmV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmV4dDsgfQotICAgIHZvaWQgc2V0TmV4dChBdG9taWNTdHJpbmdMaXN0KiBu
KSB7IG1fbmV4dCA9IG47IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRTdHJpbmcoY29uc3QgQXRvbWljU3Ry
aW5nJiBzdHIpIHsgbV9zdHJpbmcgPSBzdHI7IH0KLQotICAgIEF0b21pY1N0cmluZ0xpc3QqIGNs
b25lKCkgeyByZXR1cm4gbmV3IEF0b21pY1N0cmluZ0xpc3QobV9zdHJpbmcsIG1fbmV4dCA/IG1f
bmV4dC0+Y2xvbmUoKSA6IDApOyB9Ci0gICAgdm9pZCBjbGVhcigpIHsgbV9zdHJpbmcgPSBudWxs
QXRvbTsgZGVsZXRlIG1fbmV4dDsgbV9uZXh0ID0gMDsgfQorICAgIGNsYXNzIERvY3VtZW50Owog
ICAgIAorICAgIGNsYXNzIENsYXNzTmFtZUxpc3QgeworcHVibGljOgorICAgICAgICBDbGFzc05h
bWVMaXN0KCkgOiBtX25leHQoMCkge30KKyAgICAgICAgQ2xhc3NOYW1lTGlzdChjb25zdCBBdG9t
aWNTdHJpbmcmIHN0ciwgQ2xhc3NOYW1lTGlzdCogbiA9IDApIDogbV9zdHJpbmcoc3RyKSwgbV9u
ZXh0KG4pIHt9CisgICAgICAgIH5DbGFzc05hbWVMaXN0KCkgeyBkZWxldGUgbV9uZXh0OyB9Cisg
ICAgICAgIAorICAgICAgICBDbGFzc05hbWVMaXN0KiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9u
ZXh0OyB9CisgICAgICAgIHZvaWQgc2V0TmV4dChDbGFzc05hbWVMaXN0KiBuKSB7IG1fbmV4dCA9
IG47IH0KKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVy
biBtX3N0cmluZzsgfQorICAgICAgICB2b2lkIHNldFN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcm
IHN0cikgeyBtX3N0cmluZyA9IHN0cjsgfQorICAgICAgICAgICAgICAgIAorICAgICAgICBib29s
IGNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworCisgICAgICAgIHZvaWQgcGFy
c2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKTsKKyAgICAgICAgICAg
ICAgICAKKyAgICAgICAgQ2xhc3NOYW1lTGlzdCogY2xvbmUoKSB7IHJldHVybiBuZXcgQ2xhc3NO
YW1lTGlzdChtX3N0cmluZywgbV9uZXh0ID8gbV9uZXh0LT5jbG9uZSgpIDogMCk7IH0KKyAgICAg
ICAgdm9pZCBjbGVhcigpIHsgbV9zdHJpbmcgPSBudWxsQXRvbTsgZGVsZXRlIG1fbmV4dDsgbV9u
ZXh0ID0gMDsgfQorICAgICAgICAKIHByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5nIG1fc3RyaW5n
OwotICAgIEF0b21pY1N0cmluZ0xpc3QqIG1fbmV4dDsKLX07Ci0KKyAgICAgICAgQXRvbWljU3Ry
aW5nIG1fc3RyaW5nOworICAgICAgICBDbGFzc05hbWVMaXN0KiBtX25leHQ7CisgICAgfTsKKyAg
ICAKIH0KIAogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNTEwMikKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQwOCw2ICszNDA4LDE2IEBA
IFBhc3NSZWZQdHI8TmFtZU5vZGVMaXN0PiBEb2N1bWVudDo6Z2V0RWwKICAgICByZXR1cm4gbmV3
IE5hbWVOb2RlTGlzdCh0aGlzLCBlbGVtZW50TmFtZSk7CiB9CiAKK1Bhc3NSZWZQdHI8Tm9kZUxp
c3Q+IERvY3VtZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyAmY2xhc3NO
YW1lKQoreworICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQoKS0+Z2V0RWxlbWVudHNCeUNsYXNz
TmFtZShjbGFzc05hbWUpOworfQorCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6Z2V0
RWxlbWVudHNCeUNsYXNzTmFtZU5TKGNvbnN0IFN0cmluZyAmbmFtZXNwYWNlVVJJLCBjb25zdCBT
dHJpbmcgJmNsYXNzTmFtZSkKK3sKKyAgICByZXR1cm4gZG9jdW1lbnRFbGVtZW50KCktPmdldEVs
ZW1lbnRzQnlDbGFzc05hbWVOUyhuYW1lc3BhY2VVUkksIGNsYXNzTmFtZSk7Cit9CisKIHZvaWQg
RG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgc2V0UGFyc2luZyhmYWxzZSk7Cklu
ZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgJKHJldmlzaW9uIDI1MTAyKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiw4IEBAIHB1YmxpYzoKICAgICBQYXNzUmVmUHRyPE5v
ZGU+IGFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9uQ29kZSYpOwog
ICAgIAogICAgIFBhc3NSZWZQdHI8TmFtZU5vZGVMaXN0PiBnZXRFbGVtZW50c0J5TmFtZShjb25z
dCBTdHJpbmcmIGVsZW1lbnROYW1lKTsKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyAmY2xhc3NOYW1lKTsKKyAgICBQYXNzUmVmUHRy
PE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lTlMoY29uc3QgU3RyaW5nICZuYW1lc3Bh
Y2VVUkksIGNvbnN0IFN0cmluZyAmY2xhc3NOYW1lKTsKIAogICAgIC8vIEFjdHVhbGx5IHBhcnQg
b2YgSlNIVE1MRG9jdW1lbnQsIGJ1dCB1c2VkIGZvciBnaXZpbmcgWE1MIGRvY3VtZW50cyBhIHdp
bmRvdyB0aXRsZSBhcyB3ZWxsCiAgICAgU3RyaW5nIHRpdGxlKCkgY29uc3QgeyByZXR1cm4gbV90
aXRsZTsgfQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gMjUxMDIpCisrKyBXZWJDb3JlL2RvbS9E
b2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw2ICsxODIsMTAgQEAgbW9kdWxlIGNv
cmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
biBbT3B0aW9uYWxdIGJvb2xlYW4gYXV0aG9yT25seSk7CiAjZW5kaWYKIAorICAgICAgICAvL0hU
TUwgNQorICAgICAgICBOb2RlTGlzdCAgICAgICAgICAgIGdldEVsZW1lbnRzQnlDbGFzc05hbWUo
aW4gRE9NU3RyaW5nIHRhZ25hbWUpOworICAgICAgICBOb2RlTGlzdCAgICAgICAgICAgIGdldEVs
ZW1lbnRzQnlDbGFzc05hbWVOUyhpbiBbQ29udmVydE51bGxUb051bGxTdHJpbmddIERPTVN0cmlu
ZyBuYW1lc3BhY2VVUkksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIERPTVN0cmluZyBjbGFzc05hbWUpOwogICAgIH07CiAKIH0KSW5kZXg6
IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAyNTEwMikKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotLyoKKyAgICAvKgogICogQ29weXJpZ2h0IChDKSAx
OTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0
ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKQEAgLTQxLDYgKzQxLDggQEAKICNpbmNsdWRlICJUZXh0
SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAiWE1MTmFtZXMu
aCIKKyNpbmNsdWRlICJOb2RlTGlzdC5oIgorI2luY2x1ZGUgIkNsYXNzTmFtZUxpc3QuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC04OCw2ICs5MCw2OSBAQCB2b2lkIEVsZW1lbnRSYXJl
RGF0YTo6cmVzZXRDb21wdXRlZFN0eWxlCiAgICAgbV9jb21wdXRlZFN0eWxlID0gMDsKIH0KIAor
Ly8gTm9kZUxpc3QgdGhhdCBsaW1pdHMgdG8gYSBwYXJ0aWN1bGFyIGNsYXNzLgorY2xhc3MgQ2xh
c3NOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CitwdWJsaWM6CisgICAgQ2xhc3NOb2RlTGlz
dChQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWVzcGFj
ZVVSSSwgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05hbWUpOworICAgIAorICAgIHZpcnR1YWwg
dW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgdmlydHVhbCBib29sIG5vZGVNYXRj
aGVzKE5vZGUgKikgY29uc3Q7CisgICAgCisgICAgQXRvbWljU3RyaW5nIG1fbmFtZXNwYWNlVVJJ
OworICAgIENsYXNzTmFtZUxpc3QgbV9jbGFzc0xpc3Q7Cit9OworCitpbmxpbmUgc3RhdGljIGJv
b2wgaXNDbGFzc1doaXRlc3BhY2UoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gYyA9PSAnICcgfHwg
YyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCc7Cit9CisKK0NsYXNzTm9kZUxpc3Q6
OkNsYXNzTm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlPiByb290Tm9kZSwgY29uc3QgQXRvbWljU3Ry
aW5nJiBuYW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lKQorOiBOb2Rl
TGlzdChyb290Tm9kZSksIG1fbmFtZXNwYWNlVVJJKG5hbWVzcGFjZVVSSSkKK3sKKyAgICBBU1NF
UlQobV9uYW1lc3BhY2VVUkkuaXNOdWxsKCkgfHwgIW1fbmFtZXNwYWNlVVJJLmlzRW1wdHkoKSk7
CisgICAgCisgICAgbV9jbGFzc0xpc3QgPSAqKG5ldyBDbGFzc05hbWVMaXN0KCkpOworICAgIG1f
Y2xhc3NMaXN0LnBhcnNlQ2xhc3NBdHRyaWJ1dGUoY2xhc3NOYW1lLCBtX3Jvb3ROb2RlLT5kb2N1
bWVudCgpLT5pbkNvbXBhdE1vZGUoKSk7Cit9CisKK3Vuc2lnbmVkIENsYXNzTm9kZUxpc3Q6Omxl
bmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlY3Vyc2l2ZUxlbmd0aCgpOworfQorCitOb2Rl
KiBDbGFzc05vZGVMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIHJldHVy
biByZWN1cnNpdmVJdGVtKGluZGV4KTsKK30KKworYm9vbCBDbGFzc05vZGVMaXN0Ojpub2RlTWF0
Y2hlcyhOb2RlKiB0ZXN0Tm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIXRlc3ROb2RlLT5pc0VsZW1l
bnROb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAobV9uYW1lc3Bh
Y2VVUkkgIT0gc3RhckF0b20gJiYgbV9uYW1lc3BhY2VVUkkgIT0gdGVzdE5vZGUtPm5hbWVzcGFj
ZVVSSSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCF0ZXN0Tm9kZS0+
aGFzQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGNvbnN0IENsYXNz
TmFtZUxpc3QqIHQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4odGVzdE5vZGUpLT5nZXRDbGFzc0xp
c3QoKTsKKyAgICAKKyAgICBmb3IgKGNvbnN0IENsYXNzTmFtZUxpc3QqIGMgPSAmbV9jbGFzc0xp
c3Q7IGM7IGMgPSBjLT5uZXh0KCkpCisgICAgeworICAgICAgICBpZih0LT5jb250YWlucyhjLT5z
dHJpbmcoKSkpCisgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKIEVsZW1lbnQ6OkVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUsIERvY3VtZW50ICpkb2MpCiAgICAgOiBDb250YWluZXJO
b2RlKGRvYykKICAgICAsIG1fdXBkYXRlRm9jdXNBcHBlYXJhbmNlVGltZXIodGhpcywgJkVsZW1l
bnQ6OnVwZGF0ZUZvY3VzQXBwZWFyYW5jZVRpbWVyRmlyZWQpCkBAIC0xODUsNyArMjUwLDcgQEAg
Tm9kZTo6Tm9kZVR5cGUgRWxlbWVudDo6bm9kZVR5cGUoKSBjb25zdAogICAgIHJldHVybiBFTEVN
RU5UX05PREU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZ0xpc3QqIEVsZW1lbnQ6OmdldENsYXNz
TGlzdCgpIGNvbnN0Citjb25zdCBDbGFzc05hbWVMaXN0KiBFbGVtZW50OjpnZXRDbGFzc0xpc3Qo
KSBjb25zdAogewogICAgIHJldHVybiAwOwogfQpAQCAtMTEwMSw0ICsxMTY2LDE3IEBAIFJlbmRl
clN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKCkKICAgICByZXR1cm4gcmQtPm1fY29tcHV0
ZWRTdHlsZTsKIH0KIAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRWxlbWVudDo6Z2V0RWxlbWVudHNC
eUNsYXNzTmFtZShjb25zdCBTdHJpbmcmIG5hbWUpCit7CisgICAgcmV0dXJuIGdldEVsZW1lbnRz
QnlDbGFzc05hbWVOUygiKiIsIG5hbWUpOworfQorCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBFbGVt
ZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lTlMoY29uc3QgU3RyaW5nJiBuYW1lc3BhY2VVUkks
IGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lKQoreworICAgIGlmIChjbGFzc05hbWUuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIG5ldyBDbGFzc05vZGVMaXN0KHRoaXMs
IG5hbWVzcGFjZVVSSS5pc0VtcHR5KCkgPyBudWxsQXRvbSA6IEF0b21pY1N0cmluZyhuYW1lc3Bh
Y2VVUkkpLCBjbGFzc05hbWUpOworfQorCiB9CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZpc2lvbiAyNTEwMikKKysr
IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIsNyArMzIsNyBAQAog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF0b21pY1N0cmluZ0xpc3Q7CitjbGFzcyBD
bGFzc05hbWVMaXN0OwogY2xhc3MgQXR0cjsKIGNsYXNzIEF0dHJpYnV0ZTsKIGNsYXNzIENTU1N0
eWxlRGVjbGFyYXRpb247CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICB+RWxlbWVudCgp
OwogCiAgICAgLy8gVXNlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCBhbiBl
bGVtZW50IGhhcyBhIGdpdmVuIENTUyBjbGFzcy4KLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0
cmluZ0xpc3QqIGdldENsYXNzTGlzdCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NO
YW1lTGlzdCogZ2V0Q2xhc3NMaXN0KCkgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBn
ZXRJREF0dHJpYnV0ZSgpIGNvbnN0OwogICAgIGJvb2wgaGFzQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CkBAIC0xNjMsNiArMTYzLDkgQEAgcHVibGljOgog
ICAgIHZvaWQgYmx1cigpOwogICAgIGJvb2wgbmVlZHNGb2N1c0FwcGVhcmFuY2VVcGRhdGUoKSBj
b25zdCB7IHJldHVybiBtX25lZWRzRm9jdXNBcHBlYXJhbmNlVXBkYXRlOyB9CiAgICAgdm9pZCBz
ZXROZWVkc0ZvY3VzQXBwZWFyYW5jZVVwZGF0ZShib29sIGIpIHsgbV9uZWVkc0ZvY3VzQXBwZWFy
YW5jZVVwZGF0ZSA9IGI7IH0KKyAgICAKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyYpOworICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+
IGdldEVsZW1lbnRzQnlDbGFzc05hbWVOUyhjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKTsK
IAogI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUZXh0U3RyZWFtKiAsIERl
cHJlY2F0ZWRTdHJpbmcgaW5kID0gIiIpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVu
dC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDI1
MTAyKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTk0LDcg
Kzk0LDExIEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBzY3JvbGxJbnRvVmlld0lmTmVl
ZGVkKGluIFtPcHRpb25hbF0gYm9vbGVhbiBjZW50ZXJJZk5lZWRlZCk7CiAgICAgICAgIHZvaWQg
c2Nyb2xsQnlMaW5lcyhpbiBsb25nIGxpbmVzKTsKICAgICAgICAgdm9pZCBzY3JvbGxCeVBhZ2Vz
KGluIGxvbmcgcGFnZXMpOwotCisgICAgICAgIAorICAgICAgICAvLyBIVE1MIDUKKyAgICAgICAg
Tm9kZUxpc3QgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShpbiBET01TdHJpbmcgbmFtZSk7CisgICAg
ICAgIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlDbGFzc05hbWVOUyhpbiBbQ29udmVydE51bGxUb051
bGxTdHJpbmddIERPTVN0cmluZyBuYW1lc3BhY2VVUkksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBET01TdHJpbmcgY2xhc3NOYW1lKTsKICNpZiBkZWZpbmVk
KExBTkdVQUdFX09CSkVDVElWRV9DKQogICAgICAgICAvLyBPYmplY3RpdmUtQyBleHRlbnNpb25z
CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaW5uZXJUZXh0OwpJbmRleDog
V2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9OYW1lZE1hcHBlZEF0dHJNYXAuY3BwCShyZXZpc2lvbiAyNTEwMikKKysrIFdlYkNvcmUv
ZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDQ4ICs3Niwx
NSBAQCBib29sIE5hbWVkTWFwcGVkQXR0ck1hcDo6bWFwc0VxdWl2YWxlbnQoCiAgICAgcmV0dXJu
IHRydWU7CiB9CiAKLWlubGluZSBzdGF0aWMgYm9vbCBpc0NsYXNzV2hpdGVzcGFjZShVQ2hhciBj
KQotewotICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdccicgfHwgYyA9PSAnXG4nIHx8IGMg
PT0gJ1x0JzsKLX0KLQotdm9pZCBOYW1lZE1hcHBlZEF0dHJNYXA6OnBhcnNlQ2xhc3NBdHRyaWJ1
dGUoY29uc3QgU3RyaW5nJiBjbGFzc1N0cikKLXsKLSAgICBtX2NsYXNzTGlzdC5jbGVhcigpOwot
ICAgIGlmICghZWxlbWVudC0+aGFzQ2xhc3MoKSkKK3ZvaWQgTmFtZWRNYXBwZWRBdHRyTWFwOjpw
YXJzZUNsYXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgY2xhc3NTdHIpIAoreyAKKyAgICBpZigh
ZWxlbWVudC0+aGFzQ2xhc3MoKSkgCisgICAgeyAKKyAgICAgICAgbV9jbGFzc0xpc3QuY2xlYXIo
KTsgCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBTdHJpbmcgY2xhc3NBdHRyID0gZWxlbWVu
dC0+ZG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkgPyAKLSAgICAgICAgKGNsYXNzU3RyLmltcGwo
KS0+aXNMb3dlcigpID8gY2xhc3NTdHIgOiBTdHJpbmcoY2xhc3NTdHIuaW1wbCgpLT5sb3dlcigp
KSkgOgotICAgICAgICBjbGFzc1N0cjsKLSAgICAKLSAgICBBdG9taWNTdHJpbmdMaXN0KiBjdXJy
ID0gMDsKLSAgICAKLSAgICBjb25zdCBVQ2hhciogc3RyID0gY2xhc3NBdHRyLmNoYXJhY3RlcnMo
KTsKLSAgICBpbnQgbGVuZ3RoID0gY2xhc3NBdHRyLmxlbmd0aCgpOwotICAgIGludCBzUG9zID0g
MDsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHdoaWxlIChzUG9zIDwgbGVuZ3RoICYm
IGlzQ2xhc3NXaGl0ZXNwYWNlKHN0cltzUG9zXSkpCi0gICAgICAgICAgICArK3NQb3M7Ci0gICAg
ICAgIGlmIChzUG9zID49IGxlbmd0aCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpbnQg
ZVBvcyA9IHNQb3MgKyAxOwotICAgICAgICB3aGlsZSAoZVBvcyA8IGxlbmd0aCAmJiAhaXNDbGFz
c1doaXRlc3BhY2Uoc3RyW2VQb3NdKSkKLSAgICAgICAgICAgICsrZVBvczsKLSAgICAgICAgaWYg
KGN1cnIpIHsKLSAgICAgICAgICAgIGN1cnItPnNldE5leHQobmV3IEF0b21pY1N0cmluZ0xpc3Qo
QXRvbWljU3RyaW5nKHN0ciArIHNQb3MsIGVQb3MgLSBzUG9zKSkpOwotICAgICAgICAgICAgY3Vy
ciA9IGN1cnItPm5leHQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzUG9z
ID09IDAgJiYgZVBvcyA9PSBsZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBtX2NsYXNzTGlzdC5z
ZXRTdHJpbmcoQXRvbWljU3RyaW5nKGNsYXNzQXR0cikpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9jbGFzc0xpc3Quc2V0U3RyaW5nKEF0b21p
Y1N0cmluZyhzdHIgKyBzUG9zLCBlUG9zIC0gc1BvcykpOwotICAgICAgICAgICAgY3VyciA9ICZt
X2NsYXNzTGlzdDsKLSAgICAgICAgfQotICAgICAgICBzUG9zID0gZVBvcyArIDE7Ci0gICAgfQor
ICAgIH0gCisgICAgbV9jbGFzc0xpc3QucGFyc2VDbGFzc0F0dHJpYnV0ZShjbGFzc1N0ciwgZWxl
bWVudC0+ZG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkpOyAKIH0KIAorCiB9CkluZGV4OiBXZWJD
b3JlL2RvbS9OYW1lZE1hcHBlZEF0dHJNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9O
YW1lZE1hcHBlZEF0dHJNYXAuaAkocmV2aXNpb24gMjUxMDIpCisrKyBXZWJDb3JlL2RvbS9OYW1l
ZE1hcHBlZEF0dHJNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgsOCBAQAogI2RlZmlu
ZSBOYW1lZE1hcHBlZEF0dHJNYXBfaAogCiAjaW5jbHVkZSAiTmFtZWRBdHRyTWFwLmgiCi0jaW5j
bHVkZSAiQXRvbWljU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgor
I2luY2x1ZGUgIkNsYXNzTmFtZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00
Miw4ICs0Miw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNNYXBwZWRBdHRy
aWJ1dGVNYXAoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VDbGFzc0F0dHJp
YnV0ZShjb25zdCBTdHJpbmcmIGNsYXNzQXR0cik7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nTGlz
dCogZ2V0Q2xhc3NMaXN0KCkgY29uc3QgeyByZXR1cm4gJm1fY2xhc3NMaXN0OyB9CisgICAgdm9p
ZCBwYXJzZUNsYXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYpOworCisgICAgY29uc3QgQ2xhc3NO
YW1lTGlzdCogZ2V0Q2xhc3NMaXN0KCkgY29uc3QgeyByZXR1cm4gJm1fY2xhc3NMaXN0OyB9CiAg
ICAgCiAgICAgdmlydHVhbCBib29sIGhhc01hcHBlZEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVy
biBtX21hcHBlZEF0dHJpYnV0ZUNvdW50ID4gMDsgfQogICAgIHZvaWQgZGVjbFJlbW92ZWQoKSB7
IG1fbWFwcGVkQXR0cmlidXRlQ291bnQtLTsgfQpAQCAtNjAsNyArNjEsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0PE1hcHBlZEF0dHJpYnV0ZSo+KE5hbWVkQXR0ck1h
cDo6Z2V0QXR0cmlidXRlSXRlbShuYW1lKSk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgQXRvbWlj
U3RyaW5nTGlzdCBtX2NsYXNzTGlzdDsKKyAgICBDbGFzc05hbWVMaXN0IG1fY2xhc3NMaXN0Owog
ICAgIGludCBtX21hcHBlZEF0dHJpYnV0ZUNvdW50OwogfTsKIApJbmRleDogV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5jcHAJKHJldmlzaW9uIDI1MTAyKQorKysgV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbiogU3R5bGVkRWxlbWVuCiAgICAgcmV0dXJuIDA7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmlu
Z0xpc3QqIFN0eWxlZEVsZW1lbnQ6OmdldENsYXNzTGlzdCgpIGNvbnN0Citjb25zdCBDbGFzc05h
bWVMaXN0KiBTdHlsZWRFbGVtZW50OjpnZXRDbGFzc0xpc3QoKSBjb25zdAogewogICAgIHJldHVy
biBuYW1lZEF0dHJNYXAgPyBtYXBwZWRBdHRyaWJ1dGVzKCktPmdldENsYXNzTGlzdCgpIDogMDsK
IH0KSW5kZXg6IFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9TdHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDI1MTAyKQorKysgV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGludmFsaWRhdGVTdHlsZUF0dHJpYnV0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVTdHlsZUF0dHJpYnV0ZUlmTmVlZGVkKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBj
b25zdCBBdG9taWNTdHJpbmdMaXN0KiBnZXRDbGFzc0xpc3QoKSBjb25zdDsKKyAgICB2aXJ0dWFs
IGNvbnN0IENsYXNzTmFtZUxpc3QqIGdldENsYXNzTGlzdCgpIGNvbnN0OwogICAgIHZpcnR1YWwg
dm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJpYnV0ZSogYXR0ciwgYm9vbCBwcmVzZXJ2ZURlY2xz
ID0gZmFsc2UpOwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRB
dHRyaWJ1dGUqIGF0dHIpOwogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdDsK
SW5kZXg6IFdlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI1
MTAyKQorKysgV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMzE5LDcgKzEzMTksNiBAQAogCQkwODY3RDY5MEZFODQwMjhGQzAyQUFDMDcg
LyogUHJvamVjdCBvYmplY3QgKi8gPSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYnVpbGRD
b25maWd1cmF0aW9uTGlzdCA9IDE0OUMyODMyMDg5MDJCMEYwMDhBOUVGQyAvKiBCdWlsZCBjb25m
aWd1cmF0aW9uIGxpc3QgZm9yIFBCWFByb2plY3QgIldlYktpdCIgKi87CiAJCQloYXNTY2FubmVk
Rm9yRW5jb2RpbmdzID0gMTsKIAkJCWtub3duUmVnaW9ucyA9ICgKIAkJCQlFbmdsaXNoLAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16071</attachid>
            <date>2007-08-22 10:49:30 -0700</date>
            <delta_ts>2007-09-01 16:57:57 -0700</delta_ts>
            <desc>Now with changelog and test</desc>
            <filename>get-elements-by-class-name3.txt</filename>
            <type>text/plain</type>
            <size>38357</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
IChyZXZpc2lvbiAyNTE4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nICh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTQgQEAKKzIwMDctMDgtMjIgIERhdmlkIFNtaXRoICA8c2V0IEVNQUlMX0FERFJF
U1MgZW52aXJvbm1lbnQgdmFyaWFibGU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisgICAgICAgIAorICAgICAgICAtIGZpeCBodHRwOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNDk1NQorICAgICAgICAgIEltcGxlbWVudCBnZXRFbGVtZW50c0J5Q2xh
c3NOYW1lLiBUaGlzIHBhdGNoIGFsc28gcmVuYW1lcyBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNz
TmFtZUxpc3QgdG8gYmV0dGVyIHJlZmxlY3QgaXRzIGFjdHVhbCB1c2UsCisgICAgICAgICAgYW5k
IHRha2VzIGFkdmFudGFnZSBvZiBhZG1pdHRpbmcgdGhhdCBpdCdzIGNsYXNzLXNwZWNpZmljIHRv
IGVuY2Fwc3VsYXRlIGNsYXNzIGF0dHJpYnV0ZSBwYXJzaW5nIHNvIGl0IGNhbiBiZSBzaGFyZWQu
CisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNsYXNzbmFtZS5odG1sCisK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEZpbGUgcmVuYW1l
cworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXMpOiBDaGFuZ2UgQXRvbWljU3RyaW5nTGlzdCB0
byBDbGFzc05hbWVMaXN0CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjaGVj
a09uZVNlbGVjdG9yKTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAor
ICAgICAgICAqIGRvbS9BdG9taWNTdHJpbmdMaXN0Lmg6IFJlbW92ZWQuCisgICAgICAgICogZG9t
L0NsYXNzTmFtZUxpc3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxp
c3Q6OmNvbnRhaW5zKTogTmV3IGZ1bmN0aW9uIHRvIGNoZWNrIGlmIGEgY2xhc3MgbmFtZSBpcyBp
biB0aGUgbGlzdAorICAgICAgICAoV2ViQ29yZTo6aXNDbGFzc1doaXRlc3BhY2UpOiBNb3ZlZCBm
cm9tIE5hbWVkTWFwcGVkQXR0ck1hcAorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6
cGFyc2VDbGFzc0F0dHJpYnV0ZSk6IE1vdmVkIChhbmQgYWRhcHRlZCkgZnJvbSBOYW1lZE1hcHBl
ZEF0dHJNYXAKKyAgICAgICAgKiBkb20vQ2xhc3NOYW1lTGlzdC5oOiBDb3BpZWQgZnJvbSBXZWJD
b3JlL2RvbS9BdG9taWNTdHJpbmdMaXN0LmguCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVM
aXN0OjpDbGFzc05hbWVMaXN0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNz
TmFtZUxpc3Q6On5DbGFzc05hbWVMaXN0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6
OkNsYXNzTmFtZUxpc3Q6Om5leHQpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xh
c3NOYW1lTGlzdDo6c2V0TmV4dCk6IE5hbWUgY2hhbmdlCisgICAgICAgIChXZWJDb3JlOjpDbGFz
c05hbWVMaXN0OjpzdHJpbmcpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NO
YW1lTGlzdDo6c2V0U3RyaW5nKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNz
TmFtZUxpc3Q6OmNsb25lKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFt
ZUxpc3Q6OmNsZWFyKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOiBBZGRl
ZAorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWVOUyk6
IEFkZGVkCisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6IEFkZGVkIHRoZSBuZXcgZnVuY3Rpb25z
CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMKKyAg
ICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGFzc05vZGVMaXN0
OjpDbGFzc05vZGVMaXN0KTogTmV3IE5vZGVMaXN0IHN1YmNsYXNzIHRoYXQgbWF0Y2hlcyBieSBj
bGFzcyBuYW1lcworICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6bGVuZ3RoKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsYXNzTm9kZUxpc3Q6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6
Q2xhc3NOb2RlTGlzdDo6bm9kZU1hdGNoZXMpOiBDaGVjayB0aGUgY2xhc3MgbmFtZSB1c2luZyBD
bGFzc05hbWVMaXN0J3MgbmV3IGNvbnRhaW5zKCkKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6
OmdldENsYXNzTGlzdCk6IENoYW5nZSBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QK
KyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOiBBZGRl
ZAorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZU5TKTog
QWRkZWQKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOiBBZGRlZCB0aGUgbmV3IGZ1bmN0aW9ucwor
ICAgICAgICAqIGRvbS9FbGVtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMKKyAgICAg
ICAgKiBkb20vTmFtZWRNYXBwZWRBdHRyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVk
TWFwcGVkQXR0ck1hcDo6cGFyc2VDbGFzc0F0dHJpYnV0ZSk6IE1vdmUgYWxsIHRoZSBsb2dpYyBo
ZXJlIHRvIENsYXNzTmFtZUxpc3Qgc28gaXQgY2FuIGJlIHNoYXJlZAorICAgICAgICAqIGRvbS9O
YW1lZE1hcHBlZEF0dHJNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTWFwcGVkQXR0ck1h
cDo6Z2V0Q2xhc3NMaXN0KTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlz
dAorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlZEVsZW1lbnQ6OmdldENsYXNzTGlzdCk6IENoYW5nZSBBdG9taWNTdHJpbmdMaXN0IHRvIENs
YXNzTmFtZUxpc3QKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorCiAyMDA3LTA4LTIx
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBCdWlsZCBmaXggZm9y
IE1hYwpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogKHJl
dmlzaW9uIDI1MTgzKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogKHdvcmtpbmcgY29weSkKQEAgLTM1NSw2ICszNTUsOCBAQAogICAgICAgICA1MUYxMUUxNTBB
NDhDMjkyMDAzNEEyNEUgLyogU1FMVHJhbnNhY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTFGMTFFMTQwQTQ4QzI5MjAwMzRBMjRFIC8qIFNR
TFRyYW5zYWN0aW9uLmNwcCAqLzsgfTsKICAgICAgICAgNTUwQTBCQzkwODVGNjAzOTAwNzM1M0Q2
IC8qIFF1YWxpZmllZE5hbWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTUwQTBCQzcwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuY3Bw
ICovOyB9OwogICAgICAgICA1NTBBMEJDQTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFt
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTUwQTBC
QzgwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworICAgICAgICA2MzQwOTQ3RDBDNzJCMzg3MDBG
MEM1OTggLyogQ2xhc3NOYW1lTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjM0MDk0N0IwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworICAgICAg
ICA2MzQwOTQ3RTBDNzJCMzg3MDBGMEM1OTggLyogQ2xhc3NOYW1lTGlzdC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2MzQwOTQ3QzBDNzJCMzg2MDBG
MEM1OTggLyogQ2xhc3NOYW1lTGlzdC5jcHAgKi87IH07CiAgICAgICAgIDY1MEUzRjZBMEFGNkMx
NjgwMDFGQTNBRCAvKiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTBFM0Y2ODBBRjZDMTY4MDAxRkEzQUQgLyogUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tICovOyB9OwogICAgICAgICA2NTBGNTNEQzA5RDE1RERBMDBDOUIw
QzggLyogQ1NTR3JhbW1hci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNjUwRjUzREIwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCAqLzsgfTsK
ICAgICAgICAgNjUwRjUzREQwOUQxNURERjAwQzlCMEM4IC8qIENTU0dyYW1tYXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjU2NTgxNDQwOUQxMzA0
MzAwMEU2MUQ3IC8qIENTU0dyYW1tYXIuY3BwICovOyB9OwpAQCAtMTYxNSw3ICsxNjE3LDYgQEAK
ICAgICAgICAgOTNGMTk5QkQwODI0NUU1OTAwMUU5QUJDIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1OTk4QTVDMDUyQjU5
Q0MwMDE3QTZDMSAvKiBBWE9iamVjdENhY2hlLmggKi87IH07CiAgICAgICAgIDkzRjE5OUJFMDgy
NDVFNTkwMDFFOUFCQyAvKiBCbG9ja0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1QTY0MEYwMDUzM0JCMUYwMDg1RTc3NyAvKiBCbG9j
a0V4Y2VwdGlvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogICAgICAgICA5M0YxOTlDMjA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZUtleUdlbmVy
YXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODRC
MkIxRjcwNTZCRUYzQTAwRDJCNzcxIC8qIFdlYkNvcmVLZXlHZW5lcmF0b3IuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotICAgICAgICA5M0YxOTlDRjA4
MjQ1RTU5MDAxRTlBQkMgLyogQXRvbWljU3RyaW5nTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzQjM2NDcwNUM5RDVFMjAwRTQyOTAyIC8qIEF0
b21pY1N0cmluZ0xpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogICAgICAgICA5M0YxOTlERTA4MjQ1RTU5MDAxRTlBQkMgLyogUG9zaXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJFOTFGQzhCMDYx
MzM2NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAgICAgICAgIDkzRjE5OUU1MDgyNDVFNTkwMDFFOUFCQyAvKiBI
VE1MQ2FudmFzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTFGNkEzRDYwNjYzQkYwNDAwNEQyOTE5IC8qIEhUTUxDYW52YXNFbGVtZW50Lmgg
Ki87IH07CiAgICAgICAgIDkzRjE5OUU3MDgyNDVFNTkwMDFFOUFCQyAvKiBDbGlwYm9hcmRNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDJEOTA2NjBC
MDY2NUQ5MzcwMDZCNkYxQSAvKiBDbGlwYm9hcmRNYWMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzYxMiw2ICszNjEzLDggQEAKICAgICAgICAg
NTU5OThBNUIwNTJCNTlDQzAwMTdBNkMxIC8qIFdlYkNvcmVBWE9iamVjdC5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYkNvcmVB
WE9iamVjdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFi
cyA9IDA7IH07CiAgICAgICAgIDU1OTk4QTVDMDUyQjU5Q0MwMDE3QTZDMSAvKiBBWE9iamVjdENh
Y2hlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGlu
ZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFYT2JqZWN0Q2FjaGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1
c2VzVGFicyA9IDA7IH07CiAgICAgICAgIDU1OTk4QTVEMDUyQjU5Q0MwMDE3QTZDMSAvKiBBWE9i
amVjdENhY2hlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQVhPYmplY3RDYWNoZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07CisgICAgICAgIDYzNDA5NDdCMEM3
MkIzODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IENsYXNzTmFtZUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKyAg
ICAgICAgNjM0MDk0N0MwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ2xhc3NOYW1lTGlzdC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAgICAgICAgIDY1MEUzRjY4MEFGNkMxNjgwMDFGQTNBRCAv
KiBSZXNvdXJjZVJlcXVlc3RNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gUmVzb3VyY2VSZXF1ZXN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogICAgICAgICA2NTBGNTNEQjA5RDE1RERBMDBDOUIwQzggLyogQ1NTR3JhbW1hci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTR3JhbW1hci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogICAgICAgICA2NTE4ODg4NjBBRkYzQkY3MDAxNjQ3MjAgLyogUmVzb3Vy
Y2VFcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
MzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVzb3Vy
Y2VFcnJvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02MTEzLDcgKzYxMTYs
NiBAQAogICAgICAgICBCQzMwNUM3NzBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxl
bWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1MT2Jq
ZWN0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAgICAgICAgIEJDMzA1
Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxPYmplY3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAgICAgICAgIEJDMzA1Q0EzMEMwNzgxQkIwMENEMjBGMCAvKiBKU0hU
TUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotICAgICAgICBCQzNCMzY0NzA1QzlENUUyMDBFNDI5MDIgLyogQXRvbWljU3RyaW5n
TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBdG9taWNTdHJpbmdMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0g
ODsgdXNlc1RhYnMgPSAwOyB9OwogICAgICAgICBCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0EgLyog
SlNNZWRpYUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
TWVkaWFMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKICAgICAgICAgQkMzQzM5
QjUwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU01lZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
ICAgICAgICBCQzNGQ0FBODBBQzNEQjU4MDBCQTU0QUQgLyogUGxhdGZvcm1TY3JvbGxCYXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtU2Nyb2xsQmFyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMDAxNiw3ICsxMDAxOCw4IEBACiAgICAgICAg
ICAgICBpc2EgPSBQQlhHcm91cDsKICAgICAgICAgICAgIGNoaWxkcmVuID0gKAogICAgICAgICAg
ICAgICAgIEE3ODQ5NDFBMEI1RkU1MDcwMDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwICovLAotICAg
ICAgICAgICAgICAgIEJDM0IzNjQ3MDVDOUQ1RTIwMEU0MjkwMiAvKiBBdG9taWNTdHJpbmdMaXN0
LmggKi8sCisgICAgICAgICAgICAgICAgNjM0MDk0N0IwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNz
TmFtZUxpc3QuaCAqLywKKyAgICAgICAgICAgICAgICA2MzQwOTQ3QzBDNzJCMzg2MDBGMEM1OTgg
LyogQ2xhc3NOYW1lTGlzdC5jcHAgKi8sCiAgICAgICAgICAgICAgICAgQThDNEE3RkMwOUQ1NjMy
NzAwMDNBQzhEIC8qIEF0dHIuY3BwICovLAogICAgICAgICAgICAgICAgIEE4QzRBN0ZCMDlENTYz
MjcwMDAzQUM4RCAvKiBBdHRyLmggKi8sCiAgICAgICAgICAgICAgICAgOTNFRUMxRTUwOUMyODc3
NzAwQzUxNUQxIC8qIEF0dHIuaWRsICovLApAQCAtMTAyMTYsNyArMTAyMTksNiBAQAogICAgICAg
ICAgICAgICAgIDkzRjE5OUJEMDgyNDVFNTkwMDFFOUFCQyAvKiBBWE9iamVjdENhY2hlLmggaW4g
SGVhZGVycyAqLywKICAgICAgICAgICAgICAgICA5M0YxOTlCRTA4MjQ1RTU5MDAxRTlBQkMgLyog
QmxvY2tFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLywKICAgICAgICAgICAgICAgICA5M0YxOTlD
MjA4MjQ1RTU5MDAxRTlBQkMgLyogV2ViQ29yZUtleUdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8s
Ci0gICAgICAgICAgICAgICAgOTNGMTk5Q0YwODI0NUU1OTAwMUU5QUJDIC8qIEF0b21pY1N0cmlu
Z0xpc3QuaCBpbiBIZWFkZXJzICovLAogICAgICAgICAgICAgICAgIDkzRjE5OURFMDgyNDVFNTkw
MDFFOUFCQyAvKiBQb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAgICAgICAgICAgICAgICAgOTNG
MTk5RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxDYW52YXNFbGVtZW50LmggaW4gSGVhZGVycyAq
LywKICAgICAgICAgICAgICAgICA5M0YxOTlFNzA4MjQ1RTU5MDAxRTlBQkMgLyogQ2xpcGJvYXJk
TWFjLmggaW4gSGVhZGVycyAqLywKQEAgLTExNzE1LDYgKzExNzE3LDcgQEAKICAgICAgICAgICAg
ICAgICAwRjMxQ0JGOTJCNjU0NzMwQkEwNTM1RTggLyogQmlkaUNvbnRleHQuaCBpbiBIZWFkZXJz
ICovLAogICAgICAgICAgICAgICAgIDE0MzJFODQ3MEM1MTQ5MzgwMEIxNTAwRiAvKiBHQ0NvbnRy
b2xsZXIuaCBpbiBIZWFkZXJzICovLAogICAgICAgICAgICAgICAgIDUxNEIzRjczMEM3MjIwNDcw
MDA1MzBERiAvKiBGaWxlU3lzdGVtLmggaW4gSGVhZGVycyAqLywKKyAgICAgICAgICAgICAgICA2
MzQwOTQ3RDBDNzJCMzg3MDBGMEM1OTggLyogQ2xhc3NOYW1lTGlzdC5oIGluIEhlYWRlcnMgKi8s
CiAgICAgICAgICAgICAgICAgRURFM0E1MDAwQzdBNDMwNjAwOTU2QTM3IC8qIENvbG9yTWFjLmgg
aW4gSGVhZGVycyAqLywKICAgICAgICAgICAgICk7CiAgICAgICAgICAgICBydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTExNzU0LDcgKzExNzU3LDYgQEAKICAgICAg
ICAgMDg2N0Q2OTBGRTg0MDI4RkMwMkFBQzA3IC8qIFByb2plY3Qgb2JqZWN0ICovID0gewogICAg
ICAgICAgICAgaXNhID0gUEJYUHJvamVjdDsKICAgICAgICAgICAgIGJ1aWxkQ29uZmlndXJhdGlv
bkxpc3QgPSAxNDlDMjg0MzA4OTAyQjExMDA4QTlFRkMgLyogQnVpbGQgY29uZmlndXJhdGlvbiBs
aXN0IGZvciBQQlhQcm9qZWN0ICJXZWJDb3JlIiAqLzsKLSAgICAgICAgICAgIGNvbXBhdGliaWxp
dHlWZXJzaW9uID0gIlhjb2RlIDIuNCI7CiAgICAgICAgICAgICBoYXNTY2FubmVkRm9yRW5jb2Rp
bmdzID0gMTsKICAgICAgICAgICAgIGtub3duUmVnaW9ucyA9ICgKICAgICAgICAgICAgICAgICBF
bmdsaXNoLApAQCAtMTMxNzYsNiArMTMxNzgsNyBAQAogICAgICAgICAgICAgICAgIEJDMkVENkJD
MEM2QkQyRjAwMDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAgICAg
ICAgICAgICAgICAgQkMyRUQ3QTUwQzZDMEYzNjAwOTIwQkZGIC8qIEpTSFRNTEZyYW1lRWxlbWVu
dEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKICAgICAgICAgICAgICAgICA1MTRCM0Y3NjBDNzIy
MDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbU1hYy5tbSBpbiBTb3VyY2VzICovLAorICAgICAgICAg
ICAgICAgIDYzNDA5NDdFMEM3MkIzODcwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmNwcCBpbiBT
b3VyY2VzICovLAogICAgICAgICAgICAgKTsKICAgICAgICAgICAgIHJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogICAgICAgICB9OwpJbmRleDogV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAgKHJldmlzaW9uIDI1MTgzKQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAgKHdvcmtpbmcgY29weSkKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6Om1hdGNoUnVsZXMoQ1NTUnVsCiAgICAgaWYgKGVsZW1lbnQtPmhhc0lEKCkpCiAgICAg
ICAgIG1hdGNoUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRJRFJ1bGVzKGVsZW1lbnQtPmdldElEQXR0
cmlidXRlKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwogICAgIGlm
IChlbGVtZW50LT5oYXNDbGFzcygpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgQXRvbWljU3RyaW5n
TGlzdCogc2luZ2xlQ2xhc3MgPSBlbGVtZW50LT5nZXRDbGFzc0xpc3QoKTsgc2luZ2xlQ2xhc3M7
IHNpbmdsZUNsYXNzID0gc2luZ2xlQ2xhc3MtPm5leHQoKSkKKyAgICAgICAgZm9yIChjb25zdCBD
bGFzc05hbWVMaXN0KiBzaW5nbGVDbGFzcyA9IGVsZW1lbnQtPmdldENsYXNzTGlzdCgpOyBzaW5n
bGVDbGFzczsgc2luZ2xlQ2xhc3MgPSBzaW5nbGVDbGFzcy0+bmV4dCgpKQogICAgICAgICAgICAg
bWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldENsYXNzUnVsZXMoc2luZ2xlQ2xhc3MtPnN0cmlu
ZygpLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKICAgICB9CiAgICAg
bWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldFRhZ1J1bGVzKGVsZW1lbnQtPmxvY2FsTmFtZSgp
LmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKQEAgLTEzNTUsNyArMTM1
NSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3RvcigKICAgICAgICAg
aWYgKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpIHsKICAgICAgICAgICAgIGlm
ICghZS0+aGFzQ2xhc3MoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICBmb3IgKGNvbnN0IEF0b21pY1N0cmluZ0xpc3QqIGMgPSBlLT5nZXRDbGFzc0xpc3QoKTsg
YzsgYyA9IGMtPm5leHQoKSkKKyAgICAgICAgICAgIGZvciAoY29uc3QgQ2xhc3NOYW1lTGlzdCog
YyA9IGUtPmdldENsYXNzTGlzdCgpOyBjOyBjID0gYy0+bmV4dCgpKQogICAgICAgICAgICAgICAg
IGlmIChjLT5zdHJpbmcoKSA9PSBzZWwtPm1fdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9kb20v
QXRvbWljU3RyaW5nTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0F0b21pY1N0cmlu
Z0xpc3QuaCAocmV2aXNpb24gMjUxODMpCisrKyBXZWJDb3JlL2RvbS9BdG9taWNTdHJpbmdMaXN0
LmggKHdvcmtpbmcgY29weSkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
Ci0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gKiBCb3N0b24sIE1B
IDAyMTExLTEzMDcsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBBdG9taWNTdHJpbmdMaXN0X2gK
LSNkZWZpbmUgQXRvbWljU3RyaW5nTGlzdF9oCi0KLSNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIK
LQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdG9taWNTdHJpbmdMaXN0IHsKLXB1Ymxp
YzoKLSAgICBBdG9taWNTdHJpbmdMaXN0KCkgOiBtX25leHQoMCkge30KLSAgICBBdG9taWNTdHJp
bmdMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyLCBBdG9taWNTdHJpbmdMaXN0KiBuID0gMCkg
OiBtX3N0cmluZyhzdHIpLCBtX25leHQobikge30KLSAgICB+QXRvbWljU3RyaW5nTGlzdCgpIHsg
ZGVsZXRlIG1fbmV4dDsgfQotICAgIAotICAgIEF0b21pY1N0cmluZ0xpc3QqIG5leHQoKSBjb25z
dCB7IHJldHVybiBtX25leHQ7IH0KLSAgICB2b2lkIHNldE5leHQoQXRvbWljU3RyaW5nTGlzdCog
bikgeyBtX25leHQgPSBuOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcoKSBjb25z
dCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IEF0b21pY1N0
cmluZyYgc3RyKSB7IG1fc3RyaW5nID0gc3RyOyB9Ci0KLSAgICBBdG9taWNTdHJpbmdMaXN0KiBj
bG9uZSgpIHsgcmV0dXJuIG5ldyBBdG9taWNTdHJpbmdMaXN0KG1fc3RyaW5nLCBtX25leHQgPyBt
X25leHQtPmNsb25lKCkgOiAwKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7IG1fc3RyaW5nID0gbnVs
bEF0b207IGRlbGV0ZSBtX25leHQ7IG1fbmV4dCA9IDA7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAg
QXRvbWljU3RyaW5nIG1fc3RyaW5nOwotICAgIEF0b21pY1N0cmluZ0xpc3QqIG1fbmV4dDsKLX07
Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmNwcCAocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvZG9tL0NsYXNzTmFtZUxpc3QuY3BwIChyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBn
bWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBs
ZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDbGFzc05hbWVMaXN0LmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2Jvb2wgQ2xhc3NOYW1lTGlzdDo6Y29udGFpbnMoY29u
c3QgQXRvbWljU3RyaW5nJiBzdHIpIGNvbnN0IAoreyAKKyAgICBmb3IoY29uc3QgQ2xhc3NOYW1l
TGlzdCAqdCA9IHRoaXM7IHQ7IHQgPSB0LT5uZXh0KCkpIAorICAgIHsgCisgICAgICAgIGlmKHQt
PnN0cmluZygpID09IHN0cikgCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgCisgICAgfSAKKyAg
ICByZXR1cm4gZmFsc2U7IAorfQorCitpbmxpbmUgc3RhdGljIGJvb2wgaXNDbGFzc1doaXRlc3Bh
Y2UoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXHInIHx8IGMgPT0g
J1xuJyB8fCBjID09ICdcdCc7Cit9CisKK3ZvaWQgQ2xhc3NOYW1lTGlzdDo6cGFyc2VDbGFzc0F0
dHJpYnV0ZShjb25zdCBTdHJpbmcmIGNsYXNzU3RyLCBjb25zdCBib29sIGluQ29tcGF0TW9kZSkK
K3sKKyAgICB0aGlzLT5jbGVhcigpOworICAgIAorICAgIFN0cmluZyBjbGFzc0F0dHIgPSBpbkNv
bXBhdE1vZGUgPyAKKyAgICAgICAgKGNsYXNzU3RyLmltcGwoKS0+aXNMb3dlcigpID8gY2xhc3NT
dHIgOiBTdHJpbmcoY2xhc3NTdHIuaW1wbCgpLT5sb3dlcigpKSkgOgorICAgICAgICBjbGFzc1N0
cjsKKyAgICAKKyAgICBDbGFzc05hbWVMaXN0KiBjdXJyID0gMDsKKyAgICAKKyAgICBjb25zdCBV
Q2hhciogc3RyID0gY2xhc3NBdHRyLmNoYXJhY3RlcnMoKTsKKyAgICBpbnQgbGVuZ3RoID0gY2xh
c3NBdHRyLmxlbmd0aCgpOworICAgIGludCBzUG9zID0gMDsKKyAgICAKKyAgICB3aGlsZSAodHJ1
ZSkgeworICAgICAgICB3aGlsZSAoc1BvcyA8IGxlbmd0aCAmJiBpc0NsYXNzV2hpdGVzcGFjZShz
dHJbc1Bvc10pKQorICAgICAgICAgICAgKytzUG9zOworICAgICAgICBpZiAoc1BvcyA+PSBsZW5n
dGgpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaW50IGVQb3MgPSBzUG9zICsgMTsKKyAg
ICAgICAgd2hpbGUgKGVQb3MgPCBsZW5ndGggJiYgIWlzQ2xhc3NXaGl0ZXNwYWNlKHN0cltlUG9z
XSkpCisgICAgICAgICAgICArK2VQb3M7CisgICAgICAgIGlmIChjdXJyKSB7CisgICAgICAgICAg
ICBjdXJyLT5zZXROZXh0KG5ldyBDbGFzc05hbWVMaXN0KEF0b21pY1N0cmluZyhzdHIgKyBzUG9z
LCBlUG9zIC0gc1BvcykpKTsKKyAgICAgICAgICAgIGN1cnIgPSBjdXJyLT5uZXh0KCk7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoc1BvcyA9PSAwICYmIGVQb3MgPT0gbGVuZ3Ro
KSB7CisgICAgICAgICAgICAgICAgbV9zdHJpbmcgPSBBdG9taWNTdHJpbmcoY2xhc3NBdHRyKTsK
KyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fc3Ry
aW5nID0gQXRvbWljU3RyaW5nKHN0ciArIHNQb3MsIGVQb3MgLSBzUG9zKTsKKyAgICAgICAgICAg
IGN1cnIgPSB0aGlzOworICAgICAgICB9CisgICAgICAgIHNQb3MgPSBlUG9zICsgMTsKKyAgICB9
Cit9CisgICAgCit9CkluZGV4OiBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5oIChyZXZpc2lvbiAyNTA4OSkgICAgKGZy
b20gV2ViQ29yZS9kb20vQXRvbWljU3RyaW5nTGlzdC5oOjI1MDg5KQorKysgV2ViQ29yZS9kb20v
Q2xhc3NOYW1lTGlzdC5oICh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBU
aGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxlbWVudGF0aW9uIGZvciBLREUuCisgKgor
ICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAor
ICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgQXRvbWlj
U3RyaW5nTGlzdF9oCisjZGVmaW5lIEF0b21pY1N0cmluZ0xpc3RfaAorCisjaW5jbHVkZSAiQXRv
bWljU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXRvbWljU3RyaW5n
TGlzdCB7CitwdWJsaWM6CisgICAgQXRvbWljU3RyaW5nTGlzdCgpIDogbV9uZXh0KDApIHt9Cisg
ICAgQXRvbWljU3RyaW5nTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIHN0ciwgQXRvbWljU3RyaW5n
TGlzdCogbiA9IDApIDogbV9zdHJpbmcoc3RyKSwgbV9uZXh0KG4pIHt9CisgICAgfkF0b21pY1N0
cmluZ0xpc3QoKSB7IGRlbGV0ZSBtX25leHQ7IH0KKyAgICAKKyAgICBBdG9taWNTdHJpbmdMaXN0
KiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0OyB9CisgICAgdm9pZCBzZXROZXh0KEF0b21p
Y1N0cmluZ0xpc3QqIG4pIHsgbV9uZXh0ID0gbjsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
c3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICB2b2lkIHNldFN0cmluZyhj
b25zdCBBdG9taWNTdHJpbmcmIHN0cikgeyBtX3N0cmluZyA9IHN0cjsgfQorCisgICAgQXRvbWlj
U3RyaW5nTGlzdCogY2xvbmUoKSB7IHJldHVybiBuZXcgQXRvbWljU3RyaW5nTGlzdChtX3N0cmlu
ZywgbV9uZXh0ID8gbV9uZXh0LT5jbG9uZSgpIDogMCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBt
X3N0cmluZyA9IG51bGxBdG9tOyBkZWxldGUgbV9uZXh0OyBtX25leHQgPSAwOyB9CisgICAgCitw
cml2YXRlOgorICAgIEF0b21pY1N0cmluZyBtX3N0cmluZzsKKyAgICBBdG9taWNTdHJpbmdMaXN0
KiBtX25leHQ7Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vQ2xhc3NOYW1l
TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NsYXNzTmFtZUxpc3QuaCAocmV2aXNp
b24gMjUwODkpCisrKyBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmggKHdvcmtpbmcgY29weSkK
QEAgLTIwLDMyICsyMCwzOCBAQAogICoKICAqLwogCi0jaWZuZGVmIEF0b21pY1N0cmluZ0xpc3Rf
aAotI2RlZmluZSBBdG9taWNTdHJpbmdMaXN0X2gKKyNpZm5kZWYgQ2xhc3NOYW1lTGlzdF9oCisj
ZGVmaW5lIENsYXNzTmFtZUxpc3RfaAogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgQXRvbWljU3RyaW5nTGlzdCB7Ci1wdWJsaWM6Ci0g
ICAgQXRvbWljU3RyaW5nTGlzdCgpIDogbV9uZXh0KDApIHt9Ci0gICAgQXRvbWljU3RyaW5nTGlz
dChjb25zdCBBdG9taWNTdHJpbmcmIHN0ciwgQXRvbWljU3RyaW5nTGlzdCogbiA9IDApIDogbV9z
dHJpbmcoc3RyKSwgbV9uZXh0KG4pIHt9Ci0gICAgfkF0b21pY1N0cmluZ0xpc3QoKSB7IGRlbGV0
ZSBtX25leHQ7IH0KICAgICAKLSAgICBBdG9taWNTdHJpbmdMaXN0KiBuZXh0KCkgY29uc3QgeyBy
ZXR1cm4gbV9uZXh0OyB9Ci0gICAgdm9pZCBzZXROZXh0KEF0b21pY1N0cmluZ0xpc3QqIG4pIHsg
bV9uZXh0ID0gbjsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdHJpbmc7IH0KLSAgICB2b2lkIHNldFN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcm
IHN0cikgeyBtX3N0cmluZyA9IHN0cjsgfQotCi0gICAgQXRvbWljU3RyaW5nTGlzdCogY2xvbmUo
KSB7IHJldHVybiBuZXcgQXRvbWljU3RyaW5nTGlzdChtX3N0cmluZywgbV9uZXh0ID8gbV9uZXh0
LT5jbG9uZSgpIDogMCk7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBtX3N0cmluZyA9IG51bGxBdG9t
OyBkZWxldGUgbV9uZXh0OyBtX25leHQgPSAwOyB9CisgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAg
CisgICAgY2xhc3MgQ2xhc3NOYW1lTGlzdCB7CitwdWJsaWM6CisgICAgICAgIENsYXNzTmFtZUxp
c3QoKSA6IG1fbmV4dCgwKSB7fQorICAgICAgICBDbGFzc05hbWVMaXN0KGNvbnN0IEF0b21pY1N0
cmluZyYgc3RyLCBDbGFzc05hbWVMaXN0KiBuID0gMCkgOiBtX3N0cmluZyhzdHIpLCBtX25leHQo
bikge30KKyAgICAgICAgfkNsYXNzTmFtZUxpc3QoKSB7IGRlbGV0ZSBtX25leHQ7IH0KKyAgICAg
ICAgCisgICAgICAgIENsYXNzTmFtZUxpc3QqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQ7
IH0KKyAgICAgICAgdm9pZCBzZXROZXh0KENsYXNzTmFtZUxpc3QqIG4pIHsgbV9uZXh0ID0gbjsg
fQorICAgICAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1f
c3RyaW5nOyB9CisgICAgICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3Ry
KSB7IG1fc3RyaW5nID0gc3RyOyB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIGJvb2wgY29u
dGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJikgY29uc3Q7CisKKyAgICAgICAgdm9pZCBwYXJzZUNs
YXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYsIGNvbnN0IGJvb2wpOworICAgICAgICAgICAgICAg
IAorICAgICAgICBDbGFzc05hbWVMaXN0KiBjbG9uZSgpIHsgcmV0dXJuIG5ldyBDbGFzc05hbWVM
aXN0KG1fc3RyaW5nLCBtX25leHQgPyBtX25leHQtPmNsb25lKCkgOiAwKTsgfQorICAgICAgICB2
b2lkIGNsZWFyKCkgeyBtX3N0cmluZyA9IG51bGxBdG9tOyBkZWxldGUgbV9uZXh0OyBtX25leHQg
PSAwOyB9CisgICAgICAgIAogcHJpdmF0ZToKLSAgICBBdG9taWNTdHJpbmcgbV9zdHJpbmc7Ci0g
ICAgQXRvbWljU3RyaW5nTGlzdCogbV9uZXh0OwotfTsKLQorICAgICAgICBBdG9taWNTdHJpbmcg
bV9zdHJpbmc7CisgICAgICAgIENsYXNzTmFtZUxpc3QqIG1fbmV4dDsKKyAgICB9OworICAgIAog
fQogCiAjZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgKHJldmlzaW9uIDI1MTgzKQorKysgV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwICh3b3JraW5nIGNvcHkpCkBAIC0zNDA0LDYgKzM0MDQsMTYgQEAgUGFz
c1JlZlB0cjxOYW1lTm9kZUxpc3Q+IERvY3VtZW50OjpnZXRFbAogICAgIHJldHVybiBuZXcgTmFt
ZU5vZGVMaXN0KHRoaXMsIGVsZW1lbnROYW1lKTsKIH0KIAorUGFzc1JlZlB0cjxOb2RlTGlzdD4g
RG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29uc3QgU3RyaW5nICZjbGFzc05hbWUp
Cit7CisgICAgcmV0dXJuIGRvY3VtZW50RWxlbWVudCgpLT5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KGNsYXNzTmFtZSk7Cit9CisKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50OjpnZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lTlMoY29uc3QgU3RyaW5nICZuYW1lc3BhY2VVUkksIGNvbnN0IFN0cmlu
ZyAmY2xhc3NOYW1lKQoreworICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQoKS0+Z2V0RWxlbWVu
dHNCeUNsYXNzTmFtZU5TKG5hbWVzcGFjZVVSSSwgY2xhc3NOYW1lKTsKK30KKwogdm9pZCBEb2N1
bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBzZXRQYXJzaW5nKGZhbHNlKTsKSW5kZXg6
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1l
bnQuaCAocmV2aXNpb24gMjUxODMpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oICh3b3JraW5n
IGNvcHkpCkBAIC0yMDIsNiArMjAyLDggQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Tm9kZT4g
YWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
CiAgICAgUGFzc1JlZlB0cjxOYW1lTm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0
cmluZyYgZWxlbWVudE5hbWUpOworICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRz
QnlDbGFzc05hbWUoY29uc3QgU3RyaW5nICZjbGFzc05hbWUpOworICAgIFBhc3NSZWZQdHI8Tm9k
ZUxpc3Q+IGdldEVsZW1lbnRzQnlDbGFzc05hbWVOUyhjb25zdCBTdHJpbmcgJm5hbWVzcGFjZVVS
SSwgY29uc3QgU3RyaW5nICZjbGFzc05hbWUpOwogCiAgICAgLy8gQWN0dWFsbHkgcGFydCBvZiBK
U0hUTUxEb2N1bWVudCwgYnV0IHVzZWQgZm9yIGdpdmluZyBYTUwgZG9jdW1lbnRzIGEgd2luZG93
IHRpdGxlIGFzIHdlbGwKICAgICBTdHJpbmcgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3RpdGxl
OyB9CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaWRsIChyZXZpc2lvbiAyNTE4MykKKysrIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbCAod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4MiwxMCBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIFtP
cHRpb25hbF0gYm9vbGVhbiBhdXRob3JPbmx5KTsKICNlbmRpZgogCisgICAgICAgIC8vSFRNTCA1
CisgICAgICAgIE5vZGVMaXN0ICAgICAgICAgICAgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShpbiBE
T01TdHJpbmcgdGFnbmFtZSk7CisgICAgICAgIE5vZGVMaXN0ICAgICAgICAgICAgZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZU5TKGluIFtDb252ZXJ0TnVsbFRvTnVsbFN0cmluZ10gRE9NU3RyaW5nIG5h
bWVzcGFjZVVSSSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW4gRE9NU3RyaW5nIGNsYXNzTmFtZSk7CiAgICAgfTsKIAogfQpJbmRleDogV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAgKHJldmlzaW9uIDI1MTgzKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMSw0IEBACi0vKgorICAgIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkg
TGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBL
b2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBQZXRlciBL
ZWxseSAocG1rQHBvc3QuY29tKQpAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgIlRleHRJdGVy
YXRvci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgor
I2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiQ2xhc3NOYW1lTGlzdC5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkwLDYgKzkyLDY0IEBAIHZvaWQgRWxlbWVudFJhcmVEYXRh
OjpyZXNldENvbXB1dGVkU3R5bGUKICAgICBtX2NvbXB1dGVkU3R5bGUgPSAwOwogfQogCisvLyBO
b2RlTGlzdCB0aGF0IGxpbWl0cyB0byBhIHBhcnRpY3VsYXIgY2xhc3MuCitjbGFzcyBDbGFzc05v
ZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsKK3B1YmxpYzoKKyAgICBDbGFzc05vZGVMaXN0KFBh
c3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZXNwYWNlVVJJ
LCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSk7CisgICAgCisgICAgdmlydHVhbCB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMo
Tm9kZSAqKSBjb25zdDsKKyAgICAKKyAgICBBdG9taWNTdHJpbmcgbV9uYW1lc3BhY2VVUkk7Cisg
ICAgQ2xhc3NOYW1lTGlzdCBtX2NsYXNzTGlzdDsKK307CisKK0NsYXNzTm9kZUxpc3Q6OkNsYXNz
Tm9kZUxpc3QoUGFzc1JlZlB0cjxOb2RlPiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBu
YW1lc3BhY2VVUkksIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lKQorOiBOb2RlTGlzdChy
b290Tm9kZSksIG1fbmFtZXNwYWNlVVJJKG5hbWVzcGFjZVVSSSkKK3sKKyAgICBBU1NFUlQobV9u
YW1lc3BhY2VVUkkuaXNOdWxsKCkgfHwgIW1fbmFtZXNwYWNlVVJJLmlzRW1wdHkoKSk7CisgICAg
CisgICAgbV9jbGFzc0xpc3QgPSAqKG5ldyBDbGFzc05hbWVMaXN0KCkpOworICAgIG1fY2xhc3NM
aXN0LnBhcnNlQ2xhc3NBdHRyaWJ1dGUoY2xhc3NOYW1lLCBtX3Jvb3ROb2RlLT5kb2N1bWVudCgp
LT5pbkNvbXBhdE1vZGUoKSk7Cit9CisKK3Vuc2lnbmVkIENsYXNzTm9kZUxpc3Q6Omxlbmd0aCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIHJlY3Vyc2l2ZUxlbmd0aCgpOworfQorCitOb2RlKiBDbGFz
c05vZGVMaXN0OjppdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIHJldHVybiByZWN1
cnNpdmVJdGVtKGluZGV4KTsKK30KKworYm9vbCBDbGFzc05vZGVMaXN0Ojpub2RlTWF0Y2hlcyhO
b2RlKiB0ZXN0Tm9kZSkgY29uc3QKK3sKKyAgICBpZiAoIXRlc3ROb2RlLT5pc0VsZW1lbnROb2Rl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAobV9uYW1lc3BhY2VVUkkg
IT0gc3RhckF0b20gJiYgbV9uYW1lc3BhY2VVUkkgIT0gdGVzdE5vZGUtPm5hbWVzcGFjZVVSSSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgaWYgKCF0ZXN0Tm9kZS0+aGFzQ2xh
c3MoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGNvbnN0IENsYXNzTmFtZUxp
c3QqIHQgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4odGVzdE5vZGUpLT5nZXRDbGFzc0xpc3QoKTsK
KyAgICAKKyAgICBmb3IgKGNvbnN0IENsYXNzTmFtZUxpc3QqIGMgPSAmbV9jbGFzc0xpc3Q7IGM7
IGMgPSBjLT5uZXh0KCkpCisgICAgeworICAgICAgICBpZih0LT5jb250YWlucyhjLT5zdHJpbmco
KSkpCisgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKIEVsZW1lbnQ6OkVsZW1lbnQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgcU5hbWUsIERvY3VtZW50ICpkb2MpCiAgICAgOiBDb250YWluZXJOb2RlKGRv
YykKICAgICAsIG1fdGFnTmFtZShxTmFtZSkKQEAgLTE4NSw3ICsyNDUsNyBAQCBOb2RlOjpOb2Rl
VHlwZSBFbGVtZW50Ojpub2RlVHlwZSgpIGNvbnN0CiAgICAgcmV0dXJuIEVMRU1FTlRfTk9ERTsK
IH0KIAotY29uc3QgQXRvbWljU3RyaW5nTGlzdCogRWxlbWVudDo6Z2V0Q2xhc3NMaXN0KCkgY29u
c3QKK2NvbnN0IENsYXNzTmFtZUxpc3QqIEVsZW1lbnQ6OmdldENsYXNzTGlzdCgpIGNvbnN0CiB7
CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0xMDkxLDYgKzExNTEsMTkgQEAgUmVuZGVyU3R5bGUqIEVs
ZW1lbnQ6OmNvbXB1dGVkU3R5bGUoKQogICAgIHJldHVybiByZC0+bV9jb21wdXRlZFN0eWxlOwog
fQogCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBFbGVtZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KGNvbnN0IFN0cmluZyYgbmFtZSkKK3sKKyAgICByZXR1cm4gZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZU5TKCIqIiwgbmFtZSk7Cit9CisKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IEVsZW1lbnQ6OmdldEVs
ZW1lbnRzQnlDbGFzc05hbWVOUyhjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3Ry
aW5nJiBjbGFzc05hbWUpCit7CisgICAgaWYgKGNsYXNzTmFtZS5pc051bGwoKSkKKyAgICAgICAg
cmV0dXJuIDA7CisKKyAgICByZXR1cm4gbmV3IENsYXNzTm9kZUxpc3QodGhpcywgbmFtZXNwYWNl
VVJJLmlzRW1wdHkoKSA/IG51bGxBdG9tIDogQXRvbWljU3RyaW5nKG5hbWVzcGFjZVVSSSksIGNs
YXNzTmFtZSk7Cit9CisKIHZvaWQgRWxlbWVudDo6Y2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRl
KCkKIHsKICAgICBpZiAoRWxlbWVudFJhcmVEYXRhKiByZCA9IHJhcmVEYXRhKCkpCkBAIC0xMDk5
LDQgKzExNzIsNSBAQCB2b2lkIEVsZW1lbnQ6OmNhbmNlbEZvY3VzQXBwZWFyYW5jZVVwZGF0CiAg
ICAgICAgIGRvY3VtZW50KCktPmNhbmNlbEZvY3VzQXBwZWFyYW5jZVVwZGF0ZSgpOwogfQogCisK
IH0KSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FbGVtZW50LmggKHJldmlzaW9uIDI1MTgzKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oICh3
b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQXRvbWljU3RyaW5nTGlzdDsKK2NsYXNzIENsYXNzTmFtZUxpc3Q7CiBjbGFzcyBBdHRy
OwogY2xhc3MgQXR0cmlidXRlOwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKQEAgLTQ0LDcg
KzQ0LDcgQEAgcHVibGljOgogICAgIH5FbGVtZW50KCk7CiAKICAgICAvLyBVc2VkIHRvIHF1aWNr
bHkgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGFuIGVsZW1lbnQgaGFzIGEgZ2l2ZW4gQ1NTIGNs
YXNzLgotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nTGlzdCogZ2V0Q2xhc3NMaXN0KCkg
Y29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBDbGFzc05hbWVMaXN0KiBnZXRDbGFzc0xpc3QoKSBj
b25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldElEQXR0cmlidXRlKCkgY29uc3Q7CiAg
ICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25z
dDsKQEAgLTE2MCw2ICsxNjAsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKGJv
b2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUZvY3VzQXBwZWFyYW5jZShib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbik7CiAgICAg
dm9pZCBibHVyKCk7CisgICAgCisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZShjb25zdCBTdHJpbmcmKTsKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRF
bGVtZW50c0J5Q2xhc3NOYW1lTlMoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CiAKICNp
Zm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0cmVhbSogLCBEZXByZWNh
dGVkU3RyaW5nIGluZCA9ICIiKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsIChyZXZpc2lvbiAyNTE4MykK
KysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsICh3b3JraW5nIGNvcHkpCkBAIC05NCw3ICs5NCwx
MSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChp
biBbT3B0aW9uYWxdIGJvb2xlYW4gY2VudGVySWZOZWVkZWQpOwogICAgICAgICB2b2lkIHNjcm9s
bEJ5TGluZXMoaW4gbG9uZyBsaW5lcyk7CiAgICAgICAgIHZvaWQgc2Nyb2xsQnlQYWdlcyhpbiBs
b25nIHBhZ2VzKTsKLQorICAgICAgICAKKyAgICAgICAgLy8gSFRNTCA1CisgICAgICAgIE5vZGVM
aXN0IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoaW4gRE9NU3RyaW5nIG5hbWUpOworICAgICAgICBO
b2RlTGlzdCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lTlMoaW4gW0NvbnZlcnROdWxsVG9OdWxsU3Ry
aW5nXSBET01TdHJpbmcgbmFtZXNwYWNlVVJJLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRE9NU3RyaW5nIGNsYXNzTmFtZSk7CiAjaWYgZGVmaW5lZChMQU5H
VUFHRV9PQkpFQ1RJVkVfQykKICAgICAgICAgLy8gT2JqZWN0aXZlLUMgZXh0ZW5zaW9ucwogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGlubmVyVGV4dDsKSW5kZXg6IFdlYkNv
cmUvZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
TmFtZWRNYXBwZWRBdHRyTWFwLmNwcCAocmV2aXNpb24gMjUxODMpCisrKyBXZWJDb3JlL2RvbS9O
YW1lZE1hcHBlZEF0dHJNYXAuY3BwICh3b3JraW5nIGNvcHkpCkBAIC03Niw0OCArNzYsMTUgQEAg
Ym9vbCBOYW1lZE1hcHBlZEF0dHJNYXA6Om1hcHNFcXVpdmFsZW50KAogICAgIHJldHVybiB0cnVl
OwogfQogCi1pbmxpbmUgc3RhdGljIGJvb2wgaXNDbGFzc1doaXRlc3BhY2UoVUNoYXIgYykKLXsK
LSAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdc
dCc7Ci19Ci0KLXZvaWQgTmFtZWRNYXBwZWRBdHRyTWFwOjpwYXJzZUNsYXNzQXR0cmlidXRlKGNv
bnN0IFN0cmluZyYgY2xhc3NTdHIpCi17Ci0gICAgbV9jbGFzc0xpc3QuY2xlYXIoKTsKLSAgICBp
ZiAoIWVsZW1lbnQtPmhhc0NsYXNzKCkpCit2b2lkIE5hbWVkTWFwcGVkQXR0ck1hcDo6cGFyc2VD
bGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGNsYXNzU3RyKSAKK3sgCisgICAgaWYoIWVsZW1l
bnQtPmhhc0NsYXNzKCkpIAorICAgIHsgCisgICAgICAgIG1fY2xhc3NMaXN0LmNsZWFyKCk7IAog
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgU3RyaW5nIGNsYXNzQXR0ciA9IGVsZW1lbnQtPmRv
Y3VtZW50KCktPmluQ29tcGF0TW9kZSgpID8gCi0gICAgICAgIChjbGFzc1N0ci5pbXBsKCktPmlz
TG93ZXIoKSA/IGNsYXNzU3RyIDogU3RyaW5nKGNsYXNzU3RyLmltcGwoKS0+bG93ZXIoKSkpIDoK
LSAgICAgICAgY2xhc3NTdHI7Ci0gICAgCi0gICAgQXRvbWljU3RyaW5nTGlzdCogY3VyciA9IDA7
Ci0gICAgCi0gICAgY29uc3QgVUNoYXIqIHN0ciA9IGNsYXNzQXR0ci5jaGFyYWN0ZXJzKCk7Ci0g
ICAgaW50IGxlbmd0aCA9IGNsYXNzQXR0ci5sZW5ndGgoKTsKLSAgICBpbnQgc1BvcyA9IDA7Ci0K
LSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICB3aGlsZSAoc1BvcyA8IGxlbmd0aCAmJiBpc0Ns
YXNzV2hpdGVzcGFjZShzdHJbc1Bvc10pKQotICAgICAgICAgICAgKytzUG9zOwotICAgICAgICBp
ZiAoc1BvcyA+PSBsZW5ndGgpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgaW50IGVQb3Mg
PSBzUG9zICsgMTsKLSAgICAgICAgd2hpbGUgKGVQb3MgPCBsZW5ndGggJiYgIWlzQ2xhc3NXaGl0
ZXNwYWNlKHN0cltlUG9zXSkpCi0gICAgICAgICAgICArK2VQb3M7Ci0gICAgICAgIGlmIChjdXJy
KSB7Ci0gICAgICAgICAgICBjdXJyLT5zZXROZXh0KG5ldyBBdG9taWNTdHJpbmdMaXN0KEF0b21p
Y1N0cmluZyhzdHIgKyBzUG9zLCBlUG9zIC0gc1BvcykpKTsKLSAgICAgICAgICAgIGN1cnIgPSBj
dXJyLT5uZXh0KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoc1BvcyA9PSAw
ICYmIGVQb3MgPT0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgbV9jbGFzc0xpc3Quc2V0U3Ry
aW5nKEF0b21pY1N0cmluZyhjbGFzc0F0dHIpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fY2xhc3NMaXN0LnNldFN0cmluZyhBdG9taWNTdHJp
bmcoc3RyICsgc1BvcywgZVBvcyAtIHNQb3MpKTsKLSAgICAgICAgICAgIGN1cnIgPSAmbV9jbGFz
c0xpc3Q7Ci0gICAgICAgIH0KLSAgICAgICAgc1BvcyA9IGVQb3MgKyAxOwotICAgIH0KKyAgICB9
IAorICAgIG1fY2xhc3NMaXN0LnBhcnNlQ2xhc3NBdHRyaWJ1dGUoY2xhc3NTdHIsIGVsZW1lbnQt
PmRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpKTsgCiB9CiAKKwogfQpJbmRleDogV2ViQ29yZS9k
b20vTmFtZWRNYXBwZWRBdHRyTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTmFtZWRN
YXBwZWRBdHRyTWFwLmggKHJldmlzaW9uIDI1MTgzKQorKysgV2ViQ29yZS9kb20vTmFtZWRNYXBw
ZWRBdHRyTWFwLmggKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4LDggQEAKICNkZWZpbmUgTmFt
ZWRNYXBwZWRBdHRyTWFwX2gKIAogI2luY2x1ZGUgIk5hbWVkQXR0ck1hcC5oIgotI2luY2x1ZGUg
IkF0b21pY1N0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKKyNpbmNs
dWRlICJDbGFzc05hbWVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsOCAr
NDIsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzTWFwcGVkQXR0cmlidXRl
TWFwKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQ2xhc3NBdHRyaWJ1dGUo
Y29uc3QgU3RyaW5nJiBjbGFzc0F0dHIpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZ0xpc3QqIGdl
dENsYXNzTGlzdCgpIGNvbnN0IHsgcmV0dXJuICZtX2NsYXNzTGlzdDsgfQorICAgIHZvaWQgcGFy
c2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmKTsKKworICAgIGNvbnN0IENsYXNzTmFtZUxp
c3QqIGdldENsYXNzTGlzdCgpIGNvbnN0IHsgcmV0dXJuICZtX2NsYXNzTGlzdDsgfQogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBoYXNNYXBwZWRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9t
YXBwZWRBdHRyaWJ1dGVDb3VudCA+IDA7IH0KICAgICB2b2lkIGRlY2xSZW1vdmVkKCkgeyBtX21h
cHBlZEF0dHJpYnV0ZUNvdW50LS07IH0KQEAgLTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgICAg
ICB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXBwZWRBdHRyaWJ1dGUqPihOYW1lZEF0dHJNYXA6Omdl
dEF0dHJpYnV0ZUl0ZW0obmFtZSkpOyB9CiAgICAgCiBwcml2YXRlOgotICAgIEF0b21pY1N0cmlu
Z0xpc3QgbV9jbGFzc0xpc3Q7CisgICAgQ2xhc3NOYW1lTGlzdCBtX2NsYXNzTGlzdDsKICAgICBp
bnQgbV9tYXBwZWRBdHRyaWJ1dGVDb3VudDsKIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3Bw
IChyZXZpc2lvbiAyNTE4MykKKysrIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwICh3b3Jr
aW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24q
IFN0eWxlZEVsZW1lbgogICAgIHJldHVybiAwOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmdMaXN0
KiBTdHlsZWRFbGVtZW50OjpnZXRDbGFzc0xpc3QoKSBjb25zdAorY29uc3QgQ2xhc3NOYW1lTGlz
dCogU3R5bGVkRWxlbWVudDo6Z2V0Q2xhc3NMaXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbmFt
ZWRBdHRyTWFwID8gbWFwcGVkQXR0cmlidXRlcygpLT5nZXRDbGFzc0xpc3QoKSA6IDA7CiB9Cklu
ZGV4OiBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vU3R5bGVkRWxlbWVudC5oIChyZXZpc2lvbiAyNTE4MykKKysrIFdlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuaCAod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBpbnZhbGlkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRl
U3R5bGVBdHRyaWJ1dGVJZk5lZWRlZCgpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nTGlzdCogZ2V0Q2xhc3NMaXN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25z
dCBDbGFzc05hbWVMaXN0KiBnZXRDbGFzc0xpc3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQg
YXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqIGF0dHIsIGJvb2wgcHJlc2VydmVEZWNscyA9IGZh
bHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmli
dXRlKiBhdHRyKTsKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7CkluZGV4
OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIChyZXZpc2lvbiAyNTE4MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZyAod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA3LTA4LTIyICBEYXZpZCBTbWl0aCAgPGNhdGZpc2gu
bWFuQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAg
ICAgICAgCisgICAgICAgIC0gdGVzdCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTQ5NTUKKyAgICAgICAgICBJbXBsZW1lbnQgZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZQorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dDogQWRkZWQgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZQorICAgICAgICAqIGZhc3QvZG9tL2dl
dGVsZW1lbnRzYnljbGFzc25hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9nZXRlbGVtZW50c2J5Y2xhc3NuYW1lLmh0bWw6IEFkZGVkLgorCiAyMDA3LTA4LTIxICBB
ZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICAqIHBsYXRmb3JtL3dpbi9T
a2lwcGVkOiBBZGRlZCBhIGNvdXBsZSBtb3JlIGZhaWx1cmVzLgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNsYXNzbmFtZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNsYXNzbmFtZS1leHBlY3RlZC50
eHQgKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5Y2xh
c3NuYW1lLWV4cGVjdGVkLnR4dCAocmV2aXNpb24gMCkKQEAgLTAsMCArMSwyMiBAQAorTGluZSAx
CitMaW5lIDIKK0xpbmUgMworCitsaW5lIDQKK2xpbmUgNQorCitbb2JqZWN0IEhUTUxEaXZFbGVt
ZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBs
ZW5ndGg6IDMKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0IEhUTUxEaXZFbGVtZW50
XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3QgSFRNTFBhcmFncmFwaEVsZW1lbnRd
LCBsZW5ndGg6IDQKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0IEhUTUxEaXZFbGVt
ZW50XSwgbGVuZ3RoOiAyCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2
RWxlbWVudF0sIGxlbmd0aDogMgorbGVuZ3RoOiAwCitsZW5ndGg6IDAKK2xlbmd0aDogMAorW29i
amVjdCBIVE1MRGl2RWxlbWVudF0sIGxlbmd0aDogMQorW29iamVjdCBIVE1MRGl2RWxlbWVudF0s
IFtvYmplY3QgSFRNTFBhcmFncmFwaEVsZW1lbnRdLCBsZW5ndGg6IDIKK1tvYmplY3QgSFRNTERp
dkVsZW1lbnRdLCBsZW5ndGg6IDEKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBsZW5ndGg6IDEK
K2xlbmd0aDogMAorbGVuZ3RoOiAwCitsZW5ndGg6IDAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2V0ZWxlbWVudHNieWNsYXNzbmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUuaHRtbCAocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUuaHRtbCAocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NyBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXYgY2xhc3M9Im9uZSI+
TGluZSAxPGRpdiBjbGFzcz0idHdvIj5MaW5lIDI8L2Rpdj48cD5MaW5lIDxpPjM8L2k+PC9wPjwv
ZGl2PgorPGRpdiBpZD0idGVzdCIgY2xhc3M9Im9uZSB0d28iPjxkaXYgY2xhc3M9Im9uZSB0d28i
PmxpbmUgNDwvZGl2PjxwIGNsYXNzPSJ0d28iPmxpbmUgNTwvcD48L2Rpdj4KKzxwPjxvbCBpZD0i
Y29uc29sZSI+PC9vbD48L3A+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKKyAg
ICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQorICAgIAorICAgIE5vZGVM
aXN0LnByb3RvdHlwZS5kdW1wID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9ICIiOworICAgICAgICB2YXIgaSA9IDA7CisgICAgICAgIGZvcig7IGkgPCB0aGlzLmxlbmd0
aDsgaSsrKQorICAgICAgICAgICAgcmVzdWx0ICs9IHRoaXNbaV0gKyAiLCAiOworICAgICAgICBy
ZXN1bHQgKz0gImxlbmd0aDogIiArIGk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgCisgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisgICAgICAgIAorICAgICAgICAgICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUoIm9uZSIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgidHdvIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhkb2N1
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJvbmUgdHdvIikuZHVtcCgpKTsKKyAgICAgICAg
ICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJvbmVcdFx0XG4gdHdvIiku
ZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCIiKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoIm9uZXR3byIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgpLmR1bXAoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZh
ciBlbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZSIpLmR1bXAoKSk7
CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoInR3byIpLmR1bXAo
KSk7CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZSB0d28i
KS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJv
bmVcdFx0XG4gdHdvIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhlbG0uZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZSgiIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhlbG0uZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZSgib25ldHdvIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhlbG0uZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgpLmR1bXAoKSk7CisKKyAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAg
ICAgICAgICAgIGxvZygiRXhjZXB0aW9uOiAiICsgZXguZGVzY3JpcHRpb24pOworICAgICAgICB9
CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQud3JpdGUoIihjYW5ub3QgcnVuIGludGVy
YWN0aXZlbHkpIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVy
dGllcy1leHBlY3RlZC50eHQgKHJldmlzaW9uIDI1MTgzKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dCAod29ya2luZyBjb3B5KQpA
QCAtMzE2LDYgKzMxNiw4IEBAIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZWxlbWVudEZyb21Q
b2kKIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZXZhbHVhdGUgW2Z1bmN0aW9uXQogd2luZG93
LkRvY3VtZW50LnByb3RvdHlwZS5leGVjQ29tbWFuZCBbZnVuY3Rpb25dCiB3aW5kb3cuRG9jdW1l
bnQucHJvdG90eXBlLmdldEVsZW1lbnRCeUlkIFtmdW5jdGlvbl0KK3dpbmRvdy5Eb2N1bWVudC5w
cm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSBbZnVuY3Rpb25dCit3aW5kb3cuRG9jdW1l
bnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWVOUyBbZnVuY3Rpb25dCiB3aW5kb3cu
RG9jdW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lIFtmdW5jdGlvbl0KIHdpbmRv
dy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyBbZnVuY3Rpb25dCiB3
aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdldE92ZXJyaWRlU3R5bGUgW2Z1bmN0aW9uXQpAQCAt
NDIyLDYgKzQyNCw4IEBAIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGUgW2YK
IHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOUyBbZnVuY3Rpb25dCiB3aW5k
b3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTm9kZSBbZnVuY3Rpb25dCiB3aW5kb3cu
RWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTm9kZU5TIFtmdW5jdGlvbl0KK3dpbmRvdy5F
bGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIFtmdW5jdGlvbl0KK3dpbmRv
dy5FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lTlMgW2Z1bmN0aW9uXQog
d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lIFtmdW5jdGlvbl0K
IHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZU5TIFtmdW5jdGlv
bl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGUgW2Z1bmN0aW9uXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16176</attachid>
            <date>2007-09-01 16:57:57 -0700</date>
            <delta_ts>2007-09-09 23:25:54 -0700</delta_ts>
            <desc>Without getElementsByClassNameNS, and with null/undefined tests</desc>
            <filename>get-elements-by-class-name4.txt</filename>
            <type>text/plain</type>
            <size>36184</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTM0NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTEgQEAKKzIwMDctMDktMDEgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5
NTUKKyAgICAgICAgICBJbXBsZW1lbnQgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS4gVGhpcyBwYXRj
aCBhbHNvIHJlbmFtZXMgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0IHRvIGJldHRl
ciByZWZsZWN0IGl0cyBhY3R1YWwgdXNlLAorICAgICAgICAgIGFuZCB0YWtlcyBhZHZhbnRhZ2Ug
b2YgYWRtaXR0aW5nIHRoYXQgaXQncyBjbGFzcy1zcGVjaWZpYyB0byBlbmNhcHN1bGF0ZSBjbGFz
cyBhdHRyaWJ1dGUgcGFyc2luZyBzbyBpdCBjYW4gYmUgc2hhcmVkLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUuaHRtbAorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBGaWxlIHJlbmFtZXMKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjptYXRjaFJ1bGVzKTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IENo
YW5nZSBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QKKyAgICAgICAgKiBkb20vQXRv
bWljU3RyaW5nTGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9DbGFzc05hbWVMaXN0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0Ojpjb250YWlucyk6IE5l
dyBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGNsYXNzIG5hbWUgaXMgaW4gdGhlIGxpc3QKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ2xhc3NXaGl0ZXNwYWNlKTogTW92ZWQgZnJvbSBOYW1lZE1hcHBlZEF0
dHJNYXAKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxpc3Q6OnBhcnNlQ2xhc3NBdHRyaWJ1
dGUpOiBNb3ZlZCAoYW5kIGFkYXB0ZWQpIGZyb20gTmFtZWRNYXBwZWRBdHRyTWFwCisgICAgICAg
ICogZG9tL0NsYXNzTmFtZUxpc3QuaDogQ29waWVkIGZyb20gV2ViQ29yZS9kb20vQXRvbWljU3Ry
aW5nTGlzdC5oLgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6Q2xhc3NOYW1lTGlz
dCk6IE5hbWUgY2hhbmdlCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0Ojp+Q2xhc3NO
YW1lTGlzdCk6IE5hbWUgY2hhbmdlCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0Ojpu
ZXh0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxpc3Q6OnNldE5l
eHQpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6c3RyaW5n
KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxpc3Q6OnNldFN0cmlu
Zyk6IE5hbWUgY2hhbmdlCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0OjpjbG9uZSk6
IE5hbWUgY2hhbmdlCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0OjpjbGVhcik6IE5h
bWUgY2hhbmdlCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKTogQWRkZWQKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuaDogQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaWRsOiBBZGRlZCB0aGUgbmV3IGZ1bmN0aW9ucworICAgICAgICAqIGRvbS9FbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTm9kZUxpc3Q6OkNsYXNzTm9kZUxpc3QpOiBOZXcg
Tm9kZUxpc3Qgc3ViY2xhc3MgdGhhdCBtYXRjaGVzIGJ5IGNsYXNzIG5hbWVzCisgICAgICAgIChX
ZWJDb3JlOjpDbGFzc05vZGVMaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NO
b2RlTGlzdDo6aXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpDbGFzc05vZGVMaXN0Ojpub2RlTWF0
Y2hlcyk6IENoZWNrIHRoZSBjbGFzcyBuYW1lIHVzaW5nIENsYXNzTmFtZUxpc3QncyBuZXcgY29u
dGFpbnMoKQorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0Q2xhc3NMaXN0KTogQ2hhbmdl
IEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSk6IEFkZGVkCisgICAgICAgICogZG9tL0VsZW1l
bnQuaDogQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6
IEFkZGVkIHRoZSBuZXcgZnVuY3Rpb25zCisgICAgICAgICogZG9tL05hbWVkTWFwcGVkQXR0ck1h
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lZE1hcHBlZEF0dHJNYXA6OnBhcnNlQ2xhc3NB
dHRyaWJ1dGUpOiBNb3ZlIGFsbCB0aGUgbG9naWMgaGVyZSB0byBDbGFzc05hbWVMaXN0IHNvIGl0
IGNhbiBiZSBzaGFyZWQKKyAgICAgICAgKiBkb20vTmFtZWRNYXBwZWRBdHRyTWFwLmg6CisgICAg
ICAgIChXZWJDb3JlOjpOYW1lZE1hcHBlZEF0dHJNYXA6OmdldENsYXNzTGlzdCk6IENoYW5nZSBB
dG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QKKyAgICAgICAgKiBkb20vU3R5bGVkRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50OjpnZXRDbGFzc0xpc3Qp
OiBDaGFuZ2UgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0CisgICAgICAgICogZG9t
L1N0eWxlZEVsZW1lbnQuaDoKIDIwMDctMDktMDEgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0uCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjUzNDQpCisrKyBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzU1LDYg
KzM1NSw4IEBACiAJCTUxRjExRTE1MEE0OEMyOTIwMDM0QTI0RSAvKiBTUUxUcmFuc2FjdGlvbi5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUYxMUUx
NDBBNDhDMjkyMDAzNEEyNEUgLyogU1FMVHJhbnNhY3Rpb24uY3BwICovOyB9OwogCQk1NTBBMEJD
OTA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTBBMEJDNzA4NUY2MDM5MDA3MzUzRDYgLyog
UXVhbGlmaWVkTmFtZS5jcHAgKi87IH07CiAJCTU1MEEwQkNBMDg1RjYwMzkwMDczNTNENiAvKiBR
dWFsaWZpZWROYW1lLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1NTBBMEJDODA4NUY2MDM5MDA3MzUzRDYgLyogUXVhbGlmaWVkTmFtZS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTYzNDA5NDdEMEM3MkIz
ODcwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA2MzQwOTQ3QjBDNzJCMzg2MDBGMEM1OTggLyogQ2xhc3NOYW1l
TGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJ
CTYzNDA5NDdFMEM3MkIzODcwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDA5NDdDMEM3MkIzODYwMEYw
QzU5OCAvKiBDbGFzc05hbWVMaXN0LmNwcCAqLzsgfTsKIAkJNjUwRTNGNkEwQUY2QzE2ODAwMUZB
M0FEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDY1MEUzRjY4MEFGNkMxNjgwMDFGQTNBRCAvKiBSZXNvdXJjZVJl
cXVlc3RNYWMubW0gKi87IH07CiAJCTY1MEY1M0RDMDlEMTVEREEwMEM5QjBDOCAvKiBDU1NHcmFt
bWFyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTBG
NTNEQjA5RDE1RERBMDBDOUIwQzggLyogQ1NTR3JhbW1hci5oICovOyB9OwogCQk2NTBGNTNERDA5
RDE1RERGMDBDOUIwQzggLyogQ1NTR3JhbW1hci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NTY1ODE0NDA5RDEzMDQzMDAwRTYxRDcgLyogQ1NTR3Jh
bW1hci5jcHAgKi87IH07CkBAIC0xNjE1LDcgKzE2MTcsNiBAQAogCQk5M0YxOTlCRDA4MjQ1RTU5
MDAxRTlBQkMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTU5OThBNUMwNTJCNTlDQzAwMTdBNkMxIC8qIEFYT2JqZWN0Q2Fj
aGUuaCAqLzsgfTsKIAkJOTNGMTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBNjQw
RjAwNTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OUMyMDgyNDVFNTkwMDFFOUFC
QyAvKiBXZWJDb3JlS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4NEIyQjFGNzA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtleUdl
bmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCTkzRjE5OUNGMDgyNDVFNTkwMDFFOUFCQyAvKiBBdG9taWNTdHJpbmdMaXN0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCMzY0NzA1QzlENUUy
MDBFNDI5MDIgLyogQXRvbWljU3RyaW5nTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OURFMDgyNDVFNTkwMDFFOUFCQyAvKiBQb3Np
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU5
MUZDOEIwNjEzMzY2NjAwNUUzNzkwIC8qIFBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5RTUwODI0NUU1OTAwMUU5QUJDIC8q
IEhUTUxDYW52YXNFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MUY2QTNENjA2NjNCRjA0MDA0RDI5MTkgLyogSFRNTENhbnZhc0VsZW1lbnQu
aCAqLzsgfTsKIAkJOTNGMTk5RTcwODI0NUU1OTAwMUU5QUJDIC8qIENsaXBib2FyZE1hYy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5MDY2MEIwNjY1
RDkzNzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNjEyLDYgKzM2MTMsOCBAQAogCQk1NTk5OEE1QjA1
MkI1OUNDMDAxN0E2QzEgLyogV2ViQ29yZUFYT2JqZWN0Lm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQ29yZUFYT2JqZWN0Lm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
IAkJNTU5OThBNUMwNTJCNTlDQzAwMTdBNkMxIC8qIEFYT2JqZWN0Q2FjaGUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhPYmplY3RDYWNoZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsK
IAkJNTU5OThBNUQwNTJCNTlDQzAwMTdBNkMxIC8qIEFYT2JqZWN0Q2FjaGVNYWMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBWE9i
amVjdENhY2hlTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVz
ZXNUYWJzID0gMDsgfTsKKwkJNjM0MDk0N0IwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFtZUxp
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NOYW1lTGlzdC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk2MzQwOTQ3QzBDNzJCMzg2MDBGMEM1OTggLyog
Q2xhc3NOYW1lTGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBD
bGFzc05hbWVMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUwRTNGNjgw
QUY2QzE2ODAwMUZBM0FEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNvdXJjZVJlcXVlc3RNYWMubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MEY1M0RCMDlEMTVEREEwMEM5QjBDOCAvKiBDU1NHcmFt
bWFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDU1NHcmFtbWFyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTY1MTg4ODg2MEFGRjNCRjcwMDE2NDcyMCAvKiBS
ZXNvdXJjZUVycm9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBS
ZXNvdXJjZUVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTYxMTMsNyAr
NjExNiw2IEBACiAJCUJDMzA1Qzc3MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVt
ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPYmpl
Y3RFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDVDNzgwQzA3
NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMzMDVDQTMwQzA3ODFCQjAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1l
bnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNIVE1M
T2JqZWN0RWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUJD
M0IzNjQ3MDVDOUQ1RTIwMEU0MjkwMiAvKiBBdG9taWNTdHJpbmdMaXN0LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF0b21pY1N0cmluZ0xpc3Qu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7IH07
CiAJCUJDM0MzOUI0MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUxpc3QuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRpYUxp
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFMaXN0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0ZDQUE4MEFDM0RCNTgwMEJBNTRBRCAvKiBQ
bGF0Zm9ybVNjcm9sbEJhci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxh
dGZvcm1TY3JvbGxCYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDE2LDcg
KzEwMDE4LDggQEAKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCiAJCQkJQTc4
NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIENsaXBib2FyZC5jcHAgKi8sCi0JCQkJQkMzQjM2NDcw
NUM5RDVFMjAwRTQyOTAyIC8qIEF0b21pY1N0cmluZ0xpc3QuaCAqLywKKwkJCQk2MzQwOTQ3QjBD
NzJCMzg2MDBGMEM1OTggLyogQ2xhc3NOYW1lTGlzdC5oICovLAorCQkJCTYzNDA5NDdDMEM3MkIz
ODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmNwcCAqLywKIAkJCQlBOEM0QTdGQzA5RDU2MzI3
MDAwM0FDOEQgLyogQXR0ci5jcHAgKi8sCiAJCQkJQThDNEE3RkIwOUQ1NjMyNzAwMDNBQzhEIC8q
IEF0dHIuaCAqLywKIAkJCQk5M0VFQzFFNTA5QzI4Nzc3MDBDNTE1RDEgLyogQXR0ci5pZGwgKi8s
CkBAIC0xMDIxNiw3ICsxMDIxOSw2IEBACiAJCQkJOTNGMTk5QkQwODI0NUU1OTAwMUU5QUJDIC8q
IEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUJFMDgyNDVFNTkwMDFF
OUFCQyAvKiBCbG9ja0V4Y2VwdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUMyMDgy
NDVFNTkwMDFFOUFCQyAvKiBXZWJDb3JlS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLywKLQkJ
CQk5M0YxOTlDRjA4MjQ1RTU5MDAxRTlBQkMgLyogQXRvbWljU3RyaW5nTGlzdC5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJOTNGMTk5REUwODI0NUU1OTAwMUU5QUJDIC8qIFBvc2l0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk5M0YxOTlFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1l
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUU3MDgyNDVFNTkwMDFFOUFCQyAvKiBDbGlw
Ym9hcmRNYWMuaCBpbiBIZWFkZXJzICovLApAQCAtMTE3MTUsNiArMTE3MTcsNyBAQAogCQkJCTBG
MzFDQkY5MkI2NTQ3MzBCQTA1MzVFOCAvKiBCaWRpQ29udGV4dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQzMkU4NDcwQzUxNDkzODAwQjE1MDBGIC8qIEdDQ29udHJvbGxlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTE0QjNGNzMwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCBpbiBIZWFk
ZXJzICovLAorCQkJCTYzNDA5NDdEMEM3MkIzODcwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFREUzQTUwMDBDN0E0MzA2MDA5NTZBMzcgLyogQ29sb3JNYWMu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwpAQCAtMTMxNzYsNiArMTMxNzksNyBAQAogCQkJCUJDMkVENkJDMEM2QkQyRjAw
MDkyMEJGRiAvKiBKU0F0dHJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMyRUQ3QTUw
QzZDMEYzNjAwOTIwQkZGIC8qIEpTSFRNTEZyYW1lRWxlbWVudEN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTRCM0Y3NjBDNzIyMDU1MDAwNTMwREYgLyogRmlsZVN5c3RlbU1hYy5tbSBp
biBTb3VyY2VzICovLAorCQkJCTYzNDA5NDdFMEM3MkIzODcwMEYwQzU5OCAvKiBDbGFzc05hbWVM
aXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJl
dmlzaW9uIDI1MzQ0KQorKysgV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM5NCw3ICszOTQsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNo
UnVsZXMoQ1NTUnVsCiAgICAgaWYgKGVsZW1lbnQtPmhhc0lEKCkpCiAgICAgICAgIG1hdGNoUnVs
ZXNGb3JMaXN0KHJ1bGVzLT5nZXRJRFJ1bGVzKGVsZW1lbnQtPmdldElEQXR0cmlidXRlKCkuaW1w
bCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwogICAgIGlmIChlbGVtZW50LT5o
YXNDbGFzcygpKSB7Ci0gICAgICAgIGZvciAoY29uc3QgQXRvbWljU3RyaW5nTGlzdCogc2luZ2xl
Q2xhc3MgPSBlbGVtZW50LT5nZXRDbGFzc0xpc3QoKTsgc2luZ2xlQ2xhc3M7IHNpbmdsZUNsYXNz
ID0gc2luZ2xlQ2xhc3MtPm5leHQoKSkKKyAgICAgICAgZm9yIChjb25zdCBDbGFzc05hbWVMaXN0
KiBzaW5nbGVDbGFzcyA9IGVsZW1lbnQtPmdldENsYXNzTGlzdCgpOyBzaW5nbGVDbGFzczsgc2lu
Z2xlQ2xhc3MgPSBzaW5nbGVDbGFzcy0+bmV4dCgpKQogICAgICAgICAgICAgbWF0Y2hSdWxlc0Zv
ckxpc3QocnVsZXMtPmdldENsYXNzUnVsZXMoc2luZ2xlQ2xhc3MtPnN0cmluZygpLmltcGwoKSks
IGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKICAgICB9CiAgICAgbWF0Y2hSdWxlc0Zv
ckxpc3QocnVsZXMtPmdldFRhZ1J1bGVzKGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIGZp
cnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsKQEAgLTEzNjAsNyArMTM2MCw3IEBAIGJvb2wg
Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3RvcigKICAgICAgICAgaWYgKHNlbC0+bV9t
YXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpIHsKICAgICAgICAgICAgIGlmICghZS0+aGFzQ2xh
c3MoKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKGNv
bnN0IEF0b21pY1N0cmluZ0xpc3QqIGMgPSBlLT5nZXRDbGFzc0xpc3QoKTsgYzsgYyA9IGMtPm5l
eHQoKSkKKyAgICAgICAgICAgIGZvciAoY29uc3QgQ2xhc3NOYW1lTGlzdCogYyA9IGUtPmdldENs
YXNzTGlzdCgpOyBjOyBjID0gYy0+bmV4dCgpKQogICAgICAgICAgICAgICAgIGlmIChjLT5zdHJp
bmcoKSA9PSBzZWwtPm1fdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpJbmRleDogV2ViQ29yZS9kb20vQXRvbWljU3RyaW5n
TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0F0b21pY1N0cmluZ0xpc3QuaAkocmV2
aXNpb24gMjUzNDQpCisrKyBXZWJDb3JlL2RvbS9BdG9taWNTdHJpbmdMaXN0LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBE
T00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBw
bGUgQ29tcHV0ZXIsIEluYy4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJs
aXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9u
IDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u
Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl
biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2
ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIu
ICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0gKiBCb3N0b24sIE1BIDAyMTExLTEzMDcs
IFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBBdG9taWNTdHJpbmdMaXN0X2gKLSNkZWZpbmUgQXRv
bWljU3RyaW5nTGlzdF9oCi0KLSNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi1jbGFzcyBBdG9taWNTdHJpbmdMaXN0IHsKLXB1YmxpYzoKLSAgICBBdG9t
aWNTdHJpbmdMaXN0KCkgOiBtX25leHQoMCkge30KLSAgICBBdG9taWNTdHJpbmdMaXN0KGNvbnN0
IEF0b21pY1N0cmluZyYgc3RyLCBBdG9taWNTdHJpbmdMaXN0KiBuID0gMCkgOiBtX3N0cmluZyhz
dHIpLCBtX25leHQobikge30KLSAgICB+QXRvbWljU3RyaW5nTGlzdCgpIHsgZGVsZXRlIG1fbmV4
dDsgfQotICAgIAotICAgIEF0b21pY1N0cmluZ0xpc3QqIG5leHQoKSBjb25zdCB7IHJldHVybiBt
X25leHQ7IH0KLSAgICB2b2lkIHNldE5leHQoQXRvbWljU3RyaW5nTGlzdCogbikgeyBtX25leHQg
PSBuOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZzsgfQotICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyKSB7
IG1fc3RyaW5nID0gc3RyOyB9Ci0KLSAgICBBdG9taWNTdHJpbmdMaXN0KiBjbG9uZSgpIHsgcmV0
dXJuIG5ldyBBdG9taWNTdHJpbmdMaXN0KG1fc3RyaW5nLCBtX25leHQgPyBtX25leHQtPmNsb25l
KCkgOiAwKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7IG1fc3RyaW5nID0gbnVsbEF0b207IGRlbGV0
ZSBtX25leHQ7IG1fbmV4dCA9IDA7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5n
IG1fc3RyaW5nOwotICAgIEF0b21pY1N0cmluZ0xpc3QqIG1fbmV4dDsKLX07Ci0KLX0KLQotI2Vu
ZGlmCkluZGV4OiBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9t
L0NsYXNzTmFtZUxpc3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1
aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKyNpbmNsdWRlICJDbGFzc05hbWVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK2Jvb2wgQ2xhc3NOYW1lTGlzdDo6Y29udGFpbnMoY29uc3QgQXRvbWljU3Ry
aW5nJiBzdHIpIGNvbnN0IAoreyAKKyAgICBmb3IoY29uc3QgQ2xhc3NOYW1lTGlzdCAqdCA9IHRo
aXM7IHQ7IHQgPSB0LT5uZXh0KCkpIAorICAgIHsgCisgICAgICAgIGlmKHQtPnN0cmluZygpID09
IHN0cikgCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgCisgICAgfSAKKyAgICByZXR1cm4gZmFs
c2U7IAorfQorCitpbmxpbmUgc3RhdGljIGJvb2wgaXNDbGFzc1doaXRlc3BhY2UoVUNoYXIgYykK
K3sKKyAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBjID09
ICdcdCc7Cit9CisKK3ZvaWQgQ2xhc3NOYW1lTGlzdDo6cGFyc2VDbGFzc0F0dHJpYnV0ZShjb25z
dCBTdHJpbmcmIGNsYXNzU3RyLCBjb25zdCBib29sIGluQ29tcGF0TW9kZSkKK3sKKyAgICB0aGlz
LT5jbGVhcigpOworICAgIAorICAgIFN0cmluZyBjbGFzc0F0dHIgPSBpbkNvbXBhdE1vZGUgPyAK
KyAgICAgICAgKGNsYXNzU3RyLmltcGwoKS0+aXNMb3dlcigpID8gY2xhc3NTdHIgOiBTdHJpbmco
Y2xhc3NTdHIuaW1wbCgpLT5sb3dlcigpKSkgOgorICAgICAgICBjbGFzc1N0cjsKKyAgICAKKyAg
ICBDbGFzc05hbWVMaXN0KiBjdXJyID0gMDsKKyAgICAKKyAgICBjb25zdCBVQ2hhciogc3RyID0g
Y2xhc3NBdHRyLmNoYXJhY3RlcnMoKTsKKyAgICBpbnQgbGVuZ3RoID0gY2xhc3NBdHRyLmxlbmd0
aCgpOworICAgIGludCBzUG9zID0gMDsKKyAgICAKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAg
ICB3aGlsZSAoc1BvcyA8IGxlbmd0aCAmJiBpc0NsYXNzV2hpdGVzcGFjZShzdHJbc1Bvc10pKQor
ICAgICAgICAgICAgKytzUG9zOworICAgICAgICBpZiAoc1BvcyA+PSBsZW5ndGgpCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgaW50IGVQb3MgPSBzUG9zICsgMTsKKyAgICAgICAgd2hpbGUg
KGVQb3MgPCBsZW5ndGggJiYgIWlzQ2xhc3NXaGl0ZXNwYWNlKHN0cltlUG9zXSkpCisgICAgICAg
ICAgICArK2VQb3M7CisgICAgICAgIGlmIChjdXJyKSB7CisgICAgICAgICAgICBjdXJyLT5zZXRO
ZXh0KG5ldyBDbGFzc05hbWVMaXN0KEF0b21pY1N0cmluZyhzdHIgKyBzUG9zLCBlUG9zIC0gc1Bv
cykpKTsKKyAgICAgICAgICAgIGN1cnIgPSBjdXJyLT5uZXh0KCk7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBpZiAoc1BvcyA9PSAwICYmIGVQb3MgPT0gbGVuZ3RoKSB7CisgICAgICAg
ICAgICAgICAgbV9zdHJpbmcgPSBBdG9taWNTdHJpbmcoY2xhc3NBdHRyKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fc3RyaW5nID0gQXRvbWlj
U3RyaW5nKHN0ciArIHNQb3MsIGVQb3MgLSBzUG9zKTsKKyAgICAgICAgICAgIGN1cnIgPSB0aGlz
OworICAgICAgICB9CisgICAgICAgIHNQb3MgPSBlUG9zICsgMTsKKyAgICB9Cit9CisgICAgCit9
CkluZGV4OiBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vQ2xhc3NOYW1lTGlzdC5oCShyZXZpc2lvbiAyNTA4OSkJKGZyb20gV2ViQ29yZS9kb20v
QXRvbWljU3RyaW5nTGlzdC5oOjI1MDg5KQorKysgV2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBUaGlzIGZpbGUgaXMgcGFy
dCBvZiB0aGUgRE9NIGltcGxlbWVudGF0aW9uIGZvciBLREUuCisgKgorICogQ29weXJpZ2h0IChD
KSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl
ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv
ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgQXRvbWljU3RyaW5nTGlzdF9oCisj
ZGVmaW5lIEF0b21pY1N0cmluZ0xpc3RfaAorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXRvbWljU3RyaW5nTGlzdCB7CitwdWJsaWM6
CisgICAgQXRvbWljU3RyaW5nTGlzdCgpIDogbV9uZXh0KDApIHt9CisgICAgQXRvbWljU3RyaW5n
TGlzdChjb25zdCBBdG9taWNTdHJpbmcmIHN0ciwgQXRvbWljU3RyaW5nTGlzdCogbiA9IDApIDog
bV9zdHJpbmcoc3RyKSwgbV9uZXh0KG4pIHt9CisgICAgfkF0b21pY1N0cmluZ0xpc3QoKSB7IGRl
bGV0ZSBtX25leHQ7IH0KKyAgICAKKyAgICBBdG9taWNTdHJpbmdMaXN0KiBuZXh0KCkgY29uc3Qg
eyByZXR1cm4gbV9uZXh0OyB9CisgICAgdm9pZCBzZXROZXh0KEF0b21pY1N0cmluZ0xpc3QqIG4p
IHsgbV9uZXh0ID0gbjsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKCkgY29uc3Qg
eyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICB2b2lkIHNldFN0cmluZyhjb25zdCBBdG9taWNTdHJp
bmcmIHN0cikgeyBtX3N0cmluZyA9IHN0cjsgfQorCisgICAgQXRvbWljU3RyaW5nTGlzdCogY2xv
bmUoKSB7IHJldHVybiBuZXcgQXRvbWljU3RyaW5nTGlzdChtX3N0cmluZywgbV9uZXh0ID8gbV9u
ZXh0LT5jbG9uZSgpIDogMCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX3N0cmluZyA9IG51bGxB
dG9tOyBkZWxldGUgbV9uZXh0OyBtX25leHQgPSAwOyB9CisgICAgCitwcml2YXRlOgorICAgIEF0
b21pY1N0cmluZyBtX3N0cmluZzsKKyAgICBBdG9taWNTdHJpbmdMaXN0KiBtX25leHQ7Cit9Owor
Cit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0NsYXNzTmFtZUxpc3QuaAkocmV2aXNpb24gMjUwODkpCisrKyBX
ZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwLDMyICsyMCwz
OCBAQAogICoKICAqLwogCi0jaWZuZGVmIEF0b21pY1N0cmluZ0xpc3RfaAotI2RlZmluZSBBdG9t
aWNTdHJpbmdMaXN0X2gKKyNpZm5kZWYgQ2xhc3NOYW1lTGlzdF9oCisjZGVmaW5lIENsYXNzTmFt
ZUxpc3RfaAogCiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKLQotY2xhc3MgQXRvbWljU3RyaW5nTGlzdCB7Ci1wdWJsaWM6Ci0gICAgQXRvbWljU3RyaW5n
TGlzdCgpIDogbV9uZXh0KDApIHt9Ci0gICAgQXRvbWljU3RyaW5nTGlzdChjb25zdCBBdG9taWNT
dHJpbmcmIHN0ciwgQXRvbWljU3RyaW5nTGlzdCogbiA9IDApIDogbV9zdHJpbmcoc3RyKSwgbV9u
ZXh0KG4pIHt9Ci0gICAgfkF0b21pY1N0cmluZ0xpc3QoKSB7IGRlbGV0ZSBtX25leHQ7IH0KICAg
ICAKLSAgICBBdG9taWNTdHJpbmdMaXN0KiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0OyB9
Ci0gICAgdm9pZCBzZXROZXh0KEF0b21pY1N0cmluZ0xpc3QqIG4pIHsgbV9uZXh0ID0gbjsgfQot
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7
IH0KLSAgICB2b2lkIHNldFN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHN0cikgeyBtX3N0cmlu
ZyA9IHN0cjsgfQotCi0gICAgQXRvbWljU3RyaW5nTGlzdCogY2xvbmUoKSB7IHJldHVybiBuZXcg
QXRvbWljU3RyaW5nTGlzdChtX3N0cmluZywgbV9uZXh0ID8gbV9uZXh0LT5jbG9uZSgpIDogMCk7
IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBtX3N0cmluZyA9IG51bGxBdG9tOyBkZWxldGUgbV9uZXh0
OyBtX25leHQgPSAwOyB9CisgICAgY2xhc3MgRG9jdW1lbnQ7CiAgICAgCisgICAgY2xhc3MgQ2xh
c3NOYW1lTGlzdCB7CitwdWJsaWM6CisgICAgICAgIENsYXNzTmFtZUxpc3QoKSA6IG1fbmV4dCgw
KSB7fQorICAgICAgICBDbGFzc05hbWVMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyLCBDbGFz
c05hbWVMaXN0KiBuID0gMCkgOiBtX3N0cmluZyhzdHIpLCBtX25leHQobikge30KKyAgICAgICAg
fkNsYXNzTmFtZUxpc3QoKSB7IGRlbGV0ZSBtX25leHQ7IH0KKyAgICAgICAgCisgICAgICAgIENs
YXNzTmFtZUxpc3QqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQ7IH0KKyAgICAgICAgdm9p
ZCBzZXROZXh0KENsYXNzTmFtZUxpc3QqIG4pIHsgbV9uZXh0ID0gbjsgfQorICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAg
ICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyKSB7IG1fc3RyaW5nID0g
c3RyOyB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgQXRv
bWljU3RyaW5nJikgY29uc3Q7CisKKyAgICAgICAgdm9pZCBwYXJzZUNsYXNzQXR0cmlidXRlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IGJvb2wpOworICAgICAgICAgICAgICAgIAorICAgICAgICBDbGFz
c05hbWVMaXN0KiBjbG9uZSgpIHsgcmV0dXJuIG5ldyBDbGFzc05hbWVMaXN0KG1fc3RyaW5nLCBt
X25leHQgPyBtX25leHQtPmNsb25lKCkgOiAwKTsgfQorICAgICAgICB2b2lkIGNsZWFyKCkgeyBt
X3N0cmluZyA9IG51bGxBdG9tOyBkZWxldGUgbV9uZXh0OyBtX25leHQgPSAwOyB9CisgICAgICAg
IAogcHJpdmF0ZToKLSAgICBBdG9taWNTdHJpbmcgbV9zdHJpbmc7Ci0gICAgQXRvbWljU3RyaW5n
TGlzdCogbV9uZXh0OwotfTsKLQorICAgICAgICBBdG9taWNTdHJpbmcgbV9zdHJpbmc7CisgICAg
ICAgIENsYXNzTmFtZUxpc3QqIG1fbmV4dDsKKyAgICB9OworICAgIAogfQogCiAjZW5kaWYKSW5k
ZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAJKHJldmlzaW9uIDI1MzQ0KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zNDE1LDYgKzM0MTUsMTEgQEAgUGFzc1JlZlB0cjxOYW1lTm9k
ZUxpc3Q+IERvY3VtZW50OjpnZXRFbAogICAgIHJldHVybiBuZXcgTmFtZU5vZGVMaXN0KHRoaXMs
IGVsZW1lbnROYW1lKTsKIH0KIAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRG9jdW1lbnQ6OmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoY29uc3QgU3RyaW5nICZjbGFzc05hbWUpCit7CisgICAgcmV0dXJu
IGRvY3VtZW50RWxlbWVudCgpLT5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNsYXNzTmFtZSk7Cit9
CisKIHZvaWQgRG9jdW1lbnQ6OmZpbmlzaGVkUGFyc2luZygpCiB7CiAgICAgc2V0UGFyc2luZyhm
YWxzZSk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDI1MzQ0KQorKysgV2ViQ29yZS9kb20vRG9jdW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtMjAyLDYgKzIwMiw3IEBAIHB1YmxpYzoKICAgICBQYXNz
UmVmUHRyPE5vZGU+IGFkb3B0Tm9kZShQYXNzUmVmUHRyPE5vZGU+IHNvdXJjZSwgRXhjZXB0aW9u
Q29kZSYpOwogICAgIAogICAgIFBhc3NSZWZQdHI8TmFtZU5vZGVMaXN0PiBnZXRFbGVtZW50c0J5
TmFtZShjb25zdCBTdHJpbmcmIGVsZW1lbnROYW1lKTsKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyAmY2xhc3NOYW1lKTsKIAogICAg
IC8vIEFjdHVhbGx5IHBhcnQgb2YgSlNIVE1MRG9jdW1lbnQsIGJ1dCB1c2VkIGZvciBnaXZpbmcg
WE1MIGRvY3VtZW50cyBhIHdpbmRvdyB0aXRsZSBhcyB3ZWxsCiAgICAgU3RyaW5nIHRpdGxlKCkg
Y29uc3QgeyByZXR1cm4gbV90aXRsZTsgfQpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkocmV2aXNpb24gMjUzNDQp
CisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE4Miw2ICsx
ODIsOCBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIFtPcHRpb25hbF0gYm9vbGVhbiBhdXRob3JPbmx5KTsKICNlbmRp
ZgogCisgICAgICAgIC8vSFRNTCA1CisgICAgICAgIE5vZGVMaXN0ICAgICAgICAgICAgZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZShpbiBET01TdHJpbmcgdGFnbmFtZSk7CiAgICAgfTsKIAogfQpJbmRl
eDogV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAJKHJldmlzaW9uIDI1MzQ0KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0vKgorICAgIC8qCiAgKiBDb3B5cmlnaHQgKEMp
IDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBB
bnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBQ
ZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQpAQCAtNDEsNiArNDEsOCBAQAogI2luY2x1ZGUgIlRl
eHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlICJYTUxOYW1l
cy5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5jbHVkZSAiQ2xhc3NOYW1lTGlzdC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkwLDYgKzkyLDU5IEBAIHZvaWQgRWxlbWVudFJh
cmVEYXRhOjpyZXNldENvbXB1dGVkU3R5bGUKICAgICBtX2NvbXB1dGVkU3R5bGUgPSAwOwogfQog
CisvLyBOb2RlTGlzdCB0aGF0IGxpbWl0cyB0byBhIHBhcnRpY3VsYXIgY2xhc3MuCitjbGFzcyBD
bGFzc05vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsKK3B1YmxpYzoKKyAgICBDbGFzc05vZGVM
aXN0KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NO
YW1lKTsKKyAgICAKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OworICAgIHZp
cnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CisgICAgCitwcml2YXRlOgor
ICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhOb2RlICopIGNvbnN0OworICAgIAorICAgIEF0
b21pY1N0cmluZyBtX25hbWVzcGFjZVVSSTsKKyAgICBDbGFzc05hbWVMaXN0IG1fY2xhc3NMaXN0
OworfTsKKworQ2xhc3NOb2RlTGlzdDo6Q2xhc3NOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJv
b3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSkKKzogTm9kZUxpc3Qocm9vdE5v
ZGUpLCBtX25hbWVzcGFjZVVSSShudWxsQXRvbSkKK3sKKyAgICBtX2NsYXNzTGlzdCA9ICoobmV3
IENsYXNzTmFtZUxpc3QoKSk7CisgICAgbV9jbGFzc0xpc3QucGFyc2VDbGFzc0F0dHJpYnV0ZShj
bGFzc05hbWUsIG1fcm9vdE5vZGUtPmRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpKTsKK30KKwor
dW5zaWduZWQgQ2xhc3NOb2RlTGlzdDo6bGVuZ3RoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVj
dXJzaXZlTGVuZ3RoKCk7Cit9CisKK05vZGUqIENsYXNzTm9kZUxpc3Q6Oml0ZW0odW5zaWduZWQg
aW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlY3Vyc2l2ZUl0ZW0oaW5kZXgpOworfQorCiti
b29sIENsYXNzTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKE5vZGUqIHRlc3ROb2RlKSBjb25zdAorewor
ICAgIGlmICghdGVzdE5vZGUtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIAorICAgIGlmICghdGVzdE5vZGUtPmhhc0NsYXNzKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAKKyAgICBjb25zdCBDbGFzc05hbWVMaXN0KiB0ID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KHRlc3ROb2RlKS0+Z2V0Q2xhc3NMaXN0KCk7CisgICAgCisgICAgZm9yIChjb25zdCBD
bGFzc05hbWVMaXN0KiBjID0gJm1fY2xhc3NMaXN0OyBjOyBjID0gYy0+bmV4dCgpKQorICAgIHsK
KyAgICAgICAgaWYodC0+Y29udGFpbnMoYy0+c3RyaW5nKCkpKQorICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIAorICAgIHJldHVybiB0cnVl
OworfQorCiBFbGVtZW50OjpFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHFOYW1lLCBEb2N1
bWVudCAqZG9jKQogICAgIDogQ29udGFpbmVyTm9kZShkb2MpCiAgICAgLCBtX3RhZ05hbWUocU5h
bWUpCkBAIC0xODUsNyArMjQwLDcgQEAgTm9kZTo6Tm9kZVR5cGUgRWxlbWVudDo6bm9kZVR5cGUo
KSBjb25zdAogICAgIHJldHVybiBFTEVNRU5UX05PREU7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmlu
Z0xpc3QqIEVsZW1lbnQ6OmdldENsYXNzTGlzdCgpIGNvbnN0Citjb25zdCBDbGFzc05hbWVMaXN0
KiBFbGVtZW50OjpnZXRDbGFzc0xpc3QoKSBjb25zdAogewogICAgIHJldHVybiAwOwogfQpAQCAt
MTA5MSw2ICsxMTQ2LDE0IEBAIFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKCkK
ICAgICByZXR1cm4gcmQtPm1fY29tcHV0ZWRTdHlsZTsKIH0KIAorUGFzc1JlZlB0cjxOb2RlTGlz
dD4gRWxlbWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFt
ZSkKK3sKKyAgICBpZiAoY2xhc3NOYW1lLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4gMDsKKyAg
ICAKKyAgICByZXR1cm4gbmV3IENsYXNzTm9kZUxpc3QodGhpcywgY2xhc3NOYW1lKTsKK30KKwog
dm9pZCBFbGVtZW50OjpjYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdGUoKQogewogICAgIGlmIChF
bGVtZW50UmFyZURhdGEqIHJkID0gcmFyZURhdGEoKSkKQEAgLTEwOTksNCArMTE2Miw1IEBAIHZv
aWQgRWxlbWVudDo6Y2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXQKICAgICAgICAgZG9jdW1lbnQo
KS0+Y2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCk7CiB9CiAKKwogfQpJbmRleDogV2ViQ29y
ZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2
aXNpb24gMjUzNDQpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdG9taWNTdHJp
bmdMaXN0OworY2xhc3MgQ2xhc3NOYW1lTGlzdDsKIGNsYXNzIEF0dHI7CiBjbGFzcyBBdHRyaWJ1
dGU7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwpAQCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6
CiAgICAgfkVsZW1lbnQoKTsKIAogICAgIC8vIFVzZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgd2hl
dGhlciBvciBub3QgYW4gZWxlbWVudCBoYXMgYSBnaXZlbiBDU1MgY2xhc3MuCi0gICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmdMaXN0KiBnZXRDbGFzc0xpc3QoKSBjb25zdDsKKyAgICB2aXJ0
dWFsIGNvbnN0IENsYXNzTmFtZUxpc3QqIGdldENsYXNzTGlzdCgpIGNvbnN0OwogICAgIGNvbnN0
IEF0b21pY1N0cmluZyYgZ2V0SURBdHRyaWJ1dGUoKSBjb25zdDsKICAgICBib29sIGhhc0F0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CiAgICAgY29uc3QgQXRvbWljU3RyaW5n
JiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwpAQCAtMTYwLDYgKzE2
MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoYm9vbCByZXN0b3JlUHJldmlv
dXNTZWxlY3Rpb24gPSB0cnVlKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJh
bmNlKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uKTsKICAgICB2b2lkIGJsdXIoKTsKKyAg
ICAKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0
IFN0cmluZyYpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgdm9pZCBkdW1wKFRleHRT
dHJlYW0qICwgRGVwcmVjYXRlZFN0cmluZyBpbmQgPSAiIikgY29uc3Q7CkluZGV4OiBXZWJDb3Jl
L2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAko
cmV2aXNpb24gMjUzNDQpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkod29ya2luZyBjb3B5
KQpAQCAtOTQsNiArOTQsOSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgc2Nyb2xsSW50
b1ZpZXdJZk5lZWRlZChpbiBbT3B0aW9uYWxdIGJvb2xlYW4gY2VudGVySWZOZWVkZWQpOwogICAg
ICAgICB2b2lkIHNjcm9sbEJ5TGluZXMoaW4gbG9uZyBsaW5lcyk7CiAgICAgICAgIHZvaWQgc2Ny
b2xsQnlQYWdlcyhpbiBsb25nIHBhZ2VzKTsKKyAgICAgICAgCisgICAgICAgIC8vIEhUTUwgNQor
ICAgICAgICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGluIERPTVN0cmluZyBuYW1l
KTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpCiAgICAgICAgIC8vIE9iamVj
dGl2ZS1DIGV4dGVuc2lvbnMKSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmNwcAkocmV2
aXNpb24gMjUzNDQpCisrKyBXZWJDb3JlL2RvbS9OYW1lZE1hcHBlZEF0dHJNYXAuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Niw0OCArNzYsMTUgQEAgYm9vbCBOYW1lZE1hcHBlZEF0dHJNYXA6Om1h
cHNFcXVpdmFsZW50KAogICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgc3RhdGljIGJvb2wg
aXNDbGFzc1doaXRlc3BhY2UoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9
PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCc7Ci19Ci0KLXZvaWQgTmFtZWRNYXBwZWRB
dHRyTWFwOjpwYXJzZUNsYXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgY2xhc3NTdHIpCi17Ci0g
ICAgbV9jbGFzc0xpc3QuY2xlYXIoKTsKLSAgICBpZiAoIWVsZW1lbnQtPmhhc0NsYXNzKCkpCit2
b2lkIE5hbWVkTWFwcGVkQXR0ck1hcDo6cGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcm
IGNsYXNzU3RyKSAKK3sgCisgICAgaWYoIWVsZW1lbnQtPmhhc0NsYXNzKCkpIAorICAgIHsgCisg
ICAgICAgIG1fY2xhc3NMaXN0LmNsZWFyKCk7IAogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAg
U3RyaW5nIGNsYXNzQXR0ciA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpID8g
Ci0gICAgICAgIChjbGFzc1N0ci5pbXBsKCktPmlzTG93ZXIoKSA/IGNsYXNzU3RyIDogU3RyaW5n
KGNsYXNzU3RyLmltcGwoKS0+bG93ZXIoKSkpIDoKLSAgICAgICAgY2xhc3NTdHI7Ci0gICAgCi0g
ICAgQXRvbWljU3RyaW5nTGlzdCogY3VyciA9IDA7Ci0gICAgCi0gICAgY29uc3QgVUNoYXIqIHN0
ciA9IGNsYXNzQXR0ci5jaGFyYWN0ZXJzKCk7Ci0gICAgaW50IGxlbmd0aCA9IGNsYXNzQXR0ci5s
ZW5ndGgoKTsKLSAgICBpbnQgc1BvcyA9IDA7Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAg
ICB3aGlsZSAoc1BvcyA8IGxlbmd0aCAmJiBpc0NsYXNzV2hpdGVzcGFjZShzdHJbc1Bvc10pKQot
ICAgICAgICAgICAgKytzUG9zOwotICAgICAgICBpZiAoc1BvcyA+PSBsZW5ndGgpCi0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgaW50IGVQb3MgPSBzUG9zICsgMTsKLSAgICAgICAgd2hpbGUg
KGVQb3MgPCBsZW5ndGggJiYgIWlzQ2xhc3NXaGl0ZXNwYWNlKHN0cltlUG9zXSkpCi0gICAgICAg
ICAgICArK2VQb3M7Ci0gICAgICAgIGlmIChjdXJyKSB7Ci0gICAgICAgICAgICBjdXJyLT5zZXRO
ZXh0KG5ldyBBdG9taWNTdHJpbmdMaXN0KEF0b21pY1N0cmluZyhzdHIgKyBzUG9zLCBlUG9zIC0g
c1BvcykpKTsKLSAgICAgICAgICAgIGN1cnIgPSBjdXJyLT5uZXh0KCk7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBpZiAoc1BvcyA9PSAwICYmIGVQb3MgPT0gbGVuZ3RoKSB7Ci0gICAg
ICAgICAgICAgICAgbV9jbGFzc0xpc3Quc2V0U3RyaW5nKEF0b21pY1N0cmluZyhjbGFzc0F0dHIp
KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1f
Y2xhc3NMaXN0LnNldFN0cmluZyhBdG9taWNTdHJpbmcoc3RyICsgc1BvcywgZVBvcyAtIHNQb3Mp
KTsKLSAgICAgICAgICAgIGN1cnIgPSAmbV9jbGFzc0xpc3Q7Ci0gICAgICAgIH0KLSAgICAgICAg
c1BvcyA9IGVQb3MgKyAxOwotICAgIH0KKyAgICB9IAorICAgIG1fY2xhc3NMaXN0LnBhcnNlQ2xh
c3NBdHRyaWJ1dGUoY2xhc3NTdHIsIGVsZW1lbnQtPmRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgp
KTsgCiB9CiAKKwogfQpJbmRleDogV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmgJKHJldmlzaW9uIDI1
MzQ0KQorKysgV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmgJKHdvcmtpbmcgY29weSkK
QEAgLTI4LDggKzI4LDggQEAKICNkZWZpbmUgTmFtZWRNYXBwZWRBdHRyTWFwX2gKIAogI2luY2x1
ZGUgIk5hbWVkQXR0ck1hcC5oIgotI2luY2x1ZGUgIkF0b21pY1N0cmluZ0xpc3QuaCIKICNpbmNs
dWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJDbGFzc05hbWVMaXN0LmgiCiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsOCArNDIsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dmlydHVhbCBib29sIGlzTWFwcGVkQXR0cmlidXRlTWFwKCkgY29uc3Q7CiAgICAgCi0gICAgdmly
dHVhbCB2b2lkIHBhcnNlQ2xhc3NBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBjbGFzc0F0dHIpOwot
ICAgIGNvbnN0IEF0b21pY1N0cmluZ0xpc3QqIGdldENsYXNzTGlzdCgpIGNvbnN0IHsgcmV0dXJu
ICZtX2NsYXNzTGlzdDsgfQorICAgIHZvaWQgcGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJp
bmcmKTsKKworICAgIGNvbnN0IENsYXNzTmFtZUxpc3QqIGdldENsYXNzTGlzdCgpIGNvbnN0IHsg
cmV0dXJuICZtX2NsYXNzTGlzdDsgfQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBoYXNNYXBwZWRB
dHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXBwZWRBdHRyaWJ1dGVDb3VudCA+IDA7IH0K
ICAgICB2b2lkIGRlY2xSZW1vdmVkKCkgeyBtX21hcHBlZEF0dHJpYnV0ZUNvdW50LS07IH0KQEAg
LTYwLDcgKzYxLDcgQEAgcHVibGljOgogICAgICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXBw
ZWRBdHRyaWJ1dGUqPihOYW1lZEF0dHJNYXA6OmdldEF0dHJpYnV0ZUl0ZW0obmFtZSkpOyB9CiAg
ICAgCiBwcml2YXRlOgotICAgIEF0b21pY1N0cmluZ0xpc3QgbV9jbGFzc0xpc3Q7CisgICAgQ2xh
c3NOYW1lTGlzdCBtX2NsYXNzTGlzdDsKICAgICBpbnQgbV9tYXBwZWRBdHRyaWJ1dGVDb3VudDsK
IH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTM0NCkKKysrIFdlYkNv
cmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcg
QEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIFN0eWxlZEVsZW1lbgogICAgIHJldHVybiAw
OwogfQogCi1jb25zdCBBdG9taWNTdHJpbmdMaXN0KiBTdHlsZWRFbGVtZW50OjpnZXRDbGFzc0xp
c3QoKSBjb25zdAorY29uc3QgQ2xhc3NOYW1lTGlzdCogU3R5bGVkRWxlbWVudDo6Z2V0Q2xhc3NM
aXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbmFtZWRBdHRyTWFwID8gbWFwcGVkQXR0cmlidXRl
cygpLT5nZXRDbGFzc0xpc3QoKSA6IDA7CiB9CkluZGV4OiBXZWJDb3JlL2RvbS9TdHlsZWRFbGVt
ZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCShyZXZpc2lv
biAyNTM0NCkKKysrIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVBdHRyaWJ1
dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5bGVBdHRyaWJ1dGVJZk5lZWRlZCgpIGNv
bnN0OwogICAgIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nTGlzdCogZ2V0Q2xhc3NM
aXN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBDbGFzc05hbWVMaXN0KiBnZXRDbGFzc0xp
c3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUq
IGF0dHIsIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICB2aXJ0dWFsIGJv
b2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmli
dXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNTM0NSkKKysrIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA3
LTA5LTAxICBEYXZpZCBTbWl0aCAgPGNhdGZpc2gubWFuQGdtYWlsLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIC0gdGVzdCBmb3Ig
aHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTUKKyAgICAgICAgICBJ
bXBsZW1lbnQgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZQorCisgICAgICAgICogZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDogQWRkZWQgZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZQorICAgICAgICAqIGZhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRlbGVtZW50c2J5Y2xhc3NuYW1l
Lmh0bWw6IEFkZGVkLgorCiAyMDA3LTA5LTAxICBSb2IgQnVpcyAgPGJ1aXNAa2RlLm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbi4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dl
dGVsZW1lbnRzYnljbGFzc25hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNsYXNzbmFtZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKK0xpbmUgMQorTGluZSAyCitM
aW5lIDMKKworbGluZSA0CitsaW5lIDUKKworW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmpl
Y3QgSFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgbGVuZ3RoOiAzCitb
b2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3Qg
SFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0IEhUTUxQYXJhZ3JhcGhFbGVtZW50XSwgbGVuZ3RoOiA0
Citbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIGxlbmd0
aDogMgorW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBs
ZW5ndGg6IDIKK2xlbmd0aDogMAorbGVuZ3RoOiAwCitsZW5ndGg6IDAKK2xlbmd0aDogMAorbGVu
Z3RoOiAwCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgbGVuZ3RoOiAxCitbb2JqZWN0IEhUTUxE
aXZFbGVtZW50XSwgW29iamVjdCBIVE1MUGFyYWdyYXBoRWxlbWVudF0sIGxlbmd0aDogMgorW29i
amVjdCBIVE1MRGl2RWxlbWVudF0sIGxlbmd0aDogMQorW29iamVjdCBIVE1MRGl2RWxlbWVudF0s
IGxlbmd0aDogMQorbGVuZ3RoOiAwCitsZW5ndGg6IDAKK2xlbmd0aDogMAorbGVuZ3RoOiAwCits
ZW5ndGg6IDAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNsYXNz
bmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRz
YnljbGFzc25hbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dl
dGVsZW1lbnRzYnljbGFzc25hbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAor
PGh0bWw+Cis8Ym9keT4KKzxkaXYgY2xhc3M9Im9uZSI+TGluZSAxPGRpdiBjbGFzcz0idHdvIj5M
aW5lIDI8L2Rpdj48cD5MaW5lIDxpPjM8L2k+PC9wPjwvZGl2PgorPGRpdiBpZD0idGVzdCIgY2xh
c3M9Im9uZSB0d28iPjxkaXYgY2xhc3M9Im9uZSB0d28iPmxpbmUgNDwvZGl2PjxwIGNsYXNzPSJ0
d28iPmxpbmUgNTwvcD48L2Rpdj4KKzxwPjxvbCBpZD0iY29uc29sZSI+PC9vbD48L3A+Cis8c2Ny
aXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkK
KyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsK
KyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdl
KSk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hp
bGQoaXRlbSk7CisgICAgfQorICAgIAorICAgIE5vZGVMaXN0LnByb3RvdHlwZS5kdW1wID0gZnVu
Y3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9ICIiOworICAgICAgICB2YXIgaSA9
IDA7CisgICAgICAgIGZvcig7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAgcmVz
dWx0ICs9IHRoaXNbaV0gKyAiLCAiOworICAgICAgICByZXN1bHQgKz0gImxlbmd0aDogIiArIGk7
CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgeworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgCisgICAg
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIHZhciBlbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpOwor
ICAgICAgICAKKyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCJvbmUiKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlD
bGFzc05hbWUoInR3byIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgib25lIHR3byIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgib25lXHRcdFxuIHR3byIpLmR1bXAoKSk7Cisg
ICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiIikuZHVtcCgp
KTsKKyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJvbmV0
d28iKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlD
bGFzc05hbWUobnVsbCkuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKHVuZGVmaW5lZCkuZHVtcCgpKTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJvbmUiKS5kdW1wKCkpOworICAg
ICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0d28iKS5kdW1wKCkpOwor
ICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJvbmUgdHdvIikuZHVt
cCgpKTsKKyAgICAgICAgICAgIGxvZyhlbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgib25lXHRc
dFxuIHR3byIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoIiIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoIm9uZXR3byIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRz
QnlDbGFzc05hbWUoKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKG51bGwpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRz
QnlDbGFzc05hbWUodW5kZWZpbmVkKS5kdW1wKCkpOworCisgICAgICAgIH0gY2F0Y2ggKGV4KSB7
CisgICAgICAgICAgICBsb2coIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9uKTsKKyAgICAg
ICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCIoY2Fubm90IHJ1biBp
bnRlcmFjdGl2ZWx5KSIpOworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyNTM0NCkKKysrIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTMxNiw2ICszMTYsNyBAQCB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmVsZW1lbnRG
cm9tUG9pCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmV2YWx1YXRlIFtmdW5jdGlvbl0KIHdp
bmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZXhlY0NvbW1hbmQgW2Z1bmN0aW9uXQogd2luZG93LkRv
Y3VtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50QnlJZCBbZnVuY3Rpb25dCit3aW5kb3cuRG9jdW1l
bnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgW2Z1bmN0aW9uXQogd2luZG93LkRv
Y3VtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZSBbZnVuY3Rpb25dCiB3aW5kb3cu
RG9jdW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMgW2Z1bmN0aW9uXQogd2lu
ZG93LkRvY3VtZW50LnByb3RvdHlwZS5nZXRPdmVycmlkZVN0eWxlIFtmdW5jdGlvbl0KQEAgLTQy
Miw2ICs0MjMsNyBAQCB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlIFtmCiB3
aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMgW2Z1bmN0aW9uXQogd2luZG93
LkVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5vZGUgW2Z1bmN0aW9uXQogd2luZG93LkVs
ZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5vZGVOUyBbZnVuY3Rpb25dCit3aW5kb3cuRWxl
bWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSBbZnVuY3Rpb25dCiB3aW5kb3cu
RWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgW2Z1bmN0aW9uXQogd2luZG93
LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMgW2Z1bmN0aW9uXQogd2lu
ZG93LkVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSBbZnVuY3Rpb25dCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16239</attachid>
            <date>2007-09-09 23:25:54 -0700</date>
            <delta_ts>2007-09-09 23:42:19 -0700</delta_ts>
            <desc>Adds form feed to the whitespace list, and copyright headers</desc>
            <filename>get-elements-by-class-name5.txt</filename>
            <type>text/plain</type>
            <size>33636</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTQ2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMDctMDktMDkgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5
NTUKKyAgICAgICAgICBJbXBsZW1lbnQgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS4gVGhpcyBwYXRj
aCBhbHNvIHJlbmFtZXMgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0IHRvIGJldHRl
ciByZWZsZWN0IGl0cyBhY3R1YWwgdXNlLAorICAgICAgICAgIGFuZCB0YWtlcyBhZHZhbnRhZ2Ug
b2YgYWRtaXR0aW5nIHRoYXQgaXQncyBjbGFzcy1zcGVjaWZpYyB0byBlbmNhcHN1bGF0ZSBjbGFz
cyBhdHRyaWJ1dGUgcGFyc2luZyBzbyBpdCBjYW4gYmUgc2hhcmVkLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUuaHRtbAorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBGaWxlIHJlbmFtZXMKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjptYXRjaFJ1bGVzKTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IENo
YW5nZSBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QKKyAgICAgICAgKiBkb20vQXRv
bWljU3RyaW5nTGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9DbGFzc05hbWVMaXN0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0Ojpjb250YWlucyk6IE5l
dyBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGNsYXNzIG5hbWUgaXMgaW4gdGhlIGxpc3QKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ2xhc3NXaGl0ZXNwYWNlKTogTW92ZWQgZnJvbSBOYW1lZE1hcHBlZEF0
dHJNYXAsIGFuZCBhZGRlZCB0aGUgZm9ybSBmZWVkIGNoYXJhY3RlciBhcyBwb2ludGVkIG91dCBi
eSBBbm5lIHZhbiBLZXN0ZXJlbgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6cGFy
c2VDbGFzc0F0dHJpYnV0ZSk6IE1vdmVkIChhbmQgYWRhcHRlZCkgZnJvbSBOYW1lZE1hcHBlZEF0
dHJNYXAKKyAgICAgICAgKiBkb20vQ2xhc3NOYW1lTGlzdC5oOiBDb3BpZWQgZnJvbSBXZWJDb3Jl
L2RvbS9BdG9taWNTdHJpbmdMaXN0LmguCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0
OjpDbGFzc05hbWVMaXN0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFt
ZUxpc3Q6On5DbGFzc05hbWVMaXN0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNs
YXNzTmFtZUxpc3Q6Om5leHQpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NO
YW1lTGlzdDo6c2V0TmV4dCk6IE5hbWUgY2hhbmdlCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05h
bWVMaXN0OjpzdHJpbmcpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1l
TGlzdDo6c2V0U3RyaW5nKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFt
ZUxpc3Q6OmNsb25lKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxp
c3Q6OmNsZWFyKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOiBBZGRlZAor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCB0aGUgbmV3IGZ1bmN0aW9ucworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5pZGw6IEFkZGVkIHRoZSBuZXcgZnVuY3Rpb25zCisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6Q2xhc3NO
b2RlTGlzdCk6IE5ldyBOb2RlTGlzdCBzdWJjbGFzcyB0aGF0IG1hdGNoZXMgYnkgY2xhc3MgbmFt
ZXMKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTm9kZUxpc3Q6Omxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGFzc05vZGVMaXN0OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTm9k
ZUxpc3Q6Om5vZGVNYXRjaGVzKTogQ2hlY2sgdGhlIGNsYXNzIG5hbWUgdXNpbmcgQ2xhc3NOYW1l
TGlzdCdzIG5ldyBjb250YWlucygpCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRDbGFz
c0xpc3QpOiBDaGFuZ2UgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKTogQWRkZWQKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5oOiBBZGRlZCB0aGUgbmV3IGZ1bmN0aW9ucworICAgICAgICAqIGRv
bS9FbGVtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMKKyAgICAgICAgKiBkb20vTmFt
ZWRNYXBwZWRBdHRyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTWFwcGVkQXR0ck1h
cDo6cGFyc2VDbGFzc0F0dHJpYnV0ZSk6IE1vdmUgYWxsIHRoZSBsb2dpYyBoZXJlIHRvIENsYXNz
TmFtZUxpc3Qgc28gaXQgY2FuIGJlIHNoYXJlZAorICAgICAgICAqIGRvbS9OYW1lZE1hcHBlZEF0
dHJNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTWFwcGVkQXR0ck1hcDo6Z2V0Q2xhc3NM
aXN0KTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAorICAgICAgICAq
IGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6
OmdldENsYXNzTGlzdCk6IENoYW5nZSBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QK
KyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorCiAyMDA3LTA5LTA4ICBEYXZpZCBTbWl0
aCAgPGNhdGZpc2gubWFuQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWog
U3RhY2hvd2lhay4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNTQ2MykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjMsNiArMzYzLDggQEAKIAkJNTFGMTFFMTUw
QTQ4QzI5MjAwMzRBMjRFIC8qIFNRTFRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjExRTE0MEE0OEMyOTIwMDM0QTI0RSAvKiBT
UUxUcmFuc2FjdGlvbi5jcHAgKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBR
dWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsg
fTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjM0MDk0N0QwQzcyQjM4NzAwRjBDNTk4IC8qIENsYXNzTmFt
ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYz
NDA5NDdCMEM3MkIzODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjM0MEM5NUQwQzk1MTdBMjAwNDMy
MzlFIC8qIENsYXNzTmFtZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjM0MDk0N0MwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3Qu
Y3BwICovOyB9OwogCQk2NTBFM0Y2QTBBRjZDMTY4MDAxRkEzQUQgLyogUmVzb3VyY2VSZXF1ZXN0
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUw
RTNGNjgwQUY2QzE2ODAwMUZBM0FEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLzsgfTsKIAkJ
NjUwRjUzREMwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MEY1M0RCMDlEMTVEREEwMEM5QjBDOCAv
KiBDU1NHcmFtbWFyLmggKi87IH07CiAJCTY1MEY1M0REMDlEMTVEREYwMEM5QjBDOCAvKiBDU1NH
cmFtbWFyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1NjU4MTQ0MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NHcmFtbWFyLmNwcCAqLzsgfTsKQEAgLTE2
MjIsNyArMTYyNCw2IEBACiAJCTkzRjE5OUJEMDgyNDVFNTkwMDFFOUFCQyAvKiBBWE9iamVjdENh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk5
OEE1QzA1MkI1OUNDMDAxN0E2QzEgLyogQVhPYmplY3RDYWNoZS5oICovOyB9OwogCQk5M0YxOTlC
RTA4MjQ1RTU5MDAxRTlBQkMgLyogQmxvY2tFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyog
QmxvY2tFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNGMTk5QzIwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVLZXlHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QjJC
MUY3MDU2QkVGM0EwMEQyQjc3MSAvKiBXZWJDb3JlS2V5R2VuZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk5Q0YwODI0NUU1OTAw
MUU5QUJDIC8qIEF0b21pY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDM0IzNjQ3MDVDOUQ1RTIwMEU0MjkwMiAvKiBBdG9taWNTdHJp
bmdMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTNGMTk5REUwODI0NUU1OTAwMUU5QUJDIC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTkxRkM4QjA2MTMzNjY2MDA1RTM3OTAg
LyogUG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5M0YxOTlFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjZBM0Q2MDY2
M0JGMDQwMDREMjkxOSAvKiBIVE1MQ2FudmFzRWxlbWVudC5oICovOyB9OwogCQk5M0YxOTlFNzA4
MjQ1RTU5MDAxRTlBQkMgLyogQ2xpcGJvYXJkTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDkwNjYwQjA2NjVEOTM3MDA2QjZGMUEgLyogQ2xpcGJv
YXJkTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTM2MjcsNiArMzYyOCw4IEBACiAJCTU1OTk4QTVCMDUyQjU5Q0MwMDE3QTZDMSAvKiBXZWJD
b3JlQVhPYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlQVhPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTk5OEE1QzA1MkI1OUNDMDAx
N0E2QzEgLyogQVhPYmplY3RDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBWE9iamVjdENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTk5OEE1RDA1MkI1OUNDMDAx
N0E2QzEgLyogQVhPYmplY3RDYWNoZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFYT2JqZWN0Q2FjaGVNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk2MzQw
OTQ3QjBDNzJCMzg2MDBGMEM1OTggLyogQ2xhc3NOYW1lTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDbGFzc05hbWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTYzNDA5NDdDMEM3MkIzODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTmFtZUxpc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTBFM0Y2ODBBRjZDMTY4MDAxRkEzQUQgLyogUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlc291cmNlUmVxdWVzdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjUwRjUzREIwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyYW1tYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNjUxODg4ODYwQUZGM0JGNzAwMTY0NzIwIC8qIFJlc291cmNlRXJyb3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjEyNyw3ICs2MTMwLDYgQEAKIAkJQkMzMDVDNzcw
QzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1M
T2JqZWN0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1M
T2JqZWN0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNUNBMzBD
MDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMzQjM2NDcwNUM5RDVFMjAwRTQyOTAy
IC8qIEF0b21pY1N0cmluZ0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkMzQzM5QjQwQzBEM0Q4RDAw
NUY0RDdBIC8qIEpTTWVkaWFMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01lZGlhTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
M0MzOUI1MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMzRkNBQTgwQUMzREI1ODAwQkE1NEFEIC8qIFBsYXRmb3JtU2Nyb2xsQmFyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVNjcm9sbEJhci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAwMzcsNyArMTAwMzksOCBAQAogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBNzg0OTQxQTBCNUZFNTA3MDAxRTIzN0Eg
LyogQ2xpcGJvYXJkLmNwcCAqLywKLQkJCQlCQzNCMzY0NzA1QzlENUUyMDBFNDI5MDIgLyogQXRv
bWljU3RyaW5nTGlzdC5oICovLAorCQkJCTYzNDA5NDdCMEM3MkIzODYwMEYwQzU5OCAvKiBDbGFz
c05hbWVMaXN0LmggKi8sCisJCQkJNjM0MDk0N0MwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFt
ZUxpc3QuY3BwICovLAogCQkJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAq
LywKIAkJCQlBOEM0QTdGQjA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5oICovLAogCQkJCTkzRUVD
MUU1MDlDMjg3NzcwMEM1MTVEMSAvKiBBdHRyLmlkbCAqLywKQEAgLTEwMjM3LDcgKzEwMjQwLDYg
QEAKIAkJCQk5M0YxOTlCRDA4MjQ1RTU5MDAxRTlBQkMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNGMTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QzIwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNv
cmVLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRjE5OUNGMDgyNDVFNTkwMDFF
OUFCQyAvKiBBdG9taWNTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlERTA4
MjQ1RTU5MDAxRTlBQkMgLyogUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUU1
MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MQ2FudmFzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNGMTk5RTcwODI0NUU1OTAwMUU5QUJDIC8qIENsaXBib2FyZE1hYy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTczNSw2ICsxMTczNyw3IEBACiAJCQkJMEYzMUNCRjkyQjY1NDczMEJBMDUzNUU4
IC8qIEJpZGlDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDMyRTg0NzBDNTE0OTM4MDBC
MTUwMEYgLyogR0NDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRCM0Y3MzBDNzIy
MDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjM0MDk0N0Qw
QzcyQjM4NzAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUVE
RTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFFMUVDQjMwQzkxQzU1NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFFMUVDQjQwQzkxQzU1NjAwREMyNTVCIC8qIFRocmVhZGluZy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMTc3OSw3ICsxMTc4Miw2IEBACiAJCTA4NjdENjkwRkU4NDAyOEZDMDJBQUMw
NyAvKiBQcm9qZWN0IG9iamVjdCAqLyA9IHsKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJCQlidWls
ZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1aWxkIGNv
bmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87Ci0JCQljb21wYXRp
YmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9
IDE7CiAJCQlrbm93blJlZ2lvbnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTEzMjA1LDYgKzEzMjA3
LDcgQEAKIAkJCQk1MUUxRUNCMDBDOTFDNTQ2MDBEQzI1NUIgLyogVGhyZWFkaW5nLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTFFMUVDQzAwQzkxQzkwNDAwREMyNTVCIC8qIEljb25SZWNvcmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJNTFFMUVDQzIwQzkxQzkwNDAwREMyNTVCIC8qIFBhZ2VVUkxS
ZWNvcmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjM0MEM5NUQwQzk1MTdBMjAwNDMyMzlFIC8q
IENsYXNzTmFtZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAkocmV2aXNpb24gMjU0NjMpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWF0Y2hSdWxlcyhDU1NSdWwKICAgICBpZiAoZWxlbWVudC0+aGFzSUQoKSkKICAgICAg
ICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldElEUnVsZXMoZWxlbWVudC0+Z2V0SURBdHRy
aWJ1dGUoKS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAgICAgaWYg
KGVsZW1lbnQtPmhhc0NsYXNzKCkpIHsKLSAgICAgICAgZm9yIChjb25zdCBBdG9taWNTdHJpbmdM
aXN0KiBzaW5nbGVDbGFzcyA9IGVsZW1lbnQtPmdldENsYXNzTGlzdCgpOyBzaW5nbGVDbGFzczsg
c2luZ2xlQ2xhc3MgPSBzaW5nbGVDbGFzcy0+bmV4dCgpKQorICAgICAgICBmb3IgKGNvbnN0IENs
YXNzTmFtZUxpc3QqIHNpbmdsZUNsYXNzID0gZWxlbWVudC0+Z2V0Q2xhc3NMaXN0KCk7IHNpbmds
ZUNsYXNzOyBzaW5nbGVDbGFzcyA9IHNpbmdsZUNsYXNzLT5uZXh0KCkpCiAgICAgICAgICAgICBt
YXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0Q2xhc3NSdWxlcyhzaW5nbGVDbGFzcy0+c3RyaW5n
KCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwogICAgIH0KICAgICBt
YXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0VGFnUnVsZXMoZWxlbWVudC0+bG9jYWxOYW1lKCku
aW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwpAQCAtMTM2MCw3ICsxMzYw
LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKAogICAgICAgICBp
ZiAoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpDbGFzcykgewogICAgICAgICAgICAgaWYg
KCFlLT5oYXNDbGFzcygpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIGZvciAoY29uc3QgQXRvbWljU3RyaW5nTGlzdCogYyA9IGUtPmdldENsYXNzTGlzdCgpOyBj
OyBjID0gYy0+bmV4dCgpKQorICAgICAgICAgICAgZm9yIChjb25zdCBDbGFzc05hbWVMaXN0KiBj
ID0gZS0+Z2V0Q2xhc3NMaXN0KCk7IGM7IGMgPSBjLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAg
aWYgKGMtPnN0cmluZygpID09IHNlbC0+bV92YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2RvbS9B
dG9taWNTdHJpbmdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQXRvbWljU3RyaW5n
TGlzdC5oCShyZXZpc2lvbiAyNTQ2MykKKysrIFdlYkNvcmUvZG9tL0F0b21pY1N0cmluZ0xpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSAqIEJvc3RvbiwgTUEg
MDIxMTEtMTMwNywgVVNBLgotICoKLSAqLwotCi0jaWZuZGVmIEF0b21pY1N0cmluZ0xpc3RfaAot
I2RlZmluZSBBdG9taWNTdHJpbmdMaXN0X2gKLQotI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEF0b21pY1N0cmluZ0xpc3QgewotcHVibGlj
OgotICAgIEF0b21pY1N0cmluZ0xpc3QoKSA6IG1fbmV4dCgwKSB7fQotICAgIEF0b21pY1N0cmlu
Z0xpc3QoY29uc3QgQXRvbWljU3RyaW5nJiBzdHIsIEF0b21pY1N0cmluZ0xpc3QqIG4gPSAwKSA6
IG1fc3RyaW5nKHN0ciksIG1fbmV4dChuKSB7fQotICAgIH5BdG9taWNTdHJpbmdMaXN0KCkgeyBk
ZWxldGUgbV9uZXh0OyB9Ci0gICAgCi0gICAgQXRvbWljU3RyaW5nTGlzdCogbmV4dCgpIGNvbnN0
IHsgcmV0dXJuIG1fbmV4dDsgfQotICAgIHZvaWQgc2V0TmV4dChBdG9taWNTdHJpbmdMaXN0KiBu
KSB7IG1fbmV4dCA9IG47IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZygpIGNvbnN0
IHsgcmV0dXJuIG1fc3RyaW5nOyB9Ci0gICAgdm9pZCBzZXRTdHJpbmcoY29uc3QgQXRvbWljU3Ry
aW5nJiBzdHIpIHsgbV9zdHJpbmcgPSBzdHI7IH0KLQotICAgIEF0b21pY1N0cmluZ0xpc3QqIGNs
b25lKCkgeyByZXR1cm4gbmV3IEF0b21pY1N0cmluZ0xpc3QobV9zdHJpbmcsIG1fbmV4dCA/IG1f
bmV4dC0+Y2xvbmUoKSA6IDApOyB9Ci0gICAgdm9pZCBjbGVhcigpIHsgbV9zdHJpbmcgPSBudWxs
QXRvbTsgZGVsZXRlIG1fbmV4dDsgbV9uZXh0ID0gMDsgfQotICAgIAotcHJpdmF0ZToKLSAgICBB
dG9taWNTdHJpbmcgbV9zdHJpbmc7Ci0gICAgQXRvbWljU3RyaW5nTGlzdCogbV9uZXh0OwotfTsK
LQotfQotCi0jZW5kaWYKSW5kZXg6IFdlYkNvcmUvZG9tL0NsYXNzTmFtZUxpc3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NsYXNzTmFtZUxpc3QuY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgRGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdt
YWlsLmNvbSkKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBM
aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRo
aXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNl
ZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp
ZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg
YSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxl
IFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8K
KworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNsYXNzTmFtZUxpc3QuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworICAgIAorYm9vbCBDbGFzc05hbWVMaXN0Ojpjb250YWlucyhjb25z
dCBBdG9taWNTdHJpbmcmIHN0cikgY29uc3QgCit7IAorICAgIGZvcihjb25zdCBDbGFzc05hbWVM
aXN0ICp0ID0gdGhpczsgdDsgdCA9IHQtPm5leHQoKSkgCisgICAgeyAKKyAgICAgICAgaWYodC0+
c3RyaW5nKCkgPT0gc3RyKSAKKyAgICAgICAgICAgIHJldHVybiB0cnVlOyAKKyAgICB9IAorICAg
IHJldHVybiBmYWxzZTsgCit9CisKK2lubGluZSBzdGF0aWMgYm9vbCBpc0NsYXNzV2hpdGVzcGFj
ZShVQ2hhciBjKQoreworICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdccicgfHwgYyA9PSAn
XG4nIHx8IGMgPT0gJ1x0JyB8fCBjID09ICdcZic7Cit9CisKK3ZvaWQgQ2xhc3NOYW1lTGlzdDo6
cGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGNsYXNzU3RyLCBjb25zdCBib29sIGlu
Q29tcGF0TW9kZSkKK3sKKyAgICB0aGlzLT5jbGVhcigpOworICAgIAorICAgIFN0cmluZyBjbGFz
c0F0dHIgPSBpbkNvbXBhdE1vZGUgPyAKKyAgICAgICAgKGNsYXNzU3RyLmltcGwoKS0+aXNMb3dl
cigpID8gY2xhc3NTdHIgOiBTdHJpbmcoY2xhc3NTdHIuaW1wbCgpLT5sb3dlcigpKSkgOgorICAg
ICAgICBjbGFzc1N0cjsKKyAgICAKKyAgICBDbGFzc05hbWVMaXN0KiBjdXJyID0gMDsKKyAgICAK
KyAgICBjb25zdCBVQ2hhciogc3RyID0gY2xhc3NBdHRyLmNoYXJhY3RlcnMoKTsKKyAgICBpbnQg
bGVuZ3RoID0gY2xhc3NBdHRyLmxlbmd0aCgpOworICAgIGludCBzUG9zID0gMDsKKyAgICAKKyAg
ICB3aGlsZSAodHJ1ZSkgeworICAgICAgICB3aGlsZSAoc1BvcyA8IGxlbmd0aCAmJiBpc0NsYXNz
V2hpdGVzcGFjZShzdHJbc1Bvc10pKQorICAgICAgICAgICAgKytzUG9zOworICAgICAgICBpZiAo
c1BvcyA+PSBsZW5ndGgpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgaW50IGVQb3MgPSBz
UG9zICsgMTsKKyAgICAgICAgd2hpbGUgKGVQb3MgPCBsZW5ndGggJiYgIWlzQ2xhc3NXaGl0ZXNw
YWNlKHN0cltlUG9zXSkpCisgICAgICAgICAgICArK2VQb3M7CisgICAgICAgIGlmIChjdXJyKSB7
CisgICAgICAgICAgICBjdXJyLT5zZXROZXh0KG5ldyBDbGFzc05hbWVMaXN0KEF0b21pY1N0cmlu
ZyhzdHIgKyBzUG9zLCBlUG9zIC0gc1BvcykpKTsKKyAgICAgICAgICAgIGN1cnIgPSBjdXJyLT5u
ZXh0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoc1BvcyA9PSAwICYmIGVQ
b3MgPT0gbGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgbV9zdHJpbmcgPSBBdG9taWNTdHJpbmco
Y2xhc3NBdHRyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIG1fc3RyaW5nID0gQXRvbWljU3RyaW5nKHN0ciArIHNQb3MsIGVQb3MgLSBzUG9zKTsK
KyAgICAgICAgICAgIGN1cnIgPSB0aGlzOworICAgICAgICB9CisgICAgICAgIHNQb3MgPSBlUG9z
ICsgMTsKKyAgICB9Cit9CisgICAgCit9CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNTQ2MykK
KysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQwOSw2ICsz
NDA5LDExIEBAIFBhc3NSZWZQdHI8TmFtZU5vZGVMaXN0PiBEb2N1bWVudDo6Z2V0RWwKICAgICBy
ZXR1cm4gbmV3IE5hbWVOb2RlTGlzdCh0aGlzLCBlbGVtZW50TmFtZSk7CiB9CiAKK1Bhc3NSZWZQ
dHI8Tm9kZUxpc3Q+IERvY3VtZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmlu
ZyAmY2xhc3NOYW1lKQoreworICAgIHJldHVybiBkb2N1bWVudEVsZW1lbnQoKS0+Z2V0RWxlbWVu
dHNCeUNsYXNzTmFtZShjbGFzc05hbWUpOworfQorCiB2b2lkIERvY3VtZW50OjpmaW5pc2hlZFBh
cnNpbmcoKQogewogICAgIHNldFBhcnNpbmcoZmFsc2UpOwpJbmRleDogV2ViQ29yZS9kb20vRG9j
dW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAy
NTQ2MykKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIwMiw2
ICsyMDIsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxOb2RlPiBhZG9wdE5vZGUoUGFzc1Jl
ZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKICAgICBQYXNzUmVmUHRy
PE5hbWVOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeU5hbWUoY29uc3QgU3RyaW5nJiBlbGVtZW50TmFt
ZSk7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25z
dCBTdHJpbmcgJmNsYXNzTmFtZSk7CiAKICAgICAvLyBBY3R1YWxseSBwYXJ0IG9mIEpTSFRNTERv
Y3VtZW50LCBidXQgdXNlZCBmb3IgZ2l2aW5nIFhNTCBkb2N1bWVudHMgYSB3aW5kb3cgdGl0bGUg
YXMgd2VsbAogICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KSW5k
ZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9E
b2N1bWVudC5pZGwJKHJldmlzaW9uIDI1NDYzKQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDggQEAgbW9kdWxlIGNvcmUgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxd
IGJvb2xlYW4gYXV0aG9yT25seSk7CiAjZW5kaWYKIAorICAgICAgICAvL0hUTUwgNQorICAgICAg
ICBOb2RlTGlzdCAgICAgICAgICAgIGdldEVsZW1lbnRzQnlDbGFzc05hbWUoaW4gRE9NU3RyaW5n
IHRhZ25hbWUpOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTQ2MykKKysr
IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOSBAQAot
LyoKKyAgICAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5v
cmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5v
cmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAq
ICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAg
ICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29tKQogICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC00MSw2ICs0Miw4IEBACiAjaW5jbHVkZSAiVGV4
dEl0ZXJhdG9yLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogI2luY2x1ZGUgIlhNTE5hbWVz
LmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKKyNpbmNsdWRlICJDbGFzc05hbWVMaXN0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtOTAsNiArOTMsNTkgQEAgdm9pZCBFbGVtZW50UmFy
ZURhdGE6OnJlc2V0Q29tcHV0ZWRTdHlsZQogICAgIG1fY29tcHV0ZWRTdHlsZSA9IDA7CiB9CiAK
Ky8vIE5vZGVMaXN0IHRoYXQgbGltaXRzIHRvIGEgcGFydGljdWxhciBjbGFzcy4KK2NsYXNzIENs
YXNzTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgeworcHVibGljOgorICAgIENsYXNzTm9kZUxp
c3QoUGFzc1JlZlB0cjxOb2RlPiByb290Tm9kZSwgY29uc3QgQXRvbWljU3RyaW5nJiBjbGFzc05h
bWUpOworICAgIAorICAgIHZpcnR1YWwgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CisgICAgdmly
dHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKyAgICAKK3ByaXZhdGU6Cisg
ICAgdmlydHVhbCBib29sIG5vZGVNYXRjaGVzKE5vZGUgKikgY29uc3Q7CisgICAgCisgICAgQXRv
bWljU3RyaW5nIG1fbmFtZXNwYWNlVVJJOworICAgIENsYXNzTmFtZUxpc3QgbV9jbGFzc0xpc3Q7
Cit9OworCitDbGFzc05vZGVMaXN0OjpDbGFzc05vZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4gcm9v
dE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lKQorOiBOb2RlTGlzdChyb290Tm9k
ZSksIG1fbmFtZXNwYWNlVVJJKG51bGxBdG9tKQoreworICAgIG1fY2xhc3NMaXN0ID0gKihuZXcg
Q2xhc3NOYW1lTGlzdCgpKTsKKyAgICBtX2NsYXNzTGlzdC5wYXJzZUNsYXNzQXR0cmlidXRlKGNs
YXNzTmFtZSwgbV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkpOworfQorCit1
bnNpZ25lZCBDbGFzc05vZGVMaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiByZWN1
cnNpdmVMZW5ndGgoKTsKK30KKworTm9kZSogQ2xhc3NOb2RlTGlzdDo6aXRlbSh1bnNpZ25lZCBp
bmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVjdXJzaXZlSXRlbShpbmRleCk7Cit9CisKK2Jv
b2wgQ2xhc3NOb2RlTGlzdDo6bm9kZU1hdGNoZXMoTm9kZSogdGVzdE5vZGUpIGNvbnN0Cit7Cisg
ICAgaWYgKCF0ZXN0Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgCisgICAgaWYgKCF0ZXN0Tm9kZS0+aGFzQ2xhc3MoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIGNvbnN0IENsYXNzTmFtZUxpc3QqIHQgPSBzdGF0aWNfY2FzdDxFbGVt
ZW50Kj4odGVzdE5vZGUpLT5nZXRDbGFzc0xpc3QoKTsKKyAgICAKKyAgICBmb3IgKGNvbnN0IENs
YXNzTmFtZUxpc3QqIGMgPSAmbV9jbGFzc0xpc3Q7IGM7IGMgPSBjLT5uZXh0KCkpCisgICAgewor
ICAgICAgICBpZih0LT5jb250YWlucyhjLT5zdHJpbmcoKSkpCisgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRydWU7
Cit9CisKIEVsZW1lbnQ6OkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUsIERvY3Vt
ZW50ICpkb2MpCiAgICAgOiBDb250YWluZXJOb2RlKGRvYykKICAgICAsIG1fdGFnTmFtZShxTmFt
ZSkKQEAgLTE4NSw3ICsyNDEsNyBAQCBOb2RlOjpOb2RlVHlwZSBFbGVtZW50Ojpub2RlVHlwZSgp
IGNvbnN0CiAgICAgcmV0dXJuIEVMRU1FTlRfTk9ERTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5n
TGlzdCogRWxlbWVudDo6Z2V0Q2xhc3NMaXN0KCkgY29uc3QKK2NvbnN0IENsYXNzTmFtZUxpc3Qq
IEVsZW1lbnQ6OmdldENsYXNzTGlzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CiB9CkBAIC0x
MDkxLDYgKzExNDcsMTQgQEAgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUoKQog
ICAgIHJldHVybiByZC0+bV9jb21wdXRlZFN0eWxlOwogfQogCitQYXNzUmVmUHRyPE5vZGVMaXN0
PiBFbGVtZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1l
KQoreworICAgIGlmIChjbGFzc05hbWUuaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAwOworICAg
IAorICAgIHJldHVybiBuZXcgQ2xhc3NOb2RlTGlzdCh0aGlzLCBjbGFzc05hbWUpOworfQorCiB2
b2lkIEVsZW1lbnQ6OmNhbmNlbEZvY3VzQXBwZWFyYW5jZVVwZGF0ZSgpCiB7CiAgICAgaWYgKEVs
ZW1lbnRSYXJlRGF0YSogcmQgPSByYXJlRGF0YSgpKQpAQCAtMTA5OSw0ICsxMTYzLDUgQEAgdm9p
ZCBFbGVtZW50OjpjYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdAogICAgICAgICBkb2N1bWVudCgp
LT5jYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdGUoKTsKIH0KIAorCiB9CkluZGV4OiBXZWJDb3Jl
L2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5oCShyZXZp
c2lvbiAyNTQ2MykKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF0b21pY1N0cmlu
Z0xpc3Q7CitjbGFzcyBDbGFzc05hbWVMaXN0OwogY2xhc3MgQXR0cjsKIGNsYXNzIEF0dHJpYnV0
ZTsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoK
ICAgICB+RWxlbWVudCgpOwogCiAgICAgLy8gVXNlZCB0byBxdWlja2x5IGRldGVybWluZSB3aGV0
aGVyIG9yIG5vdCBhbiBlbGVtZW50IGhhcyBhIGdpdmVuIENTUyBjbGFzcy4KLSAgICB2aXJ0dWFs
IGNvbnN0IEF0b21pY1N0cmluZ0xpc3QqIGdldENsYXNzTGlzdCgpIGNvbnN0OworICAgIHZpcnR1
YWwgY29uc3QgQ2xhc3NOYW1lTGlzdCogZ2V0Q2xhc3NMaXN0KCkgY29uc3Q7CiAgICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBnZXRJREF0dHJpYnV0ZSgpIGNvbnN0OwogICAgIGJvb2wgaGFzQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcm
IGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CkBAIC0xNjAsNiArMTYw
LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhib29sIHJlc3RvcmVQcmV2aW91
c1NlbGVjdGlvbiA9IHRydWUpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0FwcGVhcmFu
Y2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwogICAgIHZvaWQgYmx1cigpOworICAg
IAorICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29uc3Qg
U3RyaW5nJik7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIGR1bXAoVGV4dFN0
cmVhbSogLCBEZXByZWNhdGVkU3RyaW5nIGluZCA9ICIiKSBjb25zdDsKSW5kZXg6IFdlYkNvcmUv
ZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCShy
ZXZpc2lvbiAyNTQ2MykKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5nIGNvcHkp
CkBAIC05NCw2ICs5NCw5IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBzY3JvbGxJbnRv
Vmlld0lmTmVlZGVkKGluIFtPcHRpb25hbF0gYm9vbGVhbiBjZW50ZXJJZk5lZWRlZCk7CiAgICAg
ICAgIHZvaWQgc2Nyb2xsQnlMaW5lcyhpbiBsb25nIGxpbmVzKTsKICAgICAgICAgdm9pZCBzY3Jv
bGxCeVBhZ2VzKGluIGxvbmcgcGFnZXMpOworICAgICAgICAKKyAgICAgICAgLy8gSFRNTCA1Cisg
ICAgICAgIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoaW4gRE9NU3RyaW5nIG5hbWUp
OwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykKICAgICAgICAgLy8gT2JqZWN0
aXZlLUMgZXh0ZW5zaW9ucwpJbmRleDogV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9OYW1lZE1hcHBlZEF0dHJNYXAuY3BwCShyZXZp
c2lvbiAyNTQ2MykKKysrIFdlYkNvcmUvZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2Vs
bHkgKHBta0Bwb3N0LmNvbSkKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11
ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0Zmlz
aC5tYW5AZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC03Niw0OCAr
NzcsMTUgQEAgYm9vbCBOYW1lZE1hcHBlZEF0dHJNYXA6Om1hcHNFcXVpdmFsZW50KAogICAgIHJl
dHVybiB0cnVlOwogfQogCi1pbmxpbmUgc3RhdGljIGJvb2wgaXNDbGFzc1doaXRlc3BhY2UoVUNo
YXIgYykKLXsKLSAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8
fCBjID09ICdcdCc7Ci19Ci0KLXZvaWQgTmFtZWRNYXBwZWRBdHRyTWFwOjpwYXJzZUNsYXNzQXR0
cmlidXRlKGNvbnN0IFN0cmluZyYgY2xhc3NTdHIpCi17Ci0gICAgbV9jbGFzc0xpc3QuY2xlYXIo
KTsKLSAgICBpZiAoIWVsZW1lbnQtPmhhc0NsYXNzKCkpCit2b2lkIE5hbWVkTWFwcGVkQXR0ck1h
cDo6cGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGNsYXNzU3RyKSAKK3sgCisgICAg
aWYoIWVsZW1lbnQtPmhhc0NsYXNzKCkpIAorICAgIHsgCisgICAgICAgIG1fY2xhc3NMaXN0LmNs
ZWFyKCk7IAogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgU3RyaW5nIGNsYXNzQXR0ciA9IGVs
ZW1lbnQtPmRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpID8gCi0gICAgICAgIChjbGFzc1N0ci5p
bXBsKCktPmlzTG93ZXIoKSA/IGNsYXNzU3RyIDogU3RyaW5nKGNsYXNzU3RyLmltcGwoKS0+bG93
ZXIoKSkpIDoKLSAgICAgICAgY2xhc3NTdHI7Ci0gICAgCi0gICAgQXRvbWljU3RyaW5nTGlzdCog
Y3VyciA9IDA7Ci0gICAgCi0gICAgY29uc3QgVUNoYXIqIHN0ciA9IGNsYXNzQXR0ci5jaGFyYWN0
ZXJzKCk7Ci0gICAgaW50IGxlbmd0aCA9IGNsYXNzQXR0ci5sZW5ndGgoKTsKLSAgICBpbnQgc1Bv
cyA9IDA7Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICB3aGlsZSAoc1BvcyA8IGxlbmd0
aCAmJiBpc0NsYXNzV2hpdGVzcGFjZShzdHJbc1Bvc10pKQotICAgICAgICAgICAgKytzUG9zOwot
ICAgICAgICBpZiAoc1BvcyA+PSBsZW5ndGgpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAg
aW50IGVQb3MgPSBzUG9zICsgMTsKLSAgICAgICAgd2hpbGUgKGVQb3MgPCBsZW5ndGggJiYgIWlz
Q2xhc3NXaGl0ZXNwYWNlKHN0cltlUG9zXSkpCi0gICAgICAgICAgICArK2VQb3M7Ci0gICAgICAg
IGlmIChjdXJyKSB7Ci0gICAgICAgICAgICBjdXJyLT5zZXROZXh0KG5ldyBBdG9taWNTdHJpbmdM
aXN0KEF0b21pY1N0cmluZyhzdHIgKyBzUG9zLCBlUG9zIC0gc1BvcykpKTsKLSAgICAgICAgICAg
IGN1cnIgPSBjdXJyLT5uZXh0KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAo
c1BvcyA9PSAwICYmIGVQb3MgPT0gbGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgbV9jbGFzc0xp
c3Quc2V0U3RyaW5nKEF0b21pY1N0cmluZyhjbGFzc0F0dHIpKTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fY2xhc3NMaXN0LnNldFN0cmluZyhB
dG9taWNTdHJpbmcoc3RyICsgc1BvcywgZVBvcyAtIHNQb3MpKTsKLSAgICAgICAgICAgIGN1cnIg
PSAmbV9jbGFzc0xpc3Q7Ci0gICAgICAgIH0KLSAgICAgICAgc1BvcyA9IGVQb3MgKyAxOwotICAg
IH0KKyAgICB9IAorICAgIG1fY2xhc3NMaXN0LnBhcnNlQ2xhc3NBdHRyaWJ1dGUoY2xhc3NTdHIs
IGVsZW1lbnQtPmRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpKTsgCiB9CiAKKwogfQpJbmRleDog
V2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vTmFtZWRNYXBwZWRBdHRyTWFwLmgJKHJldmlzaW9uIDI1NDYzKQorKysgV2ViQ29yZS9kb20v
TmFtZWRNYXBwZWRBdHRyTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw3IEBACiAgKiAg
ICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAg
ICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICAgICAgICAg
ICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAo
QykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29tKQogICogQ29weXJpZ2h0
IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgogICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgpAQCAtMjgsOCArMjksOCBAQAogI2RlZmluZSBOYW1lZE1hcHBlZEF0dHJNYXBfaAogCiAj
aW5jbHVkZSAiTmFtZWRBdHRyTWFwLmgiCi0jaW5jbHVkZSAiQXRvbWljU3RyaW5nTGlzdC5oIgog
I2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNsYXNzTmFtZUxpc3QuaCIK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw4ICs0Myw5IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2aXJ0dWFsIGJvb2wgaXNNYXBwZWRBdHRyaWJ1dGVNYXAoKSBjb25zdDsKICAgICAKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGNsYXNzQXR0
cik7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nTGlzdCogZ2V0Q2xhc3NMaXN0KCkgY29uc3QgeyBy
ZXR1cm4gJm1fY2xhc3NMaXN0OyB9CisgICAgdm9pZCBwYXJzZUNsYXNzQXR0cmlidXRlKGNvbnN0
IFN0cmluZyYpOworCisgICAgY29uc3QgQ2xhc3NOYW1lTGlzdCogZ2V0Q2xhc3NMaXN0KCkgY29u
c3QgeyByZXR1cm4gJm1fY2xhc3NMaXN0OyB9CiAgICAgCiAgICAgdmlydHVhbCBib29sIGhhc01h
cHBlZEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX21hcHBlZEF0dHJpYnV0ZUNvdW50ID4g
MDsgfQogICAgIHZvaWQgZGVjbFJlbW92ZWQoKSB7IG1fbWFwcGVkQXR0cmlidXRlQ291bnQtLTsg
fQpAQCAtNjAsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsgcmV0dXJuIHN0YXRpY19jYXN0
PE1hcHBlZEF0dHJpYnV0ZSo+KE5hbWVkQXR0ck1hcDo6Z2V0QXR0cmlidXRlSXRlbShuYW1lKSk7
IH0KICAgICAKIHByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5nTGlzdCBtX2NsYXNzTGlzdDsKKyAg
ICBDbGFzc05hbWVMaXN0IG1fY2xhc3NMaXN0OwogICAgIGludCBtX21hcHBlZEF0dHJpYnV0ZUNv
dW50OwogfTsKIApJbmRleDogV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDI1NDYzKQorKysg
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw3ICsy
NTEsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogU3R5bGVkRWxlbWVuCiAgICAgcmV0
dXJuIDA7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZ0xpc3QqIFN0eWxlZEVsZW1lbnQ6OmdldENs
YXNzTGlzdCgpIGNvbnN0Citjb25zdCBDbGFzc05hbWVMaXN0KiBTdHlsZWRFbGVtZW50OjpnZXRD
bGFzc0xpc3QoKSBjb25zdAogewogICAgIHJldHVybiBuYW1lZEF0dHJNYXAgPyBtYXBwZWRBdHRy
aWJ1dGVzKCktPmdldENsYXNzTGlzdCgpIDogMDsKIH0KSW5kZXg6IFdlYkNvcmUvZG9tL1N0eWxl
ZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgJKHJl
dmlzaW9uIDI1NDYzKQorKysgV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRhdGVTdHlsZUF0
dHJpYnV0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdHlsZUF0dHJpYnV0ZUlmTmVlZGVk
KCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmdMaXN0KiBnZXRD
bGFzc0xpc3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IENsYXNzTmFtZUxpc3QqIGdldENs
YXNzTGlzdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1dGVDaGFuZ2VkKEF0dHJp
YnV0ZSogYXR0ciwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2UpOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0dHIpOwogICAgIHZpcnR1
YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRB
dHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdDsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxv
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NDYzKQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMDctMDktMDkgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21haWwuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSB0ZXN0
IGZvciBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1NQorICAgICAg
ICAgIEltcGxlbWVudCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0OiBBZGRlZCBnZXRFbGVtZW50
c0J5Q2xhc3NOYW1lCisgICAgICAgICogZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNsYXNzbmFtZS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFz
c25hbWUuaHRtbDogQWRkZWQuCisKIDIwMDctMDktMDkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYXJrIFJvd2UuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5Y2xhc3NuYW1lLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5Y2xhc3NuYW1lLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnlj
bGFzc25hbWUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACitMaW5l
IDEKK0xpbmUgMgorTGluZSAzCisKK2xpbmUgNAorbGluZSA1CisKK1tvYmplY3QgSFRNTERpdkVs
ZW1lbnRdLCBbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0s
IGxlbmd0aDogMworW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3QgSFRNTERpdkVsZW1l
bnRdLCBbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MUGFyYWdyYXBoRWxlbWVu
dF0sIGxlbmd0aDogNAorW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3QgSFRNTERpdkVs
ZW1lbnRdLCBsZW5ndGg6IDIKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0IEhUTUxE
aXZFbGVtZW50XSwgbGVuZ3RoOiAyCitsZW5ndGg6IDAKK2xlbmd0aDogMAorbGVuZ3RoOiAwCits
ZW5ndGg6IDAKK2xlbmd0aDogMAorW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIGxlbmd0aDogMQor
W29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3QgSFRNTFBhcmFncmFwaEVsZW1lbnRdLCBs
ZW5ndGg6IDIKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBsZW5ndGg6IDEKK1tvYmplY3QgSFRN
TERpdkVsZW1lbnRdLCBsZW5ndGg6IDEKK2xlbmd0aDogMAorbGVuZ3RoOiAwCitsZW5ndGg6IDAK
K2xlbmd0aDogMAorbGVuZ3RoOiAwCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVs
ZW1lbnRzYnljbGFzc25hbWUuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9nZXRlbGVtZW50c2J5Y2xhc3NuYW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5Y2xhc3NuYW1lLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjEgQEAKKzxodG1sPgorPGJvZHk+Cis8ZGl2IGNsYXNzPSJvbmUiPkxpbmUgMTxkaXYg
Y2xhc3M9InR3byI+TGluZSAyPC9kaXY+PHA+TGluZSA8aT4zPC9pPjwvcD48L2Rpdj4KKzxkaXYg
aWQ9InRlc3QiIGNsYXNzPSJvbmUgdHdvIj48ZGl2IGNsYXNzPSJvbmUgdHdvIj5saW5lIDQ8L2Rp
dj48cCBjbGFzcz0idHdvIj5saW5lIDU8L3A+PC9kaXY+Cis8cD48b2wgaWQ9ImNvbnNvbGUiPjwv
b2w+PC9wPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCisgICAgZnVuY3Rpb24g
bG9nKG1lc3NhZ2UpCisgICAgeworICAgICAgICB2YXIgaXRlbSA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxpIik7CisgICAgICAgIGl0ZW0uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobWVzc2FnZSkpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29uc29s
ZSIpLmFwcGVuZENoaWxkKGl0ZW0pOworICAgIH0KKyAgICAKKyAgICBOb2RlTGlzdC5wcm90b3R5
cGUuZHVtcCA9IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSAiIjsKKyAg
ICAgICAgdmFyIGkgPSAwOworICAgICAgICBmb3IoOyBpIDwgdGhpcy5sZW5ndGg7IGkrKykKKyAg
ICAgICAgICAgIHJlc3VsdCArPSB0aGlzW2ldICsgIiwgIjsKKyAgICAgICAgcmVzdWx0ICs9ICJs
ZW5ndGg6ICIgKyBpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIGlmICh3
aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgCisgICAgICAgIHRyeSB7Cisg
ICAgICAgIAorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZWxtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3QiKTsKKyAgICAgICAgCisgICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgib25lIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0d28iKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZSB0d28iKS5kdW1wKCkpOworICAgICAg
ICAgICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZVx0XHRcbiBcZnR3
byIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSgiIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCJvbmV0d28iKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRvY3VtZW50
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobnVsbCkuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhk
b2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHVuZGVmaW5lZCkuZHVtcCgpKTsKKyAgICAg
ICAgICAgIAorICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJvbmUi
KS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0
d28iKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCJvbmUgdHdvIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhlbG0uZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgib25lXHRcdFxuIFxmdHdvIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhlbG0u
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhlbG0u
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSgib25ldHdvIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxv
ZyhlbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2co
ZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUobnVsbCkuZHVtcCgpKTsKKyAgICAgICAgICAgIGxv
ZyhlbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh1bmRlZmluZWQpLmR1bXAoKSk7CisKKyAgICAg
ICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAgIGxvZygiRXhjZXB0aW9uOiAiICsgZXguZGVz
Y3JpcHRpb24pOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG9jdW1lbnQud3Jp
dGUoIihjYW5ub3QgcnVuIGludGVyYWN0aXZlbHkpIik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI1NDYzKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBAIHdpbmRvdy5Eb2N1bWVudC5w
cm90b3R5cGUuZWxlbWVudEZyb21Qb2kKIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZXZhbHVh
dGUgW2Z1bmN0aW9uXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5leGVjQ29tbWFuZCBbZnVu
Y3Rpb25dCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRCeUlkIFtmdW5jdGlv
bl0KK3dpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSBbZnVu
Y3Rpb25dCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lIFtm
dW5jdGlvbl0KIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVO
UyBbZnVuY3Rpb25dCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdldE92ZXJyaWRlU3R5bGUg
W2Z1bmN0aW9uXQpAQCAtNDIyLDYgKzQyMyw3IEBAIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5n
ZXRBdHRyaWJ1dGUgW2YKIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOUyBb
ZnVuY3Rpb25dCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTm9kZSBbZnVu
Y3Rpb25dCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTm9kZU5TIFtmdW5j
dGlvbl0KK3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIFtm
dW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZSBb
ZnVuY3Rpb25dCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWVO
UyBbZnVuY3Rpb25dCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuaGFzQXR0cmlidXRlIFtmdW5j
dGlvbl0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16240</attachid>
            <date>2007-09-09 23:42:19 -0700</date>
            <delta_ts>2007-10-01 23:36:29 -0700</delta_ts>
            <desc>Actually include the header</desc>
            <filename>get-elements-by-class-name6.txt</filename>
            <type>text/plain</type>
            <size>35485</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTQ2NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMDctMDktMDkgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5
NTUKKyAgICAgICAgICBJbXBsZW1lbnQgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS4gVGhpcyBwYXRj
aCBhbHNvIHJlbmFtZXMgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0IHRvIGJldHRl
ciByZWZsZWN0IGl0cyBhY3R1YWwgdXNlLAorICAgICAgICAgIGFuZCB0YWtlcyBhZHZhbnRhZ2Ug
b2YgYWRtaXR0aW5nIHRoYXQgaXQncyBjbGFzcy1zcGVjaWZpYyB0byBlbmNhcHN1bGF0ZSBjbGFz
cyBhdHRyaWJ1dGUgcGFyc2luZyBzbyBpdCBjYW4gYmUgc2hhcmVkLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUuaHRtbAorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBGaWxlIHJlbmFtZXMKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjptYXRjaFJ1bGVzKTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IENo
YW5nZSBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QKKyAgICAgICAgKiBkb20vQXRv
bWljU3RyaW5nTGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9DbGFzc05hbWVMaXN0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0Ojpjb250YWlucyk6IE5l
dyBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGNsYXNzIG5hbWUgaXMgaW4gdGhlIGxpc3QKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ2xhc3NXaGl0ZXNwYWNlKTogTW92ZWQgZnJvbSBOYW1lZE1hcHBlZEF0
dHJNYXAsIGFuZCBhZGRlZCB0aGUgZm9ybSBmZWVkIGNoYXJhY3RlciBhcyBwb2ludGVkIG91dCBi
eSBBbm5lIHZhbiBLZXN0ZXJlbgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6cGFy
c2VDbGFzc0F0dHJpYnV0ZSk6IE1vdmVkIChhbmQgYWRhcHRlZCkgZnJvbSBOYW1lZE1hcHBlZEF0
dHJNYXAKKyAgICAgICAgKiBkb20vQ2xhc3NOYW1lTGlzdC5oOiBDb3BpZWQgZnJvbSBXZWJDb3Jl
L2RvbS9BdG9taWNTdHJpbmdMaXN0LmguCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0
OjpDbGFzc05hbWVMaXN0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFt
ZUxpc3Q6On5DbGFzc05hbWVMaXN0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNs
YXNzTmFtZUxpc3Q6Om5leHQpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NO
YW1lTGlzdDo6c2V0TmV4dCk6IE5hbWUgY2hhbmdlCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05h
bWVMaXN0OjpzdHJpbmcpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1l
TGlzdDo6c2V0U3RyaW5nKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFt
ZUxpc3Q6OmNsb25lKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxp
c3Q6OmNsZWFyKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOiBBZGRlZAor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCB0aGUgbmV3IGZ1bmN0aW9ucworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5pZGw6IEFkZGVkIHRoZSBuZXcgZnVuY3Rpb25zCisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6Q2xhc3NO
b2RlTGlzdCk6IE5ldyBOb2RlTGlzdCBzdWJjbGFzcyB0aGF0IG1hdGNoZXMgYnkgY2xhc3MgbmFt
ZXMKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTm9kZUxpc3Q6Omxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGFzc05vZGVMaXN0OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTm9k
ZUxpc3Q6Om5vZGVNYXRjaGVzKTogQ2hlY2sgdGhlIGNsYXNzIG5hbWUgdXNpbmcgQ2xhc3NOYW1l
TGlzdCdzIG5ldyBjb250YWlucygpCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRDbGFz
c0xpc3QpOiBDaGFuZ2UgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKTogQWRkZWQKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5oOiBBZGRlZCB0aGUgbmV3IGZ1bmN0aW9ucworICAgICAgICAqIGRv
bS9FbGVtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMKKyAgICAgICAgKiBkb20vTmFt
ZWRNYXBwZWRBdHRyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTWFwcGVkQXR0ck1h
cDo6cGFyc2VDbGFzc0F0dHJpYnV0ZSk6IE1vdmUgYWxsIHRoZSBsb2dpYyBoZXJlIHRvIENsYXNz
TmFtZUxpc3Qgc28gaXQgY2FuIGJlIHNoYXJlZAorICAgICAgICAqIGRvbS9OYW1lZE1hcHBlZEF0
dHJNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTWFwcGVkQXR0ck1hcDo6Z2V0Q2xhc3NM
aXN0KTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAorICAgICAgICAq
IGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6
OmdldENsYXNzTGlzdCk6IENoYW5nZSBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QK
KyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorCiAyMDA3LTA5LTA4ICBEYXZpZCBTbWl0
aCAgPGNhdGZpc2gubWFuQGdtYWlsLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBNYWNpZWog
U3RhY2hvd2lhay4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAyNTQ2MykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjMsNiArMzYzLDggQEAKIAkJNTFGMTFFMTUw
QTQ4QzI5MjAwMzRBMjRFIC8qIFNRTFRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjExRTE0MEE0OEMyOTIwMDM0QTI0RSAvKiBT
UUxUcmFuc2FjdGlvbi5jcHAgKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBR
dWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsg
fTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkw
MDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjM0MDk0N0QwQzcyQjM4NzAwRjBDNTk4IC8qIENsYXNzTmFt
ZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYz
NDA5NDdCMEM3MkIzODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjM0MEM5NUQwQzk1MTdBMjAwNDMy
MzlFIC8qIENsYXNzTmFtZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNjM0MDk0N0MwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3Qu
Y3BwICovOyB9OwogCQk2NTBFM0Y2QTBBRjZDMTY4MDAxRkEzQUQgLyogUmVzb3VyY2VSZXF1ZXN0
TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUw
RTNGNjgwQUY2QzE2ODAwMUZBM0FEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLzsgfTsKIAkJ
NjUwRjUzREMwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MEY1M0RCMDlEMTVEREEwMEM5QjBDOCAv
KiBDU1NHcmFtbWFyLmggKi87IH07CiAJCTY1MEY1M0REMDlEMTVEREYwMEM5QjBDOCAvKiBDU1NH
cmFtbWFyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDY1NjU4MTQ0MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NHcmFtbWFyLmNwcCAqLzsgfTsKQEAgLTE2
MjIsNyArMTYyNCw2IEBACiAJCTkzRjE5OUJEMDgyNDVFNTkwMDFFOUFCQyAvKiBBWE9iamVjdENh
Y2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk5
OEE1QzA1MkI1OUNDMDAxN0E2QzEgLyogQVhPYmplY3RDYWNoZS5oICovOyB9OwogCQk5M0YxOTlC
RTA4MjQ1RTU5MDAxRTlBQkMgLyogQmxvY2tFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyog
QmxvY2tFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTNGMTk5QzIwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVLZXlHZW5lcmF0
b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QjJC
MUY3MDU2QkVGM0EwMEQyQjc3MSAvKiBXZWJDb3JlS2V5R2VuZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk5Q0YwODI0NUU1OTAw
MUU5QUJDIC8qIEF0b21pY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDM0IzNjQ3MDVDOUQ1RTIwMEU0MjkwMiAvKiBBdG9taWNTdHJp
bmdMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJOTNGMTk5REUwODI0NUU1OTAwMUU5QUJDIC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTkxRkM4QjA2MTMzNjY2MDA1RTM3OTAg
LyogUG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5M0YxOTlFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1lbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjZBM0Q2MDY2
M0JGMDQwMDREMjkxOSAvKiBIVE1MQ2FudmFzRWxlbWVudC5oICovOyB9OwogCQk5M0YxOTlFNzA4
MjQ1RTU5MDAxRTlBQkMgLyogQ2xpcGJvYXJkTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDkwNjYwQjA2NjVEOTM3MDA2QjZGMUEgLyogQ2xpcGJv
YXJkTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTM2MjcsNiArMzYyOCw4IEBACiAJCTU1OTk4QTVCMDUyQjU5Q0MwMDE3QTZDMSAvKiBXZWJD
b3JlQVhPYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlQVhPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTk5OEE1QzA1MkI1OUNDMDAx
N0E2QzEgLyogQVhPYmplY3RDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBWE9iamVjdENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTk5OEE1RDA1MkI1OUNDMDAx
N0E2QzEgLyogQVhPYmplY3RDYWNoZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFYT2JqZWN0Q2FjaGVNYWMubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk2MzQw
OTQ3QjBDNzJCMzg2MDBGMEM1OTggLyogQ2xhc3NOYW1lTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBDbGFzc05hbWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTYzNDA5NDdDMEM3MkIzODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTmFtZUxpc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTBFM0Y2ODBBRjZDMTY4MDAxRkEzQUQgLyogUmVz
b3VyY2VSZXF1ZXN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFJlc291cmNlUmVxdWVzdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NjUwRjUzREIwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyYW1tYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNjUxODg4ODYwQUZGM0JGNzAwMTY0NzIwIC8qIFJlc291cmNlRXJyb3IuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3IuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNjEyNyw3ICs2MTMwLDYgQEAKIAkJQkMzMDVDNzcw
QzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1M
T2JqZWN0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1M
T2JqZWN0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNUNBMzBD
MDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMzQjM2NDcwNUM5RDVFMjAwRTQyOTAy
IC8qIEF0b21pY1N0cmluZ0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkMzQzM5QjQwQzBEM0Q4RDAw
NUY0RDdBIC8qIEpTTWVkaWFMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBKU01lZGlhTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJD
M0MzOUI1MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQkMzRkNBQTgwQUMzREI1ODAwQkE1NEFEIC8qIFBsYXRmb3JtU2Nyb2xsQmFyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVNjcm9sbEJhci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAwMzcsNyArMTAwMzksOCBAQAogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBNzg0OTQxQTBCNUZFNTA3MDAxRTIzN0Eg
LyogQ2xpcGJvYXJkLmNwcCAqLywKLQkJCQlCQzNCMzY0NzA1QzlENUUyMDBFNDI5MDIgLyogQXRv
bWljU3RyaW5nTGlzdC5oICovLAorCQkJCTYzNDA5NDdCMEM3MkIzODYwMEYwQzU5OCAvKiBDbGFz
c05hbWVMaXN0LmggKi8sCisJCQkJNjM0MDk0N0MwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFt
ZUxpc3QuY3BwICovLAogCQkJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAq
LywKIAkJCQlBOEM0QTdGQjA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5oICovLAogCQkJCTkzRUVD
MUU1MDlDMjg3NzcwMEM1MTVEMSAvKiBBdHRyLmlkbCAqLywKQEAgLTEwMjM3LDcgKzEwMjQwLDYg
QEAKIAkJCQk5M0YxOTlCRDA4MjQ1RTU5MDAxRTlBQkMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTNGMTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9u
cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QzIwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNv
cmVLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRjE5OUNGMDgyNDVFNTkwMDFF
OUFCQyAvKiBBdG9taWNTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlERTA4
MjQ1RTU5MDAxRTlBQkMgLyogUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUU1
MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MQ2FudmFzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTNGMTk5RTcwODI0NUU1OTAwMUU5QUJDIC8qIENsaXBib2FyZE1hYy5oIGluIEhlYWRlcnMg
Ki8sCkBAIC0xMTczNSw2ICsxMTczNyw3IEBACiAJCQkJMEYzMUNCRjkyQjY1NDczMEJBMDUzNUU4
IC8qIEJpZGlDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDMyRTg0NzBDNTE0OTM4MDBC
MTUwMEYgLyogR0NDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRCM0Y3MzBDNzIy
MDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjM0MDk0N0Qw
QzcyQjM4NzAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUVE
RTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTFFMUVDQjMwQzkxQzU1NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFFMUVDQjQwQzkxQzU1NjAwREMyNTVCIC8qIFRocmVhZGluZy5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMzIwNSw2ICsxMzIwOCw3IEBACiAJCQkJNTFFMUVDQjAwQzkxQzU0NjAwREMy
NTVCIC8qIFRocmVhZGluZy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxRTFFQ0MwMEM5MUM5MDQw
MERDMjU1QiAvKiBJY29uUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxRTFFQ0MyMEM5
MUM5MDQwMERDMjU1QiAvKiBQYWdlVVJMUmVjb3JkLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTYz
NDBDOTVEMEM5NTE3QTIwMDQzMjM5RSAvKiBDbGFzc05hbWVMaXN0LmNwcCBpbiBTb3VyY2VzICov
LAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9
OwpJbmRleDogV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDI1NDYzKQorKysgV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5NCw3ICsz
OTQsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXMoQ1NTUnVsCiAgICAgaWYg
KGVsZW1lbnQtPmhhc0lEKCkpCiAgICAgICAgIG1hdGNoUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRJ
RFJ1bGVzKGVsZW1lbnQtPmdldElEQXR0cmlidXRlKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgs
IGxhc3RSdWxlSW5kZXgpOwogICAgIGlmIChlbGVtZW50LT5oYXNDbGFzcygpKSB7Ci0gICAgICAg
IGZvciAoY29uc3QgQXRvbWljU3RyaW5nTGlzdCogc2luZ2xlQ2xhc3MgPSBlbGVtZW50LT5nZXRD
bGFzc0xpc3QoKTsgc2luZ2xlQ2xhc3M7IHNpbmdsZUNsYXNzID0gc2luZ2xlQ2xhc3MtPm5leHQo
KSkKKyAgICAgICAgZm9yIChjb25zdCBDbGFzc05hbWVMaXN0KiBzaW5nbGVDbGFzcyA9IGVsZW1l
bnQtPmdldENsYXNzTGlzdCgpOyBzaW5nbGVDbGFzczsgc2luZ2xlQ2xhc3MgPSBzaW5nbGVDbGFz
cy0+bmV4dCgpKQogICAgICAgICAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldENsYXNz
UnVsZXMoc2luZ2xlQ2xhc3MtPnN0cmluZygpLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0
UnVsZUluZGV4KTsKICAgICB9CiAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldFRhZ1J1
bGVzKGVsZW1lbnQtPmxvY2FsTmFtZSgpLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVs
ZUluZGV4KTsKQEAgLTEzNjAsNyArMTM2MCw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hl
Y2tPbmVTZWxlY3RvcigKICAgICAgICAgaWYgKHNlbC0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6
Q2xhc3MpIHsKICAgICAgICAgICAgIGlmICghZS0+aGFzQ2xhc3MoKSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKGNvbnN0IEF0b21pY1N0cmluZ0xpc3Qq
IGMgPSBlLT5nZXRDbGFzc0xpc3QoKTsgYzsgYyA9IGMtPm5leHQoKSkKKyAgICAgICAgICAgIGZv
ciAoY29uc3QgQ2xhc3NOYW1lTGlzdCogYyA9IGUtPmdldENsYXNzTGlzdCgpOyBjOyBjID0gYy0+
bmV4dCgpKQogICAgICAgICAgICAgICAgIGlmIChjLT5zdHJpbmcoKSA9PSBzZWwtPm1fdmFsdWUp
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwpJbmRleDogV2ViQ29yZS9kb20vQXRvbWljU3RyaW5nTGlzdC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0F0b21pY1N0cmluZ0xpc3QuaAkocmV2aXNpb24gMjU0NjMpCisrKyBXZWJD
b3JlL2RvbS9BdG9taWNTdHJpbmdMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNTEgKzAsMCBA
QAotLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9y
IEtERS4KLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4KLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhp
cyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT
dWl0ZSAzMzAsCi0gKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSAqCi0gKi8KLQotI2lm
bmRlZiBBdG9taWNTdHJpbmdMaXN0X2gKLSNkZWZpbmUgQXRvbWljU3RyaW5nTGlzdF9oCi0KLSNp
bmNsdWRlICJBdG9taWNTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBB
dG9taWNTdHJpbmdMaXN0IHsKLXB1YmxpYzoKLSAgICBBdG9taWNTdHJpbmdMaXN0KCkgOiBtX25l
eHQoMCkge30KLSAgICBBdG9taWNTdHJpbmdMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyLCBB
dG9taWNTdHJpbmdMaXN0KiBuID0gMCkgOiBtX3N0cmluZyhzdHIpLCBtX25leHQobikge30KLSAg
ICB+QXRvbWljU3RyaW5nTGlzdCgpIHsgZGVsZXRlIG1fbmV4dDsgfQotICAgIAotICAgIEF0b21p
Y1N0cmluZ0xpc3QqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQ7IH0KLSAgICB2b2lkIHNl
dE5leHQoQXRvbWljU3RyaW5nTGlzdCogbikgeyBtX25leHQgPSBuOyB9Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIHZvaWQg
c2V0U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyKSB7IG1fc3RyaW5nID0gc3RyOyB9Ci0K
LSAgICBBdG9taWNTdHJpbmdMaXN0KiBjbG9uZSgpIHsgcmV0dXJuIG5ldyBBdG9taWNTdHJpbmdM
aXN0KG1fc3RyaW5nLCBtX25leHQgPyBtX25leHQtPmNsb25lKCkgOiAwKTsgfQotICAgIHZvaWQg
Y2xlYXIoKSB7IG1fc3RyaW5nID0gbnVsbEF0b207IGRlbGV0ZSBtX25leHQ7IG1fbmV4dCA9IDA7
IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5nIG1fc3RyaW5nOwotICAgIEF0b21p
Y1N0cmluZ0xpc3QqIG1fbmV4dDsKLX07Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBXZWJDb3JlL2Rv
bS9DbGFzc05hbWVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGFzc05hbWVM
aXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NsYXNzTmFtZUxpc3QuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IERh
dmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJ
VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICog
TGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICog
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmls
ZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3Rvbiwg
TUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJDbGFzc05hbWVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2Jvb2wgQ2xh
c3NOYW1lTGlzdDo6Y29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiBzdHIpIGNvbnN0IAoreyAK
KyAgICBmb3IoY29uc3QgQ2xhc3NOYW1lTGlzdCAqdCA9IHRoaXM7IHQ7IHQgPSB0LT5uZXh0KCkp
IAorICAgIHsgCisgICAgICAgIGlmKHQtPnN0cmluZygpID09IHN0cikgCisgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsgCisgICAgfSAKKyAgICByZXR1cm4gZmFsc2U7IAorfQorCitpbmxpbmUgc3Rh
dGljIGJvb2wgaXNDbGFzc1doaXRlc3BhY2UoVUNoYXIgYykKK3sKKyAgICByZXR1cm4gYyA9PSAn
ICcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCcgfHwgYyA9PSAnXGYnOwor
fQorCit2b2lkIENsYXNzTmFtZUxpc3Q6OnBhcnNlQ2xhc3NBdHRyaWJ1dGUoY29uc3QgU3RyaW5n
JiBjbGFzc1N0ciwgY29uc3QgYm9vbCBpbkNvbXBhdE1vZGUpCit7CisgICAgdGhpcy0+Y2xlYXIo
KTsKKyAgICAKKyAgICBTdHJpbmcgY2xhc3NBdHRyID0gaW5Db21wYXRNb2RlID8gCisgICAgICAg
IChjbGFzc1N0ci5pbXBsKCktPmlzTG93ZXIoKSA/IGNsYXNzU3RyIDogU3RyaW5nKGNsYXNzU3Ry
LmltcGwoKS0+bG93ZXIoKSkpIDoKKyAgICAgICAgY2xhc3NTdHI7CisgICAgCisgICAgQ2xhc3NO
YW1lTGlzdCogY3VyciA9IDA7CisgICAgCisgICAgY29uc3QgVUNoYXIqIHN0ciA9IGNsYXNzQXR0
ci5jaGFyYWN0ZXJzKCk7CisgICAgaW50IGxlbmd0aCA9IGNsYXNzQXR0ci5sZW5ndGgoKTsKKyAg
ICBpbnQgc1BvcyA9IDA7CisgICAgCisgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgd2hpbGUg
KHNQb3MgPCBsZW5ndGggJiYgaXNDbGFzc1doaXRlc3BhY2Uoc3RyW3NQb3NdKSkKKyAgICAgICAg
ICAgICsrc1BvczsKKyAgICAgICAgaWYgKHNQb3MgPj0gbGVuZ3RoKQorICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGludCBlUG9zID0gc1BvcyArIDE7CisgICAgICAgIHdoaWxlIChlUG9zIDwg
bGVuZ3RoICYmICFpc0NsYXNzV2hpdGVzcGFjZShzdHJbZVBvc10pKQorICAgICAgICAgICAgKytl
UG9zOworICAgICAgICBpZiAoY3VycikgeworICAgICAgICAgICAgY3Vyci0+c2V0TmV4dChuZXcg
Q2xhc3NOYW1lTGlzdChBdG9taWNTdHJpbmcoc3RyICsgc1BvcywgZVBvcyAtIHNQb3MpKSk7Cisg
ICAgICAgICAgICBjdXJyID0gY3Vyci0+bmV4dCgpOworICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgaWYgKHNQb3MgPT0gMCAmJiBlUG9zID09IGxlbmd0aCkgeworICAgICAgICAgICAgICAg
IG1fc3RyaW5nID0gQXRvbWljU3RyaW5nKGNsYXNzQXR0cik7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX3N0cmluZyA9IEF0b21pY1N0cmluZyhz
dHIgKyBzUG9zLCBlUG9zIC0gc1Bvcyk7CisgICAgICAgICAgICBjdXJyID0gdGhpczsKKyAgICAg
ICAgfQorICAgICAgICBzUG9zID0gZVBvcyArIDE7CisgICAgfQorfQorICAgIAorfQpJbmRleDog
V2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Ns
YXNzTmFtZUxpc3QuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NsYXNzTmFtZUxpc3Qu
aAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0
IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KKyAqCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisg
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAy
MTExLTEzMDcsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBDbGFzc05hbWVMaXN0X2gKKyNkZWZp
bmUgQ2xhc3NOYW1lTGlzdF9oCisKKyNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIERvY3VtZW50OworICAgIAorICAgIGNsYXNz
IENsYXNzTmFtZUxpc3QgeworcHVibGljOgorICAgICAgICBDbGFzc05hbWVMaXN0KCkgOiBtX25l
eHQoMCkge30KKyAgICAgICAgQ2xhc3NOYW1lTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIHN0ciwg
Q2xhc3NOYW1lTGlzdCogbiA9IDApIDogbV9zdHJpbmcoc3RyKSwgbV9uZXh0KG4pIHt9CisgICAg
ICAgIH5DbGFzc05hbWVMaXN0KCkgeyBkZWxldGUgbV9uZXh0OyB9CisgICAgICAgIAorICAgICAg
ICBDbGFzc05hbWVMaXN0KiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0OyB9CisgICAgICAg
IHZvaWQgc2V0TmV4dChDbGFzc05hbWVMaXN0KiBuKSB7IG1fbmV4dCA9IG47IH0KKyAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQor
ICAgICAgICB2b2lkIHNldFN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHN0cikgeyBtX3N0cmlu
ZyA9IHN0cjsgfQorICAgICAgICAgICAgICAgIAorICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0
IEF0b21pY1N0cmluZyYpIGNvbnN0OworCisgICAgICAgIHZvaWQgcGFyc2VDbGFzc0F0dHJpYnV0
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
Q2xhc3NOYW1lTGlzdCogY2xvbmUoKSB7IHJldHVybiBuZXcgQ2xhc3NOYW1lTGlzdChtX3N0cmlu
ZywgbV9uZXh0ID8gbV9uZXh0LT5jbG9uZSgpIDogMCk7IH0KKyAgICAgICAgdm9pZCBjbGVhcigp
IHsgbV9zdHJpbmcgPSBudWxsQXRvbTsgZGVsZXRlIG1fbmV4dDsgbV9uZXh0ID0gMDsgfQorICAg
ICAgICAKK3ByaXZhdGU6CisgICAgICAgIEF0b21pY1N0cmluZyBtX3N0cmluZzsKKyAgICAgICAg
Q2xhc3NOYW1lTGlzdCogbV9uZXh0OworICAgIH07CisgICAgCit9CisKKyNlbmRpZgpJbmRleDog
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkocmV2aXNpb24gMjU0NjMpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTM0MDksNiArMzQwOSwxMSBAQCBQYXNzUmVmUHRyPE5hbWVOb2RlTGlz
dD4gRG9jdW1lbnQ6OmdldEVsCiAgICAgcmV0dXJuIG5ldyBOYW1lTm9kZUxpc3QodGhpcywgZWxl
bWVudE5hbWUpOwogfQogCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6Z2V0RWxlbWVu
dHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcgJmNsYXNzTmFtZSkKK3sKKyAgICByZXR1cm4gZG9j
dW1lbnRFbGVtZW50KCktPmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY2xhc3NOYW1lKTsKK30KKwog
dm9pZCBEb2N1bWVudDo6ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBzZXRQYXJzaW5nKGZhbHNl
KTsKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAkocmV2aXNpb24gMjU0NjMpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMDIsNiArMjAyLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQ
dHI8Tm9kZT4gYWRvcHROb2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgCiAgICAgUGFzc1JlZlB0cjxOYW1lTm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1l
KGNvbnN0IFN0cmluZyYgZWxlbWVudE5hbWUpOworICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoY29uc3QgU3RyaW5nICZjbGFzc05hbWUpOwogCiAgICAgLy8g
QWN0dWFsbHkgcGFydCBvZiBKU0hUTUxEb2N1bWVudCwgYnV0IHVzZWQgZm9yIGdpdmluZyBYTUwg
ZG9jdW1lbnRzIGEgd2luZG93IHRpdGxlIGFzIHdlbGwKICAgICBTdHJpbmcgdGl0bGUoKSBjb25z
dCB7IHJldHVybiBtX3RpdGxlOyB9CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiAyNTQ2MykKKysr
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTgyLDYgKzE4Miw4
IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIGF1dGhvck9ubHkpOwogI2VuZGlmCiAK
KyAgICAgICAgLy9IVE1MIDUKKyAgICAgICAgTm9kZUxpc3QgICAgICAgICAgICBnZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKGluIERPTVN0cmluZyB0YWduYW1lKTsKICAgICB9OwogCiB9CkluZGV4OiBX
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50
LmNwcAkocmV2aXNpb24gMjU0NjMpCisrKyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMSw4ICsxLDkgQEAKLS8qCisgICAgLyoKICAqIENvcHlyaWdodCAoQykgMTk5
OSBMYXJzIEtub2xsIChrbm9sbEBrZGUub3JnKQogICogICAgICAgICAgIChDKSAxOTk5IEFudHRp
IEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIFBldGVy
IEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVy
IChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDcgRGF2aWQgU21pdGggKGNh
dGZpc2gubWFuQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwg
MjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtNDEs
NiArNDIsOCBAQAogI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKICNpbmNsdWRlICJYTUxOYW1lcy5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisjaW5j
bHVkZSAiQ2xhc3NOYW1lTGlzdC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTkwLDYg
KzkzLDU5IEBAIHZvaWQgRWxlbWVudFJhcmVEYXRhOjpyZXNldENvbXB1dGVkU3R5bGUKICAgICBt
X2NvbXB1dGVkU3R5bGUgPSAwOwogfQogCisvLyBOb2RlTGlzdCB0aGF0IGxpbWl0cyB0byBhIHBh
cnRpY3VsYXIgY2xhc3MuCitjbGFzcyBDbGFzc05vZGVMaXN0IDogcHVibGljIE5vZGVMaXN0IHsK
K3B1YmxpYzoKKyAgICBDbGFzc05vZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIGNv
bnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lKTsKKyAgICAKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IGxlbmd0aCgpIGNvbnN0OworICAgIHZpcnR1YWwgTm9kZSogaXRlbSh1bnNpZ25lZCBpbmRleCkg
Y29uc3Q7CisgICAgCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhOb2Rl
ICopIGNvbnN0OworICAgIAorICAgIEF0b21pY1N0cmluZyBtX25hbWVzcGFjZVVSSTsKKyAgICBD
bGFzc05hbWVMaXN0IG1fY2xhc3NMaXN0OworfTsKKworQ2xhc3NOb2RlTGlzdDo6Q2xhc3NOb2Rl
TGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNz
TmFtZSkKKzogTm9kZUxpc3Qocm9vdE5vZGUpLCBtX25hbWVzcGFjZVVSSShudWxsQXRvbSkKK3sK
KyAgICBtX2NsYXNzTGlzdCA9ICoobmV3IENsYXNzTmFtZUxpc3QoKSk7CisgICAgbV9jbGFzc0xp
c3QucGFyc2VDbGFzc0F0dHJpYnV0ZShjbGFzc05hbWUsIG1fcm9vdE5vZGUtPmRvY3VtZW50KCkt
PmluQ29tcGF0TW9kZSgpKTsKK30KKwordW5zaWduZWQgQ2xhc3NOb2RlTGlzdDo6bGVuZ3RoKCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gcmVjdXJzaXZlTGVuZ3RoKCk7Cit9CisKK05vZGUqIENsYXNz
Tm9kZUxpc3Q6Oml0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJlY3Vy
c2l2ZUl0ZW0oaW5kZXgpOworfQorCitib29sIENsYXNzTm9kZUxpc3Q6Om5vZGVNYXRjaGVzKE5v
ZGUqIHRlc3ROb2RlKSBjb25zdAoreworICAgIGlmICghdGVzdE5vZGUtPmlzRWxlbWVudE5vZGUo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGlmICghdGVzdE5vZGUtPmhhc0Ns
YXNzKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBjb25zdCBDbGFzc05hbWVM
aXN0KiB0ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHRlc3ROb2RlKS0+Z2V0Q2xhc3NMaXN0KCk7
CisgICAgCisgICAgZm9yIChjb25zdCBDbGFzc05hbWVMaXN0KiBjID0gJm1fY2xhc3NMaXN0OyBj
OyBjID0gYy0+bmV4dCgpKQorICAgIHsKKyAgICAgICAgaWYodC0+Y29udGFpbnMoYy0+c3RyaW5n
KCkpKQorICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
fQorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCiBFbGVtZW50OjpFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmIHFOYW1lLCBEb2N1bWVudCAqZG9jKQogICAgIDogQ29udGFpbmVyTm9kZShk
b2MpCiAgICAgLCBtX3RhZ05hbWUocU5hbWUpCkBAIC0xODUsNyArMjQxLDcgQEAgTm9kZTo6Tm9k
ZVR5cGUgRWxlbWVudDo6bm9kZVR5cGUoKSBjb25zdAogICAgIHJldHVybiBFTEVNRU5UX05PREU7
CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZ0xpc3QqIEVsZW1lbnQ6OmdldENsYXNzTGlzdCgpIGNv
bnN0Citjb25zdCBDbGFzc05hbWVMaXN0KiBFbGVtZW50OjpnZXRDbGFzc0xpc3QoKSBjb25zdAog
ewogICAgIHJldHVybiAwOwogfQpAQCAtMTA5MSw2ICsxMTQ3LDE0IEBAIFJlbmRlclN0eWxlKiBF
bGVtZW50Ojpjb21wdXRlZFN0eWxlKCkKICAgICByZXR1cm4gcmQtPm1fY29tcHV0ZWRTdHlsZTsK
IH0KIAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRWxlbWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFt
ZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkKK3sKKyAgICBpZiAoY2xhc3NOYW1lLmlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gMDsKKyAgICAKKyAgICByZXR1cm4gbmV3IENsYXNzTm9kZUxpc3Qo
dGhpcywgY2xhc3NOYW1lKTsKK30KKwogdm9pZCBFbGVtZW50OjpjYW5jZWxGb2N1c0FwcGVhcmFu
Y2VVcGRhdGUoKQogewogICAgIGlmIChFbGVtZW50UmFyZURhdGEqIHJkID0gcmFyZURhdGEoKSkK
QEAgLTEwOTksNCArMTE2Myw1IEBAIHZvaWQgRWxlbWVudDo6Y2FuY2VsRm9jdXNBcHBlYXJhbmNl
VXBkYXQKICAgICAgICAgZG9jdW1lbnQoKS0+Y2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCk7
CiB9CiAKKwogfQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMjU0NjMpCisrKyBXZWJDb3JlL2RvbS9FbGVt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1jbGFzcyBBdG9taWNTdHJpbmdMaXN0OworY2xhc3MgQ2xhc3NOYW1lTGlzdDsKIGNs
YXNzIEF0dHI7CiBjbGFzcyBBdHRyaWJ1dGU7CiBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uOwpA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgfkVsZW1lbnQoKTsKIAogICAgIC8vIFVzZWQg
dG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYW4gZWxlbWVudCBoYXMgYSBnaXZl
biBDU1MgY2xhc3MuCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmdMaXN0KiBnZXRDbGFz
c0xpc3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IENsYXNzTmFtZUxpc3QqIGdldENsYXNz
TGlzdCgpIGNvbnN0OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0SURBdHRyaWJ1dGUoKSBj
b25zdDsKICAgICBib29sIGhhc0F0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7
CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIGNvbnN0OwpAQCAtMTYwLDYgKzE2MCw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
Zm9jdXMoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24gPSB0cnVlKTsKICAgICB2aXJ0dWFs
IHZvaWQgdXBkYXRlRm9jdXNBcHBlYXJhbmNlKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9u
KTsKICAgICB2b2lkIGJsdXIoKTsKKyAgICAKKyAgICBQYXNzUmVmUHRyPE5vZGVMaXN0PiBnZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyYpOwogCiAjaWZuZGVmIE5ERUJVRwogICAg
IHZpcnR1YWwgdm9pZCBkdW1wKFRleHRTdHJlYW0qICwgRGVwcmVjYXRlZFN0cmluZyBpbmQgPSAi
IikgY29uc3Q7CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9FbGVtZW50LmlkbAkocmV2aXNpb24gMjU0NjMpCisrKyBXZWJDb3JlL2RvbS9F
bGVtZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtOTQsNiArOTQsOSBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgIHZvaWQgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChpbiBbT3B0aW9uYWxdIGJvb2xl
YW4gY2VudGVySWZOZWVkZWQpOwogICAgICAgICB2b2lkIHNjcm9sbEJ5TGluZXMoaW4gbG9uZyBs
aW5lcyk7CiAgICAgICAgIHZvaWQgc2Nyb2xsQnlQYWdlcyhpbiBsb25nIHBhZ2VzKTsKKyAgICAg
ICAgCisgICAgICAgIC8vIEhUTUwgNQorICAgICAgICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKGluIERPTVN0cmluZyBuYW1lKTsKIAogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNU
SVZFX0MpCiAgICAgICAgIC8vIE9iamVjdGl2ZS1DIGV4dGVuc2lvbnMKSW5kZXg6IFdlYkNvcmUv
ZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTmFt
ZWRNYXBwZWRBdHRyTWFwLmNwcAkocmV2aXNpb24gMjU0NjMpCisrKyBXZWJDb3JlL2RvbS9OYW1l
ZE1hcHBlZEF0dHJNYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zLDYgKzMsNyBAQAogICogICAg
ICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICogICAg
ICAgICAgIChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAg
KEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMp
IDIwMDcgRGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAo
QykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgpAQCAtNzYsNDggKzc3LDE1IEBAIGJvb2wgTmFtZWRNYXBwZWRBdHRyTWFw
OjptYXBzRXF1aXZhbGVudCgKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotaW5saW5lIHN0YXRpYyBi
b29sIGlzQ2xhc3NXaGl0ZXNwYWNlKFVDaGFyIGMpCi17Ci0gICAgcmV0dXJuIGMgPT0gJyAnIHx8
IGMgPT0gJ1xyJyB8fCBjID09ICdcbicgfHwgYyA9PSAnXHQnOwotfQotCi12b2lkIE5hbWVkTWFw
cGVkQXR0ck1hcDo6cGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGNsYXNzU3RyKQot
ewotICAgIG1fY2xhc3NMaXN0LmNsZWFyKCk7Ci0gICAgaWYgKCFlbGVtZW50LT5oYXNDbGFzcygp
KQordm9pZCBOYW1lZE1hcHBlZEF0dHJNYXA6OnBhcnNlQ2xhc3NBdHRyaWJ1dGUoY29uc3QgU3Ry
aW5nJiBjbGFzc1N0cikgCit7IAorICAgIGlmKCFlbGVtZW50LT5oYXNDbGFzcygpKSAKKyAgICB7
IAorICAgICAgICBtX2NsYXNzTGlzdC5jbGVhcigpOyAKICAgICAgICAgcmV0dXJuOwotICAgIAot
ICAgIFN0cmluZyBjbGFzc0F0dHIgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUo
KSA/IAotICAgICAgICAoY2xhc3NTdHIuaW1wbCgpLT5pc0xvd2VyKCkgPyBjbGFzc1N0ciA6IFN0
cmluZyhjbGFzc1N0ci5pbXBsKCktPmxvd2VyKCkpKSA6Ci0gICAgICAgIGNsYXNzU3RyOwotICAg
IAotICAgIEF0b21pY1N0cmluZ0xpc3QqIGN1cnIgPSAwOwotICAgIAotICAgIGNvbnN0IFVDaGFy
KiBzdHIgPSBjbGFzc0F0dHIuY2hhcmFjdGVycygpOwotICAgIGludCBsZW5ndGggPSBjbGFzc0F0
dHIubGVuZ3RoKCk7Ci0gICAgaW50IHNQb3MgPSAwOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAg
ICAgICAgd2hpbGUgKHNQb3MgPCBsZW5ndGggJiYgaXNDbGFzc1doaXRlc3BhY2Uoc3RyW3NQb3Nd
KSkKLSAgICAgICAgICAgICsrc1BvczsKLSAgICAgICAgaWYgKHNQb3MgPj0gbGVuZ3RoKQotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGludCBlUG9zID0gc1BvcyArIDE7Ci0gICAgICAgIHdo
aWxlIChlUG9zIDwgbGVuZ3RoICYmICFpc0NsYXNzV2hpdGVzcGFjZShzdHJbZVBvc10pKQotICAg
ICAgICAgICAgKytlUG9zOwotICAgICAgICBpZiAoY3VycikgewotICAgICAgICAgICAgY3Vyci0+
c2V0TmV4dChuZXcgQXRvbWljU3RyaW5nTGlzdChBdG9taWNTdHJpbmcoc3RyICsgc1BvcywgZVBv
cyAtIHNQb3MpKSk7Ci0gICAgICAgICAgICBjdXJyID0gY3Vyci0+bmV4dCgpOwotICAgICAgICB9
IGVsc2UgewotICAgICAgICAgICAgaWYgKHNQb3MgPT0gMCAmJiBlUG9zID09IGxlbmd0aCkgewot
ICAgICAgICAgICAgICAgIG1fY2xhc3NMaXN0LnNldFN0cmluZyhBdG9taWNTdHJpbmcoY2xhc3NB
dHRyKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg
ICBtX2NsYXNzTGlzdC5zZXRTdHJpbmcoQXRvbWljU3RyaW5nKHN0ciArIHNQb3MsIGVQb3MgLSBz
UG9zKSk7Ci0gICAgICAgICAgICBjdXJyID0gJm1fY2xhc3NMaXN0OwotICAgICAgICB9Ci0gICAg
ICAgIHNQb3MgPSBlUG9zICsgMTsKLSAgICB9CisgICAgfSAKKyAgICBtX2NsYXNzTGlzdC5wYXJz
ZUNsYXNzQXR0cmlidXRlKGNsYXNzU3RyLCBlbGVtZW50LT5kb2N1bWVudCgpLT5pbkNvbXBhdE1v
ZGUoKSk7IAogfQogCisKIH0KSW5kZXg6IFdlYkNvcmUvZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5oCShyZXZpc2lv
biAyNTQ2MykKKysrIFdlYkNvcmUvZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01LDYgKzUsNyBAQAogICogICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3Rv
IChrb2l2aXN0b0BrZGUub3JnKQogICogICAgICAgICAgIChDKSAyMDAxIFBldGVyIEtlbGx5IChw
bWtAcG9zdC5jb20pCiAgKiAgICAgICAgICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVy
QGtkZS5vcmcpCisgKiAgICAgICAgICAgKEMpIDIwMDcgRGF2aWQgU21pdGggKGNhdGZpc2gubWFu
QGdtYWlsLmNvbSkKICAqIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBBcHBs
ZSBDb21wdXRlciwgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTI4LDggKzI5LDggQEAKICNkZWZpbmUg
TmFtZWRNYXBwZWRBdHRyTWFwX2gKIAogI2luY2x1ZGUgIk5hbWVkQXR0ck1hcC5oIgotI2luY2x1
ZGUgIkF0b21pY1N0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKKyNp
bmNsdWRlICJDbGFzc05hbWVMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIs
OCArNDMsOSBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzTWFwcGVkQXR0cmli
dXRlTWFwKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCB2b2lkIHBhcnNlQ2xhc3NBdHRyaWJ1
dGUoY29uc3QgU3RyaW5nJiBjbGFzc0F0dHIpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZ0xpc3Qq
IGdldENsYXNzTGlzdCgpIGNvbnN0IHsgcmV0dXJuICZtX2NsYXNzTGlzdDsgfQorICAgIHZvaWQg
cGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmKTsKKworICAgIGNvbnN0IENsYXNzTmFt
ZUxpc3QqIGdldENsYXNzTGlzdCgpIGNvbnN0IHsgcmV0dXJuICZtX2NsYXNzTGlzdDsgfQogICAg
IAogICAgIHZpcnR1YWwgYm9vbCBoYXNNYXBwZWRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4g
bV9tYXBwZWRBdHRyaWJ1dGVDb3VudCA+IDA7IH0KICAgICB2b2lkIGRlY2xSZW1vdmVkKCkgeyBt
X21hcHBlZEF0dHJpYnV0ZUNvdW50LS07IH0KQEAgLTYwLDcgKzYyLDcgQEAgcHVibGljOgogICAg
ICAgICB7IHJldHVybiBzdGF0aWNfY2FzdDxNYXBwZWRBdHRyaWJ1dGUqPihOYW1lZEF0dHJNYXA6
OmdldEF0dHJpYnV0ZUl0ZW0obmFtZSkpOyB9CiAgICAgCiBwcml2YXRlOgotICAgIEF0b21pY1N0
cmluZ0xpc3QgbV9jbGFzc0xpc3Q7CisgICAgQ2xhc3NOYW1lTGlzdCBtX2NsYXNzTGlzdDsKICAg
ICBpbnQgbV9tYXBwZWRBdHRyaWJ1dGVDb3VudDsKIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQu
Y3BwCShyZXZpc2lvbiAyNTQ2MykKKysrIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIFN0eWxlZEVsZW1lbgogICAgIHJldHVybiAwOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmdM
aXN0KiBTdHlsZWRFbGVtZW50OjpnZXRDbGFzc0xpc3QoKSBjb25zdAorY29uc3QgQ2xhc3NOYW1l
TGlzdCogU3R5bGVkRWxlbWVudDo6Z2V0Q2xhc3NMaXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4g
bmFtZWRBdHRyTWFwID8gbWFwcGVkQXR0cmlidXRlcygpLT5nZXRDbGFzc0xpc3QoKSA6IDA7CiB9
CkluZGV4OiBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vU3R5bGVkRWxlbWVudC5oCShyZXZpc2lvbiAyNTQ2MykKKysrIFdlYkNvcmUvZG9tL1N0
eWxlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVBdHRyaWJ1dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlU3R5bGVBdHRyaWJ1dGVJZk5lZWRlZCgpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nTGlzdCogZ2V0Q2xhc3NMaXN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBj
b25zdCBDbGFzc05hbWVMaXN0KiBnZXRDbGFzc0xpc3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZv
aWQgYXR0cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqIGF0dHIsIGJvb2wgcHJlc2VydmVEZWNscyA9
IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0
cmlidXRlKiBhdHRyKTsKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7Cklu
ZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNTQ2MykKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE0IEBACisyMDA3LTA5LTA5ICBEYXZpZCBTbWl0aCAgPGNhdGZp
c2gubWFuQGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KyAgICAgICAgCisgICAgICAgIC0gdGVzdCBmb3IgaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTQ5NTUKKyAgICAgICAgICBJbXBsZW1lbnQgZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZQorCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVj
dGVkLnR4dDogQWRkZWQgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZQorICAgICAgICAqIGZhc3QvZG9t
L2dldGVsZW1lbnRzYnljbGFzc25hbWUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9nZXRlbGVtZW50c2J5Y2xhc3NuYW1lLmh0bWw6IEFkZGVkLgorCiAyMDA3LTA5LTA5
ICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFy
ayBSb3dlLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNsYXNzbmFt
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxl
bWVudHNieWNsYXNzbmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5Y2xhc3NuYW1lLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwyNiBAQAorTGluZSAxCitMaW5lIDIKK0xpbmUgMworCitsaW5lIDQKK2xp
bmUgNQorCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0s
IFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBsZW5ndGg6IDMKK1tvYmplY3QgSFRNTERpdkVsZW1l
bnRdLCBbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtv
YmplY3QgSFRNTFBhcmFncmFwaEVsZW1lbnRdLCBsZW5ndGg6IDQKK1tvYmplY3QgSFRNTERpdkVs
ZW1lbnRdLCBbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgbGVuZ3RoOiAyCitbb2JqZWN0IEhUTUxE
aXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIGxlbmd0aDogMgorbGVuZ3RoOiAw
CitsZW5ndGg6IDAKK2xlbmd0aDogMAorbGVuZ3RoOiAwCitsZW5ndGg6IDAKK1tvYmplY3QgSFRN
TERpdkVsZW1lbnRdLCBsZW5ndGg6IDEKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0
IEhUTUxQYXJhZ3JhcGhFbGVtZW50XSwgbGVuZ3RoOiAyCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50
XSwgbGVuZ3RoOiAxCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgbGVuZ3RoOiAxCitsZW5ndGg6
IDAKK2xlbmd0aDogMAorbGVuZ3RoOiAwCitsZW5ndGg6IDAKK2xlbmd0aDogMAorCkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRlbGVtZW50c2J5Y2xhc3NuYW1lLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNsYXNzbmFtZS5odG1sCShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNsYXNzbmFt
ZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACis8aHRtbD4KKzxib2R5PgorPGRp
diBjbGFzcz0ib25lIj5MaW5lIDE8ZGl2IGNsYXNzPSJ0d28iPkxpbmUgMjwvZGl2PjxwPkxpbmUg
PGk+MzwvaT48L3A+PC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0ib25lIHR3byI+PGRpdiBj
bGFzcz0ib25lIHR3byI+bGluZSA0PC9kaXY+PHAgY2xhc3M9InR3byI+bGluZSA1PC9wPjwvZGl2
PgorPHA+PG9sIGlkPSJjb25zb2xlIj48L29sPjwvcD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0Ij4KKworICAgIGZ1bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFy
IGl0ZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICBpdGVtLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICB9Cisg
ICAgCisgICAgTm9kZUxpc3QucHJvdG90eXBlLmR1bXAgPSBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB2YXIgcmVzdWx0ID0gIiI7CisgICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgZm9yKDsg
aSA8IHRoaXMubGVuZ3RoOyBpKyspCisgICAgICAgICAgICByZXN1bHQgKz0gdGhpc1tpXSArICIs
ICI7CisgICAgICAgIHJlc3VsdCArPSAibGVuZ3RoOiAiICsgaTsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9CisKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAKKyAgICAgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGVs
bSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0Iik7CisgICAgICAgIAorICAgICAgICAg
ICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZSIpLmR1bXAoKSk7Cisg
ICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgidHdvIikuZHVt
cCgpKTsKKyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJv
bmUgdHdvIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCJvbmVcdFx0XG4gXGZ0d28iKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIiIpLmR1bXAoKSk7CisgICAgICAgICAgICBs
b2coZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgib25ldHdvIikuZHVtcCgpKTsKKyAg
ICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCkuZHVtcCgpKTsK
KyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKG51bGwpLmR1
bXAoKSk7CisgICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh1
bmRlZmluZWQpLmR1bXAoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGxvZyhlbG0uZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgib25lIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhlbG0u
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSgidHdvIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhl
bG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgib25lIHR3byIpLmR1bXAoKSk7CisgICAgICAgICAg
ICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZVx0XHRcbiBcZnR3byIpLmR1bXAo
KSk7CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIiIpLmR1bXAo
KSk7CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZXR3byIp
LmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoKS5k
dW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKG51bGwp
LmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUodW5k
ZWZpbmVkKS5kdW1wKCkpOworCisgICAgICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgICAgICBs
b2coIkV4Y2VwdGlvbjogIiArIGV4LmRlc2NyaXB0aW9uKTsKKyAgICAgICAgfQorICAgIH0gZWxz
ZSB7CisgICAgICAgIGRvY3VtZW50LndyaXRlKCIoY2Fubm90IHJ1biBpbnRlcmFjdGl2ZWx5KSIp
OworICAgIH0KKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMv
ZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAyNTQ2MykKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93
aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw2ICsz
MTYsNyBAQCB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmVsZW1lbnRGcm9tUG9pCiB3aW5kb3cu
RG9jdW1lbnQucHJvdG90eXBlLmV2YWx1YXRlIFtmdW5jdGlvbl0KIHdpbmRvdy5Eb2N1bWVudC5w
cm90b3R5cGUuZXhlY0NvbW1hbmQgW2Z1bmN0aW9uXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlw
ZS5nZXRFbGVtZW50QnlJZCBbZnVuY3Rpb25dCit3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUgW2Z1bmN0aW9uXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlw
ZS5nZXRFbGVtZW50c0J5VGFnTmFtZSBbZnVuY3Rpb25dCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90
eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMgW2Z1bmN0aW9uXQogd2luZG93LkRvY3VtZW50LnBy
b3RvdHlwZS5nZXRPdmVycmlkZVN0eWxlIFtmdW5jdGlvbl0KQEAgLTQyMiw2ICs0MjMsNyBAQCB3
aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlIFtmCiB3aW5kb3cuRWxlbWVudC5w
cm90b3R5cGUuZ2V0QXR0cmlidXRlTlMgW2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90
eXBlLmdldEF0dHJpYnV0ZU5vZGUgW2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBl
LmdldEF0dHJpYnV0ZU5vZGVOUyBbZnVuY3Rpb25dCit3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSBbZnVuY3Rpb25dCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5
cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgW2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90
eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lTlMgW2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJv
dG90eXBlLmhhc0F0dHJpYnV0ZSBbZnVuY3Rpb25dCg==
</data>
<flag name="review"
          id="6830"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16496</attachid>
            <date>2007-10-01 23:36:29 -0700</date>
            <delta_ts>2007-10-02 00:22:59 -0700</delta_ts>
            <desc>Updated to address review comments</desc>
            <filename>get-elements-by-class-name7.txt</filename>
            <type>text/plain</type>
            <size>35393</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTIgQEAKKzIwMDctMTAtMDEgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5
NTUKKyAgICAgICAgICBJbXBsZW1lbnQgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS4gVGhpcyBwYXRj
aCBhbHNvIHJlbmFtZXMgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0IHRvIGJldHRl
ciByZWZsZWN0IGl0cyBhY3R1YWwgdXNlLAorICAgICAgICAgIGFuZCB0YWtlcyBhZHZhbnRhZ2Ug
b2YgYWRtaXR0aW5nIHRoYXQgaXQncyBjbGFzcy1zcGVjaWZpYyB0byBlbmNhcHN1bGF0ZSBjbGFz
cyBhdHRyaWJ1dGUgcGFyc2luZyBzbyBpdCBjYW4gYmUgc2hhcmVkLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUuaHRtbAorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBGaWxlIHJlbmFtZXMKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjptYXRjaFJ1bGVzKTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IENo
YW5nZSBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QKKyAgICAgICAgKiBkb20vQXRv
bWljU3RyaW5nTGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9DbGFzc05hbWVMaXN0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0Ojpjb250YWlucyk6IE5l
dyBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGNsYXNzIG5hbWUgaXMgaW4gdGhlIGxpc3QKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ2xhc3NXaGl0ZXNwYWNlKTogTW92ZWQgZnJvbSBOYW1lZE1hcHBlZEF0
dHJNYXAsIGFuZCBhZGRlZCB0aGUgZm9ybSBmZWVkIGNoYXJhY3RlciBhcyBwb2ludGVkIG91dCBi
eSBBbm5lIHZhbiBLZXN0ZXJlbgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6cGFy
c2VDbGFzc0F0dHJpYnV0ZSk6IE1vdmVkIChhbmQgYWRhcHRlZCkgZnJvbSBOYW1lZE1hcHBlZEF0
dHJNYXAKKyAgICAgICAgKiBkb20vQ2xhc3NOYW1lTGlzdC5oOiBDb3BpZWQgZnJvbSBXZWJDb3Jl
L2RvbS9BdG9taWNTdHJpbmdMaXN0LmguCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0
OjpDbGFzc05hbWVMaXN0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFt
ZUxpc3Q6On5DbGFzc05hbWVMaXN0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNs
YXNzTmFtZUxpc3Q6Om5leHQpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NO
YW1lTGlzdDo6c2V0TmV4dCk6IE5hbWUgY2hhbmdlCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05h
bWVMaXN0OjpzdHJpbmcpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1l
TGlzdDo6c2V0U3RyaW5nKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFt
ZUxpc3Q6OmNsb25lKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxp
c3Q6OmNsZWFyKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOiBBZGRlZAor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCB0aGUgbmV3IGZ1bmN0aW9ucworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5pZGw6IEFkZGVkIHRoZSBuZXcgZnVuY3Rpb25zCisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6Q2xhc3NO
b2RlTGlzdCk6IE5ldyBOb2RlTGlzdCBzdWJjbGFzcyB0aGF0IG1hdGNoZXMgYnkgY2xhc3MgbmFt
ZXMKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTm9kZUxpc3Q6Omxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGFzc05vZGVMaXN0OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTm9k
ZUxpc3Q6Om5vZGVNYXRjaGVzKTogQ2hlY2sgdGhlIGNsYXNzIG5hbWUgdXNpbmcgQ2xhc3NOYW1l
TGlzdCdzIG5ldyBjb250YWlucygpCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRDbGFz
c0xpc3QpOiBDaGFuZ2UgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKTogQWRkZWQKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5oOiBBZGRlZCB0aGUgbmV3IGZ1bmN0aW9ucworICAgICAgICAqIGRv
bS9FbGVtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMKKyAgICAgICAgKiBkb20vTmFt
ZWRNYXBwZWRBdHRyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTWFwcGVkQXR0ck1h
cDo6cGFyc2VDbGFzc0F0dHJpYnV0ZSk6IE1vdmUgYWxsIHRoZSBsb2dpYyBoZXJlIHRvIENsYXNz
TmFtZUxpc3Qgc28gaXQgY2FuIGJlIHNoYXJlZAorICAgICAgICAqIGRvbS9OYW1lZE1hcHBlZEF0
dHJNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTWFwcGVkQXR0ck1hcDo6Z2V0Q2xhc3NM
aXN0KTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAorICAgICAgICAq
IGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6
OmdldENsYXNzTGlzdCk6IENoYW5nZSBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QK
KyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorCiAyMDA3LTEwLTAxICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFyay4KSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNTkw
OSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjMsNiArMzYzLDggQEAKIAkJNTFGMTFFMTUwQTQ4QzI5MjAwMzRBMjRFIC8q
IFNRTFRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxRjExRTE0MEE0OEMyOTIwMDM0QTI0RSAvKiBTUUxUcmFuc2FjdGlvbi5jcHAg
Ki87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNwcCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVG
NjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZp
ZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
KwkJNjM0MDk0N0QwQzcyQjM4NzAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDYzNDA5NDdCMEM3MkIzODYwMEYw
QzU5OCAvKiBDbGFzc05hbWVMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKKwkJNjNDNjM4MTcwQ0IyMEZGNDAwMDM2MjdDIC8qIENsYXNzTmFtZUxp
c3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjM0
MDk0N0MwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3QuY3BwICovOyB9OwogCQk2NTBF
M0Y2QTBBRjZDMTY4MDAxRkEzQUQgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjUwRTNGNjgwQUY2QzE2ODAwMUZB
M0FEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLzsgfTsKIAkJNjUwRjUzREMwOUQxNUREQTAw
QzlCMEM4IC8qIENTU0dyYW1tYXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDY1MEY1M0RCMDlEMTVEREEwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmggKi87
IH07CiAJCTY1MEY1M0REMDlEMTVEREYwMEM5QjBDOCAvKiBDU1NHcmFtbWFyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1NjU4MTQ0MDlEMTMwNDMw
MDBFNjFENyAvKiBDU1NHcmFtbWFyLmNwcCAqLzsgfTsKQEAgLTE2MjIsNyArMTYyNCw2IEBACiAJ
CTkzRjE5OUJEMDgyNDVFNTkwMDFFOUFCQyAvKiBBWE9iamVjdENhY2hlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NTk5OEE1QzA1MkI1OUNDMDAxN0E2
QzEgLyogQVhPYmplY3RDYWNoZS5oICovOyB9OwogCQk5M0YxOTlCRTA4MjQ1RTU5MDAxRTlBQkMg
LyogQmxvY2tFeGNlcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA2NUE2NDBGMDA1MzNCQjFGMDA4NUU3NzcgLyogQmxvY2tFeGNlcHRpb25zLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5
QzIwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg0QjJCMUY3MDU2QkVGM0EwMEQyQjc3
MSAvKiBXZWJDb3JlS2V5R2VuZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk5Q0YwODI0NUU1OTAwMUU5QUJDIC8qIEF0b21pY1N0
cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDM0IzNjQ3MDVDOUQ1RTIwMEU0MjkwMiAvKiBBdG9taWNTdHJpbmdMaXN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5REUwODI0NUU1
OTAwMUU5QUJDIC8qIFBvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBCRTkxRkM4QjA2MTMzNjY2MDA1RTM3OTAgLyogUG9zaXRpb24uaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5M0YxOTlFNTA4
MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjZBM0Q2MDY2M0JGMDQwMDREMjkxOSAvKiBI
VE1MQ2FudmFzRWxlbWVudC5oICovOyB9OwogCQk5M0YxOTlFNzA4MjQ1RTU5MDAxRTlBQkMgLyog
Q2xpcGJvYXJkTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAyRDkwNjYwQjA2NjVEOTM3MDA2QjZGMUEgLyogQ2xpcGJvYXJkTWFjLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQzNTQsNiArNDM1NSw4
IEBACiAJCTU1OTk4QTVCMDUyQjU5Q0MwMDE3QTZDMSAvKiBXZWJDb3JlQVhPYmplY3QubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRo
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
ZWJDb3JlQVhPYmplY3QubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQk1NTk5OEE1QzA1MkI1OUNDMDAxN0E2QzEgLyogQVhPYmplY3RD
YWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBp
bmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBWE9iamVjdENhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsg
dXNlc1RhYnMgPSAwOyB9OwogCQk1NTk5OEE1RDA1MkI1OUNDMDAxN0E2QzEgLyogQVhPYmplY3RD
YWNoZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IEFYT2JqZWN0Q2FjaGVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OworCQk2MzQwOTQ3QjBDNzJCMzg2MDBGMEM1
OTggLyogQ2xhc3NOYW1lTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBD
bGFzc05hbWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTYzNDA5NDdDMEM3
MkIzODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IENsYXNzTmFtZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk2NTBFM0Y2ODBBRjZDMTY4MDAxRkEzQUQgLyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc291cmNlUmVxdWVz
dE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUwRjUzREIwOUQxNUREQTAw
QzlCMEM4IC8qIENTU0dyYW1tYXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENTU0dyYW1tYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNjUxODg4ODYwQUZG
M0JGNzAwMTY0NzIwIC8qIFJlc291cmNlRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzA2OSw3ICs3MDcyLDYgQEAKIAkJQkMzMDVDNzcwQzA3NkJCMzAwQ0QyMEYwIC8q
IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNUNBMzBDMDc4MUJCMDBDRDIwRjAgLyog
SlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQkMzQjM2NDcwNUM5RDVFMjAwRTQyOTAyIC8qIEF0b21pY1N0cmluZ0xp
c3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
QXRvbWljU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9IDg7
IHVzZXNUYWJzID0gMDsgfTsKIAkJQkMzQzM5QjQwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFM
aXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhTGlz
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0MzOUI1MEMwRDNEOEQwMDVG
NEQ3QSAvKiBKU01lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNNZWRpYUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzRkNBQTgwQUMz
REI1ODAwQkE1NEFEIC8qIFBsYXRmb3JtU2Nyb2xsQmFyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVNjcm9sbEJhci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTEyNTQsNyArMTEyNTYsOCBAQAogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKIAkJCQlBNzg0OTQxQTBCNUZFNTA3MDAxRTIzN0EgLyogQ2xpcGJvYXJkLmNwcCAq
LywKLQkJCQlCQzNCMzY0NzA1QzlENUUyMDBFNDI5MDIgLyogQXRvbWljU3RyaW5nTGlzdC5oICov
LAorCQkJCTYzNDA5NDdCMEM3MkIzODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmggKi8sCisJ
CQkJNjM0MDk0N0MwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3QuY3BwICovLAogCQkJ
CUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAqLywKIAkJCQlBOEM0QTdGQjA5
RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5oICovLAogCQkJCTkzRUVDMUU1MDlDMjg3NzcwMEM1MTVE
MSAvKiBBdHRyLmlkbCAqLywKQEAgLTExNDU0LDcgKzExNDU3LDYgQEAKIAkJCQk5M0YxOTlCRDA4
MjQ1RTU5MDAxRTlBQkMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNG
MTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJOTNGMTk5QzIwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVLZXlHZW5lcmF0b3IuaCBp
biBIZWFkZXJzICovLAotCQkJCTkzRjE5OUNGMDgyNDVFNTkwMDFFOUFCQyAvKiBBdG9taWNTdHJp
bmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0YxOTlERTA4MjQ1RTU5MDAxRTlBQkMgLyog
UG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkzRjE5OUU1MDgyNDVFNTkwMDFFOUFCQyAv
KiBIVE1MQ2FudmFzRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5RTcwODI0NUU1
OTAwMUU5QUJDIC8qIENsaXBib2FyZE1hYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xMjk1NCw2ICsx
Mjk1Niw3IEBACiAJCQkJMEYzMUNCRjkyQjY1NDczMEJBMDUzNUU4IC8qIEJpZGlDb250ZXh0Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDMyRTg0NzBDNTE0OTM4MDBCMTUwMEYgLyogR0NDb250cm9s
bGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYgLyogRmls
ZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjM0MDk0N0QwQzcyQjM4NzAwRjBDNTk4IC8q
IENsYXNzTmFtZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1
NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMUVDQjMwQzkxQzU1NjAw
REMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFFMUVDQjQw
QzkxQzU1NjAwREMyNTVCIC8qIFRocmVhZGluZy5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNDYzNyw2
ICsxNDY0MCw3IEBACiAJCQkJQjJBRTlCOUQwQzNBRjI3NDAwRjIzRjdGIC8qIERPTVNWR1RleHRQ
YXRoRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCUFBNDAzODkwMEM0QzBEOEIwMERCNTZE
QyAvKiBTVkdWaWV3U3BlYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkNDRUM0NzBDNkNBOUYx
MDA2QTU0MjQgLyogUmVuZGVyU1ZHVmlld3BvcnRDb250YWluZXIuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJNjNDNjM4MTcwQ0IyMEZGNDAwMDM2MjdDIC8qIENsYXNzTmFtZUxpc3QuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9
IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gMjU5MDkp
CisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
Mzk0LDcgKzM5NCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hSdWxlcyhDU1NSdWwK
ICAgICBpZiAoZWxlbWVudC0+aGFzSUQoKSkKICAgICAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVs
ZXMtPmdldElEUnVsZXMoZWxlbWVudC0+Z2V0SURBdHRyaWJ1dGUoKS5pbXBsKCkpLCBmaXJzdFJ1
bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAgICAgaWYgKGVsZW1lbnQtPmhhc0NsYXNzKCkpIHsK
LSAgICAgICAgZm9yIChjb25zdCBBdG9taWNTdHJpbmdMaXN0KiBzaW5nbGVDbGFzcyA9IGVsZW1l
bnQtPmdldENsYXNzTGlzdCgpOyBzaW5nbGVDbGFzczsgc2luZ2xlQ2xhc3MgPSBzaW5nbGVDbGFz
cy0+bmV4dCgpKQorICAgICAgICBmb3IgKGNvbnN0IENsYXNzTmFtZUxpc3QqIHNpbmdsZUNsYXNz
ID0gZWxlbWVudC0+Z2V0Q2xhc3NMaXN0KCk7IHNpbmdsZUNsYXNzOyBzaW5nbGVDbGFzcyA9IHNp
bmdsZUNsYXNzLT5uZXh0KCkpCiAgICAgICAgICAgICBtYXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+
Z2V0Q2xhc3NSdWxlcyhzaW5nbGVDbGFzcy0+c3RyaW5nKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5k
ZXgsIGxhc3RSdWxlSW5kZXgpOwogICAgIH0KICAgICBtYXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+
Z2V0VGFnUnVsZXMoZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgs
IGxhc3RSdWxlSW5kZXgpOwpAQCAtMTM1Niw3ICsxMzU2LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVj
dG9yOjpjaGVja09uZVNlbGVjdG9yKAogICAgICAgICBpZiAoc2VsLT5tX21hdGNoID09IENTU1Nl
bGVjdG9yOjpDbGFzcykgewogICAgICAgICAgICAgaWYgKCFlLT5oYXNDbGFzcygpKQogICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgQXRvbWljU3Ry
aW5nTGlzdCogYyA9IGUtPmdldENsYXNzTGlzdCgpOyBjOyBjID0gYy0+bmV4dCgpKQorICAgICAg
ICAgICAgZm9yIChjb25zdCBDbGFzc05hbWVMaXN0KiBjID0gZS0+Z2V0Q2xhc3NMaXN0KCk7IGM7
IGMgPSBjLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAgaWYgKGMtPnN0cmluZygpID09IHNlbC0+
bV92YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2RvbS9BdG9taWNTdHJpbmdMaXN0LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vQXRvbWljU3RyaW5nTGlzdC5oCShyZXZpc2lvbiAyNTkwOSkK
KysrIFdlYkNvcmUvZG9tL0F0b21pY1N0cmluZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
MSArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRh
dGlvbiBmb3IgS0RFLgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwg
SW5jLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
Ci0gKi8KLQotI2lmbmRlZiBBdG9taWNTdHJpbmdMaXN0X2gKLSNkZWZpbmUgQXRvbWljU3RyaW5n
TGlzdF9oCi0KLSNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1jbGFzcyBBdG9taWNTdHJpbmdMaXN0IHsKLXB1YmxpYzoKLSAgICBBdG9taWNTdHJpbmdM
aXN0KCkgOiBtX25leHQoMCkge30KLSAgICBBdG9taWNTdHJpbmdMaXN0KGNvbnN0IEF0b21pY1N0
cmluZyYgc3RyLCBBdG9taWNTdHJpbmdMaXN0KiBuID0gMCkgOiBtX3N0cmluZyhzdHIpLCBtX25l
eHQobikge30KLSAgICB+QXRvbWljU3RyaW5nTGlzdCgpIHsgZGVsZXRlIG1fbmV4dDsgfQotICAg
IAotICAgIEF0b21pY1N0cmluZ0xpc3QqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQ7IH0K
LSAgICB2b2lkIHNldE5leHQoQXRvbWljU3RyaW5nTGlzdCogbikgeyBtX25leHQgPSBuOyB9Ci0g
ICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsg
fQotICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyKSB7IG1fc3RyaW5n
ID0gc3RyOyB9Ci0KLSAgICBBdG9taWNTdHJpbmdMaXN0KiBjbG9uZSgpIHsgcmV0dXJuIG5ldyBB
dG9taWNTdHJpbmdMaXN0KG1fc3RyaW5nLCBtX25leHQgPyBtX25leHQtPmNsb25lKCkgOiAwKTsg
fQotICAgIHZvaWQgY2xlYXIoKSB7IG1fc3RyaW5nID0gbnVsbEF0b207IGRlbGV0ZSBtX25leHQ7
IG1fbmV4dCA9IDA7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5nIG1fc3RyaW5n
OwotICAgIEF0b21pY1N0cmluZ0xpc3QqIG1fbmV4dDsKLX07Ci0KLX0KLQotI2VuZGlmCkluZGV4
OiBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9DbGFzc05hbWVMaXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NsYXNzTmFt
ZUxpc3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCisgKiBDb3B5cmln
aHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwK
KyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDbGFzc05hbWVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAg
ICAKK2Jvb2wgQ2xhc3NOYW1lTGlzdDo6Y29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiBzdHIp
IGNvbnN0IAoreyAKKyAgICBmb3IoY29uc3QgQ2xhc3NOYW1lTGlzdCAqdCA9IHRoaXM7IHQ7IHQg
PSB0LT5uZXh0KCkpIHsgCisgICAgICAgIGlmKHQtPnN0cmluZygpID09IHN0cikgCisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsgCisgICAgfSAKKyAgICByZXR1cm4gZmFsc2U7IAorfQorCitpbmxp
bmUgc3RhdGljIGJvb2wgaXNDbGFzc1doaXRlc3BhY2UoVUNoYXIgYykKK3sKKyAgICByZXR1cm4g
YyA9PSAnICcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCcgfHwgYyA9PSAn
XGYnOworfQorCit2b2lkIENsYXNzTmFtZUxpc3Q6OnBhcnNlQ2xhc3NBdHRyaWJ1dGUoY29uc3Qg
U3RyaW5nJiBjbGFzc1N0ciwgY29uc3QgYm9vbCBpbkNvbXBhdE1vZGUpCit7CisgICAgY2xlYXIo
KTsKKyAgICAKKyAgICBTdHJpbmcgY2xhc3NBdHRyID0gaW5Db21wYXRNb2RlID8gCisgICAgICAg
IChjbGFzc1N0ci5pbXBsKCktPmlzTG93ZXIoKSA/IGNsYXNzU3RyIDogU3RyaW5nKGNsYXNzU3Ry
Lmxvd2VyKCkpKSA6CisgICAgICAgIGNsYXNzU3RyOworICAgIAorICAgIENsYXNzTmFtZUxpc3Qq
IGN1cnIgPSAwOworICAgIAorICAgIGNvbnN0IFVDaGFyKiBzdHIgPSBjbGFzc0F0dHIuY2hhcmFj
dGVycygpOworICAgIGludCBsZW5ndGggPSBjbGFzc0F0dHIubGVuZ3RoKCk7CisgICAgaW50IHN0
YXJ0ID0gMDsKKyAgICAKKyAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICB3aGlsZSAoc3RhcnQg
PCBsZW5ndGggJiYgaXNDbGFzc1doaXRlc3BhY2Uoc3RyW3N0YXJ0XSkpCisgICAgICAgICAgICAr
K3N0YXJ0OworICAgICAgICBpZiAoc3RhcnQgPj0gbGVuZ3RoKQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGludCBlbmQgPSBzdGFydCArIDE7CisgICAgICAgIHdoaWxlIChlbmQgPCBsZW5n
dGggJiYgIWlzQ2xhc3NXaGl0ZXNwYWNlKHN0cltlbmRdKSkKKyAgICAgICAgICAgICsrZW5kOwor
ICAgICAgICBpZiAoY3VycikgeworICAgICAgICAgICAgY3Vyci0+c2V0TmV4dChuZXcgQ2xhc3NO
YW1lTGlzdChBdG9taWNTdHJpbmcoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0KSkpOworICAgICAg
ICAgICAgY3VyciA9IGN1cnItPm5leHQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IGlmIChzdGFydCA9PSAwICYmIGVuZCA9PSBsZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBtX3N0
cmluZyA9IEF0b21pY1N0cmluZyhjbGFzc0F0dHIpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgbV9zdHJpbmcgPSBBdG9taWNTdHJpbmcoc3RyICsg
c3RhcnQsIGVuZCAtIHN0YXJ0KTsKKyAgICAgICAgICAgIGN1cnIgPSB0aGlzOworICAgICAgICB9
CisgICAgICAgIHN0YXJ0ID0gZW5kICsgMTsKKyAgICB9Cit9CisgICAgCit9CkluZGV4OiBXZWJD
b3JlL2RvbS9DbGFzc05hbWVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ2xhc3NO
YW1lTGlzdC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogVGhpcyBmaWxlIGlzIHBhcnQgb2Yg
dGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgorICoKKyAqIENvcHlyaWdodCAoQykgMjAw
NCBBcHBsZSBDb21wdXRlciwgSW5jLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh
dCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91
dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5H
LkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s
IEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEt
MTMwNywgVVNBLgorICoKKyAqLworCisjaWZuZGVmIENsYXNzTmFtZUxpc3RfaAorI2RlZmluZSBD
bGFzc05hbWVMaXN0X2gKKworI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgRG9jdW1lbnQ7CisgICAgCisgICAgY2xhc3MgQ2xh
c3NOYW1lTGlzdCB7CitwdWJsaWM6CisgICAgICAgIENsYXNzTmFtZUxpc3QoKSA6IG1fbmV4dCgw
KSB7fQorICAgICAgICBDbGFzc05hbWVMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyLCBDbGFz
c05hbWVMaXN0KiBuID0gMCkgOiBtX3N0cmluZyhzdHIpLCBtX25leHQobikge30KKyAgICAgICAg
fkNsYXNzTmFtZUxpc3QoKSB7IGRlbGV0ZSBtX25leHQ7IH0KKyAgICAgICAgCisgICAgICAgIENs
YXNzTmFtZUxpc3QqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQ7IH0KKyAgICAgICAgdm9p
ZCBzZXROZXh0KENsYXNzTmFtZUxpc3QqIG4pIHsgbV9uZXh0ID0gbjsgfQorICAgICAgICBjb25z
dCBBdG9taWNTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAg
ICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyKSB7IG1fc3RyaW5nID0g
c3RyOyB9CisgICAgICAgICAgICAgICAgCisgICAgICAgIGJvb2wgY29udGFpbnMoY29uc3QgQXRv
bWljU3RyaW5nJikgY29uc3Q7CisKKyAgICAgICAgdm9pZCBwYXJzZUNsYXNzQXR0cmlidXRlKGNv
bnN0IFN0cmluZyYsIGNvbnN0IGJvb2wpOworICAgICAgICAgICAgICAgIAorICAgICAgICBDbGFz
c05hbWVMaXN0KiBjbG9uZSgpIHsgcmV0dXJuIG5ldyBDbGFzc05hbWVMaXN0KG1fc3RyaW5nLCBt
X25leHQgPyBtX25leHQtPmNsb25lKCkgOiAwKTsgfQorICAgICAgICB2b2lkIGNsZWFyKCkgeyBt
X3N0cmluZyA9IG51bGxBdG9tOyBkZWxldGUgbV9uZXh0OyBtX25leHQgPSAwOyB9CisgICAgICAg
IAorcHJpdmF0ZToKKyAgICAgICAgQXRvbWljU3RyaW5nIG1fc3RyaW5nOworICAgICAgICBDbGFz
c05hbWVMaXN0KiBtX25leHQ7CisgICAgfTsKKyAgICAKK30KKworI2VuZGlmCkluZGV4OiBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQu
Y3BwCShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQyMSw2ICszNDIxLDExIEBAIFBhc3NSZWZQdHI8TmFtZU5vZGVMaXN0PiBE
b2N1bWVudDo6Z2V0RWwKICAgICByZXR1cm4gbmV3IE5hbWVOb2RlTGlzdCh0aGlzLCBlbGVtZW50
TmFtZSk7CiB9CiAKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50OjpnZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyAmY2xhc3NOYW1lKQoreworICAgIHJldHVybiBkb2N1bWVu
dEVsZW1lbnQoKS0+Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWUpOworfQorCiB2b2lk
IERvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewogICAgIHNldFBhcnNpbmcoZmFsc2UpOwpJ
bmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9E
b2N1bWVudC5oCShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdv
cmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxO
b2RlPiBhZG9wdE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsK
ICAgICAKICAgICBQYXNzUmVmUHRyPE5hbWVOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeU5hbWUoY29u
c3QgU3RyaW5nJiBlbGVtZW50TmFtZSk7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcgJmNsYXNzTmFtZSk7CiAKICAgICAvLyBBY3R1
YWxseSBwYXJ0IG9mIEpTSFRNTERvY3VtZW50LCBidXQgdXNlZCBmb3IgZ2l2aW5nIFhNTCBkb2N1
bWVudHMgYSB3aW5kb3cgdGl0bGUgYXMgd2VsbAogICAgIFN0cmluZyB0aXRsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGl0bGU7IH0KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDI1OTA5KQorKysgV2Vi
Q29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xODIsNiArMTgyLDggQEAg
bW9kdWxlIGNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gYXV0aG9yT25seSk7CiAjZW5kaWYKIAorICAg
ICAgICAvL0hUTUwgNQorICAgICAgICBOb2RlTGlzdCAgICAgICAgICAgIGdldEVsZW1lbnRzQnlD
bGFzc05hbWUoaW4gRE9NU3RyaW5nIHRhZ25hbWUpOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDggKzEsOSBAQAotLyoKKyAgICAvKgogICogQ29weXJpZ2h0IChDKSAxOTk5IExh
cnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29p
dmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2Vs
bHkgKHBta0Bwb3N0LmNvbSkKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11
ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0Zmlz
aC5tYW5AZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNyBF
cmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKQEAgLTQyLDYgKzQzLDggQEAKICNpbmNs
dWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSAi
WE1MTmFtZXMuaCIKKyNpbmNsdWRlICJOb2RlTGlzdC5oIgorI2luY2x1ZGUgIkNsYXNzTmFtZUxp
c3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05MSw2ICs5NCw1NyBAQCB2b2lkIEVs
ZW1lbnRSYXJlRGF0YTo6cmVzZXRDb21wdXRlZFN0eWxlCiAgICAgbV9jb21wdXRlZFN0eWxlID0g
MDsKIH0KIAorLy8gTm9kZUxpc3QgdGhhdCBsaW1pdHMgdG8gYSBwYXJ0aWN1bGFyIGNsYXNzLgor
Y2xhc3MgQ2xhc3NOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CitwdWJsaWM6CisgICAgQ2xh
c3NOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcm
IGNsYXNzTmFtZSk7CisgICAgCisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsK
KyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0OworICAgIAorcHJp
dmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoTm9kZSAqKSBjb25zdDsKKyAgICAK
KyAgICBBdG9taWNTdHJpbmcgbV9uYW1lc3BhY2VVUkk7CisgICAgQ2xhc3NOYW1lTGlzdCBtX2Ns
YXNzTGlzdDsKK307CisKK0NsYXNzTm9kZUxpc3Q6OkNsYXNzTm9kZUxpc3QgKFBhc3NSZWZQdHI8
Tm9kZT4gcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1lKQorOiBOb2RlTGlz
dChyb290Tm9kZSksIG1fbmFtZXNwYWNlVVJJKG51bGxBdG9tKQoreworICAgIG1fY2xhc3NMaXN0
ID0gQ2xhc3NOYW1lTGlzdCgpOworICAgIG1fY2xhc3NMaXN0LnBhcnNlQ2xhc3NBdHRyaWJ1dGUo
Y2xhc3NOYW1lLCBtX3Jvb3ROb2RlLT5kb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSk7Cit9CisK
K3Vuc2lnbmVkIENsYXNzTm9kZUxpc3Q6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHJl
Y3Vyc2l2ZUxlbmd0aCgpOworfQorCitOb2RlKiBDbGFzc05vZGVMaXN0OjppdGVtKHVuc2lnbmVk
IGluZGV4KSBjb25zdAoreworICAgIHJldHVybiByZWN1cnNpdmVJdGVtKGluZGV4KTsKK30KKwor
Ym9vbCBDbGFzc05vZGVMaXN0Ojpub2RlTWF0Y2hlcyhOb2RlKiB0ZXN0Tm9kZSkgY29uc3QKK3sK
KyAgICBpZiAoIXRlc3ROb2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAKKyAgICBpZiAoIXRlc3ROb2RlLT5oYXNDbGFzcygpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgCisgICAgY29uc3QgQ2xhc3NOYW1lTGlzdCogY2xhc3NlcyA9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPih0ZXN0Tm9kZSktPmdldENsYXNzTGlzdCgpOworICAgIAorICAgIGZvciAo
Y29uc3QgQ2xhc3NOYW1lTGlzdCogYyA9ICZtX2NsYXNzTGlzdDsgYzsgYyA9IGMtPm5leHQoKSkK
KyAgICB7CisgICAgICAgIGlmICghY2xhc3Nlcy0+Y29udGFpbnMoYy0+c3RyaW5nKCkpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30K
KwogRWxlbWVudDo6RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiBxTmFtZSwgRG9jdW1lbnQg
KmRvYykKICAgICA6IENvbnRhaW5lck5vZGUoZG9jKQogICAgICwgbV90YWdOYW1lKHFOYW1lKQpA
QCAtMTg2LDcgKzI0MCw3IEBAIE5vZGU6Ok5vZGVUeXBlIEVsZW1lbnQ6Om5vZGVUeXBlKCkgY29u
c3QKICAgICByZXR1cm4gRUxFTUVOVF9OT0RFOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmdMaXN0
KiBFbGVtZW50OjpnZXRDbGFzc0xpc3QoKSBjb25zdAorY29uc3QgQ2xhc3NOYW1lTGlzdCogRWxl
bWVudDo6Z2V0Q2xhc3NMaXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gMDsKIH0KQEAgLTEwOTIs
NiArMTE0NiwxMSBAQCBSZW5kZXJTdHlsZSogRWxlbWVudDo6Y29tcHV0ZWRTdHlsZSgpCiAgICAg
cmV0dXJuIHJkLT5tX2NvbXB1dGVkU3R5bGU7CiB9CiAKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IEVs
ZW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUoY29uc3QgU3RyaW5nJiBjbGFzc05hbWUpCit7
CisgICAgcmV0dXJuIG5ldyBDbGFzc05vZGVMaXN0KHRoaXMsIGNsYXNzTmFtZSk7Cit9CisKIHZv
aWQgRWxlbWVudDo6Y2FuY2VsRm9jdXNBcHBlYXJhbmNlVXBkYXRlKCkKIHsKICAgICBpZiAoRWxl
bWVudFJhcmVEYXRhKiByZCA9IHJhcmVEYXRhKCkpCkBAIC0xMTAwLDQgKzExNTksNSBAQCB2b2lk
IEVsZW1lbnQ6OmNhbmNlbEZvY3VzQXBwZWFyYW5jZVVwZGF0CiAgICAgICAgIGRvY3VtZW50KCkt
PmNhbmNlbEZvY3VzQXBwZWFyYW5jZVVwZGF0ZSgpOwogfQogCisKIH0KSW5kZXg6IFdlYkNvcmUv
ZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlz
aW9uIDI1OTA5KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw3ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXRvbWljU3RyaW5n
TGlzdDsKK2NsYXNzIENsYXNzTmFtZUxpc3Q7CiBjbGFzcyBBdHRyOwogY2xhc3MgQXR0cmlidXRl
OwogY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgog
ICAgIH5FbGVtZW50KCk7CiAKICAgICAvLyBVc2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRo
ZXIgb3Igbm90IGFuIGVsZW1lbnQgaGFzIGEgZ2l2ZW4gQ1NTIGNsYXNzLgotICAgIHZpcnR1YWwg
Y29uc3QgQXRvbWljU3RyaW5nTGlzdCogZ2V0Q2xhc3NMaXN0KCkgY29uc3Q7CisgICAgdmlydHVh
bCBjb25zdCBDbGFzc05hbWVMaXN0KiBnZXRDbGFzc0xpc3QoKSBjb25zdDsKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGdldElEQXR0cmlidXRlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYg
Z2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKQEAgLTE2MCw2ICsxNjAs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3Vz
U2VsZWN0aW9uID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5j
ZShib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbik7CiAgICAgdm9pZCBibHVyKCk7CisgICAg
CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBT
dHJpbmcmKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUZXh0U3Ry
ZWFtKiAsIERlcHJlY2F0ZWRTdHJpbmcgaW5kID0gIiIpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9k
b20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJl
dmlzaW9uIDI1OTA5KQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTk0LDYgKzk0LDkgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICB2b2lkIHNjcm9sbEludG9W
aWV3SWZOZWVkZWQoaW4gW09wdGlvbmFsXSBib29sZWFuIGNlbnRlcklmTmVlZGVkKTsKICAgICAg
ICAgdm9pZCBzY3JvbGxCeUxpbmVzKGluIGxvbmcgbGluZXMpOwogICAgICAgICB2b2lkIHNjcm9s
bEJ5UGFnZXMoaW4gbG9uZyBwYWdlcyk7CisgICAgICAgIAorICAgICAgICAvLyBIVE1MIDUKKyAg
ICAgICAgTm9kZUxpc3QgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShpbiBET01TdHJpbmcgbmFtZSk7
CiAKICNpZiBkZWZpbmVkKExBTkdVQUdFX09CSkVDVElWRV9DKQogICAgICAgICAvLyBPYmplY3Rp
dmUtQyBleHRlbnNpb25zCkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lZE1hcHBlZEF0dHJNYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5jcHAJKHJldmlz
aW9uIDI1OTA5KQorKysgV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2
aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxs
eSAocG1rQHBvc3QuY29tKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVl
bGxlckBrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRmaXNo
Lm1hbkBnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTc2LDQ4ICs3
NywxNSBAQCBib29sIE5hbWVkTWFwcGVkQXR0ck1hcDo6bWFwc0VxdWl2YWxlbnQoCiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKLWlubGluZSBzdGF0aWMgYm9vbCBpc0NsYXNzV2hpdGVzcGFjZShVQ2hh
ciBjKQotewotICAgIHJldHVybiBjID09ICcgJyB8fCBjID09ICdccicgfHwgYyA9PSAnXG4nIHx8
IGMgPT0gJ1x0JzsKLX0KLQotdm9pZCBOYW1lZE1hcHBlZEF0dHJNYXA6OnBhcnNlQ2xhc3NBdHRy
aWJ1dGUoY29uc3QgU3RyaW5nJiBjbGFzc1N0cikKLXsKLSAgICBtX2NsYXNzTGlzdC5jbGVhcigp
OwotICAgIGlmICghZWxlbWVudC0+aGFzQ2xhc3MoKSkKK3ZvaWQgTmFtZWRNYXBwZWRBdHRyTWFw
OjpwYXJzZUNsYXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgY2xhc3NTdHIpIAoreyAKKyAgICBp
ZighZWxlbWVudC0+aGFzQ2xhc3MoKSkgCisgICAgeyAKKyAgICAgICAgbV9jbGFzc0xpc3QuY2xl
YXIoKTsgCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBTdHJpbmcgY2xhc3NBdHRyID0gZWxl
bWVudC0+ZG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkgPyAKLSAgICAgICAgKGNsYXNzU3RyLmlt
cGwoKS0+aXNMb3dlcigpID8gY2xhc3NTdHIgOiBTdHJpbmcoY2xhc3NTdHIuaW1wbCgpLT5sb3dl
cigpKSkgOgotICAgICAgICBjbGFzc1N0cjsKLSAgICAKLSAgICBBdG9taWNTdHJpbmdMaXN0KiBj
dXJyID0gMDsKLSAgICAKLSAgICBjb25zdCBVQ2hhciogc3RyID0gY2xhc3NBdHRyLmNoYXJhY3Rl
cnMoKTsKLSAgICBpbnQgbGVuZ3RoID0gY2xhc3NBdHRyLmxlbmd0aCgpOwotICAgIGludCBzUG9z
ID0gMDsKLQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHdoaWxlIChzUG9zIDwgbGVuZ3Ro
ICYmIGlzQ2xhc3NXaGl0ZXNwYWNlKHN0cltzUG9zXSkpCi0gICAgICAgICAgICArK3NQb3M7Ci0g
ICAgICAgIGlmIChzUG9zID49IGxlbmd0aCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBp
bnQgZVBvcyA9IHNQb3MgKyAxOwotICAgICAgICB3aGlsZSAoZVBvcyA8IGxlbmd0aCAmJiAhaXND
bGFzc1doaXRlc3BhY2Uoc3RyW2VQb3NdKSkKLSAgICAgICAgICAgICsrZVBvczsKLSAgICAgICAg
aWYgKGN1cnIpIHsKLSAgICAgICAgICAgIGN1cnItPnNldE5leHQobmV3IEF0b21pY1N0cmluZ0xp
c3QoQXRvbWljU3RyaW5nKHN0ciArIHNQb3MsIGVQb3MgLSBzUG9zKSkpOwotICAgICAgICAgICAg
Y3VyciA9IGN1cnItPm5leHQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChz
UG9zID09IDAgJiYgZVBvcyA9PSBsZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBtX2NsYXNzTGlz
dC5zZXRTdHJpbmcoQXRvbWljU3RyaW5nKGNsYXNzQXR0cikpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9jbGFzc0xpc3Quc2V0U3RyaW5nKEF0
b21pY1N0cmluZyhzdHIgKyBzUG9zLCBlUG9zIC0gc1BvcykpOwotICAgICAgICAgICAgY3VyciA9
ICZtX2NsYXNzTGlzdDsKLSAgICAgICAgfQotICAgICAgICBzUG9zID0gZVBvcyArIDE7Ci0gICAg
fQorICAgIH0gCisgICAgbV9jbGFzc0xpc3QucGFyc2VDbGFzc0F0dHJpYnV0ZShjbGFzc1N0ciwg
ZWxlbWVudC0+ZG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkpOyAKIH0KIAorCiB9CkluZGV4OiBX
ZWJDb3JlL2RvbS9OYW1lZE1hcHBlZEF0dHJNYXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9OYW1lZE1hcHBlZEF0dHJNYXAuaAkocmV2aXNpb24gMjU5MDkpCisrKyBXZWJDb3JlL2RvbS9O
YW1lZE1hcHBlZEF0dHJNYXAuaAkod29ya2luZyBjb3B5KQpAQCAtNSw2ICs1LDcgQEAKICAqICAg
ICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAg
ICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogICAgICAgICAg
IChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICogICAgICAgICAgIChD
KSAyMDA3IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KICAqCiAgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCkBAIC0yOCw4ICsyOSw4IEBACiAjZGVmaW5lIE5hbWVkTWFwcGVkQXR0ck1hcF9oCiAKICNp
bmNsdWRlICJOYW1lZEF0dHJNYXAuaCIKLSNpbmNsdWRlICJBdG9taWNTdHJpbmdMaXN0LmgiCiAj
aW5jbHVkZSAiTWFwcGVkQXR0cmlidXRlLmgiCisjaW5jbHVkZSAiQ2xhc3NOYW1lTGlzdC5oIgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQyLDggKzQzLDkgQEAgcHVibGljOgogICAgIAog
ICAgIHZpcnR1YWwgYm9vbCBpc01hcHBlZEF0dHJpYnV0ZU1hcCgpIGNvbnN0OwogICAgIAotICAg
IHZpcnR1YWwgdm9pZCBwYXJzZUNsYXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgY2xhc3NBdHRy
KTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmdMaXN0KiBnZXRDbGFzc0xpc3QoKSBjb25zdCB7IHJl
dHVybiAmbV9jbGFzc0xpc3Q7IH0KKyAgICB2b2lkIHBhcnNlQ2xhc3NBdHRyaWJ1dGUoY29uc3Qg
U3RyaW5nJik7CisKKyAgICBjb25zdCBDbGFzc05hbWVMaXN0KiBnZXRDbGFzc0xpc3QoKSBjb25z
dCB7IHJldHVybiAmbV9jbGFzc0xpc3Q7IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzTWFw
cGVkQXR0cmlidXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fbWFwcGVkQXR0cmlidXRlQ291bnQgPiAw
OyB9CiAgICAgdm9pZCBkZWNsUmVtb3ZlZCgpIHsgbV9tYXBwZWRBdHRyaWJ1dGVDb3VudC0tOyB9
CkBAIC02MCw3ICs2Miw3IEBAIHB1YmxpYzoKICAgICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8
TWFwcGVkQXR0cmlidXRlKj4oTmFtZWRBdHRyTWFwOjpnZXRBdHRyaWJ1dGVJdGVtKG5hbWUpKTsg
fQogICAgIAogcHJpdmF0ZToKLSAgICBBdG9taWNTdHJpbmdMaXN0IG1fY2xhc3NMaXN0OworICAg
IENsYXNzTmFtZUxpc3QgbV9jbGFzc0xpc3Q7CiAgICAgaW50IG1fbWFwcGVkQXR0cmlidXRlQ291
bnQ7CiB9OwogCkluZGV4OiBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMjU5MDkpCisrKyBX
ZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjUxLDcgKzI1
MSw3IEBAIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBTdHlsZWRFbGVtZW4KICAgICByZXR1
cm4gMDsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nTGlzdCogU3R5bGVkRWxlbWVudDo6Z2V0Q2xh
c3NMaXN0KCkgY29uc3QKK2NvbnN0IENsYXNzTmFtZUxpc3QqIFN0eWxlZEVsZW1lbnQ6OmdldENs
YXNzTGlzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG5hbWVkQXR0ck1hcCA/IG1hcHBlZEF0dHJp
YnV0ZXMoKS0+Z2V0Q2xhc3NMaXN0KCkgOiAwOwogfQpJbmRleDogV2ViQ29yZS9kb20vU3R5bGVk
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAkocmV2
aXNpb24gMjU5MDkpCisrKyBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTY2LDcgKzY2LDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZVN0eWxlQXR0
cmlidXRlKCk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZVN0eWxlQXR0cmlidXRlSWZOZWVkZWQo
KSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZ0xpc3QqIGdldENs
YXNzTGlzdCgpIGNvbnN0OworICAgIHZpcnR1YWwgY29uc3QgQ2xhc3NOYW1lTGlzdCogZ2V0Q2xh
c3NMaXN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmli
dXRlKiBhdHRyLCBib29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7CiAgICAgdmlydHVh
bCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0
dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjU5MDkpCisr
KyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAor
MjAwNy0xMC0wMSAgRGF2aWQgU21pdGggIDxjYXRmaXNoLm1hbkBnbWFpbC5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICAtIHRlc3Qg
Zm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTU1CisgICAgICAg
ICAgSW1wbGVtZW50IGdldEVsZW1lbnRzQnlDbGFzc05hbWUKKworICAgICAgICAqIGZhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6IEFkZGVkIGdldEVsZW1lbnRz
QnlDbGFzc05hbWUKKyAgICAgICAgKiBmYXN0L2RvbS9nZXRlbGVtZW50c2J5Y2xhc3NuYW1lLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNsYXNz
bmFtZS5odG1sOiBBZGRlZC4KKwogMjAwNy0xMC0wMSAgT2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBw
bGUuY29tPgogCiAgICAgICAgIFJTID0gRXJpYy4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L2dldGVsZW1lbnRzYnljbGFzc25hbWUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNsYXNzbmFtZS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAKK0xpbmUgMQorTGluZSAy
CitMaW5lIDMKKworbGluZSA0CitsaW5lIDUKKworW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtv
YmplY3QgSFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgbGVuZ3RoOiAz
Citbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmpl
Y3QgSFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0IEhUTUxQYXJhZ3JhcGhFbGVtZW50XSwgbGVuZ3Ro
OiA0Citbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIGxl
bmd0aDogMgorW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3QgSFRNTERpdkVsZW1lbnRd
LCBsZW5ndGg6IDIKK2xlbmd0aDogMAorbGVuZ3RoOiAwCitsZW5ndGg6IDAKK2xlbmd0aDogMAor
bGVuZ3RoOiAwCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgbGVuZ3RoOiAxCitbb2JqZWN0IEhU
TUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MUGFyYWdyYXBoRWxlbWVudF0sIGxlbmd0aDogMgor
W29iamVjdCBIVE1MRGl2RWxlbWVudF0sIGxlbmd0aDogMQorW29iamVjdCBIVE1MRGl2RWxlbWVu
dF0sIGxlbmd0aDogMQorbGVuZ3RoOiAwCitsZW5ndGg6IDAKK2xlbmd0aDogMAorbGVuZ3RoOiAw
CitsZW5ndGg6IDAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVudHNieWNs
YXNzbmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1l
bnRzYnljbGFzc25hbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9t
L2dldGVsZW1lbnRzYnljbGFzc25hbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBA
QAorPGh0bWw+Cis8Ym9keT4KKzxkaXYgY2xhc3M9Im9uZSI+TGluZSAxPGRpdiBjbGFzcz0idHdv
Ij5MaW5lIDI8L2Rpdj48cD5MaW5lIDxpPjM8L2k+PC9wPjwvZGl2PgorPGRpdiBpZD0idGVzdCIg
Y2xhc3M9Im9uZSB0d28iPjxkaXYgY2xhc3M9Im9uZSB0d28iPmxpbmUgNDwvZGl2PjxwIGNsYXNz
PSJ0d28iPmxpbmUgNTwvcD48L2Rpdj4KKzxwPjxvbCBpZD0iY29uc29sZSI+PC9vbD48L3A+Cis8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKKyAgICBmdW5jdGlvbiBsb2cobWVzc2Fn
ZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGki
KTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNz
YWdlKSk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5k
Q2hpbGQoaXRlbSk7CisgICAgfQorICAgIAorICAgIE5vZGVMaXN0LnByb3RvdHlwZS5kdW1wID0g
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9ICIiOworICAgICAgICB2YXIg
aSA9IDA7CisgICAgICAgIGZvcig7IGkgPCB0aGlzLmxlbmd0aDsgaSsrKQorICAgICAgICAgICAg
cmVzdWx0ICs9IHRoaXNbaV0gKyAiLCAiOworICAgICAgICByZXN1bHQgKz0gImxlbmd0aDogIiAr
IGk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgCisg
ICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgICAg
ICAKKyAgICAgICAgICAgIHZhciBlbG0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIp
OworICAgICAgICAKKyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCJvbmUiKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRz
QnlDbGFzc05hbWUoInR3byIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgib25lIHR3byIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2co
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgib25lXHRcdFxuIFxmdHdvIikuZHVtcCgp
KTsKKyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCIiKS5k
dW1wKCkpOworICAgICAgICAgICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
Im9uZXR3byIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZSgpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZShudWxsKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUodW5kZWZpbmVkKS5kdW1wKCkpOworICAgICAgICAgICAgCisg
ICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZSIpLmR1bXAoKSk7
CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoInR3byIpLmR1bXAo
KSk7CisgICAgICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZSB0d28i
KS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJv
bmVcdFx0XG4gXGZ0d28iKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCIiKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCJvbmV0d28iKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCkuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhlbG0uZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZShudWxsKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKHVuZGVmaW5lZCkuZHVtcCgpKTsKKworICAgICAgICB9IGNhdGNo
IChleCkgeworICAgICAgICAgICAgbG9nKCJFeGNlcHRpb246ICIgKyBleC5kZXNjcmlwdGlvbik7
CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBkb2N1bWVudC53cml0ZSgiKGNhbm5v
dCBydW4gaW50ZXJhY3RpdmVseSkiKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dp
bmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjU5MDkpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMTYsNiArMzE2LDcgQEAgd2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5l
bGVtZW50RnJvbVBvaQogd2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5ldmFsdWF0ZSBbZnVuY3Rp
b25dCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmV4ZWNDb21tYW5kIFtmdW5jdGlvbl0KIHdp
bmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudEJ5SWQgW2Z1bmN0aW9uXQord2luZG93
LkRvY3VtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIFtmdW5jdGlvbl0KIHdp
bmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgW2Z1bmN0aW9uXQog
d2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZU5TIFtmdW5jdGlv
bl0KIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0T3ZlcnJpZGVTdHlsZSBbZnVuY3Rpb25d
CkBAIC00MjIsNiArNDIzLDcgQEAgd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0
ZSBbZgogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5TIFtmdW5jdGlvbl0K
IHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOb2RlIFtmdW5jdGlvbl0KIHdp
bmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1dGVOb2RlTlMgW2Z1bmN0aW9uXQord2lu
ZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUgW2Z1bmN0aW9uXQog
d2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1lIFtmdW5jdGlvbl0K
IHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZU5TIFtmdW5jdGlv
bl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5oYXNBdHRyaWJ1dGUgW2Z1bmN0aW9uXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>16497</attachid>
            <date>2007-10-02 00:22:59 -0700</date>
            <delta_ts>2007-12-12 17:02:24 -0800</delta_ts>
            <desc>More review fixage</desc>
            <filename>get-elements-by-class-name8.txt</filename>
            <type>text/plain</type>
            <size>38259</size>
            <attacher name="David Smith">catfish.man</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTkxMCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNTQgQEAKKzIwMDctMTAtMDIgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorICAgICAgICAK
KyAgICAgICAgLSBmaXggaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5
NTUKKyAgICAgICAgICBJbXBsZW1lbnQgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS4gVGhpcyBwYXRj
aCBhbHNvIHJlbmFtZXMgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0IHRvIGJldHRl
ciByZWZsZWN0IGl0cyBhY3R1YWwgdXNlLAorICAgICAgICAgIGFuZCB0YWtlcyBhZHZhbnRhZ2Ug
b2YgYWRtaXR0aW5nIHRoYXQgaXQncyBjbGFzcy1zcGVjaWZpYyB0byBlbmNhcHN1bGF0ZSBjbGFz
cyBhdHRyaWJ1dGUgcGFyc2luZyBzbyBpdCBjYW4gYmUgc2hhcmVkLgorCisgICAgICAgIFRlc3Q6
IGZhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUuaHRtbAorCisgICAgICAgICogV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBGaWxlIHJlbmFtZXMKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9y
OjptYXRjaFJ1bGVzKTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxlY3Rvcik6IENo
YW5nZSBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QKKyAgICAgICAgKiBkb20vQXRv
bWljU3RyaW5nTGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIGRvbS9DbGFzc05hbWVMaXN0LmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0Ojpjb250YWlucyk6IE5l
dyBmdW5jdGlvbiB0byBjaGVjayBpZiBhIGNsYXNzIG5hbWUgaXMgaW4gdGhlIGxpc3QKKyAgICAg
ICAgKFdlYkNvcmU6OmlzQ2xhc3NXaGl0ZXNwYWNlKTogTW92ZWQgZnJvbSBOYW1lZE1hcHBlZEF0
dHJNYXAsIGFuZCBhZGRlZCB0aGUgZm9ybSBmZWVkIGNoYXJhY3RlciBhcyBwb2ludGVkIG91dCBi
eSBBbm5lIHZhbiBLZXN0ZXJlbgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6cGFy
c2VDbGFzc0F0dHJpYnV0ZSk6IE1vdmVkIChhbmQgYWRhcHRlZCkgZnJvbSBOYW1lZE1hcHBlZEF0
dHJNYXAKKyAgICAgICAgKiBkb20vQ2xhc3NOYW1lTGlzdC5oOiBDb3BpZWQgZnJvbSBXZWJDb3Jl
L2RvbS9BdG9taWNTdHJpbmdMaXN0LmguCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0
OjpDbGFzc05hbWVMaXN0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFt
ZUxpc3Q6On5DbGFzc05hbWVMaXN0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNs
YXNzTmFtZUxpc3Q6Om5leHQpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NO
YW1lTGlzdDo6c2V0TmV4dCk6IE5hbWUgY2hhbmdlCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05h
bWVMaXN0OjpzdHJpbmcpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1l
TGlzdDo6c2V0U3RyaW5nKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFt
ZUxpc3Q6OmNsb25lKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxp
c3Q6OmNsZWFyKTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOiBBZGRlZAor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOiBBZGRlZCB0aGUgbmV3IGZ1bmN0aW9ucworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5pZGw6IEFkZGVkIHRoZSBuZXcgZnVuY3Rpb25zCisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6Q2xhc3NO
b2RlTGlzdCk6IE5ldyBOb2RlTGlzdCBzdWJjbGFzcyB0aGF0IG1hdGNoZXMgYnkgY2xhc3MgbmFt
ZXMKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTm9kZUxpc3Q6Omxlbmd0aCk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGFzc05vZGVMaXN0OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTm9k
ZUxpc3Q6Om5vZGVNYXRjaGVzKTogQ2hlY2sgdGhlIGNsYXNzIG5hbWUgdXNpbmcgQ2xhc3NOYW1l
TGlzdCdzIG5ldyBjb250YWlucygpCisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRDbGFz
c0xpc3QpOiBDaGFuZ2UgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0CisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKTogQWRkZWQKKyAgICAg
ICAgKiBkb20vRWxlbWVudC5oOiBBZGRlZCB0aGUgbmV3IGZ1bmN0aW9ucworICAgICAgICAqIGRv
bS9FbGVtZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMKKyAgICAgICAgKiBkb20vTmFt
ZWRNYXBwZWRBdHRyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTWFwcGVkQXR0ck1h
cDo6cGFyc2VDbGFzc0F0dHJpYnV0ZSk6IE1vdmUgYWxsIHRoZSBsb2dpYyBoZXJlIHRvIENsYXNz
TmFtZUxpc3Qgc28gaXQgY2FuIGJlIHNoYXJlZAorICAgICAgICAqIGRvbS9OYW1lZE1hcHBlZEF0
dHJNYXAuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTWFwcGVkQXR0ck1hcDo6Z2V0Q2xhc3NM
aXN0KTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAorICAgICAgICAq
IGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6
OmdldENsYXNzTGlzdCk6IENoYW5nZSBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QK
KyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL1BsYXRm
b3JtU3RyaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6OmlzTG93ZXIpOiBBZGRlZAor
CiAyMDA3LTEwLTAxICBPbGl2ZXIgSHVudCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgTWFyay4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zNjMsNiArMzYzLDggQEAKIAkJNTFG
MTFFMTUwQTQ4QzI5MjAwMzRBMjRFIC8qIFNRTFRyYW5zYWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjExRTE0MEE0OEMyOTIwMDM0QTI0
RSAvKiBTUUxUcmFuc2FjdGlvbi5jcHAgKi87IH07CiAJCTU1MEEwQkM5MDg1RjYwMzkwMDczNTNE
NiAvKiBRdWFsaWZpZWROYW1lLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDU1MEEwQkM3MDg1RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmNw
cCAqLzsgfTsKIAkJNTUwQTBCQ0EwODVGNjAzOTAwNzM1M0Q2IC8qIFF1YWxpZmllZE5hbWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU1MEEwQkM4MDg1
RjYwMzkwMDczNTNENiAvKiBRdWFsaWZpZWROYW1lLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjM0MDk0N0QwQzcyQjM4NzAwRjBDNTk4IC8qIENs
YXNzTmFtZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDYzNDA5NDdCMEM3MkIzODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNjNDNjM4MTcwQ0IyMEZG
NDAwMDM2MjdDIC8qIENsYXNzTmFtZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNjM0MDk0N0MwQzcyQjM4NjAwRjBDNTk4IC8qIENsYXNzTmFt
ZUxpc3QuY3BwICovOyB9OwogCQk2NTBFM0Y2QTBBRjZDMTY4MDAxRkEzQUQgLyogUmVzb3VyY2VS
ZXF1ZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNjUwRTNGNjgwQUY2QzE2ODAwMUZBM0FEIC8qIFJlc291cmNlUmVxdWVzdE1hYy5tbSAqLzsg
fTsKIAkJNjUwRjUzREMwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDY1MEY1M0RCMDlEMTVEREEwMEM5
QjBDOCAvKiBDU1NHcmFtbWFyLmggKi87IH07CiAJCTY1MEY1M0REMDlEMTVEREYwMEM5QjBDOCAv
KiBDU1NHcmFtbWFyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDY1NjU4MTQ0MDlEMTMwNDMwMDBFNjFENyAvKiBDU1NHcmFtbWFyLmNwcCAqLzsgfTsK
QEAgLTE2MjIsNyArMTYyNCw2IEBACiAJCTkzRjE5OUJEMDgyNDVFNTkwMDFFOUFCQyAvKiBBWE9i
amVjdENhY2hlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1NTk5OEE1QzA1MkI1OUNDMDAxN0E2QzEgLyogQVhPYmplY3RDYWNoZS5oICovOyB9OwogCQk5
M0YxOTlCRTA4MjQ1RTU5MDAxRTlBQkMgLyogQmxvY2tFeGNlcHRpb25zLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA2NUE2NDBGMDA1MzNCQjFGMDA4NUU3
NzcgLyogQmxvY2tFeGNlcHRpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5QzIwODI0NUU1OTAwMUU5QUJDIC8qIFdlYkNvcmVLZXlH
ZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDg0QjJCMUY3MDU2QkVGM0EwMEQyQjc3MSAvKiBXZWJDb3JlS2V5R2VuZXJhdG9yLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTNGMTk5Q0YwODI0
NUU1OTAwMUU5QUJDIC8qIEF0b21pY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDM0IzNjQ3MDVDOUQ1RTIwMEU0MjkwMiAvKiBBdG9t
aWNTdHJpbmdMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKIAkJOTNGMTk5REUwODI0NUU1OTAwMUU5QUJDIC8qIFBvc2l0aW9uLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCRTkxRkM4QjA2MTMzNjY2MDA1
RTM3OTAgLyogUG9zaXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQk5M0YxOTlFNTA4MjQ1RTU5MDAxRTlBQkMgLyogSFRNTENhbnZhc0VsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjZB
M0Q2MDY2M0JGMDQwMDREMjkxOSAvKiBIVE1MQ2FudmFzRWxlbWVudC5oICovOyB9OwogCQk5M0Yx
OTlFNzA4MjQ1RTU5MDAxRTlBQkMgLyogQ2xpcGJvYXJkTWFjLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAyRDkwNjYwQjA2NjVEOTM3MDA2QjZGMUEgLyog
Q2xpcGJvYXJkTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKQEAgLTQzNTQsNiArNDM1NSw4IEBACiAJCTU1OTk4QTVCMDUyQjU5Q0MwMDE3QTZDMSAv
KiBXZWJDb3JlQVhPYmplY3QubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJDb3JlQVhPYmplY3QubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTk5OEE1QzA1MkI1
OUNDMDAxN0E2QzEgLyogQVhPYmplY3RDYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWE9iamVjdENhY2hlLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQk1NTk5OEE1RDA1MkI1
OUNDMDAxN0E2QzEgLyogQVhPYmplY3RDYWNoZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEFYT2JqZWN0Q2FjaGVNYWMubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRoID0gODsgdXNlc1RhYnMgPSAwOyB9Owor
CQk2MzQwOTQ3QjBDNzJCMzg2MDBGMEM1OTggLyogQ2xhc3NOYW1lTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05hbWVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTYzNDA5NDdDMEM3MkIzODYwMEYwQzU5OCAvKiBDbGFzc05hbWVMaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTmFtZUxpc3QuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk2NTBFM0Y2ODBBRjZDMTY4MDAxRkEzQUQg
LyogUmVzb3VyY2VSZXF1ZXN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJlc291cmNlUmVxdWVzdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNjUwRjUzREIwOUQxNUREQTAwQzlCMEM4IC8qIENTU0dyYW1tYXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENTU0dyYW1tYXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNjUxODg4ODYwQUZGM0JGNzAwMTY0NzIwIC8qIFJlc291cmNlRXJyb3IuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlc291cmNlRXJyb3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzA2OSw3ICs3MDcyLDYgQEAKIAkJQkMz
MDVDNzcwQzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMwNUM3ODBDMDc2QkIzMDBDRDIwRjAgLyog
SlNIVE1MT2JqZWN0RWxlbWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNIVE1MT2JqZWN0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzMw
NUNBMzBDMDc4MUJCMDBDRDIwRjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxPYmplY3RFbGVtZW50Q3Vz
dG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQkMzQjM2NDcwNUM5RDVFMjAw
RTQyOTAyIC8qIEF0b21pY1N0cmluZ0xpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5kZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQXRvbWljU3RyaW5nTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB0YWJXaWR0aCA9IDg7IHVzZXNUYWJzID0gMDsgfTsKIAkJQkMzQzM5QjQwQzBE
M0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBKU01lZGlhTGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUJDM0MzOUI1MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRpYUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQkMzRkNBQTgwQUMzREI1ODAwQkE1NEFEIC8qIFBsYXRmb3JtU2Nyb2xsQmFy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVNjcm9sbEJhci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTEyNTQsNyArMTEyNTYsOCBAQAogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKIAkJCQlBNzg0OTQxQTBCNUZFNTA3MDAx
RTIzN0EgLyogQ2xpcGJvYXJkLmNwcCAqLywKLQkJCQlCQzNCMzY0NzA1QzlENUUyMDBFNDI5MDIg
LyogQXRvbWljU3RyaW5nTGlzdC5oICovLAorCQkJCTYzNDA5NDdCMEM3MkIzODYwMEYwQzU5OCAv
KiBDbGFzc05hbWVMaXN0LmggKi8sCisJCQkJNjM0MDk0N0MwQzcyQjM4NjAwRjBDNTk4IC8qIENs
YXNzTmFtZUxpc3QuY3BwICovLAogCQkJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRy
LmNwcCAqLywKIAkJCQlBOEM0QTdGQjA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5oICovLAogCQkJ
CTkzRUVDMUU1MDlDMjg3NzcwMEM1MTVEMSAvKiBBdHRyLmlkbCAqLywKQEAgLTExNDU0LDcgKzEx
NDU3LDYgQEAKIAkJCQk5M0YxOTlCRDA4MjQ1RTU5MDAxRTlBQkMgLyogQVhPYmplY3RDYWNoZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhj
ZXB0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTNGMTk5QzIwODI0NUU1OTAwMUU5QUJDIC8q
IFdlYkNvcmVLZXlHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovLAotCQkJCTkzRjE5OUNGMDgyNDVF
NTkwMDFFOUFCQyAvKiBBdG9taWNTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk5M0Yx
OTlERTA4MjQ1RTU5MDAxRTlBQkMgLyogUG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
RjE5OUU1MDgyNDVFNTkwMDFFOUFCQyAvKiBIVE1MQ2FudmFzRWxlbWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTNGMTk5RTcwODI0NUU1OTAwMUU5QUJDIC8qIENsaXBib2FyZE1hYy5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMjk1NCw2ICsxMjk1Niw3IEBACiAJCQkJMEYzMUNCRjkyQjY1NDczMEJB
MDUzNUU4IC8qIEJpZGlDb250ZXh0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDMyRTg0NzBDNTE0
OTM4MDBCMTUwMEYgLyogR0NDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRCM0Y3
MzBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNjM0
MDk0N0QwQzcyQjM4NzAwRjBDNTk4IC8qIENsYXNzTmFtZUxpc3QuaCBpbiBIZWFkZXJzICovLAog
CQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBDb2xvck1hYy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNTFFMUVDQjMwQzkxQzU1NjAwREMyNTVCIC8qIEF1dG9kcmFpbmVkUG9vbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJNTFFMUVDQjQwQzkxQzU1NjAwREMyNTVCIC8qIFRocmVhZGluZy5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0xNDYzNyw2ICsxNDY0MCw3IEBACiAJCQkJQjJBRTlCOUQwQzNBRjI3
NDAwRjIzRjdGIC8qIERPTVNWR1RleHRQYXRoRWxlbWVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CUFBNDAzODkwMEM0QzBEOEIwMERCNTZEQyAvKiBTVkdWaWV3U3BlYy5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlCMkNDRUM0NzBDNkNBOUYxMDA2QTU0MjQgLyogUmVuZGVyU1ZHVmlld3BvcnRDb250
YWluZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNjNDNjM4MTcwQ0IyMEZGNDAwMDM2MjdDIC8q
IENsYXNzTmFtZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3JlL2Nzcy9DU1NT
dHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcAkocmV2aXNpb24gMjU5MDkpCisrKyBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk0LDcgKzM5NCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6bWF0Y2hSdWxlcyhDU1NSdWwKICAgICBpZiAoZWxlbWVudC0+aGFzSUQoKSkKICAgICAg
ICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldElEUnVsZXMoZWxlbWVudC0+Z2V0SURBdHRy
aWJ1dGUoKS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAgICAgaWYg
KGVsZW1lbnQtPmhhc0NsYXNzKCkpIHsKLSAgICAgICAgZm9yIChjb25zdCBBdG9taWNTdHJpbmdM
aXN0KiBzaW5nbGVDbGFzcyA9IGVsZW1lbnQtPmdldENsYXNzTGlzdCgpOyBzaW5nbGVDbGFzczsg
c2luZ2xlQ2xhc3MgPSBzaW5nbGVDbGFzcy0+bmV4dCgpKQorICAgICAgICBmb3IgKGNvbnN0IENs
YXNzTmFtZUxpc3QqIHNpbmdsZUNsYXNzID0gZWxlbWVudC0+Z2V0Q2xhc3NMaXN0KCk7IHNpbmds
ZUNsYXNzOyBzaW5nbGVDbGFzcyA9IHNpbmdsZUNsYXNzLT5uZXh0KCkpCiAgICAgICAgICAgICBt
YXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0Q2xhc3NSdWxlcyhzaW5nbGVDbGFzcy0+c3RyaW5n
KCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwogICAgIH0KICAgICBt
YXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0VGFnUnVsZXMoZWxlbWVudC0+bG9jYWxOYW1lKCku
aW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOwpAQCAtMTM1Niw3ICsxMzU2
LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKAogICAgICAgICBp
ZiAoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpDbGFzcykgewogICAgICAgICAgICAgaWYg
KCFlLT5oYXNDbGFzcygpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
ICAgIGZvciAoY29uc3QgQXRvbWljU3RyaW5nTGlzdCogYyA9IGUtPmdldENsYXNzTGlzdCgpOyBj
OyBjID0gYy0+bmV4dCgpKQorICAgICAgICAgICAgZm9yIChjb25zdCBDbGFzc05hbWVMaXN0KiBj
ID0gZS0+Z2V0Q2xhc3NMaXN0KCk7IGM7IGMgPSBjLT5uZXh0KCkpCiAgICAgICAgICAgICAgICAg
aWYgKGMtPnN0cmluZygpID09IHNlbC0+bV92YWx1ZSkKICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkluZGV4OiBXZWJDb3JlL2RvbS9B
dG9taWNTdHJpbmdMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQXRvbWljU3RyaW5n
TGlzdC5oCShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9tL0F0b21pY1N0cmluZ0xpc3Qu
aAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0vKgotICogVGhpcyBmaWxlIGlzIHBh
cnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RFLgotICoKLSAqIENvcHlyaWdodCAo
QykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVl
IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNl
bnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIK
LSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91
IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lmbmRlZiBBdG9taWNTdHJpbmdMaXN0
X2gKLSNkZWZpbmUgQXRvbWljU3RyaW5nTGlzdF9oCi0KLSNpbmNsdWRlICJBdG9taWNTdHJpbmcu
aCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBBdG9taWNTdHJpbmdMaXN0IHsKLXB1
YmxpYzoKLSAgICBBdG9taWNTdHJpbmdMaXN0KCkgOiBtX25leHQoMCkge30KLSAgICBBdG9taWNT
dHJpbmdMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyLCBBdG9taWNTdHJpbmdMaXN0KiBuID0g
MCkgOiBtX3N0cmluZyhzdHIpLCBtX25leHQobikge30KLSAgICB+QXRvbWljU3RyaW5nTGlzdCgp
IHsgZGVsZXRlIG1fbmV4dDsgfQotICAgIAotICAgIEF0b21pY1N0cmluZ0xpc3QqIG5leHQoKSBj
b25zdCB7IHJldHVybiBtX25leHQ7IH0KLSAgICB2b2lkIHNldE5leHQoQXRvbWljU3RyaW5nTGlz
dCogbikgeyBtX25leHQgPSBuOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IEF0b21p
Y1N0cmluZyYgc3RyKSB7IG1fc3RyaW5nID0gc3RyOyB9Ci0KLSAgICBBdG9taWNTdHJpbmdMaXN0
KiBjbG9uZSgpIHsgcmV0dXJuIG5ldyBBdG9taWNTdHJpbmdMaXN0KG1fc3RyaW5nLCBtX25leHQg
PyBtX25leHQtPmNsb25lKCkgOiAwKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7IG1fc3RyaW5nID0g
bnVsbEF0b207IGRlbGV0ZSBtX25leHQ7IG1fbmV4dCA9IDA7IH0KLSAgICAKLXByaXZhdGU6Ci0g
ICAgQXRvbWljU3RyaW5nIG1fc3RyaW5nOwotICAgIEF0b21pY1N0cmluZ0xpc3QqIG1fbmV4dDsK
LX07Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmNwcAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvZG9tL0NsYXNzTmFtZUxpc3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRmaXNoLm1h
bkBnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRl
bXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDbGFzc05hbWVMaXN0LmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2Jvb2wgQ2xhc3NOYW1lTGlzdDo6Y29udGFpbnMo
Y29uc3QgQXRvbWljU3RyaW5nJiBzdHIpIGNvbnN0IAoreyAKKyAgICBmb3IgKGNvbnN0IENsYXNz
TmFtZUxpc3QgKmNsYXNzTGlzdCA9IHRoaXM7IGNsYXNzTGlzdDsgY2xhc3NMaXN0ID0gY2xhc3NM
aXN0LT5uZXh0KCkpIHsgCisgICAgICAgIGlmIChjbGFzc0xpc3QtPnN0cmluZygpID09IHN0cikg
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgCisgICAgfSAKKyAgICByZXR1cm4gZmFsc2U7IAor
fQorCitpbmxpbmUgc3RhdGljIGJvb2wgaXNDbGFzc1doaXRlc3BhY2UoVUNoYXIgYykKK3sKKyAg
ICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCcg
fHwgYyA9PSAnXGYnOworfQorCit2b2lkIENsYXNzTmFtZUxpc3Q6OnBhcnNlQ2xhc3NBdHRyaWJ1
dGUoY29uc3QgU3RyaW5nJiBjbGFzc1N0ciwgY29uc3QgYm9vbCBpbkNvbXBhdE1vZGUpCit7Cisg
ICAgY2xlYXIoKTsKKyAgICAKKyAgICBTdHJpbmcgY2xhc3NBdHRyID0gaW5Db21wYXRNb2RlID8g
CisgICAgICAgIChjbGFzc1N0ci5pc0xvd2VyKCkgPyBjbGFzc1N0ciA6IGNsYXNzU3RyLmxvd2Vy
KCkpIDoKKyAgICAgICAgY2xhc3NTdHI7CisgICAgCisgICAgQ2xhc3NOYW1lTGlzdCogY3VyciA9
IDA7CisgICAgCisgICAgY29uc3QgVUNoYXIqIHN0ciA9IGNsYXNzQXR0ci5jaGFyYWN0ZXJzKCk7
CisgICAgaW50IGxlbmd0aCA9IGNsYXNzQXR0ci5sZW5ndGgoKTsKKyAgICBpbnQgc3RhcnQgPSAw
OworICAgIAorICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHdoaWxlIChzdGFydCA8IGxlbmd0
aCAmJiBpc0NsYXNzV2hpdGVzcGFjZShzdHJbc3RhcnRdKSkKKyAgICAgICAgICAgICsrc3RhcnQ7
CisgICAgICAgIGlmIChzdGFydCA+PSBsZW5ndGgpCisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgaW50IGVuZCA9IHN0YXJ0ICsgMTsKKyAgICAgICAgd2hpbGUgKGVuZCA8IGxlbmd0aCAmJiAh
aXNDbGFzc1doaXRlc3BhY2Uoc3RyW2VuZF0pKQorICAgICAgICAgICAgKytlbmQ7CisgICAgICAg
IGlmIChjdXJyKSB7CisgICAgICAgICAgICBjdXJyLT5zZXROZXh0KG5ldyBDbGFzc05hbWVMaXN0
KEF0b21pY1N0cmluZyhzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQpKSk7CisgICAgICAgICAgICBj
dXJyID0gY3Vyci0+bmV4dCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHN0
YXJ0ID09IDAgJiYgZW5kID09IGxlbmd0aCkgeworICAgICAgICAgICAgICAgIG1fc3RyaW5nID0g
QXRvbWljU3RyaW5nKGNsYXNzQXR0cik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBtX3N0cmluZyA9IEF0b21pY1N0cmluZyhzdHIgKyBzdGFydCwg
ZW5kIC0gc3RhcnQpOworICAgICAgICAgICAgY3VyciA9IHRoaXM7CisgICAgICAgIH0KKyAgICAg
ICAgc3RhcnQgPSBlbmQgKyAxOworICAgIH0KK30KKyAgICAKK30KSW5kZXg6IFdlYkNvcmUvZG9t
L0NsYXNzTmFtZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0
LmgJKHJldmlzaW9uIDI1OTA5KQkoZnJvbSBXZWJDb3JlL2RvbS9BdG9taWNTdHJpbmdMaXN0Lmg6
MjU5MDkpCisrKyBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw1MSBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1wbGVt
ZW50YXRpb24gZm9yIEtERS4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBwbGUgQ29tcHV0
ZXIsIEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKgorICovCisKKyNpZm5kZWYgQXRvbWljU3RyaW5nTGlzdF9oCisjZGVmaW5lIEF0b21pY1N0
cmluZ0xpc3RfaAorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQXRvbWljU3RyaW5nTGlzdCB7CitwdWJsaWM6CisgICAgQXRvbWljU3Ry
aW5nTGlzdCgpIDogbV9uZXh0KDApIHt9CisgICAgQXRvbWljU3RyaW5nTGlzdChjb25zdCBBdG9t
aWNTdHJpbmcmIHN0ciwgQXRvbWljU3RyaW5nTGlzdCogbiA9IDApIDogbV9zdHJpbmcoc3RyKSwg
bV9uZXh0KG4pIHt9CisgICAgfkF0b21pY1N0cmluZ0xpc3QoKSB7IGRlbGV0ZSBtX25leHQ7IH0K
KyAgICAKKyAgICBBdG9taWNTdHJpbmdMaXN0KiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0
OyB9CisgICAgdm9pZCBzZXROZXh0KEF0b21pY1N0cmluZ0xpc3QqIG4pIHsgbV9uZXh0ID0gbjsg
fQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJp
bmc7IH0KKyAgICB2b2lkIHNldFN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHN0cikgeyBtX3N0
cmluZyA9IHN0cjsgfQorCisgICAgQXRvbWljU3RyaW5nTGlzdCogY2xvbmUoKSB7IHJldHVybiBu
ZXcgQXRvbWljU3RyaW5nTGlzdChtX3N0cmluZywgbV9uZXh0ID8gbV9uZXh0LT5jbG9uZSgpIDog
MCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX3N0cmluZyA9IG51bGxBdG9tOyBkZWxldGUgbV9u
ZXh0OyBtX25leHQgPSAwOyB9CisgICAgCitwcml2YXRlOgorICAgIEF0b21pY1N0cmluZyBtX3N0
cmluZzsKKyAgICBBdG9taWNTdHJpbmdMaXN0KiBtX25leHQ7Cit9OworCit9CisKKyNlbmRpZgpJ
bmRleDogV2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL0NsYXNzTmFtZUxpc3QuaAkocmV2aXNpb24gMjU5MDkpCisrKyBXZWJDb3JlL2RvbS9DbGFz
c05hbWVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1LDM3ICsxNSw0MyBAQAogICoKICAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKICAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEz
MDcsIFVTQS4KICAqCiAgKi8KIAotI2lmbmRlZiBBdG9taWNTdHJpbmdMaXN0X2gKLSNkZWZpbmUg
QXRvbWljU3RyaW5nTGlzdF9oCisjaWZuZGVmIENsYXNzTmFtZUxpc3RfaAorI2RlZmluZSBDbGFz
c05hbWVMaXN0X2gKIAogI2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLWNsYXNzIEF0b21pY1N0cmluZ0xpc3QgewotcHVibGljOgotICAgIEF0b21pY1N0
cmluZ0xpc3QoKSA6IG1fbmV4dCgwKSB7fQotICAgIEF0b21pY1N0cmluZ0xpc3QoY29uc3QgQXRv
bWljU3RyaW5nJiBzdHIsIEF0b21pY1N0cmluZ0xpc3QqIG4gPSAwKSA6IG1fc3RyaW5nKHN0ciks
IG1fbmV4dChuKSB7fQotICAgIH5BdG9taWNTdHJpbmdMaXN0KCkgeyBkZWxldGUgbV9uZXh0OyB9
CiAgICAgCi0gICAgQXRvbWljU3RyaW5nTGlzdCogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4
dDsgfQotICAgIHZvaWQgc2V0TmV4dChBdG9taWNTdHJpbmdMaXN0KiBuKSB7IG1fbmV4dCA9IG47
IH0KLSAgICBjb25zdCBBdG9taWNTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3Ry
aW5nOyB9Ci0gICAgdm9pZCBzZXRTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzdHIpIHsgbV9z
dHJpbmcgPSBzdHI7IH0KLQotICAgIEF0b21pY1N0cmluZ0xpc3QqIGNsb25lKCkgeyByZXR1cm4g
bmV3IEF0b21pY1N0cmluZ0xpc3QobV9zdHJpbmcsIG1fbmV4dCA/IG1fbmV4dC0+Y2xvbmUoKSA6
IDApOyB9Ci0gICAgdm9pZCBjbGVhcigpIHsgbV9zdHJpbmcgPSBudWxsQXRvbTsgZGVsZXRlIG1f
bmV4dDsgbV9uZXh0ID0gMDsgfQorICAgIGNsYXNzIERvY3VtZW50OwogICAgIAorICAgIGNsYXNz
IENsYXNzTmFtZUxpc3QgeworcHVibGljOgorICAgICAgICBDbGFzc05hbWVMaXN0KCkgOiBtX25l
eHQoMCkge30KKyAgICAgICAgQ2xhc3NOYW1lTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIHN0ciwg
Q2xhc3NOYW1lTGlzdCogbiA9IDApIDogbV9zdHJpbmcoc3RyKSwgbV9uZXh0KG4pIHt9CisgICAg
ICAgIH5DbGFzc05hbWVMaXN0KCkgeyBkZWxldGUgbV9uZXh0OyB9CisgICAgICAgIAorICAgICAg
ICBDbGFzc05hbWVMaXN0KiBuZXh0KCkgY29uc3QgeyByZXR1cm4gbV9uZXh0OyB9CisgICAgICAg
IHZvaWQgc2V0TmV4dChDbGFzc05hbWVMaXN0KiBuKSB7IG1fbmV4dCA9IG47IH0KKyAgICAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQor
ICAgICAgICB2b2lkIHNldFN0cmluZyhjb25zdCBBdG9taWNTdHJpbmcmIHN0cikgeyBtX3N0cmlu
ZyA9IHN0cjsgfQorICAgICAgICAgICAgICAgIAorICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0
IEF0b21pY1N0cmluZyYpIGNvbnN0OworCisgICAgICAgIHZvaWQgcGFyc2VDbGFzc0F0dHJpYnV0
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBib29sKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAg
Q2xhc3NOYW1lTGlzdCogY2xvbmUoKSB7IHJldHVybiBuZXcgQ2xhc3NOYW1lTGlzdChtX3N0cmlu
ZywgbV9uZXh0ID8gbV9uZXh0LT5jbG9uZSgpIDogMCk7IH0KKyAgICAgICAgdm9pZCBjbGVhcigp
IHsgbV9zdHJpbmcgPSBudWxsQXRvbTsgZGVsZXRlIG1fbmV4dDsgbV9uZXh0ID0gMDsgfQorICAg
ICAgICAKIHByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5nIG1fc3RyaW5nOwotICAgIEF0b21pY1N0
cmluZ0xpc3QqIG1fbmV4dDsKLX07Ci0KKyAgICAgICAgQXRvbWljU3RyaW5nIG1fc3RyaW5nOwor
ICAgICAgICBDbGFzc05hbWVMaXN0KiBtX25leHQ7CisgICAgfTsKKyAgICAKIH0KIAogI2VuZGlm
CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQyMSw2ICszNDIxLDExIEBAIFBhc3NSZWZQdHI8TmFt
ZU5vZGVMaXN0PiBEb2N1bWVudDo6Z2V0RWwKICAgICByZXR1cm4gbmV3IE5hbWVOb2RlTGlzdCh0
aGlzLCBlbGVtZW50TmFtZSk7CiB9CiAKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50Ojpn
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyAmY2xhc3NOYW1lKQoreworICAgIHJl
dHVybiBkb2N1bWVudEVsZW1lbnQoKS0+Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShjbGFzc05hbWUp
OworfQorCiB2b2lkIERvY3VtZW50OjpmaW5pc2hlZFBhcnNpbmcoKQogewogICAgIHNldFBhcnNp
bmcoZmFsc2UpOwpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxMiw2ICsyMTIsNyBAQCBwdWJsaWM6CiAgICAg
UGFzc1JlZlB0cjxOb2RlPiBhZG9wdE5vZGUoUGFzc1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2Vw
dGlvbkNvZGUmKTsKICAgICAKICAgICBQYXNzUmVmUHRyPE5hbWVOb2RlTGlzdD4gZ2V0RWxlbWVu
dHNCeU5hbWUoY29uc3QgU3RyaW5nJiBlbGVtZW50TmFtZSk7CisgICAgUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcgJmNsYXNzTmFtZSk7CiAK
ICAgICAvLyBBY3R1YWxseSBwYXJ0IG9mIEpTSFRNTERvY3VtZW50LCBidXQgdXNlZCBmb3IgZ2l2
aW5nIFhNTCBkb2N1bWVudHMgYSB3aW5kb3cgdGl0bGUgYXMgd2VsbAogICAgIFN0cmluZyB0aXRs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGl0bGU7IH0KSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwJKHJldmlzaW9uIDI1
OTA5KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xODIs
NiArMTgyLDggQEAgbW9kdWxlIGNvcmUgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gYXV0aG9yT25seSk7CiAj
ZW5kaWYKIAorICAgICAgICAvL0hUTUwgNQorICAgICAgICBOb2RlTGlzdCAgICAgICAgICAgIGdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoaW4gRE9NU3RyaW5nIHRhZ25hbWUpOwogICAgIH07CiAKIH0K
SW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDggKzEsOSBAQAotLyoKKyAgICAvKgogICogQ29weXJpZ2h0
IChDKSAxOTk5IExhcnMgS25vbGwgKGtub2xsQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDE5
OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIw
MDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJr
IE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNyBEYXZpZCBT
bWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqICAgICAgICAg
ICAoQykgMjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3ZWJraXQub3JnKQogICoKQEAgLTQyLDYgKzQz
LDggQEAKICNpbmNsdWRlICJUZXh0SXRlcmF0b3IuaCIKICNpbmNsdWRlICJUZXh0U3RyZWFtLmgi
CiAjaW5jbHVkZSAiWE1MTmFtZXMuaCIKKyNpbmNsdWRlICJOb2RlTGlzdC5oIgorI2luY2x1ZGUg
IkNsYXNzTmFtZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC05MSw2ICs5NCw1
NiBAQCB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6cmVzZXRDb21wdXRlZFN0eWxlCiAgICAgbV9jb21w
dXRlZFN0eWxlID0gMDsKIH0KIAorLy8gTm9kZUxpc3QgdGhhdCBsaW1pdHMgdG8gYSBwYXJ0aWN1
bGFyIGNsYXNzLgorY2xhc3MgQ2xhc3NOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CitwdWJs
aWM6CisgICAgQ2xhc3NOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlLCBjb25zdCBB
dG9taWNTdHJpbmcmIGNsYXNzTmFtZSk7CisgICAgCisgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5n
dGgoKSBjb25zdDsKKyAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0
OworICAgIAorcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoTm9kZSAqKSBj
b25zdDsKKyAgICAKKyAgICBBdG9taWNTdHJpbmcgbV9uYW1lc3BhY2VVUkk7CisgICAgQ2xhc3NO
YW1lTGlzdCBtX2NsYXNzTGlzdDsKK307CisKK0NsYXNzTm9kZUxpc3Q6OkNsYXNzTm9kZUxpc3Qg
KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0cmluZyYgY2xhc3NOYW1l
KQorOiBOb2RlTGlzdChyb290Tm9kZSksIG1fbmFtZXNwYWNlVVJJKG51bGxBdG9tKQoreworICAg
IG1fY2xhc3NMaXN0ID0gQ2xhc3NOYW1lTGlzdCgpOworICAgIG1fY2xhc3NMaXN0LnBhcnNlQ2xh
c3NBdHRyaWJ1dGUoY2xhc3NOYW1lLCBtX3Jvb3ROb2RlLT5kb2N1bWVudCgpLT5pbkNvbXBhdE1v
ZGUoKSk7Cit9CisKK3Vuc2lnbmVkIENsYXNzTm9kZUxpc3Q6Omxlbmd0aCgpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuIHJlY3Vyc2l2ZUxlbmd0aCgpOworfQorCitOb2RlKiBDbGFzc05vZGVMaXN0Ojpp
dGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIHJldHVybiByZWN1cnNpdmVJdGVtKGlu
ZGV4KTsKK30KKworYm9vbCBDbGFzc05vZGVMaXN0Ojpub2RlTWF0Y2hlcyhOb2RlKiB0ZXN0Tm9k
ZSkgY29uc3QKK3sKKyAgICBpZiAoIXRlc3ROb2RlLT5pc0VsZW1lbnROb2RlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBpZiAoIXRlc3ROb2RlLT5oYXNDbGFzcygpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgY29uc3QgQ2xhc3NOYW1lTGlzdCogY2xhc3Nl
cyA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPih0ZXN0Tm9kZSktPmdldENsYXNzTGlzdCgpOworICAg
IAorICAgIGZvciAoY29uc3QgQ2xhc3NOYW1lTGlzdCogYyA9ICZtX2NsYXNzTGlzdDsgYzsgYyA9
IGMtPm5leHQoKSkgeworICAgICAgICBpZiAoIWNsYXNzZXMtPmNvbnRhaW5zKGMtPnN0cmluZygp
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHRy
dWU7Cit9CisKIEVsZW1lbnQ6OkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgcU5hbWUsIERv
Y3VtZW50ICpkb2MpCiAgICAgOiBDb250YWluZXJOb2RlKGRvYykKICAgICAsIG1fdGFnTmFtZShx
TmFtZSkKQEAgLTE4Niw3ICsyMzksNyBAQCBOb2RlOjpOb2RlVHlwZSBFbGVtZW50Ojpub2RlVHlw
ZSgpIGNvbnN0CiAgICAgcmV0dXJuIEVMRU1FTlRfTk9ERTsKIH0KIAotY29uc3QgQXRvbWljU3Ry
aW5nTGlzdCogRWxlbWVudDo6Z2V0Q2xhc3NMaXN0KCkgY29uc3QKK2NvbnN0IENsYXNzTmFtZUxp
c3QqIEVsZW1lbnQ6OmdldENsYXNzTGlzdCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIDA7CiB9CkBA
IC0xMDkyLDYgKzExNDUsMTEgQEAgUmVuZGVyU3R5bGUqIEVsZW1lbnQ6OmNvbXB1dGVkU3R5bGUo
KQogICAgIHJldHVybiByZC0+bV9jb21wdXRlZFN0eWxlOwogfQogCitQYXNzUmVmUHRyPE5vZGVM
aXN0PiBFbGVtZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyYgY2xhc3NO
YW1lKQoreworICAgIHJldHVybiBuZXcgQ2xhc3NOb2RlTGlzdCh0aGlzLCBjbGFzc05hbWUpOwor
fQorCiB2b2lkIEVsZW1lbnQ6OmNhbmNlbEZvY3VzQXBwZWFyYW5jZVVwZGF0ZSgpCiB7CiAgICAg
aWYgKEVsZW1lbnRSYXJlRGF0YSogcmQgPSByYXJlRGF0YSgpKQpAQCAtMTEwMCw0ICsxMTU4LDUg
QEAgdm9pZCBFbGVtZW50OjpjYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdAogICAgICAgICBkb2N1
bWVudCgpLT5jYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdGUoKTsKIH0KIAorCiB9CkluZGV4OiBX
ZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5o
CShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNyArMzEsNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIEF0b21p
Y1N0cmluZ0xpc3Q7CitjbGFzcyBDbGFzc05hbWVMaXN0OwogY2xhc3MgQXR0cjsKIGNsYXNzIEF0
dHJpYnV0ZTsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CkBAIC00NCw3ICs0NCw3IEBAIHB1
YmxpYzoKICAgICB+RWxlbWVudCgpOwogCiAgICAgLy8gVXNlZCB0byBxdWlja2x5IGRldGVybWlu
ZSB3aGV0aGVyIG9yIG5vdCBhbiBlbGVtZW50IGhhcyBhIGdpdmVuIENTUyBjbGFzcy4KLSAgICB2
aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZ0xpc3QqIGdldENsYXNzTGlzdCgpIGNvbnN0OworICAg
IHZpcnR1YWwgY29uc3QgQ2xhc3NOYW1lTGlzdCogZ2V0Q2xhc3NMaXN0KCkgY29uc3Q7CiAgICAg
Y29uc3QgQXRvbWljU3RyaW5nJiBnZXRJREF0dHJpYnV0ZSgpIGNvbnN0OwogICAgIGJvb2wgaGFz
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNT
dHJpbmcmIGdldEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CkBAIC0xNjAs
NiArMTYwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmb2N1cyhib29sIHJlc3RvcmVQ
cmV2aW91c1NlbGVjdGlvbiA9IHRydWUpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVGb2N1c0Fw
cGVhcmFuY2UoYm9vbCByZXN0b3JlUHJldmlvdXNTZWxlY3Rpb24pOwogICAgIHZvaWQgYmx1cigp
OworICAgIAorICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlDbGFzc05hbWUo
Y29uc3QgU3RyaW5nJik7CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdmlydHVhbCB2b2lkIGR1bXAo
VGV4dFN0cmVhbSogLCBEZXByZWNhdGVkU3RyaW5nIGluZCA9ICIiKSBjb25zdDsKSW5kZXg6IFdl
YkNvcmUvZG9tL0VsZW1lbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0VsZW1lbnQu
aWRsCShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9tL0VsZW1lbnQuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC05NCw2ICs5NCw5IEBAIG1vZHVsZSBjb3JlIHsKICAgICAgICAgdm9pZCBzY3Jv
bGxJbnRvVmlld0lmTmVlZGVkKGluIFtPcHRpb25hbF0gYm9vbGVhbiBjZW50ZXJJZk5lZWRlZCk7
CiAgICAgICAgIHZvaWQgc2Nyb2xsQnlMaW5lcyhpbiBsb25nIGxpbmVzKTsKICAgICAgICAgdm9p
ZCBzY3JvbGxCeVBhZ2VzKGluIGxvbmcgcGFnZXMpOworICAgICAgICAKKyAgICAgICAgLy8gSFRN
TCA1CisgICAgICAgIE5vZGVMaXN0IGdldEVsZW1lbnRzQnlDbGFzc05hbWUoaW4gRE9NU3RyaW5n
IG5hbWUpOwogCiAjaWYgZGVmaW5lZChMQU5HVUFHRV9PQkpFQ1RJVkVfQykKICAgICAgICAgLy8g
T2JqZWN0aXZlLUMgZXh0ZW5zaW9ucwpJbmRleDogV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRy
TWFwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9OYW1lZE1hcHBlZEF0dHJNYXAuY3Bw
CShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMsNiArMyw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50
dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0
ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxs
ZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAo
Y2F0ZmlzaC5tYW5AZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2
LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCkBAIC03
Niw0OCArNzcsMTQgQEAgYm9vbCBOYW1lZE1hcHBlZEF0dHJNYXA6Om1hcHNFcXVpdmFsZW50KAog
ICAgIHJldHVybiB0cnVlOwogfQogCi1pbmxpbmUgc3RhdGljIGJvb2wgaXNDbGFzc1doaXRlc3Bh
Y2UoVUNoYXIgYykKLXsKLSAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXHInIHx8IGMgPT0g
J1xuJyB8fCBjID09ICdcdCc7Ci19Ci0KLXZvaWQgTmFtZWRNYXBwZWRBdHRyTWFwOjpwYXJzZUNs
YXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYgY2xhc3NTdHIpCi17Ci0gICAgbV9jbGFzc0xpc3Qu
Y2xlYXIoKTsKLSAgICBpZiAoIWVsZW1lbnQtPmhhc0NsYXNzKCkpCit2b2lkIE5hbWVkTWFwcGVk
QXR0ck1hcDo6cGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGNsYXNzU3RyKSAKK3sg
CisgICAgaWYgKCFlbGVtZW50LT5oYXNDbGFzcygpKSB7IAorICAgICAgICBtX2NsYXNzTGlzdC5j
bGVhcigpOyAKICAgICAgICAgcmV0dXJuOwotICAgIAotICAgIFN0cmluZyBjbGFzc0F0dHIgPSBl
bGVtZW50LT5kb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSA/IAotICAgICAgICAoY2xhc3NTdHIu
aW1wbCgpLT5pc0xvd2VyKCkgPyBjbGFzc1N0ciA6IFN0cmluZyhjbGFzc1N0ci5pbXBsKCktPmxv
d2VyKCkpKSA6Ci0gICAgICAgIGNsYXNzU3RyOwotICAgIAotICAgIEF0b21pY1N0cmluZ0xpc3Qq
IGN1cnIgPSAwOwotICAgIAotICAgIGNvbnN0IFVDaGFyKiBzdHIgPSBjbGFzc0F0dHIuY2hhcmFj
dGVycygpOwotICAgIGludCBsZW5ndGggPSBjbGFzc0F0dHIubGVuZ3RoKCk7Ci0gICAgaW50IHNQ
b3MgPSAwOwotCi0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgd2hpbGUgKHNQb3MgPCBsZW5n
dGggJiYgaXNDbGFzc1doaXRlc3BhY2Uoc3RyW3NQb3NdKSkKLSAgICAgICAgICAgICsrc1BvczsK
LSAgICAgICAgaWYgKHNQb3MgPj0gbGVuZ3RoKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
IGludCBlUG9zID0gc1BvcyArIDE7Ci0gICAgICAgIHdoaWxlIChlUG9zIDwgbGVuZ3RoICYmICFp
c0NsYXNzV2hpdGVzcGFjZShzdHJbZVBvc10pKQotICAgICAgICAgICAgKytlUG9zOwotICAgICAg
ICBpZiAoY3VycikgewotICAgICAgICAgICAgY3Vyci0+c2V0TmV4dChuZXcgQXRvbWljU3RyaW5n
TGlzdChBdG9taWNTdHJpbmcoc3RyICsgc1BvcywgZVBvcyAtIHNQb3MpKSk7Ci0gICAgICAgICAg
ICBjdXJyID0gY3Vyci0+bmV4dCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYg
KHNQb3MgPT0gMCAmJiBlUG9zID09IGxlbmd0aCkgewotICAgICAgICAgICAgICAgIG1fY2xhc3NM
aXN0LnNldFN0cmluZyhBdG9taWNTdHJpbmcoY2xhc3NBdHRyKSk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtX2NsYXNzTGlzdC5zZXRTdHJpbmco
QXRvbWljU3RyaW5nKHN0ciArIHNQb3MsIGVQb3MgLSBzUG9zKSk7Ci0gICAgICAgICAgICBjdXJy
ID0gJm1fY2xhc3NMaXN0OwotICAgICAgICB9Ci0gICAgICAgIHNQb3MgPSBlUG9zICsgMTsKLSAg
ICB9CisgICAgfSAKKyAgICBtX2NsYXNzTGlzdC5wYXJzZUNsYXNzQXR0cmlidXRlKGNsYXNzU3Ry
LCBlbGVtZW50LT5kb2N1bWVudCgpLT5pbkNvbXBhdE1vZGUoKSk7IAogfQogCisKIH0KSW5kZXg6
IFdlYkNvcmUvZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
ZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5oCShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9t
L05hbWVkTWFwcGVkQXR0ck1hcC5oCSh3b3JraW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQAogICog
ICAgICAgICAgIChDKSAxOTk5IEFudHRpIEtvaXZpc3RvIChrb2l2aXN0b0BrZGUub3JnKQogICog
ICAgICAgICAgIChDKSAyMDAxIFBldGVyIEtlbGx5IChwbWtAcG9zdC5jb20pCiAgKiAgICAgICAg
ICAgKEMpIDIwMDEgRGlyayBNdWVsbGVyIChtdWVsbGVyQGtkZS5vcmcpCisgKiAgICAgICAgICAg
KEMpIDIwMDcgRGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdtYWlsLmNvbSkKICAqIENvcHlyaWdo
dCAoQykgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBDb21wdXRlciwgSW5jLgogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKQEAgLTI4LDggKzI5LDggQEAKICNkZWZpbmUgTmFtZWRNYXBwZWRBdHRyTWFwX2gKIAog
I2luY2x1ZGUgIk5hbWVkQXR0ck1hcC5oIgotI2luY2x1ZGUgIkF0b21pY1N0cmluZ0xpc3QuaCIK
ICNpbmNsdWRlICJNYXBwZWRBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJDbGFzc05hbWVMaXN0Lmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDIsOCArNDMsOSBAQCBwdWJsaWM6CiAgICAg
CiAgICAgdmlydHVhbCBib29sIGlzTWFwcGVkQXR0cmlidXRlTWFwKCkgY29uc3Q7CiAgICAgCi0g
ICAgdmlydHVhbCB2b2lkIHBhcnNlQ2xhc3NBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBjbGFzc0F0
dHIpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZ0xpc3QqIGdldENsYXNzTGlzdCgpIGNvbnN0IHsg
cmV0dXJuICZtX2NsYXNzTGlzdDsgfQorICAgIHZvaWQgcGFyc2VDbGFzc0F0dHJpYnV0ZShjb25z
dCBTdHJpbmcmKTsKKworICAgIGNvbnN0IENsYXNzTmFtZUxpc3QqIGdldENsYXNzTGlzdCgpIGNv
bnN0IHsgcmV0dXJuICZtX2NsYXNzTGlzdDsgfQogICAgIAogICAgIHZpcnR1YWwgYm9vbCBoYXNN
YXBwZWRBdHRyaWJ1dGVzKCkgY29uc3QgeyByZXR1cm4gbV9tYXBwZWRBdHRyaWJ1dGVDb3VudCA+
IDA7IH0KICAgICB2b2lkIGRlY2xSZW1vdmVkKCkgeyBtX21hcHBlZEF0dHJpYnV0ZUNvdW50LS07
IH0KQEAgLTYwLDcgKzYyLDcgQEAgcHVibGljOgogICAgICAgICB7IHJldHVybiBzdGF0aWNfY2Fz
dDxNYXBwZWRBdHRyaWJ1dGUqPihOYW1lZEF0dHJNYXA6OmdldEF0dHJpYnV0ZUl0ZW0obmFtZSkp
OyB9CiAgICAgCiBwcml2YXRlOgotICAgIEF0b21pY1N0cmluZ0xpc3QgbV9jbGFzc0xpc3Q7Cisg
ICAgQ2xhc3NOYW1lTGlzdCBtX2NsYXNzTGlzdDsKICAgICBpbnQgbV9tYXBwZWRBdHRyaWJ1dGVD
b3VudDsKIH07CiAKSW5kZXg6IFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNTkwOSkKKysr
IFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyAr
MjUxLDcgQEAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIFN0eWxlZEVsZW1lbgogICAgIHJl
dHVybiAwOwogfQogCi1jb25zdCBBdG9taWNTdHJpbmdMaXN0KiBTdHlsZWRFbGVtZW50OjpnZXRD
bGFzc0xpc3QoKSBjb25zdAorY29uc3QgQ2xhc3NOYW1lTGlzdCogU3R5bGVkRWxlbWVudDo6Z2V0
Q2xhc3NMaXN0KCkgY29uc3QKIHsKICAgICByZXR1cm4gbmFtZWRBdHRyTWFwID8gbWFwcGVkQXR0
cmlidXRlcygpLT5nZXRDbGFzc0xpc3QoKSA6IDA7CiB9CkluZGV4OiBXZWJDb3JlL2RvbS9TdHls
ZWRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCShy
ZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNjYsNyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVB
dHRyaWJ1dGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5bGVBdHRyaWJ1dGVJZk5lZWRl
ZCgpIGNvbnN0OwogICAgIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nTGlzdCogZ2V0
Q2xhc3NMaXN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBDbGFzc05hbWVMaXN0KiBnZXRD
bGFzc0xpc3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgYXR0cmlidXRlQ2hhbmdlZChBdHRy
aWJ1dGUqIGF0dHIsIGJvb2wgcHJlc2VydmVEZWNscyA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZv
aWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoTWFwcGVkQXR0cmlidXRlKiBhdHRyKTsKICAgICB2aXJ0
dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVk
QXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1Bs
YXRmb3JtU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVN0
cmluZy5oCShyZXZpc2lvbiAyNTkwOSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1TdHJp
bmcuaAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYgKzExMyw5IEBAIHB1YmxpYzoKICAgICAvLyBS
ZXR1cm5zIGEgbG93ZXJjYXNlL3VwcGVyY2FzZSB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcKICAgICBT
dHJpbmcgbG93ZXIoKSBjb25zdDsKICAgICBTdHJpbmcgdXBwZXIoKSBjb25zdDsKKyAgICAKKyAg
ICBib29sIGlzTG93ZXIoKSBjb25zdAorICAgICAgICB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwt
PmlzTG93ZXIoKSA6IGZhbHNlOyB9CiAKICAgICBTdHJpbmcgc3RyaXBXaGl0ZVNwYWNlKCkgY29u
c3Q7CiAgICAgU3RyaW5nIHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwpJbmRleDogTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2
aXNpb24gMjU5MDkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAwNy0xMC0wMiAgRGF2aWQgU21pdGggIDxjYXRmaXNoLm1hbkBnbWFp
bC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAor
ICAgICAgICAtIHRlc3QgZm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE0OTU1CisgICAgICAgICAgSW1wbGVtZW50IGdldEVsZW1lbnRzQnlDbGFzc05hbWUKKworICAg
ICAgICAqIGZhc3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQ6IEFk
ZGVkIGdldEVsZW1lbnRzQnlDbGFzc05hbWUKKyAgICAgICAgKiBmYXN0L2RvbS9nZXRlbGVtZW50
c2J5Y2xhc3NuYW1lLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0
ZWxlbWVudHNieWNsYXNzbmFtZS5odG1sOiBBZGRlZC4KKwogMjAwNy0xMC0wMSAgT2xpdmVyIEh1
bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJTID0gRXJpYy4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0ZWxlbWVu
dHNieWNsYXNzbmFtZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjYgQEAK
K0xpbmUgMQorTGluZSAyCitMaW5lIDMKKworbGluZSA0CitsaW5lIDUKKworW29iamVjdCBIVE1M
RGl2RWxlbWVudF0sIFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0IEhUTUxEaXZFbGVt
ZW50XSwgbGVuZ3RoOiAzCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2
RWxlbWVudF0sIFtvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0IEhUTUxQYXJhZ3JhcGhF
bGVtZW50XSwgbGVuZ3RoOiA0Citbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1M
RGl2RWxlbWVudF0sIGxlbmd0aDogMgorW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3Qg
SFRNTERpdkVsZW1lbnRdLCBsZW5ndGg6IDIKK2xlbmd0aDogMAorbGVuZ3RoOiAwCitsZW5ndGg6
IDAKK2xlbmd0aDogMAorbGVuZ3RoOiAwCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgbGVuZ3Ro
OiAxCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MUGFyYWdyYXBoRWxlbWVu
dF0sIGxlbmd0aDogMgorW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIGxlbmd0aDogMQorW29iamVj
dCBIVE1MRGl2RWxlbWVudF0sIGxlbmd0aDogMQorbGVuZ3RoOiAwCitsZW5ndGg6IDAKK2xlbmd0
aDogMAorbGVuZ3RoOiAwCitsZW5ndGg6IDAKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0ZWxlbWVudHNieWNsYXNzbmFtZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldGVsZW1lbnRzYnljbGFzc25hbWUuaHRtbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2MSBAQAorPGh0bWw+Cis8Ym9keT4KKzxkaXYgY2xhc3M9Im9uZSI+TGluZSAx
PGRpdiBjbGFzcz0idHdvIj5MaW5lIDI8L2Rpdj48cD5MaW5lIDxpPjM8L2k+PC9wPjwvZGl2Pgor
PGRpdiBpZD0idGVzdCIgY2xhc3M9Im9uZSB0d28iPjxkaXYgY2xhc3M9Im9uZSB0d28iPmxpbmUg
NDwvZGl2PjxwIGNsYXNzPSJ0d28iPmxpbmUgNTwvcD48L2Rpdj4KKzxwPjxvbCBpZD0iY29uc29s
ZSI+PC9vbD48L3A+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKKyAgICBmdW5j
dGlvbiBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQorICAgIAorICAgIE5vZGVMaXN0LnBy
b3RvdHlwZS5kdW1wID0gZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9ICIi
OworICAgICAgICB2YXIgaSA9IDA7CisgICAgICAgIGZvciAoOyBpIDwgdGhpcy5sZW5ndGg7IGkr
KykKKyAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzW2ldICsgIiwgIjsKKyAgICAgICAgcmVzdWx0
ICs9ICJsZW5ndGg6ICIgKyBpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgCisgICAgICAgIHRy
eSB7CisgICAgICAgIAorICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZWxtID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QiKTsKKyAgICAgICAgCisgICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgib25lIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhkb2N1
bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0d28iKS5kdW1wKCkpOworICAgICAgICAgICAg
bG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZSB0d28iKS5kdW1wKCkpOwor
ICAgICAgICAgICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZVx0XHRc
biBcZnR3byIpLmR1bXAoKSk7CisgICAgICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZSgiIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCJvbmV0d28iKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobnVsbCkuZHVtcCgpKTsKKyAgICAgICAgICAg
IGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHVuZGVmaW5lZCkuZHVtcCgpKTsK
KyAgICAgICAgICAgIAorICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCJvbmUiKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCJ0d28iKS5kdW1wKCkpOworICAgICAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKCJvbmUgdHdvIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxvZyhlbG0uZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgib25lXHRcdFxuIFxmdHdvIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxv
ZyhlbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiIikuZHVtcCgpKTsKKyAgICAgICAgICAgIGxv
ZyhlbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgib25ldHdvIikuZHVtcCgpKTsKKyAgICAgICAg
ICAgIGxvZyhlbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpLmR1bXAoKSk7CisgICAgICAgICAg
ICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUobnVsbCkuZHVtcCgpKTsKKyAgICAgICAg
ICAgIGxvZyhlbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh1bmRlZmluZWQpLmR1bXAoKSk7CisK
KyAgICAgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgICAgIGxvZygiRXhjZXB0aW9uOiAiICsg
ZXguZGVzY3JpcHRpb24pOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG9jdW1l
bnQud3JpdGUoIihjYW5ub3QgcnVuIGludGVyYWN0aXZlbHkpIik7CisgICAgfQorPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2lu
ZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI1
OTA5KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDYgKzMxNiw3IEBAIHdpbmRvdy5Eb2N1
bWVudC5wcm90b3R5cGUuZWxlbWVudEZyb21Qb2kKIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUu
ZXZhbHVhdGUgW2Z1bmN0aW9uXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5leGVjQ29tbWFu
ZCBbZnVuY3Rpb25dCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRCeUlkIFtm
dW5jdGlvbl0KK3dpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSBbZnVuY3Rpb25dCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdO
YW1lIFtmdW5jdGlvbl0KIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRh
Z05hbWVOUyBbZnVuY3Rpb25dCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdldE92ZXJyaWRl
U3R5bGUgW2Z1bmN0aW9uXQpAQCAtNDIyLDYgKzQyMyw3IEBAIHdpbmRvdy5FbGVtZW50LnByb3Rv
dHlwZS5nZXRBdHRyaWJ1dGUgW2YKIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRBdHRyaWJ1
dGVOUyBbZnVuY3Rpb25dCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTm9k
ZSBbZnVuY3Rpb25dCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTm9kZU5T
IFtmdW5jdGlvbl0KK3dpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lIFtmdW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFn
TmFtZSBbZnVuY3Rpb25dCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRh
Z05hbWVOUyBbZnVuY3Rpb25dCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuaGFzQXR0cmlidXRl
IFtmdW5jdGlvbl0K
</data>
<flag name="review"
          id="6953"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17870</attachid>
            <date>2007-12-12 17:02:24 -0800</date>
            <delta_ts>2007-12-13 14:22:22 -0800</delta_ts>
            <desc>updated patch</desc>
            <filename>gebcn2.diff</filename>
            <type>text/plain</type>
            <size>77022</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjYx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTA5IEBACisyMDA3LTEy
LTEyICBBZGFtIEJhcnRoICA8aGs5NTY1QGdtYWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTMxMworCisgICAgICAgIFRoZSBzYW1lLW9yaWdpbiBjaGVjayB3YXMgaW5j
b3JyZWN0IGluIHR3byBjYXNlcyAoYm90aCBmaXhlZCBpbiB0aGlzCisgICAgICAgIHBhdGNoKToK
KworICAgICAgICBBKSBJZiBib3RoIHRoZSBzb3VyY2UgYW5kIHRoZSB0YXJnZXQgaGF2ZSBzZXQg
dGhlaXIgZG9jdW1lbnQuZG9tYWluCisgICAgICAgICAgIHRvIHRoZSBzYW1lIHZhbHVlLCB0aGUg
cHJvdG9jb2wgbXVzdCBhbHNvIG1hdGNoIGluIG9yZGVyIGZvcgorICAgICAgICAgICBhY2Nlc3Mg
dG8gYmUgYWxsb3dlZC4gIFdpdGhvdXQgdGhpcyByZXF1aXJlbWVudCwgdGhlIGJyb3dzZXIgaXMK
KyAgICAgICAgICAgdnVsbmVyYWJsZSB0byB0aGUgZm9sbG93aW5nIGF0dGFjazoKKworICAgICAg
ICAgICAxKSBTdXBwb3NlIHRoZXJlIGlzIGFuIEhUVFBTIHNpdGUgKHd3dy5leGFtcGxlLmNvbSkg
dGhhdCBzZXRzCisgICAgICAgICAgICAgIGRvY3VtZW50LmRvbWFpbiA9ICJleGFtcGxlLmNvbSIu
CisgICAgICAgICAgIDIpIEEgbmV0d29yayBhdHRhY2tlciByZWRpcmVjdHMgdGhlIGJyb3dzZXIg
dG8gaHR0cDovL3d3dy5leGFtcGxlLmNvbS8KKyAgICAgICAgICAgICAgYSkgaW5qZWN0cyBzY3Jp
cHQgdG8gc2V0IGRvY3VtZW50LmRvbWFpbiA9ICJleGFtcGxlLmNvbSIsIGFuZAorICAgICAgICAg
ICAgICBiKSBvcGVucyBhIHdpbmRvdyB0byBodHRwczovL3d3dy5leGFtcGxlLmNvbS8KKyAgICAg
ICAgICAgMykgTm93IHRoZSBuZXR3b3JrIGF0dGFja2VyIGNhbiBpbmplY3Qgc2NyaXB0IGludG8g
dGhlIEhUVFBTIHBhZ2UsCisgICAgICAgICAgICAgIHN0ZWFsaW5nIGNvb2tpZXMgYW5kIGlzc3Vp
bmcgYmFua2luZyB0cmFuc2FjdGlvbnMuCisKKyAgICAgICAgQikgSWYgb25seSBvbmUgb2YgdGhl
IHNvdXJjZSBhbmQgdGFyZ2V0IGhhcyBzZXQgZG9jdW1lbnQuZG9tYWluLCB0aGVuCisgICAgICAg
ICAgIGFjY2VzcyBzaG91bGQgYmUgZGVuaWVkLiAgV2l0aCB0aGlzIGJlaGF2aW9yLCB0aGUgYnJv
d3NlciBpcworICAgICAgICAgICB2dWxuZXJhYmxlIHRvIHRoZSBmb2xsb3dpbmcgYXR0YWNrOgor
CisgICAgICAgICAgIDEpIFN1cHBvc2UgaHR0cDovL2Zvby5leGFtcGxlLmNvbS8gb3BlbnMgYW4g
aWZyYW1lIHRvCisgICAgICAgICAgICAgIGh0dHA6Ly9mb28uZXhhbXBsZS5jb20vZnJhbWUuaHRt
bCB0aGF0CisgICAgICAgICAgICAgIGEpIHNldHMgZG9jdW1lbnQuZG9tYWluID0gImV4YW1wbGUu
Y29tIiwgYW5kCisgICAgICAgICAgICAgIGIpIG9wZW5zIGFuIGlmcmFtZSB0byBodHRwOi8vYmFy
LmV4YW1wbGUuY29tLworICAgICAgICAgICAgICBUaGlzIGlzIGEgY29tbW9uIHVzYWdlIG9mIGRv
Y3VtZW50LmRvbWFpbiBmb3IgY3Jvc3MtZG9tYWluCisgICAgICAgICAgICAgIGNvbW11bmljYXRp
b24sIHNlZSBmb3IgZXhhbXBsZToKKyAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmNvbGxpbmph
Y2tzb24uY29tL3Jlc2VhcmNoL3BhcGVycy9mcDgwMS1qYWNrc29uLnBkZgorICAgICAgICAgICAy
KSBUaGUgaW5uZXItbW9zdCBpZnJhbWUsIHdoaWNoIGlzIGZyb20gYmFyLmV4YW1wbGUuY29tLCBz
ZXRzCisgICAgICAgICAgICAgIGRvY3VtZW50LmRvbWFpbiA9ICJleGFtcGxlLmNvbSIuCisgICAg
ICAgICAgIDMpIE5vdyB0aGUgaW5uZXItbW9zdCBpZnJhbWUgY2FuIGluamVjdCBzY3JpcHQgaW50
byB0aGUgbWlkZGxlCisgICAgICAgICAgICAgIGlmcmFtZSAoc2F5IHZpYSBkb2N1bWVudC53cml0
ZSkuICBUaGlzIGJhci5leGFtcGxlLmNvbSBzY3JpcHQKKyAgICAgICAgICAgICAgbm93IGhhcyBh
Y2Nlc3MgdG8gdGhlIG91dGVyLW1vc3QgZnJhbWUgKGZyb20gZm9vLmV4YW1wbGUuY29tKS4KKwor
ICAgICAgICBCb3RoIHRoZXNlIGNoYW5nZXMgY2F1c2UgV2ViS2l0IHRvIG1hdGNoIHRoZSBiZWhh
dmlvciBvZiBGaXJlZm94IDIgYW5kCisgICAgICAgIElFNiBpbiB0aGVzZSBjYXNlcy4gIFRoaXMg
cGF0Y2ggaW5jbHVkZXMgcmVncmVzc2lvbiB0ZXN0cyBmb3IgYm90aAorICAgICAgICBpc3N1ZXMu
CisKKyAgICAgICAgSW50ZXJuZXQgRXhwbG9yZXIgNyBhbmQgT3BlcmEgOSBhcmUgbW9yZSBzdHJp
Y3QgaW4gdGhhdCB0aGV5IHJlcXVpcmUKKyAgICAgICAgdGhlIHBvcnQgbnVtYmVycyB0byBtYXRj
aCB3aGVuIGJvdGggcGFnZXMgaGF2ZSBkb2N1bWVudC5kb21haW4gc2V0LgorICAgICAgICBPcGVy
YSA5IGFsbG93cyBhY2Nlc3Mgd2hlbiBvbmx5IG9uZSBwYWdlIGhhcyBzZXQgZG9jdW1lbnQuZG9t
YWluLCBidXQKKyAgICAgICAgdGhpcyBpcyBhIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHkuCisKKyAg
ICAgICAgVGVzdHM6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLWNoaWxk
LWV4cGxpY2l0LWRvbWFpbi5odG1sCisgICAgICAgICAgICAgICBodHRwL3Rlc3RzL3NlY3VyaXR5
L2Nyb3NzLWZyYW1lLWFjY2Vzcy1wYXJlbnQtZXhwbGljaXQtZG9tYWluLmh0bWwKKyAgICAgICAg
ICAgICAgIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3MtZnJhbWUtYWNjZXNzLXByb3RvY29sLWV4
cGxpY2l0LWRvbWFpbi5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9ybS9TZWN1cml0eU9yaWdpbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbjo6YWxsb3dBY2Nlc3NGcm9tKToK
KworMjAwNy0xMS0zMCAgRGF2aWQgU21pdGggIDxjYXRmaXNoLm1hbkBnbWFpbC5jb20+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICAtIGZp
eCBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1NQorICAgICAgICAg
IEltcGxlbWVudCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lLiBUaGlzIHBhdGNoIGFsc28gcmVuYW1l
cyBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QgdG8gYmV0dGVyIHJlZmxlY3QgaXRz
IGFjdHVhbCB1c2UsCisgICAgICAgICAgYW5kIHRha2VzIGFkdmFudGFnZSBvZiBhZG1pdHRpbmcg
dGhhdCBpdCdzIGNsYXNzLXNwZWNpZmljIHRvIGVuY2Fwc3VsYXRlIGNsYXNzIGF0dHJpYnV0ZSBw
YXJzaW5nIHNvIGl0IGNhbiBiZSBzaGFyZWQuCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vZ2V0
ZWxlbWVudHNieWNsYXNzbmFtZS5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6IEZpbGUgcmVuYW1lcworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVj
dG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXMp
OiBDaGFuZ2UgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0CisgICAgICAgIChXZWJD
b3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKTogQ2hhbmdlIEF0b21pY1N0
cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAorICAgICAgICAqIGRvbS9BdG9taWNTdHJpbmdMaXN0
Lmg6IFJlbW92ZWQuCisgICAgICAgICogZG9tL0NsYXNzTmFtZUxpc3QuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxpc3Q6OmNvbnRhaW5zKTogTmV3IGZ1bmN0aW9uIHRv
IGNoZWNrIGlmIGEgY2xhc3MgbmFtZSBpcyBpbiB0aGUgbGlzdAorICAgICAgICAoV2ViQ29yZTo6
aXNDbGFzc1doaXRlc3BhY2UpOiBNb3ZlZCBmcm9tIE5hbWVkTWFwcGVkQXR0ck1hcCwgYW5kIGFk
ZGVkIHRoZSBmb3JtIGZlZWQgY2hhcmFjdGVyIGFzIHBvaW50ZWQgb3V0IGJ5IEFubmUgdmFuIEtl
c3RlcmVuCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0OjpwYXJzZUNsYXNzQXR0cmli
dXRlKTogTW92ZWQgKGFuZCBhZGFwdGVkKSBmcm9tIE5hbWVkTWFwcGVkQXR0ck1hcAorICAgICAg
ICAqIGRvbS9DbGFzc05hbWVMaXN0Lmg6IENvcGllZCBmcm9tIFdlYkNvcmUvZG9tL0F0b21pY1N0
cmluZ0xpc3QuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxpc3Q6OkNsYXNzTmFtZUxp
c3QpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6fkNsYXNz
TmFtZUxpc3QpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6
bmV4dCk6IE5hbWUgY2hhbmdlCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0OjpzZXRO
ZXh0KTogTmFtZSBjaGFuZ2UKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxpc3Q6OnN0cmlu
Zyk6IE5hbWUgY2hhbmdlCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0OjpzZXRTdHJp
bmcpOiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6Y2xvbmUp
OiBOYW1lIGNoYW5nZQorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6Y2xlYXIpOiBO
YW1lIGNoYW5nZQorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpEb2N1bWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSk6IEFkZGVkCisgICAgICAgICogZG9t
L0RvY3VtZW50Lmg6IEFkZGVkIHRoZSBuZXcgZnVuY3Rpb25zCisgICAgICAgICogZG9tL0RvY3Vt
ZW50LmlkbDogQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMKKyAgICAgICAgKiBkb20vRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGFzc05vZGVMaXN0OjpDbGFzc05vZGVMaXN0KTogTmV3
IE5vZGVMaXN0IHN1YmNsYXNzIHRoYXQgbWF0Y2hlcyBieSBjbGFzcyBuYW1lcworICAgICAgICAo
V2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6bGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNz
Tm9kZUxpc3Q6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6bm9kZU1h
dGNoZXMpOiBDaGVjayB0aGUgY2xhc3MgbmFtZSB1c2luZyBDbGFzc05hbWVMaXN0J3MgbmV3IGNv
bnRhaW5zKCkKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldENsYXNzTGlzdCk6IENoYW5n
ZSBBdG9taWNTdHJpbmdMaXN0IHRvIENsYXNzTmFtZUxpc3QKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUpOiBBZGRlZAorICAgICAgICAqIGRvbS9FbGVt
ZW50Lmg6IEFkZGVkIHRoZSBuZXcgZnVuY3Rpb25zCisgICAgICAgICogZG9tL0VsZW1lbnQuaWRs
OiBBZGRlZCB0aGUgbmV3IGZ1bmN0aW9ucworICAgICAgICAqIGRvbS9OYW1lZE1hcHBlZEF0dHJN
YXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZWRNYXBwZWRBdHRyTWFwOjpwYXJzZUNsYXNz
QXR0cmlidXRlKTogTW92ZSBhbGwgdGhlIGxvZ2ljIGhlcmUgdG8gQ2xhc3NOYW1lTGlzdCBzbyBp
dCBjYW4gYmUgc2hhcmVkCisgICAgICAgICogZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5oOgorICAg
ICAgICAoV2ViQ29yZTo6TmFtZWRNYXBwZWRBdHRyTWFwOjpnZXRDbGFzc0xpc3QpOiBDaGFuZ2Ug
QXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0CisgICAgICAgICogZG9tL1N0eWxlZEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6Z2V0Q2xhc3NMaXN0
KTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAorICAgICAgICAqIGRv
bS9TdHlsZWRFbGVtZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1TdHJpbmcuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlN0cmluZzo6aXNMb3dlcik6IEFkZGVkCisKIDIwMDctMTItMTIg
IEFscCBUb2tlciAgPGFscEBhdG9rZXIuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE1hcmsg
Um93ZS4KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyODY2NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsODcgQEAKKzIwMDctMTItMTIgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5t
YW5AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIC0gZml4IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTU1
CisgICAgICAgICAgSW1wbGVtZW50IGdldEVsZW1lbnRzQnlDbGFzc05hbWUuIFRoaXMgcGF0Y2gg
YWxzbyByZW5hbWVzIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdCB0byBiZXR0ZXIg
cmVmbGVjdCBpdHMgYWN0dWFsIHVzZSwKKyAgICAgICAgICBhbmQgdGFrZXMgYWR2YW50YWdlIG9m
IGFkbWl0dGluZyB0aGF0IGl0J3MgY2xhc3Mtc3BlY2lmaWMgdG8gZW5jYXBzdWxhdGUgY2xhc3Mg
YXR0cmlidXRlIHBhcnNpbmcgc28gaXQgY2FuIGJlIHNoYXJlZC4KKworICAgICAgICBUZXN0czog
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDEuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDIuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDMuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDQuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDUuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDYuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDcuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDguaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDkuaHRtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTAueG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMS54bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDEyLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDEzLmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDE0Lmh0bWwKKyAgICAgICAgICAgICAgIGZh
c3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAxLmh0bWwKKyAgICAgICAgICAg
ICAgIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAyLmh0bWwKKyAgICAg
ICAgICAgICAgIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAzLmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDA0
Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvZHVt
cE5vZGVMaXN0Lmh0bWwKKworICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvajogRmlsZSByZW5hbWVzLgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNoUnVsZXMpOiBDaGFuZ2Ug
QXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVMaXN0CisgICAgICAgIChXZWJDb3JlOjpDU1NT
dHlsZVNlbGVjdG9yOjpjaGVja09uZVNlbGVjdG9yKTogZGl0dG8uCisgICAgICAgICogZG9tL0F0
b21pY1N0cmluZ0xpc3QuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBkb20vQ2hpbGROb2RlTGlzdC5o
OgorICAgICAgICAqIGRvbS9DbGFzc05hbWVMaXN0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpDbGFzc05hbWVMaXN0Ojpjb250YWlucyk6IE5ldyBmdW5jdGlvbiB0byBjaGVjayBpZiBh
IGNsYXNzIG5hbWUgaXMgaW4gdGhlIGxpc3QKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2xhc3NXaGl0
ZXNwYWNlKTogTW92ZWQgZnJvbSBOYW1lZE1hcHBlZEF0dHJNYXAsIGFuZCBhZGRlZCB0aGUgZm9y
bSBmZWVkIGNoYXJhY3RlciBhcyBwb2ludGVkIG91dCBieSBBbm5lIHZhbiBLZXN0ZXJlbgorICAg
ICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lTGlzdDo6cGFyc2VDbGFzc0F0dHJpYnV0ZSk6IE1vdmVk
IChhbmQgYWRhcHRlZCkgZnJvbSBOYW1lZE1hcHBlZEF0dHJNYXAKKyAgICAgICAgCisgICAgICAg
IE5ldyBOb2RlTGlzdCBzdWJjbGFzcyB0aGF0IG1hdGNoZXMgYnkgY2xhc3MgbmFtZXMKKyAgICAg
ICAgKiBkb20vQ2xhc3NOYW1lTGlzdC5oOiBDb3BpZWQgZnJvbSBXZWJDb3JlL2RvbS9BdG9taWNT
dHJpbmdMaXN0LmguCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0OjpDbGFzc05hbWVM
aXN0KTogCisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0Ojp+Q2xhc3NOYW1lTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0OjpuZXh0KToKKyAgICAgICAgKFdlYkNv
cmU6OkNsYXNzTmFtZUxpc3Q6OnNldE5leHQpOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1l
TGlzdDo6c3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZUxpc3Q6OnNldFN0cmlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVMaXN0OjpjbG9uZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGFzc05hbWVMaXN0OjpjbGVhcik6CisgICAgICAgICogZG9tL0NsYXNzTm9kZUxp
c3QuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTm9kZUxpc3Q6OkNsYXNzTm9k
ZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6bGVuZ3RoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsYXNzTm9kZUxpc3Q6Oml0ZW0pOgorICAgICAgICAoV2ViQ29yZTo6Q2xh
c3NOb2RlTGlzdDo6bm9kZU1hdGNoZXMpOgorICAgICAgICAqIGRvbS9DbGFzc05vZGVMaXN0Lmg6
IEFkZGVkLgorCisgICAgICAgIEFkZGVkIHRoZSBuZXcgZnVuY3Rpb24KKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlO
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaWRs
OgorICAgICAgICAKKyAgICAgICAgQWRkZWQgdGhlIG5ldyBmdW5jdGlvbnMuCisgICAgICAgICog
ZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0Q2xhc3NMaXN0
KTogQ2hhbmdlIEF0b21pY1N0cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSk6CisgICAgICAgICogZG9tL0Vs
ZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5pZGw6CisgICAgICAgICogZG9tL05hbWVO
b2RlTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYW1lTm9kZUxpc3Q6Ok5hbWVOb2RlTGlz
dCk6CisgICAgICAgIChXZWJDb3JlOjpOYW1lTm9kZUxpc3Q6Oml0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6TmFtZU5vZGVMaXN0Ojpub2RlTWF0Y2hlcyk6CisgICAgICAgICogZG9tL05hbWVOb2Rl
TGlzdC5oOgorICAgICAgICAqIGRvbS9OYW1lZE1hcHBlZEF0dHJNYXAuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6TmFtZWRNYXBwZWRBdHRyTWFwOjpwYXJzZUNsYXNzQXR0cmlidXRlKTogTW92ZSBh
bGwgdGhlIGxvZ2ljIGhlcmUgdG8gQ2xhc3NOYW1lTGlzdCBzbyBpdCBjYW4gYmUgc2hhcmVkCisg
ICAgICAgICogZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5oOgorICAgICAgICAoV2ViQ29yZTo6TmFt
ZWRNYXBwZWRBdHRyTWFwOjpnZXRDbGFzc0xpc3QpOiBDaGFuZ2UgQXRvbWljU3RyaW5nTGlzdCB0
byBDbGFzc05hbWVMaXN0CisgICAgICAgICogZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6Z2V0Q2xhc3NMaXN0KTogQ2hhbmdlIEF0b21pY1N0
cmluZ0xpc3QgdG8gQ2xhc3NOYW1lTGlzdAorICAgICAgICAqIGRvbS9TdHlsZWRFbGVtZW50Lmg6
CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oOgorICAgICAgICAoV2Vi
Q29yZTo6U3RyaW5nOjppc0xvd2VyKTogQWRkZWQKKwogMjAwNy0xMi0xMiAgQW5kZXJzIENhcmxz
c29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gYW5k
IEpvbi4KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShy
ZXZpc2lvbiAyODY2MSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xNjQwLDcgKzE2NDAsNiBAQAogCQk5M0YxOTlCRDA4MjQ1
RTU5MDAxRTlBQkMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTU5OThBNUMwNTJCNTlDQzAwMTdBNkMxIC8qIEFYT2JqZWN0
Q2FjaGUuaCAqLzsgfTsKIAkJOTNGMTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0
aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVB
NjQwRjAwNTMzQkIxRjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OUMyMDgyNDVFNTkwMDFF
OUFCQyAvKiBXZWJDb3JlS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4NEIyQjFGNzA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtl
eUdlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07Ci0JCTkzRjE5OUNGMDgyNDVFNTkwMDFFOUFCQyAvKiBBdG9taWNTdHJpbmdMaXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCMzY0NzA1QzlE
NUUyMDBFNDI5MDIgLyogQXRvbWljU3RyaW5nTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OURFMDgyNDVFNTkwMDFFOUFCQyAvKiBQ
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkU5MUZDOEIwNjEzMzY2NjAwNUUzNzkwIC8qIFBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5RTUwODI0NUU1OTAwMUU5QUJD
IC8qIEhUTUxDYW52YXNFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MUY2QTNENjA2NjNCRjA0MDA0RDI5MTkgLyogSFRNTENhbnZhc0VsZW1l
bnQuaCAqLzsgfTsKIAkJOTNGMTk5RTcwODI0NUU1OTAwMUU5QUJDIC8qIENsaXBib2FyZE1hYy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5MDY2MEIw
NjY1RDkzNzAwNkI2RjFBIC8qIENsaXBib2FyZE1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNjIwLDYgKzM2MTksMTAgQEAKIAkJQkM4MjQz
MkMwRDBDRThBMjAwNDYwQzhGIC8qIEpTVm9pZENhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgyNDMyODBEMENFOEEyMDA0NjBDOEYgLyog
SlNWb2lkQ2FsbGJhY2suaCAqLzsgfTsKIAkJQkM4MjQzRTgwRDBDRkQ3NTAwNDYwQzhGIC8qIFdp
bmRvd0ZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDODI0M0U2MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJlcy5jcHAgKi87
IH07CiAJCUJDODI0M0U5MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4MjQzRTcwRDBDRkQ3
NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkM5MDRCNzQwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNz
TmFtZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQkM5MDRCNzAwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTmFtZUxpc3QuY3BwICovOyB9Owor
CQlCQzkwNEI3NTBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOYW1lTGlzdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDRCNzEwRDEwOTk4RjAwNjgw
RDMyIC8qIENsYXNzTmFtZUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQlCQzkwNEI3NjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlz
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkw
NEI3MjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5jcHAgKi87IH07CisJCUJDOTA0
Qjc3MEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyog
Q2xhc3NOb2RlTGlzdC5oICovOyB9OwogCQlCQzkyNkY4MDBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNI
VE1MRnJhbWVTZXRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVs
ZW1lbnQuY3BwICovOyB9OwogCQlCQzkyNkY4MTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJh
bWVTZXRFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzkyNkY3RjBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50Lmgg
Ki87IH07CiAJCUJDOTREMTA4MEMyNzRGODgwMDZCQzYxNyAvKiBQbGF0Zm9ybVNjcmVlbk1hYy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDOTREMTA3
MEMyNzRGODgwMDZCQzYxNyAvKiBQbGF0Zm9ybVNjcmVlbk1hYy5tbSAqLzsgfTsKQEAgLTc1NDAs
NyArNzU0Myw2IEBACiAJCUJDMzA1Qzc3MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RF
bGVtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAz
MDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxP
YmplY3RFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzMDVDNzgw
QzA3NkJCMzAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkMzMDVDQTMwQzA3ODFCQjAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVs
ZW1lbnRDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNI
VE1MT2JqZWN0RWxlbWVudEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUJDM0IzNjQ3MDVDOUQ1RTIwMEU0MjkwMiAvKiBBdG9taWNTdHJpbmdMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGluZGVudFdpZHRoID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEF0b21pY1N0cmluZ0xp
c3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgdGFiV2lkdGggPSA4OyB1c2VzVGFicyA9IDA7
IH07CiAJCUJDM0MzOUI0MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNNZWRpYUxpc3QuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNDMzlCNTBDMEQzRDhEMDA1RjREN0EgLyogSlNNZWRp
YUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTTWVkaWFMaXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0ZDQUE4MEFDM0RCNTgwMEJBNTRBRCAv
KiBQbGF0Zm9ybVNjcm9sbEJhci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
UGxhdGZvcm1TY3JvbGxCYXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTc2MjMs
NiArNzYyNSwxMCBAQAogCQlCQzgyNDMyODBEMENFOEEyMDA0NjBDOEYgLyogSlNWb2lkQ2FsbGJh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNWb2lkQ2FsbGJhY2suaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4MjQzRTYwRDBDRkQ3NTAwNDYwQzhGIC8q
IFdpbmRvd0ZlYXR1cmVzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFdpbmRvd0ZlYXR1cmVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4MjQz
RTcwRDBDRkQ3NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdpbmRvd0ZlYXR1cmVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUJDOTA0QjcwMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05hbWVMaXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENsYXNzTmFtZUxpc3QuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzkwNEI3MTBEMTA5OThGMDA2ODBEMzIgLyogQ2xh
c3NOYW1lTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05hbWVM
aXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDOTA0QjcyMEQxMDk5OEYwMDY4
MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IENsYXNzTm9kZUxpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlC
QzkwNEI3MzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDbGFzc05vZGVMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDOTI2RjdFMEMwNTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1l
bnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTEZyYW1l
U2V0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDOTI2RjdGMEMw
NTUyNDcwMDgyNzc2QiAvKiBKU0hUTUxGcmFtZVNldEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzk0RDEwNzBDMjc0Rjg4MDA2QkM2MTcgLyogUGxhdGZvcm1TY3Jl
ZW5NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGxhdGZv
cm1TY3JlZW5NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMjA5Miw3ICsx
MjA5OCw2IEBACiAJCUY1MjNEMzI0MDJERTQ0NzgwMTg2MzVDQSAvKiBkb20gKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAotCQkJCUJDM0IzNjQ3MDVDOUQ1RTIwMEU0
MjkwMiAvKiBBdG9taWNTdHJpbmdMaXN0LmggKi8sCiAJCQkJQThDNEE3RkMwOUQ1NjMyNzAwMDNB
QzhEIC8qIEF0dHIuY3BwICovLAogCQkJCUE4QzRBN0ZCMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRy
LmggKi8sCiAJCQkJOTNFRUMxRTUwOUMyODc3NzAwQzUxNUQxIC8qIEF0dHIuaWRsICovLApAQCAt
MTIxMTAsNiArMTIxMTUsMTAgQEAKIAkJCQk5M0VFQzFFNjA5QzI4Nzc3MDBDNTE1RDEgLyogQ2hh
cmFjdGVyRGF0YS5pZGwgKi8sCiAJCQkJQTgxODcyMUEwOTc3RDNDMDAwNTgyNkQ5IC8qIENoaWxk
Tm9kZUxpc3QuY3BwICovLAogCQkJCUE4MTg3MjE1MDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5v
ZGVMaXN0LmggKi8sCisJCQkJQkM5MDRCNzAwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTmFtZUxp
c3QuY3BwICovLAorCQkJCUJDOTA0QjcxMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05hbWVMaXN0
LmggKi8sCisJCQkJQkM5MDRCNzIwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuY3Bw
ICovLAorCQkJCUJDOTA0QjczMEQxMDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmggKi8s
CiAJCQkJQTc4NDk0MUEwQjVGRTUwNzAwMUUyMzdBIC8qIENsaXBib2FyZC5jcHAgKi8sCiAJCQkJ
ODUwMzFCMjgwQTQ0RUZDNzAwRjk5MkUwIC8qIENsaXBib2FyZC5oICovLAogCQkJCTRCOEFGNEE5
MEIxQ0UwMkIwMDY4NzY5MCAvKiBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kuaCAqLywKQEAgLTEyMjcw
LDcgKzEyMjc5LDYgQEAKIAkJCQlCQ0IxNkI4RDA5NzlCMDE0MDA0Njc3NDEgLyogQXJyYXlJbXBs
LmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREExRjBEMDA2QzFEMDBFRjZGMjYgLyogQXRvbWlj
U3RyaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMkMzREEyMDBEMDA2QzFEMDBFRjZGMjYgLyog
QXRvbWljU3RyaW5nSW1wbC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTNGMTk5Q0YwODI0NUU1OTAw
MUU5QUJDIC8qIEF0b21pY1N0cmluZ0xpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4QzRBODBE
MDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEM0QTgwQjA5
RDU2MzI3MDAwM0FDOEQgLyogQXR0cmlidXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTRDNzY2
QzBDRTkyM0ExMDA3RUYzQ0QgLyogQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTQwODIsNiArMTQwOTAsOCBAQAogCQkJCUJDQjE2QzJEMDk3OUMzQkQwMDQ2Nzc0
MSAvKiBsb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REY4MDk5RTY0OTIwMDU2RTU4
MSAvKiBtYXJrdXAuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5RTFFMDk5RTY0OTIwMDU2RTU4
MSAvKiB2aXNpYmxlX3VuaXRzLmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzkwNEI3NTBEMTA5OThG
MDA2ODBEMzIgLyogQ2xhc3NOYW1lTGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM5MDRCNzcw
RDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTU3
OTIsNiArMTU4MDIsOCBAQAogCQkJCTkzMzA5REY3MDk5RTY0OTIwMDU2RTU4MSAvKiBtYXJrdXAu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTMzMDlFMUQwOTlFNjQ5MjAwNTZFNTgxIC8qIHZpc2li
bGVfdW5pdHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTNBMzhCNEIwRDBFNTgwODAwNjg3MkMy
IC8qIEVkaXRvckNvbW1hbmQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM5MDRCNzQwRDEwOTk4
RjAwNjgwRDMyIC8qIENsYXNzTmFtZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQkM5MDRC
NzYwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07Cklu
ZGV4OiBXZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gMjg2NjEpCisrKyBXZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzkzLDcgKzM5Myw3
IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6bWF0Y2hSdWxlcyhDU1NSdWwKICAgICBpZiAoZWxl
bWVudC0+aGFzSUQoKSkKICAgICAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldElEUnVs
ZXMoZWxlbWVudC0+Z2V0SURBdHRyaWJ1dGUoKS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFz
dFJ1bGVJbmRleCk7CiAgICAgaWYgKGVsZW1lbnQtPmhhc0NsYXNzKCkpIHsKLSAgICAgICAgZm9y
IChjb25zdCBBdG9taWNTdHJpbmdMaXN0KiBzaW5nbGVDbGFzcyA9IGVsZW1lbnQtPmdldENsYXNz
TGlzdCgpOyBzaW5nbGVDbGFzczsgc2luZ2xlQ2xhc3MgPSBzaW5nbGVDbGFzcy0+bmV4dCgpKQor
ICAgICAgICBmb3IgKGNvbnN0IENsYXNzTmFtZUxpc3QqIHNpbmdsZUNsYXNzID0gZWxlbWVudC0+
Z2V0Q2xhc3NMaXN0KCk7IHNpbmdsZUNsYXNzOyBzaW5nbGVDbGFzcyA9IHNpbmdsZUNsYXNzLT5u
ZXh0KCkpCiAgICAgICAgICAgICBtYXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0Q2xhc3NSdWxl
cyhzaW5nbGVDbGFzcy0+c3RyaW5nKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxl
SW5kZXgpOwogICAgIH0KICAgICBtYXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0VGFnUnVsZXMo
ZWxlbWVudC0+bG9jYWxOYW1lKCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5k
ZXgpOwpAQCAtMTQzNCw3ICsxNDM0LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja09u
ZVNlbGVjdG9yKAogICAgICAgICBpZiAoc2VsLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpDbGFz
cykgewogICAgICAgICAgICAgaWYgKCFlLT5oYXNDbGFzcygpKQogICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgQXRvbWljU3RyaW5nTGlzdCogYyA9
IGUtPmdldENsYXNzTGlzdCgpOyBjOyBjID0gYy0+bmV4dCgpKQorICAgICAgICAgICAgZm9yIChj
b25zdCBDbGFzc05hbWVMaXN0KiBjID0gZS0+Z2V0Q2xhc3NMaXN0KCk7IGM7IGMgPSBjLT5uZXh0
KCkpCiAgICAgICAgICAgICAgICAgaWYgKGMtPnN0cmluZygpID09IHNlbC0+bV92YWx1ZSkKICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CkluZGV4OiBXZWJDb3JlL2RvbS9BdG9taWNTdHJpbmdMaXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vQXRvbWljU3RyaW5nTGlzdC5oCShyZXZpc2lvbiAyODY2MSkKKysrIFdlYkNvcmUv
ZG9tL0F0b21pY1N0cmluZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBACi0v
KgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RF
LgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgotICoKLSAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0
IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl
IGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxp
YnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQotI2lm
bmRlZiBBdG9taWNTdHJpbmdMaXN0X2gKLSNkZWZpbmUgQXRvbWljU3RyaW5nTGlzdF9oCi0KLSNp
bmNsdWRlICJBdG9taWNTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBB
dG9taWNTdHJpbmdMaXN0IHsKLXB1YmxpYzoKLSAgICBBdG9taWNTdHJpbmdMaXN0KCkgOiBtX25l
eHQoMCkge30KLSAgICBBdG9taWNTdHJpbmdMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgc3RyLCBB
dG9taWNTdHJpbmdMaXN0KiBuID0gMCkgOiBtX3N0cmluZyhzdHIpLCBtX25leHQobikge30KLSAg
ICB+QXRvbWljU3RyaW5nTGlzdCgpIHsgZGVsZXRlIG1fbmV4dDsgfQotICAgIAotICAgIEF0b21p
Y1N0cmluZ0xpc3QqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQ7IH0KLSAgICB2b2lkIHNl
dE5leHQoQXRvbWljU3RyaW5nTGlzdCogbikgeyBtX25leHQgPSBuOyB9Ci0gICAgY29uc3QgQXRv
bWljU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIHZvaWQg
c2V0U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyKSB7IG1fc3RyaW5nID0gc3RyOyB9Ci0K
LSAgICBBdG9taWNTdHJpbmdMaXN0KiBjbG9uZSgpIHsgcmV0dXJuIG5ldyBBdG9taWNTdHJpbmdM
aXN0KG1fc3RyaW5nLCBtX25leHQgPyBtX25leHQtPmNsb25lKCkgOiAwKTsgfQotICAgIHZvaWQg
Y2xlYXIoKSB7IG1fc3RyaW5nID0gbnVsbEF0b207IGRlbGV0ZSBtX25leHQ7IG1fbmV4dCA9IDA7
IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5nIG1fc3RyaW5nOwotICAgIEF0b21p
Y1N0cmluZ0xpc3QqIG1fbmV4dDsKLX07Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBXZWJDb3JlL2Rv
bS9DaGlsZE5vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ2hpbGROb2RlTGlz
dC5oCShyZXZpc2lvbiAyODY2MSkKKysrIFdlYkNvcmUvZG9tL0NoaWxkTm9kZUxpc3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMjksMTggKzI5LDIwIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgQ2hpbGROb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7Ci1wdWJsaWM6Ci0gICAgQ2hp
bGROb2RlTGlzdChOb2RlKiwgTm9kZUxpc3Q6OkNhY2hlcyopOwotCi0gICAgdmlydHVhbCB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdDsKLSAgICB2aXJ0dWFsIE5vZGUqIGl0ZW0odW5zaWduZWQgaW5k
ZXgpIGNvbnN0OwotCi0gICAgdmlydHVhbCB2b2lkIHJvb3ROb2RlQ2hpbGRyZW5DaGFuZ2VkKCk7
Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIGJvb2wgbm9kZU1hdGNoZXMoTm9kZSogdGVzdE5v
ZGUpIGNvbnN0OwotfTsKKyAgICBjbGFzcyBOb2RlOworCisgICAgY2xhc3MgQ2hpbGROb2RlTGlz
dCA6IHB1YmxpYyBOb2RlTGlzdCB7CisgICAgcHVibGljOgorICAgICAgICBDaGlsZE5vZGVMaXN0
KE5vZGUqLCBOb2RlTGlzdDo6Q2FjaGVzKik7CisKKyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBs
ZW5ndGgoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4
KSBjb25zdDsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgcm9vdE5vZGVDaGlsZHJlbkNoYW5nZWQo
KTsKKworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCBib29sIG5vZGVNYXRjaGVzKE5v
ZGUqIHRlc3ROb2RlKSBjb25zdDsKKyAgICB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
SW5kZXg6IFdlYkNvcmUvZG9tL0NsYXNzTmFtZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvZG9tL0NsYXNzTmFtZUxpc3QuY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ2xh
c3NOYW1lTGlzdC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDcgRGF2aWQgU21pdGggKGNhdGZpc2gubWFuQGdtYWlsLmNvbSkKKyAqIENv
cHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl
IEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBk
aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUg
MzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgIkNsYXNzTmFtZUxpc3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworICAgIAorYm9vbCBDbGFzc05hbWVMaXN0Ojpjb250YWlucyhjb25zdCBBdG9taWNTdHJpbmcm
IHN0cikgY29uc3QgCit7IAorICAgIGZvciAoY29uc3QgQ2xhc3NOYW1lTGlzdCogY2xhc3NMaXN0
ID0gdGhpczsgY2xhc3NMaXN0OyBjbGFzc0xpc3QgPSBjbGFzc0xpc3QtPm5leHQoKSkgeyAKKyAg
ICAgICAgaWYgKGNsYXNzTGlzdC0+c3RyaW5nKCkgPT0gc3RyKSAKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOyAKKyAgICB9IAorICAgIHJldHVybiBmYWxzZTsgCit9CisKK2lubGluZSBzdGF0aWMg
Ym9vbCBpc0NsYXNzV2hpdGVzcGFjZShVQ2hhciBjKQoreworICAgIHJldHVybiBjID09ICcgJyB8
fCBjID09ICdccicgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1x0JyB8fCBjID09ICdcZic7Cit9CisK
K3ZvaWQgQ2xhc3NOYW1lTGlzdDo6cGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGNs
YXNzU3RyLCBjb25zdCBib29sIGluQ29tcGF0TW9kZSkKK3sKKyAgICBjbGVhcigpOworICAgIAor
ICAgIFN0cmluZyBjbGFzc0F0dHIgPSBpbkNvbXBhdE1vZGUgPyAKKyAgICAgICAgKGNsYXNzU3Ry
LmlzTG93ZXIoKSA/IGNsYXNzU3RyIDogY2xhc3NTdHIubG93ZXIoKSkgOgorICAgICAgICBjbGFz
c1N0cjsKKworICAgIENsYXNzTmFtZUxpc3QqIGN1cnIgPSAwOworCisgICAgY29uc3QgVUNoYXIq
IHN0ciA9IGNsYXNzQXR0ci5jaGFyYWN0ZXJzKCk7CisgICAgaW50IGxlbmd0aCA9IGNsYXNzQXR0
ci5sZW5ndGgoKTsKKyAgICBpbnQgc3RhcnQgPSAwOworCisgICAgd2hpbGUgKHRydWUpIHsKKyAg
ICAgICAgd2hpbGUgKHN0YXJ0IDwgbGVuZ3RoICYmIGlzQ2xhc3NXaGl0ZXNwYWNlKHN0cltzdGFy
dF0pKQorICAgICAgICAgICAgKytzdGFydDsKKyAgICAgICAgaWYgKHN0YXJ0ID49IGxlbmd0aCkK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBpbnQgZW5kID0gc3RhcnQgKyAxOworICAgICAg
ICB3aGlsZSAoZW5kIDwgbGVuZ3RoICYmICFpc0NsYXNzV2hpdGVzcGFjZShzdHJbZW5kXSkpCisg
ICAgICAgICAgICArK2VuZDsKKyAgICAgICAgaWYgKGN1cnIpIHsKKyAgICAgICAgICAgIGN1cnIt
PnNldE5leHQobmV3IENsYXNzTmFtZUxpc3QoQXRvbWljU3RyaW5nKHN0ciArIHN0YXJ0LCBlbmQg
LSBzdGFydCkpKTsKKyAgICAgICAgICAgIGN1cnIgPSBjdXJyLT5uZXh0KCk7CisgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICBpZiAoc3RhcnQgPT0gMCAmJiBlbmQgPT0gbGVuZ3RoKSB7Cisg
ICAgICAgICAgICAgICAgbV9zdHJpbmcgPSBBdG9taWNTdHJpbmcoY2xhc3NBdHRyKTsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fc3RyaW5nID0g
QXRvbWljU3RyaW5nKHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgICAgICAgICBjdXJy
ID0gdGhpczsKKyAgICAgICAgfQorICAgICAgICBzdGFydCA9IGVuZCArIDE7CisgICAgfQorfQor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9DbGFzc05hbWVMaXN0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5oCShyZXZpc2lvbiAy
ODY2MSkJKGZyb20gV2ViQ29yZS9kb20vQXRvbWljU3RyaW5nTGlzdC5oOjI4NjYxKQorKysgV2Vi
Q29yZS9kb20vQ2xhc3NOYW1lTGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTEgQEAK
Ky8qCisgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgRE9NIGltcGxlbWVudGF0aW9uIGZvciBL
REUuCisgKgorICogQ29weXJpZ2h0IChDKSAyMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisj
aWZuZGVmIEF0b21pY1N0cmluZ0xpc3RfaAorI2RlZmluZSBBdG9taWNTdHJpbmdMaXN0X2gKKwor
I2luY2x1ZGUgIkF0b21pY1N0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEF0b21pY1N0cmluZ0xpc3QgeworcHVibGljOgorICAgIEF0b21pY1N0cmluZ0xpc3QoKSA6IG1f
bmV4dCgwKSB7fQorICAgIEF0b21pY1N0cmluZ0xpc3QoY29uc3QgQXRvbWljU3RyaW5nJiBzdHIs
IEF0b21pY1N0cmluZ0xpc3QqIG4gPSAwKSA6IG1fc3RyaW5nKHN0ciksIG1fbmV4dChuKSB7fQor
ICAgIH5BdG9taWNTdHJpbmdMaXN0KCkgeyBkZWxldGUgbV9uZXh0OyB9CisgICAgCisgICAgQXRv
bWljU3RyaW5nTGlzdCogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQorICAgIHZvaWQg
c2V0TmV4dChBdG9taWNTdHJpbmdMaXN0KiBuKSB7IG1fbmV4dCA9IG47IH0KKyAgICBjb25zdCBB
dG9taWNTdHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CisgICAgdm9p
ZCBzZXRTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzdHIpIHsgbV9zdHJpbmcgPSBzdHI7IH0K
KworICAgIEF0b21pY1N0cmluZ0xpc3QqIGNsb25lKCkgeyByZXR1cm4gbmV3IEF0b21pY1N0cmlu
Z0xpc3QobV9zdHJpbmcsIG1fbmV4dCA/IG1fbmV4dC0+Y2xvbmUoKSA6IDApOyB9CisgICAgdm9p
ZCBjbGVhcigpIHsgbV9zdHJpbmcgPSBudWxsQXRvbTsgZGVsZXRlIG1fbmV4dDsgbV9uZXh0ID0g
MDsgfQorICAgIAorcHJpdmF0ZToKKyAgICBBdG9taWNTdHJpbmcgbV9zdHJpbmc7CisgICAgQXRv
bWljU3RyaW5nTGlzdCogbV9uZXh0OworfTsKKworfQorCisjZW5kaWYKSW5kZXg6IFdlYkNvcmUv
ZG9tL0NsYXNzTmFtZUxpc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGFzc05hbWVM
aXN0LmgJKHJldmlzaW9uIDI4NjYxKQorKysgV2ViQ29yZS9kb20vQ2xhc3NOYW1lTGlzdC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNSBAQAogLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBDb21w
dXRlciwgSW5jLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0xNSwzNyArMTMsNTIgQEAKICAqCiAg
KiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCiAgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBm
aWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwotICogdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAqIEJv
c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
biwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjEx
MS0xMzA3LCBVU0EuCiAgKgogICovCiAKLSNpZm5kZWYgQXRvbWljU3RyaW5nTGlzdF9oCi0jZGVm
aW5lIEF0b21pY1N0cmluZ0xpc3RfaAorI2lmbmRlZiBDbGFzc05hbWVMaXN0X2gKKyNkZWZpbmUg
Q2xhc3NOYW1lTGlzdF9oCiAKICNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi1jbGFzcyBBdG9taWNTdHJpbmdMaXN0IHsKLXB1YmxpYzoKLSAgICBBdG9t
aWNTdHJpbmdMaXN0KCkgOiBtX25leHQoMCkge30KLSAgICBBdG9taWNTdHJpbmdMaXN0KGNvbnN0
IEF0b21pY1N0cmluZyYgc3RyLCBBdG9taWNTdHJpbmdMaXN0KiBuID0gMCkgOiBtX3N0cmluZyhz
dHIpLCBtX25leHQobikge30KLSAgICB+QXRvbWljU3RyaW5nTGlzdCgpIHsgZGVsZXRlIG1fbmV4
dDsgfQotICAgIAotICAgIEF0b21pY1N0cmluZ0xpc3QqIG5leHQoKSBjb25zdCB7IHJldHVybiBt
X25leHQ7IH0KLSAgICB2b2lkIHNldE5leHQoQXRvbWljU3RyaW5nTGlzdCogbikgeyBtX25leHQg
PSBuOyB9Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBt
X3N0cmluZzsgfQotICAgIHZvaWQgc2V0U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyKSB7
IG1fc3RyaW5nID0gc3RyOyB9Ci0KLSAgICBBdG9taWNTdHJpbmdMaXN0KiBjbG9uZSgpIHsgcmV0
dXJuIG5ldyBBdG9taWNTdHJpbmdMaXN0KG1fc3RyaW5nLCBtX25leHQgPyBtX25leHQtPmNsb25l
KCkgOiAwKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7IG1fc3RyaW5nID0gbnVsbEF0b207IGRlbGV0
ZSBtX25leHQ7IG1fbmV4dCA9IDA7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5n
IG1fc3RyaW5nOwotICAgIEF0b21pY1N0cmluZ0xpc3QqIG1fbmV4dDsKLX07CisgICAgY2xhc3Mg
RG9jdW1lbnQ7CisKKyAgICBjbGFzcyBDbGFzc05hbWVMaXN0IHsKKyAgICBwdWJsaWM6CisgICAg
ICAgIENsYXNzTmFtZUxpc3QoKQorICAgICAgICAgICAgOiBtX25leHQoMCkKKyAgICAgICAgewor
ICAgICAgICB9CisKKyAgICAgICAgQ2xhc3NOYW1lTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIHN0
cmluZywgQ2xhc3NOYW1lTGlzdCogbmV4dCA9IDApCisgICAgICAgICAgICA6IG1fc3RyaW5nKHN0
cmluZykKKyAgICAgICAgICAgICwgbV9uZXh0KG5leHQpCisgICAgICAgIHsKKyAgICAgICAgfQor
CisgICAgICAgIH5DbGFzc05hbWVMaXN0KCkgeyBkZWxldGUgbV9uZXh0OyB9CisKKyAgICAgICAg
Q2xhc3NOYW1lTGlzdCogbmV4dCgpIGNvbnN0IHsgcmV0dXJuIG1fbmV4dDsgfQorICAgICAgICB2
b2lkIHNldE5leHQoQ2xhc3NOYW1lTGlzdCogbmV4dCkgeyBtX25leHQgPSBuZXh0OyB9CisgICAg
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7
IH0KKyAgICAgICAgdm9pZCBzZXRTdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBzdHJpbmcpIHsg
bV9zdHJpbmcgPSBzdHJpbmc7IH0KKworICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21p
Y1N0cmluZyYpIGNvbnN0OworCisgICAgICAgIHZvaWQgcGFyc2VDbGFzc0F0dHJpYnV0ZShjb25z
dCBTdHJpbmcmLCBjb25zdCBib29sIGluQ29tcGF0TW9kZSk7CisKKyAgICAgICAgQ2xhc3NOYW1l
TGlzdCogY2xvbmUoKSB7IHJldHVybiBuZXcgQ2xhc3NOYW1lTGlzdChtX3N0cmluZywgbV9uZXh0
ID8gbV9uZXh0LT5jbG9uZSgpIDogMCk7IH0KKyAgICAgICAgdm9pZCBjbGVhcigpIHsgbV9zdHJp
bmcgPSBudWxsQXRvbTsgZGVsZXRlIG1fbmV4dDsgbV9uZXh0ID0gMDsgfQorCisgICAgcHJpdmF0
ZToKKyAgICAgICAgQXRvbWljU3RyaW5nIG1fc3RyaW5nOworICAgICAgICBDbGFzc05hbWVMaXN0
KiBtX25leHQ7CisgICAgfTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi0jZW5kaWYK
KyNlbmRpZiAvLyBDbGFzc05hbWVMaXN0X2gKSW5kZXg6IFdlYkNvcmUvZG9tL0NsYXNzTm9kZUxp
c3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NsYXNzTm9kZUxpc3QuY3BwCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5jcHAJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRm
aXNoLm1hbkBnbWFpbC5jb20pCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkNsYXNzTm9k
ZUxpc3QuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgor
I2luY2x1ZGUgIk5vZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitDbGFzc05vZGVMaXN0
OjpDbGFzc05vZGVMaXN0KFBhc3NSZWZQdHI8Tm9kZT4gcm9vdE5vZGUsIGNvbnN0IEF0b21pY1N0
cmluZyYgY2xhc3NOYW1lKQorICAgIDogTm9kZUxpc3Qocm9vdE5vZGUpCisgICAgLCBtX25hbWVz
cGFjZVVSSShudWxsQXRvbSkKK3sKKyAgICBtX2NsYXNzTGlzdC5wYXJzZUNsYXNzQXR0cmlidXRl
KGNsYXNzTmFtZSwgbV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkpOworfQor
Cit1bnNpZ25lZCBDbGFzc05vZGVMaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiBy
ZWN1cnNpdmVMZW5ndGgoKTsKK30KKworTm9kZSogQ2xhc3NOb2RlTGlzdDo6aXRlbSh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVjdXJzaXZlSXRlbShpbmRleCk7Cit9CisK
K2Jvb2wgQ2xhc3NOb2RlTGlzdDo6bm9kZU1hdGNoZXMoTm9kZSogdGVzdE5vZGUpIGNvbnN0Cit7
CisgICAgaWYgKCF0ZXN0Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIXRlc3ROb2RlLT5oYXNDbGFzcygpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBjb25zdCBDbGFzc05hbWVMaXN0KiBjbGFzc2VzID0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KHRlc3ROb2RlKS0+Z2V0Q2xhc3NMaXN0KCk7CisgICAgZm9yIChjb25zdCBDbGFzc05h
bWVMaXN0KiBjID0gJm1fY2xhc3NMaXN0OyBjOyBjID0gYy0+bmV4dCgpKSB7CisgICAgICAgIGlm
ICghY2xhc3Nlcy0+Y29udGFpbnMoYy0+c3RyaW5nKCkpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vQ2xhc3NOb2RlTGlzdC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ2xh
c3NOb2RlTGlzdC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29tKQorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4g
KCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJv
bSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05U
UklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2xh
c3NOb2RlTGlzdF9oCisjZGVmaW5lIENsYXNzTm9kZUxpc3RfaAorCisjaW5jbHVkZSAiQXRvbWlj
U3RyaW5nLmgiCisjaW5jbHVkZSAiQ2xhc3NOYW1lTGlzdC5oIgorI2luY2x1ZGUgIk5vZGVMaXN0
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIENsYXNzTm9kZUxpc3QgOiBw
dWJsaWMgTm9kZUxpc3QgeworICAgIHB1YmxpYzoKKyAgICAgICAgQ2xhc3NOb2RlTGlzdChQYXNz
UmVmUHRyPE5vZGU+IHJvb3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSk7CisK
KyAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCBOb2RlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAg
ICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0Y2hlcyhOb2RlKikgY29uc3Q7CisKKyAgICAgICAgQXRv
bWljU3RyaW5nIG1fbmFtZXNwYWNlVVJJOworICAgICAgICBDbGFzc05hbWVMaXN0IG1fY2xhc3NM
aXN0OworICAgIH07CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIENsYXNz
Tm9kZUxpc3RfaApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjg2NjEpCisrKyBXZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDEwICszMCwxMSBAQAogI2luY2x1
ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5j
bHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgorI2luY2x1ZGUgIkNsYXNzTm9kZUxpc3QuaCIKICNp
bmNsdWRlICJDb21tZW50LmgiCiAjaW5jbHVkZSAiQ29va2llSmFyLmgiCi0jaW5jbHVkZSAiRGF0
YWJhc2VUaHJlYWQuaCIKICNpbmNsdWRlICJET01JbXBsZW1lbnRhdGlvbi5oIgorI2luY2x1ZGUg
IkRhdGFiYXNlVGhyZWFkLmgiCiAjaW5jbHVkZSAiRG9jTG9hZGVyLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRGcmFnbWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCkBAIC0zNDk0LDEx
ICszNDk1LDE2IEBAIEhUTUxDb2xsZWN0aW9uOjpDb2xsZWN0aW9uSW5mbyogRG9jdW1lbnQKICAg
ICByZXR1cm4gaXRlci0+c2Vjb25kOwogfQogCi1QYXNzUmVmUHRyPE5hbWVOb2RlTGlzdD4gRG9j
dW1lbnQ6OmdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyAmZWxlbWVudE5hbWUpCitQYXNz
UmVmUHRyPE5hbWVOb2RlTGlzdD4gRG9jdW1lbnQ6OmdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0
cmluZyYgZWxlbWVudE5hbWUpCiB7CiAgICAgcmV0dXJuIG5ldyBOYW1lTm9kZUxpc3QodGhpcywg
ZWxlbWVudE5hbWUpOwogfQogCitQYXNzUmVmUHRyPE5vZGVMaXN0PiBEb2N1bWVudDo6Z2V0RWxl
bWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkKK3sKKyAgICByZXR1cm4g
bmV3IENsYXNzTm9kZUxpc3QodGhpcywgY2xhc3NOYW1lKTsKK30KKwogdm9pZCBEb2N1bWVudDo6
ZmluaXNoZWRQYXJzaW5nKCkKIHsKICAgICBzZXRQYXJzaW5nKGZhbHNlKTsKSW5kZXg6IFdlYkNv
cmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuaAko
cmV2aXNpb24gMjg2NjEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTMsNiArMjEzLDcgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8Tm9kZT4gYWRvcHRO
b2RlKFBhc3NSZWZQdHI8Tm9kZT4gc291cmNlLCBFeGNlcHRpb25Db2RlJik7CiAgICAgCiAgICAg
UGFzc1JlZlB0cjxOYW1lTm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlOYW1lKGNvbnN0IFN0cmluZyYg
ZWxlbWVudE5hbWUpOworICAgIFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IGdldEVsZW1lbnRzQnlDbGFz
c05hbWUoY29uc3QgU3RyaW5nJiBjbGFzc05hbWUpOwogCiAgICAgUGFzc1JlZlB0cjxIVE1MQ29s
bGVjdGlvbj4gaW1hZ2VzKCk7CiAgICAgUGFzc1JlZlB0cjxIVE1MQ29sbGVjdGlvbj4gZW1iZWRz
KCk7CkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaWRsCShyZXZpc2lvbiAyODY2MSkKKysrIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMjIwLDYgKzIyMCw4IEBAIG1vZHVsZSBjb3JlIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gW09w
dGlvbmFsXSBib29sZWFuIGF1dGhvck9ubHkpOwogI2VuZGlmCiAKKyAgICAgICAgLy8gSFRNTCA1
CisgICAgICAgIE5vZGVMaXN0ICAgICAgICAgICAgZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShpbiBE
T01TdHJpbmcgdGFnbmFtZSk7CiAgICAgfTsKIAogfQpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4
NjYxKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMsNiAr
Myw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtk
ZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkK
ICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAq
ICAgICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29tKQog
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqICAgICAgICAgICAoQykgMjAwNyBFcmljIFNlaWRlbCAoZXJpY0B3
ZWJraXQub3JnKQogICoKQEAgLTI2LDYgKzI3LDggQEAKICNpbmNsdWRlICJFbGVtZW50LmgiCiAK
ICNpbmNsdWRlICJDU1NTdHlsZVNlbGVjdG9yLmgiCisjaW5jbHVkZSAiQ2xhc3NOYW1lTGlzdC5o
IgorI2luY2x1ZGUgIkNsYXNzTm9kZUxpc3QuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKQEAgLTM2LDYgKzM5
LDcgQEAKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJLVVJMLmgiCiAjaW5jbHVk
ZSAiTmFtZWRBdHRyTWFwLmgiCisjaW5jbHVkZSAiTm9kZUxpc3QuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyQmxvY2suaCIKICNpbmNsdWRlICJTZWxlY3Rpb25Db250cm9s
bGVyLmgiCkBAIC0xOTYsNyArMjAwLDcgQEAgTm9kZTo6Tm9kZVR5cGUgRWxlbWVudDo6bm9kZVR5
cGUoKSBjb25zdAogICAgIHJldHVybiBFTEVNRU5UX05PREU7CiB9CiAKLWNvbnN0IEF0b21pY1N0
cmluZ0xpc3QqIEVsZW1lbnQ6OmdldENsYXNzTGlzdCgpIGNvbnN0Citjb25zdCBDbGFzc05hbWVM
aXN0KiBFbGVtZW50OjpnZXRDbGFzc0xpc3QoKSBjb25zdAogewogICAgIHJldHVybiAwOwogfQpA
QCAtMTExOSw2ICsxMTIzLDExIEBAIFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxl
KCkKICAgICByZXR1cm4gcmQtPm1fY29tcHV0ZWRTdHlsZTsKIH0KIAorUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gRWxlbWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNz
TmFtZSkKK3sKKyAgICByZXR1cm4gbmV3IENsYXNzTm9kZUxpc3QodGhpcywgY2xhc3NOYW1lKTsK
K30KKwogdm9pZCBFbGVtZW50OjpjYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdGUoKQogewogICAg
IGlmIChFbGVtZW50UmFyZURhdGEqIHJkID0gcmFyZURhdGEoKSkKSW5kZXg6IFdlYkNvcmUvZG9t
L0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9u
IDI4NjYxKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3
ICszMSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXRvbWljU3RyaW5nTGlz
dDsKK2NsYXNzIENsYXNzTmFtZUxpc3Q7CiBjbGFzcyBBdHRyOwogY2xhc3MgQXR0cmlidXRlOwog
Y2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbjsKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAg
IH5FbGVtZW50KCk7CiAKICAgICAvLyBVc2VkIHRvIHF1aWNrbHkgZGV0ZXJtaW5lIHdoZXRoZXIg
b3Igbm90IGFuIGVsZW1lbnQgaGFzIGEgZ2l2ZW4gQ1NTIGNsYXNzLgotICAgIHZpcnR1YWwgY29u
c3QgQXRvbWljU3RyaW5nTGlzdCogZ2V0Q2xhc3NMaXN0KCkgY29uc3Q7CisgICAgdmlydHVhbCBj
b25zdCBDbGFzc05hbWVMaXN0KiBnZXRDbGFzc0xpc3QoKSBjb25zdDsKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGdldElEQXR0cmlidXRlKCkgY29uc3Q7CiAgICAgYm9vbCBoYXNBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdDsKQEAgLTE2Miw2ICsxNjIsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2Vs
ZWN0aW9uID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShi
b29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbik7CiAgICAgdm9pZCBibHVyKCk7CisgICAgCisg
ICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJp
bmcmKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2aXJ0dWFsIHZvaWQgZHVtcChUZXh0U3RyZWFt
KiAsIERlcHJlY2F0ZWRTdHJpbmcgaW5kID0gIiIpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9kb20v
RWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlz
aW9uIDI4NjYxKQorKysgV2ViQ29yZS9kb20vRWxlbWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTEwMiw2ICsxMDIsOSBAQCBtb2R1bGUgY29yZSB7CiAgICAgICAgIHZvaWQgc2Nyb2xsQnlMaW5l
cyhpbiBsb25nIGxpbmVzKTsKICAgICAgICAgdm9pZCBzY3JvbGxCeVBhZ2VzKGluIGxvbmcgcGFn
ZXMpOwogCisgICAgICAgIC8vIEhUTUwgNQorICAgICAgICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKGluIERPTVN0cmluZyBuYW1lKTsKKwogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JK
RUNUSVZFX0MpCiAgICAgICAgIC8vIE9iamVjdGl2ZS1DIGV4dGVuc2lvbnMKICAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpbm5lclRleHQ7CkluZGV4OiBXZWJDb3JlL2RvbS9O
YW1lTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5j
cHAJKHJldmlzaW9uIDI4NjYxKQorKysgV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMCArMSw4IEBACiAvKioKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9m
IHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5
OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0
aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJr
IE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBD
b21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjgsMTQgKzI2LDEzIEBA
CiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogCi11c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSFRNTE5hbWVzOwogCi1OYW1lTm9kZUxpc3Q6Ok5hbWVOb2RlTGlzdChOb2RlICpuLCBjb25z
dCBTdHJpbmcgJnQpCi0gIDogTm9kZUxpc3QobiksIG5vZGVOYW1lKHQpCitOYW1lTm9kZUxpc3Q6
Ok5hbWVOb2RlTGlzdChOb2RlKiByb290LCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgOiBOb2Rl
TGlzdChyb290KQorICAgICwgbV9ub2RlTmFtZShuYW1lKQogewogfQogCkBAIC00NCwxNCArNDEs
MTQgQEAgdW5zaWduZWQgTmFtZU5vZGVMaXN0OjpsZW5ndGgoKSBjb25zdAogICAgIHJldHVybiBy
ZWN1cnNpdmVMZW5ndGgoKTsKIH0KIAotTm9kZSAqTmFtZU5vZGVMaXN0OjppdGVtICh1bnNpZ25l
ZCBpbmRleCkgY29uc3QKK05vZGUqIE5hbWVOb2RlTGlzdDo6aXRlbSAodW5zaWduZWQgaW5kZXgp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlY3Vyc2l2ZUl0ZW0oaW5kZXgpOwogfQogCi1ib29sIE5h
bWVOb2RlTGlzdDo6bm9kZU1hdGNoZXMoTm9kZSAqdGVzdE5vZGUpIGNvbnN0Citib29sIE5hbWVO
b2RlTGlzdDo6bm9kZU1hdGNoZXMoTm9kZSogdGVzdE5vZGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnQqPih0ZXN0Tm9kZSktPmdldEF0dHJpYnV0ZShuYW1lQXR0cikg
PT0gbm9kZU5hbWU7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPih0ZXN0Tm9kZSkt
PmdldEF0dHJpYnV0ZShuYW1lQXR0cikgPT0gbV9ub2RlTmFtZTsKIH0KIAotfQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgJKHJldmlzaW9uIDI4NjYxKQorKysgV2Vi
Q29yZS9kb20vTmFtZU5vZGVMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzEsOCBAQAog
LyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtE
RS4KLSAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMzUsNyArMzMsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgKi8KIGNsYXNz
IE5hbWVOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlzdCB7CiBwdWJsaWM6Ci0gICAgTmFtZU5vZGVM
aXN0KE5vZGUqIGRvYywgY29uc3QgU3RyaW5nJiBuYW1lKTsKKyAgICBOYW1lTm9kZUxpc3QoTm9k
ZSogcm9vdCwgY29uc3QgU3RyaW5nJiBuYW1lKTsKIAogICAgIC8vIERPTSBtZXRob2RzIG92ZXJy
aWRkZW4gZnJvbSAgcGFyZW50IGNsYXNzZXMKIApAQCAtNDgsNyArNDYsOCBAQCBwdWJsaWM6CiBw
cm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIG5vZGVNYXRjaGVzKE5vZGUqIHRlc3ROb2RlKSBj
b25zdDsKIAotICAgIFN0cmluZyBub2RlTmFtZTsKK3ByaXZhdGU6CisgICAgU3RyaW5nIG1fbm9k
ZU5hbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9O
YW1lZE1hcHBlZEF0dHJNYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVkTWFw
cGVkQXR0ck1hcC5jcHAJKHJldmlzaW9uIDI4NjYxKQorKysgV2ViQ29yZS9kb20vTmFtZWRNYXBw
ZWRBdHRyTWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAKICAqICAgICAgICAg
ICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAg
ICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogICAgICAgICAgIChDKSAy
MDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICogICAgICAgICAgIChDKSAyMDA3
IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKQEAgLTc2LDQ4ICs3NywxNCBAQCBib29sIE5hbWVkTWFwcGVkQXR0ck1hcDo6bWFw
c0VxdWl2YWxlbnQoCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLWlubGluZSBzdGF0aWMgYm9vbCBp
c0NsYXNzV2hpdGVzcGFjZShVQ2hhciBjKQotewotICAgIHJldHVybiBjID09ICcgJyB8fCBjID09
ICdccicgfHwgYyA9PSAnXG4nIHx8IGMgPT0gJ1x0JzsKLX0KLQotdm9pZCBOYW1lZE1hcHBlZEF0
dHJNYXA6OnBhcnNlQ2xhc3NBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiBjbGFzc1N0cikKLXsKLSAg
ICBtX2NsYXNzTGlzdC5jbGVhcigpOwotICAgIGlmICghZWxlbWVudC0+aGFzQ2xhc3MoKSkKK3Zv
aWQgTmFtZWRNYXBwZWRBdHRyTWFwOjpwYXJzZUNsYXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYg
Y2xhc3NTdHIpIAoreyAKKyAgICBpZiAoIWVsZW1lbnQtPmhhc0NsYXNzKCkpIHsgCisgICAgICAg
IG1fY2xhc3NMaXN0LmNsZWFyKCk7IAogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgU3RyaW5n
IGNsYXNzQXR0ciA9IGVsZW1lbnQtPmRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpID8gCi0gICAg
ICAgIChjbGFzc1N0ci5pbXBsKCktPmlzTG93ZXIoKSA/IGNsYXNzU3RyIDogU3RyaW5nKGNsYXNz
U3RyLmltcGwoKS0+bG93ZXIoKSkpIDoKLSAgICAgICAgY2xhc3NTdHI7Ci0gICAgCi0gICAgQXRv
bWljU3RyaW5nTGlzdCogY3VyciA9IDA7Ci0gICAgCi0gICAgY29uc3QgVUNoYXIqIHN0ciA9IGNs
YXNzQXR0ci5jaGFyYWN0ZXJzKCk7Ci0gICAgaW50IGxlbmd0aCA9IGNsYXNzQXR0ci5sZW5ndGgo
KTsKLSAgICBpbnQgc1BvcyA9IDA7Ci0KLSAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICB3aGls
ZSAoc1BvcyA8IGxlbmd0aCAmJiBpc0NsYXNzV2hpdGVzcGFjZShzdHJbc1Bvc10pKQotICAgICAg
ICAgICAgKytzUG9zOwotICAgICAgICBpZiAoc1BvcyA+PSBsZW5ndGgpCi0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgaW50IGVQb3MgPSBzUG9zICsgMTsKLSAgICAgICAgd2hpbGUgKGVQb3Mg
PCBsZW5ndGggJiYgIWlzQ2xhc3NXaGl0ZXNwYWNlKHN0cltlUG9zXSkpCi0gICAgICAgICAgICAr
K2VQb3M7Ci0gICAgICAgIGlmIChjdXJyKSB7Ci0gICAgICAgICAgICBjdXJyLT5zZXROZXh0KG5l
dyBBdG9taWNTdHJpbmdMaXN0KEF0b21pY1N0cmluZyhzdHIgKyBzUG9zLCBlUG9zIC0gc1Bvcykp
KTsKLSAgICAgICAgICAgIGN1cnIgPSBjdXJyLT5uZXh0KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICBpZiAoc1BvcyA9PSAwICYmIGVQb3MgPT0gbGVuZ3RoKSB7Ci0gICAgICAgICAg
ICAgICAgbV9jbGFzc0xpc3Quc2V0U3RyaW5nKEF0b21pY1N0cmluZyhjbGFzc0F0dHIpKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1fY2xhc3NM
aXN0LnNldFN0cmluZyhBdG9taWNTdHJpbmcoc3RyICsgc1BvcywgZVBvcyAtIHNQb3MpKTsKLSAg
ICAgICAgICAgIGN1cnIgPSAmbV9jbGFzc0xpc3Q7Ci0gICAgICAgIH0KLSAgICAgICAgc1BvcyA9
IGVQb3MgKyAxOwotICAgIH0KKyAgICB9IAorICAgIG1fY2xhc3NMaXN0LnBhcnNlQ2xhc3NBdHRy
aWJ1dGUoY2xhc3NTdHIsIGVsZW1lbnQtPmRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpKTsgCiB9
CiAKKwogfQpJbmRleDogV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmgJKHJldmlzaW9uIDI4NjYxKQor
KysgV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUs
NiArNSw3IEBACiAgKiAgICAgICAgICAgKEMpIDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3Rv
QGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMpIDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNv
bSkKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykK
KyAqICAgICAgICAgICAoQykgMjAwNyBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29t
KQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVy
LCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjgsOCArMjksOCBAQAogI2RlZmluZSBOYW1lZE1hcHBl
ZEF0dHJNYXBfaAogCiAjaW5jbHVkZSAiTmFtZWRBdHRyTWFwLmgiCi0jaW5jbHVkZSAiQXRvbWlj
U3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIk1hcHBlZEF0dHJpYnV0ZS5oIgorI2luY2x1ZGUgIkNs
YXNzTmFtZUxpc3QuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Miw4ICs0Myw5IEBA
IHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNNYXBwZWRBdHRyaWJ1dGVNYXAoKSBj
b25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQgcGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBT
dHJpbmcmIGNsYXNzQXR0cik7Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nTGlzdCogZ2V0Q2xhc3NM
aXN0KCkgY29uc3QgeyByZXR1cm4gJm1fY2xhc3NMaXN0OyB9CisgICAgdm9pZCBwYXJzZUNsYXNz
QXR0cmlidXRlKGNvbnN0IFN0cmluZyYpOworCisgICAgY29uc3QgQ2xhc3NOYW1lTGlzdCogZ2V0
Q2xhc3NMaXN0KCkgY29uc3QgeyByZXR1cm4gJm1fY2xhc3NMaXN0OyB9CiAgICAgCiAgICAgdmly
dHVhbCBib29sIGhhc01hcHBlZEF0dHJpYnV0ZXMoKSBjb25zdCB7IHJldHVybiBtX21hcHBlZEF0
dHJpYnV0ZUNvdW50ID4gMDsgfQogICAgIHZvaWQgZGVjbFJlbW92ZWQoKSB7IG1fbWFwcGVkQXR0
cmlidXRlQ291bnQtLTsgfQpAQCAtNjAsNyArNjIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHsgcmV0
dXJuIHN0YXRpY19jYXN0PE1hcHBlZEF0dHJpYnV0ZSo+KE5hbWVkQXR0ck1hcDo6Z2V0QXR0cmli
dXRlSXRlbShuYW1lKSk7IH0KICAgICAKIHByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5nTGlzdCBt
X2NsYXNzTGlzdDsKKyAgICBDbGFzc05hbWVMaXN0IG1fY2xhc3NMaXN0OwogICAgIGludCBtX21h
cHBlZEF0dHJpYnV0ZUNvdW50OwogfTsKIApJbmRleDogV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHJldmlz
aW9uIDI4NjYxKQorKysgV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI2Myw3ICsyNjMsNyBAQCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogU3R5bGVk
RWxlbWVuCiAgICAgcmV0dXJuIDA7CiB9CiAKLWNvbnN0IEF0b21pY1N0cmluZ0xpc3QqIFN0eWxl
ZEVsZW1lbnQ6OmdldENsYXNzTGlzdCgpIGNvbnN0Citjb25zdCBDbGFzc05hbWVMaXN0KiBTdHls
ZWRFbGVtZW50OjpnZXRDbGFzc0xpc3QoKSBjb25zdAogewogICAgIHJldHVybiBuYW1lZEF0dHJN
YXAgPyBtYXBwZWRBdHRyaWJ1dGVzKCktPmdldENsYXNzTGlzdCgpIDogMDsKIH0KSW5kZXg6IFdl
YkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9TdHls
ZWRFbGVtZW50LmgJKHJldmlzaW9uIDI4NjYxKQorKysgV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Niw3ICs2Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGlu
dmFsaWRhdGVTdHlsZUF0dHJpYnV0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdHlsZUF0
dHJpYnV0ZUlmTmVlZGVkKCkgY29uc3Q7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNT
dHJpbmdMaXN0KiBnZXRDbGFzc0xpc3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IENsYXNz
TmFtZUxpc3QqIGdldENsYXNzTGlzdCgpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBhdHRyaWJ1
dGVDaGFuZ2VkKEF0dHJpYnV0ZSogYXR0ciwgYm9vbCBwcmVzZXJ2ZURlY2xzID0gZmFsc2UpOwog
ICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShNYXBwZWRBdHRyaWJ1dGUqIGF0
dHIpOwogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdDsKSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oCShyZXZpc2lvbiAyODY2MSkKKysrIFdlYkNv
cmUvcGxhdGZvcm0vdGV4dC9QbGF0Zm9ybVN0cmluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTks
NiArMTE5LDggQEAgcHVibGljOgogICAgIFN0cmluZyBsb3dlcigpIGNvbnN0OwogICAgIFN0cmlu
ZyB1cHBlcigpIGNvbnN0OwogCisgICAgYm9vbCBpc0xvd2VyKCkgY29uc3QgeyByZXR1cm4gbV9p
bXBsID8gbV9pbXBsLT5pc0xvd2VyKCkgOiBmYWxzZTsgfQorCiAgICAgU3RyaW5nIHN0cmlwV2hp
dGVTcGFjZSgpIGNvbnN0OwogICAgIFN0cmluZyBzaW1wbGlmeVdoaXRlU3BhY2UoKSBjb25zdDsK
ICAgICAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI4NjY3KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNTYgQEAKKzIwMDctMTItMTIgIERhdmlkIFNtaXRo
ICA8Y2F0ZmlzaC5tYW5AZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorICAgICAgICAKKyAgICAgICAgLSB0ZXN0IGZvciBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1NQorICAgICAgICAgIEltcGxlbWVudCBnZXRFbGVtZW50
c0J5Q2xhc3NOYW1lCisKKyAgICAgICAgVGVzdHMgYWRkZWQgZnJvbSBodHRwOi8vdGMubGFicy5v
cGVyYS5jb20vYXBpcy9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLworCisgICAgICAgICogZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwMS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAxLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAyLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDIuaHRtbDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDMtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lLzAwMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lLzAwNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVs
ZW1lbnRzQnlDbGFzc05hbWUvMDA0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dl
dEVsZW1lbnRzQnlDbGFzc05hbWUvMDA1LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDYtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwNi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwNy1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05h
bWUvMDA3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFz
c05hbWUvMDA4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZS8wMDguaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZS8wMDktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwOS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDEwLnhtbDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTEtZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
LzAxMS54bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05h
bWUvMDEyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS8wMTIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZS8wMTMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxNC1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDE0Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXk6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAxLWV4
cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZS9hcnJheS8wMDEuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS9hcnJheS8wMDItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMi5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMy1leHBlY3Rl
ZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUv
YXJyYXkvMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvYXJyYXkvMDA0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJheS8wMDQuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9kdW1wTm9kZUxpc3QtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2R1
bXBOb2RlTGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lL3Jlc291cmNlczogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS9yZXNvdXJjZXMvY29tbW9uLmpzOiBBZGRlZC4KKwogMjAwNy0xMi0xMiAg
RGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpv
aG4gU3VsbGl2YW4uCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXBy
b3BlcnRpZXMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L1dpbmRvdy93aW5kb3ctcHJvcGVydGllcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDI4NjYxKQor
KysgTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMzE3LDYgKzMxNyw3IEBAIHdpbmRvdy5Eb2N1bWVudC5w
cm90b3R5cGUuZWxlbWVudEZyb21Qb2kKIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZXZhbHVh
dGUgW2Z1bmN0aW9uXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5leGVjQ29tbWFuZCBbZnVu
Y3Rpb25dCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRCeUlkIFtmdW5jdGlv
bl0KK3dpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSBbZnVu
Y3Rpb25dCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlOYW1lIFtmdW5j
dGlvbl0KIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUgW2Z1
bmN0aW9uXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5nZXRFbGVtZW50c0J5VGFnTmFtZU5T
IFtmdW5jdGlvbl0KQEAgLTQyNCw2ICs0MjUsNyBAQCB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUu
Z2V0QXR0cmlidXRlIFtmCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0QXR0cmlidXRlTlMg
W2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5vZGUgW2Z1
bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZU5vZGVOUyBbZnVu
Y3Rpb25dCit3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSBb
ZnVuY3Rpb25dCiB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUg
W2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVsZW1lbnRzQnlUYWdOYW1l
TlMgW2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmhhc0F0dHJpYnV0ZSBbZnVu
Y3Rpb25dCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
LzAwMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZS8wMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDEtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwMS5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAxLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwMS5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1s
IGNsYXNzPSJhIj4KKyA8aGVhZD4KKyAgPHRpdGxlPmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoKTogc2ltcGxlPC90aXRsZT4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24u
anMiPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keSBjbGFzcz0iYSI+CisgIDxwIGlkPSJyIj5G
QUlMIChzY3JpcHQgZGlkIG5vdCBydW4pPC9wPgorICA8c2NyaXB0PiB0KGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoIlx0YVxuIiksIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGRv
Y3VtZW50LmJvZHldKSA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwMi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8w
MDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZS8wMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lLzAwMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVs
ZW1lbnRzQnlDbGFzc05hbWUvMDAyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwMi5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDEzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sIGNsYXNzPSJhCitiIj4KKyA8aGVh
ZD4KKyAgPHRpdGxlPmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoKTogYWxzbyBzaW1w
bGU8L3RpdGxlPgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+
CisgPC9oZWFkPgorIDxib2R5IGNsYXNzPSJhCisiPgorICA8cCBpZD0iciI+RkFJTCAoc2NyaXB0
IGRpZCBub3QgcnVuKTwvcD4KKyAgPHNjcmlwdD4gdChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKCJhXG4iKSwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgZG9jdW1lbnQuYm9keV0p
IDwvc2NyaXB0PgorIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9t
L2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwMy1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lLzAwMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BBU1MK
SW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAzLmh0
bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZS8wMDMuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVs
ZW1lbnRzQnlDbGFzc05hbWUvMDAzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAK
KzwhZG9jdHlwZSBodG1sPgorPGh0bWwgY2xhc3M9ImEiPgorIDxoZWFkPgorICA8dGl0bGU+ZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpOiBjaGFuZ2luZyBjbGFzc2VzPC90aXRsZT4K
KyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorIDwvaGVhZD4K
KyA8Ym9keSBjbGFzcz0iYSI+CisgIDxwIGlkPSJyIj5GQUlMIChzY3JpcHQgZGlkIG5vdCBydW4p
PC9wPgorICA8c2NyaXB0PgorICAgdmFyIGNvbGxlY3Rpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCJhIikKKyAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gImIiCisgICB0
KGNvbGxlY3Rpb24sIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKQorICA8L3NjcmlwdD4KKyA8
L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lLzAwNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDQtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwNC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA0Lmh0bWwJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lLzAwNC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE1IEBACis8IWRvY3R5cGUgaHRt
bD4KKzxodG1sIGNsYXNzPSJhIj4KKyA8aGVhZD4KKyAgPHRpdGxlPmRvY3VtZW50LmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoKTogY2hhbmdpbmcgY2xhc3NlczwvdGl0bGU+CisgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHkgY2xhc3M9
ImEiPgorICA8cCBpZD0iciI+RkFJTCAoc2NyaXB0IGRpZCBub3QgcnVuKTwvcD4KKyAgPHNjcmlw
dD4KKyAgIHZhciBjb2xsZWN0aW9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgi
YSIpCisgICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSArPSAiXHRiIgorICAgdChjb2xsZWN0aW9u
LCBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC5ib2R5XSkKKyAgPC9zY3JpcHQ+
CisgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS8wMDUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA1LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA1
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUEFTUwpJbmRleDogTGF5
b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDUuaHRtbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwNS5o
dG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZS8wMDUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorPCFkb2N0eXBl
IGh0bWw+Cis8aHRtbCBjbGFzcz0iYSI+CisgPGhlYWQ+CisgIDx0aXRsZT5kb2N1bWVudC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCk6IGNoYW5naW5nIGNsYXNzZXM8L3RpdGxlPgorICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5IGNs
YXNzPSJhIj4KKyAgPHAgaWQ9InIiPkZBSUwgKHNjcmlwdCBkaWQgbm90IHJ1bik8L3A+CisgIDxz
Y3JpcHQ+CisgICB2YXIgY29sbGVjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoImEiKQorICAgZG9jdW1lbnQuYm9keS5yZW1vdmVBdHRyaWJ1dGUoImNsYXNzIikKKyAgIHQo
Y29sbGVjdGlvbiwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudF0pCisgIDwvc2NyaXB0PgorIDwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvMDA2LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwNi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwNi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA2Lmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDYu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvMDA2Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKKzwhZG9jdHlw
ZSBodG1sPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5kb2N1bWVudC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCk6IGFkZGluZyBlbGVtZW50IHdpdGggY2xhc3M8L3RpdGxlPgorICA8c2NyaXB0
IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5IGNs
YXNzPSJhIj4KKyAgPHAgaWQ9InIiPkZBSUwgKHNjcmlwdCBkaWQgbm90IHJ1bik8L3A+CisgIDxz
Y3JpcHQ+CisgICB2YXIgY29sbGVjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoImEiKSwKKyAgICAgICBlbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJmb28iKTsKKyAg
IGVsZS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImEiKTsKKyAgIGRvY3VtZW50LmJvZHkuYXBwZW5k
Q2hpbGQoZWxlKQorICAgdChjb2xsZWN0aW9uLCBbZG9jdW1lbnQuYm9keSwgZWxlXSkKKyAgPC9z
Y3JpcHQ+CisgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZS8wMDctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA3LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05h
bWUvMDA3LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUEFTUwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDcuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
LzAwNy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS8wMDcuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPCFk
b2N0eXBlIGh0bWw+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPmRvY3VtZW50LmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoKTogbXVsdGlwbGUgY2xhc3NlczwvdGl0bGU+CisgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHkgY2xhc3M9
ImEgYiI+CisgIDxwIGlkPSJyIj5GQUlMIChzY3JpcHQgZGlkIG5vdCBydW4pPC9wPgorICA8c2Ny
aXB0PiB0KGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImJcdFxmXG5cbmFccmIiKSwg
W2RvY3VtZW50LmJvZHldKSA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwOC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZS8wMDgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lLzAwOC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dl
dEVsZW1lbnRzQnlDbGFzc05hbWUvMDA4Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwOC5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDExIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0
bGU+ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpOiBtdWx0aXBsZSBjbGFzc2VzPC90
aXRsZT4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorIDwv
aGVhZD4KKyA8Ym9keSBjbGFzcz0iYSI+CisgIDxwIGlkPSJyIj5GQUlMIChzY3JpcHQgZGlkIG5v
dCBydW4pPC9wPgorICA8c2NyaXB0PiB0KGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUo
ImFcZmEiKSwgW2RvY3VtZW50LmJvZHldKSA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwOS1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZS8wMDktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDktZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lLzAwOS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwOS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sIGNsYXNzPSJh
IEEiPgorIDxoZWFkPgorICA8dGl0bGU+ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgp
OiBjYXNlIHNlbnNpdGl2ZTwvdGl0bGU+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9u
LmpzIj48L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHkgY2xhc3M9ImEgYSI+CisgIDxwIGlkPSJy
Ij5GQUlMIChzY3JpcHQgZGlkIG5vdCBydW4pPC9wPgorICA8c2NyaXB0PiB0KGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoIkEgYSIpLCBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50XSkg
PC9zY3JpcHQ+CisgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTAtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDEwLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFz
c05hbWUvMDEwLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzIEBACitQQVNT
CisKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8w
MTAueG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvMDEwLnhtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dl
dEVsZW1lbnRzQnlDbGFzc05hbWUvMDEwLnhtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMiBA
QAorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOmc9Imh0
dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KKyA8aGVhZD4KKyAgPHRpdGxlPmRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoKTogY29tcG91bmQ8L3RpdGxlPgorICA8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5PgorICA8cCBp
ZD0iciI+RkFJTCAoc2NyaXB0IGRpZCBub3QgcnVuKTwvcD4gIAorICA8eCBjbGFzcz0iYSIvPgor
ICA8Zzp4IGNsYXNzPSJhIi8+CisgIDxzY3JpcHQ+IHQoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgiYSIpLCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgieCIpKSA8L3Njcmlw
dD4KKyA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lLzAxMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTEtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8w
MTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDggQEAKK1RoaXMgcGFnZSBj
b250YWlucyB0aGUgZm9sbG93aW5nIGVycm9yczoKKworZXJyb3Igb24gbGluZSAxMiBhdCBjb2x1
bW4gMjAwOiBOYW1lc3BhY2VkIEF0dHJpYnV0ZSBjbGFzcyBpbiAnaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCcgcmVkZWZpbmVkCitCZWxvdyBpcyBhIHJlbmRlcmluZyBvZiB0aGUgcGFnZSB1
cCB0byB0aGUgZmlyc3QgZXJyb3IuCisKK1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMS54bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTEueG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTEueG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE5IEBACis8aHRtbCB4bWxucz0iaHR0cDovL3d3dy53
My5vcmcvMTk5OS94aHRtbCIgeG1sbnM6Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht
bG5zOmg9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOnQ9Imh0dHA6Ly90Yy5s
YWJzLm9wZXJhLmNvbS8jdGVzdCI+CisgPGhlYWQ+CisgIDx0aXRsZT5kb2N1bWVudC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCk6ICJ0cmlja3kiIGNvbXBvdW5kPC90aXRsZT4KKyAgPHNjcmlwdCBz
cmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keT4KKyAg
PHAgaWQ9InIiPkZBSUwgKHNjcmlwdCBkaWQgbm90IHJ1bik8L3A+ICAKKyAgPHggY2xhc3M9ImEi
Lz4KKyAgPGc6eCBjbGFzcz0iYSIvPgorICA8eCB0OmNsYXNzPSJhIiBoOmNsYXNzPSJhIiBnOmNs
YXNzPSJhIi8+CisgIDxnOnggdDpjbGFzcz0iYSIgaDpjbGFzcz0iYSIgZzpjbGFzcz0iYSIvPgor
ICA8dDp4IGNsYXNzPSJhIiB0OmNsYXNzPSJhIiBoOmNsYXNzPSJhIiBnOmNsYXNzPSJhIi8+Cisg
IDxzY3JpcHQ+CisgICB2YXIgY29sbGVjdGlvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFz
c05hbWUoImEiKSwKKyAgICAgICB0ZXN0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUo
IngiKQorICAgdChjb2xsZWN0aW9uLCBbdGVzdFswXSwgdGVzdFsxXV0pCisgIDwvc2NyaXB0Pgor
IDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRz
QnlDbGFzc05hbWUvMDEyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BBU1MKSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDEyLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTIuaHRt
bAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFz
c05hbWUvMDEyLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKzwhZG9jdHlwZSBo
dG1sPgorPGh0bWwgY2xhc3M9ImEiPgorIDxoZWFkPgorICA8dGl0bGU+ZWxlbWVudC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKCk6IHNpbXBsZTwvdGl0bGU+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHkgY2xhc3M9ImEiPgorICA8
cCBpZD0iciI+RkFJTCAoc2NyaXB0IGRpZCBub3QgcnVuKTwvcD4KKyAgPHNjcmlwdD4gdChkb2N1
bWVudC5ib2R5LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImEiKSwgW10pIDwvc2NyaXB0PgorIDwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvMDEzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMy1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDEzLmh0bWwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTMu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvMDEzLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTcgQEAKKzwhZG9jdHlw
ZSBodG1sPgorPGh0bWwgY2xhc3M9ImEiPgorIDxoZWFkPgorICA8dGl0bGU+ZWxlbWVudC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCk6IGFkZGluZyBhbiBlbGVtZW50PC90aXRsZT4KKyAgPHNjcmlw
dCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keSBj
bGFzcz0iYSI+CisgIDxwIGlkPSJyIj5GQUlMIChzY3JpcHQgZGlkIG5vdCBydW4pPC9wPgorICA8
c2NyaXB0PgorICAgdmFyIGNvbGxlY3Rpb24gPSBkb2N1bWVudC5ib2R5LmdldEVsZW1lbnRzQnlD
bGFzc05hbWUoImEiKSwKKyAgICAgICBlbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ4LXkt
eiIpCisgICBlbGUuY2xhc3NOYW1lID0gImEiCisgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGVsZSkgCisgICB0KGNvbGxlY3Rpb24sIFtlbGVdKQorICA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8
L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
LzAxNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZS8wMTQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5
b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxNC5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDE0Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxNC5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8aHRtbCBjbGFzcz0iYSBBIj4KKyA8
aGVhZD4KKyAgPHRpdGxlPmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoKTogY2FzZSBz
ZW5zaXRpdmUgKHF1aXJrcyBtb2RlKTwvdGl0bGU+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
Y29tbW9uLmpzIj48L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHkgY2xhc3M9ImEgYSI+CisgIDxw
IGlkPSJyIj5GQUlMIChzY3JpcHQgZGlkIG5vdCBydW4pPC9wPgorICA8c2NyaXB0PgorICAgIC8v
IFdlIGRpZmZlciBmcm9tIE9wZXJhJ3MgaW1wbGVtZW50YXRpb24gaGVyZS4gIFdlIGFyZSBjYXNl
LWluc2Vuc2l0aXZlIGluIHF1aXJrcyBtb2RlLgorICAgIC8vIHQoZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZSgiQSBhIiksIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRdKQorICAgIHQo
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiQSBhIiksIFtkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQsIGRvY3VtZW50LmJvZHldKQorICA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2R1bXBO
b2RlTGlzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZS9kdW1wTm9kZUxpc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9kdW1w
Tm9kZUxpc3QtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI2IEBACitMaW5l
IDEKK0xpbmUgMgorTGluZSAzCisKK2xpbmUgNAorbGluZSA1CisKK1tvYmplY3QgSFRNTERpdkVs
ZW1lbnRdLCBbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0s
IGxlbmd0aDogMworW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3QgSFRNTERpdkVsZW1l
bnRdLCBbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MUGFyYWdyYXBoRWxlbWVu
dF0sIGxlbmd0aDogNAorW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3QgSFRNTERpdkVs
ZW1lbnRdLCBsZW5ndGg6IDIKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0IEhUTUxE
aXZFbGVtZW50XSwgbGVuZ3RoOiAyCitsZW5ndGg6IDAKK2xlbmd0aDogMAorbGVuZ3RoOiAwCits
ZW5ndGg6IDAKK2xlbmd0aDogMAorW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIGxlbmd0aDogMQor
W29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3QgSFRNTFBhcmFncmFwaEVsZW1lbnRdLCBs
ZW5ndGg6IDIKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBsZW5ndGg6IDEKK1tvYmplY3QgSFRN
TERpdkVsZW1lbnRdLCBsZW5ndGg6IDEKK2xlbmd0aDogMAorbGVuZ3RoOiAwCitsZW5ndGg6IDAK
K2xlbmd0aDogMAorbGVuZ3RoOiAwCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVs
ZW1lbnRzQnlDbGFzc05hbWUvZHVtcE5vZGVMaXN0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9kdW1wTm9kZUxpc3QuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05h
bWUvZHVtcE5vZGVMaXN0Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKzxodG1s
PgorPGJvZHk+Cis8ZGl2IGNsYXNzPSJvbmUiPkxpbmUgMTxkaXYgY2xhc3M9InR3byI+TGluZSAy
PC9kaXY+PHA+TGluZSA8aT4zPC9pPjwvcD48L2Rpdj4KKzxkaXYgaWQ9InRlc3QiIGNsYXNzPSJv
bmUgdHdvIj48ZGl2IGNsYXNzPSJvbmUgdHdvIj5saW5lIDQ8L2Rpdj48cCBjbGFzcz0idHdvIj5s
aW5lIDU8L3A+PC9kaXY+Cis8cD48b2wgaWQ9ImNvbnNvbGUiPjwvb2w+PC9wPgorPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIGZ1
bmN0aW9uIGxvZyhtZXNzYWdlKQorICAgIHsKKyAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJsaSIpOworICAgICAgICBpdGVtLmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKG1lc3NhZ2UpKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnNvbGUiKS5hcHBlbmRDaGlsZChpdGVtKTsKKyAgICB9CisgICAgCisgICAgTm9kZUxpc3Qu
cHJvdG90eXBlLmR1bXAgPSBmdW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0g
IiI7CisgICAgICAgIHZhciBpID0gMDsKKyAgICAgICAgZm9yICg7IGkgPCB0aGlzLmxlbmd0aDsg
aSsrKQorICAgICAgICAgICAgcmVzdWx0ICs9IHRoaXNbaV0gKyAiLCAiOworICAgICAgICByZXN1
bHQgKz0gImxlbmd0aDogIiArIGk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisg
ICAgdHJ5IHsKKyAgICAgICAgdmFyIGVsbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0
Iik7CisKKyAgICAgICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZSIp
LmR1bXAoKSk7CisgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0
d28iKS5kdW1wKCkpOworICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgib25lIHR3byIpLmR1bXAoKSk7CisgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCJvbmVcdFx0XG4gXGZ0d28iKS5kdW1wKCkpOworICAgICAgICBsb2coZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiIikuZHVtcCgpKTsKKyAgICAgICAgbG9nKGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZXR3byIpLmR1bXAoKSk7CisgICAgICAgIGxv
Zyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCkuZHVtcCgpKTsKKyAgICAgICAgbG9n
KGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUobnVsbCkuZHVtcCgpKTsKKyAgICAgICAg
bG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUodW5kZWZpbmVkKS5kdW1wKCkpOwor
CisgICAgICAgIGxvZyhlbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgib25lIikuZHVtcCgpKTsK
KyAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJ0d28iKS5kdW1wKCkpOwor
ICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZSB0d28iKS5kdW1wKCkp
OworICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZVx0XHRcbiBcZnR3
byIpLmR1bXAoKSk7CisgICAgICAgIGxvZyhlbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiIiku
ZHVtcCgpKTsKKyAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJvbmV0d28i
KS5kdW1wKCkpOworICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoKS5kdW1w
KCkpOworICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05hbWUobnVsbCkuZHVtcCgp
KTsKKyAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHVuZGVmaW5lZCkuZHVt
cCgpKTsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBsb2coIkV4Y2VwdGlvbjogIiArIGV4
LmRlc2NyaXB0aW9uKTsKKyAgICB9Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAxLWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lL2FycmF5LzAwMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BBU1MKSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAxLmh0bWwKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJheS8w
MDEuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRz
QnlDbGFzc05hbWUvYXJyYXkvMDAxLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTMgQEAK
KzwhZG9jdHlwZSBodG1sPgorPGh0bWwgY2xhc3M9ImEKK2IiPgorIDxoZWFkPgorICA8dGl0bGU+
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhcnJheSk6ICJhXG4iPC90aXRsZT4KKyAg
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorIDwvaGVhZD4K
KyA8Ym9keSBjbGFzcz0iYQorIj4KKyAgPHAgaWQ9InIiPkZBSUwgKHNjcmlwdCBkaWQgbm90IHJ1
bik8L3A+CisgIDxzY3JpcHQ+IHQoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShbImFc
biJdKSwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgZG9jdW1lbnQuYm9keV0pIDwvc2NyaXB0
PgorIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1l
bnRzQnlDbGFzc05hbWUvYXJyYXkvMDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMi1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lL2FycmF5LzAwMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEg
QEAKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05h
bWUvYXJyYXkvMDAyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJheS8wMDIuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAyLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsMTIgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWwgY2xhc3M9
ImEKK2IiPgorIDxoZWFkPgorICA8dGl0bGU+ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZShhcnJheSk6ICJiIiwiYSI8L3RpdGxlPgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2Nv
bW1vbi5qcyI+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5IGNsYXNzPSJiLGEiPgorICA8cCBp
ZD0iciI+RkFJTCAoc2NyaXB0IGRpZCBub3QgcnVuKTwvcD4KKyAgPHNjcmlwdD4gdChkb2N1bWVu
dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFsiYiIsICJhIl0pLCBbZG9jdW1lbnQuYm9keV0pIDwv
c2NyaXB0PgorIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dl
dEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMy1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEgQEAKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvYXJyYXkvMDAzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJheS8wMDMuaHRtbAkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAzLmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+
CisgPGhlYWQ+CisgIDx0aXRsZT5kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGFycmF5
KTogImIgYSI8L3RpdGxlPgorICA8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2NvbW1vbi5qcyI+
PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5IGNsYXNzPSJhIGIiPgorICA8cCBpZD0iciI+RkFJ
TCAoc2NyaXB0IGRpZCBub3QgcnVuKTwvcD4KKyAgPHNjcmlwdD4gdChkb2N1bWVudC5nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lKFsiYiBhIl0pLCBbZG9jdW1lbnQuYm9keV0pIDwvc2NyaXB0PgorIDwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvYXJyYXkvMDA0LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwNC1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lL2FycmF5LzAwNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEgQEAKK1BB
U1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJy
YXkvMDA0Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS9hcnJheS8wMDQuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDA0Lmh0bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTEgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWwgY2xhc3M9ImEsYiI+
CisgPGhlYWQ+CisgIDx0aXRsZT5lbGVtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYXJyYXkp
OiAiYSIsICJiIjwvdGl0bGU+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvY29tbW9uLmpz
Ij48L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHkgY2xhc3M9ImEsYiB4Ij4KKyAgPHAgaWQ9InIi
IGNsYXNzPSJhLGJ4Ij5GQUlMIChzY3JpcHQgZGlkIG5vdCBydW4pPC9wPgorICA8c2NyaXB0IGNs
YXNzPSJ4YSxiIj4gdChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZShbIlxmYSIsImJcbiJdKSwgW2RvY3VtZW50LmJvZHldKSA8L3NjcmlwdD4KKyA8L2JvZHk+
Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lL3Jlc291cmNlcy9jb21tb24uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9yZXNvdXJjZXMvY29tbW9uLmpzCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9yZXNvdXJj
ZXMvY29tbW9uLmpzCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxIEBACisvLyBydW5zIGEgdGVz
dCBhbmQgd3JpdGVzIGEgbG9nCitmdW5jdGlvbiB0KGNvbGxlY3Rpb24sIGVsZW1lbnRzKSB7Cisg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIuZHVtcEFzVGV4dCgpOworCisgIHZhciBsb2cgPSAiIiwKKyAgICAgIHIgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgiciIpLAorICAgICAgcGFzcyA9IHRydWUKKyAgaWYoY29sbGVjdGlvbi5s
ZW5ndGggIT0gZWxlbWVudHMubGVuZ3RoKSB7CisgICAgcGFzcyA9IGZhbHNlCisgICAgbG9nICs9
ICJHb3QgIiArIGNvbGxlY3Rpb24ubGVuZ3RoICsgIiBlbGVtZW50cywgZXhwZWN0ZWQgIiArIGVs
ZW1lbnRzLmxlbmd0aCArICIuICIKKyAgfQorICBmb3IodmFyIGkgPSAwLCBtYXggPSBjb2xsZWN0
aW9uLmxlbmd0aCA+IGVsZW1lbnRzLmxlbmd0aCA/IGVsZW1lbnRzLmxlbmd0aCA6IGNvbGxlY3Rp
b24ubGVuZ3RoOyBpIDwgbWF4OyBpKyspIHsKKyAgICBpZihjb2xsZWN0aW9uW2ldICE9IGVsZW1l
bnRzW2ldKSB7CisgICAgICBwYXNzID0gZmFsc2UKKyAgICAgIGxvZyArPSAiR290IGVsZW1lbnQg
YCIgKyBjb2xsZWN0aW9uW2ldLnRhZ05hbWUgKyAiYCAoIiArIGNvbGxlY3Rpb25baV0ubmFtZXNw
YWNlVVJJICsgIikiCisgICAgICBsb2cgKz0gIiwgZXhwZWN0ZWQgZWxlbWVudCBgIiArIGVsZW1l
bnRzW2ldLnRhZ05hbWUgKyAiYCAoIiArIGVsZW1lbnRzW2ldLm5hbWVzcGFjZVVSSSArICIpLiAi
CisgICAgfQorICB9CisgIHIudGV4dENvbnRlbnQgPSBwYXNzID8gIlBBU1MiIDogIkZBSUwgKCIg
KyBsb2cgKyAiKSIKK30K
</data>
<flag name="review"
          id="7725"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>17882</attachid>
            <date>2007-12-13 14:22:22 -0800</date>
            <delta_ts>2007-12-14 11:01:26 -0800</delta_ts>
            <desc>updated patch (now with more Vector)</desc>
            <filename>gebcn3.diff</filename>
            <type>text/plain</type>
            <size>72709</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyODY5NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODEgQEAKKzIwMDctMTItMTMgIERhdmlkIFNtaXRoICA8Y2F0ZmlzaC5tYW5AZ21h
aWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IC0gZml4IGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0OTU1CisgICAg
ICAgICAgSW1wbGVtZW50IGdldEVsZW1lbnRzQnlDbGFzc05hbWUuCisKKyAgICAgICAgVGhpcyBw
YXRjaCBhbHNvIHJlbmFtZXMgQXRvbWljU3RyaW5nTGlzdCB0byBDbGFzc05hbWVzIHRvIGJldHRl
ciByZWZsZWN0IGl0cyBhY3R1YWwgdXNlLAorICAgICAgICBhbmQgdGFrZXMgYWR2YW50YWdlIG9m
IGFkbWl0dGluZyB0aGF0IGl0J3MgY2xhc3Mtc3BlY2lmaWMgdG8gZW5jYXBzdWxhdGUgY2xhc3Mg
YXR0cmlidXRlIAorICAgICAgICBwYXJzaW5nIHNvIGl0IGNhbiBiZSBzaGFyZWQuICBJdCBhbHNv
IGNoYW5nZXMgdGhlIGNsYXNzIHRvIHVzZSBhIFZlY3RvciwgcmF0aGVyIHRoYW4gYSBsaW5rZWQK
KyAgICAgICAgbGlzdCB0byBzdG9yZSB0aGUgY2xhc3MgbmFtZXMuCisKKyAgICAgICAgVGVzdHM6
IGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAxLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAyLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAzLmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA0Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA1Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA2Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA3Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA4Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA5Lmh0bWwKKyAgICAgICAgICAgICAg
IGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDEwLnhtbAorICAgICAgICAgICAgICAg
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTEueG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMi5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMy5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxNC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMS5odG1sCisgICAgICAgICAg
ICAgICBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMi5odG1sCisgICAg
ICAgICAgICAgICBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMy5odG1s
CisgICAgICAgICAgICAgICBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAw
NC5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2R1
bXBOb2RlTGlzdC5odG1sCisKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6IEZpbGUgcmVuYW1lcyBhbmQgYWRkaXRpb25zLgorICAgICAgICAqIGNzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6Om1hdGNo
UnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tPbmVTZWxl
Y3Rvcik6CisgICAgICAgICogZG9tL0F0b21pY1N0cmluZ0xpc3QuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBkb20vQ2xhc3NOYW1lcy5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NO
YW1lczo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lczo6cGFyc2VDbGFz
c0F0dHJpYnV0ZSk6CisgICAgICAgICogZG9tL0NsYXNzTmFtZXMuaDogQ29waWVkIGZyb20gZG9t
L0F0b21pY1N0cmluZ0xpc3QuaC4KKyAgICAgICAgKFdlYkNvcmU6OkNsYXNzTmFtZXM6OkNsYXNz
TmFtZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOYW1lczo6c2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDbGFzc05hbWVzOjpjbGVhcik6CisgICAgICAgIChXZWJDb3JlOjpDbGFzc05hbWVz
OjpvcGVyYXRvcltdKToKKyAgICAgICAgKFdlYkNvcmU6OmlzQ2xhc3NXaGl0ZXNwYWNlKToKKyAg
ICAgICAgKiBkb20vQ2xhc3NOb2RlTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
Q2xhc3NOb2RlTGlzdDo6Q2xhc3NOb2RlTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpDbGFzc05v
ZGVMaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6Q2xhc3NOb2RlTGlzdDo6aXRlbSk6
CisgICAgICAgIChXZWJDb3JlOjpDbGFzc05vZGVMaXN0Ojpub2RlTWF0Y2hlcyk6CisgICAgICAg
ICogZG9tL0NsYXNzTm9kZUxpc3QuaDogQWRkZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpnZXRFbGVtZW50c0J5TmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAg
KiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRDbGFzc05h
bWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmdldEVsZW1lbnRzQnlDbGFzc05hbWUp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuaWRsOgor
ICAgICAgICAqIGRvbS9OYW1lTm9kZUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmFtZU5v
ZGVMaXN0OjpOYW1lTm9kZUxpc3QpOgorICAgICAgICAoV2ViQ29yZTo6TmFtZU5vZGVMaXN0Ojpp
dGVtKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVOb2RlTGlzdDo6bm9kZU1hdGNoZXMpOgorICAg
ICAgICAqIGRvbS9OYW1lTm9kZUxpc3QuaDoKKyAgICAgICAgKiBkb20vTmFtZWRNYXBwZWRBdHRy
TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTWFwcGVkQXR0ck1hcDo6Y2xlYXJBdHRy
aWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hbWVkTWFwcGVkQXR0ck1hcDo6cGFyc2VDbGFz
c0F0dHJpYnV0ZSk6CisgICAgICAgICogZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5oOgorICAgICAg
ICAoV2ViQ29yZTo6TmFtZWRNYXBwZWRBdHRyTWFwOjpnZXRDbGFzc05hbWVzKToKKyAgICAgICAg
KiBkb20vU3R5bGVkRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVtZW50
OjpnZXRDbGFzc05hbWVzKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL3RleHQvUGxhdGZvcm1TdHJpbmcuaDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
cmluZzo6aXNMb3dlcik6CisKIDIwMDctMTItMTMgIEp1c3RpbiBHYXJjaWEgIDxqdXN0aW4uZ2Fy
Y2lhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyODY3
NikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjQwLDcgKzE2NDAsNiBAQAogCQk5M0YxOTlCRDA4MjQ1RTU5MDAxRTlBQkMg
LyogQVhPYmplY3RDYWNoZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTU5OThBNUMwNTJCNTlDQzAwMTdBNkMxIC8qIEFYT2JqZWN0Q2FjaGUuaCAqLzsg
fTsKIAkJOTNGMTk5QkUwODI0NUU1OTAwMUU5QUJDIC8qIEJsb2NrRXhjZXB0aW9ucy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNjVBNjQwRjAwNTMzQkIx
RjAwODVFNzc3IC8qIEJsb2NrRXhjZXB0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzRjE5OUMyMDgyNDVFNTkwMDFFOUFCQyAvKiBXZWJD
b3JlS2V5R2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA4NEIyQjFGNzA1NkJFRjNBMDBEMkI3NzEgLyogV2ViQ29yZUtleUdlbmVyYXRvci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCTkzRjE5
OUNGMDgyNDVFNTkwMDFFOUFCQyAvKiBBdG9taWNTdHJpbmdMaXN0LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCMzY0NzA1QzlENUUyMDBFNDI5MDIg
LyogQXRvbWljU3RyaW5nTGlzdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCTkzRjE5OURFMDgyNDVFNTkwMDFFOUFCQyAvKiBQb3NpdGlvbi5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkU5MUZDOEIwNjEz
MzY2NjAwNUUzNzkwIC8qIFBvc2l0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTNGMTk5RTUwODI0NUU1OTAwMUU5QUJDIC8qIEhUTUxDYW52
YXNFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MUY2QTNENjA2NjNCRjA0MDA0RDI5MTkgLyogSFRNTENhbnZhc0VsZW1lbnQuaCAqLzsgfTsK
IAkJOTNGMTk5RTcwODI0NUU1OTAwMUU5QUJDIC8qIENsaXBib2FyZE1hYy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkQ5MDY2MEIwNjY1RDkzNzAwNkI2
RjFBIC8qIENsaXBib2FyZE1hYy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CkBAIC0zNTYzLDYgKzM1NjIsOCBAQAogCQlCQzQ5MThDOTBCRkVBMDUwMDA5
RDYzMTYgLyogSlNIVE1MSUZyYW1lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0OTE4QzMwQkZFQTA1MDAwOUQ2MzE2IC8qIEpTSFRNTElG
cmFtZUVsZW1lbnQuaCAqLzsgfTsKIAkJQkM0OTFCNzgwQzAyM0VGRDAwOUQ2MzE2IC8qIEpTSFRN
TE1hcnF1ZWVFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEJDNDkxQjc2MEMwMjNFRkQwMDlENjMxNiAvKiBKU0hUTUxNYXJxdWVlRWxlbWVu
dC5jcHAgKi87IH07CiAJCUJDNDkxQjc5MEMwMjNFRkQwMDlENjMxNiAvKiBKU0hUTUxNYXJxdWVl
RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM0OTFCNzcwQzAyM0VGRDAwOUQ2MzE2IC8qIEpTSFRNTE1hcnF1ZWVFbGVtZW50LmggKi87IH07
CisJCUJDNEJGOUU0MEQxMUUxMzMwMDdEMjQ3RiAvKiBDbGFzc05hbWVzLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDNEJGOUUyMEQxMUUxMzMwMDdE
MjQ3RiAvKiBDbGFzc05hbWVzLmNwcCAqLzsgfTsKKwkJQkM0QkY5RTUwRDExRTEzMzAwN0QyNDdG
IC8qIENsYXNzTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEJDNEJGOUUzMEQxMUUxMzMwMDdEMjQ3RiAvKiBDbGFzc05hbWVzLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkM0RURFRjQwQzA4RjNG
QjAwN0VERDQ5IC8qIEpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM0RURFRjMwQzA4RjNGQjAwN0VERDQ5
IC8qIEpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlCQzUxNTZFODBDMDNC
NzQxMDA4QkIwRUUgLyogRE9NSFRNTE1hcnF1ZWVFbGVtZW50LmggaW4gQ29weSBHZW5lcmF0ZWQg
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzUxNTZFNTBDMDNC
NzQxMDA4QkIwRUUgLyogRE9NSFRNTE1hcnF1ZWVFbGVtZW50LmggKi87IH07CiAJCUJDNTE1NkU5
MEMwM0I3NDEwMDhCQjBFRSAvKiBET01IVE1MTWFycXVlZUVsZW1lbnQubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzUxNTZFNjBDMDNCNzQxMDA4QkIw
RUUgLyogRE9NSFRNTE1hcnF1ZWVFbGVtZW50Lm1tICovOyB9OwpAQCAtMzYyMCw2ICszNjIxLDgg
QEAKIAkJQkM4MjQzMkMwRDBDRThBMjAwNDYwQzhGIC8qIEpTVm9pZENhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzgyNDMyODBEMENFOEEy
MDA0NjBDOEYgLyogSlNWb2lkQ2FsbGJhY2suaCAqLzsgfTsKIAkJQkM4MjQzRTgwRDBDRkQ3NTAw
NDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEJDODI0M0U2MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0
dXJlcy5jcHAgKi87IH07CiAJCUJDODI0M0U5MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0
dXJlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4
MjQzRTcwRDBDRkQ3NTAwNDYwQzhGIC8qIFdpbmRvd0ZlYXR1cmVzLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJQkM5MDRCNzYwRDEwOTk4RjAwNjgw
RDMyIC8qIENsYXNzTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQkM5MDRCNzIwRDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3Qu
Y3BwICovOyB9OworCQlCQzkwNEI3NzBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MDRCNzMw
RDEwOTk4RjAwNjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCAqLzsgfTsKIAkJQkM5MjZGODAwQzA1
NTI0NzAwODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzkyNkY3RTBDMDU1MjQ3MDA4Mjc3NkIg
LyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCAqLzsgfTsKIAkJQkM5MjZGODEwQzA1NTI0NzAw
ODI3NzZCIC8qIEpTSFRNTEZyYW1lU2V0RWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM5MjZGN0YwQzA1NTI0NzAwODI3NzZCIC8qIEpTSFRN
TEZyYW1lU2V0RWxlbWVudC5oICovOyB9OwogCQlCQzk0RDEwODBDMjc0Rjg4MDA2QkM2MTcgLyog
UGxhdGZvcm1TY3JlZW5NYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzk0RDEwNzBDMjc0Rjg4MDA2QkM2MTcgLyogUGxhdGZvcm1TY3JlZW5NYWMu
bW0gKi87IH07CkBAIC03NTQwLDcgKzc1NDMsNiBAQAogCQlCQzMwNUM3NzBDMDc2QkIzMDBDRDIw
RjAgLyogSlNIVE1MT2JqZWN0RWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNIVE1MT2JqZWN0RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUJDMzA1Qzc4MEMwNzZCQjMwMENEMjBGMCAvKiBKU0hUTUxPYmplY3RFbGVtZW50
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0hUTUxPYmplY3RFbGVtZW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDMzA1Q0EzMEMwNzgxQkIwMENEMjBG
MCAvKiBKU0hUTUxPYmplY3RFbGVtZW50Q3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlCQzNCMzY0NzA1QzlENUUyMDBFNDI5MDIgLyogQXRvbWljU3Ry
aW5nTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBpbmRlbnRXaWR0aCA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBdG9taWNTdHJpbmdMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IHRhYldpZHRo
ID0gODsgdXNlc1RhYnMgPSAwOyB9OwogCQlCQzNDMzlCNDBDMEQzRDhEMDA1RjREN0EgLyogSlNN
ZWRpYUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTTWVk
aWFMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjUwQzBEM0Q4
RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU01lZGlhTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNGQ0FB
ODBBQzNEQjU4MDBCQTU0QUQgLyogUGxhdGZvcm1TY3JvbGxCYXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtU2Nyb2xsQmFyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC03NTY1LDYgKzc1NjcsOCBAQAogCQlCQzQ5MUI0RTBDMDIzRTJEMDA5RDYz
MTYgLyogSFRNTE1hcnF1ZWVFbGVtZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBIVE1M
TWFycXVlZUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzQ5MUI3
NjBDMDIzRUZEMDA5RDYzMTYgLyogSlNIVE1MTWFycXVlZUVsZW1lbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTSFRNTE1hcnF1ZWVFbGVtZW50LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM0OTFCNzcwQzAyM0VGRDAwOUQ2MzE2IC8qIEpT
SFRNTE1hcnF1ZWVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0hUTUxNYXJxdWVlRWxlbWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzRC
RjlFMjBEMTFFMTMzMDA3RDI0N0YgLyogQ2xhc3NOYW1lcy5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBDbGFzc05hbWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQkM0QkY5RTMwRDExRTEzMzAwN0QyNDdGIC8qIENsYXNzTmFtZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2xhc3NOYW1lcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQzRFREVGMzBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBwbGV0RWxl
bWVudEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hU
TUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM1MTU2RTUwQzAzQjc0MTAwOEJCMEVFIC8qIERPTUhUTUxNYXJxdWVlRWxlbWVudC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NSFRNTE1hcnF1ZWVFbGVtZW50Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNTE1NkU2MEMwM0I3NDEwMDhCQjBFRSAvKiBE
T01IVE1MTWFycXVlZUVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3Bw
OyBwYXRoID0gRE9NSFRNTE1hcnF1ZWVFbGVtZW50Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtNzYyMyw2ICs3NjI3LDggQEAKIAkJQkM4MjQzMjgwRDBDRThBMjAwNDYwQzhGIC8q
IEpTVm9pZENhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVm9p
ZENhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODI0M0U2MEQwQ0ZE
NzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXaW5kb3dGZWF0dXJlcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUJDODI0M0U3MEQwQ0ZENzUwMDQ2MEM4RiAvKiBXaW5kb3dGZWF0dXJlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXaW5kb3dGZWF0dXJlcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlCQzkwNEI3MjBEMTA5OThGMDA2ODBEMzIgLyogQ2xhc3NOb2Rl
TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDbGFzc05vZGVM
aXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM5MDRCNzMwRDEwOTk4RjAw
NjgwRDMyIC8qIENsYXNzTm9kZUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gQ2xhc3NOb2RlTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkyNkY3
RTBDMDU1MjQ3MDA4Mjc3NkIgLyogSlNIVE1MRnJhbWVTZXRFbGVtZW50LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzkyNkY3RjBDMDU1MjQ3MDA4Mjc3NkIgLyog
SlNIVE1MRnJhbWVTZXRFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBKU0hUTUxGcmFtZVNldEVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QkM5NEQxMDcwQzI3NEY4ODAwNkJDNjE3IC8qIFBsYXRmb3JtU2NyZWVuTWFjLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBsYXRmb3JtU2NyZWVuTWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTIwOTIsNyArMTIwOTgsNiBAQAogCQlGNTIz
RDMyNDAyREU0NDc4MDE4NjM1Q0EgLyogZG9tICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKLQkJCQlCQzNCMzY0NzA1QzlENUUyMDBFNDI5MDIgLyogQXRvbWljU3Ry
aW5nTGlzdC5oICovLAogCQkJCUE4QzRBN0ZDMDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyLmNwcCAq
LywKIAkJCQlBOEM0QTdGQjA5RDU2MzI3MDAwM0FDOEQgLyogQXR0ci5oICovLAogCQkJCTkzRUVD
MUU1MDlDMjg3NzcwMEM1MTVEMSAvKiBBdHRyLmlkbCAqLywKQEAgLTEyMTEwLDYgKzEyMTE1LDEw
IEBACiAJCQkJOTNFRUMxRTYwOUMyODc3NzAwQzUxNUQxIC8qIENoYXJhY3RlckRhdGEuaWRsICov
LAogCQkJCUE4MTg3MjFBMDk3N0QzQzAwMDU4MjZEOSAvKiBDaGlsZE5vZGVMaXN0LmNwcCAqLywK
IAkJCQlBODE4NzIxNTA5NzdEM0MwMDA1ODI2RDkgLyogQ2hpbGROb2RlTGlzdC5oICovLAorCQkJ
CUJDNEJGOUUyMEQxMUUxMzMwMDdEMjQ3RiAvKiBDbGFzc05hbWVzLmNwcCAqLywKKwkJCQlCQzRC
RjlFMzBEMTFFMTMzMDA3RDI0N0YgLyogQ2xhc3NOYW1lcy5oICovLAorCQkJCUJDOTA0QjcyMEQx
MDk5OEYwMDY4MEQzMiAvKiBDbGFzc05vZGVMaXN0LmNwcCAqLywKKwkJCQlCQzkwNEI3MzBEMTA5
OThGMDA2ODBEMzIgLyogQ2xhc3NOb2RlTGlzdC5oICovLAogCQkJCUE3ODQ5NDFBMEI1RkU1MDcw
MDFFMjM3QSAvKiBDbGlwYm9hcmQuY3BwICovLAogCQkJCTg1MDMxQjI4MEE0NEVGQzcwMEY5OTJF
MCAvKiBDbGlwYm9hcmQuaCAqLywKIAkJCQk0QjhBRjRBOTBCMUNFMDJCMDA2ODc2OTAgLyogQ2xp
cGJvYXJkQWNjZXNzUG9saWN5LmggKi8sCkBAIC0xMjI3MCw3ICsxMjI3OSw2IEBACiAJCQkJQkNC
MTZCOEQwOTc5QjAxNDAwNDY3NzQxIC8qIEFycmF5SW1wbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QjJDM0RBMUYwRDAwNkMxRDAwRUY2RjI2IC8qIEF0b21pY1N0cmluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjJDM0RBMjAwRDAwNkMxRDAwRUY2RjI2IC8qIEF0b21pY1N0cmluZ0ltcGwuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTkzRjE5OUNGMDgyNDVFNTkwMDFFOUFCQyAvKiBBdG9taWNTdHJpbmdM
aXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQlBOEM0QTgwRDA5RDU2MzI3MDAwM0FDOEQgLyogQXR0
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQThDNEE4MEIwOUQ1NjMyNzAwMDNBQzhEIC8qIEF0dHJp
YnV0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0Qzc2NkMwQ0U5MjNBMTAwN0VGM0NEIC8qIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmggaW4gSGVhZGVycyAqLywKQEAgLTE0MDgzLDYgKzE0MDkx
LDggQEAKIAkJCQk5MzMwOURGODA5OUU2NDkyMDA1NkU1ODEgLyogbWFya3VwLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk5MzMwOUUxRTA5OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJsZV91bml0cy5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTFDQkZDOTkwRDEwRTQ4MzAwMkRCRjUxIC8qIENhY2hlZFBhZ2VQ
bGF0Zm9ybURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDOTA0Qjc3MEQxMDk5OEYwMDY4MEQz
MiAvKiBDbGFzc05vZGVMaXN0LmggaW4gSGVhZGVycyAqLywKKwkJCQlCQzRCRjlFNTBEMTFFMTMz
MDA3RDI0N0YgLyogQ2xhc3NOYW1lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25s
eUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNTc5Miw2ICsxNTgw
Miw4IEBACiAJCQkJOTMzMDlERjcwOTlFNjQ5MjAwNTZFNTgxIC8qIG1hcmt1cC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5MzMwOUUxRDA5OUU2NDkyMDA1NkU1ODEgLyogdmlzaWJsZV91bml0cy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5M0EzOEI0QjBEMEU1ODA4MDA2ODcyQzIgLyogRWRpdG9y
Q29tbWFuZC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzkwNEI3NjBEMTA5OThGMDA2ODBEMzIg
LyogQ2xhc3NOb2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzRCRjlFNDBEMTFFMTMz
MDA3RDI0N0YgLyogQ2xhc3NOYW1lcy5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUv
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1N0
eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiAyODY3NikKKysrIFdlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTMsOCArMzkzLDkgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjptYXRjaFJ1bGVzKENTU1J1bAogICAgIGlmIChlbGVtZW50LT5oYXNJRCgp
KQogICAgICAgICBtYXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0SURSdWxlcyhlbGVtZW50LT5n
ZXRJREF0dHJpYnV0ZSgpLmltcGwoKSksIGZpcnN0UnVsZUluZGV4LCBsYXN0UnVsZUluZGV4KTsK
ICAgICBpZiAoZWxlbWVudC0+aGFzQ2xhc3MoKSkgewotICAgICAgICBmb3IgKGNvbnN0IEF0b21p
Y1N0cmluZ0xpc3QqIHNpbmdsZUNsYXNzID0gZWxlbWVudC0+Z2V0Q2xhc3NMaXN0KCk7IHNpbmds
ZUNsYXNzOyBzaW5nbGVDbGFzcyA9IHNpbmdsZUNsYXNzLT5uZXh0KCkpCi0gICAgICAgICAgICBt
YXRjaFJ1bGVzRm9yTGlzdChydWxlcy0+Z2V0Q2xhc3NSdWxlcyhzaW5nbGVDbGFzcy0+c3RyaW5n
KCkuaW1wbCgpKSwgZmlyc3RSdWxlSW5kZXgsIGxhc3RSdWxlSW5kZXgpOworICAgICAgICBjb25z
dCBDbGFzc05hbWVzJiBjbGFzc05hbWVzID0gKmVsZW1lbnQtPmdldENsYXNzTmFtZXMoKTsKKyAg
ICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjbGFzc05hbWVzLnNpemUoKTsgKytpKQorICAg
ICAgICAgICAgbWF0Y2hSdWxlc0Zvckxpc3QocnVsZXMtPmdldENsYXNzUnVsZXMoY2xhc3NOYW1l
c1tpXS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAgICAgfQogICAg
IG1hdGNoUnVsZXNGb3JMaXN0KHJ1bGVzLT5nZXRUYWdSdWxlcyhlbGVtZW50LT5sb2NhbE5hbWUo
KS5pbXBsKCkpLCBmaXJzdFJ1bGVJbmRleCwgbGFzdFJ1bGVJbmRleCk7CiAgICAgbWF0Y2hSdWxl
c0Zvckxpc3QocnVsZXMtPmdldFVuaXZlcnNhbFJ1bGVzKCksIGZpcnN0UnVsZUluZGV4LCBsYXN0
UnVsZUluZGV4KTsKQEAgLTE0MzQsMTIgKzE0MzUsMTMgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9y
OjpjaGVja09uZVNlbGVjdG9yKAogICAgICAgICBpZiAoc2VsLT5tX21hdGNoID09IENTU1NlbGVj
dG9yOjpDbGFzcykgewogICAgICAgICAgICAgaWYgKCFlLT5oYXNDbGFzcygpKQogICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIGZvciAoY29uc3QgQXRvbWljU3RyaW5n
TGlzdCogYyA9IGUtPmdldENsYXNzTGlzdCgpOyBjOyBjID0gYy0+bmV4dCgpKQotICAgICAgICAg
ICAgICAgIGlmIChjLT5zdHJpbmcoKSA9PSBzZWwtPm1fdmFsdWUpCisgICAgICAgICAgICBjb25z
dCBDbGFzc05hbWVzJiBjbGFzc05hbWVzID0gKmUtPmdldENsYXNzTmFtZXMoKTsKKyAgICAgICAg
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2xhc3NOYW1lcy5zaXplKCk7ICsraSkgeworICAg
ICAgICAgICAgICAgIGlmIChjbGFzc05hbWVzW2ldID09IHNlbC0+bV92YWx1ZSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoc2VsLT5tX21hdGNoID09IENT
U1NlbGVjdG9yOjpJZCkKKyAgICAgICAgfSBlbHNlIGlmIChzZWwtPm1fbWF0Y2ggPT0gQ1NTU2Vs
ZWN0b3I6OklkKQogICAgICAgICAgICAgcmV0dXJuIGUtPmhhc0lEKCkgJiYgZS0+Z2V0SURBdHRy
aWJ1dGUoKSA9PSBzZWwtPm1fdmFsdWU7CiAgICAgICAgIGVsc2UgaWYgKHN0eWxlICYmIChlICE9
IGVsZW1lbnQgfHwgIXN0eWxlZEVsZW1lbnQgfHwgKCFzdHlsZWRFbGVtZW50LT5pc01hcHBlZEF0
dHJpYnV0ZShzZWwtPm1fYXR0cikgJiYgc2VsLT5tX2F0dHIgIT0gdHlwZUF0dHIgJiYgc2VsLT5t
X2F0dHIgIT0gcmVhZG9ubHlBdHRyKSkpIHsKICAgICAgICAgICAgIHN0eWxlLT5zZXRBZmZlY3Rl
ZEJ5QXR0cmlidXRlU2VsZWN0b3JzKCk7IC8vIFNwZWNpYWwtY2FzZSB0aGUgInR5cGUiIGFuZCAi
cmVhZG9ubHkiIGF0dHJpYnV0ZXMgc28gaW5wdXQgZm9ybSBjb250cm9scyBjYW4gc2hhcmUgc3R5
bGUuCkluZGV4OiBXZWJDb3JlL2RvbS9BdG9taWNTdHJpbmdMaXN0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vQXRvbWljU3RyaW5nTGlzdC5oCShyZXZpc2lvbiAyODY3NikKKysrIFdlYkNv
cmUvZG9tL0F0b21pY1N0cmluZ0xpc3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1MSArMCwwIEBA
Ci0vKgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3Ig
S0RFLgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgotICoK
LSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1
dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5
IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlz
IGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAq
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqCi0gKi8KLQot
I2lmbmRlZiBBdG9taWNTdHJpbmdMaXN0X2gKLSNkZWZpbmUgQXRvbWljU3RyaW5nTGlzdF9oCi0K
LSNpbmNsdWRlICJBdG9taWNTdHJpbmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBBdG9taWNTdHJpbmdMaXN0IHsKLXB1YmxpYzoKLSAgICBBdG9taWNTdHJpbmdMaXN0KCkgOiBt
X25leHQoMCkge30KLSAgICBBdG9taWNTdHJpbmdMaXN0KGNvbnN0IEF0b21pY1N0cmluZyYgc3Ry
LCBBdG9taWNTdHJpbmdMaXN0KiBuID0gMCkgOiBtX3N0cmluZyhzdHIpLCBtX25leHQobikge30K
LSAgICB+QXRvbWljU3RyaW5nTGlzdCgpIHsgZGVsZXRlIG1fbmV4dDsgfQotICAgIAotICAgIEF0
b21pY1N0cmluZ0xpc3QqIG5leHQoKSBjb25zdCB7IHJldHVybiBtX25leHQ7IH0KLSAgICB2b2lk
IHNldE5leHQoQXRvbWljU3RyaW5nTGlzdCogbikgeyBtX25leHQgPSBuOyB9Ci0gICAgY29uc3Qg
QXRvbWljU3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIHZv
aWQgc2V0U3RyaW5nKGNvbnN0IEF0b21pY1N0cmluZyYgc3RyKSB7IG1fc3RyaW5nID0gc3RyOyB9
Ci0KLSAgICBBdG9taWNTdHJpbmdMaXN0KiBjbG9uZSgpIHsgcmV0dXJuIG5ldyBBdG9taWNTdHJp
bmdMaXN0KG1fc3RyaW5nLCBtX25leHQgPyBtX25leHQtPmNsb25lKCkgOiAwKTsgfQotICAgIHZv
aWQgY2xlYXIoKSB7IG1fc3RyaW5nID0gbnVsbEF0b207IGRlbGV0ZSBtX25leHQ7IG1fbmV4dCA9
IDA7IH0KLSAgICAKLXByaXZhdGU6Ci0gICAgQXRvbWljU3RyaW5nIG1fc3RyaW5nOwotICAgIEF0
b21pY1N0cmluZ0xpc3QqIG1fbmV4dDsKLX07Ci0KLX0KLQotI2VuZGlmCkluZGV4OiBXZWJDb3Jl
L2RvbS9DbGFzc05hbWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9DbGFzc05hbWVz
LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NsYXNzTmFtZXMuY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IERhdmlkIFNt
aXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAq
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg
dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFy
eSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZ
SU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp
b24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIx
MTEtMTMwNywgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJDbGFz
c05hbWVzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2Jvb2wgQ2xhc3NOYW1lczo6
Y29udGFpbnMoY29uc3QgQXRvbWljU3RyaW5nJiBzdHIpIGNvbnN0IAoreworICAgIGlmICghbV9u
YW1lVmVjdG9yKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IG1fbmFtZVZlY3Rvci0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCgqbV9uYW1l
VmVjdG9yKVtpXSA9PSBzdHIpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQ2xhc3NOYW1lczo6cGFyc2VDbGFzc0F0dHJpYnV0
ZShjb25zdCBTdHJpbmcmIGNsYXNzU3RyLCBjb25zdCBib29sIGluQ29tcGF0TW9kZSkKK3sKKyAg
ICBpZiAoIW1fbmFtZVZlY3RvcikKKyAgICAgICAgbV9uYW1lVmVjdG9yLnNldChuZXcgVmVjdG9y
PEF0b21pY1N0cmluZz4pOworICAgIGVsc2UKKyAgICAgICAgbV9uYW1lVmVjdG9yLT5jbGVhcigp
OworCisgICAgaWYgKGNsYXNzU3RyLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
U3RyaW5nIGNsYXNzQXR0ciA9IGluQ29tcGF0TW9kZSA/IAorICAgICAgICAoY2xhc3NTdHIuaXNM
b3dlcigpID8gY2xhc3NTdHIgOiBjbGFzc1N0ci5mb2xkQ2FzZSgpKSA6CisgICAgICAgIGNsYXNz
U3RyOworCisgICAgY29uc3QgVUNoYXIqIHN0ciA9IGNsYXNzQXR0ci5jaGFyYWN0ZXJzKCk7Cisg
ICAgY29uc3QgaW50IGxlbmd0aCA9IGNsYXNzQXR0ci5sZW5ndGgoKTsKKyAgICBpbnQgc3RhcnQg
PSAwOworICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgIHdoaWxlIChzdGFydCA8IGxlbmd0aCAm
JiBpc0NsYXNzV2hpdGVzcGFjZShzdHJbc3RhcnRdKSkKKyAgICAgICAgICAgICsrc3RhcnQ7Cisg
ICAgICAgIGlmIChzdGFydCA+PSBsZW5ndGgpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
aW50IGVuZCA9IHN0YXJ0ICsgMTsKKyAgICAgICAgd2hpbGUgKGVuZCA8IGxlbmd0aCAmJiAhaXND
bGFzc1doaXRlc3BhY2Uoc3RyW2VuZF0pKQorICAgICAgICAgICAgKytlbmQ7CisKKyAgICAgICAg
bV9uYW1lVmVjdG9yLT5hcHBlbmQoQXRvbWljU3RyaW5nKHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFy
dCkpOworCisgICAgICAgIHN0YXJ0ID0gZW5kICsgMTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0NsYXNzTmFtZXMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2RvbS9DbGFzc05hbWVzLmgJKHJldmlzaW9uIDI4Njc2KQkoZnJvbSBXZWJDb3Jl
L2RvbS9BdG9taWNTdHJpbmdMaXN0Lmg6Mjg2NzYpCisrKyBXZWJDb3JlL2RvbS9DbGFzc05hbWVz
LmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIFRoaXMgZmlsZSBpcyBw
YXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KKyAqCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDQgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGlj
ZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy
CisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxh
dGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo
b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7
IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5kZWYgQXRvbWljU3RyaW5nTGlz
dF9oCisjZGVmaW5lIEF0b21pY1N0cmluZ0xpc3RfaAorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5n
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQXRvbWljU3RyaW5nTGlzdCB7Citw
dWJsaWM6CisgICAgQXRvbWljU3RyaW5nTGlzdCgpIDogbV9uZXh0KDApIHt9CisgICAgQXRvbWlj
U3RyaW5nTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIHN0ciwgQXRvbWljU3RyaW5nTGlzdCogbiA9
IDApIDogbV9zdHJpbmcoc3RyKSwgbV9uZXh0KG4pIHt9CisgICAgfkF0b21pY1N0cmluZ0xpc3Qo
KSB7IGRlbGV0ZSBtX25leHQ7IH0KKyAgICAKKyAgICBBdG9taWNTdHJpbmdMaXN0KiBuZXh0KCkg
Y29uc3QgeyByZXR1cm4gbV9uZXh0OyB9CisgICAgdm9pZCBzZXROZXh0KEF0b21pY1N0cmluZ0xp
c3QqIG4pIHsgbV9uZXh0ID0gbjsgfQorICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KKyAgICB2b2lkIHNldFN0cmluZyhjb25zdCBBdG9t
aWNTdHJpbmcmIHN0cikgeyBtX3N0cmluZyA9IHN0cjsgfQorCisgICAgQXRvbWljU3RyaW5nTGlz
dCogY2xvbmUoKSB7IHJldHVybiBuZXcgQXRvbWljU3RyaW5nTGlzdChtX3N0cmluZywgbV9uZXh0
ID8gbV9uZXh0LT5jbG9uZSgpIDogMCk7IH0KKyAgICB2b2lkIGNsZWFyKCkgeyBtX3N0cmluZyA9
IG51bGxBdG9tOyBkZWxldGUgbV9uZXh0OyBtX25leHQgPSAwOyB9CisgICAgCitwcml2YXRlOgor
ICAgIEF0b21pY1N0cmluZyBtX3N0cmluZzsKKyAgICBBdG9taWNTdHJpbmdMaXN0KiBtX25leHQ7
Cit9OworCit9CisKKyNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vQ2xhc3NOYW1lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0NsYXNzTmFtZXMuaAkocmV2aXNpb24gMjg2NzYpCisrKyBX
ZWJDb3JlL2RvbS9DbGFzc05hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNyArMSw1IEBACiAv
KgotICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIERPTSBpbXBsZW1lbnRhdGlvbiBmb3IgS0RF
LgotICoKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29w
eXJpZ2h0IChDKSAyMDA3IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
QEAgLTE1LDM3ICsxMyw0MyBAQAogICoKICAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKICAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0
ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KICAqCiAgKi8KIAotI2lmbmRl
ZiBBdG9taWNTdHJpbmdMaXN0X2gKLSNkZWZpbmUgQXRvbWljU3RyaW5nTGlzdF9oCisjaWZuZGVm
IENsYXNzTmFtZXNfaAorI2RlZmluZSBDbGFzc05hbWVzX2gKIAogI2luY2x1ZGUgIkF0b21pY1N0
cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQXRvbWljU3RyaW5nTGlzdCB7Ci1wdWJs
aWM6Ci0gICAgQXRvbWljU3RyaW5nTGlzdCgpIDogbV9uZXh0KDApIHt9Ci0gICAgQXRvbWljU3Ry
aW5nTGlzdChjb25zdCBBdG9taWNTdHJpbmcmIHN0ciwgQXRvbWljU3RyaW5nTGlzdCogbiA9IDAp
IDogbV9zdHJpbmcoc3RyKSwgbV9uZXh0KG4pIHt9Ci0gICAgfkF0b21pY1N0cmluZ0xpc3QoKSB7
IGRlbGV0ZSBtX25leHQ7IH0KLSAgICAKLSAgICBBdG9taWNTdHJpbmdMaXN0KiBuZXh0KCkgY29u
c3QgeyByZXR1cm4gbV9uZXh0OyB9Ci0gICAgdm9pZCBzZXROZXh0KEF0b21pY1N0cmluZ0xpc3Qq
IG4pIHsgbV9uZXh0ID0gbjsgfQotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgc3RyaW5nKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSAgICB2b2lkIHNldFN0cmluZyhjb25zdCBBdG9taWNT
dHJpbmcmIHN0cikgeyBtX3N0cmluZyA9IHN0cjsgfQotCi0gICAgQXRvbWljU3RyaW5nTGlzdCog
Y2xvbmUoKSB7IHJldHVybiBuZXcgQXRvbWljU3RyaW5nTGlzdChtX3N0cmluZywgbV9uZXh0ID8g
bV9uZXh0LT5jbG9uZSgpIDogMCk7IH0KLSAgICB2b2lkIGNsZWFyKCkgeyBtX3N0cmluZyA9IG51
bGxBdG9tOyBkZWxldGUgbV9uZXh0OyBtX25leHQgPSAwOyB9Ci0gICAgCi1wcml2YXRlOgotICAg
IEF0b21pY1N0cmluZyBtX3N0cmluZzsKLSAgICBBdG9taWNTdHJpbmdMaXN0KiBtX25leHQ7Ci19
OworICAgIGNsYXNzIENsYXNzTmFtZXMgeworICAgIHB1YmxpYzoKKyAgICAgICAgQ2xhc3NOYW1l
cygpCisgICAgICAgICAgICA6IG1fbmFtZVZlY3RvcigwKQorICAgICAgICB7CisgICAgICAgIH0K
KworICAgICAgICBib29sIGNvbnRhaW5zKGNvbnN0IEF0b21pY1N0cmluZyYpIGNvbnN0OworICAg
ICAgICB2b2lkIHBhcnNlQ2xhc3NBdHRyaWJ1dGUoY29uc3QgU3RyaW5nJiwgY29uc3QgYm9vbCBp
bkNvbXBhdE1vZGUpOworCisgICAgICAgIHNpemVfdCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lVmVjdG9yID8gbV9uYW1lVmVjdG9yLT5zaXplKCkgOiAwOyB9CisgICAgICAgIHZvaWQgY2xl
YXIoKSB7IGlmIChtX25hbWVWZWN0b3IpIG1fbmFtZVZlY3Rvci0+Y2xlYXIoKTsgfQorICAgICAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG9wZXJhdG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJu
IG1fbmFtZVZlY3RvciA/ICgqbV9uYW1lVmVjdG9yKVtpXSA6IG51bGxBdG9tOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBPd25QdHI8VmVjdG9yPEF0b21pY1N0cmluZz4gPiBtX25hbWVWZWN0
b3I7CisgICAgfTsKKworICAgIGlubGluZSBzdGF0aWMgYm9vbCBpc0NsYXNzV2hpdGVzcGFjZShV
Q2hhciBjKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGMgPT0gJyAnIHx8IGMgPT0gJ1xyJyB8fCBj
ID09ICdcbicgfHwgYyA9PSAnXHQnIHx8IGMgPT0gJ1xmJzsKKyAgICB9CiAKLX0KK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmCisjZW5kaWYgLy8gQ2xhc3NOYW1lc19oCkluZGV4OiBX
ZWJDb3JlL2RvbS9DbGFzc05vZGVMaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9D
bGFzc05vZGVMaXN0LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0NsYXNzTm9kZUxp
c3QuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwNyBEYXZpZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJDbGFzc05vZGVMaXN0LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgor
I2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJOb2RlLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworQ2xhc3NOb2RlTGlzdDo6Q2xhc3NOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJv
b3ROb2RlLCBjb25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSkKKyAgICA6IE5vZGVMaXN0KHJv
b3ROb2RlKQoreworICAgIG1fY2xhc3NOYW1lcy5wYXJzZUNsYXNzQXR0cmlidXRlKGNsYXNzTmFt
ZSwgbV9yb290Tm9kZS0+ZG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkpOworfQorCit1bnNpZ25l
ZCBDbGFzc05vZGVMaXN0OjpsZW5ndGgoKSBjb25zdAoreworICAgIHJldHVybiByZWN1cnNpdmVM
ZW5ndGgoKTsKK30KKworTm9kZSogQ2xhc3NOb2RlTGlzdDo6aXRlbSh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gcmVjdXJzaXZlSXRlbShpbmRleCk7Cit9CisKK2Jvb2wgQ2xh
c3NOb2RlTGlzdDo6bm9kZU1hdGNoZXMoTm9kZSogdGVzdE5vZGUpIGNvbnN0Cit7CisgICAgaWYg
KCF0ZXN0Tm9kZS0+aXNFbGVtZW50Tm9kZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIXRlc3ROb2RlLT5oYXNDbGFzcygpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoIW1fY2xhc3NOYW1lcy5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGNvbnN0IENsYXNzTmFtZXMmIGNsYXNzZXMgPSAqc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHRlc3RO
b2RlKS0+Z2V0Q2xhc3NOYW1lcygpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jbGFz
c05hbWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICghY2xhc3Nlcy5jb250YWlucyhtX2Ns
YXNzTmFtZXNbaV0pKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJl
dHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2Rv
bS9DbGFzc05vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlz
dC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQ2xhc3NOb2RlTGlzdC5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNyBEYXZpZCBTbWl0
aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29tKQorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRo
ZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFt
ZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQ2xhc3NOb2RlTGlzdF9oCisjZGVmaW5l
IENsYXNzTm9kZUxpc3RfaAorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAi
Q2xhc3NOYW1lcy5oIgorI2luY2x1ZGUgIk5vZGVMaXN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworICAgIGNsYXNzIENsYXNzTm9kZUxpc3QgOiBwdWJsaWMgTm9kZUxpc3QgeworICAgIHB1
YmxpYzoKKyAgICAgICAgQ2xhc3NOb2RlTGlzdChQYXNzUmVmUHRyPE5vZGU+IHJvb3ROb2RlLCBj
b25zdCBBdG9taWNTdHJpbmcmIGNsYXNzTmFtZSk7CisKKyAgICAgICAgdmlydHVhbCB1bnNpZ25l
ZCBsZW5ndGgoKSBjb25zdDsKKyAgICAgICAgdmlydHVhbCBOb2RlKiBpdGVtKHVuc2lnbmVkIGlu
ZGV4KSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIHZpcnR1YWwgYm9vbCBub2RlTWF0
Y2hlcyhOb2RlKikgY29uc3Q7CisKKyAgICAgICAgQ2xhc3NOYW1lcyBtX2NsYXNzTmFtZXM7Cisg
ICAgfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQ2xhc3NOb2RlTGlz
dF9oCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiAyODY3NikKKysrIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMTAgKzMwLDExIEBACiAjaW5jbHVkZSAiQ1NT
U3R5bGVTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ2xhc3NOb2RlTGlzdC5oIgogI2luY2x1ZGUg
IkNvbW1lbnQuaCIKICNpbmNsdWRlICJDb29raWVKYXIuaCIKLSNpbmNsdWRlICJEYXRhYmFzZVRo
cmVhZC5oIgogI2luY2x1ZGUgIkRPTUltcGxlbWVudGF0aW9uLmgiCisjaW5jbHVkZSAiRGF0YWJh
c2VUaHJlYWQuaCIKICNpbmNsdWRlICJEb2NMb2FkZXIuaCIKICNpbmNsdWRlICJEb2N1bWVudEZy
YWdtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2FkZXIuaCIKQEAgLTM0OTQsMTEgKzM0OTUs
MTYgQEAgSFRNTENvbGxlY3Rpb246OkNvbGxlY3Rpb25JbmZvKiBEb2N1bWVudAogICAgIHJldHVy
biBpdGVyLT5zZWNvbmQ7CiB9CiAKLVBhc3NSZWZQdHI8TmFtZU5vZGVMaXN0PiBEb2N1bWVudDo6
Z2V0RWxlbWVudHNCeU5hbWUoY29uc3QgU3RyaW5nICZlbGVtZW50TmFtZSkKK1Bhc3NSZWZQdHI8
TmFtZU5vZGVMaXN0PiBEb2N1bWVudDo6Z2V0RWxlbWVudHNCeU5hbWUoY29uc3QgU3RyaW5nJiBl
bGVtZW50TmFtZSkKIHsKICAgICByZXR1cm4gbmV3IE5hbWVOb2RlTGlzdCh0aGlzLCBlbGVtZW50
TmFtZSk7CiB9CiAKK1Bhc3NSZWZQdHI8Tm9kZUxpc3Q+IERvY3VtZW50OjpnZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKGNvbnN0IFN0cmluZyYgY2xhc3NOYW1lKQoreworICAgIHJldHVybiBuZXcgQ2xh
c3NOb2RlTGlzdCh0aGlzLCBjbGFzc05hbWUpOworfQorCiB2b2lkIERvY3VtZW50OjpmaW5pc2hl
ZFBhcnNpbmcoKQogewogICAgIHNldFBhcnNpbmcoZmFsc2UpOwpJbmRleDogV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lv
biAyODY3NikKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIx
Myw2ICsyMTMsNyBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxOb2RlPiBhZG9wdE5vZGUoUGFz
c1JlZlB0cjxOb2RlPiBzb3VyY2UsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICAKICAgICBQYXNzUmVm
UHRyPE5hbWVOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeU5hbWUoY29uc3QgU3RyaW5nJiBlbGVtZW50
TmFtZSk7CisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShj
b25zdCBTdHJpbmcmIGNsYXNzTmFtZSk7CiAKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9u
PiBpbWFnZXMoKTsKICAgICBQYXNzUmVmUHRyPEhUTUxDb2xsZWN0aW9uPiBlbWJlZHMoKTsKSW5k
ZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9E
b2N1bWVudC5pZGwJKHJldmlzaW9uIDI4Njc2KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRs
CSh3b3JraW5nIGNvcHkpCkBAIC0yMjAsNiArMjIwLDggQEAgbW9kdWxlIGNvcmUgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxd
IGJvb2xlYW4gYXV0aG9yT25seSk7CiAjZW5kaWYKIAorICAgICAgICAvLyBIVE1MIDUKKyAgICAg
ICAgTm9kZUxpc3QgICAgICAgICAgICBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGluIERPTVN0cmlu
ZyB0YWduYW1lKTsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMjg2NzYpCisr
KyBXZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMyw2ICszLDcgQEAK
ICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBvc3QuY29tKQogICogICAg
ICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUub3JnKQorICogICAgICAg
ICAgIChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFpbC5jb20pCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA3IEVyaWMgU2VpZGVsIChlcmljQHdlYmtpdC5v
cmcpCiAgKgpAQCAtMjYsNiArMjcsOCBAQAogI2luY2x1ZGUgIkVsZW1lbnQuaCIKIAogI2luY2x1
ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKKyNpbmNsdWRlICJDbGFzc05hbWVzLmgiCisjaW5jbHVk
ZSAiQ2xhc3NOb2RlTGlzdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRp
dG9yLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgpAQCAtMzYsNiArMzksNyBAQAogI2lu
Y2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIktVUkwuaCIKICNpbmNsdWRlICJOYW1lZEF0
dHJNYXAuaCIKKyNpbmNsdWRlICJOb2RlTGlzdC5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNs
dWRlICJSZW5kZXJCbG9jay5oIgogI2luY2x1ZGUgIlNlbGVjdGlvbkNvbnRyb2xsZXIuaCIKQEAg
LTE5Niw3ICsyMDAsNyBAQCBOb2RlOjpOb2RlVHlwZSBFbGVtZW50Ojpub2RlVHlwZSgpIGNvbnN0
CiAgICAgcmV0dXJuIEVMRU1FTlRfTk9ERTsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nTGlzdCog
RWxlbWVudDo6Z2V0Q2xhc3NMaXN0KCkgY29uc3QKK2NvbnN0IENsYXNzTmFtZXMqIEVsZW1lbnQ6
OmdldENsYXNzTmFtZXMoKSBjb25zdAogewogICAgIHJldHVybiAwOwogfQpAQCAtMTExOSw2ICsx
MTIzLDExIEBAIFJlbmRlclN0eWxlKiBFbGVtZW50Ojpjb21wdXRlZFN0eWxlKCkKICAgICByZXR1
cm4gcmQtPm1fY29tcHV0ZWRTdHlsZTsKIH0KIAorUGFzc1JlZlB0cjxOb2RlTGlzdD4gRWxlbWVu
dDo6Z2V0RWxlbWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcmIGNsYXNzTmFtZSkKK3sKKyAg
ICByZXR1cm4gbmV3IENsYXNzTm9kZUxpc3QodGhpcywgY2xhc3NOYW1lKTsKK30KKwogdm9pZCBF
bGVtZW50OjpjYW5jZWxGb2N1c0FwcGVhcmFuY2VVcGRhdGUoKQogewogICAgIGlmIChFbGVtZW50
UmFyZURhdGEqIHJkID0gcmFyZURhdGEoKSkKSW5kZXg6IFdlYkNvcmUvZG9tL0VsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJldmlzaW9uIDI4Njc2KQorKysg
V2ViQ29yZS9kb20vRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwxMCArMzEsMTAgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBBdG9taWNTdHJpbmdMaXN0OwogY2xhc3Mg
QXR0cjsKIGNsYXNzIEF0dHJpYnV0ZTsKIGNsYXNzIENTU1N0eWxlRGVjbGFyYXRpb247CitjbGFz
cyBDbGFzc05hbWVzOwogY2xhc3MgRWxlbWVudFJhcmVEYXRhOwogY2xhc3MgSW50U2l6ZTsKIApA
QCAtNDQsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgfkVsZW1lbnQoKTsKIAogICAgIC8vIFVzZWQg
dG8gcXVpY2tseSBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgYW4gZWxlbWVudCBoYXMgYSBnaXZl
biBDU1MgY2xhc3MuCi0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmdMaXN0KiBnZXRDbGFz
c0xpc3QoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IENsYXNzTmFtZXMqIGdldENsYXNzTmFt
ZXMoKSBjb25zdDsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldElEQXR0cmlidXRlKCkgY29u
c3Q7CiAgICAgYm9vbCBoYXNBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0Owog
ICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZ2V0QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdDsKQEAgLTE2Miw2ICsxNjIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGZv
Y3VzKGJvb2wgcmVzdG9yZVByZXZpb3VzU2VsZWN0aW9uID0gdHJ1ZSk7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUZvY3VzQXBwZWFyYW5jZShib29sIHJlc3RvcmVQcmV2aW91c1NlbGVjdGlvbik7
CiAgICAgdm9pZCBibHVyKCk7CisgICAgCisgICAgUGFzc1JlZlB0cjxOb2RlTGlzdD4gZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZShjb25zdCBTdHJpbmcmKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICB2
aXJ0dWFsIHZvaWQgZHVtcChUZXh0U3RyZWFtKiAsIERlcHJlY2F0ZWRTdHJpbmcgaW5kID0gIiIp
IGNvbnN0OwpJbmRleDogV2ViQ29yZS9kb20vRWxlbWVudC5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRWxlbWVudC5pZGwJKHJldmlzaW9uIDI4Njc2KQorKysgV2ViQ29yZS9kb20vRWxl
bWVudC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsOSBAQCBtb2R1bGUgY29yZSB7
CiAgICAgICAgIHZvaWQgc2Nyb2xsQnlMaW5lcyhpbiBsb25nIGxpbmVzKTsKICAgICAgICAgdm9p
ZCBzY3JvbGxCeVBhZ2VzKGluIGxvbmcgcGFnZXMpOwogCisgICAgICAgIC8vIEhUTUwgNQorICAg
ICAgICBOb2RlTGlzdCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGluIERPTVN0cmluZyBuYW1lKTsK
KwogI2lmIGRlZmluZWQoTEFOR1VBR0VfT0JKRUNUSVZFX0MpCiAgICAgICAgIC8vIE9iamVjdGl2
ZS1DIGV4dGVuc2lvbnMKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpbm5l
clRleHQ7CkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lTm9kZUxpc3QuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL05hbWVOb2RlTGlzdC5jcHAJKHJldmlzaW9uIDI4Njc2KQorKysgV2ViQ29y
ZS9kb20vTmFtZU5vZGVMaXN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSwxMCArMSw4IEBACiAv
KioKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtE
RS4KLSAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkgTGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykK
ICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAq
IENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21wdXRlciwgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDA0LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtMjgsMTQgKzI2LDEzIEBACiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1
ZGUgIkhUTUxOYW1lcy5oIgogCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1OYW1lTm9kZUxpc3Q6
Ok5hbWVOb2RlTGlzdChOb2RlICpuLCBjb25zdCBTdHJpbmcgJnQpCi0gIDogTm9kZUxpc3Qobiks
IG5vZGVOYW1lKHQpCitOYW1lTm9kZUxpc3Q6Ok5hbWVOb2RlTGlzdChOb2RlKiByb290LCBjb25z
dCBTdHJpbmcmIG5hbWUpCisgICAgOiBOb2RlTGlzdChyb290KQorICAgICwgbV9ub2RlTmFtZShu
YW1lKQogewogfQogCkBAIC00NCwxNCArNDEsMTQgQEAgdW5zaWduZWQgTmFtZU5vZGVMaXN0Ojps
ZW5ndGgoKSBjb25zdAogICAgIHJldHVybiByZWN1cnNpdmVMZW5ndGgoKTsKIH0KIAotTm9kZSAq
TmFtZU5vZGVMaXN0OjppdGVtICh1bnNpZ25lZCBpbmRleCkgY29uc3QKK05vZGUqIE5hbWVOb2Rl
TGlzdDo6aXRlbSAodW5zaWduZWQgaW5kZXgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlY3Vyc2l2
ZUl0ZW0oaW5kZXgpOwogfQogCi1ib29sIE5hbWVOb2RlTGlzdDo6bm9kZU1hdGNoZXMoTm9kZSAq
dGVzdE5vZGUpIGNvbnN0Citib29sIE5hbWVOb2RlTGlzdDo6bm9kZU1hdGNoZXMoTm9kZSogdGVz
dE5vZGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnQqPih0ZXN0Tm9k
ZSktPmdldEF0dHJpYnV0ZShuYW1lQXR0cikgPT0gbm9kZU5hbWU7CisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEVsZW1lbnQqPih0ZXN0Tm9kZSktPmdldEF0dHJpYnV0ZShuYW1lQXR0cikgPT0gbV9u
b2RlTmFtZTsKIH0KIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9k
b20vTmFtZU5vZGVMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0
LmgJKHJldmlzaW9uIDI4Njc2KQorKysgV2ViQ29yZS9kb20vTmFtZU5vZGVMaXN0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTAgKzEsOCBAQAogLyoKLSAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRo
ZSBET00gaW1wbGVtZW50YXRpb24gZm9yIEtERS4KLSAqCiAgKiBDb3B5cmlnaHQgKEMpIDE5OTkg
TGFycyBLbm9sbCAoa25vbGxAa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBL
b2l2aXN0byAoa29pdmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBEaXJrIE11
ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKLSAqIENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBDb21w
dXRlciwgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzUsNyArMzMsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgKi8KIGNsYXNzIE5hbWVOb2RlTGlzdCA6IHB1YmxpYyBOb2RlTGlz
dCB7CiBwdWJsaWM6Ci0gICAgTmFtZU5vZGVMaXN0KE5vZGUqIGRvYywgY29uc3QgU3RyaW5nJiBu
YW1lKTsKKyAgICBOYW1lTm9kZUxpc3QoTm9kZSogcm9vdCwgY29uc3QgU3RyaW5nJiBuYW1lKTsK
IAogICAgIC8vIERPTSBtZXRob2RzIG92ZXJyaWRkZW4gZnJvbSAgcGFyZW50IGNsYXNzZXMKIApA
QCAtNDgsNyArNDYsOCBAQCBwdWJsaWM6CiBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBib29sIG5v
ZGVNYXRjaGVzKE5vZGUqIHRlc3ROb2RlKSBjb25zdDsKIAotICAgIFN0cmluZyBub2RlTmFtZTsK
K3ByaXZhdGU6CisgICAgU3RyaW5nIG1fbm9kZU5hbWU7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9OYW1lZE1hcHBlZEF0dHJNYXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL05hbWVkTWFwcGVkQXR0ck1hcC5jcHAJKHJldmlzaW9uIDI4Njc2
KQorKysgV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRBdHRyTWFwLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMyw2ICszLDcgQEAKICAqICAgICAgICAgICAoQykgMTk5OSBBbnR0aSBLb2l2aXN0byAoa29p
dmlzdG9Aa2RlLm9yZykKICAqICAgICAgICAgICAoQykgMjAwMSBQZXRlciBLZWxseSAocG1rQHBv
c3QuY29tKQogICogICAgICAgICAgIChDKSAyMDAxIERpcmsgTXVlbGxlciAobXVlbGxlckBrZGUu
b3JnKQorICogICAgICAgICAgIChDKSAyMDA3IERhdmlkIFNtaXRoIChjYXRmaXNoLm1hbkBnbWFp
bC5jb20pCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKQEAgLTM3LDcgKzM4LDcgQEAgTmFt
ZWRNYXBwZWRBdHRyTWFwOjpOYW1lZE1hcHBlZEF0dHJNYXAoRQogCiB2b2lkIE5hbWVkTWFwcGVk
QXR0ck1hcDo6Y2xlYXJBdHRyaWJ1dGVzKCkKIHsKLSAgICBtX2NsYXNzTGlzdC5jbGVhcigpOwor
ICAgIG1fY2xhc3NOYW1lcy5jbGVhcigpOwogICAgIG1fbWFwcGVkQXR0cmlidXRlQ291bnQgPSAw
OwogICAgIE5hbWVkQXR0ck1hcDo6Y2xlYXJBdHRyaWJ1dGVzKCk7CiB9CkBAIC03Niw0OCArNzcs
MTUgQEAgYm9vbCBOYW1lZE1hcHBlZEF0dHJNYXA6Om1hcHNFcXVpdmFsZW50KAogICAgIHJldHVy
biB0cnVlOwogfQogCi1pbmxpbmUgc3RhdGljIGJvb2wgaXNDbGFzc1doaXRlc3BhY2UoVUNoYXIg
YykKLXsKLSAgICByZXR1cm4gYyA9PSAnICcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBj
ID09ICdcdCc7Ci19Ci0KLXZvaWQgTmFtZWRNYXBwZWRBdHRyTWFwOjpwYXJzZUNsYXNzQXR0cmli
dXRlKGNvbnN0IFN0cmluZyYgY2xhc3NTdHIpCi17Ci0gICAgbV9jbGFzc0xpc3QuY2xlYXIoKTsK
LSAgICBpZiAoIWVsZW1lbnQtPmhhc0NsYXNzKCkpCit2b2lkIE5hbWVkTWFwcGVkQXR0ck1hcDo6
cGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGNsYXNzU3RyKSAKK3sgCisgICAgaWYg
KCFlbGVtZW50LT5oYXNDbGFzcygpKSB7IAorICAgICAgICBtX2NsYXNzTmFtZXMuY2xlYXIoKTsg
CiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBTdHJpbmcgY2xhc3NBdHRyID0gZWxlbWVudC0+
ZG9jdW1lbnQoKS0+aW5Db21wYXRNb2RlKCkgPyAKLSAgICAgICAgKGNsYXNzU3RyLmltcGwoKS0+
aXNMb3dlcigpID8gY2xhc3NTdHIgOiBTdHJpbmcoY2xhc3NTdHIuaW1wbCgpLT5sb3dlcigpKSkg
OgotICAgICAgICBjbGFzc1N0cjsKLSAgICAKLSAgICBBdG9taWNTdHJpbmdMaXN0KiBjdXJyID0g
MDsKLSAgICAKLSAgICBjb25zdCBVQ2hhciogc3RyID0gY2xhc3NBdHRyLmNoYXJhY3RlcnMoKTsK
LSAgICBpbnQgbGVuZ3RoID0gY2xhc3NBdHRyLmxlbmd0aCgpOwotICAgIGludCBzUG9zID0gMDsK
LQotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIHdoaWxlIChzUG9zIDwgbGVuZ3RoICYmIGlz
Q2xhc3NXaGl0ZXNwYWNlKHN0cltzUG9zXSkpCi0gICAgICAgICAgICArK3NQb3M7Ci0gICAgICAg
IGlmIChzUG9zID49IGxlbmd0aCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBpbnQgZVBv
cyA9IHNQb3MgKyAxOwotICAgICAgICB3aGlsZSAoZVBvcyA8IGxlbmd0aCAmJiAhaXNDbGFzc1do
aXRlc3BhY2Uoc3RyW2VQb3NdKSkKLSAgICAgICAgICAgICsrZVBvczsKLSAgICAgICAgaWYgKGN1
cnIpIHsKLSAgICAgICAgICAgIGN1cnItPnNldE5leHQobmV3IEF0b21pY1N0cmluZ0xpc3QoQXRv
bWljU3RyaW5nKHN0ciArIHNQb3MsIGVQb3MgLSBzUG9zKSkpOwotICAgICAgICAgICAgY3VyciA9
IGN1cnItPm5leHQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzUG9zID09
IDAgJiYgZVBvcyA9PSBsZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBtX2NsYXNzTGlzdC5zZXRT
dHJpbmcoQXRvbWljU3RyaW5nKGNsYXNzQXR0cikpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgfQotICAgICAgICAgICAgbV9jbGFzc0xpc3Quc2V0U3RyaW5nKEF0b21pY1N0
cmluZyhzdHIgKyBzUG9zLCBlUG9zIC0gc1BvcykpOwotICAgICAgICAgICAgY3VyciA9ICZtX2Ns
YXNzTGlzdDsKLSAgICAgICAgfQotICAgICAgICBzUG9zID0gZVBvcyArIDE7CiAgICAgfQorCisg
ICAgbV9jbGFzc05hbWVzLnBhcnNlQ2xhc3NBdHRyaWJ1dGUoY2xhc3NTdHIsIGVsZW1lbnQtPmRv
Y3VtZW50KCktPmluQ29tcGF0TW9kZSgpKTsgCiB9CiAKKwogfQpJbmRleDogV2ViQ29yZS9kb20v
TmFtZWRNYXBwZWRBdHRyTWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vTmFtZWRNYXBw
ZWRBdHRyTWFwLmgJKHJldmlzaW9uIDI4Njc2KQorKysgV2ViQ29yZS9kb20vTmFtZWRNYXBwZWRB
dHRyTWFwLmgJKHdvcmtpbmcgY29weSkKQEAgLTUsNiArNSw3IEBACiAgKiAgICAgICAgICAgKEMp
IDE5OTkgQW50dGkgS29pdmlzdG8gKGtvaXZpc3RvQGtkZS5vcmcpCiAgKiAgICAgICAgICAgKEMp
IDIwMDEgUGV0ZXIgS2VsbHkgKHBta0Bwb3N0LmNvbSkKICAqICAgICAgICAgICAoQykgMjAwMSBE
aXJrIE11ZWxsZXIgKG11ZWxsZXJAa2RlLm9yZykKKyAqICAgICAgICAgICAoQykgMjAwNyBEYXZp
ZCBTbWl0aCAoY2F0ZmlzaC5tYW5AZ21haWwuY29tKQogICogQ29weXJpZ2h0IChDKSAyMDAzLCAy
MDA0LCAyMDA1LCAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMuCiAgKgogICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgpAQCAtMjcs
OSArMjgsOSBAQAogI2lmbmRlZiBOYW1lZE1hcHBlZEF0dHJNYXBfaAogI2RlZmluZSBOYW1lZE1h
cHBlZEF0dHJNYXBfaAogCi0jaW5jbHVkZSAiTmFtZWRBdHRyTWFwLmgiCi0jaW5jbHVkZSAiQXRv
bWljU3RyaW5nTGlzdC5oIgorI2luY2x1ZGUgIkNsYXNzTmFtZXMuaCIKICNpbmNsdWRlICJNYXBw
ZWRBdHRyaWJ1dGUuaCIKKyNpbmNsdWRlICJOYW1lZEF0dHJNYXAuaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC00Miw4ICs0Myw5IEBAIHB1YmxpYzoKICAgICAKICAgICB2aXJ0dWFsIGJv
b2wgaXNNYXBwZWRBdHRyaWJ1dGVNYXAoKSBjb25zdDsKICAgICAKLSAgICB2aXJ0dWFsIHZvaWQg
cGFyc2VDbGFzc0F0dHJpYnV0ZShjb25zdCBTdHJpbmcmIGNsYXNzQXR0cik7Ci0gICAgY29uc3Qg
QXRvbWljU3RyaW5nTGlzdCogZ2V0Q2xhc3NMaXN0KCkgY29uc3QgeyByZXR1cm4gJm1fY2xhc3NM
aXN0OyB9CisgICAgdm9pZCBwYXJzZUNsYXNzQXR0cmlidXRlKGNvbnN0IFN0cmluZyYpOworCisg
ICAgY29uc3QgQ2xhc3NOYW1lcyogZ2V0Q2xhc3NOYW1lcygpIGNvbnN0IHsgcmV0dXJuICZtX2Ns
YXNzTmFtZXM7IH0KICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzTWFwcGVkQXR0cmlidXRlcygp
IGNvbnN0IHsgcmV0dXJuIG1fbWFwcGVkQXR0cmlidXRlQ291bnQgPiAwOyB9CiAgICAgdm9pZCBk
ZWNsUmVtb3ZlZCgpIHsgbV9tYXBwZWRBdHRyaWJ1dGVDb3VudC0tOyB9CkBAIC02MCw3ICs2Miw3
IEBAIHB1YmxpYzoKICAgICAgICAgeyByZXR1cm4gc3RhdGljX2Nhc3Q8TWFwcGVkQXR0cmlidXRl
Kj4oTmFtZWRBdHRyTWFwOjpnZXRBdHRyaWJ1dGVJdGVtKG5hbWUpKTsgfQogICAgIAogcHJpdmF0
ZToKLSAgICBBdG9taWNTdHJpbmdMaXN0IG1fY2xhc3NMaXN0OworICAgIENsYXNzTmFtZXMgbV9j
bGFzc05hbWVzOwogICAgIGludCBtX21hcHBlZEF0dHJpYnV0ZUNvdW50OwogfTsKIApJbmRleDog
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20v
U3R5bGVkRWxlbWVudC5jcHAJKHJldmlzaW9uIDI4Njc2KQorKysgV2ViQ29yZS9kb20vU3R5bGVk
RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJD
U1NTdHlsZVNlbGVjdG9yLmgiCiAjaW5jbHVkZSAiQ1NTU3R5bGVTaGVldC5oIgogI2luY2x1ZGUg
IkNTU1ZhbHVlS2V5d29yZHMuaCIKKyNpbmNsdWRlICJDbGFzc05hbWVzLmgiCiAjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKIApAQCAtMTAzLDExICsxMDQsNiBA
QCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnVwZGF0ZVN0eWxlQXR0cmlidXRlCiAgICAgfQogfQogCi1p
bmxpbmUgc3RhdGljIGJvb2wgaXNDbGFzc1doaXRlc3BhY2UoVUNoYXIgYykKLXsKLSAgICByZXR1
cm4gYyA9PSAnICcgfHwgYyA9PSAnXHInIHx8IGMgPT0gJ1xuJyB8fCBjID09ICdcdCc7Ci19Ci0K
IFN0eWxlZEVsZW1lbnQ6OlN0eWxlZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
RG9jdW1lbnQgKmRvYykKICAgICA6IEVsZW1lbnQobmFtZSwgZG9jKQogewpAQCAtMjYzLDkgKzI1
OSw5IEBAIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBTdHlsZWRFbGVtZW4KICAgICByZXR1
cm4gMDsKIH0KIAotY29uc3QgQXRvbWljU3RyaW5nTGlzdCogU3R5bGVkRWxlbWVudDo6Z2V0Q2xh
c3NMaXN0KCkgY29uc3QKK2NvbnN0IENsYXNzTmFtZXMqIFN0eWxlZEVsZW1lbnQ6OmdldENsYXNz
TmFtZXMoKSBjb25zdAogewotICAgIHJldHVybiBuYW1lZEF0dHJNYXAgPyBtYXBwZWRBdHRyaWJ1
dGVzKCktPmdldENsYXNzTGlzdCgpIDogMDsKKyAgICByZXR1cm4gbmFtZWRBdHRyTWFwID8gbWFw
cGVkQXR0cmlidXRlcygpLT5nZXRDbGFzc05hbWVzKCkgOiAwOwogfQogCiBzdGF0aWMgaW5saW5l
IGludCB0b0hleChVQ2hhciBjKSB7CkluZGV4OiBXZWJDb3JlL2RvbS9TdHlsZWRFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCShyZXZpc2lvbiAyODY3
NikKKysrIFdlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNjYs
NyArNjYsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlkYXRlU3R5bGVBdHRyaWJ1dGUoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU3R5bGVBdHRyaWJ1dGVJZk5lZWRlZCgpIGNvbnN0Owog
ICAgIAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3RyaW5nTGlzdCogZ2V0Q2xhc3NMaXN0KCkg
Y29uc3Q7CisgICAgdmlydHVhbCBjb25zdCBDbGFzc05hbWVzKiBnZXRDbGFzc05hbWVzKCkgY29u
c3Q7CiAgICAgdmlydHVhbCB2b2lkIGF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBi
b29sIHByZXNlcnZlRGVjbHMgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKE1hcHBlZEF0dHJpYnV0ZSogYXR0cik7CiAgICAgdmlydHVhbCBib29sIG1hcFRv
RW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5
JiByZXN1bHQpIGNvbnN0OwpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3Ry
aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3RyaW5n
LmgJKHJldmlzaW9uIDI4Njc2KQorKysgV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1BsYXRmb3JtU3Ry
aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTExOSw2ICsxMTksOCBAQCBwdWJsaWM6CiAgICAgU3Ry
aW5nIGxvd2VyKCkgY29uc3Q7CiAgICAgU3RyaW5nIHVwcGVyKCkgY29uc3Q7CiAKKyAgICBib29s
IGlzTG93ZXIoKSBjb25zdCB7IHJldHVybiBtX2ltcGwgPyBtX2ltcGwtPmlzTG93ZXIoKSA6IGZh
bHNlOyB9CisKICAgICBTdHJpbmcgc3RyaXBXaGl0ZVNwYWNlKCkgY29uc3Q7CiAgICAgU3RyaW5n
IHNpbXBsaWZ5V2hpdGVTcGFjZSgpIGNvbnN0OwogICAgIApJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjg2
NzYpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw1
NiBAQAorMjAwNy0xMi0xMiAgRGF2aWQgU21pdGggIDxjYXRmaXNoLm1hbkBnbWFpbC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgLSB0ZXN0IGZv
ciBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDk1NQorICAgICAgICAg
IEltcGxlbWVudCBnZXRFbGVtZW50c0J5Q2xhc3NOYW1lCisKKyAgICAgICAgVGVzdHMgYWRkZWQg
ZnJvbSBodHRwOi8vdGMubGFicy5vcGVyYS5jb20vYXBpcy9nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
LworCisgICAgICAgICogZmFzdC9kb20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVk
LnR4dDoKKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lOiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwMS1leHBlY3RlZC50
eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAx
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUv
MDAyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZS8wMDIuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS8wMDMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2Rv
bS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwMy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwNC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAg
ICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA0Lmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA1LWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDUu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8w
MDYtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lLzAwNi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lLzAwNy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA3Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA4LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDguaHRtbDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDktZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwOS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAx
MC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvMDEwLnhtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZS8wMTEtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMS54bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDEyLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTIuaHRtbDogQWRkZWQuCisgICAg
ICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTMtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxNC1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFz
c05hbWUvMDE0Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvYXJyYXk6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvYXJyYXkvMDAxLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9k
b20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJheS8wMDEuaHRtbDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJheS8wMDItZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5
LzAwMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lL2FycmF5LzAwMy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2dl
dEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDA0LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJheS8wMDQu
aHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9k
dW1wTm9kZUxpc3QtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lL2R1bXBOb2RlTGlzdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL3Jlc291cmNlczogQWRkZWQuCisgICAgICAg
ICogZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9yZXNvdXJjZXMvY29tbW9uLmpzOiBB
ZGRlZC4KKwogMjAwNy0xMi0xMiAgRGFuIEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE9saXZlciBIdW50LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vV2luZG93L3dpbmRvdy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXByb3BlcnRpZXMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAyODY3NikKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ct
cHJvcGVydGllcy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMxNyw2ICszMTcsNyBA
QCB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmVsZW1lbnRGcm9tUG9pCiB3aW5kb3cuRG9jdW1l
bnQucHJvdG90eXBlLmV2YWx1YXRlIFtmdW5jdGlvbl0KIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5
cGUuZXhlY0NvbW1hbmQgW2Z1bmN0aW9uXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5nZXRF
bGVtZW50QnlJZCBbZnVuY3Rpb25dCit3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUgW2Z1bmN0aW9uXQogd2luZG93LkRvY3VtZW50LnByb3RvdHlwZS5nZXRF
bGVtZW50c0J5TmFtZSBbZnVuY3Rpb25dCiB3aW5kb3cuRG9jdW1lbnQucHJvdG90eXBlLmdldEVs
ZW1lbnRzQnlUYWdOYW1lIFtmdW5jdGlvbl0KIHdpbmRvdy5Eb2N1bWVudC5wcm90b3R5cGUuZ2V0
RWxlbWVudHNCeVRhZ05hbWVOUyBbZnVuY3Rpb25dCkBAIC00MjQsNiArNDI1LDcgQEAgd2luZG93
LkVsZW1lbnQucHJvdG90eXBlLmdldEF0dHJpYnV0ZSBbZgogd2luZG93LkVsZW1lbnQucHJvdG90
eXBlLmdldEF0dHJpYnV0ZU5TIFtmdW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5n
ZXRBdHRyaWJ1dGVOb2RlIFtmdW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5nZXRB
dHRyaWJ1dGVOb2RlTlMgW2Z1bmN0aW9uXQord2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUgW2Z1bmN0aW9uXQogd2luZG93LkVsZW1lbnQucHJvdG90eXBlLmdl
dEVsZW1lbnRzQnlUYWdOYW1lIFtmdW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5n
ZXRFbGVtZW50c0J5VGFnTmFtZU5TIFtmdW5jdGlvbl0KIHdpbmRvdy5FbGVtZW50LnByb3RvdHlw
ZS5oYXNBdHRyaWJ1dGUgW2Z1bmN0aW9uXQpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZS8wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAxLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05h
bWUvMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUEFTUwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDEuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
LzAwMS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS8wMDEuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPCFk
b2N0eXBlIGh0bWw+Cis8aHRtbCBjbGFzcz0iYSI+CisgPGhlYWQ+CisgIDx0aXRsZT5kb2N1bWVu
dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCk6IHNpbXBsZTwvdGl0bGU+CisgIDxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHkgY2xhc3M9
ImEiPgorICA8cCBpZD0iciI+RkFJTCAoc2NyaXB0IGRpZCBub3QgcnVuKTwvcD4KKyAgPHNjcmlw
dD4gdChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJcdGFcbiIpLCBbZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC5ib2R5XSkgPC9zY3JpcHQ+CisgPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8w
MDItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVs
ZW1lbnRzQnlDbGFzc05hbWUvMDAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAyLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwMi5odG1sCShyZXZpc2lvbiAw
KQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDIuaHRt
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMyBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbCBj
bGFzcz0iYQorYiI+CisgPGhlYWQ+CisgIDx0aXRsZT5kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKCk6IGFsc28gc2ltcGxlPC90aXRsZT4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9j
b21tb24uanMiPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keSBjbGFzcz0iYQorIj4KKyAgPHAg
aWQ9InIiPkZBSUwgKHNjcmlwdCBkaWQgbm90IHJ1bik8L3A+CisgIDxzY3JpcHQ+IHQoZG9jdW1l
bnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYVxuIiksIFtkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQsIGRvY3VtZW50LmJvZHldKSA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBM
YXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwMy1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZS8wMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9k
b20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lLzAwMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9t
L2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDAzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwMy5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDE1IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sIGNsYXNzPSJhIj4KKyA8
aGVhZD4KKyAgPHRpdGxlPmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoKTogY2hhbmdp
bmcgY2xhc3NlczwvdGl0bGU+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48
L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHkgY2xhc3M9ImEiPgorICA8cCBpZD0iciI+RkFJTCAo
c2NyaXB0IGRpZCBub3QgcnVuKTwvcD4KKyAgPHNjcmlwdD4KKyAgIHZhciBjb2xsZWN0aW9uID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYSIpCisgICBkb2N1bWVudC5ib2R5LmNs
YXNzTmFtZSA9ICJiIgorICAgdChjb2xsZWN0aW9uLCBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
XSkKKyAgPC9zY3JpcHQ+CisgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA0LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRz
QnlDbGFzc05hbWUvMDA0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAor
UEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8w
MDQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lLzAwNC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwx
NSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRtbCBjbGFzcz0iYSI+CisgPGhlYWQ+CisgIDx0aXRs
ZT5kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCk6IGNoYW5naW5nIGNsYXNzZXM8L3Rp
dGxlPgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+CisgPC9o
ZWFkPgorIDxib2R5IGNsYXNzPSJhIj4KKyAgPHAgaWQ9InIiPkZBSUwgKHNjcmlwdCBkaWQgbm90
IHJ1bik8L3A+CisgIDxzY3JpcHQ+CisgICB2YXIgY29sbGVjdGlvbiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoImEiKQorICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgKz0gIlx0
YiIKKyAgIHQoY29sbGVjdGlvbiwgW2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgZG9jdW1lbnQu
Ym9keV0pCisgIDwvc2NyaXB0PgorIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3Rz
L2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA1LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwNS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lLzAwNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEg
QEAKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05h
bWUvMDA1Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS8wMDUuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA1Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsMTUgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWwgY2xhc3M9ImEiPgorIDxoZWFkPgorICA8
dGl0bGU+ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpOiBjaGFuZ2luZyBjbGFzc2Vz
PC90aXRsZT4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0Pgor
IDwvaGVhZD4KKyA8Ym9keSBjbGFzcz0iYSI+CisgIDxwIGlkPSJyIj5GQUlMIChzY3JpcHQgZGlk
IG5vdCBydW4pPC9wPgorICA8c2NyaXB0PgorICAgdmFyIGNvbGxlY3Rpb24gPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhIikKKyAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQXR0cmli
dXRlKCJjbGFzcyIpCisgICB0KGNvbGxlY3Rpb24sIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnRd
KQorICA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwNi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDYtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZS8wMDYtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAK
K1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lLzAwNi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1l
bnRzQnlDbGFzc05hbWUvMDA2Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwNi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+ZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpOiBhZGRpbmcgZWxlbWVudCB3aXRoIGNsYXNz
PC90aXRsZT4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0Pgor
IDwvaGVhZD4KKyA8Ym9keSBjbGFzcz0iYSI+CisgIDxwIGlkPSJyIj5GQUlMIChzY3JpcHQgZGlk
IG5vdCBydW4pPC9wPgorICA8c2NyaXB0PgorICAgdmFyIGNvbGxlY3Rpb24gPSBkb2N1bWVudC5n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhIiksCisgICAgICAgZWxlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZm9vIik7CisgICBlbGUuc2V0QXR0cmlidXRlKCJjbGFzcyIsICJhIik7CisgICBk
b2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGVsZSkKKyAgIHQoY29sbGVjdGlvbiwgW2RvY3VtZW50
LmJvZHksIGVsZV0pCisgIDwvc2NyaXB0PgorIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA3LWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
LzAwNy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwNy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEgQEAKK1BBU1MKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlD
bGFzc05hbWUvMDA3Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZS8wMDcuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA3Lmh0bWwJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMTEgQEAKKzwhZG9jdHlwZSBodG1sPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRs
ZT5kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCk6IG11bHRpcGxlIGNsYXNzZXM8L3Rp
dGxlPgorICA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+CisgPC9o
ZWFkPgorIDxib2R5IGNsYXNzPSJhIGIiPgorICA8cCBpZD0iciI+RkFJTCAoc2NyaXB0IGRpZCBu
b3QgcnVuKTwvcD4KKyAgPHNjcmlwdD4gdChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCJiXHRcZlxuXG5hXHJiIiksIFtkb2N1bWVudC5ib2R5XSkgPC9zY3JpcHQ+CisgPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZS8wMDgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dl
dEVsZW1lbnRzQnlDbGFzc05hbWUvMDA4LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA4LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDguaHRtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwOC5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDgu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPCFkb2N0eXBlIGh0bWw+Cis8aHRt
bD4KKyA8aGVhZD4KKyAgPHRpdGxlPmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoKTog
bXVsdGlwbGUgY2xhc3NlczwvdGl0bGU+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9u
LmpzIj48L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHkgY2xhc3M9ImEiPgorICA8cCBpZD0iciI+
RkFJTCAoc2NyaXB0IGRpZCBub3QgcnVuKTwvcD4KKyAgPHNjcmlwdD4gdChkb2N1bWVudC5nZXRF
bGVtZW50c0J5Q2xhc3NOYW1lKCJhXGZhIiksIFtkb2N1bWVudC5ib2R5XSkgPC9zY3JpcHQ+Cisg
PC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZS8wMDktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDA5LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUEFTUwpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMDkuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAwOS5odG1s
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZS8wMDkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPCFkb2N0eXBlIGh0
bWw+Cis8aHRtbCBjbGFzcz0iYSBBIj4KKyA8aGVhZD4KKyAgPHRpdGxlPmRvY3VtZW50LmdldEVs
ZW1lbnRzQnlDbGFzc05hbWUoKTogY2FzZSBzZW5zaXRpdmU8L3RpdGxlPgorICA8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5IGNsYXNz
PSJhIGEiPgorICA8cCBpZD0iciI+RkFJTCAoc2NyaXB0IGRpZCBub3QgcnVuKTwvcD4KKyAgPHNj
cmlwdD4gdChkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJBIGEiKSwgW2RvY3VtZW50
LmRvY3VtZW50RWxlbWVudF0pIDwvc2NyaXB0PgorIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDEwLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lLzAxMC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsMyBAQAorUEFTUworCisKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVs
ZW1lbnRzQnlDbGFzc05hbWUvMDEwLnhtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMC54bWwJKHJldmlzaW9uIDApCisrKyBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMC54bWwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sIiB4bWxuczpnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgPGhlYWQ+Cisg
IDx0aXRsZT5kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCk6IGNvbXBvdW5kPC90aXRs
ZT4KKyAgPHNjcmlwdCBzcmM9InJlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorIDwvaGVh
ZD4KKyA8Ym9keT4KKyAgPHAgaWQ9InIiPkZBSUwgKHNjcmlwdCBkaWQgbm90IHJ1bik8L3A+ICAK
KyAgPHggY2xhc3M9ImEiLz4KKyAgPGc6eCBjbGFzcz0iYSIvPgorICA8c2NyaXB0PiB0KGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImEiKSwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoIngiKSkgPC9zY3JpcHQ+CisgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTEtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDEx
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVs
ZW1lbnRzQnlDbGFzc05hbWUvMDExLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4IEBACitUaGlzIHBhZ2UgY29udGFpbnMgdGhlIGZvbGxvd2luZyBlcnJvcnM6CisKK2Vycm9y
IG9uIGxpbmUgMTIgYXQgY29sdW1uIDIwMDogTmFtZXNwYWNlZCBBdHRyaWJ1dGUgY2xhc3MgaW4g
J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHJlZGVmaW5lZAorQmVsb3cgaXMgYSByZW5k
ZXJpbmcgb2YgdGhlIHBhZ2UgdXAgdG8gdGhlIGZpcnN0IGVycm9yLgorCitQQVNTCisKKwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTEueG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUv
MDExLnhtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRz
QnlDbGFzc05hbWUvMDExLnhtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxOSBAQAorPGh0bWwg
eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbG5zOmc9Imh0dHA6Ly93d3cu
dzMub3JnLzIwMDAvc3ZnIiB4bWxuczpoPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4
bWxuczp0PSJodHRwOi8vdGMubGFicy5vcGVyYS5jb20vI3Rlc3QiPgorIDxoZWFkPgorICA8dGl0
bGU+ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpOiAidHJpY2t5IiBjb21wb3VuZDwv
dGl0bGU+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4KKyA8
L2hlYWQ+CisgPGJvZHk+CisgIDxwIGlkPSJyIj5GQUlMIChzY3JpcHQgZGlkIG5vdCBydW4pPC9w
PiAgCisgIDx4IGNsYXNzPSJhIi8+CisgIDxnOnggY2xhc3M9ImEiLz4KKyAgPHggdDpjbGFzcz0i
YSIgaDpjbGFzcz0iYSIgZzpjbGFzcz0iYSIvPgorICA8Zzp4IHQ6Y2xhc3M9ImEiIGg6Y2xhc3M9
ImEiIGc6Y2xhc3M9ImEiLz4KKyAgPHQ6eCBjbGFzcz0iYSIgdDpjbGFzcz0iYSIgaDpjbGFzcz0i
YSIgZzpjbGFzcz0iYSIvPgorICA8c2NyaXB0PgorICAgdmFyIGNvbGxlY3Rpb24gPSBkb2N1bWVu
dC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhIiksCisgICAgICAgdGVzdCA9IGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJ4IikKKyAgIHQoY29sbGVjdGlvbiwgW3Rlc3RbMF0sIHRlc3Rb
MV1dKQorICA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMi1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS8wMTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBA
CitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
LzAxMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRz
QnlDbGFzc05hbWUvMDEyLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDExIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sIGNsYXNzPSJhIj4KKyA8aGVhZD4KKyAgPHRp
dGxlPmVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpOiBzaW1wbGU8L3RpdGxlPgorICA8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxi
b2R5IGNsYXNzPSJhIj4KKyAgPHAgaWQ9InIiPkZBSUwgKHNjcmlwdCBkaWQgbm90IHJ1bik8L3A+
CisgIDxzY3JpcHQ+IHQoZG9jdW1lbnQuYm9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhIiks
IFtdKSA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTMtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZS8wMTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAK
K1BBU1MKKworCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lLzAxMy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1l
bnRzQnlDbGFzc05hbWUvMDEzLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lLzAxMy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDE3IEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sIGNsYXNzPSJhIj4KKyA8aGVhZD4KKyAg
PHRpdGxlPmVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpOiBhZGRpbmcgYW4gZWxlbWVu
dDwvdGl0bGU+CisgIDxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvY29tbW9uLmpzIj48L3NjcmlwdD4K
KyA8L2hlYWQ+CisgPGJvZHkgY2xhc3M9ImEiPgorICA8cCBpZD0iciI+RkFJTCAoc2NyaXB0IGRp
ZCBub3QgcnVuKTwvcD4KKyAgPHNjcmlwdD4KKyAgIHZhciBjb2xsZWN0aW9uID0gZG9jdW1lbnQu
Ym9keS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhIiksCisgICAgICAgZWxlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgieC15LXoiKQorICAgZWxlLmNsYXNzTmFtZSA9ICJhIgorICAgZG9jdW1l
bnQuYm9keS5hcHBlbmRDaGlsZChlbGUpIAorICAgdChjb2xsZWN0aW9uLCBbZWxlXSkKKyAgPC9z
Y3JpcHQ+CisgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZS8wMTQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvMDE0LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05h
bWUvMDE0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorUEFTUwpJbmRl
eDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS8wMTQuaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
LzAxNC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS8wMTQuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNCBAQAorPGh0
bWwgY2xhc3M9ImEgQSI+CisgPGhlYWQ+CisgIDx0aXRsZT5kb2N1bWVudC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCk6IGNhc2Ugc2Vuc2l0aXZlIChxdWlya3MgbW9kZSk8L3RpdGxlPgorICA8c2Ny
aXB0IHNyYz0icmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5
IGNsYXNzPSJhIGEiPgorICA8cCBpZD0iciI+RkFJTCAoc2NyaXB0IGRpZCBub3QgcnVuKTwvcD4K
KyAgPHNjcmlwdD4KKyAgICAvLyBXZSBkaWZmZXIgZnJvbSBPcGVyYSdzIGltcGxlbWVudGF0aW9u
IGhlcmUuICBXZSBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBpbiBxdWlya3MgbW9kZS4KKyAgICAvLyB0
KGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIkEgYSIpLCBbZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50XSkKKyAgICB0KGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIkEgYSIp
LCBbZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBkb2N1bWVudC5ib2R5XSkKKyAgPC9zY3JpcHQ+
CisgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZS9kdW1wTm9kZUxpc3QtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvZHVtcE5vZGVMaXN0LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1l
bnRzQnlDbGFzc05hbWUvZHVtcE5vZGVMaXN0LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwyNiBAQAorTGluZSAxCitMaW5lIDIKK0xpbmUgMworCitsaW5lIDQKK2xpbmUgNQor
Citbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmpl
Y3QgSFRNTERpdkVsZW1lbnRdLCBsZW5ndGg6IDMKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBb
b2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIFtvYmplY3Qg
SFRNTFBhcmFncmFwaEVsZW1lbnRdLCBsZW5ndGg6IDQKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRd
LCBbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgbGVuZ3RoOiAyCitbb2JqZWN0IEhUTUxEaXZFbGVt
ZW50XSwgW29iamVjdCBIVE1MRGl2RWxlbWVudF0sIGxlbmd0aDogMgorbGVuZ3RoOiAwCitsZW5n
dGg6IDAKK2xlbmd0aDogMAorbGVuZ3RoOiAwCitsZW5ndGg6IDAKK1tvYmplY3QgSFRNTERpdkVs
ZW1lbnRdLCBsZW5ndGg6IDEKK1tvYmplY3QgSFRNTERpdkVsZW1lbnRdLCBbb2JqZWN0IEhUTUxQ
YXJhZ3JhcGhFbGVtZW50XSwgbGVuZ3RoOiAyCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgbGVu
Z3RoOiAxCitbb2JqZWN0IEhUTUxEaXZFbGVtZW50XSwgbGVuZ3RoOiAxCitsZW5ndGg6IDAKK2xl
bmd0aDogMAorbGVuZ3RoOiAwCitsZW5ndGg6IDAKK2xlbmd0aDogMAorCkluZGV4OiBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2R1bXBOb2RlTGlzdC5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUv
ZHVtcE5vZGVMaXN0Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2R1bXBOb2RlTGlzdC5odG1sCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDU0IEBACis8aHRtbD4KKzxib2R5PgorPGRpdiBjbGFzcz0ib25lIj5MaW5lIDE8ZGl2
IGNsYXNzPSJ0d28iPkxpbmUgMjwvZGl2PjxwPkxpbmUgPGk+MzwvaT48L3A+PC9kaXY+Cis8ZGl2
IGlkPSJ0ZXN0IiBjbGFzcz0ib25lIHR3byI+PGRpdiBjbGFzcz0ib25lIHR3byI+bGluZSA0PC9k
aXY+PHAgY2xhc3M9InR3byI+bGluZSA1PC9wPjwvZGl2PgorPHA+PG9sIGlkPSJjb25zb2xlIj48
L29sPjwvcD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICBpZiAod2luZG93
LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
QXNUZXh0KCk7CisKKyAgICBmdW5jdGlvbiBsb2cobWVzc2FnZSkKKyAgICB7CisgICAgICAgIHZh
ciBpdGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKKyAgICAgICAgaXRlbS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtZXNzYWdlKSk7CisgICAgICAgIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJjb25zb2xlIikuYXBwZW5kQ2hpbGQoaXRlbSk7CisgICAgfQor
ICAgIAorICAgIE5vZGVMaXN0LnByb3RvdHlwZS5kdW1wID0gZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgdmFyIHJlc3VsdCA9ICIiOworICAgICAgICB2YXIgaSA9IDA7CisgICAgICAgIGZvciAo
OyBpIDwgdGhpcy5sZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHJlc3VsdCArPSB0aGlzW2ldICsg
IiwgIjsKKyAgICAgICAgcmVzdWx0ICs9ICJsZW5ndGg6ICIgKyBpOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIHRyeSB7CisgICAgICAgIHZhciBlbG0gPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidGVzdCIpOworCisgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCJvbmUiKS5kdW1wKCkpOworICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxl
bWVudHNCeUNsYXNzTmFtZSgidHdvIikuZHVtcCgpKTsKKyAgICAgICAgbG9nKGRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoIm9uZSB0d28iKS5kdW1wKCkpOworICAgICAgICBsb2coZG9j
dW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgib25lXHRcdFxuIFxmdHdvIikuZHVtcCgpKTsK
KyAgICAgICAgbG9nKGRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoIiIpLmR1bXAoKSk7
CisgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJvbmV0d28iKS5k
dW1wKCkpOworICAgICAgICBsb2coZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgpLmR1
bXAoKSk7CisgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKG51bGwp
LmR1bXAoKSk7CisgICAgICAgIGxvZyhkb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHVu
ZGVmaW5lZCkuZHVtcCgpKTsKKworICAgICAgICBsb2coZWxtLmdldEVsZW1lbnRzQnlDbGFzc05h
bWUoIm9uZSIpLmR1bXAoKSk7CisgICAgICAgIGxvZyhlbG0uZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZSgidHdvIikuZHVtcCgpKTsKKyAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
KCJvbmUgdHdvIikuZHVtcCgpKTsKKyAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xhc3NO
YW1lKCJvbmVcdFx0XG4gXGZ0d28iKS5kdW1wKCkpOworICAgICAgICBsb2coZWxtLmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoIiIpLmR1bXAoKSk7CisgICAgICAgIGxvZyhlbG0uZ2V0RWxlbWVudHNC
eUNsYXNzTmFtZSgib25ldHdvIikuZHVtcCgpKTsKKyAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKCkuZHVtcCgpKTsKKyAgICAgICAgbG9nKGVsbS5nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lKG51bGwpLmR1bXAoKSk7CisgICAgICAgIGxvZyhlbG0uZ2V0RWxlbWVudHNCeUNsYXNz
TmFtZSh1bmRlZmluZWQpLmR1bXAoKSk7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgbG9n
KCJFeGNlcHRpb246ICIgKyBleC5kZXNjcmlwdGlvbik7CisgICAgfQorPC9zY3JpcHQ+Cis8L2Jv
ZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lL2FycmF5LzAwMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJheS8wMDEtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZS9hcnJheS8wMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitQQVNT
CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5
LzAwMS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRz
QnlDbGFzc05hbWUvYXJyYXkvMDAxLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMS5odG1sCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDEzIEBACis8IWRvY3R5cGUgaHRtbD4KKzxodG1sIGNsYXNzPSJhCitiIj4K
KyA8aGVhZD4KKyAgPHRpdGxlPmRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYXJyYXkp
OiAiYVxuIjwvdGl0bGU+CisgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvY29tbW9uLmpzIj48
L3NjcmlwdD4KKyA8L2hlYWQ+CisgPGJvZHkgY2xhc3M9ImEKKyI+CisgIDxwIGlkPSJyIj5GQUlM
IChzY3JpcHQgZGlkIG5vdCBydW4pPC9wPgorICA8c2NyaXB0PiB0KGRvY3VtZW50LmdldEVsZW1l
bnRzQnlDbGFzc05hbWUoWyJhXG4iXSksIFtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsIGRvY3Vt
ZW50LmJvZHldKSA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFt
ZS9hcnJheS8wMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJheS8wMDItZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9n
ZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMi5odG1sCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAyLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1l
L2FycmF5LzAwMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyIEBACis8IWRvY3R5cGUg
aHRtbD4KKzxodG1sIGNsYXNzPSJhCitiIj4KKyA8aGVhZD4KKyAgPHRpdGxlPmRvY3VtZW50Lmdl
dEVsZW1lbnRzQnlDbGFzc05hbWUoYXJyYXkpOiAiYiIsImEiPC90aXRsZT4KKyAgPHNjcmlwdCBz
cmM9Ii4uL3Jlc291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keSBj
bGFzcz0iYixhIj4KKyAgPHAgaWQ9InIiPkZBSUwgKHNjcmlwdCBkaWQgbm90IHJ1bik8L3A+Cisg
IDxzY3JpcHQ+IHQoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShbImIiLCAiYSJdKSwg
W2RvY3VtZW50LmJvZHldKSA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlv
dXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMy1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZS9hcnJheS8wMDMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJheS8wMDMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwMy5odG1sCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDAzLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xh
c3NOYW1lL2FycmF5LzAwMy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8IWRv
Y3R5cGUgaHRtbD4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+ZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeUNsYXNzTmFtZShhcnJheSk6ICJiIGEiPC90aXRsZT4KKyAgPHNjcmlwdCBzcmM9Ii4uL3Jl
c291cmNlcy9jb21tb24uanMiPjwvc2NyaXB0PgorIDwvaGVhZD4KKyA8Ym9keSBjbGFzcz0iYSBi
Ij4KKyAgPHAgaWQ9InIiPkZBSUwgKHNjcmlwdCBkaWQgbm90IHJ1bik8L3A+CisgIDxzY3JpcHQ+
IHQoZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShbImIgYSJdKSwgW2RvY3VtZW50LmJv
ZHldKSA8L3NjcmlwdD4KKyA8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0
L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwNC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vZ2V0RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJh
eS8wMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZS9hcnJheS8wMDQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxIEBACitQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVt
ZW50c0J5Q2xhc3NOYW1lL2FycmF5LzAwNC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvYXJyYXkvMDA0Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9nZXRFbGVtZW50c0J5Q2xhc3NOYW1lL2FycmF5
LzAwNC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8IWRvY3R5cGUgaHRtbD4K
KzxodG1sIGNsYXNzPSJhLGIiPgorIDxoZWFkPgorICA8dGl0bGU+ZWxlbWVudC5nZXRFbGVtZW50
c0J5Q2xhc3NOYW1lKGFycmF5KTogImEiLCAiYiI8L3RpdGxlPgorICA8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL2NvbW1vbi5qcyI+PC9zY3JpcHQ+CisgPC9oZWFkPgorIDxib2R5IGNsYXNzPSJh
LGIgeCI+CisgIDxwIGlkPSJyIiBjbGFzcz0iYSxieCI+RkFJTCAoc2NyaXB0IGRpZCBub3QgcnVu
KTwvcD4KKyAgPHNjcmlwdCBjbGFzcz0ieGEsYiI+IHQoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50
LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoWyJcZmEiLCJiXG4iXSksIFtkb2N1bWVudC5ib2R5XSkg
PC9zY3JpcHQ+CisgPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZS9yZXNvdXJjZXMvY29tbW9uLmpzCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRzQnlDbGFzc05hbWUvcmVzb3VyY2VzL2Nv
bW1vbi5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2dldEVsZW1lbnRz
QnlDbGFzc05hbWUvcmVzb3VyY2VzL2NvbW1vbi5qcwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwy
MSBAQAorLy8gcnVucyBhIHRlc3QgYW5kIHdyaXRlcyBhIGxvZworZnVuY3Rpb24gdChjb2xsZWN0
aW9uLCBlbGVtZW50cykgeworICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICB2YXIgbG9nID0gIiIsCisg
ICAgICByID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInIiKSwKKyAgICAgIHBhc3MgPSB0cnVl
CisgIGlmKGNvbGxlY3Rpb24ubGVuZ3RoICE9IGVsZW1lbnRzLmxlbmd0aCkgeworICAgIHBhc3Mg
PSBmYWxzZQorICAgIGxvZyArPSAiR290ICIgKyBjb2xsZWN0aW9uLmxlbmd0aCArICIgZWxlbWVu
dHMsIGV4cGVjdGVkICIgKyBlbGVtZW50cy5sZW5ndGggKyAiLiAiCisgIH0KKyAgZm9yKHZhciBp
ID0gMCwgbWF4ID0gY29sbGVjdGlvbi5sZW5ndGggPiBlbGVtZW50cy5sZW5ndGggPyBlbGVtZW50
cy5sZW5ndGggOiBjb2xsZWN0aW9uLmxlbmd0aDsgaSA8IG1heDsgaSsrKSB7CisgICAgaWYoY29s
bGVjdGlvbltpXSAhPSBlbGVtZW50c1tpXSkgeworICAgICAgcGFzcyA9IGZhbHNlCisgICAgICBs
b2cgKz0gIkdvdCBlbGVtZW50IGAiICsgY29sbGVjdGlvbltpXS50YWdOYW1lICsgImAgKCIgKyBj
b2xsZWN0aW9uW2ldLm5hbWVzcGFjZVVSSSArICIpIgorICAgICAgbG9nICs9ICIsIGV4cGVjdGVk
IGVsZW1lbnQgYCIgKyBlbGVtZW50c1tpXS50YWdOYW1lICsgImAgKCIgKyBlbGVtZW50c1tpXS5u
YW1lc3BhY2VVUkkgKyAiKS4gIgorICAgIH0KKyAgfQorICByLnRleHRDb250ZW50ID0gcGFzcyA/
ICJQQVNTIiA6ICJGQUlMICgiICsgbG9nICsgIikiCit9Cg==
</data>
<flag name="review"
          id="7730"
          type_id="1"
          status="+"
          setter="mitz"
    />
          </attachment>
      

    </bug>

</bugzilla>