<?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>40484</bug_id>
          
          <creation_ts>2010-06-11 11:28:13 -0700</creation_ts>
          <short_desc>Add beforeScript (or equivalent) event to fire on inline scripts and inline stylesheets</short_desc>
          <delta_ts>2011-09-02 09:44:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>41338</dependson>
    
    <dependson>41357</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>abarth</cc>
    
    <cc>ap</cc>
    
    <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>ian</cc>
    
    <cc>levin</cc>
    
    <cc>mjs</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>236933</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-06-11 11:28:13 -0700</bug_when>
    <thetext>beforeload should fire on inline scripts and stylesheets to possibly halt their processing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236942</commentid>
    <comment_count>1</comment_count>
    <who name="Brian Weinstein">bweinstein</who>
    <bug_when>2010-06-11 11:39:47 -0700</bug_when>
    <thetext>&lt;rdar://problem/8084335&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236945</commentid>
    <comment_count>2</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-11 11:41:37 -0700</bug_when>
    <thetext>I see why having an event for this would be useful, of course, but is beforeload the right thing for this?

I&apos;d hate to conflate the concept of &quot;an external resource identified by a URL&quot; and &quot;some inline resource&quot; without really thinking it through.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238401</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-06-15 08:46:08 -0700</bug_when>
    <thetext>I think Hyatt was thinking of adding something like Opera&apos;s BeforeScript event [1], except that it would apply to stylesheets, too.

1. http://www.opera.com/docs/userjs/specs/#evlistener</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238412</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-15 09:09:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I think Hyatt was thinking of adding something like Opera&apos;s BeforeScript event [1], except that it would apply to stylesheets, too.
&gt; 
&gt; 1. http://www.opera.com/docs/userjs/specs/#evlistener

That&apos;s something I can totally get behind.  Updating bug title to that effect.

Still seems weird to have something named &quot;beforeScript&quot; fire on stylesheets, but, whatever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240813</commentid>
    <comment_count>5</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2010-06-21 12:31:02 -0700</bug_when>
    <thetext>Yeah I think I&apos;m going to call it beforeprocess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243234</commentid>
    <comment_count>6</comment_count>
      <attachid>59805</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-25 15:55:20 -0700</bug_when>
    <thetext>Created attachment 59805
IDL and boilerplate, build system stuff, etc - actual implementation to follow in a second patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243407</commentid>
    <comment_count>7</comment_count>
      <attachid>59805</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-06-26 11:46:11 -0700</bug_when>
    <thetext>Comment on attachment 59805
IDL and boilerplate, build system stuff, etc - actual implementation to follow in a second patch.

&gt;      BeforeLoadEvent \
&gt; +	BeforeProcessEvent \
&gt;      Blob \

There&apos;s a tab here, but the other lines use spaces.

&gt; +const String&amp; BeforeProcessEvent::text() const
&gt; +{
&gt; +    // FIXME - Return innerText for &lt;style&gt; elements and inline &lt;script&gt; elements, or the resource text for remote &lt;script&gt; elements
&gt; +    static String* placeholder = new String;
&gt; +    return *placeholder;
&gt; +}

Can this really return const String&amp; in all cases? Never needs to be a new string?

&gt; +        return adoptRef(new BeforeProcessEvent());

No need for the parentheses here after the class name.

&gt; +    void initBeforeProcessEvent(const AtomicString&amp; type, bool canBubble, bool cancelable)
&gt; +    {
&gt; +        if (dispatched())
&gt; +            return;
&gt; +        
&gt; +        initEvent(type, canBubble, cancelable);
&gt; +    }

Why the dispatched() check? Doesn&apos;t initEvent already check that?

&gt; +private:
&gt; +    BeforeProcessEvent()
&gt; +        : Event(eventNames().beforeprocessEvent, false, true)
&gt; +    {}

Braces should be on separate lines.

&gt; +        void initBeforeProcessEvent(in DOMString type,
&gt; +                                 in boolean canBubble, 
&gt; +                                 in boolean cancelable);

You should just put this all on one line. This indenting style isn&apos;t good, even if you copied it from another IDL file.

Otherwise looks OK. Seems fine to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243423</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-26 16:00:48 -0700</bug_when>
    <thetext>Scaffolding landed in r61964

Actually hookup coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243429</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-26 19:48:03 -0700</bug_when>
    <thetext>This should be easy to wire into the HTML5ScriptRunner.  You should make sure to test what document.write() looks like during onBeforeProcess (where should the insertion point be?).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243433</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-26 21:37:16 -0700</bug_when>
    <thetext>There&apos;s alot more than just the HTMLScriptRunner to patch into, but I&apos;ve found many places.  Patch will be up monday morning.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243436</commentid>
    <comment_count>11</comment_count>
      <attachid>59805</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-26 23:30:13 -0700</bug_when>
    <thetext>Comment on attachment 59805
IDL and boilerplate, build system stuff, etc - actual implementation to follow in a second patch.

Cool idea.  Should we propose these event for HTML.next since we&apos;re adding them to the platform?  We need to be careful with the interaction of setText and external scripts.

I wonder if we can generalize this approach to give folks an XSS defense...  I&apos;ll have to think about that more.

WebCore/DerivedSources.make:56
 +  	BeforeProcessEvent \
Bad indent

WebCore/dom/BeforeProcessEvent.cpp:34
 +      // FIXME - Return innerText for &lt;style&gt; elements and inline &lt;script&gt; elements, or the resource text for remote &lt;script&gt; elements
Presumably limited to inline style as well?

WebCore/dom/BeforeProcessEvent.cpp:42
 +      // remote &lt;script&gt; elements, replacing it with an innerText property.
Woah, that sounds scary.  I&apos;d like to look at this in the next patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243737</commentid>
    <comment_count>12</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 09:37:11 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 59805 [details])
&gt; Cool idea.  Should we propose these event for HTML.next since we&apos;re adding them to the platform?  We need to be careful with the interaction of setText and external scripts.
...
&gt; WebCore/dom/BeforeProcessEvent.cpp:42
&gt;  +      // remote &lt;script&gt; elements, replacing it with an innerText property.
&gt; Woah, that sounds scary.  I&apos;d like to look at this in the next patch.

Yah, as I&apos;ve gotten much closer to finishing the patch and have been filling out layouttests, I realize that may not be realistic.  We&apos;ll see in a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243973</commentid>
    <comment_count>13</comment_count>
      <attachid>59958</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 16:25:39 -0700</bug_when>
    <thetext>Created attachment 59958
Rework createAttributeEventListener

Rework createAttributeEventListener.

For the next patch, it&apos;s important that JSLazyEventListener&apos;s know what their original Node* was, event for window events created from &lt;svg&gt;, &lt;frameset&gt;, and &lt;body&gt; elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243976</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-28 16:33:34 -0700</bug_when>
    <thetext>Attachment 59958 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/3357015</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243981</commentid>
    <comment_count>15</comment_count>
      <attachid>59958</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-06-28 17:04:21 -0700</bug_when>
    <thetext>Comment on attachment 59958
Rework createAttributeEventListener

&gt; +PassRefPtr&lt;JSLazyEventListener&gt; createWindowAttributeEventListener(Node* windowEquivalentNode, Attribute* attr)
&gt;  {
&gt; +    Frame* frame = windowEquivalentNode-&gt;document()-&gt;frame();

I would reinforce this by asserting that the node is actually one of those elements. Oh, and maybe pass Element*, not Node*.

&gt; -    return JSLazyEventListener::create(attr-&gt;localName().string(), eventParameterName(frame-&gt;document()-&gt;isSVGDocument()), attr-&gt;value(), 0, sourceURL, lineNumber, wrapper, mainThreadNormalWorld());
&gt; +    return JSLazyEventListener::create(attr-&gt;localName().string(), eventParameterName(frame-&gt;document()-&gt;isSVGDocument()), attr-&gt;value(), windowEquivalentNode, sourceURL, lineNumber, wrapper, mainThreadNormalWorld());

Please add a comment in JSLazyEventListener.h explaining that m_wrapper isn&apos;t necessarily a wrapper for m_originalNode, but is created from it if the wrapper is null. You may want to remove &quot;if (m_originalNode)&quot; condition in JSLazyEventListener::initializeJSFunction(), as it&apos;s seemingly always true now.

It will be a fairly confusing detail that wrapper doesn&apos;t always match m_originalNode.

r=me with comments addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243995</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 17:27:52 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Attachment 59958 [details] did not build on chromium:
&gt; Build output: http://webkit-commit-queue.appspot.com/results/3357015

I&apos;m ready to land, but this chromium build failure makes me nervous.

I don&apos;t understand how the failures listed in the log could possibly have occurred as a result of this patch, if their build *was* already working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243996</commentid>
    <comment_count>17</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 17:28:13 -0700</bug_when>
    <thetext>Especially with all the other builds continuing to work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243997</commentid>
    <comment_count>18</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 17:29:32 -0700</bug_when>
    <thetext>Ahhh.  V8 vs JSC.  Great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244000</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-28 17:35:06 -0700</bug_when>
    <thetext>&gt; I&apos;m ready to land, but this chromium build failure makes me nervous.
&gt; 
&gt; I don&apos;t understand how the failures listed in the log could possibly have occurred as a result of this patch, if their build *was* already working.

In general, the EWS checks that it can build before applying the patch, so a broken build just causes the bots to wait.

&gt; Ahhh.  V8 vs JSC.  Great.

I believe the current social contract is that you can land patches that break because of V8 and it&apos;s the Chromium project&apos;s responsibility to clean up.  Today, the folks on cleanup duty are dglazkov and mnaganov.  They might appreciate if you gave them a heads up first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244001</commentid>
    <comment_count>20</comment_count>
      <attachid>59963</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 17:36:06 -0700</bug_when>
    <thetext>Created attachment 59963
Putting up for review just to see if Chromium&apos;s build is fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244002</commentid>
    <comment_count>21</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 17:37:11 -0700</bug_when>
    <thetext>Okay, thanks for the heads up.

I&apos;ll land my patch that attempts to keep V8 going, but it might not quite work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244004</commentid>
    <comment_count>22</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 17:37:44 -0700</bug_when>
    <thetext>(I note that at least dglazkov is CC&apos;ed on this bug)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244005</commentid>
    <comment_count>23</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 17:38:54 -0700</bug_when>
    <thetext>Landed in r62052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244007</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-28 17:43:44 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/62052 might have broken Qt Linux Release minimal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244008</commentid>
    <comment_count>25</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 17:44:43 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; http://trac.webkit.org/changeset/62052 might have broken Qt Linux Release minimal

Why doesn&apos;t this type of message have a link to a build log of the suspected build breakage?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244009</commentid>
    <comment_count>26</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 17:46:06 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; http://trac.webkit.org/changeset/62052 might have broken Qt Linux Release minimal

It passed EWS and it didn&apos;t break Qt Release Linux.  How is Qt Linux Release minimal different?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244015</commentid>
    <comment_count>27</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-28 17:52:06 -0700</bug_when>
    <thetext>&gt; &gt; http://trac.webkit.org/changeset/62052 might have broken Qt Linux Release minimal
&gt; 
&gt; Why doesn&apos;t this type of message have a link to a build log of the suspected build breakage?

That&apos;s a good suggestion.  In the case of broken tests, we&apos;re planning to have it list the broken tests.  Improving these tools is on the agenda, but we&apos;ve been stepping back a bit to understand which are the important problems.

&gt; &gt; http://trac.webkit.org/changeset/62052 might have broken Qt Linux Release minimal
&gt; 
&gt; It passed EWS and it didn&apos;t break Qt Release Linux.  How is Qt Linux Release minimal different?

We should ask a Qt expert, but I think minimal tries to compile with all the feature defines turned off.  I&apos;m not sure exactly why this bot is useful, but it tends to build very quickly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244028</commentid>
    <comment_count>28</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-06-28 18:32:33 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; Ahhh.  V8 vs JSC.  Great.
&gt; 
&gt; I believe the current social contract is that you can land patches that break because of V8 and it&apos;s the Chromium project&apos;s responsibility to clean up.  Today, the folks on cleanup duty are dglazkov and mnaganov.  They might appreciate if you gave them a heads up first.

Actually levin and mnaganov :) Thanks for attempting to fix it Brady! 

It made the final tweak completely trivial: http://trac.webkit.org/changeset/62073</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244063</commentid>
    <comment_count>29</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 21:06:23 -0700</bug_when>
    <thetext>After discussions with Maciej today hashing out an awful recursion issue with the attribute listeners, we decided on a few of things:

1 - We shouldn&apos;t support the onbeforeprocess attribute for scripts.  The only way to add listeners for the event should be in script itself, using addEventListener.

2 - We can still support on onbeforeprocess attribute for &lt;style&gt; since there&apos;s no recursion risk or other problems caused by it.

3 - People interested in listening to the event for scripts might not be interested in listening to it for style, and vice versa.

The conclusion of all of this?  Splitting this into beforeprocessscript and beforeprocessstyle</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244069</commentid>
    <comment_count>30</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 21:25:48 -0700</bug_when>
    <thetext>Retitling to the effect that this bug is about script-only, and https://bugs.webkit.org/show_bug.cgi?id=41328 covers style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244081</commentid>
    <comment_count>31</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 21:50:39 -0700</bug_when>
    <thetext>I have the script stuff all working, but will first attach a patch that does the &quot;beforeProcess -&gt; beforeProcessScript and beforeProcessStyle&quot; divide.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244087</commentid>
    <comment_count>32</comment_count>
      <attachid>59984</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 22:00:01 -0700</bug_when>
    <thetext>Created attachment 59984
Split BeforeProcess into BeforeProcessScript and BeforeProcessStyle

Split BeforeProcess into BeforeProcessScript and BeforeProcessStyle

After this point, style work will take place in https://bugs.webkit.org/show_bug.cgi?id=41328</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244088</commentid>
    <comment_count>33</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-28 22:02:49 -0700</bug_when>
    <thetext>Is there any spec-work being done in this area?  We commonly r- patches which have no spec-basis (see the haptic CSS stuff as of late).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244091</commentid>
    <comment_count>34</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-06-28 22:11:49 -0700</bug_when>
    <thetext>Attachment 59984 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/3356035</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244094</commentid>
    <comment_count>35</comment_count>
      <attachid>59984</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-06-28 22:13:16 -0700</bug_when>
    <thetext>Comment on attachment 59984
Split BeforeProcess into BeforeProcessScript and BeforeProcessStyle

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 62085)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,67 @@
&gt; +2010-06-28  Brady Eidson  &lt;beidson@apple.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        More progress on https://bugs.webkit.org/show_bug.cgi?id=40484
&gt; +
&gt; +        It has become apparent that beforeprocessscript and beforeprocessstyle need to be separate,
&gt; +        and also that onbeforeprocessscript should not exist, while onbeforeprocessstyle should.
&gt; +

Please add more information here.

&gt; +    void initBeforeProcessScriptEvent(const AtomicString&amp; type, bool canBubble, bool cancelable)
&gt; +    {
&gt; +        initEvent(type, canBubble, cancelable);
&gt; +    }

Should this take a text argument as well? (Same question for the style event as well.

Do you plan on adding BeforeProcessEventConstructor and BeforeProcessStyleEventConstructor to DOMWindow.idl in a follow up patch?

Seems fine as a stepping stone. r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244095</commentid>
    <comment_count>36</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 22:14:34 -0700</bug_when>
    <thetext>(In reply to comment #33)
&gt; Is there any spec-work being done in this area?  We commonly r- patches which have no spec-basis (see the haptic CSS stuff as of late).

Definitely plan to submit to standards bodies after we stop churning on our own ideas.  As I discuss this with folks on IRC, it appears we&apos;ll end up reverting to Operas beforeScript and adding beforeStyle, so there&apos;d already be multiple implementors for part of it.

Stay tuned on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244097</commentid>
    <comment_count>37</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-06-28 22:19:05 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (From update of attachment 59984 [details])
&gt; 
&gt; Seems fine as a stepping stone. r=me.

Thanks for the review.  I&apos;m going to hold off on landing this, as Dan pointed out the following:

1 - Opera already has beforeScript
2 - Our original motivation for calling our event beforeProcess was that we intended to overload it for both scripts and styles
3 - In implementing things, it became clear that we should have two different events for script and style
4 - So why not fall back to Opera&apos;s beforeScript for our script event, and add our own beforeStyle event?

Even though I have the script half of this implemented, with layouttests, and ready to go, I need to back off my mad rush to try to finish this work before my vacation and get some consensus on that idea before landing this stepping stone.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244100</commentid>
    <comment_count>38</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-28 22:21:07 -0700</bug_when>
    <thetext>&gt; Even though I have the script half of this implemented, with layouttests, and ready to go, I need to back off my mad rush to try to finish this work before my vacation and get some consensus on that idea before landing this stepping stone.

Would be willing to post your patch somewhere?  I&apos;d be happy to work on it while you&apos;re away.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244103</commentid>
    <comment_count>39</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-28 22:30:10 -0700</bug_when>
    <thetext>By the way, Qt still fails to compile because of http://trac.webkit.org/changeset/62052

g++ -c -m32 -pipe -Wall -Wextra -Wreturn-type -fno-strict-aliasing -Wcast-align -Wchar-subscripts -Wformat-security -Wreturn-type -Wno-unused-parameter -Wno-sign-compare -Wno-switch -Wno-switch-enum -Wundef -Wmissing-noreturn -Winit-self -ffunction-sections -fdata-sections -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -fPIC -DENABLE_3D_RENDERING=0 -DENABLE_CHANNEL_MESSAGING=0 -DENABLE_DATABASE=0 -DENABLE_DATALIST=0 -DENABLE_DOM_STORAGE=0 -DENABLE_EVENTSOURCE=0 -DENABLE_FILTERS=0 -DENABLE_ICONDATABASE=0 -DENABLE_JAVASCRIPT_DEBUGGER=0 -DENABLE_NOTIFICATIONS=0 -DENABLE_OFFLINE_WEB_APPLICATIONS=0 -DENABLE_RUBY=0 -DENABLE_SANDBOX=0 -DENABLE_SHARED_WORKERS=0 -DENABLE_SVG=0 -DENABLE_SVG_ANIMATION=0 -DENABLE_SVG_AS_IMAGE=0 -DENABLE_SVG_FONTS=0 -DENABLE_SVG_FOREIGN_OBJECT=0 -DENABLE_SVG_USE=0 -DENABLE_TILED_BACKING_STORE=0 -DENABLE_VIDEO=0 -DENABLE_WEB_SOCKETS=0 -DENABLE_WORKERS=0 -DENABLE_XPATH=0 -DENABLE_XSLT=0 -DBUILDING_QT__=1 -DWTF_USE_ACCELERATED_COMPOSITING -DNDEBUG -DQT_MAKEDLL -DBUILD_WEBKIT -DBUILDING_QT__ -DBUILDING_JavaScriptCore -DBUILDING_WTF -DENABLE_NETSCAPE_PLUGIN_API=0 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_DIRECTORY_UPLOAD=0 -DENABLE_SQLITE=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_WCSS=0 -DENABLE_WML=0 -DENABLE_XHTMLMP=0 -DENABLE_DATAGRID=0 -DENABLE_METER_TAG=1 -DENABLE_PROGRESS_TAG=1 -DENABLE_BLOB_SLICE=0 -DENABLE_IMAGE_RESIZER=0 -DENABLE_INPUT_SPEECH=0 -DENABLE_SVG_FONTS=0 -DENABLE_SVG_FOREIGN_OBJECT=0 -DENABLE_SVG_ANIMATION=0 -DENABLE_SVG_AS_IMAGE=0 -DENABLE_SVG_USE=0 -DENABLE_WEB_TIMING=0 -DENABLE_TOUCH_EVENTS=1 -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.6.2/mkspecs/linux-g++-32 -I../../../WebCore -I/usr/local/Trolltech/Qt-4.6.2/include/QtCore -I/usr/local/Trolltech/Qt-4.6.2/include/QtNetwork -I/usr/local/Trolltech/Qt-4.6.2/include/QtGui -I/usr/local/Trolltech/Qt-4.6.2/include -I../../../WebCore/bridge/qt -I../../../WebCore/page/qt -I../../../WebCore/platform/graphics/qt -I../../../WebCore/platform/network/qt -I../../../WebCore/platform/qt -I../../../WebKit/qt/Api -I../../../WebKit/qt/WebCoreSupport -I../../../WebCore -I../../../WebCore/accessibility -I../../../WebCore/bindings/js -I../../../WebCore/bridge -I../../../WebCore/bridge/c -I../../../WebCore/bridge/jsc -I../../../WebCore/css -I../../../WebCore/dom -I../../../WebCore/dom/default -I../../../WebCore/editing -I../../../WebCore/history -I../../../WebCore/html -I../../../WebCore/html/canvas -I../../../WebCore/inspector -I../../../WebCore/loader -I../../../WebCore/loader/appcache -I../../../WebCore/loader/archive -I../../../WebCore/loader/icon -I../../../WebCore/mathml -I../../../WebCore/notifications -I../../../WebCore/page -I../../../WebCore/page/animation -I../../../WebCore/platform -I../../../WebCore/platform/animation -I../../../WebCore/platform/graphics -I../../../WebCore/platform/graphics/filters -I../../../WebCore/platform/graphics/transforms -I../../../WebCore/platform/image-decoders -I../../../WebCore/platform/mock -I../../../WebCore/platform/network -I../../../WebCore/platform/sql -I../../../WebCore/platform/text -I../../../WebCore/platform/text/transcoder -I../../../WebCore/plugins -I../../../WebCore/rendering -I../../../WebCore/rendering/style -I../../../WebCore/storage -I../../../WebCore/svg -I../../../WebCore/svg/animation -I../../../WebCore/svg/graphics -I../../../WebCore/svg/graphics/filters -I../../../WebCore/websockets -I../../../WebCore/wml -I../../../WebCore/workers -I../../../WebCore/xml -Igenerated -I../../../JavaScriptCore -I../../../../build -I../../../JavaScriptCore/assembler -I../../../JavaScriptCore/bytecode -I../../../JavaScriptCore/bytecompiler -I../../../JavaScriptCore/debugger -I../../../JavaScriptCore/interpreter -I../../../JavaScriptCore/jit -I../../../JavaScriptCore/parser -I../../../JavaScriptCore/pcre -I../../../JavaScriptCore/profiler -I../../../JavaScriptCore/runtime -I../../../JavaScriptCore/wtf -I../../../JavaScriptCore/wtf/symbian -I../../../JavaScriptCore/wtf/unicode -I../../../JavaScriptCore/yarr -I../../../JavaScriptCore/API -I../../../JavaScriptCore/ForwardingHeaders -I../JavaScriptCore/generated -I../include/QtWebKit -I. -I../../../WebCore -I. -o obj/release/ScriptEventListener.o ../../../WebCore/bindings/js/ScriptEventListener.cpp
../../../WebCore/bindings/js/ScriptEventListener.cpp:40:22: error: SVGNames.h: No such file or directory
g++ -c -m32 -pipe -Wall -Wextra -Wreturn-type -fno-strict-aliasing -Wcast-align -Wchar-subscripts -Wformat-security -Wreturn-type -Wno-unused-parameter -Wno-sign-compare -Wno-switch -Wno-switch-enum -Wundef -Wmissing-noreturn -Winit-self -ffunction-sections -fdata-sections -O2 -fvisibility=hidden -fvisibility-inlines-hidden -D_REENTRANT -fPIC -DENABLE_3D_RENDERING=0 -DENABLE_CHANNEL_MESSAGING=0 -DENABLE_DATABASE=0 -DENABLE_DATALIST=0 -DENABLE_DOM_STORAGE=0 -DENABLE_EVENTSOURCE=0 -DENABLE_FILTERS=0 -DENABLE_ICONDATABASE=0 -DENABLE_JAVASCRIPT_DEBUGGER=0 -DENABLE_NOTIFICATIONS=0 -DENABLE_OFFLINE_WEB_APPLICATIONS=0 -DENABLE_RUBY=0 -DENABLE_SANDBOX=0 -DENABLE_SHARED_WORKERS=0 -DENABLE_SVG=0 -DENABLE_SVG_ANIMATION=0 -DENABLE_SVG_AS_IMAGE=0 -DENABLE_SVG_FONTS=0 -DENABLE_SVG_FOREIGN_OBJECT=0 -DENABLE_SVG_USE=0 -DENABLE_TILED_BACKING_STORE=0 -DENABLE_VIDEO=0 -DENABLE_WEB_SOCKETS=0 -DENABLE_WORKERS=0 -DENABLE_XPATH=0 -DENABLE_XSLT=0 -DBUILDING_QT__=1 -DWTF_USE_ACCELERATED_COMPOSITING -DNDEBUG -DQT_MAKEDLL -DBUILD_WEBKIT -DBUILDING_QT__ -DBUILDING_JavaScriptCore -DBUILDING_WTF -DENABLE_NETSCAPE_PLUGIN_API=0 -DENABLE_ORIENTATION_EVENTS=0 -DENABLE_DIRECTORY_UPLOAD=0 -DENABLE_SQLITE=0 -DENABLE_DASHBOARD_SUPPORT=0 -DENABLE_WCSS=0 -DENABLE_WML=0 -DENABLE_XHTMLMP=0 -DENABLE_DATAGRID=0 -DENABLE_METER_TAG=1 -DENABLE_PROGRESS_TAG=1 -DENABLE_BLOB_SLICE=0 -DENABLE_IMAGE_RESIZER=0 -DENABLE_INPUT_SPEECH=0 -DENABLE_SVG_FONTS=0 -DENABLE_SVG_FOREIGN_OBJECT=0 -DENABLE_SVG_ANIMATION=0 -DENABLE_SVG_AS_IMAGE=0 -DENABLE_SVG_USE=0 -DENABLE_WEB_TIMING=0 -DENABLE_TOUCH_EVENTS=1 -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED -I/usr/local/Trolltech/Qt-4.6.2/mkspecs/linux-g++-32 -I../../../WebCore -I/usr/local/Trolltech/Qt-4.6.2/include/QtCore -I/usr/local/Trolltech/Qt-4.6.2/include/QtNetwork -I/usr/local/Trolltech/Qt-4.6.2/include/QtGui -I/usr/local/Trolltech/Qt-4.6.2/include -I../../../WebCore/bridge/qt -I../../../WebCore/page/qt -I../../../WebCore/platform/graphics/qt -I../../../WebCore/platform/network/qt -I../../../WebCore/platform/qt -I../../../WebKit/qt/Api -I../../../WebKit/qt/WebCoreSupport -I../../../WebCore -I../../../WebCore/accessibility -I../../../WebCore/bindings/js -I../../../WebCore/bridge -I../../../WebCore/bridge/c -I../../../WebCore/bridge/jsc -I../../../WebCore/css -I../../../WebCore/dom -I../../../WebCore/dom/default -I../../../WebCore/editing -I../../../WebCore/history -I../../../WebCore/html -I../../../WebCore/html/canvas -I../../../WebCore/inspector -I../../../WebCore/loader -I../../../WebCore/loader/appcache -I../../../WebCore/loader/archive -I../../../WebCore/loader/icon -I../../../WebCore/mathml -I../../../WebCore/notifications -I../../../WebCore/page -I../../../WebCore/page/animation -I../../../WebCore/platform -I../../../WebCore/platform/animation -I../../../WebCore/platform/graphics -I../../../WebCore/platform/graphics/filters -I../../../WebCore/platform/graphics/transforms -I../../../WebCore/platform/image-decoders -I../../../WebCore/platform/mock -I../../../WebCore/platform/network -I../../../WebCore/platform/sql -I../../../WebCore/platform/text -I../../../WebCore/platform/text/transcoder -I../../../WebCore/plugins -I../../../WebCore/rendering -I../../../WebCore/rendering/style -I../../../WebCore/storage -I../../../WebCore/svg -I../../../WebCore/svg/animation -I../../../WebCore/svg/graphics -I../../../WebCore/svg/graphics/filters -I../../../WebCore/websockets -I../../../WebCore/wml -I../../../WebCore/workers -I../../../WebCore/xml -Igenerated -I../../../JavaScriptCore -I../../../../build -I../../../JavaScriptCore/assembler -I../../../JavaScriptCore/bytecode -I../../../JavaScriptCore/bytecompiler -I../../../JavaScriptCore/debugger -I../../../JavaScriptCore/interpreter -I../../../JavaScriptCore/jit -I../../../JavaScriptCore/parser -I../../../JavaScriptCore/pcre -I../../../JavaScriptCore/profiler -I../../../JavaScriptCore/runtime -I../../../JavaScriptCore/wtf -I../../../JavaScriptCore/wtf/symbian -I../../../JavaScriptCore/wtf/unicode -I../../../JavaScriptCore/yarr -I../../../JavaScriptCore/API -I../../../JavaScriptCore/ForwardingHeaders -I../JavaScriptCore/generated -I../include/QtWebKit -I. -I../../../WebCore -I. -o obj/release/ScriptFunctionCall.o ../../../WebCore/bindings/js/ScriptFunctionCall.cpp
../../../WebCore/bindings/js/ScriptEventListener.cpp: In function â€˜WTF::PassRefPtr&lt;WebCore::JSLazyEventListener&gt; WebCore::createWindowAttributeEventListener(WebCore::Element*, WebCore::Attribute*)â€™:
../../../WebCore/bindings/js/ScriptEventListener.cpp:87: error: invalid use of incomplete type â€˜struct WebCore::Elementâ€™
../../../WebCore/dom/Node.h:52: error: forward declaration of â€˜struct WebCore::Elementâ€™
../../../WebCore/bindings/js/ScriptEventListener.cpp:110: error: no matching function for call to â€˜WebCore::JSLazyEventListener::create(const WebCore::String&amp;, const WebCore::String&amp;, const WebCore::AtomicString&amp;, WebCore::Element*&amp;, WebCore::String&amp;, int&amp;, JSC::JSObject*&amp;, WebCore::DOMWrapperWorld*)â€™
../../../WebCore/bindings/js/JSLazyEventListener.h:32: note: candidates are: static WTF::PassRefPtr&lt;WebCore::JSLazyEventListener&gt; WebCore::JSLazyEventListener::create(const WebCore::String&amp;, const WebCore::String&amp;, const WebCore::String&amp;, WebCore::Node*, const WebCore::String&amp;, int, JSC::JSObject*, WebCore::DOMWrapperWorld*)

http://build.webkit.org/builders/Qt%20Linux%20Release%20minimal/builds/3925/steps/compile-webkit/logs/stdio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244177</commentid>
    <comment_count>40</comment_count>
      <attachid>59805</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 03:17:02 -0700</bug_when>
    <thetext>Comment on attachment 59805
IDL and boilerplate, build system stuff, etc - actual implementation to follow in a second patch.

Cleared Darin Adler&apos;s review+ from obsolete attachment 59805 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244178</commentid>
    <comment_count>41</comment_count>
      <attachid>59958</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-29 03:17:08 -0700</bug_when>
    <thetext>Comment on attachment 59958
Rework createAttributeEventListener

Cleared Alexey Proskuryakov&apos;s review+ from obsolete attachment 59958 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244290</commentid>
    <comment_count>42</comment_count>
      <attachid>59963</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-06-29 07:45:51 -0700</bug_when>
    <thetext>Comment on attachment 59963
Putting up for review just to see if Chromium&apos;s build is fixed.

This is causing crashes in the regression tests. See bug 41352.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>273555</commentid>
    <comment_count>43</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-09-02 13:57:01 -0700</bug_when>
    <thetext>Unsure if this bug still needs to be open.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324808</commentid>
    <comment_count>44</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-20 22:36:44 -0800</bug_when>
    <thetext>It appears this was never landed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461263</commentid>
    <comment_count>45</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2011-09-02 09:44:56 -0700</bug_when>
    <thetext>The reasons why we wanted this have passed.  I think Sam is nuking the code.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59805</attachid>
            <date>2010-06-25 15:55:20 -0700</date>
            <delta_ts>2010-06-29 03:17:02 -0700</delta_ts>
            <desc>IDL and boilerplate, build system stuff, etc - actual implementation to follow in a second patch.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>22977</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MTg4MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNDggQEAKKzIwMTAtMDYtMjUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGJl
Zm9yZVByb2Nlc3MgZXZlbnQgbmVlZHMgdG8gZmlyZSBiZWZvcmUgaW5saW5lIHNjcmlwdHMvc3R5
bGVzaGVldHMgdGFrZSBlZmZlY3QKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzgwODQzMzU+IGFu
ZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDA0ODQKKworICAgICAg
ICBUaGlzIHBhdGNoIGFkZHMgdGhlIEV2ZW50LCB0aGUgb25CZWZvcmVQcm9jZXNzIGF0dHJpYnV0
ZSwgYW5kIGhvb2tzIHRoZSBhdHRyaWJ1dGUgdXAgaW4gYSBmZXcgcGxhY2VzLgorICAgICAgICBC
ZXNpZGVzIHRoYXQsIG5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICBMYXlvdXQgdGVz
dHMgd2lsbCBjb21lIHdpdGggdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbnMgYXMgYSBmb2xsb3d1
cCB0byB0aGlzIHBhdGNoLgorCisgICAgICAgIFByb2plY3QgZmlsZSBub25zZW5zZToKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgU2Nh
ZmZvbGRpbmcgZm9yIHRoZSBldmVudCBpdHNlbGY6CisgICAgICAgICogZG9tL0JlZm9yZVByb2Nl
c3NFdmVudC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6QmVmb3JlUHJvY2Vzc0V2ZW50
Ojp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkJlZm9yZVByb2Nlc3NFdmVudDo6c2V0VGV4dCk6
CisgICAgICAgICogZG9tL0JlZm9yZVByb2Nlc3NFdmVudC5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkJlZm9yZVByb2Nlc3NFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJl
Zm9yZVByb2Nlc3NFdmVudDo6aW5pdEJlZm9yZVByb2Nlc3NFdmVudCk6CisgICAgICAgIChXZWJD
b3JlOjpCZWZvcmVQcm9jZXNzRXZlbnQ6OkJlZm9yZVByb2Nlc3NFdmVudCk6CisgICAgICAgICog
ZG9tL0JlZm9yZVByb2Nlc3NFdmVudC5pZGw6IEFkZGVkLgorCisgICAgICAgICogZG9tL0V2ZW50
TmFtZXMuaDoKKworICAgICAgICBSZXNwZWN0IHRoZSBvbkJlZm9yZVByb2Nlc3MgYXR0cmlidXRl
OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Oik6CisKKyAgICAgICAgKiBodG1sL0hUTUxBdHRy
aWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6
CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKwogMjAxMC0wNi0yNSAg
U2FtIE1hZ251c29uICA8c21hZ251c29uQG5ldGZsaXguY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2
aXNpb24gNjE4ODApCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29w
eSkKQEAgLTUzLDYgKzUzLDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgQXR0ciBcCiAgICAgQmFy
SW5mbyBcCiAgICAgQmVmb3JlTG9hZEV2ZW50IFwKKwlCZWZvcmVQcm9jZXNzRXZlbnQgXAogICAg
IEJsb2IgXAogICAgIEJsb2JCdWlsZGVyIFwKICAgICBDREFUQVNlY3Rpb24gXApJbmRleDogV2Vi
Q29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFt
CShyZXZpc2lvbiA2MTg4MCkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29w
eSkKQEAgLTEyOSw2ICsxMjksNyBAQCBJRExfQklORElOR1MgKz0gXAogCVdlYkNvcmUvY3NzL1dl
YktpdENTU1RyYW5zZm9ybVZhbHVlLmlkbCBcCiAJV2ViQ29yZS9kb20vQXR0ci5pZGwgXAogCVdl
YkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5pZGwgXAorCVdlYkNvcmUvZG9tL0JlZm9yZVByb2Nl
c3NFdmVudC5pZGwgXAogCVdlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5pZGwgXAogCVdlYkNvcmUv
ZG9tL0NoYXJhY3RlckRhdGEuaWRsIFwKIAlXZWJDb3JlL2RvbS9DbGllbnRSZWN0LmlkbCBcCkBA
IC03MzEsNiArNzMyLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9BdHRy
aWJ1dGUuY3BwIFwKIAlXZWJDb3JlL2RvbS9BdHRyaWJ1dGUuaCBcCiAJV2ViQ29yZS9kb20vQmVm
b3JlTG9hZEV2ZW50LmggXAorCVdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NFdmVudC5jcHAgXAor
CVdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NFdmVudC5oIFwKIAlXZWJDb3JlL2RvbS9CZWZvcmVU
ZXh0SW5zZXJ0ZWRFdmVudC5jcHAgXAogCVdlYkNvcmUvZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2
ZW50LmggXAogCVdlYkNvcmUvZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcCBcCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2
aXNpb24gNjE4ODApCisrKyBXZWJDb3JlL1dlYkNvcmUuZ3lwaQkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQAogICAgICAgICAgICAgJ2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5p
ZGwnLAogICAgICAgICAgICAgJ2RvbS9BdHRyLmlkbCcsCiAgICAgICAgICAgICAnZG9tL0JlZm9y
ZUxvYWRFdmVudC5pZGwnLAorICAgICAgICAgICAgJ2RvbS9CZWZvcmVQcm9jZXNzRXZlbnQuaWRs
JywKICAgICAgICAgICAgICdkb20vQ0RBVEFTZWN0aW9uLmlkbCcsCiAgICAgICAgICAgICAnZG9t
L0NoYXJhY3RlckRhdGEuaWRsJywKICAgICAgICAgICAgICdkb20vQ2xpZW50UmVjdC5pZGwnLApA
QCAtMTA2MCw2ICsxMDYxLDggQEAKICAgICAgICAgICAgICdkb20vQmVmb3JlVGV4dEluc2VydGVk
RXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuaCcs
CiAgICAgICAgICAgICAnZG9tL0JlZm9yZUxvYWRFdmVudC5oJywKKyAgICAgICAgICAgICdkb20v
QmVmb3JlUHJvY2Vzc0V2ZW50LmNwcCcsCisgICAgICAgICAgICAnZG9tL0JlZm9yZVByb2Nlc3NF
dmVudC5oJywKICAgICAgICAgICAgICdkb20vQmVmb3JlVW5sb2FkRXZlbnQuY3BwJywKICAgICAg
ICAgICAgICdkb20vQmVmb3JlVW5sb2FkRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL0NEQVRB
U2VjdGlvbi5jcHAnLApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnByaQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUucHJpCShyZXZpc2lvbiA2MTg4MCkKKysrIFdlYkNvcmUvV2ViQ29yZS5w
cmkJKHdvcmtpbmcgY29weSkKQEAgLTI2Nyw2ICsyNjcsNyBAQCBJRExfQklORElOR1MgKz0gXAog
ICAgIGNzcy9XZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5pZGwgXAogICAgIGRvbS9BdHRyLmlkbCBc
CiAgICAgZG9tL0JlZm9yZUxvYWRFdmVudC5pZGwgXAorICAgIGRvbS9CZWZvcmVQcm9jZXNzRXZl
bnQuaWRsIFwKICAgICBkb20vQ2hhcmFjdGVyRGF0YS5pZGwgXAogICAgIGRvbS9DbGllbnRSZWN0
LmlkbCBcCiAgICAgZG9tL0NsaWVudFJlY3RMaXN0LmlkbCBcCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDYxODgw
KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtNDU0LDYgKzQ1NCw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIGRvbS9BY3RpdmVET01PYmplY3QuY3BwIFwKICAgICBkb20v
QXR0ci5jcHAgXAogICAgIGRvbS9BdHRyaWJ1dGUuY3BwIFwKKyAgICBkb20vQmVmb3JlUHJvY2Vz
c0V2ZW50LmNwcCBcCiAgICAgZG9tL0JlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmNwcCBcCiAgICAg
ZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcCBcCiAgICAgZG9tL0NEQVRBU2VjdGlvbi5jcHAgXApJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiA2MTg4MCkK
KysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkK
QEAgLTcyMSw2ICs3MjEsNjIgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0JlZm9yZVByb2Nlc3NFdmVudC5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVD
b25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJEZWJ1Z3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJv
bUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29t
cGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZp
bGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlfFdpbjMyIg0KKwkJCQkJRXhjbHVk
ZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0ludGVybmFsfFdpbjMyIg0K
KwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJ
CQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1
cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0NhaXJv
fFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8
VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0Zp
bGVDb25maWd1cmF0aW9uPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJl
bGVhc2VfQ2Fpcm98V2luMzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJ
CT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+
DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJ
CQkJTmFtZT0iRGVidWdfQWxsfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRGcm9tQnVpbGQ9InRydWUi
DQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQor
CQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNCZWZvcmVQcm9jZXNzRXZlbnQuaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNCbG9iLmNwcCINCiAJCQkJPg0KIAkJ
CQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0yOTU4OSw2ICsyOTY0NSwxNCBAQAogCQkJCT4NCiAJ
CQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cQmVmb3JlUHJv
Y2Vzc0V2ZW50LmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXGRvbVxCZWZvcmVQcm9jZXNzRXZlbnQuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxCZWZvcmVUZXh0SW5zZXJ0
ZWRFdmVudC5jcHAiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDYxODgwKQorKysgV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwODUs
NiArMTA4NSwxMCBAQAogCQk1MTYwMzA2QzBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5c3RlbUNG
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjAz
MDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lzdGVtQ0YuY3BwICovOyB9OwogCQk1MTYwRjQ5
ODBCMEFBNzVGMDBDMUQyQUYgLyogSGlzdG9yeUl0ZW1NYWMubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRjQ5NzBCMEFBNzVGMDBDMUQyQUYgLyog
SGlzdG9yeUl0ZW1NYWMubW0gKi87IH07CiAJCTUxNkJCNzk0MENFOTFFNjgwMDUxMkY3OSAvKiBK
U1RyZWVXYWxrZXJDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE2QkI3OTIwQ0U5MUU2ODAwNTEyRjc5IC8qIEpTVHJlZVdhbGtlckN1c3Rv
bS5jcHAgKi87IH07CisJCTUxNzIxRkJCMTFEMjc5MDcwMDYzOEI0MiAvKiBCZWZvcmVQcm9jZXNz
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NzIxRkI5MTFEMjc5MDcwMDYzOEI0MiAvKiBCZWZvcmVQcm9jZXNzRXZlbnQuaCAqLzsgfTsKKwkJ
NTE3MjFGRDIxMUQyN0VGMjAwNjM4QjQyIC8qIEpTQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzIxRkQwMTFEMjdF
RjIwMDYzOEI0MiAvKiBKU0JlZm9yZVByb2Nlc3NFdmVudC5jcHAgKi87IH07CisJCTUxNzIxRkQz
MTFEMjdFRjIwMDYzOEI0MiAvKiBKU0JlZm9yZVByb2Nlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MjFGRDExMUQyN0VGMjAwNjM4QjQy
IC8qIEpTQmVmb3JlUHJvY2Vzc0V2ZW50LmggKi87IH07CisJCTUxNzIyMDRCMTFEMjk2MDUwMDYz
OEI0MiAvKiBCZWZvcmVQcm9jZXNzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MjIwNEExMUQyOTYwNTAwNjM4QjQyIC8qIEJlZm9yZVBy
b2Nlc3NFdmVudC5jcHAgKi87IH07CiAJCTUxNzQxRDBGMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNr
Rm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNzQxRDBCMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNrRm9yd2FyZExpc3QuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MTc0MUQxMDBCMDcy
NTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzQxRDBDMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNr
Rm9yd2FyZExpc3QuY3BwICovOyB9OwogCQk1MTc0MUQxMTBCMDcyNTlBMDBFRDQ0MkMgLyogSGlz
dG9yeUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNzQxRDBEMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02NzM5LDYgKzY3NDMsMTEgQEAK
IAkJNTE2MDMwNkIwQ0M0MzYyMzAwQzhBQzI1IC8qIEZpbGVTeXN0ZW1DRi5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3lzdGVtQ0YuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTYwRjQ5NzBCMEFBNzVGMDBDMUQyQUYgLyogSGlzdG9yeUl0
ZW1NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBIaXN0b3J5
SXRlbU1hYy5tbTsgcGF0aCA9IG1hYy9IaXN0b3J5SXRlbU1hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE2QkI3OTIwQ0U5MUU2ODAwNTEyRjc5IC8qIEpTVHJlZVdhbGtlckN1
c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1RyZWVXYWxr
ZXJDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTcyMUZCOTExRDI3
OTA3MDA2MzhCNDIgLyogQmVmb3JlUHJvY2Vzc0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEJlZm9yZVByb2Nlc3NFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1MTcyMUZCQTExRDI3OTA3MDA2MzhCNDIgLyogQmVmb3JlUHJvY2Vzc0V2ZW50Lmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBCZWZvcmVQcm9jZXNzRXZlbnQuaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk1MTcyMUZEMDExRDI3RUYyMDA2MzhCNDIgLyogSlNCZWZv
cmVQcm9jZXNzRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNCZWZvcmVQcm9jZXNzRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1
MTcyMUZEMTExRDI3RUYyMDA2MzhCNDIgLyogSlNCZWZvcmVQcm9jZXNzRXZlbnQuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNCZWZvcmVQcm9jZXNzRXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3MjIwNEExMUQyOTYwNTAwNjM4QjQyIC8qIEJlZm9y
ZVByb2Nlc3NFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBC
ZWZvcmVQcm9jZXNzRXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTc0
MUQwQjBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRMaXN0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTc0MUQwQzBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRMaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tGb3J3YXJkTGlzdC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzQxRDBEMEIwNzI1OUEwMEVENDQy
QyAvKiBIaXN0b3J5SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSGlz
dG9yeUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NDcyLDYgKzE0NDgx
LDggQEAKIAkJCWNoaWxkcmVuID0gKAogCQkJCUJDOTQ2MzQ1MTA3QTkzNEIwMDg1NzE5MyAvKiBK
U0JlZm9yZUxvYWRFdmVudC5jcHAgKi8sCiAJCQkJQkM5NDYzNDcxMDdBOTM2NjAwODU3MTkzIC8q
IEpTQmVmb3JlTG9hZEV2ZW50LmggKi8sCisJCQkJNTE3MjFGRDAxMUQyN0VGMjAwNjM4QjQyIC8q
IEpTQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcCAqLywKKwkJCQk1MTcyMUZEMTExRDI3RUYyMDA2MzhC
NDIgLyogSlNCZWZvcmVQcm9jZXNzRXZlbnQuaCAqLywKIAkJCQk3OUFDOTIxNjEwOTk0NUM4MDAy
MTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQk3OUFDOTIxNzEwOTk0NUM4
MDAyMTI2NkUgLyogSlNDb21wb3NpdGlvbkV2ZW50LmggKi8sCiAJCQkJRTQ3NzhCN0QxMTVBNTgx
QTAwQjVEMzcyIC8qIEpTQ3VzdG9tRXZlbnQuY3BwICovLApAQCAtMTY2MzMsNiArMTY2NDQsOSBA
QAogCQkJCUE4QzRBN0Y5MDlENTYzMjcwMDAzQUM4RCAvKiBBdHRyaWJ1dGUuaCAqLywKIAkJCQlC
Qzk0NjJENzEwN0E3QjRDMDA4NTcxOTMgLyogQmVmb3JlTG9hZEV2ZW50LmggKi8sCiAJCQkJQkM5
NDYyQ0IxMDdBN0EzOTAwODU3MTkzIC8qIEJlZm9yZUxvYWRFdmVudC5pZGwgKi8sCisJCQkJNTE3
MjIwNEExMUQyOTYwNTAwNjM4QjQyIC8qIEJlZm9yZVByb2Nlc3NFdmVudC5jcHAgKi8sCisJCQkJ
NTE3MjFGQjkxMUQyNzkwNzAwNjM4QjQyIC8qIEJlZm9yZVByb2Nlc3NFdmVudC5oICovLAorCQkJ
CTUxNzIxRkJBMTFEMjc5MDcwMDYzOEI0MiAvKiBCZWZvcmVQcm9jZXNzRXZlbnQuaWRsICovLAog
CQkJCUFCMjNBMzI1MDlCQkE3RDAwMDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5j
cHAgKi8sCiAJCQkJQUIyM0EzMjYwOUJCQTdEMDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRl
ZEV2ZW50LmggKi8sCiAJCQkJODUwMzFCMjYwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9h
ZEV2ZW50LmNwcCAqLywKQEAgLTE5NTM1LDYgKzE5NTQ5LDggQEAKIAkJCQk5NzE5QUYwMDExRDA5
RjJDMDBENDU4MzEgLyogSFRNTElucHV0U3RyZWFtLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODUz
MTIzRDExRDA0NzFCMDBENEQwNzcgLyogRnJhZ21lbnRTY3JpcHRpbmdQZXJtaXNzaW9uLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBOEU2QTc4MTExRDE2NjFCMDAzMTFGNEEgLyogSFRNTFBhcnNlclNj
aGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3MjFGQkIxMUQyNzkwNzAwNjM4QjQyIC8q
IEJlZm9yZVByb2Nlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3MjFGRDMxMUQyN0VG
MjAwNjM4QjQyIC8qIEpTQmVmb3JlUHJvY2Vzc0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
ODREODI3QzExRDMzM0VEMDA5NzI5OTAgLyogUmF3RGF0YURvY3VtZW50UGFyc2VyLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlDRUEzOTQ5RDExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGljSGFzaFNldE5v
ZGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CkBAIC0yMTg1Niw2ICsyMTg3Miw4IEBACiAJ
CQkJMUFEOEY4MUMxMUNBQjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCNTI1QTk2NjExQ0EyMzQwMDAzQTIzQTggLyogSlNTUUxFeGNlcHRp
b24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThFNkE3ODIxMUQxNjYxQjAwMzExRjRBIC8qIEhU
TUxQYXJzZXJTY2hlZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE3MjFGRDIxMUQyN0VG
MjAwNjM4QjQyIC8qIEpTQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTUxNzIyMDRCMTFEMjk2MDUwMDYzOEI0MiAvKiBCZWZvcmVQcm9jZXNzRXZlbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQ0VBMzk0OUMxMUQ0NUNEQTAwMzA5NENGIC8qIFN0YXRpY0hhc2hTZXRO
b2RlTGlzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVu
dFBvc3Rwcm9jZXNzaW5nID0gMDsKSW5kZXg6IFdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NFdmVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NFdmVudC5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkJlZm9yZVByb2Nlc3NFdmVudC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NvbnN0
IFN0cmluZyYgQmVmb3JlUHJvY2Vzc0V2ZW50Ojp0ZXh0KCkgY29uc3QKK3sKKyAgICAvLyBGSVhN
RSAtIFJldHVybiBpbm5lclRleHQgZm9yIDxzdHlsZT4gZWxlbWVudHMgYW5kIGlubGluZSA8c2Ny
aXB0PiBlbGVtZW50cywgb3IgdGhlIHJlc291cmNlIHRleHQgZm9yIHJlbW90ZSA8c2NyaXB0PiBl
bGVtZW50cworICAgIHN0YXRpYyBTdHJpbmcqIHBsYWNlaG9sZGVyID0gbmV3IFN0cmluZzsKKyAg
ICByZXR1cm4gKnBsYWNlaG9sZGVyOworfQorCit2b2lkIEJlZm9yZVByb2Nlc3NFdmVudDo6c2V0
VGV4dChjb25zdCBTdHJpbmcmKQoreworICAgIC8vIEZJWE1FIC0gUmVwbGFjZSBpbm5lclRleHQg
Zm9yIDxzdHlsZT4gZWxlbWVudHMgYW5kIGlubGluZSA8c2NyaXB0PiBlbGVtZW50cywgYW5kIHJl
bW92ZSB0aGUgc3JjIGF0dHJpYnV0ZSBvbiAKKyAgICAvLyByZW1vdGUgPHNjcmlwdD4gZWxlbWVu
dHMsIHJlcGxhY2luZyBpdCB3aXRoIGFuIGlubmVyVGV4dCBwcm9wZXJ0eS4KK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vQmVmb3JlUHJvY2Vzc0V2ZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQmVmb3JlUHJvY2Vzc0V2ZW50LmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2RvbS9CZWZvcmVQcm9jZXNzRXZlbnQuaAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw2MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICoKKyAqLworCisjaWZuZGVmIEJlZm9yZVByb2Nlc3NFdmVudF9oCisjZGVmaW5l
IEJlZm9yZVByb2Nlc3NFdmVudF9oCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCZWZvcmVQcm9jZXNz
RXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJl
Zm9yZVByb2Nlc3NFdmVudD4gY3JlYXRlKCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQmVmb3JlUHJvY2Vzc0V2ZW50KCkpOworICAgIH0KKworICAgIHZvaWQgaW5pdEJlZm9y
ZVByb2Nlc3NFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIHR5cGUsIGJvb2wgY2FuQnViYmxlLCBi
b29sIGNhbmNlbGFibGUpCisgICAgeworICAgICAgICBpZiAoZGlzcGF0Y2hlZCgpKQorICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAKKyAgICAgICAgaW5pdEV2ZW50KHR5cGUsIGNhbkJ1YmJs
ZSwgY2FuY2VsYWJsZSk7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiB0ZXh0KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOworCitwcml2YXRlOgorICAgIEJlZm9y
ZVByb2Nlc3NFdmVudCgpCisgICAgICAgIDogRXZlbnQoZXZlbnROYW1lcygpLmJlZm9yZXByb2Nl
c3NFdmVudCwgZmFsc2UsIHRydWUpCisgICAge30KKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gQmVmb3JlUHJvY2Vzc0V2ZW50X2gKSW5kZXg6IFdlYkNvcmUvZG9t
L0JlZm9yZVByb2Nlc3NFdmVudC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vQmVmb3Jl
UHJvY2Vzc0V2ZW50LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0JlZm9yZVByb2Nl
c3NFdmVudC5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqCisgKi8KKworbW9kdWxlIGV2
ZW50cyB7CisKKyAgICBpbnRlcmZhY2UgQmVmb3JlUHJvY2Vzc0V2ZW50IDogRXZlbnQgeworICAg
ICAgICB2b2lkIGluaXRCZWZvcmVQcm9jZXNzRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbkJ1YmJsZSwgCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIGNhbmNlbGFibGUpOworICAg
ICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRleHQ7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkocmV2aXNpb24gNjE4ODApCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyODksNiArMzI4OSw4IEBAIHZvaWQgRG9jdW1lbnQ6OmFkZExpc3RlbmVyVHlw
ZUlmTmVlZGVkKGMKICAgICAgICAgYWRkTGlzdGVuZXJUeXBlKFRSQU5TSVRJT05FTkRfTElTVEVO
RVIpOwogICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2
ZW50KQogICAgICAgICBhZGRMaXN0ZW5lclR5cGUoQkVGT1JFTE9BRF9MSVNURU5FUik7CisgICAg
ZWxzZSBpZiAoZXZlbnRUeXBlID09IGV2ZW50TmFtZXMoKS5iZWZvcmVwcm9jZXNzRXZlbnQpCisg
ICAgICAgIGFkZExpc3RlbmVyVHlwZShCRUZPUkVQUk9DRVNTX0xJU1RFTkVSKTsKICNpZiBFTkFC
TEUoVE9VQ0hfRVZFTlRTKQogICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCku
dG91Y2hzdGFydEV2ZW50CiAgICAgICAgICAgICAgfHwgZXZlbnRUeXBlID09IGV2ZW50TmFtZXMo
KS50b3VjaG1vdmVFdmVudApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA2MTg4MCkKKysrIFdlYkNvcmUv
ZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY2Myw3ICs2NjMsOCBAQCBwdWJsaWM6
CiAgICAgICAgIEFOSU1BVElPTklURVJBVElPTl9MSVNURU5FUiAgICAgICAgICA9IDB4NDAwLAog
ICAgICAgICBUUkFOU0lUSU9ORU5EX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDgwMCwKICAg
ICAgICAgQkVGT1JFTE9BRF9MSVNURU5FUiAgICAgICAgICAgICAgICAgID0gMHgxMDAwLAotICAg
ICAgICBUT1VDSF9MSVNURU5FUiAgICAgICAgICAgICAgICAgICAgICAgPSAweDIwMDAKKyAgICAg
ICAgVE9VQ0hfTElTVEVORVIgICAgICAgICAgICAgICAgICAgICAgID0gMHgyMDAwLAorICAgICAg
ICBCRUZPUkVQUk9DRVNTX0xJU1RFTkVSICAgICAgICAgICAgICAgPSAweDQwMDAKICAgICB9Owog
CiAgICAgYm9vbCBoYXNMaXN0ZW5lclR5cGUoTGlzdGVuZXJUeXBlIGxpc3RlbmVyVHlwZSkgY29u
c3QgeyByZXR1cm4gKG1fbGlzdGVuZXJUeXBlcyAmIGxpc3RlbmVyVHlwZSk7IH0KSW5kZXg6IFdl
YkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmgJKHJldmlzaW9uIDYxODgwKQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBtYWNy
byhiZWZvcmVjdXQpIFwKICAgICBtYWNybyhiZWZvcmVsb2FkKSBcCiAgICAgbWFjcm8oYmVmb3Jl
cGFzdGUpIFwKKyAgICBtYWNybyhiZWZvcmVwcm9jZXNzKSBcCiAgICAgbWFjcm8oYmVmb3JldW5s
b2FkKSBcCiAgICAgbWFjcm8oYmx1cikgXAogICAgIG1hY3JvKGNhY2hlZCkgXApJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2h0
bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCShyZXZpc2lvbiA2MTg4MCkKKysrIFdlYkNvcmUvaHRt
bC9IVE1MQXR0cmlidXRlTmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsNyBA
QCBvbmJlZm9yZWNvcHkKIG9uYmVmb3JlY3V0CiBvbmJlZm9yZWxvYWQKIG9uYmVmb3JlcGFzdGUK
K29uYmVmb3JlcHJvY2Vzcwogb25iZWZvcmV1bmxvYWQKIG9uYmx1cgogb25jYW5wbGF5CkluZGV4
OiBXZWJDb3JlL2h0bWwvSFRNTFNjcmlwdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5jcHAJKHJldmlzaW9uIDYxODgwKQorKysgV2ViQ29y
ZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQs
OCBAQCB2b2lkIEhUTUxTY3JpcHRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpCiAgICAgICAgIHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ck5hbWUg
PT0gb25iZWZvcmVsb2FkQXR0cikKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkuYmVmb3JlbG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KHRoaXMsIGF0dHIpKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmJlZm9yZXByb2Nlc3NB
dHRyKQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZv
cmVwcm9jZXNzRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikp
OwogICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKGF0
dHIpOwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcAkocmV2aXNpb24gNjE4ODAp
CisrKyBXZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJEb2N1bWVu
dC5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIlNjcmlwdEV2ZW50TGlzdGVu
ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC01Miw2ICs1Myw4IEBAIHZvaWQgSFRN
TFN0eWxlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWIKICAgICAgICAgbV9tZWRpYSA9IGF0dHIt
PnZhbHVlKCkuc3RyaW5nKCkubG93ZXIoKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
dGl0bGVBdHRyICYmIG1fc2hlZXQpCiAgICAgICAgIG1fc2hlZXQtPnNldFRpdGxlKGF0dHItPnZh
bHVlKCkpOworICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmJlZm9yZXByb2Nlc3NBdHRy
KQorICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmVw
cm9jZXNzRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwog
ICAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59958</attachid>
            <date>2010-06-28 16:25:39 -0700</date>
            <delta_ts>2010-06-29 03:17:07 -0700</delta_ts>
            <desc>Rework createAttributeEventListener</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>17743</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjA0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzMgQEAKKzIwMTAtMDYtMjggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFN1
cHBvcnQgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDQ4NAor
CisgICAgICAgIEluIHdvcmtpbmcgb24gYWRkaW5nIGJlZm9yZVByb2Nlc3MsIGl0IGJlY29tZXMg
bmVjZXNzYXJ5IGZvciBKU0xhenlFdmVudExpc3RlbmVycyB0byBhbHdheXMga25vdyB3aGF0IHRo
ZWlyCisgICAgICAgIG9yaWdpbmFsIE5vZGUqIHdhcywgZXZlbiBpZiBpdCB3YXMgYSB3aW5kb3cg
ZXZlbnQgbGlzdGVuZXIuCisKKyAgICAgICAgRm9yIEhUTUxGcmFtZVNldCwgSFRNTEJvZHksIGFu
ZCBTVkdTVkcgZWxlbWVudHMsIGEgc2Vjb25kIGZvcm0gb2YgY3JlYXRlQXR0cmlidXRlRXZlbnRM
aXN0ZW5lciB3YXMgdXNlZCB0aGF0CisgICAgICAgIHRvb2sgYSBGcmFtZSogYXJndW1lbnQgYW5k
IGRpZG4ndCBzZXQgdGhlIG9yaWdpbmFsIE5vZGUqIG9uIHRoZSBKU0xhenlFdmVudExpc3RlbmVy
LgorCisgICAgICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGF0IGZvcm0gb2YgdGhlIGZ1bmN0aW9u
IHRvIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIsIGFuZCBwYXNzZXMgdGhlIE5v
ZGUqIGFsb25nCisgICAgICAgIGZvciBsYXRlciB1c2UgYnkgdGhlIGJlZm9yZVByb2Nlc3MgbWVj
aGFuaXNtLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gKE5vIGNoYW5nZSBpbiBiZWhhdmlvcikK
KworICAgICAgICAqIGJpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Y3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcik6IFJlbmFtZWQg
ZnJvbSBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyLCB0YWtlcyBhIE5vZGUqIGluc3RlYWQK
KyAgICAgICAgICBvZiBhIEZyYW1lKiwgYW5kIGZpZ3VyZXMgb3V0IHRoZSBGcmFtZSogaXRzZWxm
IGludGVybmFsbHkuCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5o
OgorCisgICAgICAgICogaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTEJvZHlFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IFVzZSBjcmVhdGVXaW5k
b3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyIGluc3RlYWQuCisgICAgICAgICogaHRtbC9IVE1MRnJh
bWVTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxGcmFtZVNldEVsZW1lbnQ6
OnBhcnNlTWFwcGVkQXR0cmlidXRlKTogRGl0dG8uCisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRy
aWJ1dGUpOiBEaXR0by4gQWxzbyBhZGQgc29tZSBtaXNzaW5nIGNvcHlyaWdodCBkYXRlcyB0aGF0
IGBzdm4gbG9nYCBwcm92ZXMKKyAgICAgICAgICBzaG91bGQgYmUgdGhlcmUuCisKIDIwMTAtMDYt
MjggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0
ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExp
c3RlbmVyLmNwcAkocmV2aXNpb24gNjE5NjQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEV2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03OCw4ICs3OCw5IEBAIFBhc3NS
ZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXQKICAgICByZXR1cm4gSlNMYXp5RXZl
bnRMaXN0ZW5lcjo6Y3JlYXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFt
ZXRlck5hbWUobm9kZS0+aXNTVkdFbGVtZW50KCkpLCBhdHRyLT52YWx1ZSgpLCBub2RlLCBzb3Vy
Y2VVUkwsIGxpbmVOdW1iZXIsIDAsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAotUGFz
c1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KEZyYW1lKiBmcmFtZSwgQXR0cmlidXRlKiBhdHRyKQorUGFzc1JlZlB0cjxKU0xhenlFdmVudExp
c3RlbmVyPiBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5vZGUqIHdpbmRvd0Vx
dWl2YWxlbnROb2RlLCBBdHRyaWJ1dGUqIGF0dHIpCiB7CisgICAgRnJhbWUqIGZyYW1lID0gd2lu
ZG93RXF1aXZhbGVudE5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuIDA7CiAKQEAgLTEwMiw3ICsxMDMsNyBAQCBQYXNzUmVmUHRyPEpTTGF6
eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0CiAgICAgbGluZU51bWJlciA9IHNjcmlwdENvbnRyb2xs
ZXItPmV2ZW50SGFuZGxlckxpbmVOdW1iZXIoKTsKICAgICBzb3VyY2VVUkwgPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgSlNPYmplY3QqIHdyYXBwZXIgPSB0b0pTRE9N
V2luZG93KGZyYW1lLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7Ci0gICAgcmV0dXJuIEpTTGF6
eUV2ZW50TGlzdGVuZXI6OmNyZWF0ZShhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgZXZlbnRQ
YXJhbWV0ZXJOYW1lKGZyYW1lLT5kb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCkpLCBhdHRyLT52
YWx1ZSgpLCAwLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIHdyYXBwZXIsIG1haW5UaHJlYWROb3Jt
YWxXb3JsZCgpKTsKKyAgICByZXR1cm4gSlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlKGF0dHIt
PmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRlck5hbWUoZnJhbWUtPmRvY3VtZW50
KCktPmlzU1ZHRG9jdW1lbnQoKSksIGF0dHItPnZhbHVlKCksIHdpbmRvd0VxdWl2YWxlbnROb2Rl
LCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIHdyYXBwZXIsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgp
KTsKIH0KIAogU3RyaW5nIGV2ZW50TGlzdGVuZXJIYW5kbGVyQm9keShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBTY3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIEV2ZW50TGlzdGVuZXIq
IGV2ZW50TGlzdGVuZXIpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlz
dGVuZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2ZW50TGlz
dGVuZXIuaAkocmV2aXNpb24gNjE5NjQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdEV2
ZW50TGlzdGVuZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC00NCw3ICs0NSw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICBjbGFzcyBOb2RlOwogCiAgICAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3Rl
bmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKE5vZGUqLCBBdHRyaWJ1dGUqKTsKLSAg
ICBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoRnJhbWUqLCBBdHRyaWJ1dGUqKTsKKyAgICBQYXNzUmVmUHRyPEpTTGF6eUV2ZW50TGlz
dGVuZXI+IGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoTm9kZSogd2luZG93RXF1
aXZhbGVudE5vZGUsIEF0dHJpYnV0ZSopOwogICAgIFN0cmluZyBldmVudExpc3RlbmVySGFuZGxl
ckJvZHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFNjcmlwdFN0YXRlKiwgRXZlbnRMaXN0ZW5l
ciopOwogICAgIGJvb2wgZXZlbnRMaXN0ZW5lckhhbmRsZXJMb2NhdGlvbihTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgU2NyaXB0U3RhdGUqLCBFdmVudExpc3RlbmVyKiwgU3RyaW5nJiBzb3VyY2VO
YW1lLCBpbnQmIGxpbmVOdW1iZXIpOwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9odG1sL0hUTUxCb2R5RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1s
L0hUTUxCb2R5RWxlbWVudC5jcHAJKHJldmlzaW9uIDYxOTY0KQorKysgV2ViQ29yZS9odG1sL0hU
TUxCb2R5RWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCwzNyArMTQwLDM3IEBAIHZv
aWQgSFRNTEJvZHlFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnUKICAgICAgICAgaWYgKGF0dGFj
aGVkKCkpCiAgICAgICAgICAgICBkb2N1bWVudCgpLT5yZWNhbGNTdHlsZShGb3JjZSk7CiAgICAg
fSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25sb2FkQXR0cikKLSAgICAgICAgZG9jdW1lbnQo
KS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50
LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIp
KTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihl
dmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25iZWZvcmV1bmxv
YWRBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50KCkt
PnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZXVubG9h
ZEV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb251bmxvYWRBdHRyKQotICAgICAgICBkb2N1
bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS51bmxv
YWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgp
LCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25w
YWdlaGlkZUF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLnBhZ2VoaWRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgp
LT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2
ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAg
ICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25wYWdlc2hvd0F0dHIpCi0gICAgICAgIGRvY3Vt
ZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBhZ2Vz
aG93RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUo
KSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5wYWdlc2hvd0V2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0g
b25wb3BzdGF0ZUF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBvcHN0YXRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVu
dCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wb3BzdGF0
ZUV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25ibHVyQXR0cikKLSAgICAgICAgZG9jdW1l
bnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2
ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0
dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25mb2N1c0F0
dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9j
dW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBjcmVhdGVXaW5k
b3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICNpZiBFTkFCTEUoT1JJRU5U
QVRJT05fRVZFTlRTKQogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbm9yaWVudGF0aW9u
Y2hhbmdlQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkub3JpZW50YXRpb25jaGFuZ2VFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7CisgICAgICAgIGRv
Y3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm9y
aWVudGF0aW9uY2hhbmdlRXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
dGhpcywgYXR0cikpOwogI2VuZGlmCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uaGFz
aGNoYW5nZUF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmhhc2hjaGFuZ2VFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50
KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmhhc2hjaGFu
Z2VFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7
CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ucmVzaXplQXR0cikKLSAgICAgICAgZG9j
dW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmVz
aXplRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUo
KSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9u
c2Nyb2xsQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5z
ZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwg
Y3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxz
ZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uc3RvcmFnZUF0dHIpCi0gICAgICAgIGRvY3VtZW50KCkt
PnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVu
dCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRy
KSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ub25saW5l
QXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkub25saW5lRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5k
b3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCwgY3JlYXRl
V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IG9ub2ZmbGluZUF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdp
bmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7Cisg
ICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLm9mZmxpbmVFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyKSk7CiAgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRB
dHRyaWJ1dGUoYXR0cik7CiB9CkluZGV4OiBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3Bw
CShyZXZpc2lvbiA2MTk2NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE5LDM3ICsxMTksMzcgQEAgdm9pZCBIVE1MRnJhbWVTZXRF
bGVtZW50OjpwYXJzZU1hcHBlZEF0dAogICAgICAgICAgICAgbV9ib3JkZXJDb2xvclNldCA9IHRy
dWU7CiAgICAgICAgIH0KICAgICB9IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmxvYWRBdHRy
KQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1l
bnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZVdpbmRvd0F0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5h
bWUoKSA9PSBvbmJlZm9yZXVubG9hZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRv
d0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZXVubG9hZEV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsK
KyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuYmVmb3JldW5sb2FkRXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbnVubG9h
ZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2lu
ZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudW5sb2FkRXZlbnQsIGNyZWF0
ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYg
KGF0dHItPm5hbWUoKSA9PSBvbmJsdXJBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5k
b3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5ibHVyRXZlbnQsIGNyZWF0ZUF0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAg
ICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5ibHVyRXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0
cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmZvY3VzQXR0cikKLSAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
Zm9jdXNFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFt
ZSgpLCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBv
bmZvY3VzaW5BdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5mb2N1c2luRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgp
LT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5mb2N1c2luRXZl
bnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAg
IGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmZvY3Vzb3V0QXR0cikKLSAgICAgICAgZG9jdW1l
bnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZm9jdXNv
dXRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgp
LCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLmZvY3Vzb3V0RXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogI2lmIEVOQUJMRShPUklFTlRBVElPTl9FVkVOVFMp
CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ub3JpZW50YXRpb25jaGFuZ2VBdHRyKQot
ICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5vcmllbnRhdGlvbmNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0
V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkub3JpZW50YXRpb25jaGFu
Z2VFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7
CiAjZW5kaWYKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25oYXNoY2hhbmdlQXR0cikK
LSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuaGFzaGNoYW5nZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRv
Y3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuaGFzaGNoYW5nZUV2ZW50LCBjcmVh
dGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gb25yZXNpemVBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRX
aW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7Cisg
ICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLnJlc2l6ZUV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRo
aXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25zY3JvbGxBdHRyKQot
ICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5zY3JvbGxFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVu
dCgpLT5mcmFtZSgpLCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBjcmVhdGVXaW5kb3dB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5u
YW1lKCkgPT0gb25zdG9yYWdlQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc3RvcmFnZUV2ZW50LCBjcmVhdGVBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
c3RvcmFnZUV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0
dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25vbmxpbmVBdHRyKQotICAgICAg
ICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMo
KS5vbmxpbmVFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5m
cmFtZSgpLCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm9ubGluZUV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkg
PT0gb25vZmZsaW5lQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkub2ZmbGluZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1l
bnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkub2ZmbGlu
ZUV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsK
ICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25wb3BzdGF0ZUF0dHIpCi0gICAgICAgIGRv
Y3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnBv
cHN0YXRlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJh
bWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wb3BzdGF0ZUV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlCiAgICAgICAgIEhUTUxFbGVt
ZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRyKTsKIH0KSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwCShyZXZpc2lvbiA2MTk2NCkKKysrIFdlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogLyoKICAgICBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDUsIDIwMDYgTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgICAg
ICAgICAgICAgICAgICAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IFJvYiBCdWlzIDxidWlz
QGtkZS5vcmc+Ci0gICAgICAgICAgICAgICAgICAyMDA3IEFwcGxlIEluYy4gIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgICAgICAgICAgICAgICAgICAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAKICAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgICAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIyNywx
MyArMjI3LDEzIEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUKIAog
ICAgICAgICAvLyBPbmx5IGhhbmRsZSBldmVudHMgaWYgd2UncmUgdGhlIG91dGVybW9zdCA8c3Zn
PiBlbGVtZW50CiAgICAgICAgIGlmIChhdHRyLT5uYW1lKCkgPT0gb251bmxvYWRBdHRyKQotICAg
ICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkudW5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1l
bnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudW5sb2FkRXZlbnQsIGNyZWF0ZVdp
bmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgICAgICBlbHNlIGlm
IChhdHRyLT5uYW1lKCkgPT0gb25yZXNpemVBdHRyKQotICAgICAgICAgICAgZG9jdW1lbnQoKS0+
c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmVzaXplRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikp
OworICAgICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIodGhpcywgYXR0cikpOwogICAgICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25z
Y3JvbGxBdHRyKQotICAgICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICAgICAgZG9jdW1l
bnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2Nyb2xs
RXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwog
ICAgICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZHTmFtZXM6Om9uem9vbUF0dHIpCi0g
ICAgICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS56b29tRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1l
bnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuem9vbUV2ZW50LCBjcmVhdGVXaW5k
b3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgc2V0TGlzdGVuZXIgPSBmYWxzZTsKICAKQEAgLTI0Miw5ICsyNDIsOSBAQCB2b2lk
IFNWR1NWR0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlCiAgICAgfQogCiAgICAgaWYgKGF0
dHItPm5hbWUoKSA9PSBvbmFib3J0QXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYWJvcnRFdmVudCwgY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7CisgICAgICAg
IGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygp
LmFib3J0RXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0
cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmVycm9yQXR0cikKLSAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
ZXJyb3JFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFt
ZSgpLCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLmVycm9yRXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6eEF0dHIpCiAgICAgICAgIHNldFhCYXNlVmFsdWUoU1ZHTGVuZ3RoKExlbmd0aE1v
ZGVXaWR0aCwgYXR0ci0+dmFsdWUoKSkpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBT
VkdOYW1lczo6eUF0dHIpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59963</attachid>
            <date>2010-06-28 17:36:06 -0700</date>
            <delta_ts>2010-06-29 07:45:51 -0700</delta_ts>
            <desc>Putting up for review just to see if Chromium&apos;s build is fixed.</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>20876</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjA0NykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzkgQEAKKzIwMTAtMDYtMjggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCisKKyAgICAg
ICAgU3VwcG9ydCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQw
NDg0CisKKyAgICAgICAgSW4gd29ya2luZyBvbiBhZGRpbmcgYmVmb3JlUHJvY2VzcywgaXQgYmVj
b21lcyBuZWNlc3NhcnkgZm9yIEpTTGF6eUV2ZW50TGlzdGVuZXJzIHRvIGFsd2F5cyBrbm93IHdo
YXQgdGhlaXIKKyAgICAgICAgb3JpZ2luYWwgTm9kZSogd2FzLCBldmVuIGlmIGl0IHdhcyBhIHdp
bmRvdyBldmVudCBsaXN0ZW5lci4KKworICAgICAgICBGb3IgSFRNTEZyYW1lU2V0LCBIVE1MQm9k
eSwgYW5kIFNWR1NWRyBlbGVtZW50cywgYSBzZWNvbmQgZm9ybSBvZiBjcmVhdGVBdHRyaWJ1dGVF
dmVudExpc3RlbmVyIHdhcyB1c2VkIHRoYXQKKyAgICAgICAgdG9vayBhIEZyYW1lKiBhcmd1bWVu
dCBhbmQgZGlkbid0IHNldCB0aGUgb3JpZ2luYWwgTm9kZSogb24gdGhlIEpTTGF6eUV2ZW50TGlz
dGVuZXIuCisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoYXQgZm9ybSBvZiB0aGUgZnVu
Y3Rpb24gdG8gY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lciwgYW5kIHBhc3NlcyB0
aGUgTm9kZSogYWxvbmcKKyAgICAgICAgZm9yIGxhdGVyIHVzZSBieSB0aGUgYmVmb3JlUHJvY2Vz
cyBtZWNoYW5pc20uCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiAoTm8gY2hhbmdlIGluIGJlaGF2
aW9yKQorCisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0RXZlbnRMaXN0ZW5lci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKTogUmVu
YW1lZCBmcm9tIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIsIHRha2VzIGEgTm9kZSogaW5z
dGVhZAorICAgICAgICAgIG9mIGEgRnJhbWUqLCBhbmQgZmlndXJlcyBvdXQgdGhlIEZyYW1lKiBp
dHNlbGYgaW50ZXJuYWxseS4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3Rl
bmVyLmg6CisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRFdmVudExpc3RlbmVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIpOiBS
ZW5hbWVkIGZyb20gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lciwgdGFrZXMgYSBOb2RlKiBp
bnN0ZWFkCisgICAgICAgICAgb2YgYSBGcmFtZSosIGFuZCBmaWd1cmVzIG91dCB0aGUgRnJhbWUq
IGl0c2VsZiBpbnRlcm5hbGx5LiBOb3RlIHRoYXQgVjhMYXp5RXZlbnRMaXN0ZW5lciBkb2Vzbid0
IGFsbG93IHVzIHRvCisgICAgICAgICAgcGFzcyB0aGUgRWxlbWVudCogYXJndW1lbnQgaW4gc28g
dGhpcyBiZWZvcmVwcm9jZXNzIGZlYXR1cmUgd29uJ3QgZnVsbHkgd29yayBvbiBWOCBidWlsZHMg
dW50aWwgdGhpcyBpcyBjaGFuZ2VkLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdEV2ZW50
TGlzdGVuZXIuaDoKKworICAgICAgICAqIGh0bWwvSFRNTEJvZHlFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxCb2R5RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBVc2Ug
Y3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lciBpbnN0ZWFkLgorICAgICAgICAqIGh0
bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRnJhbWVT
ZXRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZSk6IERpdHRvLgorICAgICAgICAqIHN2Zy9T
VkdTVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnBhcnNl
TWFwcGVkQXR0cmlidXRlKTogRGl0dG8uIEFsc28gYWRkIHNvbWUgbWlzc2luZyBjb3B5cmlnaHQg
ZGF0ZXMgdGhhdCBgc3ZuIGxvZ2AgcHJvdmVzCisgICAgICAgICAgc2hvdWxkIGJlIHRoZXJlLgor
CiAyMDEwLTA2LTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL1Njcmlw
dEV2ZW50TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvU2Ny
aXB0RXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDYxOTY0KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsOCArMzQs
MTAgQEAKICNpbmNsdWRlICJBdHRyaWJ1dGUuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2lu
Y2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKLSNpbmNsdWRlICJKU05vZGUuaCIKICNpbmNsdWRlICJG
cmFtZS5oIgorI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgorI2luY2x1ZGUgIkpTTm9kZS5oIgorI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiWFNTQXVkaXRvci5oIgogI2luY2x1ZGUgPHJ1
bnRpbWUvSlNMb2NrLmg+CiAKQEAgLTc4LDggKzgwLDExIEBAIFBhc3NSZWZQdHI8SlNMYXp5RXZl
bnRMaXN0ZW5lcj4gY3JlYXRlQXQKICAgICByZXR1cm4gSlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3Jl
YXRlKGF0dHItPmxvY2FsTmFtZSgpLnN0cmluZygpLCBldmVudFBhcmFtZXRlck5hbWUobm9kZS0+
aXNTVkdFbGVtZW50KCkpLCBhdHRyLT52YWx1ZSgpLCBub2RlLCBzb3VyY2VVUkwsIGxpbmVOdW1i
ZXIsIDAsIG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKTsKIH0KIAotUGFzc1JlZlB0cjxKU0xhenlF
dmVudExpc3RlbmVyPiBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1lKiBmcmFtZSwg
QXR0cmlidXRlKiBhdHRyKQorUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVX
aW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEVsZW1lbnQqIHdpbmRvd0VxdWl2YWxlbnRFbGVt
ZW50LCBBdHRyaWJ1dGUqIGF0dHIpCiB7CisgICAgQVNTRVJUKHdpbmRvd0VxdWl2YWxlbnRFbGVt
ZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Ym9keVRhZykgfHwgd2luZG93RXF1aXZhbGVudEVs
ZW1lbnQtPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmcmFtZXNldFRhZykgfHwgd2luZG93RXF1aXZh
bGVudEVsZW1lbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnN2Z1RhZykpOworICAgIAorICAgIEZy
YW1lKiBmcmFtZSA9IHdpbmRvd0VxdWl2YWxlbnRFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgp
OwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xMDIsNyArMTA3LDcg
QEAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdAogICAgIGxpbmVOdW1i
ZXIgPSBzY3JpcHRDb250cm9sbGVyLT5ldmVudEhhbmRsZXJMaW5lTnVtYmVyKCk7CiAgICAgc291
cmNlVVJMID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOwogICAgIEpTT2JqZWN0
KiB3cmFwcGVyID0gdG9KU0RPTVdpbmRvdyhmcmFtZSwgbWFpblRocmVhZE5vcm1hbFdvcmxkKCkp
OwotICAgIHJldHVybiBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxOYW1l
KCkuc3RyaW5nKCksIGV2ZW50UGFyYW1ldGVyTmFtZShmcmFtZS0+ZG9jdW1lbnQoKS0+aXNTVkdE
b2N1bWVudCgpKSwgYXR0ci0+dmFsdWUoKSwgMCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCB3cmFw
cGVyLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CisgICAgcmV0dXJuIEpTTGF6eUV2ZW50TGlz
dGVuZXI6OmNyZWF0ZShhdHRyLT5sb2NhbE5hbWUoKS5zdHJpbmcoKSwgZXZlbnRQYXJhbWV0ZXJO
YW1lKGZyYW1lLT5kb2N1bWVudCgpLT5pc1NWR0RvY3VtZW50KCkpLCBhdHRyLT52YWx1ZSgpLCB3
aW5kb3dFcXVpdmFsZW50RWxlbWVudCwgc291cmNlVVJMLCBsaW5lTnVtYmVyLCB3cmFwcGVyLCBt
YWluVGhyZWFkTm9ybWFsV29ybGQoKSk7CiB9CiAKIFN0cmluZyBldmVudExpc3RlbmVySGFuZGxl
ckJvZHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgU2NyaXB0U3RhdGUqIHNjcmlw
dFN0YXRlLCBFdmVudExpc3RlbmVyKiBldmVudExpc3RlbmVyKQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmgJKHJldmlzaW9uIDYxOTY0KQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY3JpcHRFdmVudExpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDQsNyAr
NDUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTm9kZTsKIAogICAgIFBhc3NS
ZWZQdHI8SlNMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihO
b2RlKiwgQXR0cmlidXRlKik7Ci0gICAgUGFzc1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKEZyYW1lKiwgQXR0cmlidXRlKik7CisgICAgUGFz
c1JlZlB0cjxKU0xhenlFdmVudExpc3RlbmVyPiBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKEVsZW1lbnQqIHdpbmRvd0VxdWl2YWxlbnRFbGVtZW50LCBBdHRyaWJ1dGUqKTsKICAg
ICBTdHJpbmcgZXZlbnRMaXN0ZW5lckhhbmRsZXJCb2R5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
LCBTY3JpcHRTdGF0ZSosIEV2ZW50TGlzdGVuZXIqKTsKICAgICBib29sIGV2ZW50TGlzdGVuZXJI
YW5kbGVyTG9jYXRpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFNjcmlwdFN0YXRlKiwgRXZl
bnRMaXN0ZW5lciosIFN0cmluZyYgc291cmNlTmFtZSwgaW50JiBsaW5lTnVtYmVyKTsKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RXZlbnRM
aXN0ZW5lci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRFdmVu
dExpc3RlbmVyLmNwcAkocmV2aXNpb24gNjE5NjQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL3Y4L1Nj
cmlwdEV2ZW50TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTcyLDggKzczLDkgQEAgUGFzc1Jl
ZlB0cjxWOExhenlFdmVudExpc3RlbmVyPiBjcmVhdGVBdAogICAgIHJldHVybiBWOExhenlFdmVu
dExpc3RlbmVyOjpjcmVhdGUoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIG5vZGUtPmlzU1ZH
RWxlbWVudCgpLCBhdHRyLT52YWx1ZSgpLCBzb3VyY2VVUkwsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgV29ybGRDb250ZXh0SGFuZGxlKFVzZU1haW5Xb3JsZCkpOwogfQogCi1QYXNzUmVmUHRy
PFY4TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRnJhbWUq
IGZyYW1lLCBBdHRyaWJ1dGUqIGF0dHIpCitQYXNzUmVmUHRyPFY4TGF6eUV2ZW50TGlzdGVuZXI+
IGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoRWxlbWVudCogd2luZG93RXF1aXZh
bGVudEVsZW1lbnQsIEF0dHJpYnV0ZSogYXR0cikKIHsKKyAgICBGcmFtZSogZnJhbWUgPSB3aW5k
b3dFcXVpdmFsZW50RWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1l
KQogICAgICAgICByZXR1cm4gMDsKIApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRF
dmVudExpc3RlbmVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRF
dmVudExpc3RlbmVyLmgJKHJldmlzaW9uIDYxOTY0KQorKysgV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHRFdmVudExpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoK
ICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDQsNyArNDUsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgU2NyaXB0U3RhdGU7CiAKICAgICBQYXNzUmVmUHRyPFY4
TGF6eUV2ZW50TGlzdGVuZXI+IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoTm9kZSosIEF0
dHJpYnV0ZSopOwotICAgIFBhc3NSZWZQdHI8VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlQXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihGcmFtZSosIEF0dHJpYnV0ZSopOworICAgIFBhc3NSZWZQdHI8
VjhMYXp5RXZlbnRMaXN0ZW5lcj4gY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihF
bGVtZW50KiB3aW5kb3dFcXVpdmFsZW50RWxlbWVudCwgQXR0cmlidXRlKik7CiAgICAgU3RyaW5n
IGV2ZW50TGlzdGVuZXJIYW5kbGVyQm9keShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgU2NyaXB0
U3RhdGUqLCBFdmVudExpc3RlbmVyKik7CiAgICAgYm9vbCBldmVudExpc3RlbmVySGFuZGxlckxv
Y2F0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBTY3JpcHRTdGF0ZSosIEV2ZW50TGlzdGVu
ZXIqLCBTdHJpbmcmIHNvdXJjZU5hbWUsIGludCYgbGluZU51bWJlcik7CiAKSW5kZXg6IFdlYkNv
cmUvaHRtbC9IVE1MQm9keUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9I
VE1MQm9keUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MTk2NCkKKysrIFdlYkNvcmUvaHRtbC9IVE1M
Qm9keUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNDAsMzcgKzE0MCwzNyBAQCB2b2lk
IEhUTUxCb2R5RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1CiAgICAgICAgIGlmIChhdHRhY2hl
ZCgpKQogICAgICAgICAgICAgZG9jdW1lbnQoKS0+cmVjYWxjU3R5bGUoRm9yY2UpOwogICAgIH0g
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ubG9hZEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCkt
PnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmxvYWRFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7
CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZl
bnROYW1lcygpLmxvYWRFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0
aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmVmb3JldW5sb2Fk
QXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihldmVudE5hbWVzKCkuYmVmb3JldW5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5z
ZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxvYWRF
dmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9udW5sb2FkQXR0cikKLSAgICAgICAgZG9jdW1l
bnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkudW5sb2Fk
RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwg
YXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ucGFn
ZWhpZGVBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucGFnZWhpZGVFdmVu
dCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAg
ZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ucGFnZXNob3dBdHRyKQotICAgICAgICBkb2N1bWVu
dCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wYWdlc2hv
d0V2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCks
IGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkucGFnZXNob3dFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZl
bnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9u
cG9wc3RhdGVBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wb3BzdGF0ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQo
KS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucG9wc3RhdGVF
dmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmx1ckF0dHIpCi0gICAgICAgIGRvY3VtZW50
KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJsdXJFdmVu
dCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRy
KSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLmJsdXJFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5l
cih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uZm9jdXNBdHRy
KQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3Vt
ZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZm9jdXNFdmVudCwgY3JlYXRlV2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAjaWYgRU5BQkxFKE9SSUVOVEFU
SU9OX0VWRU5UUykKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25vcmllbnRhdGlvbmNo
YW5nZUF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLm9yaWVudGF0aW9uY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0
ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBkb2N1
bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5vcmll
bnRhdGlvbmNoYW5nZUV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRo
aXMsIGF0dHIpKTsKICNlbmRpZgogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbmhhc2hj
aGFuZ2VBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5oYXNoY2hhbmdlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgp
LT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5oYXNoY2hhbmdl
RXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbnJlc2l6ZUF0dHIpCi0gICAgICAgIGRvY3Vt
ZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJlc2l6
ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCks
IGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0
ZW5lcihldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbnNj
cm9sbEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlz
dGVuZXIoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0
V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuc2Nyb2xsRXZlbnQsIGNy
ZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2Ug
aWYgKGF0dHItPm5hbWUoKSA9PSBvbnN0b3JhZ2VBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5z
ZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQs
IGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikp
OworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZXMoKS5zdG9yYWdlRXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVu
ZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbm9ubGluZUF0
dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLm9ubGluZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRv
Y3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkub25saW5lRXZlbnQsIGNyZWF0ZVdp
bmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwogICAgIGVsc2UgaWYgKGF0
dHItPm5hbWUoKSA9PSBvbm9mZmxpbmVBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5k
b3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5vZmZsaW5lRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAg
ICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5vZmZsaW5lRXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhp
cywgYXR0cikpOwogICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKGF0dHIpOwogfQpJbmRleDogV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcAko
cmV2aXNpb24gNjE5NjQpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExOSwzNyArMTE5LDM3IEBAIHZvaWQgSFRNTEZyYW1lU2V0RWxl
bWVudDo6cGFyc2VNYXBwZWRBdHQKICAgICAgICAgICAgIG1fYm9yZGVyQ29sb3JTZXQgPSB0cnVl
OwogICAgICAgICB9CiAgICAgfSBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25sb2FkQXR0cikK
LSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50
KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVXaW5kb3dBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1l
KCkgPT0gb25iZWZvcmV1bmxvYWRBdHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dB
dHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZvcmV1bmxvYWRFdmVudCwgY3Jl
YXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7Cisg
ICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmJlZm9yZXVubG9hZEV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb251bmxvYWRB
dHRyKQotICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVy
KGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihk
b2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRv
d0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBjcmVhdGVX
aW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChh
dHRyLT5uYW1lKCkgPT0gb25ibHVyQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuYmx1ckV2ZW50LCBjcmVhdGVBdHRy
aWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
Ymx1ckV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIp
KTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25mb2N1c0F0dHIpCi0gICAgICAgIGRv
Y3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmZv
Y3VzRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUo
KSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5mb2N1c0V2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25m
b2N1c2luQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkuZm9jdXNpbkV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+
c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkuZm9jdXNpbkV2ZW50
LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBl
bHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25mb2N1c291dEF0dHIpCi0gICAgICAgIGRvY3VtZW50
KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmZvY3Vzb3V0
RXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwg
YXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKGV2ZW50TmFtZXMoKS5mb2N1c291dEV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICNpZiBFTkFCTEUoT1JJRU5UQVRJT05fRVZFTlRTKQog
ICAgIGVsc2UgaWYgKGF0dHItPm5hbWUoKSA9PSBvbm9yaWVudGF0aW9uY2hhbmdlQXR0cikKLSAg
ICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkub3JpZW50YXRpb25jaGFuZ2VFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5l
cihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFdp
bmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm9yaWVudGF0aW9uY2hhbmdl
RXZlbnQsIGNyZWF0ZVdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwog
I2VuZGlmCiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uaGFzaGNoYW5nZUF0dHIpCi0g
ICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLmhhc2hjaGFuZ2VFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcihkb2N1
bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmhhc2hjaGFuZ2VFdmVudCwgY3JlYXRl
V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IG9ucmVzaXplQXR0cikKLSAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2lu
ZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIGNyZWF0
ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAg
ICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFt
ZXMoKS5yZXNpemVFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uc2Nyb2xsQXR0cikKLSAg
ICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5h
bWVzKCkuc2Nyb2xsRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQo
KS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5zY3JvbGxFdmVudCwgY3JlYXRlV2luZG93QXR0
cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFt
ZSgpID09IG9uc3RvcmFnZUF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnN0b3JhZ2VFdmVudCwgY3JlYXRlQXR0cmli
dXRlRXZlbnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7CisgICAgICAgIGRv
Y3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnN0
b3JhZ2VFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRy
KSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ub25saW5lQXR0cikKLSAgICAgICAg
ZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
b25saW5lRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJh
bWUoKSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZXMoKS5vbmxpbmVFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09
IG9ub2ZmbGluZUF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm9mZmxpbmVFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZl
bnRMaXN0ZW5lcihkb2N1bWVudCgpLT5mcmFtZSgpLCBhdHRyKSk7CisgICAgICAgIGRvY3VtZW50
KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLm9mZmxpbmVF
dmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAg
ICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9ucG9wc3RhdGVBdHRyKQotICAgICAgICBkb2N1
bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5wb3Bz
dGF0ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1l
KCksIGF0dHIpKTsKKyAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkucG9wc3RhdGVFdmVudCwgY3JlYXRlV2luZG93QXR0cmlidXRl
RXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZQogICAgICAgICBIVE1MRWxlbWVu
dDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNw
cAkocmV2aXNpb24gNjE5NjQpCisrKyBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAKIC8qCiAgICAgQ29weXJpZ2h0IChDKSAyMDA0LCAy
MDA1LCAyMDA2IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICAgICAg
ICAgICAgICAgICAgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgotICAgICAgICAgICAgICAgICAgMjAwNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICAgICAgICAgICAgICAgICAgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogCiAgICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICAgIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMjcsMTMg
KzIyNywxMyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlCiAKICAg
ICAgICAgLy8gT25seSBoYW5kbGUgZXZlbnRzIGlmIHdlJ3JlIHRoZSBvdXRlcm1vc3QgPHN2Zz4g
ZWxlbWVudAogICAgICAgICBpZiAoYXR0ci0+bmFtZSgpID09IG9udW5sb2FkQXR0cikKLSAgICAg
ICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnRO
YW1lcygpLnVubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50
KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBjcmVhdGVXaW5k
b3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICAgICAgZWxzZSBpZiAo
YXR0ci0+bmFtZSgpID09IG9ucmVzaXplQXR0cikKLSAgICAgICAgICAgIGRvY3VtZW50KCktPnNl
dFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50LCBj
cmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsK
KyAgICAgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIo
ZXZlbnROYW1lcygpLnJlc2l6ZUV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIGF0dHIpKTsKICAgICAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uc2Ny
b2xsQXR0cikKLSAgICAgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lcygpLnNjcm9sbEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGRvY3VtZW50KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgICAgIGRvY3VtZW50
KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnNjcm9sbEV2
ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAg
ICAgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IFNWR05hbWVzOjpvbnpvb21BdHRyKQotICAg
ICAgICAgICAgZG9jdW1lbnQoKS0+c2V0V2luZG93QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVu
dE5hbWVzKCkuem9vbUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGRvY3VtZW50
KCktPmZyYW1lKCksIGF0dHIpKTsKKyAgICAgICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLnpvb21FdmVudCwgY3JlYXRlV2luZG93
QXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgICAgIGVsc2UKICAgICAg
ICAgICAgIHNldExpc3RlbmVyID0gZmFsc2U7CiAgCkBAIC0yNDIsOSArMjQyLDkgQEAgdm9pZCBT
VkdTVkdFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZQogICAgIH0KIAogICAgIGlmIChhdHRy
LT5uYW1lKCkgPT0gb25hYm9ydEF0dHIpCi0gICAgICAgIGRvY3VtZW50KCktPnNldFdpbmRvd0F0
dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmFib3J0RXZlbnQsIGNyZWF0ZUF0dHJp
YnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUoKSwgYXR0cikpOworICAgICAgICBk
b2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5h
Ym9ydEV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIp
KTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gb25lcnJvckF0dHIpCi0gICAgICAgIGRv
Y3VtZW50KCktPnNldFdpbmRvd0F0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmVy
cm9yRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZG9jdW1lbnQoKS0+ZnJhbWUo
KSwgYXR0cikpOworICAgICAgICBkb2N1bWVudCgpLT5zZXRXaW5kb3dBdHRyaWJ1dGVFdmVudExp
c3RlbmVyKGV2ZW50TmFtZXMoKS5lcnJvckV2ZW50LCBjcmVhdGVXaW5kb3dBdHRyaWJ1dGVFdmVu
dExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnhBdHRyKQogICAgICAgICBzZXRYQmFzZVZhbHVlKFNWR0xlbmd0aChMZW5ndGhNb2Rl
V2lkdGgsIGF0dHItPnZhbHVlKCkpKTsKICAgICBlbHNlIGlmIChhdHRyLT5uYW1lKCkgPT0gU1ZH
TmFtZXM6OnlBdHRyKQo=
</data>
<flag name="review"
          id="47154"
          type_id="1"
          status="-"
          setter="beidson"
    />
    <flag name="commit-queue"
          id="47155"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59984</attachid>
            <date>2010-06-28 22:00:01 -0700</date>
            <delta_ts>2011-06-18 11:59:11 -0700</delta_ts>
            <desc>Split BeforeProcess into BeforeProcessScript and BeforeProcessStyle</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>47954</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjA4NSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNjcgQEAKKzIwMTAtMDYtMjggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
cmUgcHJvZ3Jlc3Mgb24gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQw
NDg0CisKKyAgICAgICAgSXQgaGFzIGJlY29tZSBhcHBhcmVudCB0aGF0IGJlZm9yZXByb2Nlc3Nz
Y3JpcHQgYW5kIGJlZm9yZXByb2Nlc3NzdHlsZSBuZWVkIHRvIGJlIHNlcGFyYXRlLAorICAgICAg
ICBhbmQgYWxzbyB0aGF0IG9uYmVmb3JlcHJvY2Vzc3NjcmlwdCBzaG91bGQgbm90IGV4aXN0LCB3
aGlsZSBvbmJlZm9yZXByb2Nlc3NzdHlsZSBzaG91bGQuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiAoTm8gY2hhbmdlIGluIGJlaGF2aW9yKQorCisgICAgICAgIFByb2plY3QgZmlsZSBub25zZW5z
ZToKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxl
LmFtOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAg
ICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgSW1wbGVtZW50YXRpb25zIGZv
ciB0aGUgZXZlbnRzIHRoZW1zZWx2ZXM6CisgICAgICAgICogZG9tL0JlZm9yZVByb2Nlc3NFdmVu
dC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogZG9tL0JlZm9yZVByb2Nlc3NFdmVudC5oOiBSZW1v
dmVkLgorICAgICAgICAqIGRvbS9CZWZvcmVQcm9jZXNzRXZlbnQuaWRsOiBSZW1vdmVkLgorICAg
ICAgICAqIGRvbS9CZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkJlZm9yZVByb2Nlc3NTY3JpcHRFdmVudDo6dGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQ6OnNldFRleHQpOgorICAgICAgICAqIGRvbS9C
ZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpCZWZv
cmVQcm9jZXNzU2NyaXB0RXZlbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpCZWZvcmVQ
cm9jZXNzU2NyaXB0RXZlbnQ6OmluaXRCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6QmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50Ojppc0JlZm9yZVByb2Nlc3NTY3Jp
cHRFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQ6Om5l
d1RleHQpOiBUbyBiZSB1c2VkIGJ5IHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2YgdGhlIAor
ICAgICAgICAgIGJlZm9yZXByb2Nlc3NzY3JpcHQgbWVjaGFuaXNtLgorICAgICAgICAoV2ViQ29y
ZTo6QmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50OjpCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQpOgor
ICAgICAgICAqIGRvbS9CZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuaWRsOiBBZGRlZC4KKyAgICAg
ICAgKiBkb20vQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkJlZm9yZVByb2Nlc3NTdHlsZUV2ZW50Ojp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6
OkJlZm9yZVByb2Nlc3NTdHlsZUV2ZW50OjpzZXRUZXh0KToKKyAgICAgICAgKiBkb20vQmVmb3Jl
UHJvY2Vzc1N0eWxlRXZlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpCZWZvcmVQcm9j
ZXNzU3R5bGVFdmVudDo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkJlZm9yZVByb2Nlc3NT
dHlsZUV2ZW50Ojppbml0QmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6QmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQ6OmlzQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6QmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQ6OkJlZm9yZVByb2Nlc3NT
dHlsZUV2ZW50KToKKyAgICAgICAgKiBkb20vQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQuaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBkb20vRXZlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnQ6
OmlzQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50Ojpp
c0JlZm9yZVByb2Nlc3NTdHlsZUV2ZW50KToKKyAgICAgICAgKiBkb20vRXZlbnQuaDoKKyAgICAg
ICAgKiBkb20vRXZlbnROYW1lcy5oOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0
b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dG9KUyk6CisKKyAgICAgICAgQWRkIHRoZSBsaXN0
ZW5lciB0eXBlIGZsYWdzIHRvIERvY3VtZW50OgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6YWRkTGlzdGVuZXJUeXBlSWZOZWVkZWQpOgor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorCisgICAgICAgIFJlbW92ZSBvbmJlZm9yZXByb2Nl
c3MsIGFuZCBhZGQgb25seSBvbmJlZm9yZXByb2Nlc3NzdHlsZToKKyAgICAgICAgKiBodG1sL0hU
TUxBdHRyaWJ1dGVOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxTY3JpcHRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxTY3JpcHRFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJp
YnV0ZSk6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKToKKworCiAyMDEw
LTA2LTI4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZp
ZXdlZC4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDYyMDUyKQorKysgV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC01Myw3ICs1Myw4IEBAIERPTV9D
TEFTU0VTID0gXAogICAgIEF0dHIgXAogICAgIEJhckluZm8gXAogICAgIEJlZm9yZUxvYWRFdmVu
dCBcCi0gICAgQmVmb3JlUHJvY2Vzc0V2ZW50IFwKKyAgICBCZWZvcmVQcm9jZXNzU2NyaXB0RXZl
bnQgXAorICAgIEJlZm9yZVByb2Nlc3NTdHlsZUV2ZW50IFwKICAgICBCbG9iIFwKICAgICBCbG9i
QnVpbGRlciBcCiAgICAgQ0RBVEFTZWN0aW9uIFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUu
YW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gNjIwNTIp
CisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0xMjksNyArMTI5
LDggQEAgSURMX0JJTkRJTkdTICs9IFwKIAlXZWJDb3JlL2Nzcy9XZWJLaXRDU1NUcmFuc2Zvcm1W
YWx1ZS5pZGwgXAogCVdlYkNvcmUvZG9tL0F0dHIuaWRsIFwKIAlXZWJDb3JlL2RvbS9CZWZvcmVM
b2FkRXZlbnQuaWRsIFwKLQlXZWJDb3JlL2RvbS9CZWZvcmVQcm9jZXNzRXZlbnQuaWRsIFwKKwlX
ZWJDb3JlL2RvbS9CZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuaWRsIFwKKwlXZWJDb3JlL2RvbS9C
ZWZvcmVQcm9jZXNzU3R5bGVFdmVudC5pZGwgXAogCVdlYkNvcmUvZG9tL0NEQVRBU2VjdGlvbi5p
ZGwgXAogCVdlYkNvcmUvZG9tL0NoYXJhY3RlckRhdGEuaWRsIFwKIAlXZWJDb3JlL2RvbS9DbGll
bnRSZWN0LmlkbCBcCkBAIC03MzQsOCArNzM1LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
V2ViQ29yZS9kb20vQXR0cmlidXRlLmNwcCBcCiAJV2ViQ29yZS9kb20vQXR0cmlidXRlLmggXAog
CVdlYkNvcmUvZG9tL0JlZm9yZUxvYWRFdmVudC5oIFwKLQlXZWJDb3JlL2RvbS9CZWZvcmVQcm9j
ZXNzRXZlbnQuY3BwIFwKLQlXZWJDb3JlL2RvbS9CZWZvcmVQcm9jZXNzRXZlbnQuaCBcCisJV2Vi
Q29yZS9kb20vQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmNwcCBcCisJV2ViQ29yZS9kb20vQmVm
b3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmggXAorCVdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NTdHls
ZUV2ZW50LmNwcCBcCisJV2ViQ29yZS9kb20vQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQuaCBcCiAJ
V2ViQ29yZS9kb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQuY3BwIFwKIAlXZWJDb3JlL2RvbS9C
ZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5oIFwKIAlXZWJDb3JlL2RvbS9CZWZvcmVVbmxvYWRFdmVu
dC5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLmd5cGkJKHJldmlzaW9uIDYyMDUyKQorKysgV2ViQ29yZS9XZWJDb3JlLmd5cGkJ
KHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDggQEAKICAgICAgICAgICAgICdjc3MvV2ViS2l0
Q1NTVHJhbnNmb3JtVmFsdWUuaWRsJywKICAgICAgICAgICAgICdkb20vQXR0ci5pZGwnLAogICAg
ICAgICAgICAgJ2RvbS9CZWZvcmVMb2FkRXZlbnQuaWRsJywKLSAgICAgICAgICAgICdkb20vQmVm
b3JlUHJvY2Vzc0V2ZW50LmlkbCcsCisgICAgICAgICAgICAnZG9tL0JlZm9yZVByb2Nlc3NTY3Jp
cHRFdmVudC5pZGwnLAorICAgICAgICAgICAgJ2RvbS9CZWZvcmVQcm9jZXNzU3R5bGVFdmVudC5p
ZGwnLAogICAgICAgICAgICAgJ2RvbS9DREFUQVNlY3Rpb24uaWRsJywKICAgICAgICAgICAgICdk
b20vQ2hhcmFjdGVyRGF0YS5pZGwnLAogICAgICAgICAgICAgJ2RvbS9DbGllbnRSZWN0LmlkbCcs
CkBAIC0xMDYzLDggKzEwNjQsMTAgQEAKICAgICAgICAgICAgICdkb20vQmVmb3JlVGV4dEluc2Vy
dGVkRXZlbnQuY3BwJywKICAgICAgICAgICAgICdkb20vQmVmb3JlVGV4dEluc2VydGVkRXZlbnQu
aCcsCiAgICAgICAgICAgICAnZG9tL0JlZm9yZUxvYWRFdmVudC5oJywKLSAgICAgICAgICAgICdk
b20vQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcCcsCi0gICAgICAgICAgICAnZG9tL0JlZm9yZVByb2Nl
c3NFdmVudC5oJywKKyAgICAgICAgICAgICdkb20vQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmNw
cCcsCisgICAgICAgICAgICAnZG9tL0JlZm9yZVByb2Nlc3NTY3JpcHRFdmVudC5oJywKKyAgICAg
ICAgICAgICdkb20vQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQuY3BwJywKKyAgICAgICAgICAgICdk
b20vQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQuaCcsCiAgICAgICAgICAgICAnZG9tL0JlZm9yZVVu
bG9hZEV2ZW50LmNwcCcsCiAgICAgICAgICAgICAnZG9tL0JlZm9yZVVubG9hZEV2ZW50LmgnLAog
ICAgICAgICAgICAgJ2RvbS9DREFUQVNlY3Rpb24uY3BwJywKSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gNjIwNTIp
CisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC00NTQsNyArNDU0LDgg
QEAgU09VUkNFUyArPSBcCiAgICAgZG9tL0FjdGl2ZURPTU9iamVjdC5jcHAgXAogICAgIGRvbS9B
dHRyLmNwcCBcCiAgICAgZG9tL0F0dHJpYnV0ZS5jcHAgXAotICAgIGRvbS9CZWZvcmVQcm9jZXNz
RXZlbnQuY3BwIFwKKyAgICBkb20vQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmNwcCBcCisgICAg
ZG9tL0JlZm9yZVByb2Nlc3NTdHlsZUV2ZW50LmNwcCBcCiAgICAgZG9tL0JlZm9yZVRleHRJbnNl
cnRlZEV2ZW50LmNwcCBcCiAgICAgZG9tL0JlZm9yZVVubG9hZEV2ZW50LmNwcCBcCiAgICAgZG9t
L0NEQVRBU2VjdGlvbi5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCShyZXZpc2lvbiA2MjA1MikKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52
Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTc2OSw3ICs3NjksNyBAQAogCQkJCT4NCiAJCQk8L0Zp
bGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcCIN
CisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmNwcCINCiAJCQkJPg0K
IAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCiAJCQkJCU5hbWU9IkRlYnVnfFdpbjMyIg0KQEAgLTgy
MSw3ICs4MjEsNjMgQEAKIAkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNCZWZvcmVQcm9jZXNzRXZlbnQuaCINCisJCQkJUmVs
YXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQuY3Bw
Ig0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iRGVidWd8V2lu
MzIiDQorCQkJCQlFeGNsdWRlZEZyb21CdWlsZD0idHJ1ZSINCisJCQkJCT4NCisJCQkJCTxUb29s
DQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNv
bmZpZ3VyYXRpb24+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFz
ZXxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJ
PFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJE
ZWJ1Z19JbnRlcm5hbHxXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJ
CQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJ
Lz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQor
CQkJCQlOYW1lPSJEZWJ1Z19DYWlyb3xXaW4zMiINCisJCQkJCUV4Y2x1ZGVkRnJvbUJ1aWxkPSJ0
cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQkJPEZpbGVDb25maWd1
cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX0NhaXJvfFdpbjMyIg0KKwkJCQkJRXhjbHVkZWRG
cm9tQnVpbGQ9InRydWUiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IkRlYnVnX0FsbHxXaW4zMiINCisJCQkJCUV4
Y2x1ZGVkRnJvbUJ1aWxkPSJ0cnVlIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1l
PSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4N
CisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1
dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTQmVmb3JlUHJvY2Vzc1N0
eWxlRXZlbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KQEAgLTMxOTg1LDEx
ICszMjA0MSwxOSBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRp
dmVQYXRoPSIuLlxkb21cQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcCINCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxkb21cQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmNwcCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxCZWZvcmVQcm9jZXNzU2Ny
aXB0RXZlbnQuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGRvbVxCZWZvcmVQcm9jZXNzU3R5bGVFdmVudC5jcHAiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQogCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cQmVmb3JlUHJvY2Vz
c0V2ZW50LmgiDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEJlZm9yZVByb2Nlc3NTdHlsZUV2
ZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gNjIwNTIpCisrKyBXZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTAxMiw2ICsxMDEyLDEyIEBACiAJCTRGRDhEMEYzMTE5QzcxOEIwMDJGQTgyNSAvKiBTY3JpcHRH
Q0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
RkQ4RDBGMTExOUM3MThCMDAyRkE4MjUgLyogU2NyaXB0R0NFdmVudC5oICovOyB9OwogCQk1MTAx
ODQ2OTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMTg0NjcwQjA4NjAyQTAwNEE4MjVGIC8qIENh
Y2hlZFBhZ2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk1MTAxODQ2QTBCMDg2MDJBMDA0QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxODQ2ODBCMDg2MDJBMDA0
QTgyNUYgLyogQ2FjaGVkUGFnZS5jcHAgKi87IH07CisJCTUxMDFDMjQ3MTFEOUE5NEUwMDM2MjQx
QyAvKiBKU0JlZm9yZVByb2Nlc3NTY3JpcHRFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxQzI0NTExRDlBOTRFMDAzNjI0MUMgLyogSlNC
ZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuY3BwICovOyB9OworCQk1MTAxQzI0ODExRDlBOTRFMDAz
NjI0MUMgLyogSlNCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMDFDMjQ2MTFEOUE5NEUwMDM2MjQxQyAvKiBK
U0JlZm9yZVByb2Nlc3NTY3JpcHRFdmVudC5oICovOyB9OworCQk1MTAxQzI1NjExRDlBQjU4MDAz
NjI0MUMgLyogQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMUMyNTMxMUQ5QUI1ODAwMzYyNDFDIC8qIEJl
Zm9yZVByb2Nlc3NTdHlsZUV2ZW50LmNwcCAqLzsgfTsKKwkJNTEwMUMyNTcxMUQ5QUI1ODAwMzYy
NDFDIC8qIEJlZm9yZVByb2Nlc3NTdHlsZUV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTAxQzI1NDExRDlBQjU4MDAzNjI0MUMgLyogQmVmb3Jl
UHJvY2Vzc1N0eWxlRXZlbnQuaCAqLzsgfTsKKwkJNTEwMUMyNkExMUQ5QUREMTAwMzYyNDFDIC8q
IEpTQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMUMyNjgxMUQ5QUREMTAwMzYyNDFDIC8qIEpTQmVmb3Jl
UHJvY2Vzc1N0eWxlRXZlbnQuY3BwICovOyB9OworCQk1MTAxQzI2QjExRDlBREQxMDAzNjI0MUMg
LyogSlNCZWZvcmVQcm9jZXNzU3R5bGVFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTEwMUMyNjkxMUQ5QUREMTAwMzYyNDFDIC8qIEpTQmVmb3Jl
UHJvY2Vzc1N0eWxlRXZlbnQuaCAqLzsgfTsKIAkJNTEwRDRBMzMxMDMxNjVFRTAwNDlFQTU0IC8q
IFNvY2tldFN0cmVhbUVycm9yQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFt
RXJyb3JCYXNlLmNwcCAqLzsgfTsKIAkJNTEwRDRBMzQxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tl
dFN0cmVhbUVycm9yQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEwRDRBMkUxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUVycm9yQmFz
ZS5oICovOyB9OwogCQk1MTBENEEzNjEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFu
ZGxlQmFzZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTBENEEzMDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtSGFuZGxlQmFzZS5jcHAg
Ki87IH07CkBAIC0xMDg1LDEwICsxMDkxLDggQEAKIAkJNTE2MDMwNkMwQ0M0MzYyMzAwQzhBQzI1
IC8qIEZpbGVTeXN0ZW1DRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTYwMzA2QjBDQzQzNjIzMDBDOEFDMjUgLyogRmlsZVN5c3RlbUNGLmNwcCAq
LzsgfTsKIAkJNTE2MEY0OTgwQjBBQTc1RjAwQzFEMkFGIC8qIEhpc3RvcnlJdGVtTWFjLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEY0OTcwQjBB
QTc1RjAwQzFEMkFGIC8qIEhpc3RvcnlJdGVtTWFjLm1tICovOyB9OwogCQk1MTZCQjc5NDBDRTkx
RTY4MDA1MTJGNzkgLyogSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNkJCNzkyMENFOTFFNjgwMDUxMkY3OSAvKiBK
U1RyZWVXYWxrZXJDdXN0b20uY3BwICovOyB9OwotCQk1MTcyMUZCQjExRDI3OTA3MDA2MzhCNDIg
LyogQmVmb3JlUHJvY2Vzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTcyMUZCOTExRDI3OTA3MDA2MzhCNDIgLyogQmVmb3JlUHJvY2Vzc0V2
ZW50LmggKi87IH07Ci0JCTUxNzIxRkQyMTFEMjdFRjIwMDYzOEI0MiAvKiBKU0JlZm9yZVByb2Nl
c3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTcyMUZEMDExRDI3RUYyMDA2MzhCNDIgLyogSlNCZWZvcmVQcm9jZXNzRXZlbnQuY3BwICov
OyB9OwotCQk1MTcyMUZEMzExRDI3RUYyMDA2MzhCNDIgLyogSlNCZWZvcmVQcm9jZXNzRXZlbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzIxRkQx
MTFEMjdFRjIwMDYzOEI0MiAvKiBKU0JlZm9yZVByb2Nlc3NFdmVudC5oICovOyB9OwotCQk1MTcy
MjA0QjExRDI5NjA1MDA2MzhCNDIgLyogQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzIyMDRBMTFEMjk2MDUwMDYz
OEI0MiAvKiBCZWZvcmVQcm9jZXNzRXZlbnQuY3BwICovOyB9OworCQk1MTcyMUZCQjExRDI3OTA3
MDA2MzhCNDIgLyogQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTcyMUZCOTExRDI3OTA3MDA2MzhCNDIgLyog
QmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmggKi87IH07CisJCTUxNzIyMDRCMTFEMjk2MDUwMDYz
OEI0MiAvKiBCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3MjIwNEExMUQyOTYwNTAwNjM4QjQyIC8qIEJl
Zm9yZVByb2Nlc3NTY3JpcHRFdmVudC5jcHAgKi87IH07CiAJCTUxNzQxRDBGMEIwNzI1OUEwMEVE
NDQyQyAvKiBCYWNrRm9yd2FyZExpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxNzQxRDBCMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNrRm9yd2FyZExp
c3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1
MTc0MUQxMDBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRMaXN0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNzQxRDBDMEIwNzI1OUEwMEVE
NDQyQyAvKiBCYWNrRm9yd2FyZExpc3QuY3BwICovOyB9OwogCQk1MTc0MUQxMTBCMDcyNTlBMDBF
RDQ0MkMgLyogSGlzdG9yeUl0ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNzQxRDBEMEIwNzI1OUEwMEVENDQyQyAvKiBIaXN0b3J5SXRlbS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02Njc3LDYg
KzY2ODEsMTMgQEAKIAkJNEZEOEQwRjExMTlDNzE4QjAwMkZBODI1IC8qIFNjcmlwdEdDRXZlbnQu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0R0NFdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTAxODQ2NzBCMDg2MDJBMDA0QTgyNUYgLyogQ2Fj
aGVkUGFnZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDYWNoZWRQYWdlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMDE4NDY4MEIwODYwMkEwMDRBODI1RiAv
KiBDYWNoZWRQYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENh
Y2hlZFBhZ2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTAxQzI0NTExRDlB
OTRFMDAzNjI0MUMgLyogSlNCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTAxQzI0NjExRDlBOTRFMDAzNjI0MUMg
LyogSlNCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTEwMUMyNTMxMUQ5QUI1ODAwMzYyNDFDIC8qIEJlZm9yZVByb2Nlc3NTdHls
ZUV2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJlZm9yZVBy
b2Nlc3NTdHlsZUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwMUMy
NTQxMUQ5QUI1ODAwMzYyNDFDIC8qIEJlZm9yZVByb2Nlc3NTdHlsZUV2ZW50LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJlZm9yZVByb2Nlc3NTdHlsZUV2ZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMDFDMjU1MTFEOUFCNTgwMDM2MjQxQyAvKiBCZWZv
cmVQcm9jZXNzU3R5bGVFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmVmb3JlUHJv
Y2Vzc1N0eWxlRXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTAxQzI2
ODExRDlBREQxMDAzNjI0MUMgLyogSlNCZWZvcmVQcm9jZXNzU3R5bGVFdmVudC5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0JlZm9yZVByb2Nlc3NTdHlsZUV2ZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTEwMUMyNjkxMUQ5QUREMTAwMzYy
NDFDIC8qIEpTQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNCZWZvcmVQcm9jZXNzU3R5bGVFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTBENEEyRDEwMzE2NUVFMDA0OUVBNTQgLyogU29ja2V0U3RyZWFtRXJy
b3JCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNvY2tldFN0
cmVhbUVycm9yQmFzZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTJF
MTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJlYW1FcnJvckJhc2UuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU29ja2V0U3RyZWFtRXJyb3JCYXNlLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUxMEQ0QTMwMTAzMTY1RUUwMDQ5RUE1NCAvKiBTb2NrZXRTdHJl
YW1IYW5kbGVCYXNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNv
Y2tldFN0cmVhbUhhbmRsZUJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
Njc1MiwxMSArNjc2Myw5IEBACiAJCTUxNjAzMDZCMENDNDM2MjMwMEM4QUMyNSAvKiBGaWxlU3lz
dGVtQ0YuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRmlsZVN5c3Rl
bUNGLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE2MEY0OTcwQjBBQTc1RjAw
QzFEMkFGIC8qIEhpc3RvcnlJdGVtTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBuYW1lID0gSGlzdG9yeUl0ZW1NYWMubW07IHBhdGggPSBtYWMvSGlzdG9yeUl0ZW1NYWMu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNkJCNzkyMENFOTFFNjgwMDUxMkY3
OSAvKiBKU1RyZWVXYWxrZXJDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNUcmVlV2Fsa2VyQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJNTE3MjFGQjkxMUQyNzkwNzAwNjM4QjQyIC8qIEJlZm9yZVByb2Nlc3NFdmVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCZWZvcmVQcm9jZXNzRXZlbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE3MjFGQkExMUQyNzkwNzAwNjM4QjQyIC8qIEJl
Zm9yZVByb2Nlc3NFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gQmVmb3JlUHJvY2Vz
c0V2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJNTE3MjFGRDAxMUQyN0VG
MjAwNjM4QjQyIC8qIEpTQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKLQkJNTE3MjFGRDExMUQyN0VGMjAwNjM4QjQyIC8qIEpTQmVmb3JlUHJv
Y2Vzc0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQmVmb3JlUHJv
Y2Vzc0V2ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTUxNzIyMDRBMTFEMjk2
MDUwMDYzOEI0MiAvKiBCZWZvcmVQcm9jZXNzRXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTE3MjFGQjkxMUQyNzkwNzAwNjM4QjQyIC8qIEJlZm9yZVByb2Nlc3NT
Y3JpcHRFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCZWZvcmVQcm9j
ZXNzU2NyaXB0RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3MjFGQkEx
MUQyNzkwNzAwNjM4QjQyIC8qIEJlZm9yZVByb2Nlc3NTY3JpcHRFdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0OyBwYXRoID0gQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE3MjIwNEExMUQyOTYwNTAwNjM4QjQyIC8qIEJlZm9yZVByb2Nl
c3NTY3JpcHRFdmVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBC
ZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTc0MUQwQjBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRMaXN0LmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhY2tGb3J3YXJkTGlzdC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MTc0MUQwQzBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRM
aXN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhY2tGb3J3YXJk
TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNzQxRDBEMEIwNzI1OUEw
MEVENDQyQyAvKiBIaXN0b3J5SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSGlzdG9yeUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0NTA3LDgg
KzE0NTE2LDEwIEBACiAJCQljaGlsZHJlbiA9ICgKIAkJCQlCQzk0NjM0NTEwN0E5MzRCMDA4NTcx
OTMgLyogSlNCZWZvcmVMb2FkRXZlbnQuY3BwICovLAogCQkJCUJDOTQ2MzQ3MTA3QTkzNjYwMDg1
NzE5MyAvKiBKU0JlZm9yZUxvYWRFdmVudC5oICovLAotCQkJCTUxNzIxRkQwMTFEMjdFRjIwMDYz
OEI0MiAvKiBKU0JlZm9yZVByb2Nlc3NFdmVudC5jcHAgKi8sCi0JCQkJNTE3MjFGRDExMUQyN0VG
MjAwNjM4QjQyIC8qIEpTQmVmb3JlUHJvY2Vzc0V2ZW50LmggKi8sCisJCQkJNTEwMUMyNDUxMUQ5
QTk0RTAwMzYyNDFDIC8qIEpTQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmNwcCAqLywKKwkJCQk1
MTAxQzI0NjExRDlBOTRFMDAzNjI0MUMgLyogSlNCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuaCAq
LywKKwkJCQk1MTAxQzI2ODExRDlBREQxMDAzNjI0MUMgLyogSlNCZWZvcmVQcm9jZXNzU3R5bGVF
dmVudC5jcHAgKi8sCisJCQkJNTEwMUMyNjkxMUQ5QUREMTAwMzYyNDFDIC8qIEpTQmVmb3JlUHJv
Y2Vzc1N0eWxlRXZlbnQuaCAqLywKIAkJCQk3OUFDOTIxNjEwOTk0NUM4MDAyMTI2NkUgLyogSlND
b21wb3NpdGlvbkV2ZW50LmNwcCAqLywKIAkJCQk3OUFDOTIxNzEwOTk0NUM4MDAyMTI2NkUgLyog
SlNDb21wb3NpdGlvbkV2ZW50LmggKi8sCiAJCQkJRTQ3NzhCN0QxMTVBNTgxQTAwQjVEMzcyIC8q
IEpTQ3VzdG9tRXZlbnQuY3BwICovLApAQCAtMTY2NjksOSArMTY2ODAsMTIgQEAKIAkJCQlBOEM0
QTdGOTA5RDU2MzI3MDAwM0FDOEQgLyogQXR0cmlidXRlLmggKi8sCiAJCQkJQkM5NDYyRDcxMDdB
N0I0QzAwODU3MTkzIC8qIEJlZm9yZUxvYWRFdmVudC5oICovLAogCQkJCUJDOTQ2MkNCMTA3QTdB
MzkwMDg1NzE5MyAvKiBCZWZvcmVMb2FkRXZlbnQuaWRsICovLAotCQkJCTUxNzIyMDRBMTFEMjk2
MDUwMDYzOEI0MiAvKiBCZWZvcmVQcm9jZXNzRXZlbnQuY3BwICovLAotCQkJCTUxNzIxRkI5MTFE
Mjc5MDcwMDYzOEI0MiAvKiBCZWZvcmVQcm9jZXNzRXZlbnQuaCAqLywKLQkJCQk1MTcyMUZCQTEx
RDI3OTA3MDA2MzhCNDIgLyogQmVmb3JlUHJvY2Vzc0V2ZW50LmlkbCAqLywKKwkJCQk1MTcyMjA0
QTExRDI5NjA1MDA2MzhCNDIgLyogQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmNwcCAqLywKKwkJ
CQk1MTcyMUZCOTExRDI3OTA3MDA2MzhCNDIgLyogQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50Lmgg
Ki8sCisJCQkJNTE3MjFGQkExMUQyNzkwNzAwNjM4QjQyIC8qIEJlZm9yZVByb2Nlc3NTY3JpcHRF
dmVudC5pZGwgKi8sCisJCQkJNTEwMUMyNTMxMUQ5QUI1ODAwMzYyNDFDIC8qIEJlZm9yZVByb2Nl
c3NTdHlsZUV2ZW50LmNwcCAqLywKKwkJCQk1MTAxQzI1NDExRDlBQjU4MDAzNjI0MUMgLyogQmVm
b3JlUHJvY2Vzc1N0eWxlRXZlbnQuaCAqLywKKwkJCQk1MTAxQzI1NTExRDlBQjU4MDAzNjI0MUMg
LyogQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQuaWRsICovLAogCQkJCUFCMjNBMzI1MDlCQkE3RDAw
MDY3Q0M1MyAvKiBCZWZvcmVUZXh0SW5zZXJ0ZWRFdmVudC5jcHAgKi8sCiAJCQkJQUIyM0EzMjYw
OUJCQTdEMDAwNjdDQzUzIC8qIEJlZm9yZVRleHRJbnNlcnRlZEV2ZW50LmggKi8sCiAJCQkJODUw
MzFCMjYwQTQ0RUZDNzAwRjk5MkUwIC8qIEJlZm9yZVVubG9hZEV2ZW50LmNwcCAqLywKQEAgLTE5
NTgwLDE0ICsxOTU5NCwxNiBAQAogCQkJCTk3MTlBRjAwMTFEMDlGMkMwMEQ0NTgzMSAvKiBIVE1M
SW5wdXRTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NTMxMjNEMTFEMDQ3MUIwMEQ0RDA3
NyAvKiBGcmFnbWVudFNjcmlwdGluZ1Blcm1pc3Npb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
RTZBNzgxMTFEMTY2MUIwMDMxMUY0QSAvKiBIVE1MUGFyc2VyU2NoZWR1bGVyLmggaW4gSGVhZGVy
cyAqLywKLQkJCQk1MTcyMUZCQjExRDI3OTA3MDA2MzhCNDIgLyogQmVmb3JlUHJvY2Vzc0V2ZW50
LmggaW4gSGVhZGVycyAqLywKLQkJCQk1MTcyMUZEMzExRDI3RUYyMDA2MzhCNDIgLyogSlNCZWZv
cmVQcm9jZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNzIxRkJCMTFEMjc5MDcwMDYz
OEI0MiAvKiBCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4
NEQ4MjdDMTFEMzMzRUQwMDk3Mjk5MCAvKiBSYXdEYXRhRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUNFQTM5NDlEMTFENDVDREEwMDMwOTRDRiAvKiBTdGF0aWNIYXNoU2V0Tm9k
ZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCThBODQ0Q0ZGMTFEM0MxN0MwMDE0MDY1QyAvKiBO
YXZpZ2F0aW9uVGltaW5nLmggaW4gSGVhZGVycyAqLywKIAkJCQk4QTg0NEQwNTExRDNDMThFMDAx
NDA2NUMgLyogUGVyZm9ybWFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE4NEQ4MkMxMTFEMzQ3
NDgwMDk3Mjk5MCAvKiBTY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE4QzIyOEExMTFENTcyMkUwMEQ1QTdEMyAvKiBEZWNvZGVkRGF0YURvY3VtZW50UGFyc2Vy
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTAxQzI0ODExRDlBOTRFMDAzNjI0MUMgLyogSlNCZWZv
cmVQcm9jZXNzU2NyaXB0RXZlbnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxMDFDMjU3MTFEOUFC
NTgwMDM2MjQxQyAvKiBCZWZvcmVQcm9jZXNzU3R5bGVFdmVudC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTEwMUMyNkIxMUQ5QUREMTAwMzYyNDFDIC8qIEpTQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQu
aCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtMjE5MDcsMTQgKzIxOTIzLDE2IEBACiAJCQkJMUFEOEY4MUMx
MUNBQjlFOTAwRTkzRTU0IC8qIFBsYXRmb3JtU3RyYXRlZ2llcy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQlCNTI1QTk2NjExQ0EyMzQwMDAzQTIzQTggLyogSlNTUUxFeGNlcHRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThFNkE3ODIxMUQxNjYxQjAwMzExRjRBIC8qIEhUTUxQYXJzZXJTY2hl
ZHVsZXIuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJNTE3MjFGRDIxMUQyN0VGMjAwNjM4QjQyIC8q
IEpTQmVmb3JlUHJvY2Vzc0V2ZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCTUxNzIyMDRCMTFE
Mjk2MDUwMDYzOEI0MiAvKiBCZWZvcmVQcm9jZXNzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJNTE3MjIwNEIxMUQyOTYwNTAwNjM4QjQyIC8qIEJlZm9yZVByb2Nlc3NTY3JpcHRFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDRUEzOTQ5QzExRDQ1Q0RBMDAzMDk0Q0YgLyogU3RhdGlj
SGFzaFNldE5vZGVMaXN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4QzIyODBFMTFENEE1OTcw
MEQ1QTdEMyAvKiBEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4QTg0NENG
RTExRDNDMTdDMDAxNDA2NUMgLyogTmF2aWdhdGlvblRpbWluZy5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk4QTg0NEQwNDExRDNDMThFMDAxNDA2NUMgLyogUGVyZm9ybWFuY2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQTg0RDgyQzIxMUQzNDc0ODAwOTcyOTkwIC8qIFNjcmlwdGFibGVEb2N1bWVu
dFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEMyMjhBMjExRDU3MjJFMDBENUE3RDMg
LyogRGVjb2RlZERhdGFEb2N1bWVudFBhcnNlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTAx
QzI0NzExRDlBOTRFMDAzNjI0MUMgLyogSlNCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJNTEwMUMyNTYxMUQ5QUI1ODAwMzYyNDFDIC8qIEJlZm9yZVByb2Nl
c3NTdHlsZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxMDFDMjZBMTFEOUFERDEwMDM2
MjQxQyAvKiBKU0JlZm9yZVByb2Nlc3NTdHlsZUV2ZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
KTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCShyZXZpc2lvbiA2MjA1MikKKysr
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDYgKzM1LDggQEAKICNpbmNsdWRlICJEZXZpY2VPcmllbnRhdGlvbkV2ZW50LmgiCiAjaW5j
bHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJKU0JlZm9yZUxvYWRFdmVudC5oIgorI2luY2x1ZGUg
IkpTQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmgiCisjaW5jbHVkZSAiSlNCZWZvcmVQcm9jZXNz
U3R5bGVFdmVudC5oIgogI2luY2x1ZGUgIkpTQ2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiSlNDdXN0
b21FdmVudC5oIgogI2luY2x1ZGUgIkpTQ29tcG9zaXRpb25FdmVudC5oIgpAQCAtNTUsNiArNTcs
OCBAQAogI2luY2x1ZGUgIkpTV2hlZWxFdmVudC5oIgogI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVl
c3RQcm9ncmVzc0V2ZW50LmgiCiAjaW5jbHVkZSAiQmVmb3JlTG9hZEV2ZW50LmgiCisjaW5jbHVk
ZSAiQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmgiCisjaW5jbHVkZSAiQmVmb3JlUHJvY2Vzc1N0
eWxlRXZlbnQuaCIKICNpbmNsdWRlICJFcnJvckV2ZW50LmgiCiAjaW5jbHVkZSAiS2V5Ym9hcmRF
dmVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgpAQCAtMTUwLDYgKzE1NCwxMCBAQCBK
U1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiBleGVjLCBKU0RPTUdsb2JhCiAgICAgICAgICAgICB3cmFw
cGVyID0gQ1JFQVRFX0RPTV9PQkpFQ1RfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIFByb2dy
ZXNzRXZlbnQsIGV2ZW50KTsKICAgICB9IGVsc2UgaWYgKGV2ZW50LT5pc0JlZm9yZUxvYWRFdmVu
dCgpKQogICAgICAgICB3cmFwcGVyID0gQ1JFQVRFX0RPTV9PQkpFQ1RfV1JBUFBFUihleGVjLCBn
bG9iYWxPYmplY3QsIEJlZm9yZUxvYWRFdmVudCwgZXZlbnQpOworICAgIGVsc2UgaWYgKGV2ZW50
LT5pc0JlZm9yZVByb2Nlc3NTY3JpcHRFdmVudCgpKQorICAgICAgICB3cmFwcGVyID0gQ1JFQVRF
X0RPTV9PQkpFQ1RfV1JBUFBFUihleGVjLCBnbG9iYWxPYmplY3QsIEJlZm9yZVByb2Nlc3NTY3Jp
cHRFdmVudCwgZXZlbnQpOworICAgIGVsc2UgaWYgKGV2ZW50LT5pc0JlZm9yZVByb2Nlc3NTdHls
ZUV2ZW50KCkpCisgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4
ZWMsIGdsb2JhbE9iamVjdCwgQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQsIGV2ZW50KTsKICNpZiBF
TkFCTEUoRE9NX1NUT1JBR0UpCiAgICAgZWxzZSBpZiAoZXZlbnQtPmlzU3RvcmFnZUV2ZW50KCkp
CiAgICAgICAgIHdyYXBwZXIgPSBDUkVBVEVfRE9NX09CSkVDVF9XUkFQUEVSKGV4ZWMsIGdsb2Jh
bE9iamVjdCwgU3RvcmFnZUV2ZW50LCBldmVudCk7CkluZGV4OiBXZWJDb3JlL2RvbS9CZWZvcmVQ
cm9jZXNzRXZlbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NF
dmVudC5jcHAJKHJldmlzaW9uIDYyMDUyKQorKysgV2ViQ29yZS9kb20vQmVmb3JlUHJvY2Vzc0V2
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKLSAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCi0gKgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJCZWZvcmVQcm9jZXNzRXZlbnQuaCIKLQotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi1TdHJpbmcgQmVmb3JlUHJvY2Vzc0V2ZW50Ojp0ZXh0KCkgY29uc3QKLXsKLSAg
ICAvLyBGSVhNRSAtIFJldHVybiBpbm5lclRleHQgZm9yIDxzdHlsZT4gZWxlbWVudHMgYW5kIGlu
bGluZSA8c2NyaXB0PiBlbGVtZW50cywgb3IgdGhlIHJlc291cmNlIHRleHQgZm9yIHJlbW90ZSA8
c2NyaXB0PiBlbGVtZW50cwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotdm9pZCBCZWZvcmVQ
cm9jZXNzRXZlbnQ6OnNldFRleHQoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRSAtIFJl
cGxhY2UgaW5uZXJUZXh0IGZvciA8c3R5bGU+IGVsZW1lbnRzIGFuZCBpbmxpbmUgPHNjcmlwdD4g
ZWxlbWVudHMsIGFuZCByZW1vdmUgdGhlIHNyYyBhdHRyaWJ1dGUgb24gCi0gICAgLy8gcmVtb3Rl
IDxzY3JpcHQ+IGVsZW1lbnRzLCByZXBsYWNpbmcgaXQgd2l0aCBhbiBpbm5lclRleHQgcHJvcGVy
dHkuCi19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0JlZm9y
ZVByb2Nlc3NFdmVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NF
dmVudC5oCShyZXZpc2lvbiA2MjA1MikKKysrIFdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NFdmVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDYwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
LSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
Ci0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqCi0gKi8KLQotI2lmbmRlZiBCZWZvcmVQ
cm9jZXNzRXZlbnRfaAotI2RlZmluZSBCZWZvcmVQcm9jZXNzRXZlbnRfaAotCi0jaW5jbHVkZSAi
RXZlbnQuaCIKLSNpbmNsdWRlICJFdmVudE5hbWVzLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotY2xhc3MgQmVmb3JlUHJvY2Vzc0V2ZW50IDogcHVibGljIEV2ZW50IHsKLXB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxCZWZvcmVQcm9jZXNzRXZlbnQ+IGNyZWF0ZSgpCi0gICAgewot
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJlZm9yZVByb2Nlc3NFdmVudCk7Ci0gICAgfQot
Ci0gICAgdm9pZCBpbml0QmVmb3JlUHJvY2Vzc0V2ZW50KGNvbnN0IEF0b21pY1N0cmluZyYgdHlw
ZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSkKLSAgICB7Ci0gICAgICAgIGluaXRF
dmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUpOwotICAgIH0KLQotICAgIFN0cmluZyB0
ZXh0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOwotCi1wcml2YXRl
OgotICAgIEJlZm9yZVByb2Nlc3NFdmVudCgpCi0gICAgICAgIDogRXZlbnQoZXZlbnROYW1lcygp
LmJlZm9yZXByb2Nlc3NFdmVudCwgZmFsc2UsIHRydWUpCi0gICAgewotICAgIH0KLQotfTsKLQot
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gQmVmb3JlUHJvY2Vzc0V2ZW50X2gK
SW5kZXg6IFdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NFdmVudC5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vQmVmb3JlUHJvY2Vzc0V2ZW50LmlkbAkocmV2aXNpb24gNjIwNTIpCisrKyBX
ZWJDb3JlL2RvbS9CZWZvcmVQcm9jZXNzRXZlbnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDM0
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0Ogot
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
Ci0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
LSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKLSAqCi0gKi8KLQotbW9kdWxlIGV2ZW50cyB7Ci0KLSAgICBpbnRlcmZhY2UgQmVmb3JlUHJv
Y2Vzc0V2ZW50IDogRXZlbnQgewotICAgICAgICB2b2lkIGluaXRCZWZvcmVQcm9jZXNzRXZlbnQo
aW4gRE9NU3RyaW5nIHR5cGUsIGluIGJvb2xlYW4gY2FuQnViYmxlLCBpbiBib29sZWFuIGNhbmNl
bGFibGUpOwotICAgICAgICBhdHRyaWJ1dGUgRE9NU3RyaW5nIHRleHQ7Ci0gICAgfTsKLQotfQpJ
bmRleDogV2ViQ29yZS9kb20vQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9CZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQuY3BwCShyZXZpc2lvbiAw
KQorKysgV2ViQ29yZS9kb20vQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
QmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3Ry
aW5nIEJlZm9yZVByb2Nlc3NTY3JpcHRFdmVudDo6dGV4dCgpIGNvbnN0Cit7ICAgIAorICAgIHJl
dHVybiBtX3NvdXJjZUNvZGUuc291cmNlKCk7Cit9CisKK3ZvaWQgQmVmb3JlUHJvY2Vzc1Njcmlw
dEV2ZW50OjpzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBtX25ld1RleHQgPSB0
ZXh0OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9CZWZv
cmVQcm9jZXNzU2NyaXB0RXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9CZWZvcmVQ
cm9jZXNzU2NyaXB0RXZlbnQuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0JlZm9yZVBy
b2Nlc3NTY3JpcHRFdmVudC5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKKyNp
Zm5kZWYgQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50X2gKKyNkZWZpbmUgQmVmb3JlUHJvY2Vzc1Nj
cmlwdEV2ZW50X2gKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXZlbnROYW1lcy5o
IgorI2luY2x1ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBCZWZvcmVQcm9jZXNzU2NyaXB0RXZlbnQgOiBwdWJsaWMgRXZlbnQgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJlZm9yZVByb2Nlc3NTY3JpcHRFdmVudD4gY3JlYXRl
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNjcmlwdFNvdXJjZUNvZGUpCisgICAgeworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IEJlZm9yZVByb2Nlc3NTY3JpcHRFdmVudChzY3JpcHRTb3Vy
Y2VDb2RlKSk7CisgICAgfQorCisgICAgdm9pZCBpbml0QmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJs
ZSkKKyAgICB7CisgICAgICAgIGluaXRFdmVudCh0eXBlLCBjYW5CdWJibGUsIGNhbmNlbGFibGUp
OworICAgIH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0JlZm9yZVByb2Nlc3NTY3JpcHRFdmVudCgp
IGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIFN0cmluZyB0ZXh0KCkgY29uc3Q7CisgICAg
dm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYpOworICAgIGNvbnN0IFN0cmluZyYgbmV3VGV4dCgp
IHsgcmV0dXJuIG1fbmV3VGV4dDsgfQorCitwcml2YXRlOgorICAgIEJlZm9yZVByb2Nlc3NTY3Jp
cHRFdmVudChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzY3JpcHRTb3VyY2VDb2RlKQorICAgICAg
ICA6IEV2ZW50KGV2ZW50TmFtZXMoKS5iZWZvcmVwcm9jZXNzc2NyaXB0RXZlbnQsIGZhbHNlLCB0
cnVlKQorICAgICAgICAsIG1fc291cmNlQ29kZShzY3JpcHRTb3VyY2VDb2RlKQorICAgIHsKKyAg
ICB9CisgICAgCisgICAgU2NyaXB0U291cmNlQ29kZSBtX3NvdXJjZUNvZGU7CisgICAgU3RyaW5n
IG1fbmV3VGV4dDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEJl
Zm9yZVByb2Nlc3NTY3JpcHRFdmVudF9oCkluZGV4OiBXZWJDb3JlL2RvbS9CZWZvcmVQcm9jZXNz
U2NyaXB0RXZlbnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NT
Y3JpcHRFdmVudC5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9CZWZvcmVQcm9jZXNz
U2NyaXB0RXZlbnQuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFLCBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKgorICovCisKK21vZHVs
ZSBldmVudHMgeworCisgICAgaW50ZXJmYWNlIEJlZm9yZVByb2Nlc3NTY3JpcHRFdmVudCA6IEV2
ZW50IHsKKyAgICAgICAgdm9pZCBpbml0QmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50KGluIERPTVN0
cmluZyB0eXBlLCBpbiBib29sZWFuIGNhbkJ1YmJsZSwgaW4gYm9vbGVhbiBjYW5jZWxhYmxlKTsK
KyAgICAgICAgYXR0cmlidXRlIERPTVN0cmluZyB0ZXh0OworICAgIH07CisKK30KSW5kZXg6IFdl
YkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NTdHlsZUV2ZW50LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9CZWZvcmVQcm9jZXNzU3R5bGVFdmVudC5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2RvbS9CZWZvcmVQcm9jZXNzU3R5bGVFdmVudC5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJlZm9yZVByb2Nl
c3NTdHlsZUV2ZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIEJlZm9yZVBy
b2Nlc3NTdHlsZUV2ZW50Ojp0ZXh0KCkgY29uc3QKK3sgICAgCisgICAgLy8gRklYTUU6IFJldHVy
biB0aGUgc3R5bGUgdGV4dCB0aGF0IGlzIGJlaW5nIHByb3Bvc2VkCisgICAgcmV0dXJuIFN0cmlu
ZygpOworfQorCit2b2lkIEJlZm9yZVByb2Nlc3NTdHlsZUV2ZW50OjpzZXRUZXh0KGNvbnN0IFN0
cmluZyYpCit7CisgICAgLy8gRklYTUU6IEFwcGx5IHRoZSBuZXcgdGV4dCBhcyB0aGUgc3R5bGUs
IGluc3RlYWQKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20v
QmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9CZWZv
cmVQcm9jZXNzU3R5bGVFdmVudC5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vQmVmb3Jl
UHJvY2Vzc1N0eWxlRXZlbnQuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCisj
aWZuZGVmIEJlZm9yZVByb2Nlc3NTdHlsZUV2ZW50X2gKKyNkZWZpbmUgQmVmb3JlUHJvY2Vzc1N0
eWxlRXZlbnRfaAorCisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQg
OiBwdWJsaWMgRXZlbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJlZm9yZVBy
b2Nlc3NTdHlsZUV2ZW50PiBjcmVhdGUoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBCZWZvcmVQcm9jZXNzU3R5bGVFdmVudCk7CisgICAgfQorCisgICAgdm9pZCBpbml0QmVm
b3JlUHJvY2Vzc1N0eWxlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlLCBib29sIGNhbkJ1
YmJsZSwgYm9vbCBjYW5jZWxhYmxlKQorICAgIHsKKyAgICAgICAgaW5pdEV2ZW50KHR5cGUsIGNh
bkJ1YmJsZSwgY2FuY2VsYWJsZSk7CisgICAgfQorCisgICAgdmlydHVhbCBib29sIGlzQmVmb3Jl
UHJvY2Vzc1N0eWxlRXZlbnQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CisKKyAgICBTdHJpbmcg
dGV4dCgpIGNvbnN0OworICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmKTsKKworcHJpdmF0
ZToKKyAgICBCZWZvcmVQcm9jZXNzU3R5bGVFdmVudCgpCisgICAgICAgIDogRXZlbnQoZXZlbnRO
YW1lcygpLmJlZm9yZXByb2Nlc3NzY3JpcHRFdmVudCwgZmFsc2UsIHRydWUpCisgICAgeworICAg
IH0KKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gQmVmb3JlUHJv
Y2Vzc1N0eWxlRXZlbnRfaApJbmRleDogV2ViQ29yZS9kb20vQmVmb3JlUHJvY2Vzc1N0eWxlRXZl
bnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NTdHlsZUV2ZW50
LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0JlZm9yZVByb2Nlc3NTdHlsZUV2ZW50
LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICoKKyAqLworCittb2R1bGUgZXZlbnRzIHsK
KworICAgIGludGVyZmFjZSBCZWZvcmVQcm9jZXNzU3R5bGVFdmVudCA6IEV2ZW50IHsKKyAgICAg
ICAgdm9pZCBpbml0QmVmb3JlUHJvY2Vzc1N0eWxlRXZlbnQoaW4gRE9NU3RyaW5nIHR5cGUsIGlu
IGJvb2xlYW4gY2FuQnViYmxlLCBpbiBib29sZWFuIGNhbmNlbGFibGUpOworICAgICAgICBhdHRy
aWJ1dGUgRE9NU3RyaW5nIHRleHQ7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNp
b24gNjIwNTIpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMyOTcsOCArMzI5NywxMCBAQCB2b2lkIERvY3VtZW50OjphZGRMaXN0ZW5lclR5cGVJZk5lZWRl
ZChjCiAgICAgICAgIGFkZExpc3RlbmVyVHlwZShUUkFOU0lUSU9ORU5EX0xJU1RFTkVSKTsKICAg
ICBlbHNlIGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZWxvYWRFdmVudCkKICAg
ICAgICAgYWRkTGlzdGVuZXJUeXBlKEJFRk9SRUxPQURfTElTVEVORVIpOwotICAgIGVsc2UgaWYg
KGV2ZW50VHlwZSA9PSBldmVudE5hbWVzKCkuYmVmb3JlcHJvY2Vzc0V2ZW50KQotICAgICAgICBh
ZGRMaXN0ZW5lclR5cGUoQkVGT1JFUFJPQ0VTU19MSVNURU5FUik7CisgICAgZWxzZSBpZiAoZXZl
bnRUeXBlID09IGV2ZW50TmFtZXMoKS5iZWZvcmVwcm9jZXNzc2NyaXB0RXZlbnQpCisgICAgICAg
IGFkZExpc3RlbmVyVHlwZShCRUZPUkVQUk9DRVNTU0NSSVBUX0xJU1RFTkVSKTsKKyAgICBlbHNl
IGlmIChldmVudFR5cGUgPT0gZXZlbnROYW1lcygpLmJlZm9yZXByb2Nlc3NzdHlsZUV2ZW50KQor
ICAgICAgICBhZGRMaXN0ZW5lclR5cGUoQkVGT1JFUFJPQ0VTU1NUWUxFX0xJU1RFTkVSKTsKICNp
ZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogICAgIGVsc2UgaWYgKGV2ZW50VHlwZSA9PSBldmVudE5h
bWVzKCkudG91Y2hzdGFydEV2ZW50CiAgICAgICAgICAgICAgfHwgZXZlbnRUeXBlID09IGV2ZW50
TmFtZXMoKS50b3VjaG1vdmVFdmVudApJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiA2MjA1MikKKysrIFdl
YkNvcmUvZG9tL0RvY3VtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTY3Myw3ICs2NzMsOCBAQCBw
dWJsaWM6CiAgICAgICAgIFRSQU5TSVRJT05FTkRfTElTVEVORVIgICAgICAgICAgICAgICA9IDB4
ODAwLAogICAgICAgICBCRUZPUkVMT0FEX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgPSAweDEw
MDAsCiAgICAgICAgIFRPVUNIX0xJU1RFTkVSICAgICAgICAgICAgICAgICAgICAgICA9IDB4MjAw
MCwKLSAgICAgICAgQkVGT1JFUFJPQ0VTU19MSVNURU5FUiAgICAgICAgICAgICAgID0gMHg0MDAw
CisgICAgICAgIEJFRk9SRVBST0NFU1NTQ1JJUFRfTElTVEVORVIgICAgICAgICA9IDB4NDAwMCwK
KyAgICAgICAgQkVGT1JFUFJPQ0VTU1NUWUxFX0xJU1RFTkVSICAgICAgICAgID0gMHg4MDAwCiAg
ICAgfTsKIAogICAgIGJvb2wgaGFzTGlzdGVuZXJUeXBlKExpc3RlbmVyVHlwZSBsaXN0ZW5lclR5
cGUpIGNvbnN0IHsgcmV0dXJuIChtX2xpc3RlbmVyVHlwZXMgJiBsaXN0ZW5lclR5cGUpOyB9Cklu
ZGV4OiBXZWJDb3JlL2RvbS9FdmVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZl
bnQuY3BwCShyZXZpc2lvbiA2MjA1MikKKysrIFdlYkNvcmUvZG9tL0V2ZW50LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcyLDYgKzE3MiwxNiBAQCBib29sIEV2ZW50Ojppc0JlZm9yZUxvYWRFdmVu
dCgpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEV2ZW50Ojppc0JlZm9yZVBy
b2Nlc3NTY3JpcHRFdmVudCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29s
IEV2ZW50Ojppc0JlZm9yZVByb2Nlc3NTdHlsZUV2ZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKICNpZiBFTkFCTEUoU1ZHKQogYm9vbCBFdmVudDo6aXNTVkdab29tRXZlbnQo
KSBjb25zdAogewpJbmRleDogV2ViQ29yZS9kb20vRXZlbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9FdmVudC5oCShyZXZpc2lvbiA2MjA1MikKKysrIFdlYkNvcmUvZG9tL0V2ZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdEFuaW1hdGlvbkV2ZW50KCkgY29uc3Q7CiAgICAg
ICAgIHZpcnR1YWwgYm9vbCBpc1dlYktpdFRyYW5zaXRpb25FdmVudCgpIGNvbnN0OwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNCZWZvcmVMb2FkRXZlbnQoKSBjb25zdDsKKyAgICAgICAgdmlydHVh
bCBib29sIGlzQmVmb3JlUHJvY2Vzc1NjcmlwdEV2ZW50KCkgY29uc3Q7CisgICAgICAgIHZpcnR1
YWwgYm9vbCBpc0JlZm9yZVByb2Nlc3NTdHlsZUV2ZW50KCkgY29uc3Q7CiAjaWYgRU5BQkxFKFNW
RykKICAgICAgICAgdmlydHVhbCBib29sIGlzU1ZHWm9vbUV2ZW50KCkgY29uc3Q7CiAjZW5kaWYK
SW5kZXg6IFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Rv
bS9FdmVudE5hbWVzLmgJKHJldmlzaW9uIDYyMDUyKQorKysgV2ViQ29yZS9kb20vRXZlbnROYW1l
cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw3ICszNCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBtYWNybyhiZWZvcmVjdXQpIFwKICAgICBtYWNybyhiZWZvcmVsb2FkKSBcCiAgICAgbWFj
cm8oYmVmb3JlcGFzdGUpIFwKLSAgICBtYWNybyhiZWZvcmVwcm9jZXNzKSBcCisgICAgbWFjcm8o
YmVmb3JlcHJvY2Vzc3NjcmlwdCkgXAorICAgIG1hY3JvKGJlZm9yZXByb2Nlc3NzdHlsZSkgXAog
ICAgIG1hY3JvKGJlZm9yZXVubG9hZCkgXAogICAgIG1hY3JvKGJsdXIpIFwKICAgICBtYWNybyhj
YWNoZWQpIFwKSW5kZXg6IFdlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxBdHRyaWJ1dGVOYW1lcy5pbgkocmV2aXNpb24gNjIw
NTIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluCSh3b3JraW5nIGNvcHkp
CkBAIC0xNDUsNyArMTQ1LDcgQEAgb25iZWZvcmVjb3B5CiBvbmJlZm9yZWN1dAogb25iZWZvcmVs
b2FkCiBvbmJlZm9yZXBhc3RlCi1vbmJlZm9yZXByb2Nlc3MKK29uYmVmb3JlcHJvY2Vzc3N0eWxl
CiBvbmJlZm9yZXVubG9hZAogb25ibHVyCiBvbmNhbnBsYXkKSW5kZXg6IFdlYkNvcmUvaHRtbC9I
VE1MU2NyaXB0RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9odG1sL0hUTUxTY3Jp
cHRFbGVtZW50LmNwcAkocmV2aXNpb24gNjIwNTIpCisrKyBXZWJDb3JlL2h0bWwvSFRNTFNjcmlw
dEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NCw4ICs3NCw2IEBAIHZvaWQgSFRNTFNj
cmlwdEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmkKICAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRM
aXN0ZW5lcihldmVudE5hbWVzKCkubG9hZEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3Rl
bmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmJlZm9yZWxvYWRB
dHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5iZWZv
cmVsb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhpcywgYXR0cikpOwot
ICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9uYmVmb3JlcHJvY2Vzc0F0dHIpCi0gICAgICAgIHNl
dEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmJlZm9yZXByb2Nlc3NFdmVudCwg
Y3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlzLCBhdHRyKSk7CiAgICAgZWxzZQogICAg
ICAgICBIVE1MRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoYXR0cik7CiB9CkluZGV4OiBX
ZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9o
dG1sL0hUTUxTdHlsZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA2MjA1MikKKysrIFdlYkNvcmUvaHRt
bC9IVE1MU3R5bGVFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTAsOCArNTAsOCBAQCB2
b2lkIEhUTUxTdHlsZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmliCiB7CiAgICAgaWYgKGF0dHIt
Pm5hbWUoKSA9PSB0aXRsZUF0dHIgJiYgbV9zaGVldCkKICAgICAgICAgbV9zaGVldC0+c2V0VGl0
bGUoYXR0ci0+dmFsdWUoKSk7Ci0gICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmVmb3Jl
cHJvY2Vzc0F0dHIpCi0gICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1l
cygpLmJlZm9yZXByb2Nlc3NFdmVudCwgY3JlYXRlQXR0cmlidXRlRXZlbnRMaXN0ZW5lcih0aGlz
LCBhdHRyKSk7CisgICAgZWxzZSBpZiAoYXR0ci0+bmFtZSgpID09IG9uYmVmb3JlcHJvY2Vzc3N0
eWxlQXR0cikKKyAgICAgICAgc2V0QXR0cmlidXRlRXZlbnRMaXN0ZW5lcihldmVudE5hbWVzKCku
YmVmb3JlcHJvY2Vzc3N0eWxlRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIodGhp
cywgYXR0cikpOwogICAgIGVsc2UKICAgICAgICAgSFRNTEVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKGF0dHIpOwogfQo=
</data>
<flag name="commit-queue"
          id="47190"
          type_id="3"
          status="-"
          setter="beidson"
    />
          </attachment>
      

    </bug>

</bugzilla>